diff --git a/gencode.c b/gencode.c index 0909641..4d4ec8b 100644 --- a/gencode.c +++ b/gencode.c @@ -529,8 +529,11 @@ void solhook(char *s) { vp->v.label.addr <= ftell(yyin) && vp->v.label.addr >= ftell(yyin) - (int)strlen(s)) { - (void)fprintf(yyout, "plt_%s:\n", - vp->name); + static char *last_emitted; + if(last_emitted != vp->name) { + (void)fprintf(yyout, "plt_%s:\n", vp->name); + last_emitted = vp->name; + } } } @@ -1227,6 +1230,10 @@ int execfile(char *t) { (void)fprintf(yyout, "/* %s -- generated C code for %s */\n", outfile, source); (void)fputs("#include \n", yyout); + (void)fputs("#include \n", yyout); + (void)fputs("#include \n", yyout); + (void)fputs("#include \n", yyout); + (void)fputs("extern char *gets(char *s);\n", yyout); (void)fputs("#include \"pilot.h\"\n", yyout); /* generate declarations for all non-system variables */ @@ -1256,7 +1263,7 @@ int execfile(char *t) { (void)fputs(PASS2, stderr); } - (void)fputs("\nmain()\n{\n do_scrinit();\n", yyout); + (void)fputs("\nint main(int argc, char **argv)\n{\n do_scrinit();\n", yyout); indent = 1; }