/* Author: Alexander Atanasov Compile: gcc -Wall -o fixvis fixvis.c Usage: ./fixvis name.sch 2 0001 > name-nofp.sch F 0 "U2" H 1300 2250 40 0000 C CNN F 1 "LD1117S33CTR" H 1300 2200 40 0000 C CNN F 2 "w_smd_trans:sot223" H 1300 2100 40 0001 C CNN F 3 "http://www.tme.eu/en/Document/bbab3ccbedd9735c8c7032084fb97a45/LD1117.pdf" H 1300 2000 60 0001 C CNN */ #include #include #include int main(int argc, char **argv) { char buf[4096]; char *fn; char *newval; int fid; FILE *fp; int rc; int f; char *cp; int nskip; if (argc < 3) { fprintf(stderr, "%s file.sch fieldid newval\n" "fieldid:\n" "0 - Reference\n" "1 - Value\n" "2 - Footprint\n" "3 - Datasheet\n" "4+ - custom\n" "newval: 0000 = visible, 0001 = hidden\n", argv[0]); return -1; } fn = argv[1]; fid = atoi(argv[2]); newval = argv[3]; fp = fopen(fn, "r"); if (!fp) { fprintf(stderr, "failed to read: %s\n", fn); } while ((fgets(buf,sizeof(buf),fp)) != NULL) { // F 3 "" H 1500 3650 60 0000 C CNN rc = sscanf(buf,"F %d", &f); if (rc == 1 && f == fid) { nskip = 3; cp = buf + strlen(buf) - 1; while (*cp && nskip) { cp --; if (*cp == ' ' || *cp == '\t' ) nskip --; } // fprintf(stderr,"got: %s\n", cp); if (*cp ) { printf("%s", buf); cp ++; memcpy(cp, newval, 4); } } printf("%s", buf); } fclose(fp); return 0; }