Merge pull request #27890 from taosdata/fix/TD-31870/os4
fix: os return
This commit is contained in:
commit
4c459155f1
|
@ -165,7 +165,6 @@ int32_t taosGetFqdn(char *);
|
||||||
void tinet_ntoa(char *ipstr, uint32_t ip);
|
void tinet_ntoa(char *ipstr, uint32_t ip);
|
||||||
uint32_t ip2uint(const char *const ip_addr);
|
uint32_t ip2uint(const char *const ip_addr);
|
||||||
int32_t taosIgnSIGPIPE();
|
int32_t taosIgnSIGPIPE();
|
||||||
uint32_t taosInetAddr(const char *ipAddr);
|
|
||||||
const char *taosInetNtoa(struct in_addr ipInt, char *dstStr, int32_t len);
|
const char *taosInetNtoa(struct in_addr ipInt, char *dstStr, int32_t len);
|
||||||
|
|
||||||
uint64_t taosHton64(uint64_t val);
|
uint64_t taosHton64(uint64_t val);
|
||||||
|
|
|
@ -80,7 +80,7 @@ typedef struct {
|
||||||
|
|
||||||
SysNameInfo taosGetSysNameInfo();
|
SysNameInfo taosGetSysNameInfo();
|
||||||
bool taosCheckCurrentInDll();
|
bool taosCheckCurrentInDll();
|
||||||
int taosGetlocalhostname(char *hostname, size_t maxLen);
|
int32_t taosGetlocalhostname(char *hostname, size_t maxLen);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -2043,7 +2043,7 @@ static int32_t doPrepareResPtr(SReqResultInfo* pResInfo) {
|
||||||
static int32_t doConvertUCS4(SReqResultInfo* pResultInfo, int32_t numOfRows, int32_t numOfCols, int32_t* colLength) {
|
static int32_t doConvertUCS4(SReqResultInfo* pResultInfo, int32_t numOfRows, int32_t numOfCols, int32_t* colLength) {
|
||||||
int32_t idx = -1;
|
int32_t idx = -1;
|
||||||
iconv_t conv = taosAcquireConv(&idx, C2M);
|
iconv_t conv = taosAcquireConv(&idx, C2M);
|
||||||
if (!conv) return TSDB_CODE_TSC_INTERNAL_ERROR;
|
if (conv == (iconv_t)-1) return TSDB_CODE_TSC_INTERNAL_ERROR;
|
||||||
|
|
||||||
for (int32_t i = 0; i < numOfCols; ++i) {
|
for (int32_t i = 0; i < numOfCols; ++i) {
|
||||||
int32_t type = pResultInfo->fields[i].type;
|
int32_t type = pResultInfo->fields[i].type;
|
||||||
|
|
|
@ -342,7 +342,8 @@ int32_t mndUpdateIpWhiteImpl(SHashObj *pIpWhiteTab, char *user, char *fqdn, int8
|
||||||
SIpV4Range range = {.ip = 0, .mask = 32};
|
SIpV4Range range = {.ip = 0, .mask = 32};
|
||||||
int32_t code = taosGetIpv4FromFqdn(fqdn, &range.ip);
|
int32_t code = taosGetIpv4FromFqdn(fqdn, &range.ip);
|
||||||
if (code) {
|
if (code) {
|
||||||
//TODO
|
mError("failed to get ip from fqdn: %s at line %d since %s", fqdn, lino, tstrerror(code));
|
||||||
|
TAOS_RETURN(TSDB_CODE_TSC_INVALID_FQDN);
|
||||||
}
|
}
|
||||||
mDebug("ip-white-list may update for user: %s, fqdn: %s", user, fqdn);
|
mDebug("ip-white-list may update for user: %s, fqdn: %s", user, fqdn);
|
||||||
SIpWhiteList **ppList = taosHashGet(pIpWhiteTab, user, strlen(user));
|
SIpWhiteList **ppList = taosHashGet(pIpWhiteTab, user, strlen(user));
|
||||||
|
|
|
@ -243,7 +243,7 @@ static int32_t setTableSchema(SCacheRowsReader* p, uint64_t suid, const char* id
|
||||||
code = metaGetTbTSchemaNotNull(p->pVnode->pMeta, suid, -1, 1, &p->pSchema);
|
code = metaGetTbTSchemaNotNull(p->pVnode->pMeta, suid, -1, 1, &p->pSchema);
|
||||||
if (TSDB_CODE_SUCCESS != code) {
|
if (TSDB_CODE_SUCCESS != code) {
|
||||||
tsdbWarn("stable:%" PRIu64 " has been dropped, failed to retrieve cached rows, %s", suid, idstr);
|
tsdbWarn("stable:%" PRIu64 " has been dropped, failed to retrieve cached rows, %s", suid, idstr);
|
||||||
if(code != TSDB_CODE_OUT_OF_MEMORY) {
|
if(code == TSDB_CODE_NOT_FOUND) {
|
||||||
return TSDB_CODE_PAR_TABLE_NOT_EXIST;
|
return TSDB_CODE_PAR_TABLE_NOT_EXIST;
|
||||||
} else {
|
} else {
|
||||||
return code;
|
return code;
|
||||||
|
|
|
@ -85,7 +85,10 @@ int32_t udfdCPluginUdfInitLoadAggFuncs(SUdfCPluginCtx *udfCtx, const char *udfNa
|
||||||
char mergeFuncName[TSDB_FUNC_NAME_LEN + 7] = {0};
|
char mergeFuncName[TSDB_FUNC_NAME_LEN + 7] = {0};
|
||||||
char *mergeSuffix = "_merge";
|
char *mergeSuffix = "_merge";
|
||||||
snprintf(mergeFuncName, sizeof(mergeFuncName), "%s%s", processFuncName, mergeSuffix);
|
snprintf(mergeFuncName, sizeof(mergeFuncName), "%s%s", processFuncName, mergeSuffix);
|
||||||
(void)(uv_dlsym(&udfCtx->lib, mergeFuncName, (void **)(&udfCtx->aggMergeFunc)));
|
int ret = uv_dlsym(&udfCtx->lib, mergeFuncName, (void **)(&udfCtx->aggMergeFunc));
|
||||||
|
if (ret != 0) {
|
||||||
|
fnInfo("uv_dlsym function %s. error: %s", mergeFuncName, uv_strerror(ret));
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -616,7 +616,7 @@ static void httpHandleReq(SHttpMsg* msg) {
|
||||||
int32_t fd = taosCreateSocketWithTimeout(5000);
|
int32_t fd = taosCreateSocketWithTimeout(5000);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
tError("http-report failed to open socket, dst:%s:%d, chanId:%" PRId64 ", seq:%" PRId64 ", reason:%s", cli->addr,
|
tError("http-report failed to open socket, dst:%s:%d, chanId:%" PRId64 ", seq:%" PRId64 ", reason:%s", cli->addr,
|
||||||
cli->port, chanId, cli->seq, tstrerror(TAOS_SYSTEM_ERROR(errno)));
|
cli->port, chanId, cli->seq, tstrerror(terrno));
|
||||||
destroyHttpClient(cli);
|
destroyHttpClient(cli);
|
||||||
(void)taosReleaseRef(httpRefMgt, chanId);
|
(void)taosReleaseRef(httpRefMgt, chanId);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1403,7 +1403,7 @@ static void cliHandleBatchReq(SCliBatch* pBatch, SCliThrd* pThrd) {
|
||||||
int32_t fd = taosCreateSocketWithTimeout(TRANS_CONN_TIMEOUT * 10);
|
int32_t fd = taosCreateSocketWithTimeout(TRANS_CONN_TIMEOUT * 10);
|
||||||
if (fd == -1) {
|
if (fd == -1) {
|
||||||
tError("%s conn %p failed to create socket, reason:%s", transLabel(pTransInst), conn,
|
tError("%s conn %p failed to create socket, reason:%s", transLabel(pTransInst), conn,
|
||||||
tstrerror(TAOS_SYSTEM_ERROR(errno)));
|
tstrerror(terrno));
|
||||||
cliHandleFastFail(conn, -1);
|
cliHandleFastFail(conn, -1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1883,9 +1883,9 @@ void cliHandleReq(SCliMsg* pMsg, SCliThrd* pThrd) {
|
||||||
int32_t fd = taosCreateSocketWithTimeout(TRANS_CONN_TIMEOUT * 10);
|
int32_t fd = taosCreateSocketWithTimeout(TRANS_CONN_TIMEOUT * 10);
|
||||||
if (fd == -1) {
|
if (fd == -1) {
|
||||||
tGError("%s conn %p failed to create socket, reason:%s", transLabel(pTransInst), conn,
|
tGError("%s conn %p failed to create socket, reason:%s", transLabel(pTransInst), conn,
|
||||||
tstrerror(TAOS_SYSTEM_ERROR(errno)));
|
tstrerror(terrno));
|
||||||
cliHandleExcept(conn, -1);
|
cliHandleExcept(conn, -1);
|
||||||
errno = 0;
|
terrno = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,23 +31,35 @@ int32_t taosSetSignal(int32_t signum, FSignalHandler sigfp) {
|
||||||
|
|
||||||
// SIGHUP doesn't exist in windows, we handle it in the way of ctrlhandler
|
// SIGHUP doesn't exist in windows, we handle it in the way of ctrlhandler
|
||||||
if (signum == SIGHUP) {
|
if (signum == SIGHUP) {
|
||||||
SetConsoleCtrlHandler((PHANDLER_ROUTINE)sigfp, TRUE);
|
if(SetConsoleCtrlHandler((PHANDLER_ROUTINE)sigfp, TRUE) == 0) {
|
||||||
|
terrno = TAOS_SYSTEM_WINAPI_ERROR(GetLastError());
|
||||||
|
return terrno;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
signal(signum, (FWinSignalHandler)sigfp);
|
if(signal(signum, (FWinSignalHandler)sigfp) == SIG_ERR) {
|
||||||
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
|
return terrno;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t taosIgnSignal(int32_t signum) {
|
int32_t taosIgnSignal(int32_t signum) {
|
||||||
if (signum == SIGUSR1 || signum == SIGHUP) return 0;
|
if (signum == SIGUSR1 || signum == SIGHUP) return 0;
|
||||||
signal(signum, SIG_IGN);
|
if(signal(signum, SIG_IGN) == SIG_ERR) {
|
||||||
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
|
return terrno;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t taosDflSignal(int32_t signum) {
|
int32_t taosDflSignal(int32_t signum) {
|
||||||
if (signum == SIGUSR1 || signum == SIGHUP) return 0;
|
if (signum == SIGUSR1 || signum == SIGHUP) return 0;
|
||||||
signal(signum, SIG_DFL);
|
if(signal(signum, SIG_DFL) == SIG_ERR) {
|
||||||
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
|
return terrno;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -300,14 +300,18 @@ int32_t taosSetSockOpt(TdSocketPtr pSocket, int32_t level, int32_t optname, void
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return setsockopt(pSocket->fd, level, optname, optval, optlen);
|
int ret = setsockopt(pSocket->fd, level, optname, optval, optlen);
|
||||||
|
if (ret == SOCKET_ERROR) {
|
||||||
|
int errorCode = WSAGetLastError();
|
||||||
|
return terrno = TAOS_SYSTEM_WINSOCKET_ERROR(errorCode);
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
int32_t code = setsockopt(pSocket->fd, level, optname, optval, (int)optlen);
|
int32_t code = setsockopt(pSocket->fd, level, optname, optval, (int)optlen);
|
||||||
if (-1 == code) {
|
if (-1 == code) {
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
return terrno;
|
return terrno;
|
||||||
}
|
}
|
||||||
return code;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -325,19 +329,6 @@ int32_t taosGetSockOpt(TdSocketPtr pSocket, int32_t level, int32_t optname, void
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint32_t taosInetAddr(const char *ipAddr) {
|
|
||||||
#ifdef WINDOWS
|
|
||||||
uint32_t value;
|
|
||||||
int32_t ret = inet_pton(AF_INET, ipAddr, &value);
|
|
||||||
if (ret <= 0) {
|
|
||||||
return INADDR_NONE;
|
|
||||||
} else {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
return inet_addr(ipAddr);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
const char *taosInetNtoa(struct in_addr ipInt, char *dstStr, int32_t len) {
|
const char *taosInetNtoa(struct in_addr ipInt, char *dstStr, int32_t len) {
|
||||||
const char* r = inet_ntop(AF_INET, &ipInt, dstStr, len);
|
const char* r = inet_ntop(AF_INET, &ipInt, dstStr, len);
|
||||||
if (NULL == r) {
|
if (NULL == r) {
|
||||||
|
@ -943,8 +934,7 @@ int32_t taosGetIpv4FromFqdn(const char *fqdn, uint32_t *ip) {
|
||||||
int iResult;
|
int iResult;
|
||||||
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
|
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
|
||||||
if (iResult != 0) {
|
if (iResult != 0) {
|
||||||
// printf("WSAStartup failed: %d\n", iResult);
|
return TAOS_SYSTEM_WINSOCKET_ERROR(WSAGetLastError());
|
||||||
return 0xFFFFFFFF;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1008,7 +998,7 @@ int32_t taosGetIpv4FromFqdn(const char *fqdn, uint32_t *ip) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
*ip = 0xFFFFFFFF;
|
*ip = 0xFFFFFFFF;
|
||||||
return 0xFFFFFFFF;
|
return TSDB_CODE_RPC_FQDN_ERROR;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -1021,7 +1011,7 @@ int32_t taosGetFqdn(char *fqdn) {
|
||||||
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
|
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
|
||||||
if (iResult != 0) {
|
if (iResult != 0) {
|
||||||
// printf("WSAStartup failed: %d\n", iResult);
|
// printf("WSAStartup failed: %d\n", iResult);
|
||||||
return 1;
|
return TAOS_SYSTEM_WINSOCKET_ERROR(WSAGetLastError());
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
char hostname[1024];
|
char hostname[1024];
|
||||||
|
@ -1077,8 +1067,8 @@ int32_t taosGetFqdn(char *fqdn) {
|
||||||
|
|
||||||
int32_t ret = getaddrinfo(hostname, NULL, &hints, &result);
|
int32_t ret = getaddrinfo(hostname, NULL, &hints, &result);
|
||||||
if (!result) {
|
if (!result) {
|
||||||
fprintf(stderr, "failed to get fqdn, code:%d, hostname:%s, reason:%s\n", ret, hostname, gai_strerror(ret));
|
//fprintf(stderr, "failed to get fqdn, code:%d, hostname:%s, reason:%s\n", ret, hostname, gai_strerror(ret));
|
||||||
return -1;
|
return TAOS_SYSTEM_WINSOCKET_ERROR(WSAGetLastError());
|
||||||
}
|
}
|
||||||
strcpy(fqdn, result->ai_canonname);
|
strcpy(fqdn, result->ai_canonname);
|
||||||
freeaddrinfo(result);
|
freeaddrinfo(result);
|
||||||
|
@ -1140,13 +1130,13 @@ int32_t taosCreateSocketWithTimeout(uint32_t timeout) {
|
||||||
|
|
||||||
if ((fd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {
|
if ((fd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
return -1;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(WINDOWS)
|
#if defined(WINDOWS)
|
||||||
if (0 != setsockopt(fd, IPPROTO_TCP, TCP_MAXRT, (char *)&timeout, sizeof(timeout))) {
|
if (0 != setsockopt(fd, IPPROTO_TCP, TCP_MAXRT, (char *)&timeout, sizeof(timeout))) {
|
||||||
taosCloseSocketNoCheck1(fd);
|
taosCloseSocketNoCheck1(fd);
|
||||||
return -1;
|
return TAOS_SYSTEM_WINSOCKET_ERROR(WSAGetLastError());
|
||||||
}
|
}
|
||||||
#elif defined(_TD_DARWIN_64)
|
#elif defined(_TD_DARWIN_64)
|
||||||
// invalid config
|
// invalid config
|
||||||
|
@ -1160,7 +1150,7 @@ int32_t taosCreateSocketWithTimeout(uint32_t timeout) {
|
||||||
if (-1 == setsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, (char *)&conn_timeout_ms, sizeof(conn_timeout_ms))) {
|
if (-1 == setsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, (char *)&conn_timeout_ms, sizeof(conn_timeout_ms))) {
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
TAOS_SKIP_ERROR(taosCloseSocketNoCheck1(fd));
|
TAOS_SKIP_ERROR(taosCloseSocketNoCheck1(fd));
|
||||||
return -1;
|
return terrno;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -216,14 +216,14 @@ int32_t taosConvInit(void) {
|
||||||
|
|
||||||
for (int32_t i = 0; i < gConvMaxNum[M2C]; ++i) {
|
for (int32_t i = 0; i < gConvMaxNum[M2C]; ++i) {
|
||||||
gConv[M2C][i].conv = iconv_open(DEFAULT_UNICODE_ENCODEC, tsCharset);
|
gConv[M2C][i].conv = iconv_open(DEFAULT_UNICODE_ENCODEC, tsCharset);
|
||||||
if ((iconv_t)-1 == gConv[M2C][i].conv || (iconv_t)0 == gConv[M2C][i].conv) {
|
if ((iconv_t)-1 == gConv[M2C][i].conv) {
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
return terrno;
|
return terrno;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (int32_t i = 0; i < gConvMaxNum[1 - M2C]; ++i) {
|
for (int32_t i = 0; i < gConvMaxNum[1 - M2C]; ++i) {
|
||||||
gConv[1 - M2C][i].conv = iconv_open(tsCharset, DEFAULT_UNICODE_ENCODEC);
|
gConv[1 - M2C][i].conv = iconv_open(tsCharset, DEFAULT_UNICODE_ENCODEC);
|
||||||
if ((iconv_t)-1 == gConv[1 - M2C][i].conv || (iconv_t)0 == gConv[1 - M2C][i].conv) {
|
if ((iconv_t)-1 == gConv[1 - M2C][i].conv) {
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
return terrno;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
@ -251,13 +251,13 @@ iconv_t taosAcquireConv(int32_t *idx, ConvType type) {
|
||||||
*idx = -1;
|
*idx = -1;
|
||||||
if (type == M2C) {
|
if (type == M2C) {
|
||||||
iconv_t c = iconv_open(DEFAULT_UNICODE_ENCODEC, tsCharset);
|
iconv_t c = iconv_open(DEFAULT_UNICODE_ENCODEC, tsCharset);
|
||||||
if ((iconv_t)-1 == c || (iconv_t)0 == c) {
|
if ((iconv_t)-1 == c) {
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
}
|
}
|
||||||
return c;
|
return c;
|
||||||
} else {
|
} else {
|
||||||
iconv_t c = iconv_open(tsCharset, DEFAULT_UNICODE_ENCODEC);
|
iconv_t c = iconv_open(tsCharset, DEFAULT_UNICODE_ENCODEC);
|
||||||
if ((iconv_t)-1 == c || (iconv_t)0 == c) {
|
if ((iconv_t)-1 == c) {
|
||||||
terrno = TAOS_SYSTEM_ERROR(errno);
|
terrno = TAOS_SYSTEM_ERROR(errno);
|
||||||
}
|
}
|
||||||
return c;
|
return c;
|
||||||
|
@ -289,7 +289,11 @@ iconv_t taosAcquireConv(int32_t *idx, ConvType type) {
|
||||||
}
|
}
|
||||||
|
|
||||||
*idx = startId;
|
*idx = startId;
|
||||||
return gConv[type][startId].conv;
|
if ((iconv_t)0 == gConv[type][startId].conv) {
|
||||||
|
return (iconv_t)-1;
|
||||||
|
} else {
|
||||||
|
return gConv[type][startId].conv;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void taosReleaseConv(int32_t idx, iconv_t conv, ConvType type) {
|
void taosReleaseConv(int32_t idx, iconv_t conv, ConvType type) {
|
||||||
|
@ -312,7 +316,7 @@ bool taosMbsToUcs4(const char *mbs, size_t mbsLength, TdUcs4 *ucs4, int32_t ucs4
|
||||||
|
|
||||||
int32_t idx = -1;
|
int32_t idx = -1;
|
||||||
iconv_t conv = taosAcquireConv(&idx, M2C);
|
iconv_t conv = taosAcquireConv(&idx, M2C);
|
||||||
if ((iconv_t)-1 == conv || (iconv_t)0 == conv) {
|
if ((iconv_t)-1 == conv) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -350,9 +354,8 @@ int32_t taosUcs4ToMbs(TdUcs4 *ucs4, int32_t ucs4_max_len, char *mbs) {
|
||||||
int32_t idx = -1;
|
int32_t idx = -1;
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
iconv_t conv = taosAcquireConv(&idx, C2M);
|
iconv_t conv = taosAcquireConv(&idx, C2M);
|
||||||
if ((iconv_t)-1 == conv || (iconv_t)0 == conv) {
|
if ((iconv_t)-1 == conv) {
|
||||||
code = TAOS_SYSTEM_ERROR(errno);;
|
return terrno;
|
||||||
return code;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t ucs4_input_len = ucs4_max_len;
|
size_t ucs4_input_len = ucs4_max_len;
|
||||||
|
|
|
@ -93,6 +93,10 @@ LONG WINAPI FlCrashDump(PEXCEPTION_POINTERS ep) {
|
||||||
path[len - 1] = 'p';
|
path[len - 1] = 'p';
|
||||||
|
|
||||||
HANDLE file = CreateFile(path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
HANDLE file = CreateFile(path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
|
if (file == INVALID_HANDLE_VALUE) {
|
||||||
|
FreeLibrary(dll);
|
||||||
|
return EXCEPTION_CONTINUE_SEARCH;
|
||||||
|
}
|
||||||
|
|
||||||
MINIDUMP_EXCEPTION_INFORMATION mei;
|
MINIDUMP_EXCEPTION_INFORMATION mei;
|
||||||
mei.ThreadId = GetCurrentThreadId();
|
mei.ThreadId = GetCurrentThreadId();
|
||||||
|
@ -333,7 +337,10 @@ bool getWinVersionReleaseName(char *releaseName, int32_t maxLen) {
|
||||||
UINT uLen;
|
UINT uLen;
|
||||||
VS_FIXEDFILEINFO *pFileInfo;
|
VS_FIXEDFILEINFO *pFileInfo;
|
||||||
|
|
||||||
GetWindowsDirectory(szFileName, MAX_PATH);
|
int ret = GetWindowsDirectory(szFileName, MAX_PATH);
|
||||||
|
if (ret == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
wsprintf(szFileName, L"%s%s", szFileName, L"\\explorer.exe");
|
wsprintf(szFileName, L"%s%s", szFileName, L"\\explorer.exe");
|
||||||
dwLen = GetFileVersionInfoSize(szFileName, &dwHandle);
|
dwLen = GetFileVersionInfoSize(szFileName, &dwHandle);
|
||||||
if (dwLen == 0) {
|
if (dwLen == 0) {
|
||||||
|
@ -373,12 +380,12 @@ int32_t taosGetOsReleaseName(char *releaseName, char* sName, char* ver, int32_t
|
||||||
|
|
||||||
if(sName) snprintf(sName, maxLen, "macOS");
|
if(sName) snprintf(sName, maxLen, "macOS");
|
||||||
if (sysctl(osversion_name, 2, osversion, &osversion_len, NULL, 0) == -1) {
|
if (sysctl(osversion_name, 2, osversion, &osversion_len, NULL, 0) == -1) {
|
||||||
return -1;
|
return TAOS_SYSTEM_ERROR(errno);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t major, minor;
|
uint32_t major, minor;
|
||||||
if (sscanf(osversion, "%u.%u", &major, &minor) != 2) {
|
if (sscanf(osversion, "%u.%u", &major, &minor) == EOF) {
|
||||||
return -1;
|
return TAOS_SYSTEM_ERROR(errno);
|
||||||
}
|
}
|
||||||
if (major >= 20) {
|
if (major >= 20) {
|
||||||
major -= 9; // macOS 11 and newer
|
major -= 9; // macOS 11 and newer
|
||||||
|
@ -433,8 +440,11 @@ int32_t taosGetCpuInfo(char *cpuModel, int32_t maxLen, float *numOfCores) {
|
||||||
#ifdef WINDOWS
|
#ifdef WINDOWS
|
||||||
char value[100];
|
char value[100];
|
||||||
DWORD bufferSize = sizeof(value);
|
DWORD bufferSize = sizeof(value);
|
||||||
RegGetValue(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", "ProcessorNameString",
|
LSTATUS ret = RegGetValue(HKEY_LOCAL_MACHINE, "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", "ProcessorNameString",
|
||||||
RRF_RT_ANY, NULL, (PVOID)&value, &bufferSize);
|
RRF_RT_ANY, NULL, (PVOID)&value, &bufferSize);
|
||||||
|
if (ret != ERROR_SUCCESS) {
|
||||||
|
return TAOS_SYSTEM_ERROR(ret);
|
||||||
|
}
|
||||||
tstrncpy(cpuModel, value, maxLen);
|
tstrncpy(cpuModel, value, maxLen);
|
||||||
SYSTEM_INFO si;
|
SYSTEM_INFO si;
|
||||||
memset(&si, 0, sizeof(SYSTEM_INFO));
|
memset(&si, 0, sizeof(SYSTEM_INFO));
|
||||||
|
@ -696,7 +706,7 @@ int32_t taosGetTotalMemory(int64_t *totalKB) {
|
||||||
MEMORYSTATUSEX memsStat;
|
MEMORYSTATUSEX memsStat;
|
||||||
memsStat.dwLength = sizeof(memsStat);
|
memsStat.dwLength = sizeof(memsStat);
|
||||||
if (!GlobalMemoryStatusEx(&memsStat)) {
|
if (!GlobalMemoryStatusEx(&memsStat)) {
|
||||||
return -1;
|
return TAOS_SYSTEM_WINAPI_ERROR(GetLastError());
|
||||||
}
|
}
|
||||||
|
|
||||||
*totalKB = memsStat.ullTotalPhys / 1024;
|
*totalKB = memsStat.ullTotalPhys / 1024;
|
||||||
|
@ -705,6 +715,9 @@ int32_t taosGetTotalMemory(int64_t *totalKB) {
|
||||||
return 0;
|
return 0;
|
||||||
#else
|
#else
|
||||||
*totalKB = (int64_t)(sysconf(_SC_PHYS_PAGES) * tsPageSizeKB);
|
*totalKB = (int64_t)(sysconf(_SC_PHYS_PAGES) * tsPageSizeKB);
|
||||||
|
if(*totalKB <= 0) {
|
||||||
|
return TAOS_SYSTEM_ERROR(errno);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -760,7 +773,7 @@ int32_t taosGetSysMemory(int64_t *usedKB) {
|
||||||
MEMORYSTATUSEX memsStat;
|
MEMORYSTATUSEX memsStat;
|
||||||
memsStat.dwLength = sizeof(memsStat);
|
memsStat.dwLength = sizeof(memsStat);
|
||||||
if (!GlobalMemoryStatusEx(&memsStat)) {
|
if (!GlobalMemoryStatusEx(&memsStat)) {
|
||||||
return -1;
|
return TAOS_SYSTEM_WINAPI_ERROR(GetLastError());
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t nMemFree = memsStat.ullAvailPhys / 1024;
|
int64_t nMemFree = memsStat.ullAvailPhys / 1024;
|
||||||
|
@ -773,6 +786,9 @@ int32_t taosGetSysMemory(int64_t *usedKB) {
|
||||||
return 0;
|
return 0;
|
||||||
#else
|
#else
|
||||||
*usedKB = sysconf(_SC_AVPHYS_PAGES) * tsPageSizeKB;
|
*usedKB = sysconf(_SC_AVPHYS_PAGES) * tsPageSizeKB;
|
||||||
|
if(*usedKB <= 0) {
|
||||||
|
return TAOS_SYSTEM_ERROR(errno);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -832,7 +848,7 @@ int32_t taosGetProcIO(int64_t *rchars, int64_t *wchars, int64_t *read_bytes, int
|
||||||
if (write_bytes) *write_bytes = 0;
|
if (write_bytes) *write_bytes = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return -1;
|
return TAOS_SYSTEM_WINAPI_ERROR(GetLastError());
|
||||||
#elif defined(_TD_DARWIN_64)
|
#elif defined(_TD_DARWIN_64)
|
||||||
if (rchars) *rchars = 0;
|
if (rchars) *rchars = 0;
|
||||||
if (wchars) *wchars = 0;
|
if (wchars) *wchars = 0;
|
||||||
|
@ -1022,7 +1038,10 @@ void taosKillSystem() {
|
||||||
int32_t taosGetSystemUUID(char *uid, int32_t uidlen) {
|
int32_t taosGetSystemUUID(char *uid, int32_t uidlen) {
|
||||||
#ifdef WINDOWS
|
#ifdef WINDOWS
|
||||||
GUID guid;
|
GUID guid;
|
||||||
CoCreateGuid(&guid);
|
HRESULT h = CoCreateGuid(&guid);
|
||||||
|
if (h != S_OK) {
|
||||||
|
return TAOS_SYSTEM_WINAPI_ERROR(GetLastError());
|
||||||
|
}
|
||||||
snprintf(uid, uidlen, "%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X", guid.Data1, guid.Data2, guid.Data3,
|
snprintf(uid, uidlen, "%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X", guid.Data1, guid.Data2, guid.Data3,
|
||||||
guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6],
|
guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6],
|
||||||
guid.Data4[7]);
|
guid.Data4[7]);
|
||||||
|
@ -1226,14 +1245,13 @@ SysNameInfo taosGetSysNameInfo() {
|
||||||
}
|
}
|
||||||
|
|
||||||
char localHostName[512];
|
char localHostName[512];
|
||||||
taosGetlocalhostname(localHostName, 512);
|
TAOS_SKIP_ERROR(taosGetlocalhostname(localHostName, 512));
|
||||||
TdCmdPtr pCmd = taosOpenCmd("scutil --get LocalHostName");
|
TdCmdPtr pCmd = taosOpenCmd("scutil --get LocalHostName");
|
||||||
tstrncpy(info.nodename, localHostName, sizeof(info.nodename));
|
tstrncpy(info.nodename, localHostName, sizeof(info.nodename));
|
||||||
|
|
||||||
return info;
|
return info;
|
||||||
#else
|
#else
|
||||||
SysNameInfo info = {0};
|
SysNameInfo info = {0};
|
||||||
|
|
||||||
struct utsname uts;
|
struct utsname uts;
|
||||||
if (!uname(&uts)) {
|
if (!uname(&uts)) {
|
||||||
tstrncpy(info.sysname, uts.sysname, sizeof(info.sysname));
|
tstrncpy(info.sysname, uts.sysname, sizeof(info.sysname));
|
||||||
|
@ -1269,7 +1287,7 @@ bool taosCheckCurrentInDll() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _TD_DARWIN_64
|
#ifdef _TD_DARWIN_64
|
||||||
int taosGetMaclocalhostnameByCommand(char *hostname, size_t maxLen) {
|
int32_t taosGetMaclocalhostnameByCommand(char *hostname, size_t maxLen) {
|
||||||
TdCmdPtr pCmd = taosOpenCmd("scutil --get LocalHostName");
|
TdCmdPtr pCmd = taosOpenCmd("scutil --get LocalHostName");
|
||||||
if (pCmd != NULL) {
|
if (pCmd != NULL) {
|
||||||
if (taosGetsCmd(pCmd, maxLen - 1, hostname) > 0) {
|
if (taosGetsCmd(pCmd, maxLen - 1, hostname) > 0) {
|
||||||
|
@ -1281,10 +1299,10 @@ int taosGetMaclocalhostnameByCommand(char *hostname, size_t maxLen) {
|
||||||
}
|
}
|
||||||
taosCloseCmd(&pCmd);
|
taosCloseCmd(&pCmd);
|
||||||
}
|
}
|
||||||
return -1;
|
return TAOS_SYSTEM_ERROR(errno);
|
||||||
}
|
}
|
||||||
|
|
||||||
int getMacLocalHostNameBySCD(char *hostname, size_t maxLen) {
|
int32_t getMacLocalHostNameBySCD(char *hostname, size_t maxLen) {
|
||||||
SCDynamicStoreRef store = SCDynamicStoreCreate(NULL, CFSTR(""), NULL, NULL);
|
SCDynamicStoreRef store = SCDynamicStoreCreate(NULL, CFSTR(""), NULL, NULL);
|
||||||
CFStringRef hostname_cfstr = SCDynamicStoreCopyLocalHostName(store);
|
CFStringRef hostname_cfstr = SCDynamicStoreCopyLocalHostName(store);
|
||||||
if (hostname_cfstr != NULL) {
|
if (hostname_cfstr != NULL) {
|
||||||
|
@ -1298,7 +1316,7 @@ int getMacLocalHostNameBySCD(char *hostname, size_t maxLen) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int taosGetlocalhostname(char *hostname, size_t maxLen) {
|
int32_t taosGetlocalhostname(char *hostname, size_t maxLen) {
|
||||||
#ifdef _TD_DARWIN_64
|
#ifdef _TD_DARWIN_64
|
||||||
int res = getMacLocalHostNameBySCD(hostname, maxLen);
|
int res = getMacLocalHostNameBySCD(hostname, maxLen);
|
||||||
if (res != 0) {
|
if (res != 0) {
|
||||||
|
|
|
@ -31,7 +31,7 @@ void WINAPI windowsServiceCtrlHandle(DWORD request) {
|
||||||
ServiceStatus.dwCurrentState = SERVICE_STOP_PENDING;
|
ServiceStatus.dwCurrentState = SERVICE_STOP_PENDING;
|
||||||
if (!SetServiceStatus(hServiceStatusHandle, &ServiceStatus)) {
|
if (!SetServiceStatus(hServiceStatusHandle, &ServiceStatus)) {
|
||||||
DWORD nError = GetLastError();
|
DWORD nError = GetLastError();
|
||||||
printf("failed to send stopped status to windows service: %d", nError);
|
fprintf(stderr, "failed to send stopped status to windows service: %d", nError);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -50,19 +50,19 @@ void WINAPI mainWindowsService(int argc, char** argv) {
|
||||||
hServiceStatusHandle = RegisterServiceCtrlHandler("taosd", &windowsServiceCtrlHandle);
|
hServiceStatusHandle = RegisterServiceCtrlHandler("taosd", &windowsServiceCtrlHandle);
|
||||||
if (hServiceStatusHandle == 0) {
|
if (hServiceStatusHandle == 0) {
|
||||||
DWORD nError = GetLastError();
|
DWORD nError = GetLastError();
|
||||||
printf("failed to register windows service ctrl handler: %d", nError);
|
fprintf(stderr, "failed to register windows service ctrl handler: %d", nError);
|
||||||
}
|
}
|
||||||
|
|
||||||
ServiceStatus.dwCurrentState = SERVICE_RUNNING;
|
ServiceStatus.dwCurrentState = SERVICE_RUNNING;
|
||||||
if (SetServiceStatus(hServiceStatusHandle, &ServiceStatus)) {
|
if (SetServiceStatus(hServiceStatusHandle, &ServiceStatus)) {
|
||||||
DWORD nError = GetLastError();
|
DWORD nError = GetLastError();
|
||||||
printf("failed to send running status to windows service: %d", nError);
|
fprintf(stderr, "failed to send running status to windows service: %d", nError);
|
||||||
}
|
}
|
||||||
if (mainWindowsFunc != NULL) mainWindowsFunc(argc, argv);
|
if (mainWindowsFunc != NULL) mainWindowsFunc(argc, argv);
|
||||||
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
|
ServiceStatus.dwCurrentState = SERVICE_STOPPED;
|
||||||
if (!SetServiceStatus(hServiceStatusHandle, &ServiceStatus)) {
|
if (!SetServiceStatus(hServiceStatusHandle, &ServiceStatus)) {
|
||||||
DWORD nError = GetLastError();
|
DWORD nError = GetLastError();
|
||||||
printf("failed to send stopped status to windows service: %d", nError);
|
fprintf(stderr, "failed to send stopped status to windows service: %d", nError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void stratWindowsService(MainWindows mainWindows) {
|
void stratWindowsService(MainWindows mainWindows) {
|
||||||
|
@ -140,17 +140,27 @@ void taosCloseDll(void* handle) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int taosSetConsoleEcho(bool on) {
|
int32_t taosSetConsoleEcho(bool on) {
|
||||||
#if defined(WINDOWS)
|
#if defined(WINDOWS)
|
||||||
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
|
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
|
||||||
|
if (hStdin == INVALID_HANDLE_VALUE) {
|
||||||
|
terrno = TAOS_SYSTEM_WINAPI_ERROR(GetLastError());
|
||||||
|
return terrno;
|
||||||
|
}
|
||||||
DWORD mode = 0;
|
DWORD mode = 0;
|
||||||
GetConsoleMode(hStdin, &mode);
|
if(!GetConsoleMode(hStdin, &mode)){
|
||||||
|
terrno = TAOS_SYSTEM_WINAPI_ERROR(GetLastError());
|
||||||
|
return terrno;
|
||||||
|
}
|
||||||
if (on) {
|
if (on) {
|
||||||
mode |= ENABLE_ECHO_INPUT;
|
mode |= ENABLE_ECHO_INPUT;
|
||||||
} else {
|
} else {
|
||||||
mode &= ~ENABLE_ECHO_INPUT;
|
mode &= ~ENABLE_ECHO_INPUT;
|
||||||
}
|
}
|
||||||
SetConsoleMode(hStdin, mode);
|
if(!SetConsoleMode(hStdin, mode)) {
|
||||||
|
terrno = TAOS_SYSTEM_WINAPI_ERROR(GetLastError());
|
||||||
|
return terrno;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
#else
|
#else
|
||||||
|
|
Loading…
Reference in New Issue