From: mistachkin Date: Fri, 27 Oct 2017 17:09:44 +0000 (+0000) Subject: Handle the Ctrl-C event for the shell on Win32. X-Git-Tag: version-3.22.0~227 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b4bab90b31afa3c4646dbae5f650b2b17cb64a69;p=thirdparty%2Fsqlite.git Handle the Ctrl-C event for the shell on Win32. FossilOrigin-Name: c8aaf37117ed4a23bbd15dc481788735efcb77bff98be423eca3521c0a9270de --- diff --git a/manifest b/manifest index 9f32f230d3..2d13f91b8d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Additional\stest\scase\sdemonstrating\sthe\sability\sto\saccess\sstructure\selements\nusing\squoted\snames\sin\sthe\sJSON1\sextension. -D 2017-10-27T12:27:25.402 +C Handle\sthe\sCtrl-C\sevent\sfor\sthe\sshell\son\sWin32. +D 2017-10-27T17:09:44.546 F Makefile.in e016061b23e60ac9ec27c65cb577292b6bde0307ca55abd874ab3487b3b1beb2 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 37740aba9c4bb359c627eadccf1cfd7be4f5f847078723777ea7763969e533b1 @@ -464,7 +464,7 @@ F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384 F src/resolve.c 5a461643f294ec510ca615b67256fc3861e4c8eff5f29e5940491e70553b1955 F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac F src/select.c 0b4c1ac59221c91c9f01c326105c1749874704a77310735c0417f3c3026a4f11 -F src/shell.c.in f13262c8778f0cd76bf8d9c01bbf5ef66842e6b14e1705cd60d86ab32a6ce69f +F src/shell.c.in 08cbffc31900359fea85896342a46147e9772c370d8a5079b7be26e3a1f50e8a F src/sqlite.h.in ab4f8a29d1580dfaeb6891fa1b83cff8229ba0daa56994707ceaca71495d9ab7 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3ext.h c02d628cca67f3889c689d82d25c3eb45e2c155db08e4c6089b5840d64687d34 @@ -1666,7 +1666,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 6caec9082b3ad6d3f89f6291084a8f5c80f296630e2e94bc764389ac1a47a833 -R 8ebb970e40e0966c50eb4f87e0c6dbf4 -U drh -Z eb1c1a1b07b761c18b2113b5597a4235 +P 8d3cc928a8f0c7b2616c5c75af9d3a50bd4f0fe8e4ccab545ab8648cbfbb4b7f +R b04098ed5c4b7451669ce8c4fddf24e2 +U mistachkin +Z 04b0a33e7f8b0430861d645ce26e5f19 diff --git a/manifest.uuid b/manifest.uuid index f88c90a99a..478c761165 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -8d3cc928a8f0c7b2616c5c75af9d3a50bd4f0fe8e4ccab545ab8648cbfbb4b7f \ No newline at end of file +c8aaf37117ed4a23bbd15dc481788735efcb77bff98be423eca3521c0a9270de \ No newline at end of file diff --git a/src/shell.c.in b/src/shell.c.in index 8f5ed59e93..e85ebd3c93 100644 --- a/src/shell.c.in +++ b/src/shell.c.in @@ -1205,7 +1205,6 @@ static void output_csv(ShellState *p, const char *z, int bSep){ } } -#ifdef SIGINT /* ** This routine runs when the user presses Ctrl-C */ @@ -1215,6 +1214,20 @@ static void interrupt_handler(int NotUsed){ if( seenInterrupt>2 ) exit(1); if( globalDb ) sqlite3_interrupt(globalDb); } + +#if (defined(_WIN32) || defined(WIN32)) && !defined(_WIN32_WCE) +/* +** This routine runs for console events (e.g. Ctrl-C) on Win32 +*/ +static BOOL WINAPI ConsoleCtrlHandler( + DWORD dwCtrlType /* One of the CTRL_*_EVENT constants */ +){ + if( dwCtrlType==CTRL_C_EVENT ){ + interrupt_handler(0); + return TRUE; + } + return FALSE; +} #endif #ifndef SQLITE_OMIT_AUTHORIZATION @@ -6689,6 +6702,8 @@ int SQLITE_CDECL wmain(int argc, wchar_t **wargv){ */ #ifdef SIGINT signal(SIGINT, interrupt_handler); +#elif (defined(_WIN32) || defined(WIN32)) && !defined(_WIN32_WCE) + SetConsoleCtrlHandler(ConsoleCtrlHandler, TRUE); #endif #ifdef SQLITE_SHELL_DBNAME_PROC