]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Handle the Ctrl-C event for the shell on Win32.
authormistachkin <mistachkin@noemail.net>
Fri, 27 Oct 2017 17:09:44 +0000 (17:09 +0000)
committermistachkin <mistachkin@noemail.net>
Fri, 27 Oct 2017 17:09:44 +0000 (17:09 +0000)
FossilOrigin-Name: c8aaf37117ed4a23bbd15dc481788735efcb77bff98be423eca3521c0a9270de

manifest
manifest.uuid
src/shell.c.in

index 9f32f230d3054a0d8cbfeafa3a80b426f0f7b459..2d13f91b8db006694b13ac976d6182cf0cf2f60c 100644 (file)
--- 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
index f88c90a99a4cff8e8e03076bf0afbd85e05915a2..478c761165084ca754ef536ae5e5a5b0724efbbe 100644 (file)
@@ -1 +1 @@
-8d3cc928a8f0c7b2616c5c75af9d3a50bd4f0fe8e4ccab545ab8648cbfbb4b7f
\ No newline at end of file
+c8aaf37117ed4a23bbd15dc481788735efcb77bff98be423eca3521c0a9270de
\ No newline at end of file
index 8f5ed59e9304666a22c1b18d690407db106a2f06..e85ebd3c93f4e6720b48f2f201a15b7980d0e78d 100644 (file)
@@ -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