#include <stdio.h> main(int argc, char **argv) { int i = 0, j; char name[160]; char *func_name; char *prefix; char *fname; FILE *header_file, *data_file; if (argc < 3) exit(1); prefix = argv[1]; fname = argv[2]; for (j = 0; prefix[j]; j++) prefix[j] = toupper(prefix[j]); sprintf(name, "%s.h", fname); header_file = fopen(name, "w"); sprintf(name, "%s.t", fname); data_file = fopen(name, "w"); fprintf(data_file, "static struct fkntab %s_fkntab[] =\n{\n", fname); for (gets(name); !feof(stdin); gets(name)) { if (!*name || *name == '#') continue; func_name = name; for (j = 0; name[j]; j++) { if (name[j] == '\t' || name[j] == ' ') { name[j] = '\0'; j++; while (name[j] || name[j] == ' ' || name[j] == '\t') j++; if (name[j]) func_name = &name[j]; break; } } fprintf(data_file, " {\"%s\", 0, 0},\n", func_name); for (j = 0; name[j]; j++) name[j] = toupper(name[j]); fprintf(header_file, "#define %s_%s %d\n", prefix, name, i++); } fputs(" {NULL, 0, 0}\n};\n", data_file); exit(0); }