From 479639d1fc679d0b7fbdd65b9659891837525fb5 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Fri, 22 Jul 2022 21:21:55 +0800 Subject: [PATCH] other: merge 3.0 --- tools/CMakeLists.txt | 4 ++-- tools/shell/src/shellArguments.c | 3 +++ tools/shell/src/shellEngine.c | 24 +++++++++++++----------- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index e6cd47b91d..995a66acd8 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -43,7 +43,7 @@ IF (TD_WEBSOCKET) ENDIF() ENDIF () -IF (TD_TAOS_TOOLS) +#IF (TD_TAOS_TOOLS) INCLUDE_DIRECTORIES(${TD_SOURCE_DIR}/tools/taos_tools/deps/avro/lang/c/src) INCLUDE_DIRECTORIES(${TD_SOURCE_DIR}/include/client) INCLUDE_DIRECTORIES(${TD_SOURCE_DIR}/include/common) @@ -51,7 +51,7 @@ IF (TD_TAOS_TOOLS) INCLUDE_DIRECTORIES(${TD_SOURCE_DIR}/include/os) INCLUDE_DIRECTORIES(${TD_SOURCE_DIR}/include/libs/transport) ADD_SUBDIRECTORY(taos-tools) -ENDIF () +#ENDIF () add_subdirectory(shell) IF (TD_BUILD_HTTP) diff --git a/tools/shell/src/shellArguments.c b/tools/shell/src/shellArguments.c index cdbdc0de60..466aa52390 100644 --- a/tools/shell/src/shellArguments.c +++ b/tools/shell/src/shellArguments.c @@ -19,6 +19,9 @@ #include "shellInt.h" +#define TAOS_CONSOLE_PROMPT_HEADER "taos> " +#define TAOS_CONSOLE_PROMPT_CONTINUE " -> " + #define SHELL_HOST "The auth string to use when connecting to the server." #define SHELL_PORT "The TCP/IP port number to use for the connection." #define SHELL_USER "The user name to use when connecting to the server." diff --git a/tools/shell/src/shellEngine.c b/tools/shell/src/shellEngine.c index eefb0aa8b2..56bc1ed6cc 100644 --- a/tools/shell/src/shellEngine.c +++ b/tools/shell/src/shellEngine.c @@ -41,7 +41,7 @@ static void shellPrintError(TAOS_RES *tres, int64_t st); static bool shellIsCommentLine(char *line); static void shellSourceFile(const char *file); static void shellGetGrantInfo(); -static void shellQueryInterruptHandler(int32_t signum, void *sigInfo, void *context); + static void shellCleanup(void *arg); static void *shellCancelHandler(void *arg); static void *shellThreadLoop(void *arg); @@ -919,11 +919,14 @@ void shellGetGrantInfo() { fprintf(stdout, "\r\n"); } -void shellQueryInterruptHandler(int32_t signum, void *sigInfo, void *context) { tsem_post(&shell.cancelSem); } - -void shellSigintHandler(int32_t signum, void *sigInfo, void *context) { - // do nothing +#ifdef WINDOWS +BOOL shellQueryInterruptHandler(DWORD fdwCtrlType) { + tsem_post(&shell.cancelSem); + return TRUE; } +#else +void shellQueryInterruptHandler(int32_t signum, void *sigInfo, void *context) { tsem_post(&shell.cancelSem); } +#endif void shellCleanup(void *arg) { taosResetTerminalMode(); } @@ -934,11 +937,10 @@ void *shellCancelHandler(void *arg) { taosMsleep(10); continue; } - - taosResetTerminalMode(); - printf("\r\nReceive SIGTERM or other signal, quit shell.\r\n"); - shellWriteHistory(); - shellExit(); + taos_kill_query(shell.conn); + #ifdef WINDOWS + printf("\n%s", shell.info.promptHeader); + #endif } return NULL; @@ -1022,7 +1024,7 @@ int32_t shellExecute() { taosSetSignal(SIGHUP, shellQueryInterruptHandler); taosSetSignal(SIGABRT, shellQueryInterruptHandler); - taosSetSignal(SIGINT, shellSigintHandler); + taosSetSignal(SIGINT, shellQueryInterruptHandler); shellGetGrantInfo();