commit
2c3732e013
|
@ -117,6 +117,8 @@ extern "C" {
|
||||||
|
|
||||||
#define POW2(x) ((x) * (x))
|
#define POW2(x) ((x) * (x))
|
||||||
|
|
||||||
|
int taosRand(void);
|
||||||
|
|
||||||
int32_t strdequote(char *src);
|
int32_t strdequote(char *src);
|
||||||
|
|
||||||
size_t strtrim(char *src);
|
size_t strtrim(char *src);
|
||||||
|
|
|
@ -506,7 +506,7 @@ void taosAddToTrash(SCacheObj *pCacheObj, SCacheDataNode *pNode) {
|
||||||
|
|
||||||
void taosRemoveFromTrashCan(SCacheObj *pCacheObj, STrashElem *pElem) {
|
void taosRemoveFromTrashCan(SCacheObj *pCacheObj, STrashElem *pElem) {
|
||||||
if (pElem->pData->signature != (uint64_t)pElem->pData) {
|
if (pElem->pData->signature != (uint64_t)pElem->pData) {
|
||||||
uError("key:sig:0x%x %p data has been released, ignore", pElem->pData->signature, pElem->pData);
|
uError("key:sig:0x%" PRIx64 " %p data has been released, ignore", pElem->pData->signature, pElem->pData);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -119,8 +119,13 @@ static void taosReadDirectoryConfig(SGlobalCfg *cfg, char *input_value) {
|
||||||
struct stat dirstat;
|
struct stat dirstat;
|
||||||
if (stat(option, &dirstat) < 0) {
|
if (stat(option, &dirstat) < 0) {
|
||||||
int code = mkdir(option, 0755);
|
int code = mkdir(option, 0755);
|
||||||
uPrint("config option:%s, input value:%s, directory not exist, create with return code:%d",
|
if (code < 0) {
|
||||||
cfg->option, input_value, code);
|
uError("config option:%s, input value:%s, directory not exist, create fail with return code:%d",
|
||||||
|
cfg->option, input_value, code);
|
||||||
|
} else {
|
||||||
|
uPrint("config option:%s, input value:%s, directory not exist, create with return code:%d",
|
||||||
|
cfg->option, input_value, code);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
cfg->cfgStatus = TAOS_CFG_CSTATUS_FILE;
|
cfg->cfgStatus = TAOS_CFG_CSTATUS_FILE;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -140,7 +140,7 @@ void print_char_as_binary(char input) {
|
||||||
void generate_key(unsigned char* key) {
|
void generate_key(unsigned char* key) {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < 8; i++) {
|
for (i = 0; i < 8; i++) {
|
||||||
key[i] = rand() % 255;
|
key[i] = taosRand() % 255;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -233,7 +233,9 @@ static void taosGetLogFileName(char *fn) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(tsLogObj.logName, fn);
|
if (strlen(fn) < LOG_FILE_NAME_LEN) {
|
||||||
|
strcpy(tsLogObj.logName, fn);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t taosOpenLogFile(char *fn, int32_t maxLines, int32_t maxFileNum) {
|
static int32_t taosOpenLogFile(char *fn, int32_t maxLines, int32_t maxFileNum) {
|
||||||
|
@ -253,15 +255,20 @@ static int32_t taosOpenLogFile(char *fn, int32_t maxLines, int32_t maxFileNum) {
|
||||||
tsLogObj.fileNum = maxFileNum;
|
tsLogObj.fileNum = maxFileNum;
|
||||||
taosGetLogFileName(fn);
|
taosGetLogFileName(fn);
|
||||||
|
|
||||||
strcpy(name, fn);
|
if (strlen(fn) < LOG_FILE_NAME_LEN + 50 - 2) {
|
||||||
strcat(name, ".0");
|
strcpy(name, fn);
|
||||||
|
strcat(name, ".0");
|
||||||
|
}
|
||||||
|
|
||||||
// if none of the log files exist, open 0, if both exists, open the old one
|
// if none of the log files exist, open 0, if both exists, open the old one
|
||||||
if (stat(name, &logstat0) < 0) {
|
if (stat(name, &logstat0) < 0) {
|
||||||
tsLogObj.flag = 0;
|
tsLogObj.flag = 0;
|
||||||
} else {
|
} else {
|
||||||
strcpy(name, fn);
|
if (strlen(fn) < LOG_FILE_NAME_LEN + 50 - 2) {
|
||||||
strcat(name, ".1");
|
strcpy(name, fn);
|
||||||
|
strcat(name, ".1");
|
||||||
|
}
|
||||||
|
|
||||||
if (stat(name, &logstat1) < 0) {
|
if (stat(name, &logstat1) < 0) {
|
||||||
tsLogObj.flag = 1;
|
tsLogObj.flag = 1;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -169,7 +169,9 @@ void taosGetNoteName(char *fn, taosNoteInfo * pNote)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(pNote->taosNoteName, fn);
|
if (strlen(fn) < NOTE_FILE_NAME_LEN) {
|
||||||
|
strcpy(pNote->taosNoteName, fn);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int taosOpenNoteWithMaxLines(char *fn, int maxLines, int maxNoteNum, taosNoteInfo * pNote)
|
int taosOpenNoteWithMaxLines(char *fn, int maxLines, int maxNoteNum, taosNoteInfo * pNote)
|
||||||
|
@ -182,14 +184,18 @@ int taosOpenNoteWithMaxLines(char *fn, int maxLines, int maxNoteNum, taosNoteInf
|
||||||
pNote->taosNoteFileNum = maxNoteNum;
|
pNote->taosNoteFileNum = maxNoteNum;
|
||||||
taosGetNoteName(fn, pNote);
|
taosGetNoteName(fn, pNote);
|
||||||
|
|
||||||
|
if (strlen(fn) > NOTE_FILE_NAME_LEN * 2 - 2) {
|
||||||
|
fprintf(stderr, "the len of file name overflow:%s\n", fn);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
strcpy(name, fn);
|
strcpy(name, fn);
|
||||||
strcat(name, ".0");
|
strcat(name, ".0");
|
||||||
|
|
||||||
// if none of the note files exist, open 0, if both exists, open the old one
|
// if none of the note files exist, open 0, if both exists, open the old one
|
||||||
if (stat(name, ¬estat0) < 0) {
|
if (stat(name, ¬estat0) < 0) {
|
||||||
pNote->taosNoteFlag = 0;
|
pNote->taosNoteFlag = 0;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
strcpy(name, fn);
|
strcpy(name, fn);
|
||||||
strcat(name, ".1");
|
strcat(name, ".1");
|
||||||
if (stat(name, ¬estat1) < 0) {
|
if (stat(name, ¬estat1) < 0) {
|
||||||
|
|
|
@ -38,7 +38,7 @@ static FORCE_INLINE int32_t getSkipListNodeRandomHeight(SSkipList *pSkipList) {
|
||||||
const uint32_t factor = 4;
|
const uint32_t factor = 4;
|
||||||
|
|
||||||
int32_t n = 1;
|
int32_t n = 1;
|
||||||
while ((rand() % factor) == 0 && n <= pSkipList->maxLevel) {
|
while ((taosRand() % factor) == 0 && n <= pSkipList->maxLevel) {
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,33 @@
|
||||||
#include "tulog.h"
|
#include "tulog.h"
|
||||||
#include "taoserror.h"
|
#include "taoserror.h"
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef WINDOWS
|
||||||
|
int taosRand(void)
|
||||||
|
{
|
||||||
|
return rand();
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
int taosRand(void)
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
int seed;
|
||||||
|
|
||||||
|
fd = open("/dev/urandom", 0);
|
||||||
|
if (fd < 0) {
|
||||||
|
seed = time(0);
|
||||||
|
} else {
|
||||||
|
int len = read(fd, &seed, sizeof(seed));
|
||||||
|
if (len < 0) {
|
||||||
|
seed = time(0);
|
||||||
|
}
|
||||||
|
close(fd);
|
||||||
|
}
|
||||||
|
|
||||||
|
return seed;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int32_t strdequote(char *z) {
|
int32_t strdequote(char *z) {
|
||||||
if (z == NULL) {
|
if (z == NULL) {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -434,8 +461,10 @@ void getTmpfilePath(const char *fileNamePrefix, char *dstPath) {
|
||||||
|
|
||||||
strcpy(tmpPath, tmpDir);
|
strcpy(tmpPath, tmpDir);
|
||||||
strcat(tmpPath, tdengineTmpFileNamePrefix);
|
strcat(tmpPath, tdengineTmpFileNamePrefix);
|
||||||
strcat(tmpPath, fileNamePrefix);
|
if (strlen(tmpPath) + strlen(fileNamePrefix) + strlen("-%d-%s") < PATH_MAX) {
|
||||||
strcat(tmpPath, "-%d-%s");
|
strcat(tmpPath, fileNamePrefix);
|
||||||
|
strcat(tmpPath, "-%d-%s");
|
||||||
|
}
|
||||||
|
|
||||||
char rand[8] = {0};
|
char rand[8] = {0};
|
||||||
taosRandStr(rand, tListLen(rand) - 1);
|
taosRandStr(rand, tListLen(rand) - 1);
|
||||||
|
@ -447,7 +476,7 @@ void taosRandStr(char* str, int32_t size) {
|
||||||
int32_t len = 39;
|
int32_t len = 39;
|
||||||
|
|
||||||
for(int32_t i = 0; i < size; ++i) {
|
for(int32_t i = 0; i < size; ++i) {
|
||||||
str[i] = set[rand()%len];
|
str[i] = set[taosRand()%len];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -718,4 +747,4 @@ void taosRemoveDir(char *rootDir) {
|
||||||
rmdir(rootDir);
|
rmdir(rootDir);
|
||||||
|
|
||||||
uPrint("dir:%s is removed", rootDir);
|
uPrint("dir:%s is removed", rootDir);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue