From 755bc118266fe25cba089855fec3ae2e60d219f4 Mon Sep 17 00:00:00 2001 From: kichik Date: Mon, 6 Mar 2006 15:12:26 +0000 Subject: [PATCH] accept event as ctrl+c as well, because GenerateConsoleCtrlEvent doesn't work form a non-parent-console process git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4551 212acab6-be3b-0410-9dea-997c60f758d6 --- Source/makenssi.cpp | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/Source/makenssi.cpp b/Source/makenssi.cpp index 1550362f..a3cd729c 100644 --- a/Source/makenssi.cpp +++ b/Source/makenssi.cpp @@ -79,6 +79,34 @@ static void sigint(int sig) quit(); } +#ifdef _WIN32 +static DWORD WINAPI sigint_event_msg_handler(LPVOID) +{ + HANDLE hEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, "makensis win32 signint event"); + + if (hEvent) + { + if (WaitForSingleObject(hEvent, INFINITE) == WAIT_OBJECT_0) + raise(SIGINT); + CloseHandle(hEvent); + } + + return 0; +} +#endif + +static void init_signals() +{ + atexit(myatexit); + signal(SIGINT,sigint); + +#ifdef _WIN32 + DWORD id; + HANDLE hThread = CreateThread(NULL, 0, sigint_event_msg_handler, NULL, 0, &id); + if (hThread) CloseHandle(hThread); +#endif +} + static void print_logo() { fprintf(g_output,"MakeNSIS %s - Copyright 1999-2006 Nullsoft, Inc.\n" @@ -284,8 +312,7 @@ int main(int argc, char **argv) print_logo(); } - atexit(myatexit); - signal(SIGINT,sigint); + init_signals(); if (!g_output) g_output=stdout; while (argpos < argc)