shell: change shell record source file command
This commit is contained in:
parent
e99782f489
commit
f03055c373
|
@ -22,7 +22,8 @@
|
|||
|
||||
static bool shellIsEmptyCommand(const char *cmd);
|
||||
static int32_t shellRunSingleCommand(char *command);
|
||||
static int32_t shellRunCommand(char *command);
|
||||
static void shellRecordCommandToHistory(char *command);
|
||||
static int32_t shellRunCommand(char *command, bool recordHistory);
|
||||
static void shellRunSingleCommandImp(char *command);
|
||||
static char *shellFormatTimestamp(char *buf, int64_t val, int32_t precision);
|
||||
static int32_t shellDumpResultToFile(const char *fname, TAOS_RES *tres);
|
||||
|
@ -101,11 +102,7 @@ int32_t shellRunSingleCommand(char *command) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
int32_t shellRunCommand(char *command) {
|
||||
if (shellIsEmptyCommand(command)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void shellRecordCommandToHistory(char *command) {
|
||||
SShellHistory *pHistory = &shell.history;
|
||||
if (pHistory->hstart == pHistory->hend ||
|
||||
pHistory->hist[(pHistory->hend + SHELL_MAX_HISTORY_SIZE - 1) % SHELL_MAX_HISTORY_SIZE] == NULL ||
|
||||
|
@ -120,6 +117,14 @@ int32_t shellRunCommand(char *command) {
|
|||
pHistory->hstart = (pHistory->hstart + 1) % SHELL_MAX_HISTORY_SIZE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int32_t shellRunCommand(char *command, bool recordHistory) {
|
||||
if (shellIsEmptyCommand(command)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (recordHistory) shellRecordCommandToHistory(command);
|
||||
|
||||
char quote = 0, *cmd = command;
|
||||
for (char c = *command++; c != 0; c = *command++) {
|
||||
|
@ -826,11 +831,15 @@ void shellSourceFile(const char *file) {
|
|||
size_t cmd_len = 0;
|
||||
char *line = NULL;
|
||||
char fullname[PATH_MAX] = {0};
|
||||
char sourceFileCommand[PATH_MAX + 8] = {0};
|
||||
|
||||
if (taosExpandDir(file, fullname, PATH_MAX) != 0) {
|
||||
tstrncpy(fullname, file, PATH_MAX);
|
||||
}
|
||||
|
||||
sprintf(sourceFileCommand, "source %s;",fullname);
|
||||
shellRecordCommandToHistory(sourceFileCommand);
|
||||
|
||||
TdFilePtr pFile = taosOpenFile(fullname, TD_FILE_READ | TD_FILE_STREAM);
|
||||
if (pFile == NULL) {
|
||||
fprintf(stderr, "failed to open file %s\r\n", fullname);
|
||||
|
@ -853,9 +862,13 @@ void shellSourceFile(const char *file) {
|
|||
continue;
|
||||
}
|
||||
|
||||
if (line[read_len - 1] == '\r') {
|
||||
line[read_len - 1] = ' ';
|
||||
}
|
||||
|
||||
memcpy(cmd + cmd_len, line, read_len);
|
||||
printf("%s%s\r\n", shell.info.promptHeader, cmd);
|
||||
shellRunCommand(cmd);
|
||||
shellRunCommand(cmd, false);
|
||||
memset(cmd, 0, TSDB_MAX_ALLOWED_SQL_LEN);
|
||||
cmd_len = 0;
|
||||
}
|
||||
|
@ -977,7 +990,7 @@ void *shellThreadLoop(void *arg) {
|
|||
}
|
||||
|
||||
taosResetTerminalMode();
|
||||
} while (shellRunCommand(command) == 0);
|
||||
} while (shellRunCommand(command, true) == 0);
|
||||
|
||||
taosMemoryFreeClear(command);
|
||||
shellWriteHistory();
|
||||
|
@ -1019,7 +1032,7 @@ int32_t shellExecute() {
|
|||
if (pArgs->commands != NULL) {
|
||||
printf("%s%s\r\n", shell.info.promptHeader, pArgs->commands);
|
||||
char *cmd = strdup(pArgs->commands);
|
||||
shellRunCommand(cmd);
|
||||
shellRunCommand(cmd, true);
|
||||
taosMemoryFree(cmd);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue