summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--Src/hist.c10
2 files changed, 12 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index be2f1b1e3..a8dc3b9e0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2013-10-07 Peter Stephenson <p.stephenson@samsung.com>
+ * 31794: Src/hist.c: further refinement that SHAREHISTORY should
+ work as it always did because it's careful about file locking.
+
* 31793: Src/hist.c (hbegin): Modify 31789 so that the save
history here only happens for interactive editing.
diff --git a/Src/hist.c b/Src/hist.c
index c58ce8b34..d1af30a29 100644
--- a/Src/hist.c
+++ b/Src/hist.c
@@ -928,7 +928,15 @@ hbegin(int dohist)
histactive = HA_ACTIVE | HA_NOINC;
hf = getsparam("HISTFILE");
- if (isset(INCAPPENDHISTORY) && !(histactive & HA_NOINC) && !strin)
+ /*
+ * For INCAPPENDHISTORY, when interactive, save the history here
+ * as it gives a better estimate of the times of commands.
+ * If SHAREHISTORY is also set continue to do so in the
+ * standard place, because that's safer about reading and
+ * rewriting history atomically.
+ */
+ if (isset(INCAPPENDHISTORY) && !isset(SHAREHISTORY) &&
+ !(histactive & HA_NOINC) && !strin)
savehistfile(hf, 0, HFILE_USE_OPTIONS | HFILE_FAST);
}