X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tools%2Fmkdef_ord.c;h=648e0d4daab0563328b5340a6f388cb1df71e9a3;hb=ee554c95296119b6b8d82856fbb09ffb8c9dc419;hp=3873c3a4f3f5be007a81c4385491f7e459223888;hpb=3084511901606db82741bffafc8582ab9b7591cc;p=ia32rtools.git diff --git a/tools/mkdef_ord.c b/tools/mkdef_ord.c index 3873c3a..648e0d4 100644 --- a/tools/mkdef_ord.c +++ b/tools/mkdef_ord.c @@ -20,7 +20,7 @@ int main(int argc, char *argv[]) { const struct parsed_proto *pp; FILE *fout, *fhdr; - char basename[256]; + char basename[256] = { 0, }; char line[256]; char fmt[256]; char word[256]; @@ -34,12 +34,14 @@ int main(int argc, char *argv[]) for (arg = 1; arg < argc; arg++) { if (IS(argv[arg], "-n")) noname = 1; + else if (IS(argv[arg], "-b") && arg < argc - 1) + snprintf(basename, sizeof(basename), "%s", argv[++arg]); else break; } if (argc != arg + 2) { - printf("usage:\n%s [-n] <.h> <.def>\n", argv[0]); + printf("usage:\n%s [-n] [-b ] <.h> <.def>\n", argv[0]); return 1; } @@ -50,15 +52,17 @@ int main(int argc, char *argv[]) fout = fopen(argv[arg++], "w"); my_assert_not(fout, NULL); - p = strrchr(hdrfn, '.'); - my_assert_not(p, NULL); - p2 = strrchr(hdrfn, '/'); - if (p2++ == NULL) - p2 = hdrfn; - l = p - p2; - my_assert((unsigned int)l < 256, 1); - memcpy(basename, p2, l); - basename[l] = 0; + if (basename[0] == 0) { + p = strrchr(hdrfn, '.'); + my_assert_not(p, NULL); + p2 = strrchr(hdrfn, '/'); + if (p2++ == NULL) + p2 = hdrfn; + l = p - p2; + my_assert((unsigned int)l < 256, 1); + memcpy(basename, p2, l); + basename[l] = 0; + } snprintf(fmt, sizeof(fmt), "%s_%%d", basename); @@ -91,9 +95,11 @@ int main(int argc, char *argv[]) if (pp == NULL) return 1; - fprintf(fout, " %s", word); + fputc(' ', fout); + fputc(pp->is_fastcall ? '@' : ' ', fout); + fprintf(fout, "%s", word); if (pp->is_stdcall) - fprintf(fout, "@%-2d", pp->argc_stack * 4); + fprintf(fout, "@%-2d", pp->argc * 4); else fprintf(fout, " "); fprintf(fout, " @%d", ord);