summary refs log tree commit diff
path: root/bin/cash/histedit.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--bin/cash/histedit.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/bin/cash/histedit.c b/bin/cash/histedit.c
index d1e77f51..156800a1 100644
--- a/bin/cash/histedit.c
+++ b/bin/cash/histedit.c
@@ -146,12 +146,19 @@ bad:
 			el_source(el, NULL);
 		}
 	} else {
+		HistEvent he;
+		const char *hf;
+
 		INTOFF;
 		if (el) {	/* no editing if not interactive */
 			el_end(el);
 			el = NULL;
 		}
 		if (hist) {
+			hf = lookupvar("HISTFILE");
+			if (hf != NULL && *hf != '\0')
+				if (history(hist, &he, H_SAVE, hf) == -1)
+					out2fmt_flush("sh: can't save history\n");
 			history_end(hist);
 			hist = NULL;
 		}
@@ -161,6 +168,15 @@ bad:
 
 
 void
+sethistfile(const char *hf)
+{
+	HistEvent he;
+
+	if (hist != NULL && hf != NULL && *hf != '\0')
+		history(hist, &he, H_LOAD, hf);
+}
+
+void
 sethistsize(const char *hs)
 {
 	int histsize;