static void MrEdSchemeMessages(char *msg, ...) { GC_CAN_IGNORE va_list args; scheme_start_atomic(); XFORM_HIDE_EXPR(va_start(args, msg)); if (!console_out) { AllocConsole(); console_out = GetStdHandle(STD_OUTPUT_HANDLE); if (!wx_in_terminal) { has_stdio = 1; waiting_sema = CreateSemaphore(NULL, 0, 1, NULL); orig_signal_handle = scheme_get_signal_handle(); orig_break_handle = scheme_get_main_thread_break_handle(); SetConsoleCtrlHandler(ConsoleHandler, TRUE); { HMODULE hm; gcw_proc gcw; hm = LoadLibrary("kernel32.dll"); if (hm) gcw = (gcw_proc)GetProcAddress(hm, "GetConsoleWindow"); else gcw = NULL; if (gcw) console_hwnd = gcw(); } if (console_hwnd) { EnableMenuItem(GetSystemMenu(console_hwnd, FALSE), SC_CLOSE, MF_BYCOMMAND | MF_GRAYED); RemoveMenu(GetSystemMenu(console_hwnd, FALSE), SC_CLOSE, MF_BYCOMMAND); } } } if (!msg) { char *s; intptr_t l, d; DWORD wrote; s = va_arg(args, char*); d = va_arg(args, intptr_t); l = va_arg(args, intptr_t); WriteConsole(console_out, s XFORM_OK_PLUS d, l, &wrote, NULL); } else {
static int main_after_stack(void *data) { int rval; int argc; MAIN_char **MAIN_argv; #ifdef WINDOWS_UNICODE_MAIN char **argv; #endif argc = ((Main_Args *)data)->argc; MAIN_argv = ((Main_Args *)data)->argv; #if defined(OSKIT) && !defined(OSKIT_TEST) && !KNIT oskit_prepare(&argc, &argv); #endif #ifdef WINDOWS_UNICODE_MAIN { char *a; int i, j, l; argv = (char **)malloc(sizeof(char*)*argc); for (i = 0; i < argc; i++) { for (j = 0; wargv[i][j]; j++) { } l = scheme_utf8_encode((unsigned int*)wargv[i], 0, j, NULL, 0, 1 /* UTF-16 */); a = malloc(l + 1); scheme_utf8_encode((unsigned int *)wargv[i], 0, j, (unsigned char *)a, 0, 1 /* UTF-16 */); a[l] = 0; argv[i] = a; } } #endif #if !defined(NO_USER_BREAK_HANDLER) || defined(DOS_FILE_SYSTEM) break_handle = scheme_get_main_thread_break_handle(); signal_handle = scheme_get_signal_handle(); # ifndef NO_USER_BREAK_HANDLER MZ_SIGSET(SIGINT, user_break_hit); # endif # ifdef DOS_FILE_SYSTEM SetConsoleCtrlHandler(ConsoleBreakHandler, TRUE); # endif #endif #ifdef PRE_FILTER_CMDLINE_ARGUMENTS pre_filter_cmdline_arguments(&argc, &MAIN_argv); #endif rval = run_from_cmd_line(argc, argv, scheme_basic_env, cont_run); #ifndef DEFER_EXPLICIT_EXIT scheme_immediate_exit(rval); /* shouldn't get here */ #endif return rval; }