void SDL_main(int argc, char** argv) { LOGD("SchemeSpheres", "Setting up Gambit..."); // Taken from gambit, lib/main.c. int debug_settings = ___DEBUG_SETTINGS_INITIAL; // -:d- (force repl io to be stdin/stdout since terminal isn't // -attached) debug_settings = (debug_settings & ~___DEBUG_SETTINGS_REPL_MASK) | (___DEBUG_SETTINGS_REPL_STDIO << ___DEBUG_SETTINGS_REPL_SHIFT); // -:da debug_settings = (debug_settings & ~___DEBUG_SETTINGS_UNCAUGHT_MASK) | (___DEBUG_SETTINGS_UNCAUGHT_ALL << ___DEBUG_SETTINGS_UNCAUGHT_SHIFT); // -:dr debug_settings = (debug_settings & ~___DEBUG_SETTINGS_ERROR_MASK) | (___DEBUG_SETTINGS_ERROR_REPL << ___DEBUG_SETTINGS_ERROR_SHIFT); ___setup_params_reset (&setup_params); setup_params.version = ___VERSION; setup_params.linker = LINKER; setup_params.debug_settings = debug_settings; ___setup(&setup_params); LOGD("SchemeSpheres", "Running (main)..."); scheme_main(); }
int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) { int argc; char **argv; extern int main (int, char **); NT_preallocate_heap (); ghInstance = hInst; { int cmdlen = strlen(lpCmdLine); int maxargs = cmdlen/2+2; char *cmdline = malloc(cmdlen+1); char *s; argv = malloc(sizeof(char*) * maxargs); if (cmdline==0 || argv==0) { outf_fatal ("WinMain cant malloc"); outf_flush_fatal (); return FALSE; } argc = 1; argv[0] = "scheme"; s = strcpy (cmdline, lpCmdLine); while ((*s) != '\0') { while ((*s) == ' ') s += 1; if ((*s) == '"') { s += 1; (argv[argc++]) = s; while (1) { if ((*s) == '"') { (*s++) = '\0'; break; } if ((*s) == '\0') { outf_fatal ("WinMain: unterminated quoted argument."); outf_flush_fatal (); return (FALSE); } s += 1; } } else { (argv[argc++]) = s; while (1) { if ((*s) == ' ') { (*s++) = '\0'; break; } if ((*s) == '\0') break; s += 1; } } } argv[argc] = 0; } if (!hPrevInst) if (!InitApplication(ghInstance)) return FALSE; if (!InitInstance(ghInstance, nCmdShow)) return FALSE; scheme_main (argc, ((const char **) argv)); return (0); }