From c92b3ce226782841427902fdbe1cdfc18371280b Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Thu, 21 Apr 2022 21:29:21 +0800 Subject: [PATCH] refactor(tools): refact shell codes --- tools/shell/inc/shellInt.h | 1 + tools/shell/src/shellArguments.c | 2 +- tools/shell/src/shellEngine.c | 2 ++ tools/shell/src/shellMain.c | 3 ++- tools/shell/src/shellUtil.c | 8 +++++--- 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/tools/shell/inc/shellInt.h b/tools/shell/inc/shellInt.h index 24300b06a6..3541c5b7e9 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 fb5dadc60c..e67e00e43e 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 6af4bbb424..6d7c4b59bb 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 8c4f8d3b2e..6cf8facde0 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 2a3dea07e0..2197caea28 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 -- GitLab