From 7f6dc0fe8e3c9aaec8aa295cc4459eabb8f2ada2 Mon Sep 17 00:00:00 2001
From: Peter Stephenson
Date: Fri, 6 Jun 2014 21:56:47 +0100
Subject: 32682 with tweaks: Add INC_APPEND_HISTORY_TIME. Revert
INC_APPEND_HISTORY behaviour.
---
Src/hist.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
(limited to 'Src/hist.c')
diff --git a/Src/hist.c b/Src/hist.c
index 1182994a2..64f88f559 100644
--- a/Src/hist.c
+++ b/Src/hist.c
@@ -935,9 +935,11 @@ hbegin(int dohist)
hf = getsparam("HISTFILE");
/*
- * For INCAPPENDHISTORY, when interactive, save the history here
+ * For INCAPPENDHISTORYTIME, when interactive, save the history here
* as it gives a better estimate of the times of commands.
*
+ * If INCAPPENDHISTORY is also set we've already done it.
+ *
* If SHAREHISTORY is also set continue to do so in the
* standard place, because that's safer about reading and
* rewriting history atomically.
@@ -950,7 +952,8 @@ hbegin(int dohist)
* so that (correctly) nothing happens here. But it shows
* I thought about it.
*/
- if (isset(INCAPPENDHISTORY) && !isset(SHAREHISTORY) &&
+ if (isset(INCAPPENDHISTORYTIME) && !isset(SHAREHISTORY) &&
+ !isset(INCAPPENDHISTORY) &&
!(histactive & HA_NOINC) && !strin && histsave_stack_pos == 0)
savehistfile(hf, 0, HFILE_USE_OPTIONS | HFILE_FAST);
}
@@ -1378,7 +1381,8 @@ hend(Eprog prog)
* For normal INCAPPENDHISTORY case and reasoning, see hbegin().
*/
if (isset(SHAREHISTORY) ? histfileIsLocked() :
- (isset(INCAPPENDHISTORY) && histsave_stack_pos != 0))
+ (isset(INCAPPENDHISTORY) || (isset(INCAPPENDHISTORYTIME) &&
+ histsave_stack_pos != 0)))
savehistfile(hf, 0, HFILE_USE_OPTIONS | HFILE_FAST);
unlockhistfile(hf); /* It's OK to call this even if we aren't locked */
/*
@@ -2542,7 +2546,7 @@ savehistfile(char *fn, int err, int writeflags)
}
if (writeflags & HFILE_USE_OPTIONS) {
if (isset(APPENDHISTORY) || isset(INCAPPENDHISTORY)
- || isset(SHAREHISTORY))
+ || isset(INCAPPENDHISTORYTIME) || isset(SHAREHISTORY))
writeflags |= HFILE_APPEND | HFILE_SKIPOLD;
else
histfile_linect = 0;
@@ -2578,7 +2582,7 @@ savehistfile(char *fn, int err, int writeflags)
tmpfile = NULL;
if (err) {
if (isset(APPENDHISTORY) || isset(INCAPPENDHISTORY)
- || isset(SHAREHISTORY))
+ || isset(INCAPPENDHISTORYTIME) || isset(SHAREHISTORY))
zerr("rewriting %s would change its ownership -- skipped", fn);
else
zerr("rewriting %s would change its ownership -- history not saved", fn);
--
cgit 1.4.1