Hotfix/sangshuduo/td 5844 cmdline parameters align for master (#7479)
* [TD-5844]<feature>: make cmd line parameter similar. * fix test case align with taosdemo change. * fix windows stack overflow issue. * fix mac compile error. * fix taosdemo cmdline parameter in tests/pytest/tools/taosdemoAllTest/NanoTestCase/taosdemoTestSupportNanoInsert.py * make taos.exe use mysql style password input. * make taos shell and taosdump use mysql style password input. * determine scanf return value. * cherry pick from develop/feature branch. * cherry pick with ab6cde02626bd8ba496b98a65e37e1f98c9ff596 * cherry pick with d6bfe443fd21ded247bd8509fb77b7b18e112357 Co-authored-by: Shuduo Sang <sdsang@taosdata.com>
This commit is contained in:
parent
fb1ecd9c72
commit
1b57984311
|
@ -87,6 +87,8 @@ extern const int32_t TYPE_BYTES[15];
|
||||||
#define TSDB_DEFAULT_PASS "taosdata"
|
#define TSDB_DEFAULT_PASS "taosdata"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define SHELL_MAX_PASSWORD_LEN 20
|
||||||
|
|
||||||
#define TSDB_TRUE 1
|
#define TSDB_TRUE 1
|
||||||
#define TSDB_FALSE 0
|
#define TSDB_FALSE 0
|
||||||
#define TSDB_OK 0
|
#define TSDB_OK 0
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
#define MAX_USERNAME_SIZE 64
|
#define MAX_USERNAME_SIZE 64
|
||||||
#define MAX_DBNAME_SIZE 64
|
#define MAX_DBNAME_SIZE 64
|
||||||
#define MAX_IP_SIZE 20
|
#define MAX_IP_SIZE 20
|
||||||
#define MAX_PASSWORD_SIZE 20
|
|
||||||
#define MAX_HISTORY_SIZE 1000
|
#define MAX_HISTORY_SIZE 1000
|
||||||
#define MAX_COMMAND_SIZE 1048586
|
#define MAX_COMMAND_SIZE 1048586
|
||||||
#define HISTORY_FILE ".taos_history"
|
#define HISTORY_FILE ".taos_history"
|
||||||
|
|
|
@ -66,7 +66,7 @@ void printHelp() {
|
||||||
|
|
||||||
char DARWINCLIENT_VERSION[] = "Welcome to the TDengine shell from %s, Client Version:%s\n"
|
char DARWINCLIENT_VERSION[] = "Welcome to the TDengine shell from %s, Client Version:%s\n"
|
||||||
"Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.\n\n";
|
"Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.\n\n";
|
||||||
char g_password[MAX_PASSWORD_SIZE];
|
char g_password[SHELL_MAX_PASSWORD_LEN];
|
||||||
|
|
||||||
void shellParseArgument(int argc, char *argv[], SShellArguments *arguments) {
|
void shellParseArgument(int argc, char *argv[], SShellArguments *arguments) {
|
||||||
wordexp_t full_path;
|
wordexp_t full_path;
|
||||||
|
@ -81,19 +81,25 @@ void shellParseArgument(int argc, char *argv[], SShellArguments *arguments) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// for password
|
// for password
|
||||||
else if (strncmp(argv[i], "-p", 2) == 0) {
|
else if ((strncmp(argv[i], "-p", 2) == 0)
|
||||||
|
|| (strncmp(argv[i], "--password", 10) == 0)) {
|
||||||
strcpy(tsOsName, "Darwin");
|
strcpy(tsOsName, "Darwin");
|
||||||
printf(DARWINCLIENT_VERSION, tsOsName, taos_get_client_info());
|
printf(DARWINCLIENT_VERSION, tsOsName, taos_get_client_info());
|
||||||
if (strlen(argv[i]) == 2) {
|
if ((strlen(argv[i]) == 2)
|
||||||
|
|| (strncmp(argv[i], "--password", 10) == 0)) {
|
||||||
printf("Enter password: ");
|
printf("Enter password: ");
|
||||||
|
taosSetConsoleEcho(false);
|
||||||
if (scanf("%s", g_password) > 1) {
|
if (scanf("%s", g_password) > 1) {
|
||||||
fprintf(stderr, "password read error\n");
|
fprintf(stderr, "password read error\n");
|
||||||
}
|
}
|
||||||
|
taosSetConsoleEcho(true);
|
||||||
getchar();
|
getchar();
|
||||||
} else {
|
} else {
|
||||||
tstrncpy(g_password, (char *)(argv[i] + 2), MAX_PASSWORD_SIZE);
|
tstrncpy(g_password, (char *)(argv[i] + 2), SHELL_MAX_PASSWORD_LEN);
|
||||||
}
|
}
|
||||||
arguments->password = g_password;
|
arguments->password = g_password;
|
||||||
|
strcpy(argv[i], "");
|
||||||
|
argc -= 1;
|
||||||
}
|
}
|
||||||
// for management port
|
// for management port
|
||||||
else if (strcmp(argv[i], "-P") == 0) {
|
else if (strcmp(argv[i], "-P") == 0) {
|
||||||
|
|
|
@ -47,8 +47,8 @@ static struct argp_option options[] = {
|
||||||
{"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."},
|
||||||
{"check", 'k', "CHECK", 0, "Check tables."},
|
{"check", 'k', "CHECK", 0, "Check tables."},
|
||||||
{"database", 'd', "DATABASE", 0, "Database to use when connecting to the server."},
|
{"database", 'd', "DATABASE", 0, "Database to use when connecting to the server."},
|
||||||
{"timezone", 't', "TIMEZONE", 0, "Time zone of the shell, default is local."},
|
{"timezone", 'z', "TIMEZONE", 0, "Time zone of the shell, default is local."},
|
||||||
{"netrole", 'n', "NETROLE", 0, "Net role when network connectivity test, default is startup, options: client|server|rpc|startup|sync."},
|
{"netrole", 'n', "NETROLE", 0, "Net role when network connectivity test, default is startup, options: client|server|rpc|startup|sync|speen|fqdn."},
|
||||||
{"pktlen", 'l', "PKTLEN", 0, "Packet length used for net test, default is 1000 bytes."},
|
{"pktlen", 'l', "PKTLEN", 0, "Packet length used for net test, default is 1000 bytes."},
|
||||||
{0}};
|
{0}};
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) {
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 't':
|
case 'z':
|
||||||
arguments->timezone = arg;
|
arguments->timezone = arg;
|
||||||
break;
|
break;
|
||||||
case 'u':
|
case 'u':
|
||||||
|
@ -160,22 +160,27 @@ 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[] = "Welcome to the TDengine shell from %s, Client Version:%s\n"
|
||||||
"Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.\n\n";
|
"Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.\n\n";
|
||||||
char g_password[MAX_PASSWORD_SIZE];
|
char g_password[SHELL_MAX_PASSWORD_LEN];
|
||||||
|
|
||||||
static void parse_password(
|
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) {
|
if ((strncmp(argv[i], "-p", 2) == 0)
|
||||||
|
|| (strncmp(argv[i], "--password", 10) == 0)) {
|
||||||
strcpy(tsOsName, "Linux");
|
strcpy(tsOsName, "Linux");
|
||||||
printf(LINUXCLIENT_VERSION, tsOsName, taos_get_client_info());
|
printf(LINUXCLIENT_VERSION, tsOsName, taos_get_client_info());
|
||||||
if (strlen(argv[i]) == 2) {
|
if ((strlen(argv[i]) == 2)
|
||||||
|
|| (strncmp(argv[i], "--password", 10) == 0)) {
|
||||||
printf("Enter password: ");
|
printf("Enter password: ");
|
||||||
|
taosSetConsoleEcho(false);
|
||||||
if (scanf("%20s", g_password) > 1) {
|
if (scanf("%20s", g_password) > 1) {
|
||||||
fprintf(stderr, "password reading error\n");
|
fprintf(stderr, "password reading error\n");
|
||||||
}
|
}
|
||||||
|
taosSetConsoleEcho(true);
|
||||||
getchar();
|
getchar();
|
||||||
} else {
|
} else {
|
||||||
tstrncpy(g_password, (char *)(argv[i] + 2), MAX_PASSWORD_SIZE);
|
tstrncpy(g_password, (char *)(argv[i] + 2), SHELL_MAX_PASSWORD_LEN);
|
||||||
|
strcpy(argv[i], "-p");
|
||||||
}
|
}
|
||||||
arguments->password = g_password;
|
arguments->password = g_password;
|
||||||
arguments->is_use_passwd = true;
|
arguments->is_use_passwd = true;
|
||||||
|
@ -190,7 +195,7 @@ void shellParseArgument(int argc, char *argv[], SShellArguments *arguments) {
|
||||||
argp_program_version = verType;
|
argp_program_version = verType;
|
||||||
|
|
||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
parse_password(argc, argv, arguments);
|
parse_args(argc, argv, arguments);
|
||||||
}
|
}
|
||||||
|
|
||||||
argp_parse(&argp, argc, argv, 0, 0, arguments);
|
argp_parse(&argp, argc, argv, 0, 0, arguments);
|
||||||
|
|
|
@ -64,7 +64,7 @@ void printHelp() {
|
||||||
exit(EXIT_SUCCESS);
|
exit(EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
char g_password[MAX_PASSWORD_SIZE];
|
char g_password[SHELL_MAX_PASSWORD_LEN];
|
||||||
|
|
||||||
void shellParseArgument(int argc, char *argv[], SShellArguments *arguments) {
|
void shellParseArgument(int argc, char *argv[], SShellArguments *arguments) {
|
||||||
for (int i = 1; i < argc; i++) {
|
for (int i = 1; i < argc; i++) {
|
||||||
|
@ -78,20 +78,26 @@ void shellParseArgument(int argc, char *argv[], SShellArguments *arguments) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// for password
|
// for password
|
||||||
else if (strncmp(argv[i], "-p", 2) == 0) {
|
else if ((strncmp(argv[i], "-p", 2) == 0)
|
||||||
|
|| (strncmp(argv[i], "--password", 10) == 0)) {
|
||||||
arguments->is_use_passwd = true;
|
arguments->is_use_passwd = true;
|
||||||
strcpy(tsOsName, "Windows");
|
strcpy(tsOsName, "Windows");
|
||||||
printf(WINCLIENT_VERSION, tsOsName, taos_get_client_info());
|
printf(WINCLIENT_VERSION, tsOsName, taos_get_client_info());
|
||||||
if (strlen(argv[i]) == 2) {
|
if ((strlen(argv[i]) == 2)
|
||||||
|
|| (strncmp(argv[i], "--password", 10) == 0)) {
|
||||||
printf("Enter password: ");
|
printf("Enter password: ");
|
||||||
|
taosSetConsoleEcho(false);
|
||||||
if (scanf("%s", g_password) > 1) {
|
if (scanf("%s", g_password) > 1) {
|
||||||
fprintf(stderr, "password read error!\n");
|
fprintf(stderr, "password read error!\n");
|
||||||
}
|
}
|
||||||
|
taosSetConsoleEcho(true);
|
||||||
getchar();
|
getchar();
|
||||||
} else {
|
} else {
|
||||||
tstrncpy(g_password, (char *)(argv[i] + 2), MAX_PASSWORD_SIZE);
|
tstrncpy(g_password, (char *)(argv[i] + 2), SHELL_MAX_PASSWORD_LEN);
|
||||||
}
|
}
|
||||||
arguments->password = g_password;
|
arguments->password = g_password;
|
||||||
|
strcpy(argv[i], "");
|
||||||
|
argc -= 1;
|
||||||
}
|
}
|
||||||
// for management port
|
// for management port
|
||||||
else if (strcmp(argv[i], "-P") == 0) {
|
else if (strcmp(argv[i], "-P") == 0) {
|
||||||
|
|
|
@ -69,7 +69,6 @@ extern char configDir[];
|
||||||
#define COL_BUFFER_LEN ((TSDB_COL_NAME_LEN + 15) * TSDB_MAX_COLUMNS)
|
#define COL_BUFFER_LEN ((TSDB_COL_NAME_LEN + 15) * TSDB_MAX_COLUMNS)
|
||||||
|
|
||||||
#define MAX_USERNAME_SIZE 64
|
#define MAX_USERNAME_SIZE 64
|
||||||
#define MAX_PASSWORD_SIZE 16
|
|
||||||
#define MAX_HOSTNAME_SIZE 253 // https://man7.org/linux/man-pages/man7/hostname.7.html
|
#define MAX_HOSTNAME_SIZE 253 // https://man7.org/linux/man-pages/man7/hostname.7.html
|
||||||
#define MAX_TB_NAME_SIZE 64
|
#define MAX_TB_NAME_SIZE 64
|
||||||
#define MAX_DATA_SIZE (16*TSDB_MAX_COLUMNS)+20 // max record len: 16*MAX_COLUMNS, timestamp string and ,('') need extra space
|
#define MAX_DATA_SIZE (16*TSDB_MAX_COLUMNS)+20 // max record len: 16*MAX_COLUMNS, timestamp string and ,('') need extra space
|
||||||
|
@ -208,7 +207,7 @@ typedef struct SArguments_S {
|
||||||
uint16_t port;
|
uint16_t port;
|
||||||
uint16_t iface;
|
uint16_t iface;
|
||||||
char * user;
|
char * user;
|
||||||
char password[MAX_PASSWORD_SIZE];
|
char password[SHELL_MAX_PASSWORD_LEN];
|
||||||
char * database;
|
char * database;
|
||||||
int replica;
|
int replica;
|
||||||
char * tb_prefix;
|
char * tb_prefix;
|
||||||
|
@ -356,7 +355,7 @@ typedef struct SDbs_S {
|
||||||
|
|
||||||
uint16_t port;
|
uint16_t port;
|
||||||
char user[MAX_USERNAME_SIZE];
|
char user[MAX_USERNAME_SIZE];
|
||||||
char password[MAX_PASSWORD_SIZE];
|
char password[SHELL_MAX_PASSWORD_LEN];
|
||||||
char resultFile[MAX_FILE_NAME_LEN];
|
char resultFile[MAX_FILE_NAME_LEN];
|
||||||
bool use_metric;
|
bool use_metric;
|
||||||
bool insert_only;
|
bool insert_only;
|
||||||
|
@ -422,7 +421,7 @@ typedef struct SQueryMetaInfo_S {
|
||||||
uint16_t port;
|
uint16_t port;
|
||||||
struct sockaddr_in serv_addr;
|
struct sockaddr_in serv_addr;
|
||||||
char user[MAX_USERNAME_SIZE];
|
char user[MAX_USERNAME_SIZE];
|
||||||
char password[MAX_PASSWORD_SIZE];
|
char password[SHELL_MAX_PASSWORD_LEN];
|
||||||
char dbName[TSDB_DB_NAME_LEN];
|
char dbName[TSDB_DB_NAME_LEN];
|
||||||
char queryMode[SMALL_BUFF_LEN]; // taosc, rest
|
char queryMode[SMALL_BUFF_LEN]; // taosc, rest
|
||||||
|
|
||||||
|
@ -858,7 +857,7 @@ static void parse_args(int argc, char *argv[], SArguments *arguments) {
|
||||||
}
|
}
|
||||||
taosSetConsoleEcho(true);
|
taosSetConsoleEcho(true);
|
||||||
} else {
|
} else {
|
||||||
tstrncpy(arguments->password, (char *)(argv[i] + 2), MAX_PASSWORD_SIZE);
|
tstrncpy(arguments->password, (char *)(argv[i] + 2), SHELL_MAX_PASSWORD_LEN);
|
||||||
}
|
}
|
||||||
} else if (strcmp(argv[i], "-o") == 0) {
|
} else if (strcmp(argv[i], "-o") == 0) {
|
||||||
if (argc == i+1) {
|
if (argc == i+1) {
|
||||||
|
@ -3780,9 +3779,9 @@ static bool getMetaFromInsertJsonFile(cJSON* root) {
|
||||||
|
|
||||||
cJSON* password = cJSON_GetObjectItem(root, "password");
|
cJSON* password = cJSON_GetObjectItem(root, "password");
|
||||||
if (password && password->type == cJSON_String && password->valuestring != NULL) {
|
if (password && password->type == cJSON_String && password->valuestring != NULL) {
|
||||||
tstrncpy(g_Dbs.password, password->valuestring, MAX_PASSWORD_SIZE);
|
tstrncpy(g_Dbs.password, password->valuestring, SHELL_MAX_PASSWORD_LEN);
|
||||||
} else if (!password) {
|
} else if (!password) {
|
||||||
tstrncpy(g_Dbs.password, "taosdata", MAX_PASSWORD_SIZE);
|
tstrncpy(g_Dbs.password, "taosdata", SHELL_MAX_PASSWORD_LEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
cJSON* resultfile = cJSON_GetObjectItem(root, "result_file");
|
cJSON* resultfile = cJSON_GetObjectItem(root, "result_file");
|
||||||
|
@ -4516,9 +4515,9 @@ static bool getMetaFromQueryJsonFile(cJSON* root) {
|
||||||
|
|
||||||
cJSON* password = cJSON_GetObjectItem(root, "password");
|
cJSON* password = cJSON_GetObjectItem(root, "password");
|
||||||
if (password && password->type == cJSON_String && password->valuestring != NULL) {
|
if (password && password->type == cJSON_String && password->valuestring != NULL) {
|
||||||
tstrncpy(g_queryInfo.password, password->valuestring, MAX_PASSWORD_SIZE);
|
tstrncpy(g_queryInfo.password, password->valuestring, SHELL_MAX_PASSWORD_LEN);
|
||||||
} else if (!password) {
|
} else if (!password) {
|
||||||
tstrncpy(g_queryInfo.password, "taosdata", MAX_PASSWORD_SIZE);;
|
tstrncpy(g_queryInfo.password, "taosdata", SHELL_MAX_PASSWORD_LEN);;
|
||||||
}
|
}
|
||||||
|
|
||||||
cJSON *answerPrompt = cJSON_GetObjectItem(root, "confirm_parameter_prompt"); // yes, no,
|
cJSON *answerPrompt = cJSON_GetObjectItem(root, "confirm_parameter_prompt"); // yes, no,
|
||||||
|
@ -8826,7 +8825,7 @@ static void initOfInsertMeta() {
|
||||||
tstrncpy(g_Dbs.host, "127.0.0.1", MAX_HOSTNAME_SIZE);
|
tstrncpy(g_Dbs.host, "127.0.0.1", MAX_HOSTNAME_SIZE);
|
||||||
g_Dbs.port = 6030;
|
g_Dbs.port = 6030;
|
||||||
tstrncpy(g_Dbs.user, TSDB_DEFAULT_USER, MAX_USERNAME_SIZE);
|
tstrncpy(g_Dbs.user, TSDB_DEFAULT_USER, MAX_USERNAME_SIZE);
|
||||||
tstrncpy(g_Dbs.password, TSDB_DEFAULT_PASS, MAX_PASSWORD_SIZE);
|
tstrncpy(g_Dbs.password, TSDB_DEFAULT_PASS, SHELL_MAX_PASSWORD_LEN);
|
||||||
g_Dbs.threadCount = 2;
|
g_Dbs.threadCount = 2;
|
||||||
|
|
||||||
g_Dbs.use_metric = g_args.use_metric;
|
g_Dbs.use_metric = g_args.use_metric;
|
||||||
|
@ -8839,7 +8838,7 @@ static void initOfQueryMeta() {
|
||||||
tstrncpy(g_queryInfo.host, "127.0.0.1", MAX_HOSTNAME_SIZE);
|
tstrncpy(g_queryInfo.host, "127.0.0.1", MAX_HOSTNAME_SIZE);
|
||||||
g_queryInfo.port = 6030;
|
g_queryInfo.port = 6030;
|
||||||
tstrncpy(g_queryInfo.user, TSDB_DEFAULT_USER, MAX_USERNAME_SIZE);
|
tstrncpy(g_queryInfo.user, TSDB_DEFAULT_USER, MAX_USERNAME_SIZE);
|
||||||
tstrncpy(g_queryInfo.password, TSDB_DEFAULT_PASS, MAX_PASSWORD_SIZE);
|
tstrncpy(g_queryInfo.password, TSDB_DEFAULT_PASS, SHELL_MAX_PASSWORD_LEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setParaFromArg() {
|
static void setParaFromArg() {
|
||||||
|
@ -8853,7 +8852,7 @@ static void setParaFromArg() {
|
||||||
tstrncpy(g_Dbs.user, g_args.user, MAX_USERNAME_SIZE);
|
tstrncpy(g_Dbs.user, g_args.user, MAX_USERNAME_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
tstrncpy(g_Dbs.password, g_args.password, MAX_PASSWORD_SIZE);
|
tstrncpy(g_Dbs.password, g_args.password, SHELL_MAX_PASSWORD_LEN);
|
||||||
|
|
||||||
if (g_args.port) {
|
if (g_args.port) {
|
||||||
g_Dbs.port = g_args.port;
|
g_Dbs.port = g_args.port;
|
||||||
|
|
|
@ -243,19 +243,15 @@ static struct argp_option options[] = {
|
||||||
{"table-batch", 't', "TABLE_BATCH", 0, "Number of table dumpout into one output file. Default is 1.", 3},
|
{"table-batch", 't', "TABLE_BATCH", 0, "Number of table dumpout into one output file. Default is 1.", 3},
|
||||||
{"thread_num", 'T', "THREAD_NUM", 0, "Number of thread for dump in file. Default is 5.", 3},
|
{"thread_num", 'T', "THREAD_NUM", 0, "Number of thread for dump in file. Default is 5.", 3},
|
||||||
{"debug", 'g', 0, 0, "Print debug info.", 8},
|
{"debug", 'g', 0, 0, "Print debug info.", 8},
|
||||||
{"verbose", 'b', 0, 0, "Print verbose debug info.", 9},
|
|
||||||
{"performanceprint", 'm', 0, 0, "Print performance debug info.", 10},
|
|
||||||
{0}
|
{0}
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MAX_PASSWORD_SIZE 20
|
|
||||||
|
|
||||||
/* Used by main to communicate with parse_opt. */
|
/* Used by main to communicate with parse_opt. */
|
||||||
typedef struct arguments {
|
typedef struct arguments {
|
||||||
// connection option
|
// connection option
|
||||||
char *host;
|
char *host;
|
||||||
char *user;
|
char *user;
|
||||||
char password[MAX_PASSWORD_SIZE];
|
char password[SHELL_MAX_PASSWORD_LEN];
|
||||||
uint16_t port;
|
uint16_t port;
|
||||||
char cversion[12];
|
char cversion[12];
|
||||||
uint16_t mysqlFlag;
|
uint16_t mysqlFlag;
|
||||||
|
@ -432,7 +428,6 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) {
|
||||||
break;
|
break;
|
||||||
// dump unit option
|
// dump unit option
|
||||||
case 'A':
|
case 'A':
|
||||||
g_args.all_databases = true;
|
|
||||||
break;
|
break;
|
||||||
case 'D':
|
case 'D':
|
||||||
g_args.databases = true;
|
g_args.databases = true;
|
||||||
|
@ -555,11 +550,14 @@ static void parse_precision_first(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void parse_password(
|
static void parse_args(
|
||||||
int argc, char *argv[], SArguments *arguments) {
|
int argc, char *argv[], SArguments *arguments) {
|
||||||
|
|
||||||
for (int i = 1; i < argc; i++) {
|
for (int i = 1; i < argc; i++) {
|
||||||
if (strncmp(argv[i], "-p", 2) == 0) {
|
if ((strncmp(argv[i], "-p", 2) == 0)
|
||||||
if (strlen(argv[i]) == 2) {
|
|| (strncmp(argv[i], "--password", 10) == 0)) {
|
||||||
|
if ((strlen(argv[i]) == 2)
|
||||||
|
|| (strncmp(argv[i], "--password", 10) == 0)) {
|
||||||
printf("Enter password: ");
|
printf("Enter password: ");
|
||||||
taosSetConsoleEcho(false);
|
taosSetConsoleEcho(false);
|
||||||
if(scanf("%20s", arguments->password) > 1) {
|
if(scanf("%20s", arguments->password) > 1) {
|
||||||
|
@ -567,10 +565,22 @@ static void parse_password(
|
||||||
}
|
}
|
||||||
taosSetConsoleEcho(true);
|
taosSetConsoleEcho(true);
|
||||||
} else {
|
} else {
|
||||||
tstrncpy(arguments->password, (char *)(argv[i] + 2), MAX_PASSWORD_SIZE);
|
tstrncpy(arguments->password, (char *)(argv[i] + 2),
|
||||||
|
SHELL_MAX_PASSWORD_LEN);
|
||||||
|
strcpy(argv[i], "-p");
|
||||||
}
|
}
|
||||||
argv[i] = "";
|
} else if (strcmp(argv[i], "-gg") == 0) {
|
||||||
|
arguments->verbose_print = true;
|
||||||
|
strcpy(argv[i], "");
|
||||||
|
} else if (strcmp(argv[i], "-PP") == 0) {
|
||||||
|
arguments->performance_print = true;
|
||||||
|
strcpy(argv[i], "");
|
||||||
|
} else if (strcmp(argv[i], "-A") == 0) {
|
||||||
|
g_args.all_databases = true;
|
||||||
|
} else {
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -639,7 +649,7 @@ int main(int argc, char *argv[]) {
|
||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
parse_precision_first(argc, argv, &g_args);
|
parse_precision_first(argc, argv, &g_args);
|
||||||
parse_timestamp(argc, argv, &g_args);
|
parse_timestamp(argc, argv, &g_args);
|
||||||
parse_password(argc, argv, &g_args);
|
parse_args(argc, argv, &g_args);
|
||||||
}
|
}
|
||||||
|
|
||||||
argp_parse(&argp, argc, argv, 0, 0, &g_args);
|
argp_parse(&argp, argc, argv, 0, 0, &g_args);
|
||||||
|
|
Loading…
Reference in New Issue