add seperate function for createLogs
This commit is contained in:
parent
962a0cd403
commit
13d2d72bb6
|
@ -83,7 +83,8 @@ void taosRemoveDir(const char *dirname);
|
||||||
bool taosDirExist(const char *dirname);
|
bool taosDirExist(const char *dirname);
|
||||||
int32_t taosMkDir(const char *dirname);
|
int32_t taosMkDir(const char *dirname);
|
||||||
int32_t taosMulMkDir(const char *dirname);
|
int32_t taosMulMkDir(const char *dirname);
|
||||||
int32_t taosMulModeMkDir(const char *dirname, int mode, bool createLogFile);
|
int32_t taosMulModeMkDir(const char *dirname, int mode);
|
||||||
|
int32_t taosMulModeMkLogDir(const char *dirname, int mode);
|
||||||
void taosRemoveOldFiles(const char *dirname, int32_t keepDays);
|
void taosRemoveOldFiles(const char *dirname, int32_t keepDays);
|
||||||
int32_t taosExpandDir(const char *dirname, char *outname, int32_t maxlen);
|
int32_t taosExpandDir(const char *dirname, char *outname, int32_t maxlen);
|
||||||
int32_t taosRealPath(char *dirname, char *realPath, int32_t maxlen);
|
int32_t taosRealPath(char *dirname, char *realPath, int32_t maxlen);
|
||||||
|
|
|
@ -1434,7 +1434,7 @@ int32_t taosCreateLog(const char *logname, int32_t logFileNum, const char *cfgDi
|
||||||
|
|
||||||
taosSetAllDebugFlag(cfgGetItem(pCfg, "debugFlag")->i32, false);
|
taosSetAllDebugFlag(cfgGetItem(pCfg, "debugFlag")->i32, false);
|
||||||
|
|
||||||
if (taosMulModeMkDir(tsLogDir, 0777, true) != 0) {
|
if (taosMulModeMkLogDir(tsLogDir, 0777) != 0) {
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
printf("failed to create dir:%s since %s", tsLogDir, terrstr());
|
printf("failed to create dir:%s since %s", tsLogDir, terrstr());
|
||||||
cfgCleanup(pCfg);
|
cfgCleanup(pCfg);
|
||||||
|
|
|
@ -52,7 +52,7 @@ SStreamMeta* streamMetaOpen(const char* path, void* ahandle, FTaskExpand expandF
|
||||||
memset(streamPath, 0, len);
|
memset(streamPath, 0, len);
|
||||||
|
|
||||||
sprintf(streamPath, "%s/%s", pMeta->path, "checkpoints");
|
sprintf(streamPath, "%s/%s", pMeta->path, "checkpoints");
|
||||||
code = taosMulModeMkDir(streamPath, 0755, false);
|
code = taosMulModeMkDir(streamPath, 0755);
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
terrno = TAOS_SYSTEM_ERROR(code);
|
terrno = TAOS_SYSTEM_ERROR(code);
|
||||||
goto _err;
|
goto _err;
|
||||||
|
@ -90,7 +90,7 @@ SStreamMeta* streamMetaOpen(const char* path, void* ahandle, FTaskExpand expandF
|
||||||
|
|
||||||
memset(streamPath, 0, len);
|
memset(streamPath, 0, len);
|
||||||
sprintf(streamPath, "%s/%s", pMeta->path, "state");
|
sprintf(streamPath, "%s/%s", pMeta->path, "state");
|
||||||
code = taosMulModeMkDir(streamPath, 0755, false);
|
code = taosMulModeMkDir(streamPath, 0755);
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
terrno = TAOS_SYSTEM_ERROR(code);
|
terrno = TAOS_SYSTEM_ERROR(code);
|
||||||
goto _err;
|
goto _err;
|
||||||
|
|
|
@ -169,7 +169,7 @@ SStreamState* streamStateOpen(char* path, void* pTask, bool specPath, int32_t sz
|
||||||
sscanf(cfg, "%d\n%d\n", &szPage, &pages);
|
sscanf(cfg, "%d\n%d\n", &szPage, &pages);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int32_t code = taosMulModeMkDir(statePath, 0755, false);
|
int32_t code = taosMulModeMkDir(statePath, 0755);
|
||||||
if (code == 0) {
|
if (code == 0) {
|
||||||
pCfgFile = taosOpenFile(cfgPath, TD_FILE_WRITE | TD_FILE_CREATE);
|
pCfgFile = taosOpenFile(cfgPath, TD_FILE_WRITE | TD_FILE_CREATE);
|
||||||
sprintf(cfg, "%d\n%d\n", szPage, pages);
|
sprintf(cfg, "%d\n%d\n", szPage, pages);
|
||||||
|
|
|
@ -62,7 +62,7 @@ int32_t tdbOpen(const char *dbname, int32_t szPage, int32_t pages, TDB **ppDb, i
|
||||||
}
|
}
|
||||||
memset(pDb->pgrHash, 0, tsize);
|
memset(pDb->pgrHash, 0, tsize);
|
||||||
|
|
||||||
ret = taosMulModeMkDir(dbname, 0755, false);
|
ret = taosMulModeMkDir(dbname, 0755);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -193,7 +193,7 @@ int32_t taosMulMkDir(const char *dirname) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t taosMulModeMkDir(const char *dirname, int mode, bool createLogFile) {
|
int32_t taosMulModeMkDir(const char *dirname, int mode) {
|
||||||
if (dirname == NULL || strlen(dirname) >= TDDIRMAXLEN) return -1;
|
if (dirname == NULL || strlen(dirname) >= TDDIRMAXLEN) return -1;
|
||||||
char temp[TDDIRMAXLEN];
|
char temp[TDDIRMAXLEN];
|
||||||
char *pos = temp;
|
char *pos = temp;
|
||||||
|
@ -206,16 +206,73 @@ int32_t taosMulModeMkDir(const char *dirname, int mode, bool createLogFile) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (taosDirExist(temp)) {
|
if (taosDirExist(temp)) {
|
||||||
if (createLogFile) {
|
return chmod(temp, mode);
|
||||||
if (!taosCheckAccessFile(temp, TD_FILE_ACCESS_EXIST_OK | TD_FILE_ACCESS_READ_OK | TD_FILE_ACCESS_WRITE_OK)) {
|
}
|
||||||
code = -1;
|
|
||||||
|
if (strncmp(temp, TD_DIRSEP, 1) == 0) {
|
||||||
|
pos += 1;
|
||||||
|
} else if (strncmp(temp, "." TD_DIRSEP, 2) == 0) {
|
||||||
|
pos += 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (; *pos != '\0'; pos++) {
|
||||||
|
if (*pos == TD_DIRSEP[0]) {
|
||||||
|
*pos = '\0';
|
||||||
|
#ifdef WINDOWS
|
||||||
|
code = _mkdir(temp, mode);
|
||||||
|
#elif defined(DARWIN)
|
||||||
|
code = mkdir(dirname, 0777);
|
||||||
|
#else
|
||||||
|
code = mkdir(temp, mode);
|
||||||
|
#endif
|
||||||
|
if (code < 0 && errno != EEXIST) {
|
||||||
|
// terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
|
return code;
|
||||||
}
|
}
|
||||||
return code;
|
*pos = TD_DIRSEP[0];
|
||||||
} else {
|
|
||||||
return chmod(temp, mode);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (*(pos - 1) != TD_DIRSEP[0]) {
|
||||||
|
#ifdef WINDOWS
|
||||||
|
code = _mkdir(temp, mode);
|
||||||
|
#elif defined(DARWIN)
|
||||||
|
code = mkdir(dirname, 0777);
|
||||||
|
#else
|
||||||
|
code = mkdir(temp, mode);
|
||||||
|
#endif
|
||||||
|
if (code < 0 && errno != EEXIST) {
|
||||||
|
// terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (code < 0 && errno == EEXIST) {
|
||||||
|
return chmod(temp, mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
return chmod(temp, mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t taosMulModeMkLogDir(const char *dirname, int mode) {
|
||||||
|
if (dirname == NULL || strlen(dirname) >= TDDIRMAXLEN) return -1;
|
||||||
|
char temp[TDDIRMAXLEN];
|
||||||
|
char *pos = temp;
|
||||||
|
int32_t code = 0;
|
||||||
|
#ifdef WINDOWS
|
||||||
|
taosRealPath(dirname, temp, sizeof(temp));
|
||||||
|
if (temp[1] == ':') pos += 3;
|
||||||
|
#else
|
||||||
|
strcpy(temp, dirname);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (taosDirExist(temp)) {
|
||||||
|
if (!taosCheckAccessFile(temp, TD_FILE_ACCESS_EXIST_OK | TD_FILE_ACCESS_READ_OK | TD_FILE_ACCESS_WRITE_OK)) {
|
||||||
|
code = -1;
|
||||||
|
}
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
if (strncmp(temp, TD_DIRSEP, 1) == 0) {
|
if (strncmp(temp, TD_DIRSEP, 1) == 0) {
|
||||||
pos += 1;
|
pos += 1;
|
||||||
} else if (strncmp(temp, "." TD_DIRSEP, 2) == 0) {
|
} else if (strncmp(temp, "." TD_DIRSEP, 2) == 0) {
|
||||||
|
|
Loading…
Reference in New Issue