Index: trunk/src/layer_grp.c =================================================================== --- trunk/src/layer_grp.c (revision 8642) +++ trunk/src/layer_grp.c (revision 8643) @@ -611,7 +611,16 @@ return pcb_layergrp_rename_(grp, pcb_strdup(name)); } +pcb_layergrp_id_t pcb_layergrp_by_name(pcb_board_t *pcb, const char *name) +{ + pcb_layergrp_id_t n; + for (n = 0; n < pcb->LayerGroups.len; n++) + if (strcmp(PCB->LayerGroups.grp[n].name, name) == 0) + return n; + return -1; +} + static pcb_layergrp_id_t pcb_layergrp_get_cached(pcb_board_t *pcb, pcb_layer_id_t *cache, unsigned int loc, unsigned int typ) { pcb_layer_group_t *g; Index: trunk/src/layer_grp.h =================================================================== --- trunk/src/layer_grp.h (revision 8642) +++ trunk/src/layer_grp.h (revision 8643) @@ -114,7 +114,10 @@ /* changes the name of a layer; memory has to be already allocated */ int pcb_layergrp_rename_(pcb_layer_group_t *grp, char *name); +/* Slow linear search for a layer group by name */ +pcb_layergrp_id_t pcb_layergrp_by_name(pcb_board_t *pcb, const char *name); + /********* OBSOLETE functions, do not use in new code *********/ /* parses the group definition string which is a colon separated list of comma separated layer numbers (1,2,b:4,6,8,t); oldfmt is 0 or 1