[TD-992]
This commit is contained in:
parent
a0c3a00780
commit
8089a23c27
|
@ -21,7 +21,7 @@ extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _TD_DARWIN_64
|
#ifdef _TD_DARWIN_64
|
||||||
#include "osDarwin64.h"
|
#include "osDarwin.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _TD_LINUX_64
|
#ifdef _TD_LINUX_64
|
||||||
|
@ -36,12 +36,8 @@ extern "C" {
|
||||||
#include "osAlpine.h"
|
#include "osAlpine.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _TD_WINDOWS_64
|
#if defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32)
|
||||||
#include "osWindows64.h"
|
#include "osWindows.h"
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef _TD_WINDOWS_32
|
|
||||||
#include "osWindows32.h"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "osAtomic.h"
|
#include "osAtomic.h"
|
||||||
|
|
|
@ -71,21 +71,21 @@ extern "C" {
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <sys/utsname.h>
|
#include <sys/utsname.h>
|
||||||
|
|
||||||
#define TAOS_OS_FUNC_FILE_TSENDIFLE
|
#define TAOS_OS_FUNC_FILE_SENDIFLE
|
||||||
#define taosFSendFile(outfile, infile, offset, count) taosFSendFileImp(outfile, infile, offset, size)
|
#define taosFSendFile(outfile, infile, offset, count) taosFSendFileImp(outfile, infile, offset, size)
|
||||||
#define taosTSendFile(dfd, sfd, offset, size) taosTSendFileImp(dfd, sfd, offset, size)
|
#define taosTSendFile(dfd, sfd, offset, size) taosTSendFileImp(dfd, sfd, offset, size)
|
||||||
|
|
||||||
#define TAOS_OS_FUNC_SEMPHONE
|
#define TAOS_OS_FUNC_SEMPHONE
|
||||||
#define tsem_t dispatch_semaphore_t
|
#define tsem_t dispatch_semaphore_t
|
||||||
int tsem_init(dispatch_semaphore_t *sem, int pshared, unsigned int value);
|
int tsem_init(dispatch_semaphore_t *sem, int pshared, unsigned int value);
|
||||||
int tsem_wait(dispatch_semaphore_t *sem);
|
int tsem_wait(dispatch_semaphore_t *sem);
|
||||||
int tsem_post(dispatch_semaphore_t *sem);
|
int tsem_post(dispatch_semaphore_t *sem);
|
||||||
int tsem_destroy(dispatch_semaphore_t *sem);
|
int tsem_destroy(dispatch_semaphore_t *sem);
|
||||||
|
|
||||||
#define TAOS_OS_FUNC_SOCKET_SETSOCKETOPT
|
#define TAOS_OS_FUNC_SOCKET_SETSOCKETOPT
|
||||||
|
#define TAOS_OS_FUNC_STRING_STR2INT64
|
||||||
#define TAOS_OS_FUNC_SYSINFO
|
#define TAOS_OS_FUNC_SYSINFO
|
||||||
#define TAOS_OS_FUNC_TIMER
|
#define TAOS_OS_FUNC_TIMER
|
||||||
#define TAOS_OS_FUNC_STRING_STR2INT64
|
|
||||||
|
|
||||||
// specific
|
// specific
|
||||||
#define htobe64 htonll
|
#define htobe64 htonll
|
|
@ -26,7 +26,7 @@ ssize_t taosTWriteImp(int fd, void *buf, size_t count);
|
||||||
ssize_t taosTSendFileImp(int dfd, int sfd, off_t *offset, size_t size);
|
ssize_t taosTSendFileImp(int dfd, int sfd, off_t *offset, size_t size);
|
||||||
int taosFSendFileImp(FILE* out_file, FILE* in_file, int64_t* offset, int32_t count);
|
int taosFSendFileImp(FILE* out_file, FILE* in_file, int64_t* offset, int32_t count);
|
||||||
|
|
||||||
#ifndef TAOS_OS_FUNC_FILE_TSENDIFLE
|
#ifndef TAOS_OS_FUNC_FILE_SENDIFLE
|
||||||
#define taosTSendFile(dfd, sfd, offset, size) taosTSendFileImp(dfd, sfd, offset, size)
|
#define taosTSendFile(dfd, sfd, offset, size) taosTSendFileImp(dfd, sfd, offset, size)
|
||||||
#define taosFSendFile(outfile, infile, offset, count) taosTSendFileImp(fileno(outfile), fileno(infile), offset, size)
|
#define taosFSendFile(outfile, infile, offset, count) taosTSendFileImp(fileno(outfile), fileno(infile), offset, size)
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -28,7 +28,7 @@ extern "C" {
|
||||||
#define tsem_destroy sem_destroy
|
#define tsem_destroy sem_destroy
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// TAOS_OS_FUNC_PTHREAD
|
// TAOS_OS_FUNC_SEMPHONE_PTHREAD
|
||||||
bool taosCheckPthreadValid(pthread_t thread);
|
bool taosCheckPthreadValid(pthread_t thread);
|
||||||
int64_t taosGetPthreadId();
|
int64_t taosGetPthreadId();
|
||||||
|
|
||||||
|
|
|
@ -20,17 +20,19 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define taosSend(sockfd, buf, len, flags) send(sockfd, buf, len, flags)
|
#ifndef TAOS_OS_FUNC_SOCKET_OP
|
||||||
#define taosSendto(sockfd, buf, len, flags, dest_addr, addrlen) sendto(sockfd, buf, len, flags, dest_addr, addrlen)
|
#define taosSend(sockfd, buf, len, flags) send(sockfd, buf, len, flags)
|
||||||
#define taosReadSocket(fd, buf, len) read(fd, buf, len)
|
#define taosSendto(sockfd, buf, len, flags, dest_addr, addrlen) sendto(sockfd, buf, len, flags, dest_addr, addrlen)
|
||||||
#define taosWriteSocket(fd, buf, len) write(fd, buf, len)
|
#define taosReadSocket(fd, buf, len) read(fd, buf, len)
|
||||||
#define taosCloseSocket(x) \
|
#define taosWriteSocket(fd, buf, len) write(fd, buf, len)
|
||||||
{ \
|
#define taosCloseSocket(x) \
|
||||||
if (FD_VALID(x)) { \
|
{ \
|
||||||
close(x); \
|
if (FD_VALID(x)) { \
|
||||||
x = FD_INITIALIZER; \
|
close(x); \
|
||||||
} \
|
x = FD_INITIALIZER; \
|
||||||
}
|
} \
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#define taosClose(x) taosCloseSocket(x)
|
#define taosClose(x) taosCloseSocket(x)
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,8 @@ extern "C" {
|
||||||
|
|
||||||
#ifndef TAOS_OS_FUNC_STRING_GETLINE
|
#ifndef TAOS_OS_FUNC_STRING_GETLINE
|
||||||
#define taosGetlineImp(lineptr, n, stream) getline(lineptr, n , stream)
|
#define taosGetlineImp(lineptr, n, stream) getline(lineptr, n , stream)
|
||||||
|
#else
|
||||||
|
int taosGetlineImp(char **lineptr, size_t *n, FILE *stream);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef TAOS_OS_FUNC_STRING_WCHAR
|
#ifndef TAOS_OS_FUNC_STRING_WCHAR
|
||||||
|
|
|
@ -48,16 +48,7 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define TAOS_OS_FUNC_STRING_WCHAR
|
#define TAOS_OS_FUNC_ATOMIC
|
||||||
#define TAOS_OS_FUNC_FILE
|
|
||||||
#define TAOS_OS_FUNC_SLEEP
|
|
||||||
#define TAOS_OS_FUNC_TIMER
|
|
||||||
#define TAOS_OS_FUNC_SOCKET
|
|
||||||
#define TAOS_OS_FUNC_PTHREAD
|
|
||||||
|
|
||||||
#define TAOS_OS_FUNC_FILEOP
|
|
||||||
#define taosFSendFile(outfile, infile, offset, count) taosFSendFileImp(outfile, infile, offset, size)
|
|
||||||
#define taosTSendFile(dfd, sfd, offset, size) taosTSendFileImp(dfd, sfd, offset, size)
|
|
||||||
|
|
||||||
#define TAOS_OS_FUNC_LZ4
|
#define TAOS_OS_FUNC_LZ4
|
||||||
int32_t BUILDIN_CLZL(uint64_t val);
|
int32_t BUILDIN_CLZL(uint64_t val);
|
||||||
|
@ -65,13 +56,13 @@ extern "C" {
|
||||||
int32_t BUILDIN_CTZL(uint64_t val);
|
int32_t BUILDIN_CTZL(uint64_t val);
|
||||||
int32_t BUILDIN_CTZ(uint32_t val);
|
int32_t BUILDIN_CTZ(uint32_t val);
|
||||||
|
|
||||||
#define TAOS_OS_FUNC_STRING_STR2INT64
|
#define TAOS_OS_FUNC_DIR
|
||||||
#ifdef _TD_GO_DLL_
|
|
||||||
int64_t tsosStr2int64(char *str);
|
#define TAOS_OS_FUNC_FILE
|
||||||
uint64_t htonll(uint64_t val);
|
#define TAOS_OS_FUNC_FILE_SENDIFLE
|
||||||
#else
|
#define taosFSendFile(outfile, infile, offset, count) taosFSendFileImp(outfile, infile, offset, size)
|
||||||
#define tsosStr2int64 _atoi64
|
#define taosTSendFile(dfd, sfd, offset, size) taosTSendFileImp(dfd, sfd, offset, size)
|
||||||
#endif
|
#define TAOS_OS_FUNC_FILE_GETTMPFILEPATH
|
||||||
|
|
||||||
#define TAOS_OS_FUNC_MATH
|
#define TAOS_OS_FUNC_MATH
|
||||||
#define SWAP(a, b, c) \
|
#define SWAP(a, b, c) \
|
||||||
|
@ -80,26 +71,60 @@ extern "C" {
|
||||||
(a) = (c)(b); \
|
(a) = (c)(b); \
|
||||||
(b) = __tmp; \
|
(b) = __tmp; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define MAX(a,b) (((a)>(b))?(a):(b))
|
#define MAX(a,b) (((a)>(b))?(a):(b))
|
||||||
#define MIN(a,b) (((a)<(b))?(a):(b))
|
#define MIN(a,b) (((a)<(b))?(a):(b))
|
||||||
|
|
||||||
#define TAOS_OS_FUNC_NETWORK
|
#define TAOS_OS_FUNC_SEMPHONE_PTHREAD
|
||||||
|
|
||||||
|
#define TAOS_OS_FUNC_SOCKET
|
||||||
|
#define TAOS_OS_FUNC_SOCKET_SETSOCKETOPT
|
||||||
|
#define TAOS_OS_FUNC_SOCKET_OP
|
||||||
#define taosSend(sockfd, buf, len, flags) send(sockfd, buf, len, flags)
|
#define taosSend(sockfd, buf, len, flags) send(sockfd, buf, len, flags)
|
||||||
#define taosSendto(sockfd, buf, len, flags, dest_addr, addrlen) sendto(sockfd, buf, len, flags, dest_addr, addrlen)
|
#define taosSendto(sockfd, buf, len, flags, dest_addr, addrlen) sendto(sockfd, buf, len, flags, dest_addr, addrlen)
|
||||||
#define taosWriteSocket(fd, buf, len) send(fd, buf, len, 0)
|
#define taosWriteSocket(fd, buf, len) send(fd, buf, len, 0)
|
||||||
#define taosReadSocket(fd, buf, len) recv(fd, buf, len, 0)
|
#define taosReadSocket(fd, buf, len) recv(fd, buf, len, 0)
|
||||||
#define taosCloseSocket(fd) closesocket(fd)
|
#define taosCloseSocket(fd) closesocket(fd)
|
||||||
|
|
||||||
#define TAOS_OS_DEF_TIME
|
#define TAOS_OS_FUNC_STRING_WCHAR
|
||||||
|
#define TAOS_OS_FUNC_STRING_GETLINE
|
||||||
|
#define TAOS_OS_FUNC_STRING_STR2INT64
|
||||||
|
#ifdef _TD_GO_DLL_
|
||||||
|
int64_t tsosStr2int64(char *str);
|
||||||
|
uint64_t htonll(uint64_t val);
|
||||||
|
#else
|
||||||
|
#define tsosStr2int64 _atoi64
|
||||||
|
#endif
|
||||||
|
#define TAOS_OS_FUNC_STRING_STRDUP
|
||||||
|
#define taosStrdupImp(str) _strdup(str)
|
||||||
|
#define taosStrndupImp(str, size) _strndup(str, size)
|
||||||
|
|
||||||
|
#define TAOS_OS_FUNC_SYSINFO
|
||||||
|
|
||||||
|
#define TAOS_OS_FUNC_TIME_DEF
|
||||||
#ifdef _TD_GO_DLL_
|
#ifdef _TD_GO_DLL_
|
||||||
#define MILLISECOND_PER_SECOND (1000LL)
|
#define MILLISECOND_PER_SECOND (1000LL)
|
||||||
#else
|
#else
|
||||||
#define MILLISECOND_PER_SECOND (1000i64)
|
#define MILLISECOND_PER_SECOND (1000i64)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define TAOS_OS_FUNC_TIMER_SLEEP
|
||||||
|
#define TAOS_OS_FUNC_TIMER
|
||||||
|
|
||||||
|
// specific
|
||||||
typedef int (*__compar_fn_t)(const void *, const void *);
|
typedef int (*__compar_fn_t)(const void *, const void *);
|
||||||
int getline(char **lineptr, size_t *n, FILE *stream);
|
#define ssize_t int
|
||||||
|
#define bzero(ptr, size) memset((ptr), 0, (size))
|
||||||
|
#define mkdir(pathname, mode) _mkdir(pathname)
|
||||||
|
#define strcasecmp _stricmp
|
||||||
|
#define strncasecmp _strnicmp
|
||||||
|
#define wcsncasecmp _wcsnicmp
|
||||||
|
#define strtok_r strtok_s
|
||||||
|
#define snprintf _snprintf
|
||||||
|
#define in_addr_t unsigned long
|
||||||
|
#define socklen_t int
|
||||||
|
#define htobe64 htonll
|
||||||
|
#define twrite write
|
||||||
|
|
||||||
int gettimeofday(struct timeval *tv, struct timezone *tz);
|
int gettimeofday(struct timeval *tv, struct timezone *tz);
|
||||||
struct tm *localtime_r(const time_t *timep, struct tm *result);
|
struct tm *localtime_r(const time_t *timep, struct tm *result);
|
||||||
char * strptime(const char *buf, const char *fmt, struct tm *tm);
|
char * strptime(const char *buf, const char *fmt, struct tm *tm);
|
||||||
|
@ -109,9 +134,6 @@ int flock(int fd, int option);
|
||||||
int fsync(int filedes);
|
int fsync(int filedes);
|
||||||
char * strndup(const char *s, size_t n);
|
char * strndup(const char *s, size_t n);
|
||||||
|
|
||||||
#define strdup _strdup
|
|
||||||
#define ssize_t int
|
|
||||||
|
|
||||||
// for function open in stat.h
|
// for function open in stat.h
|
||||||
#define S_IRWXU _S_IREAD
|
#define S_IRWXU _S_IREAD
|
||||||
#define S_IRWXG _S_IWRITE
|
#define S_IRWXG _S_IWRITE
|
||||||
|
@ -135,19 +157,6 @@ char * strndup(const char *s, size_t n);
|
||||||
#define LOCK_NB 2
|
#define LOCK_NB 2
|
||||||
#define LOCK_UN 3
|
#define LOCK_UN 3
|
||||||
|
|
||||||
#define bzero(ptr, size) memset((ptr), 0, (size))
|
|
||||||
#define mkdir(pathname, mode) _mkdir(pathname)
|
|
||||||
#define strcasecmp _stricmp
|
|
||||||
#define strncasecmp _strnicmp
|
|
||||||
#define wcsncasecmp _wcsnicmp
|
|
||||||
#define strtok_r strtok_s
|
|
||||||
|
|
||||||
#define snprintf _snprintf
|
|
||||||
#define in_addr_t unsigned long
|
|
||||||
#define socklen_t int
|
|
||||||
#define htobe64 htonll
|
|
||||||
#define twrite write
|
|
||||||
|
|
||||||
#ifndef PATH_MAX
|
#ifndef PATH_MAX
|
||||||
#define PATH_MAX 256
|
#define PATH_MAX 256
|
||||||
#endif
|
#endif
|
|
@ -1,54 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef TDENGINE_PLATFORM_WINDOWS32_H
|
|
||||||
#define TDENGINE_PLATFORM_WINDOWS32_H
|
|
||||||
|
|
||||||
#include <assert.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <direct.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <float.h>
|
|
||||||
#include <locale.h>
|
|
||||||
#include <intrin.h>
|
|
||||||
#include <io.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <pthread.h>
|
|
||||||
#include <semaphore.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stdbool.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <inttypes.h>
|
|
||||||
#include "winsock2.h"
|
|
||||||
#include <WS2tcpip.h>
|
|
||||||
#include <winbase.h>
|
|
||||||
#include <Winsock2.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
|
|
@ -109,7 +109,7 @@ ssize_t taosTWriteImp(int fd, void *buf, size_t n) {
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef TAOS_OS_FUNC_FILE_TSENDIFLE
|
#ifndef TAOS_OS_FUNC_FILE_SENDIFLE
|
||||||
ssize_t taosTSendFileImp(int dfd, int sfd, off_t *offset, size_t size) {
|
ssize_t taosTSendFileImp(int dfd, int sfd, off_t *offset, size_t size) {
|
||||||
size_t leftbytes = size;
|
size_t leftbytes = size;
|
||||||
ssize_t sentbytes;
|
ssize_t sentbytes;
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
#define _DEFAULT_SOURCE
|
#define _DEFAULT_SOURCE
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
|
|
||||||
#ifndef TAOS_OS_FUNC_PTHREAD
|
#ifndef TAOS_OS_FUNC_SEMPHONE_PTHREAD
|
||||||
|
|
||||||
bool taosCheckPthreadValid(pthread_t thread) { return thread != 0; }
|
bool taosCheckPthreadValid(pthread_t thread) { return thread != 0; }
|
||||||
int64_t taosGetPthreadId() { return (int64_t)pthread_self(); }
|
int64_t taosGetPthreadId() { return (int64_t)pthread_self(); }
|
||||||
|
|
|
@ -19,20 +19,16 @@
|
||||||
#include "taosdef.h"
|
#include "taosdef.h"
|
||||||
|
|
||||||
#ifndef TAOS_OS_FUNC_STRING_STR2INT64
|
#ifndef TAOS_OS_FUNC_STRING_STR2INT64
|
||||||
|
|
||||||
int64_t tsosStr2int64(char *str) {
|
int64_t tsosStr2int64(char *str) {
|
||||||
char *endptr = NULL;
|
char *endptr = NULL;
|
||||||
return strtoll(str, &endptr, 10);
|
return strtoll(str, &endptr, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef TAOS_OS_FUNC_STRING_WCHAR
|
#ifndef TAOS_OS_FUNC_STRING_WCHAR
|
||||||
|
int tasoUcs4Compare(void *f1_ucs4, void *f2_ucs4, int bytes) {
|
||||||
int tasoUcs4Compare(void* f1_ucs4, void *f2_ucs4, int bytes) {
|
|
||||||
return wcsncmp((wchar_t *)f1_ucs4, (wchar_t *)f2_ucs4, bytes / TSDB_NCHAR_SIZE);
|
return wcsncmp((wchar_t *)f1_ucs4, (wchar_t *)f2_ucs4, bytes / TSDB_NCHAR_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_LIBICONV
|
#ifdef USE_LIBICONV
|
||||||
|
|
|
@ -102,7 +102,7 @@ void taosUninitTimer() {
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef TAOS_OS_FUNC_SLEEP
|
#ifndef TAOS_OS_FUNC_TIMER_SLEEP
|
||||||
/*
|
/*
|
||||||
to make taosMsleep work,
|
to make taosMsleep work,
|
||||||
signal SIGALRM shall be blocked in the calling thread,
|
signal SIGALRM shall be blocked in the calling thread,
|
||||||
|
|
|
@ -15,11 +15,28 @@
|
||||||
|
|
||||||
#define _DEFAULT_SOURCE
|
#define _DEFAULT_SOURCE
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
#include "taosdef.h"
|
|
||||||
#include "tglobal.h"
|
void taosGetTmpfilePath(const char *fileNamePrefix, char *dstPath) {
|
||||||
#include "ttimer.h"
|
const char* tdengineTmpFileNamePrefix = "tdengine-";
|
||||||
#include "tulog.h"
|
char tmpPath[PATH_MAX];
|
||||||
#include "tutil.h"
|
|
||||||
|
char *tmpDir = getenv("tmp");
|
||||||
|
if (tmpDir == NULL) {
|
||||||
|
tmpDir = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
strcpy(tmpPath, tmpDir);
|
||||||
|
strcat(tmpPath, tdengineTmpFileNamePrefix);
|
||||||
|
if (strlen(tmpPath) + strlen(fileNamePrefix) + strlen("-%d-%s") < PATH_MAX) {
|
||||||
|
strcat(tmpPath, fileNamePrefix);
|
||||||
|
strcat(tmpPath, "-%d-%s");
|
||||||
|
}
|
||||||
|
|
||||||
|
char rand[8] = {0};
|
||||||
|
taosRandStr(rand, tListLen(rand) - 1);
|
||||||
|
snprintf(dstPath, PATH_MAX, tmpPath, getpid(), rand);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#define _SEND_FILE_STEP_ 1000
|
#define _SEND_FILE_STEP_ 1000
|
||||||
|
|
|
@ -0,0 +1,124 @@
|
||||||
|
/* getline.c -- Replacement for GNU C library function getline
|
||||||
|
|
||||||
|
Copyright (C) 1993 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details. */
|
||||||
|
|
||||||
|
/* Written by Jan Brittenson, bson@gnu.ai.mit.edu. */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#if STDC_HEADERS
|
||||||
|
#include <stdlib.h>
|
||||||
|
#else
|
||||||
|
char *malloc(), *realloc();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Always add at least this many bytes when extending the buffer. */
|
||||||
|
#define MIN_CHUNK 64
|
||||||
|
|
||||||
|
/* Read up to (and including) a TERMINATOR from STREAM into *LINEPTR
|
||||||
|
+ OFFSET (and null-terminate it). *LINEPTR is a pointer returned from
|
||||||
|
malloc (or NULL), pointing to *N characters of space. It is realloc'd
|
||||||
|
as necessary. Return the number of characters read (not including the
|
||||||
|
null terminator), or -1 on error or EOF. On a -1 return, the caller
|
||||||
|
should check feof(), if not then errno has been set to indicate
|
||||||
|
the error. */
|
||||||
|
|
||||||
|
int getstr(char **lineptr, size_t *n, FILE *stream, char terminator, int offset) {
|
||||||
|
int nchars_avail; /* Allocated but unused chars in *LINEPTR. */
|
||||||
|
char *read_pos; /* Where we're reading into *LINEPTR. */
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (!lineptr || !n || !stream) {
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!*lineptr) {
|
||||||
|
*n = MIN_CHUNK;
|
||||||
|
*lineptr = malloc(*n);
|
||||||
|
if (!*lineptr) {
|
||||||
|
errno = ENOMEM;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
nchars_avail = (int)(*n - offset);
|
||||||
|
read_pos = *lineptr + offset;
|
||||||
|
|
||||||
|
for (;;) {
|
||||||
|
int save_errno;
|
||||||
|
register int c = getc(stream);
|
||||||
|
|
||||||
|
save_errno = errno;
|
||||||
|
|
||||||
|
/* We always want at least one char left in the buffer, since we
|
||||||
|
always (unless we get an error while reading the first char)
|
||||||
|
NUL-terminate the line buffer. */
|
||||||
|
|
||||||
|
assert((*lineptr + *n) == (read_pos + nchars_avail));
|
||||||
|
if (nchars_avail < 2) {
|
||||||
|
if (*n > MIN_CHUNK)
|
||||||
|
*n *= 2;
|
||||||
|
else
|
||||||
|
*n += MIN_CHUNK;
|
||||||
|
|
||||||
|
nchars_avail = (int)(*n + *lineptr - read_pos);
|
||||||
|
*lineptr = realloc(*lineptr, *n);
|
||||||
|
if (!*lineptr) {
|
||||||
|
errno = ENOMEM;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
read_pos = *n - nchars_avail + *lineptr;
|
||||||
|
assert((*lineptr + *n) == (read_pos + nchars_avail));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ferror(stream)) {
|
||||||
|
/* Might like to return partial line, but there is no
|
||||||
|
place for us to store errno. And we don't want to just
|
||||||
|
lose errno. */
|
||||||
|
errno = save_errno;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (c == EOF) {
|
||||||
|
/* Return partial line, if any. */
|
||||||
|
if (read_pos == *lineptr)
|
||||||
|
return -1;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
*read_pos++ = c;
|
||||||
|
nchars_avail--;
|
||||||
|
|
||||||
|
if (c == terminator) /* Return the line. */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Done - NUL terminate and return the number of chars read. */
|
||||||
|
*read_pos = '\0';
|
||||||
|
|
||||||
|
ret = (int)(read_pos - (*lineptr + offset));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int taosGetlineImp(char **lineptr, size_t *n, FILE *stream) {
|
||||||
|
return getstr(lineptr, n, stream, '\n', 0);
|
||||||
|
}
|
|
@ -27,8 +27,7 @@ int64_t tsosStr2int64(char *str) {
|
||||||
return strtoll(str, &endptr, 10);
|
return strtoll(str, &endptr, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t htonll(uint64_t val)
|
uint64_t htonll(uint64_t val) {
|
||||||
{
|
return (((uint64_t) htonl(val)) << 32) + htonl(val >> 32);
|
||||||
return (((uint64_t) htonl(val)) << 32) + htonl(val >> 32);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
|
@ -21,7 +21,6 @@
|
||||||
#include "tulog.h"
|
#include "tulog.h"
|
||||||
#include "tutil.h"
|
#include "tutil.h"
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get next token from string *stringp, where tokens are possibly-empty
|
* Get next token from string *stringp, where tokens are possibly-empty
|
||||||
* strings separated by characters from delim.
|
* strings separated by characters from delim.
|
||||||
|
@ -67,29 +66,6 @@ char *getpass(const char *prefix) {
|
||||||
return passwd;
|
return passwd;
|
||||||
}
|
}
|
||||||
|
|
||||||
int flock(int fd, int option) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int fsync(int filedes) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sigaction(int sig, struct sigaction *d, void *p) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int wordexp(const char *words, wordexp_t *pwordexp, int flags) {
|
|
||||||
pwordexp->we_offs = 0;
|
|
||||||
pwordexp->we_wordc = 1;
|
|
||||||
pwordexp->we_wordv = (char **)(pwordexp->wordPos);
|
|
||||||
pwordexp->we_wordv[0] = (char *)words;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void wordfree(wordexp_t *pwordexp) {}
|
|
||||||
|
|
||||||
|
|
||||||
char *strndup(const char *s, size_t n) {
|
char *strndup(const char *s, size_t n) {
|
||||||
int len = strlen(s);
|
int len = strlen(s);
|
||||||
if (len >= n) {
|
if (len >= n) {
|
||||||
|
@ -102,16 +78,54 @@ char *strndup(const char *s, size_t n) {
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
void taosSetCoreDump() {}
|
size_t twcslen(const wchar_t *wcs) {
|
||||||
|
int *wstr = (int *)wcs;
|
||||||
|
if (NULL == wstr) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef _TD_GO_DLL_
|
size_t n = 0;
|
||||||
int64_t tsosStr2int64(char *str) {
|
while (1) {
|
||||||
char *endptr = NULL;
|
if (0 == *wstr++) {
|
||||||
return strtoll(str, &endptr, 10);
|
break;
|
||||||
|
}
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t htonll(uint64_t val)
|
int tasoUcs4Compare(void *f1_ucs4, void *f2_ucs4, int bytes) {
|
||||||
{
|
for (int i = 0; i < bytes; ++i) {
|
||||||
return (((uint64_t) htonl(val)) << 32) + htonl(val >> 32);
|
int32_t f1 = *(int32_t *)((char *)f1_ucs4 + i * 4);
|
||||||
}
|
int32_t f2 = *(int32_t *)((char *)f2_ucs4 + i * 4);
|
||||||
|
|
||||||
|
if ((f1 == 0 && f2 != 0) || (f1 != 0 && f2 == 0)) {
|
||||||
|
return f1 - f2;
|
||||||
|
} else if (f1 == 0 && f2 == 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (f1 != f2) {
|
||||||
|
return f1 - f2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
int32_t ucs4_max_len = bytes + 4;
|
||||||
|
char *f1_mbs = calloc(bytes, 1);
|
||||||
|
char *f2_mbs = calloc(bytes, 1);
|
||||||
|
if (taosUcs4ToMbs(f1_ucs4, ucs4_max_len, f1_mbs) < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (taosUcs4ToMbs(f2_ucs4, ucs4_max_len, f2_mbs) < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
int32_t ret = strcmp(f1_mbs, f2_mbs);
|
||||||
|
free(f1_mbs);
|
||||||
|
free(f2_mbs);
|
||||||
|
return ret;
|
||||||
#endif
|
#endif
|
||||||
|
}
|
|
@ -114,3 +114,5 @@ int fsync(int filedes) {
|
||||||
int sigaction(int sig, struct sigaction *d, void *p) {
|
int sigaction(int sig, struct sigaction *d, void *p) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void taosSetCoreDump() {}
|
|
@ -1,23 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define _DEFAULT_SOURCE
|
|
||||||
#include "os.h"
|
|
||||||
#include "tconfig.h"
|
|
||||||
#include "tglobal.h"
|
|
||||||
#include "tulog.h"
|
|
||||||
#include "tsystem.h"
|
|
||||||
|
|
||||||
void taosSetCoreDump() {}
|
|
|
@ -1,38 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define _DEFAULT_SOURCE
|
|
||||||
#include "os.h"
|
|
||||||
|
|
||||||
void taosGetTmpfilePath(const char *fileNamePrefix, char *dstPath) {
|
|
||||||
const char* tdengineTmpFileNamePrefix = "tdengine-";
|
|
||||||
char tmpPath[PATH_MAX];
|
|
||||||
|
|
||||||
char *tmpDir = getenv("tmp");
|
|
||||||
if (tmpDir == NULL) {
|
|
||||||
tmpDir = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
strcpy(tmpPath, tmpDir);
|
|
||||||
strcat(tmpPath, tdengineTmpFileNamePrefix);
|
|
||||||
if (strlen(tmpPath) + strlen(fileNamePrefix) + strlen("-%d-%s") < PATH_MAX) {
|
|
||||||
strcat(tmpPath, fileNamePrefix);
|
|
||||||
strcat(tmpPath, "-%d-%s");
|
|
||||||
}
|
|
||||||
|
|
||||||
char rand[8] = {0};
|
|
||||||
taosRandStr(rand, tListLen(rand) - 1);
|
|
||||||
snprintf(dstPath, PATH_MAX, tmpPath, getpid(), rand);
|
|
||||||
}
|
|
|
@ -1,145 +0,0 @@
|
||||||
/* getline.c -- Replacement for GNU C library function getline
|
|
||||||
|
|
||||||
Copyright (C) 1993 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU General Public License as
|
|
||||||
published by the Free Software Foundation; either version 2 of the
|
|
||||||
License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful, but
|
|
||||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
General Public License for more details. */
|
|
||||||
|
|
||||||
/* Written by Jan Brittenson, bson@gnu.ai.mit.edu. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
#include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <assert.h>
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
#if STDC_HEADERS
|
|
||||||
#include <stdlib.h>
|
|
||||||
#else
|
|
||||||
char *malloc(), *realloc();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Always add at least this many bytes when extending the buffer. */
|
|
||||||
#define MIN_CHUNK 64
|
|
||||||
|
|
||||||
/* Read up to (and including) a TERMINATOR from STREAM into *LINEPTR
|
|
||||||
+ OFFSET (and null-terminate it). *LINEPTR is a pointer returned from
|
|
||||||
malloc (or NULL), pointing to *N characters of space. It is realloc'd
|
|
||||||
as necessary. Return the number of characters read (not including the
|
|
||||||
null terminator), or -1 on error or EOF. On a -1 return, the caller
|
|
||||||
should check feof(), if not then errno has been set to indicate
|
|
||||||
the error. */
|
|
||||||
|
|
||||||
int
|
|
||||||
getstr(lineptr, n, stream, terminator, offset)
|
|
||||||
char **lineptr;
|
|
||||||
size_t *n;
|
|
||||||
FILE *stream;
|
|
||||||
char terminator;
|
|
||||||
int offset;
|
|
||||||
{
|
|
||||||
int nchars_avail; /* Allocated but unused chars in *LINEPTR. */
|
|
||||||
char *read_pos; /* Where we're reading into *LINEPTR. */
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
if (!lineptr || !n || !stream)
|
|
||||||
{
|
|
||||||
errno = EINVAL;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!*lineptr)
|
|
||||||
{
|
|
||||||
*n = MIN_CHUNK;
|
|
||||||
*lineptr = malloc(*n);
|
|
||||||
if (!*lineptr)
|
|
||||||
{
|
|
||||||
errno = ENOMEM;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
nchars_avail = (int)(*n - offset);
|
|
||||||
read_pos = *lineptr + offset;
|
|
||||||
|
|
||||||
for (;;)
|
|
||||||
{
|
|
||||||
int save_errno;
|
|
||||||
register int c = getc(stream);
|
|
||||||
|
|
||||||
save_errno = errno;
|
|
||||||
|
|
||||||
/* We always want at least one char left in the buffer, since we
|
|
||||||
always (unless we get an error while reading the first char)
|
|
||||||
NUL-terminate the line buffer. */
|
|
||||||
|
|
||||||
assert((*lineptr + *n) == (read_pos + nchars_avail));
|
|
||||||
if (nchars_avail < 2)
|
|
||||||
{
|
|
||||||
if (*n > MIN_CHUNK)
|
|
||||||
*n *= 2;
|
|
||||||
else
|
|
||||||
*n += MIN_CHUNK;
|
|
||||||
|
|
||||||
nchars_avail = (int)(*n + *lineptr - read_pos);
|
|
||||||
*lineptr = realloc(*lineptr, *n);
|
|
||||||
if (!*lineptr)
|
|
||||||
{
|
|
||||||
errno = ENOMEM;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
read_pos = *n - nchars_avail + *lineptr;
|
|
||||||
assert((*lineptr + *n) == (read_pos + nchars_avail));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ferror(stream))
|
|
||||||
{
|
|
||||||
/* Might like to return partial line, but there is no
|
|
||||||
place for us to store errno. And we don't want to just
|
|
||||||
lose errno. */
|
|
||||||
errno = save_errno;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (c == EOF)
|
|
||||||
{
|
|
||||||
/* Return partial line, if any. */
|
|
||||||
if (read_pos == *lineptr)
|
|
||||||
return -1;
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
*read_pos++ = c;
|
|
||||||
nchars_avail--;
|
|
||||||
|
|
||||||
if (c == terminator)
|
|
||||||
/* Return the line. */
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Done - NUL terminate and return the number of chars read. */
|
|
||||||
*read_pos = '\0';
|
|
||||||
|
|
||||||
ret = (int)(read_pos - (*lineptr + offset));
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
getline(lineptr, n, stream)
|
|
||||||
char **lineptr;
|
|
||||||
size_t *n;
|
|
||||||
FILE *stream;
|
|
||||||
{
|
|
||||||
return getstr(lineptr, n, stream, '\n', 0);
|
|
||||||
}
|
|
|
@ -1,56 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <winsock2.h>
|
|
||||||
|
|
||||||
void taosFreeMsgHdr(void *hdr) {
|
|
||||||
WSAMSG *msgHdr = (WSAMSG *)hdr;
|
|
||||||
free(msgHdr->lpBuffers);
|
|
||||||
}
|
|
||||||
|
|
||||||
int taosMsgHdrSize(void *hdr) {
|
|
||||||
WSAMSG *msgHdr = (WSAMSG *)hdr;
|
|
||||||
return msgHdr->dwBufferCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
void taosSendMsgHdr(void *hdr, int fd) {
|
|
||||||
WSAMSG *msgHdr = (WSAMSG *)hdr;
|
|
||||||
DWORD len;
|
|
||||||
|
|
||||||
WSASendMsg(fd, msgHdr, 0, &len, 0, 0);
|
|
||||||
msgHdr->dwBufferCount = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void taosInitMsgHdr(void **hdr, void *dest, int maxPkts) {
|
|
||||||
WSAMSG *msgHdr = (WSAMSG *)malloc(sizeof(WSAMSG));
|
|
||||||
memset(msgHdr, 0, sizeof(WSAMSG));
|
|
||||||
*hdr = msgHdr;
|
|
||||||
|
|
||||||
// see ws2def.h
|
|
||||||
// the size of LPSOCKADDR and sockaddr_in * is same, so it's safe
|
|
||||||
msgHdr->name = (LPSOCKADDR)dest;
|
|
||||||
msgHdr->namelen = sizeof(struct sockaddr_in);
|
|
||||||
int size = sizeof(WSABUF) * maxPkts;
|
|
||||||
msgHdr->lpBuffers = (LPWSABUF)malloc(size);
|
|
||||||
memset(msgHdr->lpBuffers, 0, size);
|
|
||||||
msgHdr->dwBufferCount = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void taosSetMsgHdrData(void *hdr, char *data, int dataLen) {
|
|
||||||
WSAMSG *msgHdr = (WSAMSG *)hdr;
|
|
||||||
msgHdr->lpBuffers[msgHdr->dwBufferCount].buf = data;
|
|
||||||
msgHdr->lpBuffers[msgHdr->dwBufferCount].len = dataLen;
|
|
||||||
msgHdr->dwBufferCount++;
|
|
||||||
}
|
|
|
@ -1,92 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define _DEFAULT_SOURCE
|
|
||||||
#include "os.h"
|
|
||||||
#include "taosdef.h"
|
|
||||||
#include "tglobal.h"
|
|
||||||
#include "ttimer.h"
|
|
||||||
#include "tulog.h"
|
|
||||||
#include "tutil.h"
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get next token from string *stringp, where tokens are possibly-empty
|
|
||||||
* strings separated by characters from delim.
|
|
||||||
*
|
|
||||||
* Writes NULs into the string at *stringp to end tokens.
|
|
||||||
* delim need not remain constant from call to call.
|
|
||||||
* On return, *stringp points past the last NUL written (if there might
|
|
||||||
* be further tokens), or is NULL (if there are definitely no moretokens).
|
|
||||||
*
|
|
||||||
* If *stringp is NULL, strsep returns NULL.
|
|
||||||
*/
|
|
||||||
char *strsep(char **stringp, const char *delim) {
|
|
||||||
char *s;
|
|
||||||
const char *spanp;
|
|
||||||
int c, sc;
|
|
||||||
char *tok;
|
|
||||||
if ((s = *stringp) == NULL)
|
|
||||||
return (NULL);
|
|
||||||
for (tok = s;;) {
|
|
||||||
c = *s++;
|
|
||||||
spanp = delim;
|
|
||||||
do {
|
|
||||||
if ((sc = *spanp++) == c) {
|
|
||||||
if (c == 0)
|
|
||||||
s = NULL;
|
|
||||||
else
|
|
||||||
s[-1] = 0;
|
|
||||||
*stringp = s;
|
|
||||||
return (tok);
|
|
||||||
}
|
|
||||||
} while (sc != 0);
|
|
||||||
}
|
|
||||||
/* NOTREACHED */
|
|
||||||
}
|
|
||||||
|
|
||||||
char *getpass(const char *prefix) {
|
|
||||||
static char passwd[TSDB_KEY_LEN] = {0};
|
|
||||||
|
|
||||||
printf("%s", prefix);
|
|
||||||
scanf("%s", passwd);
|
|
||||||
|
|
||||||
char n = getchar();
|
|
||||||
return passwd;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *strndup(const char *s, size_t n) {
|
|
||||||
int len = strlen(s);
|
|
||||||
if (len >= n) {
|
|
||||||
len = n;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *r = calloc(len + 1, 1);
|
|
||||||
memcpy(r, s, len);
|
|
||||||
r[len] = 0;
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _TD_GO_DLL_
|
|
||||||
int64_t tsosStr2int64(char *str) {
|
|
||||||
char *endptr = NULL;
|
|
||||||
return strtoll(str, &endptr, 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64_t htonll(uint64_t val)
|
|
||||||
{
|
|
||||||
return (((uint64_t) htonl(val)) << 32) + htonl(val >> 32);
|
|
||||||
}
|
|
||||||
#endif
|
|
|
@ -1,71 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
|
|
||||||
*
|
|
||||||
* This program is free software: you can use, redistribute, and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License, version 3
|
|
||||||
* or later ("AGPL"), as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define _DEFAULT_SOURCE
|
|
||||||
#include "os.h"
|
|
||||||
#include "tglobal.h"
|
|
||||||
#include "tulog.h"
|
|
||||||
|
|
||||||
size_t twcslen(const wchar_t *wcs) {
|
|
||||||
int *wstr = (int *)wcs;
|
|
||||||
if (NULL == wstr) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t n = 0;
|
|
||||||
while (1) {
|
|
||||||
if (0 == *wstr++) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
n++;
|
|
||||||
}
|
|
||||||
|
|
||||||
return n;
|
|
||||||
}
|
|
||||||
|
|
||||||
int tasoUcs4Compare(void *f1_ucs4, void *f2_ucs4, int bytes) {
|
|
||||||
for (int i = 0; i < bytes; ++i) {
|
|
||||||
int32_t f1 = *(int32_t *)((char *)f1_ucs4 + i * 4);
|
|
||||||
int32_t f2 = *(int32_t *)((char *)f2_ucs4 + i * 4);
|
|
||||||
|
|
||||||
if ((f1 == 0 && f2 != 0) || (f1 != 0 && f2 == 0)) {
|
|
||||||
return f1 - f2;
|
|
||||||
} else if (f1 == 0 && f2 == 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (f1 != f2) {
|
|
||||||
return f1 - f2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
int32_t ucs4_max_len = bytes + 4;
|
|
||||||
char *f1_mbs = calloc(bytes, 1);
|
|
||||||
char *f2_mbs = calloc(bytes, 1);
|
|
||||||
if (taosUcs4ToMbs(f1_ucs4, ucs4_max_len, f1_mbs) < 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (taosUcs4ToMbs(f2_ucs4, ucs4_max_len, f2_mbs) < 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
int32_t ret = strcmp(f1_mbs, f2_mbs);
|
|
||||||
free(f1_mbs);
|
|
||||||
free(f2_mbs);
|
|
||||||
return ret;
|
|
||||||
#endif
|
|
||||||
}
|
|
Loading…
Reference in New Issue