/* bintoc.c Convert a (binary) file to a series of comma separated hex values suitable for initializing a character array in C. */ #define _POSIX_C_SOURCE 2 #include #include #include #include #include #include char *progname; unsigned char buf[1024]; static void fatal(char *fmt, ...); static void usage(void); int main(int argc, char *argv[]) { int c, i, r, first; FILE *file_in, *file_out; char *in_name; char *o_arg; (progname=strrchr(argv[0],'/')) ? progname++ : (progname=argv[0]); o_arg= NULL; while (c= getopt(argc, argv, "?o:"), c != -1) { switch(c) { case '?': usage(); case 'o': o_arg= optarg; break; default: fatal("getopt failed: '%c'\n", c); } } if (o_arg) { file_out= fopen(o_arg, "w"); if (file_out == NULL) { fatal("unable to create '%s': %s\n", o_arg, strerror(errno)); exit(1); } } else file_out= stdout; if (optind < argc) { in_name= argv[optind]; optind++; file_in= fopen(in_name, "r"); if (file_in == NULL) { fatal("unable to open '%s': %s", in_name, strerror(errno)); } } else { in_name= "(stdin)"; file_in= stdin; } if (optind != argc) usage(); first= 1; for (;;) { r= fread(buf, 1, sizeof(buf), file_in); if (r == 0) break; for (i= 0; i] []\n"); exit(1); }