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 [4mLESS[24m(1) + Version 668: 06 Oct 2024 [4mLESS[24m(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 [4mLESSECHO[24m(1) + Version 668: 06 Oct 2024 [4mLESSECHO[24m(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 [4mLESSKEY[24m(1) + Version 668: 06 Oct 2024 [4mLESSKEY[24m(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";