Index: work/alien_formats/eagle/eagle_bin/test_parser/eagle_bin.c =================================================================== --- work/alien_formats/eagle/eagle_bin/test_parser/eagle_bin.c (revision 9362) +++ work/alien_formats/eagle/eagle_bin/test_parser/eagle_bin.c (revision 9363) @@ -124,7 +124,7 @@ TERM }, }, - { PCB_EGKW_SECT_LIBRARY, "library", + { PCB_EGKW_SECT_LIBRARY, "library", { /* field match */ TERM }, @@ -332,7 +332,7 @@ {"orphans", T_BMB, 19, 0x40}, TERM }, - }, + }, { PCB_EGKW_SECT_LINE, "line", { /* field match */ TERM @@ -359,7 +359,7 @@ {"linetype_129_y2", T_INT, 16, 3}, TERM }, - }, + }, { PCB_EGKW_SECT_ARC, "arc", { /* field match */ TERM @@ -386,7 +386,7 @@ {"arctype_other_y2", T_INT, 16, 4}, TERM }, - }, + }, { PCB_EGKW_SECT_CIRCLE, "circle", { /* field match */ TERM @@ -646,7 +646,7 @@ {"borders", T_INT, 22, 1}, TERM }, - }, + }, { PCB_EGKW_SECT_SMASHEDXREF }, /* unknown leaves */ @@ -712,7 +712,7 @@ int read_drc(void *ctx, FILE *f, const char *fn) { unsigned char sub_block[8]; - unsigned char block[8]; + unsigned char block[8]; int DRC_length_used = 244; unsigned char DRC_block[244]; unsigned char DRC_sub_block[244]; @@ -722,74 +722,74 @@ long offset = 0; int index = 0; - if (fread(block, 1, 8, f) != 8) { - printf("E: short attempted DRC sentinel read. DRC start sentinel not found.\n"); - return -1; - } + if (fread(block, 1, 8, f) != 8) { + printf("E: short attempted DRC sentinel read. DRC start sentinel not found.\n"); + return -1; + } - /* look for DRC start sentinel */ + /* look for DRC start sentinel */ while (!sentinel_found) /* \x10\x04\x00\x20 */ { for (offset = 0; offset < 5; offset++) { if (load_long(block, offset, 1) == 0x10 && load_long(block, offset+1, 1) == 0x04 - && load_long(block, offset+2, 1) == 0x00 - && load_long(block, offset+3, 1) == 0x20) { + && load_long(block, offset+2, 1) == 0x00 + && load_long(block, offset+3, 1) == 0x20) { sentinel_found = 1; } } - if (fread(sub_block, 1, 4, f) != 4) { - printf("E: short attempted DRC sentinel read. DRC start sentinel not found.\n"); - return -1; - } + if (fread(sub_block, 1, 4, f) != 4) { + printf("E: short attempted DRC sentinel read. DRC start sentinel not found.\n"); + return -1; + } for (index = 7; index > 3; index--) { block[index-4] = block[index]; block[index] = sub_block[index-4]; } } - printf("found DRC start sentinel x10x04x00x20.\n"); + printf("found DRC start sentinel x10x04x00x20.\n"); - while (!magic_found) /* \x78\x56\x34\x12 */ - { - for (offset = 0; offset < 5; offset++) { - if (load_long(block, offset, 1) == 0x78 - && load_long(block, offset+1, 1) == 0x56 - && load_long(block, offset+2, 1) == 0x34 - && load_long(block, offset+3, 1) == 0x12) { - magic_found = 1; + while (!magic_found) /* \x78\x56\x34\x12 */ + { + for (offset = 0; offset < 5; offset++) { + if (load_long(block, offset, 1) == 0x78 + && load_long(block, offset+1, 1) == 0x56 + && load_long(block, offset+2, 1) == 0x34 + && load_long(block, offset+3, 1) == 0x12) { + magic_found = 1; extra_bytes = 4 - offset; - } - } + } + } if (!magic_found) { - if (fread(sub_block, 1, 4, f) != 4) { - printf("E: short attempted DRC magic read. DRC magic not found.\n"); - return -1; - } - for (index = 7; index > 3; index--) { /*shuffle things over */ - block[index-4] = block[index]; - block[index] = sub_block[index-4]; + if (fread(sub_block, 1, 4, f) != 4) { + printf("E: short attempted DRC magic read. DRC magic not found.\n"); + return -1; + } + for (index = 7; index > 3; index--) { /*shuffle things over */ + block[index-4] = block[index]; + block[index] = sub_block[index-4]; /* printf("parse read block at index: %d : %d\n", index, block[index]); */ } } - } + } printf("found DRC magic x78x56x34x12.\n"); printf("readbuffer still contains %d DRC bytes\n", extra_bytes); - if (fread(DRC_sub_block, 1, (DRC_length_used - extra_bytes), f) != (DRC_length_used-extra_bytes)) { - printf("E: short DRC value block read. DRC section incomplete.\n"); - return -1; - } - for (index = 0; index < extra_bytes; index++) { + if (fread(DRC_sub_block, 1, (DRC_length_used - extra_bytes), f) != (DRC_length_used-extra_bytes)) { + printf("E: short DRC value block read. DRC section incomplete.\n"); + return -1; + } + for (index = 0; index < extra_bytes; index++) { printf("placing residual bytes in parse read block at index %d: %d\n", 8-extra_bytes+index, block[8-extra_bytes+index]); - /* printf("into DRC_block index: %d\n", index);*/ - DRC_block[index] = block[8-extra_bytes+index]; - } - for (index = extra_bytes; index < (DRC_length_used-extra_bytes); index++) { - DRC_block[index] = DRC_sub_block[index-extra_bytes]; - } + /* printf("into DRC_block index: %d\n", index);*/ + DRC_block[index] = block[8-extra_bytes+index]; + } + for (index = extra_bytes; index < (DRC_length_used-extra_bytes); index++) { + DRC_block[index] = DRC_sub_block[index-extra_bytes]; + } /*for (index = 0; index < DRC_length_used; index++) { - printf("DRC_block index: %d and value %d\n", index, DRC_block[index]); - } */ + printf("DRC_block index: %d and value %d\n", index, DRC_block[index]); + } */ /* first ~134 bytes contain the most useful DRC stuff, such as # wire2wire wire2pad wire2via pad2pad pad2via via2via pad2smd via2smd smd2smd @@ -797,55 +797,55 @@ # restring order: padtop padinner padbottom viaouter viainner (microviaouter microviainner) restring_percentages = 7 doubles, 56 bytes total */ - printf("wire2wire: %f mil\n", load_long(DRC_block, 0, 4)/2.54/100); + printf("wire2wire: %f mil\n", load_long(DRC_block, 0, 4)/2.54/100); printf("wire2pad: %f mil\n", load_long(DRC_block, 4, 4)/2.54/100); - printf("wire2via: %f mil\n", load_long(DRC_block, 8, 4)/2.54/100); - printf("pad2pad: %f mil\n", load_long(DRC_block, 12, 4)/2.54/100); - printf("pad2via: %f mil\n", load_long(DRC_block, 16, 4)/2.54/100); - printf("via2via: %f mil\n", load_long(DRC_block, 20, 4)/2.54/100); - printf("pad2smd: %f mil\n", load_long(DRC_block, 24, 4)/2.54/100); - printf("via2smd: %f mil\n", load_long(DRC_block, 28, 4)/2.54/100); - printf("smd2smd: %f mil\n", load_long(DRC_block, 32, 4)/2.54/100); - printf("copper2dimension: %f mil\n", load_long(DRC_block, 44, 4)/2.54/100); - printf("drill2hole: %f mil\n", load_long(DRC_block, 52, 4)/2.54/100); + printf("wire2via: %f mil\n", load_long(DRC_block, 8, 4)/2.54/100); + printf("pad2pad: %f mil\n", load_long(DRC_block, 12, 4)/2.54/100); + printf("pad2via: %f mil\n", load_long(DRC_block, 16, 4)/2.54/100); + printf("via2via: %f mil\n", load_long(DRC_block, 20, 4)/2.54/100); + printf("pad2smd: %f mil\n", load_long(DRC_block, 24, 4)/2.54/100); + printf("via2smd: %f mil\n", load_long(DRC_block, 28, 4)/2.54/100); + printf("smd2smd: %f mil\n", load_long(DRC_block, 32, 4)/2.54/100); + printf("copper2dimension: %f mil\n", load_long(DRC_block, 44, 4)/2.54/100); + printf("drill2hole: %f mil\n", load_long(DRC_block, 52, 4)/2.54/100); - printf("min_width: %f mil\n", load_long(DRC_block, 64, 4)/2.54/100); - printf("min_drill: %f mil\n", load_long(DRC_block, 68, 4)/2.54/100); - /*in version 5, this is wedged inbetween drill and pad ratios: - min_micro_via, blind_via_ratio, int, float, 12 bytes*/ - printf("padtop ratio: %f\n", load_double(DRC_block, 84, 8)); - printf("padinner ratio: %f\n", load_double(DRC_block, 92, 8)); - printf("padbottom ratio: %f\n", load_double(DRC_block, 100, 8)); - printf("viaouter ratio: %f\n", load_double(DRC_block, 108, 8)); - printf("viainner ratio: %f\n", load_double(DRC_block, 116, 8)); - printf("microviaouter ratio: %f\n", load_double(DRC_block, 124, 8)); - printf("microviainner ratio: %f\n", load_double(DRC_block, 132, 8)); + printf("min_width: %f mil\n", load_long(DRC_block, 64, 4)/2.54/100); + printf("min_drill: %f mil\n", load_long(DRC_block, 68, 4)/2.54/100); + /*in version 5, this is wedged inbetween drill and pad ratios: + min_micro_via, blind_via_ratio, int, float, 12 bytes*/ + printf("padtop ratio: %f\n", load_double(DRC_block, 84, 8)); + printf("padinner ratio: %f\n", load_double(DRC_block, 92, 8)); + printf("padbottom ratio: %f\n", load_double(DRC_block, 100, 8)); + printf("viaouter ratio: %f\n", load_double(DRC_block, 108, 8)); + printf("viainner ratio: %f\n", load_double(DRC_block, 116, 8)); + printf("microviaouter ratio: %f\n", load_double(DRC_block, 124, 8)); + printf("microviainner ratio: %f\n", load_double(DRC_block, 132, 8)); - printf("restring limit1 (mil): %f\n", load_long(DRC_block, 140, 4)/2.54/100); - printf("restring limit2 (mil): %f\n", load_long(DRC_block, 144, 4)/2.54/100); - printf("restring limit3 (mil): %f\n", load_long(DRC_block, 148, 4)/2.54/100); - printf("restring limit4 (mil): %f\n", load_long(DRC_block, 152, 4)/2.54/100); - printf("restring limit5 (mil): %f\n", load_long(DRC_block, 156, 4)/2.54/100); - printf("restring limit6 (mil): %f\n", load_long(DRC_block, 160, 4)/2.54/100); - printf("restring limit7 (mil): %f\n", load_long(DRC_block, 164, 4)/2.54/100); - printf("restring limit8 (mil): %f\n", load_long(DRC_block, 168, 4)/2.54/100); - printf("restring limit9 (mil): %f\n", load_long(DRC_block, 172, 4)/2.54/100); - printf("restring limit10 (mil): %f\n", load_long(DRC_block, 176, 4)/2.54/100); - printf("restring limit11 (mil): %f\n", load_long(DRC_block, 180, 4)/2.54/100); - printf("restring limit12 (mil): %f\n", load_long(DRC_block, 184, 4)/2.54/100); - printf("restring limit13 (mil): %f\n", load_long(DRC_block, 188, 4)/2.54/100); - printf("restring limit14 (mil): %f\n", load_long(DRC_block, 192, 4)/2.54/100); + printf("restring limit1 (mil): %f\n", load_long(DRC_block, 140, 4)/2.54/100); + printf("restring limit2 (mil): %f\n", load_long(DRC_block, 144, 4)/2.54/100); + printf("restring limit3 (mil): %f\n", load_long(DRC_block, 148, 4)/2.54/100); + printf("restring limit4 (mil): %f\n", load_long(DRC_block, 152, 4)/2.54/100); + printf("restring limit5 (mil): %f\n", load_long(DRC_block, 156, 4)/2.54/100); + printf("restring limit6 (mil): %f\n", load_long(DRC_block, 160, 4)/2.54/100); + printf("restring limit7 (mil): %f\n", load_long(DRC_block, 164, 4)/2.54/100); + printf("restring limit8 (mil): %f\n", load_long(DRC_block, 168, 4)/2.54/100); + printf("restring limit9 (mil): %f\n", load_long(DRC_block, 172, 4)/2.54/100); + printf("restring limit10 (mil): %f\n", load_long(DRC_block, 176, 4)/2.54/100); + printf("restring limit11 (mil): %f\n", load_long(DRC_block, 180, 4)/2.54/100); + printf("restring limit12 (mil): %f\n", load_long(DRC_block, 184, 4)/2.54/100); + printf("restring limit13 (mil): %f\n", load_long(DRC_block, 188, 4)/2.54/100); + printf("restring limit14 (mil): %f\n", load_long(DRC_block, 192, 4)/2.54/100); - printf("pad_shapes1 (equiv -1): %ld\n", load_long(DRC_block, 196, 4)); - printf("pad_shapes2 (equiv -1): %ld\n", load_long(DRC_block, 200, 4)); - printf("pad_shapes3 (equiv -1): %ld\n", load_long(DRC_block, 204, 4)); - printf("mask_percentages1 ratio: %f\n", load_double(DRC_block, 208, 8)); - printf("mask_percentages2 ratio: %f\n", load_double(DRC_block, 216, 8)); + printf("pad_shapes1 (equiv -1): %ld\n", load_long(DRC_block, 196, 4)); + printf("pad_shapes2 (equiv -1): %ld\n", load_long(DRC_block, 200, 4)); + printf("pad_shapes3 (equiv -1): %ld\n", load_long(DRC_block, 204, 4)); + printf("mask_percentages1 ratio: %f\n", load_double(DRC_block, 208, 8)); + printf("mask_percentages2 ratio: %f\n", load_double(DRC_block, 216, 8)); - printf("mask limit1 (mil): %f\n", load_long(DRC_block, 224, 4)/2.54/100); - printf("mask limit2 (mil): %f\n", load_long(DRC_block, 228, 4)/2.54/100); - printf("mask limit3 (mil): %f\n", load_long(DRC_block, 232, 4)/2.54/100); - printf("mask limit4 (mil): %f\n", load_long(DRC_block, 236, 4)/2.54/100); + printf("mask limit1 (mil): %f\n", load_long(DRC_block, 224, 4)/2.54/100); + printf("mask limit2 (mil): %f\n", load_long(DRC_block, 228, 4)/2.54/100); + printf("mask limit3 (mil): %f\n", load_long(DRC_block, 232, 4)/2.54/100); + printf("mask limit4 (mil): %f\n", load_long(DRC_block, 236, 4)/2.54/100); return 0; } @@ -870,10 +870,10 @@ return -1; } - if (*numblocks < 0 && load_long(block, 0, 1) == 0x10) { - *numblocks = load_long(block, 4, 4); - printf("numblocks found in start block: %ld\n", *numblocks); - } + if (*numblocks < 0 && load_long(block, 0, 1) == 0x10) { + *numblocks = load_long(block, 4, 4); + printf("numblocks found in start block: %ld\n", *numblocks); + } for(sc = pcb_eagle_script; sc->cmd != 0; sc++) { int match = 1;