Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package tcsh for openSUSE:Factory checked in 
at 2023-07-24 18:11:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/tcsh (Old)
 and      /work/SRC/openSUSE:Factory/.tcsh.new.1467 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "tcsh"

Mon Jul 24 18:11:56 2023 rev:94 rq:1100325 version:6.24.10

Changes:
--------
--- /work/SRC/openSUSE:Factory/tcsh/tcsh.changes        2023-07-15 
23:15:08.395508127 +0200
+++ /work/SRC/openSUSE:Factory/.tcsh.new.1467/tcsh.changes      2023-07-24 
18:12:06.061258902 +0200
@@ -1,0 +2,13 @@
+Mon Jul 24 08:12:01 UTC 2023 - Dr. Werner Fink <wer...@suse.de>
+
+- Extend tcsh-6.24.10-history-merge.dif
+  * Add a test case 
+
+-------------------------------------------------------------------
+Fri Jul 21 09:19:02 UTC 2023 - Dr. Werner Fink <wer...@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) 
+
+-------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ tcsh-6.24.10-history-merge.dif ++++++
--- /var/tmp/diff_new_pack.YKRWmN/_old  2023-07-24 18:12:06.829263422 +0200
+++ /var/tmp/diff_new_pack.YKRWmN/_new  2023-07-24 18:12:06.829263422 +0200
@@ -1,61 +1,88 @@
 ---
- sh.hist.c |   22 +++++++++++++++++-----
- 1 file changed, 17 insertions(+), 5 deletions(-)
+ sh.hist.c |    5 +++--
+ 1 file changed, 3 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 12:21:55.518480015 +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 USE_JENKINS_HASH 1
-@@ -1404,6 +1404,18 @@ loadhist(Char *fname, int mflg)
- void
- sethistory(int n)
- {
-+    int mflg = 0;
-+    struct varent *shist;
+ /* #define DEBUG_HIST 1 */
+ 
+-static const int fastMergeErase = 1;
++static int fastMergeErase = 1;
+ static unsigned histCount = 0;                /* number elements on history 
list */
+ static int histlen = 0;
+ static struct Hist *histTail = NULL;     /* last element on history list */
+@@ -1321,6 +1321,7 @@ rechist(Char *xfname, int ref)
+       }
+ 
+       if (merge) {
++          fastMergeErase = 0; /* Was true, now false to merge even with full 
history list */
+           jmp_buf_t osetexit;
+           if (lock) {
+ #ifndef WINNT_NATIVE
+@@ -1393,7 +1394,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))
+--- tests/history.at
++++ tests/history.at   2023-07-24 07:53:41.471413277 +0000
+@@ -218,6 +218,52 @@ dnl savehist) set to 0 instead of 1.
+ 
+ AT_CLEANUP()
+ 
++AT_SETUP([History merge])
++dnl Check if history merge really works out
 +
-+    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);
- }
++AT_DATA([hist-merge.csh],
++[[set histfile=test.history histdup=prev history=(6 "%h TIME %R\n")
++set savehist=(6 merge)
++printf "'%s' %s\n" "$histdup" "$history"
++history -c
++: 1
++: 2
++: 3
++: 4
++: 5
++history -S
++: a
++: b
++: c
++: d
++: e
++history -S
++history -L
++history 6
++]])
++
++AT_CHECK([tcsh -f -q -i < hist-merge.csh], ,
++[> 'prev' 6 %h TIME %R\n
++    24 TIME : b
++    25 TIME : c
++    26 TIME : d
++    27 TIME : e
++    28 TIME history -S
++    29 TIME history 6
++> exit
++],)
++
++dnl In broken case we see the former history instead
++dnl > 'prev' 6 %h TIME %R\n
++dnl    24 TIME : 4
++dnl    25 TIME : 3
++dnl    26 TIME : 2
++dnl    27 TIME : 1
++dnl    28 TIME history -S
++dnl    29 TIME history 6
++dnl > exit
++
++AT_CLEANUP()
+ 
+ dnl
+ dnl   History faults
 

Reply via email to