FreeCalypso > hg > fc-usbser-tools
diff fteeprom/fteeprom-prog.c @ 64:ca2250b4833d
fteeprom: factor out EEPROM image reading functions
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 12 Sep 2023 20:17:07 +0000 |
parents | a94bd4002076 |
children | 5cbde3c80c24 |
line wrap: on
line diff
--- a/fteeprom/fteeprom-prog.c Mon Sep 11 21:24:04 2023 +0000 +++ b/fteeprom/fteeprom-prog.c Tue Sep 12 20:17:07 2023 +0000 @@ -19,10 +19,11 @@ #include "../libuwrap/open_close.h" #include "../libftmini/eeprom_func.h" +extern unsigned eeprom_size; +extern u_short eeprom[256]; + char *device_selector, *input_filename; int detach_num, ft232r_mode; -unsigned eeprom_size; -u_short eeprom[256]; process_cmdline(argc, argv) char **argv; @@ -65,64 +66,6 @@ input_filename = argv[optind + 1]; } -read_eeprom_common(inf, filename_for_errs) - FILE *inf; - char *filename_for_errs; -{ - char linebuf[1024], *cp; - int lineno, rc; - unsigned ptr = 0, input_off; - - for (lineno = 1; fgets(linebuf, sizeof linebuf, inf); lineno++) { - for (cp = linebuf; isspace(*cp); cp++) - ; - if (*cp == '\0' || *cp == '#') - continue; - if (ptr >= 256) { - fprintf(stderr, - "%s line %d: maximum EEPROM size exceeded\n", - filename_for_errs, lineno); - exit(1); - } - rc = sscanf(linebuf, "%x: %hx %hx %hx %hx %hx %hx %hx %hx", - &input_off, eeprom + ptr, eeprom + ptr + 1, - eeprom + ptr + 2, eeprom + ptr + 3, - eeprom + ptr + 4, eeprom + ptr + 5, - eeprom + ptr + 6, eeprom + ptr + 7); - if (rc != 9 || input_off != ptr * 2) { - fprintf(stderr, "%s line %d: invalid input\n", - filename_for_errs, lineno); - exit(1); - } - ptr += 8; - } - if (ptr != 64 && ptr != 128 && ptr != 256) { - fprintf(stderr, "%s: not an EEPROM image of recognized size\n", - filename_for_errs); - exit(1); - } - eeprom_size = ptr; -} - -read_eeprom_from_file(filename) - char *filename; -{ - FILE *inf; - - inf = fopen(filename, "r"); - if (!inf) { - perror(filename); - exit(1); - } - read_eeprom_common(inf, filename); - fclose(inf); -} - -read_eeprom_from_stdin() -{ - read_eeprom_common(stdin, "stdin"); -} - main(argc, argv) char **argv; {