int LLLCompile (lua_State *L, Proto *p, char **errmsg) { if (GETENGINE(p) != NULL) { writeerror(L, errmsg, "Function already compiled"); return 1; } lll::Compiler compiler(L, p); if (!compiler.Compile()) { writeerror(L, errmsg, compiler.GetErrorMessage().c_str()); return 1; } SETENGINE(p, compiler.GetEngine()); return 0; }
int main(int argc,char **argv) { FILE *istream, *ostream; char *file; for (argc--, argv++; argc > 0; argc--, argv++) if (strcmp(*argv,"-n")==0) noisy = 1; else if (strcmp(*argv,"-q")==0) noisy = 0; else if (strcmp(*argv,"-c")==0) crunchnl = 1; else if (strcmp(*argv,"-P")==0) no_line_pragma = 1; else if (strcmp(*argv,"-h")==0) { if (argc > 1) { argc--; argv++; if (prefix_str) free(prefix_str); prefix_str = (char*)malloc(sizeof(char)*(1+strlen(*argv))); if (prefix_str) strcpy(prefix_str, *argv); } } else if (strcmp(*argv,"-#")==0) ignore_shebang = 0; else break; if (argc!=2) { fprintf(stderr, USAGE); exit(1); } if (strcmp(argv[0],argv[1])==0 && strcmp(argv[0],"-")!=0) { fprintf(stderr, DISTINCTNAMES); exit(1); } file = argv[0]; if (strcmp(argv[0], "-")==0) { istream = stdin; file = "stdin"; } else if ((istream=fopen(argv[0], "r")) == NULL) { fprintf(stderr, CANNOTOPEN, argv[0]); exit(1); } ofilename=argv[1]; if (strcmp(argv[1], "-")==0) ostream = stdout; else if ((ostream=fopen(argv[1], "w")) == NULL) { fprintf(stderr, CANNOTOPEN, argv[1]); exit(1); } /* Prefix the output with line pragmas */ if (!no_line_pragma && prefix_str) { /* Both GHC and CPP understand the #line pragma. * We used to throw in both a #line and a {-# LINE #-} pragma * here, but CPP doesn't understand {-# LINE #-} so it thought * the line numbers were off by one. We could put the {-# LINE * #-} before the #line, but there's no point since GHC * understands #line anyhow. --SDM 8/2003 */ fprintf(ostream, "#line 1 \"%s\"\n", prefix_str); } unlit(file, istream, ostream); if (istream != stdin) fclose(istream); if (ostream != stdout) { if (fclose(ostream) == EOF) { writeerror(); } } exit(errors==0 ? 0 : 1); }
void myputc(char c, FILE *ostream) { if (putc(c,ostream) == EOF) { writeerror(); } }