Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package less for openSUSE:Factory checked in 
at 2024-12-20 15:24:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/less (Old)
 and      /work/SRC/openSUSE:Factory/.less.new.1881 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "less"

Fri Dec 20 15:24:27 2024 rev:77 rq:1232652 version:668

Changes:
--------
--- /work/SRC/openSUSE:Factory/less/less.changes        2024-10-25 
19:19:50.391120126 +0200
+++ /work/SRC/openSUSE:Factory/.less.new.1881/less.changes      2024-12-20 
15:24:34.773086590 +0100
@@ -1,0 +2,17 @@
+Sun Dec 15 06:16:41 UTC 2024 - Bernhard Wiedemann <bwiedem...@suse.com>
+
+- Update to 668
+  * Fix crash when using --header on command line 
+  * Fix possible crash when scrolling left/right or toggling -S 
+  * Fix bug when using #stop in a lesskey file 
+  * Fix bug when using --shift or --match-shift on command line with a 
parameter starting with '.' 
+  * Fix bug in R command when file size changes 
+  * Fix bug using --header when file does not fill screen 
+  * Fix ^X bug when output is not a terminal 
+  * Fix bug where ^Z is not handled immediately 
+  * Fix bug where first byte from a LESSOPEN filter is deleted if it is 
greater than 0x7F 
+  * Fix uninitialized variable in edit_ifile 
+  * Fix incorrect handling of UTF-8 chars in prompts
+- Add reproducible.patch to override build date (boo#1047218)
+
+-------------------------------------------------------------------

Old:
----
  less-661.sig
  less-661.tar.gz

New:
----
  less-668.sig
  less-668.tar.gz
  reproducible.patch

BETA DEBUG BEGIN:
  New:  * Fix incorrect handling of UTF-8 chars in prompts
- Add reproducible.patch to override build date (boo#1047218)
BETA DEBUG END:

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

Other differences:
------------------
++++++ less.spec ++++++
--- /var/tmp/diff_new_pack.cMdLlz/_old  2024-12-20 15:24:35.853131105 +0100
+++ /var/tmp/diff_new_pack.cMdLlz/_new  2024-12-20 15:24:35.853131105 +0100
@@ -23,7 +23,7 @@
 %define use_usretc 1
 %endif
 Name:           less
-Version:        661
+Version:        668
 Release:        0
 Summary:        Text File Browser and Pager Similar to more
 License:        BSD-2-Clause OR GPL-3.0-or-later
@@ -38,6 +38,7 @@
 Source6:        
https://www.greenwoodsoftware.com/less/pubkey.asc#/%{name}.keyring
 Patch0:         less-429-shell.patch
 Patch2:         less-429-more.patch
+Patch3:         reproducible.patch
 BuildRequires:  automake
 BuildRequires:  ncurses-devel
 BuildRequires:  pkgconfig

++++++ less-661.tar.gz -> less-668.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/NEWS new/less-668/NEWS
--- old/less-661/NEWS   2024-06-29 19:16:10.000000000 +0200
+++ new/less-668/NEWS   2024-10-07 00:30:57.000000000 +0200
@@ -11,6 +11,39 @@
 
 ======================================================================
 
+       Major changes between "less" versions 661 and 668
+
+* Make 256/true colors work better on Windows without -Da
+  (github #539, github #546, github #562).
+
+* Fix build using --with-secure (github #544).
+
+* Fix crash when using --header on command line (github #545).
+
+* Fix possible crash when scrolling left/right or toggling -S (github #547).
+
+* Fix bug when using #stop in a lesskey file (github #551).
+
+* Fix bug when using --shift or --match-shift on command line with
+  a parameter starting with '.' (github #554).
+
+* Fix bug in R command when file size changes (github #553).
+
+* Fix bug using --header when file does not fill screen (github #556).
+
+* Fix ^X bug when output is not a terminal (github #558).
+
+* Fix bug where ^Z is not handled immediately (github #563).
+
+* Fix bug where first byte from a LESSOPEN filter is deleted if it is
+  greater than 0x7F (github #568).
+
+* Fix uninitialized variable in edit_ifile (github #573).
+
+* Fix incorrect handling of UTF-8 chars in prompts (github #576).
+
+======================================================================
+
        Major changes between "less" versions 643 and 661
 
 * Add ^O^N, ^O^P, ^O^L and ^O^O commands and mouse clicks (with --mouse)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/ch.c new/less-668/ch.c
--- old/less-661/ch.c   2024-06-29 19:16:06.000000000 +0200
+++ new/less-668/ch.c   2024-10-07 00:30:32.000000000 +0200
@@ -708,6 +708,9 @@
        {
                ch_fsize = NULL_POSITION;
                ch_flags &= ~CH_CANSEEK;
+       } else
+       {
+               ch_fsize = (ch_flags & CH_HELPFILE) ? size_helpdata : 
filesize(ch_file);
        }
 
        if (less_lseek(ch_file, (less_off_t)0, SEEK_SET) == BAD_LSEEK)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/command.c new/less-668/command.c
--- old/less-661/command.c      2024-06-29 19:16:06.000000000 +0200
+++ new/less-668/command.c      2024-10-07 00:30:34.000000000 +0200
@@ -1015,7 +1015,7 @@
 static char getccu(void)
 {
        int c = 0;
-       while (c == 0)
+       while (c == 0 && !ABORT_SIGS())
        {
                if (ungot == NULL)
                {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/decode.c new/less-668/decode.c
--- old/less-661/decode.c       2024-06-29 19:16:06.000000000 +0200
+++ new/less-668/decode.c       2024-10-07 00:30:35.000000000 +0200
@@ -37,9 +37,11 @@
 extern int mousecap;
 extern int sc_height;
 
+#if USERFILE
 /* "content" is lesskey source, never binary. */
 static void add_content_table(int (*call_lesskey)(constant char *, lbool), 
constant char *envname, lbool sysvar);
 static int add_hometable(int (*call_lesskey)(constant char *, lbool), constant 
char *envname, constant char *def_filename, lbool sysvar);
+#endif /* USERFILE */
 
 #define SK(k) \
        SK_SPECIAL_KEY, (k), 6, 1, 1, 1
@@ -389,10 +391,10 @@
                 */
                add_hometable(lesskey, "LESSKEY", LESSKEYFILE, FALSE);
        }
-#endif
        
        add_content_table(lesskey_content, "LESSKEY_CONTENT_SYSTEM", TRUE);
        add_content_table(lesskey_content, "LESSKEY_CONTENT", FALSE);
+#endif /* USERFILE */
 }
 
 /*
@@ -713,8 +715,10 @@
                                /*
                                 * A_END_LIST is a special marker that tells 
                                 * us to abort the cmd search.
+                                * Negative action means accept this action
+                                * without searching any more cmd tables.
                                 */
-                               return (A_UINVALID);
+                               return -a;
                        }
                        while (*p++ != '\0')
                                continue;
@@ -751,8 +755,10 @@
                        taction = A_INVALID;
                if (taction != A_INVALID)
                {
-                       action = taction;
                        *sp = tsp;
+                       if (taction < 0)
+                               return (-taction);
+                       action = taction;
                }
        }
        return (action);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/defines.wn new/less-668/defines.wn
--- old/less-661/defines.wn     2024-06-29 19:16:19.000000000 +0200
+++ new/less-668/defines.wn     2024-10-07 00:31:47.000000000 +0200
@@ -196,7 +196,7 @@
 #define        CMDBUF_SIZE     2048    /* Buffer for multichar commands */
 #define        UNGOT_SIZE      200     /* Max chars to unget() */
 #define        LINEBUF_SIZE    1024    /* Initial max size of line in input 
file */
-#define        OUTBUF_SIZE     1024    /* Output buffer */
+#define        OUTBUF_SIZE     8192    /* Output buffer: 8K avoids 
end-of-buffer bugs in win_flush */
 #define        PROMPT_SIZE     2048    /* Max size of prompt string */
 #define        TERMBUF_SIZE    2048    /* Termcap buffer for tgetent */
 #define        TERMSBUF_SIZE   1024    /* Buffer to hold termcap strings */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/edit.c new/less-668/edit.c
--- old/less-661/edit.c 2024-06-29 19:16:06.000000000 +0200
+++ new/less-668/edit.c 2024-10-07 00:30:36.000000000 +0200
@@ -441,7 +441,7 @@
        IFILE was_curr_ifile;
        char *p;
        PARG parg;
-       ssize_t nread;
+       ssize_t nread = 0;
 
        if (ifile == curr_ifile)
        {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/filename.c new/less-668/filename.c
--- old/less-661/filename.c     2024-06-29 19:16:06.000000000 +0200
+++ new/less-668/filename.c     2024-10-07 00:30:37.000000000 +0200
@@ -912,7 +912,7 @@
 #if HAVE_FILENO
        if (returnfd)
        {
-               char c;
+               unsigned char c;
                int f;
 
                /*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/forwback.c new/less-668/forwback.c
--- old/less-661/forwback.c     2024-06-29 19:16:07.000000000 +0200
+++ new/less-668/forwback.c     2024-10-07 00:30:38.000000000 +0200
@@ -216,7 +216,8 @@
        int nlines = 0;
        lbool do_repaint;
 
-       pos = after_header_pos(pos);
+       if (pos != NULL_POSITION)
+               pos = after_header_pos(pos);
        squish_check();
 
        /*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/funcs.h new/less-668/funcs.h
--- old/less-661/funcs.h        2024-06-29 19:16:11.000000000 +0200
+++ new/less-668/funcs.h        2024-10-07 00:31:02.000000000 +0200
@@ -8,6 +8,7 @@
 public void quit(int status);
 public int secure_allow(int features);
 public void raw_mode(int on);
+public void screen_size_changed(void);
 public constant char * special_key_str(int key);
 public void init_win_colors(void);
 public void get_term(void);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/help.c new/less-668/help.c
--- old/less-661/help.c 2024-06-29 19:16:07.000000000 +0200
+++ new/less-668/help.c 2024-10-07 00:30:39.000000000 +0200
@@ -1,4 +1,4 @@
-/* This file was generated by mkhelp.pl from less.hlp at 17:16 on 2024/6/29 */
+/* This file was generated by mkhelp.pl from less.hlp at 22:29 on 2024/10/6 */
 #include "less.h"
 constant char helpdata[] = {
 '\n',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/less.man new/less-668/less.man
--- old/less-661/less.man       2024-06-29 19:16:12.000000000 +0200
+++ new/less-668/less.man       2024-10-07 00:31:11.000000000 +0200
@@ -2341,4 +2341,4 @@
        For more information, see the less homepage at
        https://greenwoodsoftware.com/less.
 
-                           Version 661: 29 Jun 2024                    
LESS(1)
+                           Version 668: 06 Oct 2024                    
LESS(1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/less.nro new/less-668/less.nro
--- old/less-661/less.nro       2024-06-29 19:16:12.000000000 +0200
+++ new/less-668/less.nro       2024-10-07 00:31:11.000000000 +0200
@@ -1,5 +1,5 @@
 '\" t
-.TH LESS 1 "Version 661: 29 Jun 2024"
+.TH LESS 1 "Version 668: 06 Oct 2024"
 .SH NAME
 less \- display the contents of a file in a terminal
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/lessecho.man new/less-668/lessecho.man
--- old/less-661/lessecho.man   2024-06-29 19:16:13.000000000 +0200
+++ new/less-668/lessecho.man   2024-10-07 00:31:14.000000000 +0200
@@ -48,4 +48,4 @@
 
        Report bugs at https://github.com/gwsw/less/issues.
 
-                           Version 661: 29 Jun 2024                
LESSECHO(1)
+                           Version 668: 06 Oct 2024                
LESSECHO(1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/lessecho.nro new/less-668/lessecho.nro
--- old/less-661/lessecho.nro   2024-06-29 19:16:13.000000000 +0200
+++ new/less-668/lessecho.nro   2024-10-07 00:31:13.000000000 +0200
@@ -1,4 +1,4 @@
-.TH LESSECHO 1 "Version 661: 29 Jun 2024"
+.TH LESSECHO 1 "Version 668: 06 Oct 2024"
 .SH NAME
 lessecho \- expand metacharacters
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/lesskey.man new/less-668/lesskey.man
--- old/less-661/lesskey.man    2024-06-29 19:16:13.000000000 +0200
+++ new/less-668/lesskey.man    2024-10-07 00:31:13.000000000 +0200
@@ -397,4 +397,4 @@
        Mark Nudelman
        Report bugs at https://github.com/gwsw/less/issues.
 
-                           Version 661: 29 Jun 2024                 
LESSKEY(1)
+                           Version 668: 06 Oct 2024                 
LESSKEY(1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/lesskey.nro new/less-668/lesskey.nro
--- old/less-661/lesskey.nro    2024-06-29 19:16:13.000000000 +0200
+++ new/less-668/lesskey.nro    2024-10-07 00:31:12.000000000 +0200
@@ -1,5 +1,5 @@
 '\" t
-.TH LESSKEY 1 "Version 661: 29 Jun 2024"
+.TH LESSKEY 1 "Version 668: 06 Oct 2024"
 .SH NAME
 lesskey \- customize key bindings for less
 .SH "SYNOPSIS (deprecated)"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/main.c new/less-668/main.c
--- old/less-661/main.c 2024-06-29 19:16:05.000000000 +0200
+++ new/less-668/main.c 2024-10-07 00:30:30.000000000 +0200
@@ -25,6 +25,8 @@
 public unsigned less_acp = CP_ACP;
 #endif
 
+#include "option.h"
+
 public char *   every_first_cmd = NULL;
 public lbool    new_file;
 public int      is_tty;
@@ -37,6 +39,7 @@
 public constant char *progname;
 public int      quitting;
 public int      dohelp;
+public char *   init_header = NULL;
 static int      secure_allow_features;
 
 #if LOGFILE
@@ -450,6 +453,12 @@
                                one_screen = get_one_screen();
                }
        }
+       if (init_header != NULL)
+       {
+               opt_header(TOGGLE, init_header);
+               free(init_header);
+               init_header = NULL;
+       }
 
        if (errmsgs > 0)
        {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/optfunc.c new/less-668/optfunc.c
--- old/less-661/optfunc.c      2024-06-29 19:16:08.000000000 +0200
+++ new/less-668/optfunc.c      2024-10-07 00:30:44.000000000 +0200
@@ -70,6 +70,7 @@
 extern int nosearch_header_lines;
 extern int nosearch_header_cols;
 extern POSITION header_start_pos;
+extern char *init_header;
 #if LOGFILE
 extern char *namelogfile;
 extern lbool force_logfile;
@@ -1063,6 +1064,10 @@
        switch (type)
        {
        case INIT:
+               /* Can't call parse_header now because input file is not yet 
opened,
+                * so find_pos won't work. */
+               init_header = save(s);
+               break;
        case TOGGLE: {
                int lines = header_lines;
                int cols = header_cols;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/os.c new/less-668/os.c
--- old/less-661/os.c   2024-06-29 19:16:08.000000000 +0200
+++ new/less-668/os.c   2024-10-07 00:30:45.000000000 +0200
@@ -80,6 +80,7 @@
 extern int follow_mode;
 extern int scanning_eof;
 extern char intr_char;
+extern int is_tty;
 #if !MSDOS_COMPILER
 extern int tty;
 #endif
@@ -237,7 +238,7 @@
        }
 #endif
 #if USE_POLL
-       if (fd != tty && use_poll)
+       if (is_tty && fd != tty && use_poll)
        {
                int ret = check_poll(fd, tty);
                if (ret != 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/output.c new/less-668/output.c
--- old/less-661/output.c       2024-06-29 19:16:08.000000000 +0200
+++ new/less-668/output.c       2024-10-07 00:30:46.000000000 +0200
@@ -79,6 +79,12 @@
        at_exit();
 }
 
+/*
+ * win_flush has at least one non-critical issue when an escape sequence
+ * begins at the last char of the buffer, and possibly more issues.
+ * as a temporary measure to reduce likelyhood of encountering end-of-buffer
+ * issues till the SGR parser is replaced, OUTBUF_SIZE is 8K on Windows.
+ */
 static char obuf[OUTBUF_SIZE];
 static char *ob = obuf;
 static int outfd = 2; /* stderr */
@@ -236,6 +242,12 @@
        WIN32setcolors(fg, bg);
 }
 
+/* like is_ansi_end, but doesn't assume c != 0  (returns 0 for c == 0) */
+static int is_ansi_end_0(char c)
+{
+       return c && is_ansi_end((unsigned char)c);
+}
+
 static void win_flush(void)
 {
        if (ctldisp != OPT_ONPLUS
@@ -254,6 +266,21 @@
                char *anchor, *p, *p_next;
                static t_sgr sgr;
 
+               /* when unsupported SGR value is encountered, like 38/48 for
+                * 256/true colors, then we abort processing this sequence,
+                * because it may expect followup values, but we don't know
+                * how many, so we've lost sync of this sequence parsing.
+                * Without VT enabled it's OK because we can't do much anyway,
+                * but with VT enabled we choose to passthrough this sequence
+                * to the terminal - which can handle it better than us.
+                * however, this means that our "sgr" var is no longer in sync
+                * with the actual terminal state, which can lead to broken
+                * colors with future sequences which we _can_ fully parse.
+                * in such case, once it happens, we keep passthrough sequences
+                * until we know we're in sync again - on a valid reset.
+                */
+               static int sgr_bad_sync;
+
                for (anchor = p_next = obuf;
                         (p_next = memchr(p_next, ESC, ob - p_next)) != NULL; )
                {
@@ -279,7 +306,7 @@
                                        anchor = p;
                                }
                                p += 2;  /* Skip the "ESC-[" */
-                               if (is_ansi_end(*p))
+                               if (is_ansi_end_0(*p))
                                {
                                        /*
                                         * Handle null escape sequence
@@ -289,6 +316,7 @@
                                        anchor = p_next = p;
                                        update_sgr(&sgr, 0);
                                        set_win_colors(&sgr);
+                                       sgr_bad_sync = 0;
                                        continue;
                                }
                                p_next = p;
@@ -297,7 +325,7 @@
                                 * Parse and apply SGR values to the SGR state
                                 * based on the escape sequence. 
                                 */
-                               while (!is_ansi_end(*p))
+                               while (!is_ansi_end_0(*p))
                                {
                                        char *q;
                                        long code = strtol(p, &q, 10);
@@ -310,14 +338,13 @@
                                                 * in the buffer.
                                                 */
                                                size_t slop = ptr_diff(q, 
anchor);
-                                               /* {{ strcpy args overlap! }} */
-                                               strcpy(obuf, anchor);
+                                               memmove(obuf, anchor, slop);
                                                ob = &obuf[slop];
                                                return;
                                        }
 
                                        if (q == p ||
-                                               (!is_ansi_end(*q) && *q != ';'))
+                                               (!is_ansi_end_0(*q) && *q != 
';'))
                                        {
                                                /*
                                                 * can't parse. passthrough
@@ -331,12 +358,26 @@
 
                                        if (!bad_code)
                                                bad_code = update_sgr(&sgr, 
code);
+
+                                       if (bad_code)
+                                               sgr_bad_sync = 1;
+                                       else if (code == 0)
+                                               sgr_bad_sync = 0;
+
                                        p = q;
                                }
-                               if (!is_ansi_end(*p) || p == p_next)
+                               if (!is_ansi_end_0(*p) || p == p_next)
                                        break;
 
-                               set_win_colors(&sgr);
+                               if (sgr_bad_sync && vt_enabled) {
+                                       /* this or a prior sequence had unknown
+                                        * SGR value. passthrough all sequences
+                                        * until we're in-sync again
+                                        */
+                                       WIN32textout(anchor, ptr_diff(p+1, 
anchor));
+                               } else {
+                                       set_win_colors(&sgr);
+                               }
                                p_next = anchor = p + 1;
                        } else
                                p_next++;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/position.c new/less-668/position.c
--- old/less-661/position.c     2024-06-29 19:16:08.000000000 +0200
+++ new/less-668/position.c     2024-10-07 00:30:47.000000000 +0200
@@ -256,7 +256,7 @@
                return -1;
        cvt_ops = get_cvt_ops(0); /* {{ Passing 0 ignores SRCH_NO_REGEX; does 
it matter? }} */
        /* {{ It would be nice to be able to call cvt_text with dst=NULL, to 
avoid need to alloc a useless cline. }} */
-       cline = (char *) ecalloc(1, line_len+1);
+       cline = (char *) ecalloc(1, cvt_length(line_len, cvt_ops));
        cvt_text(cline, line, NULL, &line_len, cvt_ops);
        free(cline);
        return (int) line_len;  /*{{type-issue}}*/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/prompt.c new/less-668/prompt.c
--- old/less-661/prompt.c       2024-06-29 19:16:08.000000000 +0200
+++ new/less-668/prompt.c       2024-10-07 00:30:48.000000000 +0200
@@ -117,17 +117,15 @@
        ap_estr(s, FALSE);
 }
 
-
 /*
  * Append a character to the end of the message.
  */
 static void ap_char(char c)
 {
-       char buf[2];
-
-       buf[0] = c;
-       buf[1] = '\0';
-       ap_str(buf);
+       if (mp + 1 >= message + PROMPT_SIZE)
+               return;
+       *mp++ = c;
+       *mp = '\0';
 }
 
 /*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/screen.c new/less-668/screen.c
--- old/less-661/screen.c       2024-06-29 19:16:05.000000000 +0200
+++ new/less-668/screen.c       2024-10-07 00:30:31.000000000 +0200
@@ -911,7 +911,17 @@
        }
        if (sc_width <= 0)
                sc_width = DEF_SC_WIDTH;
+       screen_size_changed();
+}
+
+/*
+ * Recalculate things that depend on the screen size.
+ */
+public void screen_size_changed(void)
+{
        calc_jump_sline();
+       calc_shift_count();
+       calc_match_shift();
 }
 
 #if MSDOS_COMPILER==MSOFTC
@@ -3183,8 +3193,11 @@
                /*
                 * We've got UTF-8 text in a non-UTF-8 console.  Convert it to
                 * wide and use WriteConsoleW.
+                * Biggest input len is OUTBUF_SIZE of obuf from win_flush,
+                * which is also the biggest output count if it's ASCII.
+                * "static" wtext is not a state - only avoid 16K on stack.
                 */
-               WCHAR wtext[1024];
+               static WCHAR wtext[OUTBUF_SIZE];
                len = MultiByteToWideChar(CP_UTF8, 0, text, len, wtext, 
countof(wtext));
                WriteConsoleW(con_out, wtext, len, &written, NULL);
        } else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/signal.c new/less-668/signal.c
--- old/less-661/signal.c       2024-06-29 19:16:08.000000000 +0200
+++ new/less-668/signal.c       2024-10-07 00:30:49.000000000 +0200
@@ -248,9 +248,7 @@
                if (sc_width != old_width || sc_height != old_height)
                {
                        wscroll = (sc_height + 1) / 2;
-                       calc_jump_sline();
-                       calc_shift_count();
-                       calc_match_shift();
+                       screen_size_changed();
                }
                screen_trashed();
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/less-661/version.c new/less-668/version.c
--- old/less-661/version.c      2024-06-29 19:16:09.000000000 +0200
+++ new/less-668/version.c      2024-10-07 00:30:51.000000000 +0200
@@ -1022,6 +1022,16 @@
 v659  6/20/24   Fix typo in help.
 v660  6/24/24   Fix bug in ixerror.
 v661  6/29/24   Simpler fix for ixerror bug.
+v662  8/8/24    Fix build with --with-secure; improve true colors on Windows;
+                fix crash with --header; fix crash with -S; fix #stop;
+                fix --shift with fractional parameter; fix EOF bug in R 
command;
+                fix --header with short file; fix ^X bug when output is not 
tty.
+v663  8/16/24   Fix ^X bug when output is not a tty.
+v664  8/28/24   Fix Windows compile error, fix output bug on Windows with -Da.
+v665  9/4/24    Fix ^Z bug.
+v666  9/21/24   Fix missing first byte from LESSOPEN if >0x7f.
+v667  9/26/24   Fix uninitialized variable in edit_ifile.
+v668  10/6/24   Fix UTF-8 chars in prompt.
 */
 
-char version[] = "661";
+char version[] = "668";


++++++ reproducible.patch ++++++
https://github.com/gwsw/less/pull/567
>From c02f7554a1e5685e4332fb6857e95761953c8db4 Mon Sep 17 00:00:00 2001
From: Mark Nudelman <ma...@greenwoodsoftware.com>
Date: Mon, 9 Sep 2024 14:48:10 -0700
Subject: [PATCH] Allow SOURCE_DATE_EPOCH to override timestamps in generated
 files.

Related to #567.

diff --git a/mkhelp.pl b/mkhelp.pl
index e93535b..452d9a0 100755
--- a/mkhelp.pl
+++ b/mkhelp.pl
@@ -7,7 +7,7 @@ use strict;
 # whose content is the input to this script.
 
 {
-    my ($sec,$min,$hour,$mday,$mon,$year) = gmtime();
+    my ($sec,$min,$hour,$mday,$mon,$year) = gmtime($ENV{SOURCE_DATE_EPOCH} // 
time());
     printf "/* This file was generated by mkhelp.pl from less.hlp at %d:%02d 
on %d/%d/%d */\n",
         $hour, $min, $year+1900, $mon+1, $mday;
     print "#include \"less.h\"\n";

Reply via email to