提交 10f99917 编写于 作者: S Shengliang Guan

style: format shell

上级 78456366
...@@ -15,9 +15,9 @@ ...@@ -15,9 +15,9 @@
#define __USE_XOPEN #define __USE_XOPEN
#include "shellCommand.h"
#include "os.h" #include "os.h"
#include "shell.h" #include "shell.h"
#include "shellCommand.h"
#include <regex.h> #include <regex.h>
...@@ -48,7 +48,7 @@ void getPrevCharSize(const char *str, int pos, int *size, int *width) { ...@@ -48,7 +48,7 @@ void getPrevCharSize(const char *str, int pos, int *size, int *width) {
while (--pos >= 0) { while (--pos >= 0) {
*size += 1; *size += 1;
if (str[pos] > 0 || countPrefixOnes((unsigned char )str[pos]) > 1) break; if (str[pos] > 0 || countPrefixOnes((unsigned char)str[pos]) > 1) break;
} }
int rc = taosMbToWchar(&wc, str + pos, MB_CUR_MAX); int rc = taosMbToWchar(&wc, str + pos, MB_CUR_MAX);
...@@ -106,8 +106,7 @@ void clearLineBefore(Command *cmd) { ...@@ -106,8 +106,7 @@ void clearLineBefore(Command *cmd) {
assert(cmd->cursorOffset <= cmd->commandSize && cmd->endOffset >= cmd->screenOffset); assert(cmd->cursorOffset <= cmd->commandSize && cmd->endOffset >= cmd->screenOffset);
clearScreen(cmd->endOffset + prompt_size, cmd->screenOffset + prompt_size); clearScreen(cmd->endOffset + prompt_size, cmd->screenOffset + prompt_size);
memmove(cmd->command, cmd->command + cmd->cursorOffset, memmove(cmd->command, cmd->command + cmd->cursorOffset, cmd->commandSize - cmd->cursorOffset);
cmd->commandSize - cmd->cursorOffset);
cmd->commandSize -= cmd->cursorOffset; cmd->commandSize -= cmd->cursorOffset;
cmd->cursorOffset = 0; cmd->cursorOffset = 0;
cmd->screenOffset = 0; cmd->screenOffset = 0;
...@@ -235,8 +234,8 @@ int isReadyGo(Command *cmd) { ...@@ -235,8 +234,8 @@ int isReadyGo(Command *cmd) {
sprintf(total, "%s%s", cmd->buffer, cmd->command); sprintf(total, "%s%s", cmd->buffer, cmd->command);
char *reg_str = char *reg_str =
"(^.*;\\s*$)|(^\\s*$)|(^\\s*exit\\s*$)|(^\\s*q\\s*$)|(^\\s*quit\\s*$)|(^" "(^.*;\\s*$)|(^\\s*$)|(^\\s*exit\\s*$)|(^\\s*q\\s*$)|(^\\s*quit\\s*$)|(^"
"\\s*clear\\s*$)"; "\\s*clear\\s*$)";
if (regex_match(total, reg_str, REG_EXTENDED | REG_ICASE)) { if (regex_match(total, reg_str, REG_EXTENDED | REG_ICASE)) {
taosMemoryFree(total); taosMemoryFree(total);
return 1; return 1;
......
...@@ -23,40 +23,43 @@ ...@@ -23,40 +23,43 @@
#include "shellCommand.h" #include "shellCommand.h"
#include "taosdef.h" #include "taosdef.h"
#include "taoserror.h" #include "taoserror.h"
#include "tconfig.h"
#include "tglobal.h" #include "tglobal.h"
#include "ttypes.h" #include "ttypes.h"
#include "tutil.h" #include "tutil.h"
#include "tconfig.h"
#include <regex.h> #include <regex.h>
#include <wordexp.h> #include <wordexp.h>
/**************** Global variables ****************/ /**************** Global variables ****************/
#ifdef _TD_POWER_ #ifdef _TD_POWER_
char CLIENT_VERSION[] = "Welcome to the PowerDB shell from %s, Client Version:%s\n" char CLIENT_VERSION[] =
"Copyright (c) 2020 by PowerDB, Inc. All rights reserved.\n\n"; "Welcome to the PowerDB shell from %s, Client Version:%s\n"
char PROMPT_HEADER[] = "power> "; "Copyright (c) 2020 by PowerDB, Inc. All rights reserved.\n\n";
char PROMPT_HEADER[] = "power> ";
char CONTINUE_PROMPT[] = " -> "; char CONTINUE_PROMPT[] = " -> ";
int prompt_size = 7; int prompt_size = 7;
#elif (_TD_TQ_ == true) #elif (_TD_TQ_ == true)
char CLIENT_VERSION[] = "Welcome to the TQ shell from %s, Client Version:%s\n" char CLIENT_VERSION[] =
"Copyright (c) 2020 by TQ, Inc. All rights reserved.\n\n"; "Welcome to the TQ shell from %s, Client Version:%s\n"
char PROMPT_HEADER[] = "tq> "; "Copyright (c) 2020 by TQ, Inc. All rights reserved.\n\n";
char PROMPT_HEADER[] = "tq> ";
char CONTINUE_PROMPT[] = " -> "; char CONTINUE_PROMPT[] = " -> ";
int prompt_size = 4; int prompt_size = 4;
#else #else
char CLIENT_VERSION[] = "Welcome to the TDengine shell from %s, Client Version:%s\n" char CLIENT_VERSION[] =
"Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.\n\n"; "Welcome to the TDengine shell from %s, Client Version:%s\n"
char PROMPT_HEADER[] = "taos> "; "Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.\n\n";
char PROMPT_HEADER[] = "taos> ";
char CONTINUE_PROMPT[] = " -> "; char CONTINUE_PROMPT[] = " -> ";
int prompt_size = 6; int prompt_size = 6;
#endif #endif
int64_t result = 0; int64_t result = 0;
SShellHistory history; SShellHistory history;
#define DEFAULT_MAX_BINARY_DISPLAY_WIDTH 30 #define DEFAULT_MAX_BINARY_DISPLAY_WIDTH 30
extern int32_t tsMaxBinaryDisplayWidth; extern int32_t tsMaxBinaryDisplayWidth;
...@@ -339,12 +342,12 @@ void shellRunCommandOnServer(TAOS *con, char command[]) { ...@@ -339,12 +342,12 @@ void shellRunCommandOnServer(TAOS *con, char command[]) {
atomic_store_64(&result, 0); atomic_store_64(&result, 0);
freeResultWithRid(oresult); freeResultWithRid(oresult);
taos_free_result(pSql); taos_free_result(pSql);
return; return;
} }
TAOS_FIELD* pFields = taos_fetch_fields(pSql); TAOS_FIELD *pFields = taos_fetch_fields(pSql);
if (pFields != NULL) { // select and show kinds of commands if (pFields != NULL) { // select and show kinds of commands
int error_no = 0; int error_no = 0;
...@@ -361,7 +364,7 @@ void shellRunCommandOnServer(TAOS *con, char command[]) { ...@@ -361,7 +364,7 @@ void shellRunCommandOnServer(TAOS *con, char command[]) {
} else { } else {
printf("Query interrupted (%s), %d row(s) in set (%.6fs)\n", taos_errstr(pSql), numOfRows, (et - st) / 1E6); printf("Query interrupted (%s), %d row(s) in set (%.6fs)\n", taos_errstr(pSql), numOfRows, (et - st) / 1E6);
} }
taos_free_result(pSql); taos_free_result(pSql);
} else { } else {
int num_rows_affacted = taos_affected_rows(pSql); int num_rows_affacted = taos_affected_rows(pSql);
taos_free_result(pSql); taos_free_result(pSql);
...@@ -521,7 +524,8 @@ static int dumpResultToFile(const char *fname, TAOS_RES *tres) { ...@@ -521,7 +524,8 @@ static int dumpResultToFile(const char *fname, TAOS_RES *tres) {
} }
// FILE *fp = fopen(full_path.we_wordv[0], "w"); // FILE *fp = fopen(full_path.we_wordv[0], "w");
TdFilePtr pFile = taosOpenFile(full_path.we_wordv[0], TD_FILE_CREATE | TD_FILE_WRITE | TD_FILE_TRUNC | TD_FILE_STREAM); TdFilePtr pFile =
taosOpenFile(full_path.we_wordv[0], TD_FILE_CREATE | TD_FILE_WRITE | TD_FILE_TRUNC | TD_FILE_STREAM);
if (pFile == NULL) { if (pFile == NULL) {
fprintf(stderr, "ERROR: failed to open file: %s\n", full_path.we_wordv[0]); fprintf(stderr, "ERROR: failed to open file: %s\n", full_path.we_wordv[0]);
wordfree(&full_path); wordfree(&full_path);
...@@ -901,8 +905,8 @@ void read_history() { ...@@ -901,8 +905,8 @@ void read_history() {
memset(history.hist, 0, sizeof(char *) * MAX_HISTORY_SIZE); memset(history.hist, 0, sizeof(char *) * MAX_HISTORY_SIZE);
history.hstart = 0; history.hstart = 0;
history.hend = 0; history.hend = 0;
char *line = NULL; char *line = NULL;
int read_size = 0; int read_size = 0;
char f_history[TSDB_FILENAME_LEN]; char f_history[TSDB_FILENAME_LEN];
get_history_path(f_history); get_history_path(f_history);
...@@ -929,7 +933,7 @@ void read_history() { ...@@ -929,7 +933,7 @@ void read_history() {
} }
} }
if(line != NULL) taosMemoryFree(line); if (line != NULL) taosMemoryFree(line);
taosCloseFile(&pFile); taosCloseFile(&pFile);
} }
...@@ -1026,7 +1030,7 @@ void source_file(TAOS *con, char *fptr) { ...@@ -1026,7 +1030,7 @@ void source_file(TAOS *con, char *fptr) {
} }
taosMemoryFree(cmd); taosMemoryFree(cmd);
if(line != NULL) taosMemoryFree(line); if (line != NULL) taosMemoryFree(line);
wordfree(&full_path); wordfree(&full_path);
taosCloseFile(&pFile); taosCloseFile(&pFile);
} }
......
...@@ -14,45 +14,38 @@ ...@@ -14,45 +14,38 @@
*/ */
#define __USE_XOPEN #define __USE_XOPEN
#include "os.h"
#include "shell.h"
#include "tglobal.h"
#include "tconfig.h"
#include "shellCommand.h" #include "shellCommand.h"
#include "tbase64.h" #include "tglobal.h"
#include "tlog.h" #include "tlog.h"
#include "version.h"
#include <wordexp.h>
#include <argp.h> #include <argp.h>
#include <termio.h> #include <termio.h>
#include <wordexp.h>
#define OPT_ABORT 1 /* abort */ #define OPT_ABORT 1 /* abort */
int indicator = 1; int indicator = 1;
void insertChar(Command *cmd, char *c, int size); void insertChar(Command *cmd, char *c, int size);
void taosNetTest(char *role, char *host, int32_t port, int32_t pkgLen, void taosNetTest(char *role, char *host, int32_t port, int32_t pkgLen, int32_t pkgNum, char *pkgType);
int32_t pkgNum, char *pkgType);
const char *argp_program_version = version; const char *argp_program_version = version;
const char *argp_program_bug_address = "<support@taosdata.com>"; const char *argp_program_bug_address = "<support@taosdata.com>";
static char doc[] = ""; static char doc[] = "";
static char args_doc[] = ""; static char args_doc[] = "";
TdThread pid; TdThread pid;
static tsem_t cancelSem; static tsem_t cancelSem;
static struct argp_option options[] = { static struct argp_option options[] = {
{"host", 'h', "HOST", 0, "TDengine server FQDN to connect. The default host is localhost."}, {"host", 'h', "HOST", 0, "TDengine server FQDN to connect. The default host is localhost."},
{"password", 'p', 0, 0, "The password to use when connecting to the server."}, {"password", 'p', NULL, 0, "The password to use when connecting to the server."},
{"port", 'P', "PORT", 0, "The TCP/IP port number to use for the connection."}, {"port", 'P', "PORT", 0, "The TCP/IP port number to use for the connection."},
{"user", 'u', "USER", 0, "The user name to use when connecting to the server."}, {"user", 'u', "USER", 0, "The user name to use when connecting to the server."},
{"auth", 'A', "Auth", 0, "The auth string to use when connecting to the server."}, {"auth", 'A', "Auth", 0, "The auth string to use when connecting to the server."},
{"config-dir", 'c', "CONFIG_DIR", 0, "Configuration directory."}, {"config-dir", 'c', "CONFIG_DIR", 0, "Configuration directory."},
{"dump-config", 'C', 0, 0, "Dump configuration."}, {"dump-config",'C', NULL, 0, "Dump configuration."},
{"commands", 's', "COMMANDS", 0, "Commands to run without enter the shell."}, {"commands", 's', "COMMANDS", 0, "Commands to run without enter the shell."},
{"raw-time", 'r', 0, 0, "Output time as uint64_t."}, {"raw-time", 'r', NULL, 0, "Output time as uint64_t."},
{"file", 'f', "FILE", 0, "Script to run without enter the shell."}, {"file", 'f', "FILE", 0, "Script to run without enter the shell."},
{"directory", 'D', "DIRECTORY", 0, "Use multi-thread to import all SQL files in the directory separately."}, {"directory", 'D', "DIRECTORY", 0, "Use multi-thread to import all SQL files in the directory separately."},
{"thread", 'T', "THREADNUM", 0, "Number of threads when using multi-thread to import data."}, {"thread", 'T', "THREADNUM", 0, "Number of threads when using multi-thread to import data."},
...@@ -70,7 +63,7 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) { ...@@ -70,7 +63,7 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) {
/* Get the input argument from argp_parse, which we /* Get the input argument from argp_parse, which we
know is a pointer to our arguments structure. */ know is a pointer to our arguments structure. */
SShellArguments *arguments = state->input; SShellArguments *arguments = state->input;
wordexp_t full_path; wordexp_t full_path;
switch (key) { switch (key) {
case 'h': case 'h':
...@@ -80,7 +73,7 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) { ...@@ -80,7 +73,7 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) {
break; break;
case 'P': case 'P':
if (arg) { if (arg) {
arguments->port = atoi(arg); arguments->port = atoi(arg);
} else { } else {
fprintf(stderr, "Invalid port\n"); fprintf(stderr, "Invalid port\n");
return -1; return -1;
...@@ -182,35 +175,33 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) { ...@@ -182,35 +175,33 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) {
/* Our argp parser. */ /* Our argp parser. */
static struct argp argp = {options, parse_opt, args_doc, doc}; static struct argp argp = {options, parse_opt, args_doc, doc};
char LINUXCLIENT_VERSION[] = "Welcome to the TDengine shell from %s, Client Version:%s\n" char LINUXCLIENT_VERSION[] =
"Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.\n\n"; "Welcome to the TDengine shell from %s, Client Version:%s\n"
"Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.\n\n";
char g_password[SHELL_MAX_PASSWORD_LEN]; char g_password[SHELL_MAX_PASSWORD_LEN];
static void parse_args( static void parse_args(int argc, char *argv[], SShellArguments *arguments) {
int argc, char *argv[], SShellArguments *arguments) { for (int i = 1; i < argc; i++) {
for (int i = 1; i < argc; i++) { if ((strncmp(argv[i], "-p", 2) == 0) || (strncmp(argv[i], "--password", 10) == 0)) {
if ((strncmp(argv[i], "-p", 2) == 0) printf(LINUXCLIENT_VERSION, tsOsName, taos_get_client_info());
|| (strncmp(argv[i], "--password", 10) == 0)) { if ((strlen(argv[i]) == 2) || (strncmp(argv[i], "--password", 10) == 0)) {
printf(LINUXCLIENT_VERSION, tsOsName, taos_get_client_info()); printf("Enter password: ");
if ((strlen(argv[i]) == 2) taosSetConsoleEcho(false);
|| (strncmp(argv[i], "--password", 10) == 0)) { if (scanf("%20s", g_password) > 1) {
printf("Enter password: "); fprintf(stderr, "password reading error\n");
taosSetConsoleEcho(false); }
if (scanf("%20s", g_password) > 1) { taosSetConsoleEcho(true);
fprintf(stderr, "password reading error\n"); if (EOF == getchar()) {
} fprintf(stderr, "getchar() return EOF\n");
taosSetConsoleEcho(true);
if (EOF == getchar()) {
fprintf(stderr, "getchar() return EOF\n");
}
} else {
tstrncpy(g_password, (char *)(argv[i] + 2), SHELL_MAX_PASSWORD_LEN);
strcpy(argv[i], "-p");
}
arguments->password = g_password;
arguments->is_use_passwd = true;
} }
} else {
tstrncpy(g_password, (char *)(argv[i] + 2), SHELL_MAX_PASSWORD_LEN);
strcpy(argv[i], "-p");
}
arguments->password = g_password;
arguments->is_use_passwd = true;
} }
}
} }
void shellParseArgument(int argc, char *argv[], SShellArguments *arguments) { void shellParseArgument(int argc, char *argv[], SShellArguments *arguments) {
...@@ -225,20 +216,20 @@ void shellParseArgument(int argc, char *argv[], SShellArguments *arguments) { ...@@ -225,20 +216,20 @@ void shellParseArgument(int argc, char *argv[], SShellArguments *arguments) {
argp_parse(&argp, argc, argv, 0, 0, arguments); argp_parse(&argp, argc, argv, 0, 0, arguments);
if (arguments->abort) { if (arguments->abort) {
#ifndef _ALPINE #ifndef _ALPINE
#if 0 #if 0
error(10, 0, "ABORTED"); error(10, 0, "ABORTED");
#endif #endif
#else #else
abort(); abort();
#endif #endif
} }
} }
int32_t shellReadCommand(TAOS *con, char *command) { int32_t shellReadCommand(TAOS *con, char *command) {
unsigned hist_counter = history.hend; unsigned hist_counter = history.hend;
char utf8_array[10] = "\0"; char utf8_array[10] = "\0";
Command cmd; Command cmd;
memset(&cmd, 0, sizeof(cmd)); memset(&cmd, 0, sizeof(cmd));
cmd.buffer = (char *)taosMemoryCalloc(1, MAX_COMMAND_SIZE); cmd.buffer = (char *)taosMemoryCalloc(1, MAX_COMMAND_SIZE);
cmd.command = (char *)taosMemoryCalloc(1, MAX_COMMAND_SIZE); cmd.command = (char *)taosMemoryCalloc(1, MAX_COMMAND_SIZE);
...@@ -247,7 +238,7 @@ int32_t shellReadCommand(TAOS *con, char *command) { ...@@ -247,7 +238,7 @@ int32_t shellReadCommand(TAOS *con, char *command) {
// Read input. // Read input.
char c; char c;
while (1) { while (1) {
c = (char)getchar(); // getchar() return an 'int' value c = (char)getchar(); // getchar() return an 'int' value
if (c == EOF) { if (c == EOF) {
return c; return c;
...@@ -406,13 +397,13 @@ void *shellLoopQuery(void *arg) { ...@@ -406,13 +397,13 @@ void *shellLoopQuery(void *arg) {
taosThreadCleanupPush(cleanup_handler, NULL); taosThreadCleanupPush(cleanup_handler, NULL);
char *command = taosMemoryMalloc(MAX_COMMAND_SIZE); char *command = taosMemoryMalloc(MAX_COMMAND_SIZE);
if (command == NULL){ if (command == NULL) {
uError("failed to malloc command"); uError("failed to malloc command");
return NULL; return NULL;
} }
int32_t err = 0; int32_t err = 0;
do { do {
// Read command from shell. // Read command from shell.
memset(command, 0, MAX_COMMAND_SIZE); memset(command, 0, MAX_COMMAND_SIZE);
...@@ -423,12 +414,12 @@ void *shellLoopQuery(void *arg) { ...@@ -423,12 +414,12 @@ void *shellLoopQuery(void *arg) {
} }
resetTerminalMode(); resetTerminalMode();
} while (shellRunCommand(con, command) == 0); } while (shellRunCommand(con, command) == 0);
taosMemoryFreeClear(command); taosMemoryFreeClear(command);
exitShell(); exitShell();
taosThreadCleanupPop(1); taosThreadCleanupPop(1);
return NULL; return NULL;
} }
...@@ -437,7 +428,7 @@ void get_history_path(char *_history) { snprintf(_history, TSDB_FILENAME_LEN, "% ...@@ -437,7 +428,7 @@ void get_history_path(char *_history) { snprintf(_history, TSDB_FILENAME_LEN, "%
void clearScreen(int ecmd_pos, int cursor_pos) { void clearScreen(int ecmd_pos, int cursor_pos) {
struct winsize w; struct winsize w;
if (ioctl(0, TIOCGWINSZ, &w) < 0 || w.ws_col == 0 || w.ws_row == 0) { if (ioctl(0, TIOCGWINSZ, &w) < 0 || w.ws_col == 0 || w.ws_row == 0) {
//fprintf(stderr, "No stream device, and use default value(col 120, row 30)\n"); // fprintf(stderr, "No stream device, and use default value(col 120, row 30)\n");
w.ws_col = 120; w.ws_col = 120;
w.ws_row = 30; w.ws_row = 30;
} }
...@@ -458,13 +449,13 @@ void clearScreen(int ecmd_pos, int cursor_pos) { ...@@ -458,13 +449,13 @@ void clearScreen(int ecmd_pos, int cursor_pos) {
void showOnScreen(Command *cmd) { void showOnScreen(Command *cmd) {
struct winsize w; struct winsize w;
if (ioctl(0, TIOCGWINSZ, &w) < 0 || w.ws_col == 0 || w.ws_row == 0) { if (ioctl(0, TIOCGWINSZ, &w) < 0 || w.ws_col == 0 || w.ws_row == 0) {
//fprintf(stderr, "No stream device\n"); // fprintf(stderr, "No stream device\n");
w.ws_col = 120; w.ws_col = 120;
w.ws_row = 30; w.ws_row = 30;
} }
TdWchar wc; TdWchar wc;
int size = 0; int size = 0;
// Print out the command. // Print out the command.
char *total_string = taosMemoryMalloc(MAX_COMMAND_SIZE); char *total_string = taosMemoryMalloc(MAX_COMMAND_SIZE);
...@@ -531,13 +522,11 @@ void showOnScreen(Command *cmd) { ...@@ -531,13 +522,11 @@ void showOnScreen(Command *cmd) {
void cleanup_handler(void *arg) { resetTerminalMode(); } void cleanup_handler(void *arg) { resetTerminalMode(); }
void exitShell() { void exitShell() {
/*int32_t ret =*/ resetTerminalMode(); /*int32_t ret =*/resetTerminalMode();
taos_cleanup(); taos_cleanup();
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
} }
void shellQueryInterruptHandler(int32_t signum, void *sigInfo, void *context) { void shellQueryInterruptHandler(int32_t signum, void *sigInfo, void *context) { tsem_post(&cancelSem); }
tsem_post(&cancelSem);
}
void *cancelHandler(void *arg) { void *cancelHandler(void *arg) {
setThreadName("cancelHandler"); setThreadName("cancelHandler");
...@@ -554,7 +543,7 @@ void *cancelHandler(void *arg) { ...@@ -554,7 +543,7 @@ void *cancelHandler(void *arg) {
SSqlObj* pSql = taosAcquireRef(tscObjRef, rid); SSqlObj* pSql = taosAcquireRef(tscObjRef, rid);
taos_stop_query(pSql); taos_stop_query(pSql);
taosReleaseRef(tscObjRef, rid); taosReleaseRef(tscObjRef, rid);
#endif #endif
#else #else
resetTerminalMode(); resetTerminalMode();
printf("\nReceive ctrl+c or other signal, quit shell.\n"); printf("\nReceive ctrl+c or other signal, quit shell.\n");
...@@ -640,11 +629,11 @@ int main(int argc, char *argv[]) { ...@@ -640,11 +629,11 @@ int main(int argc, char *argv[]) {
con = taos_connect_auth(args.host, args.user, args.auth, args.database, args.port); con = taos_connect_auth(args.host, args.user, args.auth, args.database, args.port);
} }
/* if (taos_init()) { // if (taos_init()) {
printf("Failed to init taos"); // printf("Failed to init taos");
exit(EXIT_FAILURE); // exit(EXIT_FAILURE);
} // }
*/
taosNetTest(args.netTestRole, args.host, args.port, args.pktLen, args.pktNum, args.pktType); taosNetTest(args.netTestRole, args.host, args.port, args.pktLen, args.pktNum, args.pktType);
taos_close(con); taos_close(con);
exit(0); exit(0);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册