mirror of
https://github.com/fluencelabs/redis
synced 2025-04-10 03:06:05 +00:00
Only save history when stdin is a tty (issue #465)
This commit is contained in:
parent
d9fac6c07a
commit
ca36b4ab31
@ -62,7 +62,6 @@ static struct config {
|
|||||||
int pubsub_mode;
|
int pubsub_mode;
|
||||||
int stdinarg; /* get last arg from stdin. (-x option) */
|
int stdinarg; /* get last arg from stdin. (-x option) */
|
||||||
char *auth;
|
char *auth;
|
||||||
char *historyfile;
|
|
||||||
int raw_output; /* output mode per command */
|
int raw_output; /* output mode per command */
|
||||||
sds mb_delim;
|
sds mb_delim;
|
||||||
} config;
|
} config;
|
||||||
@ -609,18 +608,31 @@ static char **convertToSds(int count, char** args) {
|
|||||||
|
|
||||||
#define LINE_BUFLEN 4096
|
#define LINE_BUFLEN 4096
|
||||||
static void repl() {
|
static void repl() {
|
||||||
int argc, j;
|
sds historyfile = NULL;
|
||||||
|
int history = 0;
|
||||||
char *line;
|
char *line;
|
||||||
|
int argc;
|
||||||
sds *argv;
|
sds *argv;
|
||||||
|
|
||||||
config.interactive = 1;
|
config.interactive = 1;
|
||||||
linenoiseSetCompletionCallback(completionCallback);
|
linenoiseSetCompletionCallback(completionCallback);
|
||||||
|
|
||||||
|
/* Only use history when stdin is a tty. */
|
||||||
|
if (isatty(fileno(stdin))) {
|
||||||
|
history = 1;
|
||||||
|
|
||||||
|
if (getenv("HOME") != NULL) {
|
||||||
|
historyfile = sdscatprintf(sdsempty(),"%s/.rediscli_history",getenv("HOME"));
|
||||||
|
linenoiseHistoryLoad(historyfile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
while((line = linenoise(context ? "redis> " : "not connected> ")) != NULL) {
|
while((line = linenoise(context ? "redis> " : "not connected> ")) != NULL) {
|
||||||
if (line[0] != '\0') {
|
if (line[0] != '\0') {
|
||||||
argv = sdssplitargs(line,&argc);
|
argv = sdssplitargs(line,&argc);
|
||||||
linenoiseHistoryAdd(line);
|
if (history) linenoiseHistoryAdd(line);
|
||||||
if (config.historyfile) linenoiseHistorySave(config.historyfile);
|
if (historyfile) linenoiseHistorySave(historyfile);
|
||||||
|
|
||||||
if (argv == NULL) {
|
if (argv == NULL) {
|
||||||
printf("Invalid argument(s)\n");
|
printf("Invalid argument(s)\n");
|
||||||
continue;
|
continue;
|
||||||
@ -654,8 +666,7 @@ static void repl() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Free the argument vector */
|
/* Free the argument vector */
|
||||||
for (j = 0; j < argc; j++)
|
while(argc--) sdsfree(argv[argc]);
|
||||||
sdsfree(argv[j]);
|
|
||||||
zfree(argv);
|
zfree(argv);
|
||||||
}
|
}
|
||||||
/* linenoise() returns malloc-ed lines like readline() */
|
/* linenoise() returns malloc-ed lines like readline() */
|
||||||
@ -691,17 +702,10 @@ int main(int argc, char **argv) {
|
|||||||
config.pubsub_mode = 0;
|
config.pubsub_mode = 0;
|
||||||
config.stdinarg = 0;
|
config.stdinarg = 0;
|
||||||
config.auth = NULL;
|
config.auth = NULL;
|
||||||
config.historyfile = NULL;
|
|
||||||
config.raw_output = !isatty(fileno(stdout)) && (getenv("FAKETTY") == NULL);
|
config.raw_output = !isatty(fileno(stdout)) && (getenv("FAKETTY") == NULL);
|
||||||
config.mb_delim = sdsnew("\n");
|
config.mb_delim = sdsnew("\n");
|
||||||
cliInitHelp();
|
cliInitHelp();
|
||||||
|
|
||||||
if (getenv("HOME") != NULL) {
|
|
||||||
config.historyfile = malloc(256);
|
|
||||||
snprintf(config.historyfile,256,"%s/.rediscli_history",getenv("HOME"));
|
|
||||||
linenoiseHistoryLoad(config.historyfile);
|
|
||||||
}
|
|
||||||
|
|
||||||
firstarg = parseOptions(argc,argv);
|
firstarg = parseOptions(argc,argv);
|
||||||
argc -= firstarg;
|
argc -= firstarg;
|
||||||
argv += firstarg;
|
argv += firstarg;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user