Skip workaround but disable fastMergeErase instead to really be able to merge currently history with history file
OBS-URL: https://build.opensuse.org/package/show/shells/tcsh?expand=0&rev=156
This commit is contained in:
parent
f606df7bb1
commit
97243fe091
@ -1,60 +1,24 @@
|
||||
---
|
||||
sh.hist.c | 22 +++++++++++++++++-----
|
||||
1 file changed, 17 insertions(+), 5 deletions(-)
|
||||
sh.hist.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- sh.hist.c
|
||||
+++ sh.hist.c 2023-07-13 09:18:13.149624778 +0000
|
||||
@@ -105,7 +105,7 @@ hremove(struct Hist *hp)
|
||||
+++ sh.hist.c 2023-07-21 09:38:31.303857784 +0000
|
||||
@@ -64,7 +64,7 @@ static void hfree (struct Hist *);
|
||||
|
||||
/* Prune length of history list to specified size by history variable. */
|
||||
PG_STATIC void
|
||||
-discardExcess(int hlen)
|
||||
+discardExcess(int hlen, int mflg)
|
||||
{
|
||||
struct Hist *hp, *np;
|
||||
if (histTail == NULL) {
|
||||
@@ -116,13 +116,13 @@ discardExcess(int hlen)
|
||||
* the list is still too long scan the whole list as before. But only do a
|
||||
* full scan if the list is more than 6% (1/16th) too long. */
|
||||
while (histCount > (unsigned)hlen && (np = Histlist.Hnext)) {
|
||||
- if (eventno - np->Href >= hlen || hlen == 0)
|
||||
+ if ((eventno - np->Href >= hlen || hlen == 0) && !mflg)
|
||||
hremove(np), hfree(np);
|
||||
else
|
||||
break;
|
||||
}
|
||||
while (histCount > (unsigned)hlen && (np = histTail) != &Histlist) {
|
||||
- if (eventno - np->Href >= hlen || hlen == 0)
|
||||
+ if (eventno - np->Href >= hlen || hlen == 0 || mflg)
|
||||
hremove(np), hfree(np);
|
||||
else
|
||||
break;
|
||||
@@ -148,7 +148,7 @@ savehist(
|
||||
return;
|
||||
if (sp)
|
||||
(void) enthist(++eventno, sp, 1, mflg, histlen);
|
||||
- discardExcess(histlen);
|
||||
+ discardExcess(histlen, mflg);
|
||||
}
|
||||
/* #define DEBUG_HIST 1 */
|
||||
|
||||
#define USE_JENKINS_HASH 1
|
||||
@@ -1404,6 +1404,18 @@ loadhist(Char *fname, int mflg)
|
||||
void
|
||||
sethistory(int n)
|
||||
{
|
||||
+ int mflg = 0;
|
||||
+ struct varent *shist;
|
||||
+
|
||||
+ if ((shist = adrof(STRsavehist)) != NULL && shist->vec != NULL) {
|
||||
+ size_t i;
|
||||
+ for (i = 1; shist->vec[i]; i++) {
|
||||
+ if (eq(shist->vec[i], STRmerge)) {
|
||||
+ mflg++;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
histlen = n;
|
||||
- discardExcess(histlen);
|
||||
+ discardExcess(histlen, mflg);
|
||||
}
|
||||
-static const int fastMergeErase = 1;
|
||||
+static const int fastMergeErase = 0; /* Was true, now false to merge even with full history list */
|
||||
static unsigned histCount = 0; /* number elements on history list */
|
||||
static int histlen = 0;
|
||||
static struct Hist *histTail = NULL; /* last element on history list */
|
||||
@@ -1393,7 +1393,7 @@ loadhist(Char *fname, int mflg)
|
||||
/* During history merging (enthist sees mflg set), we disable management of
|
||||
* Hnum and Href (because fastMergeErase is true). So now reset all the
|
||||
* values based on the final ordering of the history list. */
|
||||
- if (mflg) {
|
||||
+ if (mflg && fastMergeErase) {
|
||||
int n = eventno;
|
||||
struct Hist *hp = &Histlist;
|
||||
while ((hp = hp->Hnext))
|
||||
|
@ -1,3 +1,10 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Jul 21 09:19:02 UTC 2023 - Dr. Werner Fink <werner@suse.de>
|
||||
|
||||
- Modify tcsh-6.24.10-history-merge.dif
|
||||
* Skip workaround but disable fastMergeErase instead to really be
|
||||
able to merge currently history with history file (bsc#1213484)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jul 14 11:29:02 UTC 2023 - Dr. Werner Fink <werner@suse.de>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user