diff --git a/tools/shell/inc/shellInt.h b/tools/shell/inc/shellInt.h index 24300b06a6a82a001fd298244cbc5a19bf467f2f..3541c5b7e9fc947ce61c7a28006baaf8d1987faa 100644 --- a/tools/shell/inc/shellInt.h +++ b/tools/shell/inc/shellInt.h @@ -97,6 +97,7 @@ void shellGenerateAuth(); void shellDumpConfig(); void shellCheckServerStatus(); bool shellRegexMatch(const char* s, const char* reg, int32_t cflags); +void shellExit(); // shellNettest.c void shellTestNetWork(); diff --git a/tools/shell/src/shellArguments.c b/tools/shell/src/shellArguments.c index fb5dadc60cfde0dbdf6bceb60e488bdbe6d0ab18..e67e00e43e6aff22efb94505282ec538e5c7de5e 100644 --- a/tools/shell/src/shellArguments.c +++ b/tools/shell/src/shellArguments.c @@ -278,7 +278,7 @@ static struct argp shellArgp = {shellOptions, shellParseOpt, "", ""}; static void shellParseArgsInLinux(int argc, char *argv[]) { argp_program_version = shell.info.programVersion; - argp_parse(&shellArgp, argc, argv, 0, 0, NULL); + argp_parse(&shellArgp, argc, argv, 0, 0, &shell.args); } #endif diff --git a/tools/shell/src/shellEngine.c b/tools/shell/src/shellEngine.c index 6af4bbb4244c1b9669b9f4500f922b9e4e9dd217..6d7c4b59bb4c9afaaafc1da9cbfd7d26dbc62bdd 100644 --- a/tools/shell/src/shellEngine.c +++ b/tools/shell/src/shellEngine.c @@ -907,6 +907,8 @@ void *shellThreadLoop(void *arg) { } while (shellRunCommand(command) == 0); taosMemoryFreeClear(command); + // shellExit(); + taosThreadCleanupPop(1); return NULL; } diff --git a/tools/shell/src/shellMain.c b/tools/shell/src/shellMain.c index 8c4f8d3b2e4f7166ae836d788c30964179939ab2..6cf8facde0ea805a2e0c3bd31a334de44d0d8455 100644 --- a/tools/shell/src/shellMain.c +++ b/tools/shell/src/shellMain.c @@ -56,7 +56,8 @@ int main(int argc, char *argv[]) { return 0; } - if (strcmp(shell.args.netrole, "client") == 0 || strcmp(shell.args.netrole, "server") == 0) { + if (shell.args.netrole != NULL && + (strcmp(shell.args.netrole, "client") == 0 || strcmp(shell.args.netrole, "server")) == 0) { shellTestNetWork(); taos_cleanup(); return 0; diff --git a/tools/shell/src/shellUtil.c b/tools/shell/src/shellUtil.c index 2a3dea07e0a43fa286bdbe6ddbd57c95b38873c9..2197caea286db40b2281f1ae0f05f9b37bc21c2b 100644 --- a/tools/shell/src/shellUtil.c +++ b/tools/shell/src/shellUtil.c @@ -21,13 +21,13 @@ #include "shellInt.h" bool shellRegexMatch(const char *s, const char *reg, int32_t cflags) { - regex_t regex; + regex_t regex = {0}; char msgbuf[100] = {0}; /* Compile regular expression */ if (regcomp(®ex, reg, cflags) != 0) { fprintf(stderr, "Fail to compile regex"); - return false; + shellExit(); } /* Execute regular expression */ @@ -42,7 +42,7 @@ bool shellRegexMatch(const char *s, const char *reg, int32_t cflags) { regerror(reti, ®ex, msgbuf, sizeof(msgbuf)); fprintf(stderr, "Regex match failed: %s\n", msgbuf); regfree(®ex); - return false; + shellExit(); } return false; @@ -114,3 +114,5 @@ void shellCheckServerStatus() { } } while (1); } + +void shellExit() { exit(EXIT_FAILURE); } \ No newline at end of file