#include #include int main(int argc, char *argv[]) { char name[256]; unsigned int opcode; char defname[256]; int i; FILE *f; FILE *md5; if(argc != 2) { fprintf(stderr, "Must specify filename\n"); exit(1); } if(!(f = fopen(argv[1], "r"))) { fprintf(stderr, "Could not open %s\n", argv[1]); exit(1); } //get the checksum for the protocol version, write it out. //We can use name for a temporary string here, since it's not being used //yet. sprintf(name, "md5sum %s", argv[1]); if(md5 = popen(name, "r")) { fscanf(md5, "%s", name); printf("#define PBCS_SUM \"%s\"\n", name); pclose(md5); } else { fprintf(stderr, "Could not calculate MD5 Checksum"); exit(1); } while(!feof(f) && fscanf(f, "%s 0x%x\n", name, &opcode)) { strcpy(defname, name); for(i = 0; i < strlen(defname); i++) { defname[i] = toupper(defname[i]); if(defname[i] == '.') defname[i] = '_'; } printf("#define %s 0x%04X\n", defname, opcode); } return 0; };