8 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
9 #define IS(w, y) !strcmp(w, y)
10 #define IS_START(w, y) !strncmp(w, y, strlen(y))
12 #include "protoparse.h"
14 int main(int argc, char *argv[])
16 const struct parsed_proto *pp;
28 printf("usage:\n%s <.h> <.def>\n", argv[0]);
33 fhdr = fopen(hdrfn, "r");
34 my_assert_not(fhdr, NULL);
36 fout = fopen(argv[arg++], "w");
37 my_assert_not(fout, NULL);
39 p = strrchr(hdrfn, '.');
40 my_assert_not(p, NULL);
42 my_assert(l < 256, 1);
43 memcpy(basename, hdrfn, l);
46 snprintf(fmt, sizeof(fmt), "%s_%%d", basename);
48 fprintf(fout, "LIBRARY %s\n", basename);
49 fprintf(fout, "EXPORTS\n");
51 while (fgets(line, sizeof(line), fhdr))
61 while (p != NULL && *p != 0) {
62 p = next_word(word, sizeof(word), p);
63 ret = sscanf(word, fmt, &ord);
68 printf("scan for '%s' failed for '%s'\n", fmt, line);
72 snprintf(word, sizeof(word), fmt, ord);
73 pp = proto_parse(fhdr, word, 0);
77 fprintf(fout, " %s", word);
79 fprintf(fout, "@%-2d", pp->argc_stack * 4);
82 fprintf(fout, " @%d\n", ord);
90 // vim:ts=2:shiftwidth=2:expandtab