aboutsummaryrefslogtreecommitdiff
path: root/jim-interactive.c
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2011-07-13 16:44:29 +1000
committerSteve Bennett <steveb@workware.net.au>2011-07-18 11:33:44 +1000
commit2992a5502706f44b840dd8ef886647dd2f06efe4 (patch)
tree03f5d84198e8dcae83a27604de0b34c268fcae53 /jim-interactive.c
parent9c0d53835cae3b23e55ac008ce0bad626af3145a (diff)
downloadjimtcl-2992a5502706f44b840dd8ef886647dd2f06efe4.zip
jimtcl-2992a5502706f44b840dd8ef886647dd2f06efe4.tar.gz
jimtcl-2992a5502706f44b840dd8ef886647dd2f06efe4.tar.bz2
Don't load and save history if not on a tty
If jimsh is run in interactive mode but without a tty, don't bother to load and save line editing history. Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim-interactive.c')
-rw-r--r--jim-interactive.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/jim-interactive.c b/jim-interactive.c
index 90976ce..658e8d8 100644
--- a/jim-interactive.c
+++ b/jim-interactive.c
@@ -4,6 +4,7 @@
#include "jimautoconf.h"
#ifdef USE_LINENOISE
+#include <unistd.h>
#include "linenoise.h"
#else
@@ -32,7 +33,7 @@ int Jim_InteractivePrompt(Jim_Interp *interp)
const char *home;
home = getenv("HOME");
- if (home) {
+ if (home && isatty(STDIN_FILENO)) {
int history_len = strlen(home) + sizeof("/.jim_history");
history_file = Jim_Alloc(history_len);
snprintf(history_file, history_len, "%s/.jim_history", home);
@@ -109,7 +110,9 @@ int Jim_InteractivePrompt(Jim_Interp *interp)
}
linenoiseHistoryAdd(Jim_String(scriptObjPtr));
- linenoiseHistorySave(history_file);
+ if (history_file) {
+ linenoiseHistorySave(history_file);
+ }
#endif
retcode = Jim_EvalObj(interp, scriptObjPtr);
Jim_DecrRefCount(interp, scriptObjPtr);