From 42c54402b4d3b8d8f993c1a9597a57c294f9d4d2 Mon Sep 17 00:00:00 2001 From: afwerar <1296468573@qq.com> Date: Fri, 16 Sep 2022 11:49:01 +0800 Subject: [PATCH 1/2] os: special file name error --- source/os/src/osDir.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/source/os/src/osDir.c b/source/os/src/osDir.c index 3dfb1458ad..cc0e812df5 100644 --- a/source/os/src/osDir.c +++ b/source/os/src/osDir.c @@ -265,9 +265,21 @@ void taosRemoveOldFiles(const char *dirname, int32_t keepDays) { int32_t taosExpandDir(const char *dirname, char *outname, int32_t maxlen) { wordexp_t full_path; - if (0 != wordexp(dirname, &full_path, 0)) { - printf("failed to expand path:%s since %s", dirname, strerror(errno)); - wordfree(&full_path); + switch (wordexp (dirname, &full_path, 0)) { + case 0: + break; + case WRDE_NOSPACE: + wordfree (&full_path); + // printf("failed to expand path:%s since Out of memory\n", dirname); + return -1; + case WRDE_BADCHAR: + // printf("failed to expand path:%s since illegal occurrence of newline or one of |, &, ;, <, >, (, ), {, }\n", dirname); + return -1; + case WRDE_SYNTAX: + // printf("failed to expand path:%s since Shell syntax error, such as unbalanced parentheses or unmatched quotes\n", dirname); + return -1; + default: + // printf("failed to expand path:%s since %s\n", dirname, strerror(errno)); return -1; } From d66c49581e2052302cfd883dc3b44b0a950e6ec9 Mon Sep 17 00:00:00 2001 From: afwerar <1296468573@qq.com> Date: Fri, 16 Sep 2022 14:43:01 +0800 Subject: [PATCH 2/2] os: special file name error --- source/os/src/osDir.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/os/src/osDir.c b/source/os/src/osDir.c index cc0e812df5..418e86a40a 100644 --- a/source/os/src/osDir.c +++ b/source/os/src/osDir.c @@ -31,6 +31,15 @@ typedef struct TdDir { HANDLE hFind; } TdDir; +enum + { + WRDE_NOSPACE = 1, /* Ran out of memory. */ + WRDE_BADCHAR, /* A metachar appears in the wrong place. */ + WRDE_BADVAL, /* Undefined var reference with WRDE_UNDEF. */ + WRDE_CMDSUB, /* Command substitution with WRDE_NOCMD. */ + WRDE_SYNTAX /* Shell syntax error. */ + }; + int wordexp(char *words, wordexp_t *pwordexp, int flags) { pwordexp->we_offs = 0; pwordexp->we_wordc = 1;