Index: work/alien_formats/eagle/eagle_bin/test_parser/eagle_bin.c =================================================================== --- work/alien_formats/eagle/eagle_bin/test_parser/eagle_bin.c (revision 9545) +++ work/alien_formats/eagle/eagle_bin/test_parser/eagle_bin.c (revision 9546) @@ -2102,6 +2102,7 @@ const fmatch_t *fm; char ind[256]; int processed = 0; + unsigned int cmd_id; memset(ind, ' ', level); ind[level] = '\0'; @@ -2121,8 +2122,9 @@ for(sc = pcb_eagle_script; sc->cmd != 0; sc++) { int match = 1; unsigned int cmdh = (sc->cmd >> 8) & 0xFF, cmdl = sc->cmd & 0xFF; + unsigned int mskh = (sc->cmd_mask >> 8) & 0xFF, mskl = sc->cmd_mask & 0xFF; - if ((cmdh != block[0]) || (cmdl != block[1])) + if (((cmdh & mskh) != (block[0] & mskh)) || ((cmdl & mskl) != (block[1] & mskl))) continue; for(fm = sc->fmatch; fm->offs != 0; fm++) { @@ -2131,8 +2133,10 @@ break; } } - if (match) + if (match) { + cmd_id = ((cmdh & mskh) << 8) | ((cmdl & mskl) << 8); goto found; + } } printf("E: unknown block ID 0x%x 0x%x at offset %ld\n", block[0], block[1], ftell(f));