void win32_pause (struct win32_signal *ws) { if (ws->mode == WSO_MODE_CONSOLE && HANDLE_DEFINED (ws->in.read)) { int status; msg (M_INFO|M_NOPREFIX, "Press any key to continue..."); do { status = WaitForSingleObject (ws->in.read, INFINITE); } while (!win32_keyboard_get (ws)); } }
int win32_signal_get(struct win32_signal *ws) { int ret = 0; if (siginfo_static.signal_received) { ret = siginfo_static.signal_received; } else { if (ws->mode == WSO_MODE_SERVICE) { if (win32_service_interrupt(ws)) { ret = SIGTERM; } } else if (ws->mode == WSO_MODE_CONSOLE) { switch (win32_keyboard_get(ws)) { case 0x3B: /* F1 -> USR1 */ ret = SIGUSR1; break; case 0x3C: /* F2 -> USR2 */ ret = SIGUSR2; break; case 0x3D: /* F3 -> HUP */ ret = SIGHUP; break; case 0x3E: /* F4 -> TERM */ ret = SIGTERM; break; case 0x03: /* CTRL-C -> TERM */ ret = SIGTERM; break; } } if (ret) { siginfo_static.signal_received = ret; siginfo_static.source = SIG_SOURCE_HARD; } } return ret; }