int main(int argc, char **argv) { int ParamCount = 1; int DontRunMain = false; int StackSize = getenv("STACKSIZE") ? atoi(getenv("STACKSIZE")) : PICOC_STACK_SIZE; Picoc pc; if (argc < 2 || strcmp(argv[ParamCount], "-h") == 0) { printf(PICOC_VERSION " \n" "Format:\n\n" "> picoc <file1.c>... [- <arg1>...] : run a program, calls main() as the entry point\n" "> picoc -s <file1.c>... [- <arg1>...] : run a script, runs the program without calling main()\n" "> picoc -i : interactive mode, Ctrl+d to exit\n" "> picoc -c : copyright info\n" "> picoc -h : this help message\n"); return 0; } if (strcmp(argv[ParamCount], "-c") == 0) { printf("%s\n", (char*)&__LICENSE); return 0; } PicocInitialize(&pc, StackSize); if (strcmp(argv[ParamCount], "-s") == 0) { DontRunMain = true; PicocIncludeAllSystemHeaders(&pc); ParamCount++; } if (argc > ParamCount && strcmp(argv[ParamCount], "-i") == 0) { PicocIncludeAllSystemHeaders(&pc); PicocParseInteractive(&pc); } else { if (PicocPlatformSetExitPoint(&pc)) { PicocCleanup(&pc); return pc.PicocExitValue; } for (; ParamCount < argc && strcmp(argv[ParamCount], "-") != 0; ParamCount++) PicocPlatformScanFile(&pc, argv[ParamCount]); if (!DontRunMain) PicocCallMain(&pc, argc - ParamCount, &argv[ParamCount]); } PicocCleanup(&pc); return pc.PicocExitValue; }
int main(int argc, char **argv) { int ParamCount = 1; int DontRunMain = FALSE; int StackSize = getenv("STACKSIZE") ? atoi(getenv("STACKSIZE")) : PICOC_STACK_SIZE; Picoc pc; if (argc < 2) { printf("Format: picoc <csource1.c>... [- <arg1>...] : run a program (calls main() to start it)\n" " picoc -s <csource1.c>... [- <arg1>...] : script mode - runs the program without calling main()\n" " picoc -i : interactive mode\n"); exit(1); } PicocInitialise(&pc, StackSize); if (strcmp(argv[ParamCount], "-s") == 0 || strcmp(argv[ParamCount], "-m") == 0) { DontRunMain = TRUE; PicocIncludeAllSystemHeaders(&pc); ParamCount++; } if (argc > ParamCount && strcmp(argv[ParamCount], "-i") == 0) { PicocIncludeAllSystemHeaders(&pc); PicocParseInteractive(&pc); } else { if (PicocPlatformSetExitPoint(&pc)) { PicocCleanup(&pc); return pc.PicocExitValue; } for (; ParamCount < argc && strcmp(argv[ParamCount], "-") != 0; ParamCount++) PicocPlatformScanFile(&pc, argv[ParamCount]); if (!DontRunMain) PicocCallMain(&pc, argc - ParamCount, &argv[ParamCount]); } PicocCleanup(&pc); return pc.PicocExitValue; }