From f8c150da24c0aec653212705b9861b629004a7e6 Mon Sep 17 00:00:00 2001 From: hjxilinx Date: Sat, 21 Dec 2019 17:05:41 +0800 Subject: [PATCH 1/2] Fix the bug referred to in issue #990. [tbase-1386]. --- src/kit/shell/src/shellEngine.c | 14 +++++++++++--- src/kit/shell/src/shellImport.c | 16 +++++++++++++--- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/kit/shell/src/shellEngine.c b/src/kit/shell/src/shellEngine.c index ac66ab15d9..b238a55c5a 100644 --- a/src/kit/shell/src/shellEngine.c +++ b/src/kit/shell/src/shellEngine.c @@ -16,12 +16,12 @@ #define _XOPEN_SOURCE #define _DEFAULT_SOURCE -#include #include "os.h" #include "shell.h" #include "shellCommand.h" #include "ttime.h" #include "tutil.h" + #include /**************** Global variables ****************/ @@ -295,7 +295,6 @@ void shellRunCommandOnServer(TAOS *con, char command[]) { if (fname != NULL) { wordfree(&full_path); } - return; } /* Function to do regular expression check */ @@ -795,8 +794,17 @@ void source_file(TAOS *con, char *fptr) { char *fname = full_path.we_wordv[0]; - if (access(fname, R_OK) == -1) { + if (access(fname, F_OK) != 0) { + fprintf(stderr, "ERROR: file %s is not exist\n", fptr); + + wordfree(&full_path); + free(cmd); + return; + } + + if (access(fname, R_OK) != 0) { fprintf(stderr, "ERROR: file %s is not readable\n", fptr); + wordfree(&full_path); free(cmd); return; diff --git a/src/kit/shell/src/shellImport.c b/src/kit/shell/src/shellImport.c index 3292aa8e04..1057634803 100644 --- a/src/kit/shell/src/shellImport.c +++ b/src/kit/shell/src/shellImport.c @@ -153,10 +153,20 @@ static void shellSourceFile(TAOS *con, char *fptr) { } char *fname = full_path.we_wordv[0]; - - if (access(fname, R_OK) == -1) { - fprintf(stderr, "ERROR: file %s is not readable\n", fptr); + + if (access(fname, F_OK) != 0) { + fprintf(stderr, "ERROR: file %s is not exist\n", fptr); + wordfree(&full_path); + free(cmd); + return; + } + + if (access(fname, R_OK) != 0) { + fprintf(stderr, "ERROR: file %s is not readable\n", fptr); + + wordfree(&full_path); + free(cmd); return; } From 4b72c79fc2d9c788120dce7e924c563a321071ae Mon Sep 17 00:00:00 2001 From: hjxilinx Date: Sat, 21 Dec 2019 17:12:56 +0800 Subject: [PATCH 2/2] refactor some codes. --- src/kit/shell/inc/shell.h | 1 - src/kit/shell/src/shellEngine.c | 20 ++++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/kit/shell/inc/shell.h b/src/kit/shell/inc/shell.h index 499c93e0ec..0c8153e3ab 100644 --- a/src/kit/shell/inc/shell.h +++ b/src/kit/shell/inc/shell.h @@ -84,7 +84,6 @@ int shellDumpResult(TAOS* con, char* fname, int* error_no, bool printMode); void shellPrintNChar(char* str, int width, bool printMode); void shellGetGrantInfo(void *con); int isCommentLine(char *line); -#define max(a, b) ((int)(a) < (int)(b) ? (int)(b) : (int)(a)) /**************** Global variable declarations ****************/ extern char PROMPT_HEADER[]; diff --git a/src/kit/shell/src/shellEngine.c b/src/kit/shell/src/shellEngine.c index b238a55c5a..ff45220d89 100644 --- a/src/kit/shell/src/shellEngine.c +++ b/src/kit/shell/src/shellEngine.c @@ -375,29 +375,29 @@ int shellDumpResult(TAOS *con, char *fname, int *error_no, bool printMode) { for (int col = 0; col < num_fields; col++) { switch (fields[col].type) { case TSDB_DATA_TYPE_BOOL: - l[col] = max(BOOL_OUTPUT_LENGTH, strlen(fields[col].name)); + l[col] = MAX(BOOL_OUTPUT_LENGTH, strlen(fields[col].name)); break; case TSDB_DATA_TYPE_TINYINT: - l[col] = max(TINYINT_OUTPUT_LENGTH, strlen(fields[col].name)); + l[col] = MAX(TINYINT_OUTPUT_LENGTH, strlen(fields[col].name)); break; case TSDB_DATA_TYPE_SMALLINT: - l[col] = max(SMALLINT_OUTPUT_LENGTH, strlen(fields[col].name)); + l[col] = MAX(SMALLINT_OUTPUT_LENGTH, strlen(fields[col].name)); break; case TSDB_DATA_TYPE_INT: - l[col] = max(INT_OUTPUT_LENGTH, strlen(fields[col].name)); + l[col] = MAX(INT_OUTPUT_LENGTH, strlen(fields[col].name)); break; case TSDB_DATA_TYPE_BIGINT: - l[col] = max(BIGINT_OUTPUT_LENGTH, strlen(fields[col].name)); + l[col] = MAX(BIGINT_OUTPUT_LENGTH, strlen(fields[col].name)); break; case TSDB_DATA_TYPE_FLOAT: - l[col] = max(FLOAT_OUTPUT_LENGTH, strlen(fields[col].name)); + l[col] = MAX(FLOAT_OUTPUT_LENGTH, strlen(fields[col].name)); break; case TSDB_DATA_TYPE_DOUBLE: - l[col] = max(DOUBLE_OUTPUT_LENGTH, strlen(fields[col].name)); + l[col] = MAX(DOUBLE_OUTPUT_LENGTH, strlen(fields[col].name)); break; case TSDB_DATA_TYPE_BINARY: case TSDB_DATA_TYPE_NCHAR: - l[col] = max(fields[col].bytes, strlen(fields[col].name)); + l[col] = MAX(fields[col].bytes, strlen(fields[col].name)); /* l[col] = max(BINARY_OUTPUT_LENGTH, strlen(fields[col].name)); */ break; case TSDB_DATA_TYPE_TIMESTAMP: { @@ -408,7 +408,7 @@ int shellDumpResult(TAOS *con, char *fname, int *error_no, bool printMode) { if (taos_result_precision(result) == TSDB_TIME_PRECISION_MICRO) { defaultWidth += 3; } - l[col] = max(defaultWidth, strlen(fields[col].name)); + l[col] = MAX(defaultWidth, strlen(fields[col].name)); break; } @@ -567,7 +567,7 @@ int shellDumpResult(TAOS *con, char *fname, int *error_no, bool printMode) { case TSDB_DATA_TYPE_NCHAR: memset(t_str, 0, TSDB_MAX_BYTES_PER_ROW); memcpy(t_str, row[i], fields[i].bytes); - l[i] = max(fields[i].bytes, strlen(fields[i].name)); + l[i] = MAX(fields[i].bytes, strlen(fields[i].name)); shellPrintNChar(t_str, l[i], printMode); break; case TSDB_DATA_TYPE_TIMESTAMP: