@@ -9,16 +9,19 @@
#usr/include/readline/tilde.h
#usr/lib/libhistory.so
usr/lib/libhistory.so.8
-usr/lib/libhistory.so.8.2
+usr/lib/libhistory.so.8.3
#usr/lib/libreadline.so
usr/lib/libreadline.so.8
-usr/lib/libreadline.so.8.2
+usr/lib/libreadline.so.8.3
#usr/lib/pkgconfig/history.pc
#usr/lib/pkgconfig/readline.pc
#usr/share/doc/readline
#usr/share/doc/readline/CHANGES
#usr/share/doc/readline/INSTALL
#usr/share/doc/readline/README
+#usr/share/doc/readline/history.html
+#usr/share/doc/readline/readline.html
+#usr/share/doc/readline/rluserman.html
#usr/share/info/history.info
#usr/share/info/readline.info
#usr/share/info/rluserman.info
@@ -1,7 +1,7 @@
###############################################################################
# #
# IPFire.org - A linux based firewall #
-# Copyright (C) 2007-2024 IPFire Team <info@ipfire.org> #
+# Copyright (C) 2007-2025 IPFire Team <info@ipfire.org> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
@@ -24,7 +24,8 @@
include Config
-VER = 8.2
+VER = 8.3
+PATCHVER = 1
# https://ftp.gnu.org/gnu/readline/
THISAPP = readline-$(VER)
@@ -41,7 +42,7 @@ objects = $(DL_FILE)
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
-$(DL_FILE)_BLAKE2 = 7974322b9c092a756a79e537df08e8532f8e0fcb598f77732e28287c33ebec9e9837ed88b43334c310892d56a871b423903f0f564def2fbe700a1004f2ae7b18
+$(DL_FILE)_BLAKE2 = 45d6fe7e34c56d309102a94aa776a7f5284201e844450e14ff818df9fa84a72154bdca70f11828c94954b080cbbe4666fa0b00ffa8460118ec8f3ea551b73dad
install : $(TARGET)
@@ -72,9 +73,11 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
- for i in $$(seq 1 13); do \
- cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/readline/readline82-$$(printf "%03d" "$${i}") || exit 1; \
+ifneq "$(PATCHVER)" "0"
+ for i in $$(seq 1 $(PATCHVER)); do \
+ cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/readline/readline$(subst .,,$(VER))-$$(printf "%03d" "$${i}") || exit 1; \
done
+endif
cd $(DIR_APP) && ./configure \
--prefix=/usr \
deleted file mode 100644
@@ -1,42 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-001
-
-Bug-Reported-by: Kan-Ru Chen <koster@debian.org>
-Bug-Reference-ID:
-Bug-Reference-URL: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1021109
-
-Bug-Description:
-
-Starting a readline application with an invalid locale specification for
-LC_ALL/LANG/LC_CTYPE can cause it crash on the first call to readline.
-
-Patch (apply with `patch -p0'):
-
-*** ../readline-8.2-patched/nls.c 2022-08-15 09:38:51.000000000 -0400
---- nls.c 2022-10-05 09:23:22.000000000 -0400
-***************
-*** 142,145 ****
---- 142,149 ----
- lspec = "";
- ret = setlocale (LC_CTYPE, lspec); /* ok, since it does not change locale */
-+ if (ret == 0 || *ret == 0)
-+ ret = setlocale (LC_CTYPE, (char *)NULL);
-+ if (ret == 0 || *ret == 0)
-+ ret = RL_DEFAULT_LOCALE;
- #else
- ret = (lspec == 0 || *lspec == 0) ? RL_DEFAULT_LOCALE : lspec;
-
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 0
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 1
deleted file mode 100644
@@ -1,48 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-002
-
-Bug-Reported-by: srobertson@peratonlabs.com
-Bug-Reference-ID:
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-09/msg00049.html
-
-Bug-Description:
-
-It's possible for readline to try to zero out a line that's not null-
-terminated, leading to a memory fault.
-
-Patch (apply with `patch -p0'):
-
-*** ../readline-8.2-patched/display.c 2022-04-05 10:47:31.000000000 -0400
---- display.c 2022-12-13 13:11:22.000000000 -0500
-***************
-*** 2684,2692 ****
-
- if (visible_line)
-! {
-! temp = visible_line;
-! while (*temp)
-! *temp++ = '\0';
-! }
- rl_on_new_line ();
- forced_display++;
---- 2735,2740 ----
-
- if (visible_line)
-! memset (visible_line, 0, line_size);
-!
- rl_on_new_line ();
- forced_display++;
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 1
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 2
deleted file mode 100644
@@ -1,43 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-003
-
-Bug-Reported-by: Stefan Klinger <readline-gnu.org@stefan-klinger.de>
-Bug-Reference-ID:
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2023-08/msg00018.html
-
-Bug-Description:
-
-Patch (apply with `patch -p0'):
-
-The custom color prefix that readline uses to color possible completions
-must have a leading `.'.
-
-*** ../readline-8.2-patched/colors.c 2021-12-08 11:38:25.000000000 -0500
---- colors.c 2023-08-28 16:40:04.000000000 -0400
-***************
-*** 74,78 ****
- static void restore_default_color (void);
-
-! #define RL_COLOR_PREFIX_EXTENSION "readline-colored-completion-prefix"
-
- COLOR_EXT_TYPE *_rl_color_ext_list = 0;
---- 74,78 ----
- static void restore_default_color (void);
-
-! #define RL_COLOR_PREFIX_EXTENSION ".readline-colored-completion-prefix"
-
- COLOR_EXT_TYPE *_rl_color_ext_list = 0;
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 2
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 3
deleted file mode 100644
@@ -1,65 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-004
-
-Bug-Reported-by: Henry Bent <henry.r.bent@gmail.com>
-Bug-Reference-ID:
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2022-11/msg00044.html
-
-Bug-Description:
-
-Patch (apply with `patch -p0'):
-
-There are systems that supply one of select or pselect, but not both.
-
-*** ../readline-8.2-patched/input.c 2022-04-08 15:43:24.000000000 -0400
---- input.c 2022-11-28 09:41:08.000000000 -0500
-***************
-*** 152,156 ****
---- 152,158 ----
- int _rl_timeout_init (void);
- int _rl_timeout_sigalrm_handler (void);
-+ #if defined (RL_TIMEOUT_USE_SELECT)
- int _rl_timeout_select (int, fd_set *, fd_set *, fd_set *, const struct timeval *, const sigset_t *);
-+ #endif
-
- static void _rl_timeout_handle (void);
-***************
-*** 249,253 ****
- int chars_avail, k;
- char input;
-! #if defined(HAVE_SELECT)
- fd_set readfds, exceptfds;
- struct timeval timeout;
---- 251,255 ----
- int chars_avail, k;
- char input;
-! #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
- fd_set readfds, exceptfds;
- struct timeval timeout;
-***************
-*** 806,810 ****
- unsigned char c;
- int fd;
-! #if defined (HAVE_PSELECT)
- sigset_t empty_set;
- fd_set readfds;
---- 815,819 ----
- unsigned char c;
- int fd;
-! #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
- sigset_t empty_set;
- fd_set readfds;
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 3
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 4
deleted file mode 100644
@@ -1,50 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-005
-
-Bug-Reported-by: Simon Marchi <simon.marchi@polymtl.ca>
-Bug-Reference-ID:
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2022-09/msg00005.html
-
-Bug-Description:
-
-If an application is using readline in callback mode, and a signal arrives
-after readline checks for it in rl_callback_read_char() but before it
-restores the application's signal handlers, it won't get processed until the
-next time the application calls rl_callback_read_char(). Readline needs to
-check for and resend any pending signals after restoring the application's
-signal handlers.
-
-Patch (apply with `patch -p0'):
-
-*** ../readline-8.2-patched/callback.c 2022-04-29 12:02:56.000000000 -0400
---- callback.c 2022-10-11 10:59:06.000000000 -0400
-***************
-*** 116,120 ****
- do { \
- if (rl_persistent_signal_handlers == 0) \
-! rl_clear_signals (); \
- return; \
- } while (0)
---- 116,123 ----
- do { \
- if (rl_persistent_signal_handlers == 0) \
-! { \
-! rl_clear_signals (); \
-! if (_rl_caught_signal) _rl_signal_handler (_rl_caught_signal); \
-! } \
- return; \
- } while (0)
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 4
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 5
deleted file mode 100644
@@ -1,99 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-006
-
-Bug-Reported-by: Tom de Vries <tdevries@suse.de>
-Bug-Reference-ID:
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2022-09/msg00001.html
-
-Bug-Description:
-
-This is a variant of the same issue as the one fixed by patch 5. In this
-case, the signal arrives and is pending before readline calls rl_getc().
-When this happens, the pending signal will be handled by the loop, but may
-alter or destroy some state that the callback uses. Readline needs to treat
-this case the same way it would if a signal interrupts pselect/select, so
-compound operations like searches and reading numeric arguments get cleaned
-up properly.
-
-Patch (apply with `patch -p0'):
-
-*** ../readline-8.2-patched/input.c 2022-12-22 16:15:48.000000000 -0500
---- input.c 2023-01-10 11:53:45.000000000 -0500
-***************
-*** 812,816 ****
- rl_getc (FILE *stream)
- {
-! int result;
- unsigned char c;
- int fd;
---- 812,816 ----
- rl_getc (FILE *stream)
- {
-! int result, ostate, osig;
- unsigned char c;
- int fd;
-***************
-*** 823,828 ****
---- 823,842 ----
- while (1)
- {
-+ osig = _rl_caught_signal;
-+ ostate = rl_readline_state;
-+
- RL_CHECK_SIGNALS ();
-
-+ #if defined (READLINE_CALLBACKS)
-+ /* Do signal handling post-processing here, but just in callback mode
-+ for right now because the signal cleanup can change some of the
-+ callback state, and we need to either let the application have a
-+ chance to react or abort some current operation that gets cleaned
-+ up by rl_callback_sigcleanup(). If not, we'll just run through the
-+ loop again. */
-+ if (osig != 0 && (ostate & RL_STATE_CALLBACK))
-+ goto postproc_signal;
-+ #endif
-+
- /* We know at this point that _rl_caught_signal == 0 */
-
-***************
-*** 888,891 ****
---- 902,908 ----
-
- handle_error:
-+ osig = _rl_caught_signal;
-+ ostate = rl_readline_state;
-+
- /* If the error that we received was EINTR, then try again,
- this is simply an interrupted system call to read (). We allow
-***************
-*** 928,933 ****
---- 945,959 ----
- #endif /* SIGALRM */
-
-+ postproc_signal:
-+ /* POSIX says read(2)/pselect(2)/select(2) don't return EINTR for any
-+ reason other than being interrupted by a signal, so we can safely
-+ call the application's signal event hook. */
- if (rl_signal_event_hook)
- (*rl_signal_event_hook) ();
-+ #if defined (READLINE_CALLBACKS)
-+ else if (osig == SIGINT && (ostate & RL_STATE_CALLBACK) && (ostate & (RL_STATE_ISEARCH|RL_STATE_NSEARCH|RL_STATE_NUMERICARG)))
-+ /* just these cases for now */
-+ _rl_abort_internal ();
-+ #endif
- }
- }
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 5
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 6
deleted file mode 100644
@@ -1,48 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-007
-
-Bug-Reported-by: Kevin Pulo <kev@pulo.com.au>
-Bug-Reference-ID:
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2022-11/msg00002.html
-
-Bug-Description:
-
-If readline is called with no prompt, it should display a newline if return
-is typed on an empty line. It should still suppress the final newline if
-return is typed on the last (empty) line of a multi-line command.
-
-Patch (apply with `patch -p0'):
-
-*** ../readline-8.2-patched/display.c 2022-04-05 10:47:31.000000000 -0400
---- display.c 2022-12-13 13:11:22.000000000 -0500
-***************
-*** 3342,3348 ****
- &last_face[_rl_screenwidth - 1 + woff], 1);
- }
-! _rl_vis_botlin = 0;
-! if (botline_length > 0 || _rl_last_c_pos > 0)
- rl_crlf ();
- fflush (rl_outstream);
- rl_display_fixed++;
---- 3394,3400 ----
- &last_face[_rl_screenwidth - 1 + woff], 1);
- }
-! if ((_rl_vis_botlin == 0 && botline_length == 0) || botline_length > 0 || _rl_last_c_pos > 0)
- rl_crlf ();
-+ _rl_vis_botlin = 0;
- fflush (rl_outstream);
- rl_display_fixed++;
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 6
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 7
deleted file mode 100644
@@ -1,77 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-008
-
-Bug-Reported-by:
-Bug-Reference-ID:
-Bug-Reference-URL:
-
-Bug-Description:
-
-Add missing prototypes for several function declarations.
-
-Patch (apply with `patch -p0'):
-
-*** ../readline-8.2-patched/text.c Wed Oct 27 11:03:59 2021
---- text.c Thu Nov 16 16:24:58 2023
-***************
-*** 1765,1770 ****
- #if defined (READLINE_CALLBACKS)
- static int
-! _rl_char_search_callback (data)
-! _rl_callback_generic_arg *data;
- {
- _rl_callback_func = 0;
---- 1765,1769 ----
- #if defined (READLINE_CALLBACKS)
- static int
-! _rl_char_search_callback (_rl_callback_generic_arg *data)
- {
- _rl_callback_func = 0;
-*** ../readline-8.2-patched/bind.c Wed Feb 9 11:02:22 2022
---- bind.c Thu Nov 16 16:25:17 2023
-***************
-*** 1168,1174 ****
-
- static int
-! parse_comparison_op (s, indp)
-! const char *s;
-! int *indp;
- {
- int i, peekc, op;
---- 1168,1172 ----
-
- static int
-! parse_comparison_op (const char *s, int *indp)
- {
- int i, peekc, op;
-*** ../readline-8.2-patched/rltty.c Fri Feb 18 11:14:22 2022
---- rltty.c Thu Nov 16 16:25:36 2023
-***************
-*** 81,86 ****
- to get the tty settings. */
- static void
-! set_winsize (tty)
-! int tty;
- {
- #if defined (TIOCGWINSZ)
---- 81,85 ----
- to get the tty settings. */
- static void
-! set_winsize (int tty)
- {
- #if defined (TIOCGWINSZ)
-
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 7
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 8
deleted file mode 100644
@@ -1,73 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-009
-
-Bug-Reported-by: Stefan H. Holek <stefan@epy.co.at>
-Bug-Reference-ID: <50F8DA45-B7F3-4DE1-AB94-19AE42649CDC@epy.co.at>
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2022-10/msg00021.html
-
-Bug-Description:
-
-Fix issue where the directory name portion of the word to be completed (the
-part that is passed to opendir()) requires both tilde expansion and dequoting.
-Readline only performed tilde expansion in this case, so filename completion
-would fail.
-
-Patch (apply with `patch -p0'):
-
-*** ../readline-8.2-patched/complete.c 2022-04-05 10:47:06.000000000 -0400
---- complete.c 2022-10-26 15:08:51.000000000 -0400
-***************
-*** 2527,2531 ****
- xfree (dirname);
- dirname = temp;
-! tilde_dirname = 1;
- }
-
---- 2527,2532 ----
- xfree (dirname);
- dirname = temp;
-! if (*dirname != '~')
-! tilde_dirname = 1; /* indicate successful tilde expansion */
- }
-
-***************
-*** 2546,2554 ****
- users_dirname = savestring (dirname);
- }
-! else if (tilde_dirname == 0 && rl_completion_found_quote && rl_filename_dequoting_function)
- {
-! /* delete single and double quotes */
- xfree (dirname);
-! dirname = savestring (users_dirname);
- }
- directory = opendir (dirname);
---- 2547,2560 ----
- users_dirname = savestring (dirname);
- }
-! else if (rl_completion_found_quote && rl_filename_dequoting_function)
- {
-! /* We already ran users_dirname through the dequoting function.
-! If tilde_dirname == 1, we successfully performed tilde expansion
-! on dirname. Now we need to reconcile those results. We either
-! just copy the already-dequoted users_dirname or tilde expand it
-! if we tilde-expanded dirname. */
-! temp = tilde_dirname ? tilde_expand (users_dirname) : savestring (users_dirname);
- xfree (dirname);
-! dirname = temp;
- }
- directory = opendir (dirname);
-
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 8
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 9
deleted file mode 100644
@@ -1,67 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-010
-
-Bug-Reported-by: Martin Castillo <castilma@uni-bremen.de>
-Bug-Reference-ID: <2d42153b-cf65-caba-dff1-cd3bc6268c7e@uni-bremen.de>
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2023-01/msg00000.html
-
-Bug-Description:
-
-Fix the case where text to be completed from the line buffer (quoted) is
-compared to the common prefix of the possible matches (unquoted) and the
-quoting makes the former appear to be longer than the latter. Readline
-assumes the match doesn't add any characters to the word and doesn't display
-multiple matches.
-
-Patch (apply with `patch -p0'):
-
-*** ../readline-8.2-patched/complete.c Tue Apr 5 10:47:06 2022
---- complete.c Sat Jan 7 14:19:45 2023
-***************
-*** 2032,2038 ****
- text = rl_copy_text (start, end);
- matches = gen_completion_matches (text, start, end, our_func, found_quote, quote_char);
- /* nontrivial_lcd is set if the common prefix adds something to the word
- being completed. */
-! nontrivial_lcd = matches && compare_match (text, matches[0]) != 0;
- if (what_to_do == '!' || what_to_do == '@')
- tlen = strlen (text);
---- 2038,2060 ----
- text = rl_copy_text (start, end);
- matches = gen_completion_matches (text, start, end, our_func, found_quote, quote_char);
-+ /* If TEXT contains quote characters, it will be dequoted as part of
-+ generating the matches, and the matches will not contain any quote
-+ characters. We need to dequote TEXT before performing the comparison.
-+ Since compare_match performs the dequoting, and we only want to do it
-+ once, we don't call compare_matches after dequoting TEXT; we call
-+ strcmp directly. */
- /* nontrivial_lcd is set if the common prefix adds something to the word
- being completed. */
-! if (rl_filename_completion_desired && rl_filename_quoting_desired &&
-! rl_completion_found_quote && rl_filename_dequoting_function)
-! {
-! char *t;
-! t = (*rl_filename_dequoting_function) (text, rl_completion_quote_character);
-! xfree (text);
-! text = t;
-! nontrivial_lcd = matches && strcmp (text, matches[0]) != 0;
-! }
-! else
-! nontrivial_lcd = matches && strcmp (text, matches[0]) != 0;
- if (what_to_do == '!' || what_to_do == '@')
- tlen = strlen (text);
-
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 9
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 10
deleted file mode 100644
@@ -1,75 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-011
-
-Bug-Reported-by: Grisha Levit <grishalevit@gmail.com>
-Bug-Reference-ID: <CAMu=BrqWa_iNkiEwchpFmtrUhFrAanOO8pjy7VCKqRKUvqdsbw@mail.gmail.com>
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2024-02/msg00075.html
-
-Bug-Description:
-
-Patch (apply with `patch -p0'):
-
-Some systems (e.g., macOS) send signals early on in interactive initialization,
-so readline should retry a failed open of the init file.
-
-*** ../readline-8.2-patched/bind.c Wed Feb 9 11:02:22 2022
---- bind.c Tue Apr 23 15:07:13 2024
-***************
-*** 979,987 ****
- int i, file;
-
-! file = -1;
-! if (((file = open (filename, O_RDONLY, 0666)) < 0) || (fstat (file, &finfo) < 0))
- {
- if (file >= 0)
- close (file);
- return ((char *)NULL);
- }
---- 969,986 ----
- int i, file;
-
-! file = open (filename, O_RDONLY, 0666);
-! /* If the open is interrupted, retry once */
-! if (file < 0 && errno == EINTR)
- {
-+ RL_CHECK_SIGNALS ();
-+ file = open (filename, O_RDONLY, 0666);
-+ }
-+
-+ if ((file < 0) || (fstat (file, &finfo) < 0))
-+ {
-+ i = errno;
- if (file >= 0)
- close (file);
-+ errno = i;
- return ((char *)NULL);
- }
-***************
-*** 992,999 ****
---- 991,1001 ----
- if (file_size != finfo.st_size || file_size + 1 < file_size)
- {
-+ i = errno;
- if (file >= 0)
- close (file);
- #if defined (EFBIG)
- errno = EFBIG;
-+ #else
-+ errno = i;
- #endif
- return ((char *)NULL);
-
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 10
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 11
deleted file mode 100644
@@ -1,93 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-012
-
-Bug-Reported-by: Grisha Levit <grishalevit@gmail.com>
-Bug-Reference-ID: <CAMu=BroaH+41uumYt89FPqt8Fsatj-d6mZzmPV2HZYjtcbvbvw@mail.gmail.com>
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2023-11/msg00019.html
-
-Bug-Description:
-
-If a user happens to bind do-lowercase-version to something that isn't a
-capital letter, so _rl_to_lower doesn't change anything and the result is
-still bound to do-lowercase-version, readline can recurse infinitely.
-
-Patch (apply with `patch -p0'):
-
-*** ../readline-8.2-patched/readline.c Thu Aug 11 18:35:37 2022
---- readline.c Fri Feb 2 12:05:36 2024
-***************
-*** 900,905 ****
- /* Special case rl_do_lowercase_version (). */
- if (func == rl_do_lowercase_version)
-! /* Should we do anything special if key == ANYOTHERKEY? */
-! return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map));
-
- rl_executing_keymap = map;
---- 912,926 ----
- /* Special case rl_do_lowercase_version (). */
- if (func == rl_do_lowercase_version)
-! {
-! /* Should we do anything special if key == ANYOTHERKEY? */
-! newkey = _rl_to_lower ((unsigned char)key);
-! if (newkey != key)
-! return (_rl_dispatch (newkey, map));
-! else
-! {
-! rl_ding (); /* gentle failure */
-! return 0;
-! }
-! }
-
- rl_executing_keymap = map;
-***************
-*** 1110,1114 ****
- func = m[ANYOTHERKEY].function;
- if (type == ISFUNC && func == rl_do_lowercase_version)
-! r = _rl_dispatch (_rl_to_lower ((unsigned char)key), map);
- else if (type == ISFUNC)
- {
---- 1131,1139 ----
- func = m[ANYOTHERKEY].function;
- if (type == ISFUNC && func == rl_do_lowercase_version)
-! {
-! int newkey = _rl_to_lower ((unsigned char)key);
-! /* check that there is actually a lowercase version to avoid infinite recursion */
-! r = (newkey != key) ? _rl_dispatch (newkey, map) : 1;
-! }
- else if (type == ISFUNC)
- {
-
-*** ../readline-8.2-patched/isearch.c Thu Aug 11 18:35:37 2022
---- isearch.c Fri Feb 2 12:05:36 2024
-***************
-*** 429,433 ****
- f = cxt->keymap[c].function;
- if (f == rl_do_lowercase_version)
-! f = cxt->keymap[_rl_to_lower (c)].function;
- }
-
---- 431,439 ----
- f = cxt->keymap[c].function;
- if (f == rl_do_lowercase_version)
-! {
-! f = cxt->keymap[_rl_to_lower (c)].function;
-! if (f == rl_do_lowercase_version)
-! f = rl_insert;
-! }
- }
-
-
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 11
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 12
deleted file mode 100644
@@ -1,234 +0,0 @@
- READLINE PATCH REPORT
- =====================
-
-Readline-Release: 8.2
-Patch-ID: readline82-013
-
-Bug-Reported-by: Grisha Levit <grishalevit@gmail.com>
-Bug-Reference-ID: <CAMu=Brrv5qKY6LPfw8PxqNXNO8rNsZo0Fb=BcFb-uHObWPqnrw@mail.gmail.
-Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2023-04/msg00082.html
-
-Bug-Description:
-
-When readline is accumulating bytes until it reads a complete multibyte
-character, reading a byte that makes the multibyte character invalid can
-result in discarding the bytes in the partial character.
-
-Patch (apply with `patch -p0'):
-
-*** ../readline-8.2-patched/text.c Mon May 1 09:37:52 2023
---- text.c Mon May 29 12:22:29 2023
-***************
-*** 86,90 ****
- rl_insert_text (const char *string)
- {
-! register int i, l;
-
- l = (string && *string) ? strlen (string) : 0;
---- 86,91 ----
- rl_insert_text (const char *string)
- {
-! register int i;
-! size_t l;
-
- l = (string && *string) ? strlen (string) : 0;
-***************
-*** 705,709 ****
- /* Insert the character C at the current location, moving point forward.
- If C introduces a multibyte sequence, we read the whole sequence and
-! then insert the multibyte char into the line buffer. */
- int
- _rl_insert_char (int count, int c)
---- 706,714 ----
- /* Insert the character C at the current location, moving point forward.
- If C introduces a multibyte sequence, we read the whole sequence and
-! then insert the multibyte char into the line buffer.
-! If C == 0, we immediately insert any pending partial multibyte character,
-! assuming that we have read a character that doesn't map to self-insert.
-! This doesn't completely handle characters that are part of a multibyte
-! character but map to editing functions. */
- int
- _rl_insert_char (int count, int c)
-***************
-*** 719,727 ****
- #endif
-
- if (count <= 0)
- return 0;
-
-! #if defined (HANDLE_MULTIBYTE)
-! if (MB_CUR_MAX == 1 || rl_byte_oriented)
- {
- incoming[0] = c;
---- 724,749 ----
- #endif
-
-+ #if !defined (HANDLE_MULTIBYTE)
- if (count <= 0)
- return 0;
-+ #else
-+ if (count < 0)
-+ return 0;
-+ if (count == 0)
-+ {
-+ if (pending_bytes_length == 0)
-+ return 0;
-+ if (stored_count <= 0)
-+ stored_count = count;
-+ else
-+ count = stored_count;
-
-! memcpy (incoming, pending_bytes, pending_bytes_length);
-! incoming[pending_bytes_length] = '\0';
-! incoming_length = pending_bytes_length;
-! pending_bytes_length = 0;
-! memset (&ps, 0, sizeof (mbstate_t));
-! }
-! else if (MB_CUR_MAX == 1 || rl_byte_oriented)
- {
- incoming[0] = c;
-***************
-*** 731,734 ****
---- 753,759 ----
- else if (_rl_utf8locale && (c & 0x80) == 0)
- {
-+ if (pending_bytes_length)
-+ _rl_insert_char (0, 0);
-+
- incoming[0] = c;
- incoming[1] = '\0';
-***************
-*** 765,769 ****
- incoming_length = 1;
- pending_bytes_length--;
-! memmove (pending_bytes, pending_bytes + 1, pending_bytes_length);
- /* Clear the state of the byte sequence, because in this case the
- effect of mbstate is undefined. */
---- 790,795 ----
- incoming_length = 1;
- pending_bytes_length--;
-! if (pending_bytes_length)
-! memmove (pending_bytes, pending_bytes + 1, pending_bytes_length);
- /* Clear the state of the byte sequence, because in this case the
- effect of mbstate is undefined. */
-***************
-*** 828,832 ****
---- 854,862 ----
- xfree (string);
-
-+ #if defined (HANDLE_MULTIBYTE)
-+ return (pending_bytes_length != 0);
-+ #else
- return 0;
-+ #endif
- }
-
-***************
-*** 861,864 ****
---- 891,896 ----
- incoming_length = 0;
- stored_count = 0;
-+
-+ return (pending_bytes_length != 0);
- #else /* !HANDLE_MULTIBYTE */
- char str[TEXT_COUNT_MAX+1];
-***************
-*** 874,880 ****
- count -= decreaser;
- }
-- #endif /* !HANDLE_MULTIBYTE */
-
- return 0;
- }
-
---- 906,912 ----
- count -= decreaser;
- }
-
- return 0;
-+ #endif /* !HANDLE_MULTIBYTE */
- }
-
-***************
-*** 904,910 ****
- stored_count = 0;
- }
-! #endif
-!
- return 0;
- }
-
---- 936,944 ----
- stored_count = 0;
- }
-!
-! return (pending_bytes_length != 0);
-! #else
- return 0;
-+ #endif
- }
-
-***************
-*** 984,987 ****
---- 1018,1026 ----
- }
-
-+ /* If we didn't insert n and there are pending bytes, we need to insert
-+ them if _rl_insert_char didn't do that on its own. */
-+ if (r == 1 && rl_insert_mode == RL_IM_INSERT)
-+ r = _rl_insert_char (0, 0); /* flush partial multibyte char */
-+
- if (n != (unsigned short)-2) /* -2 = sentinel value for having inserted N */
- {
-***************
-*** 1055,1058 ****
---- 1094,1099 ----
- rl_quoted_insert (int count, int key)
- {
-+ int r;
-+
- /* Let's see...should the callback interface futz with signal handling? */
- #if defined (HANDLE_SIGNALS)
-***************
-*** 1073,1085 ****
- if (count < 0)
- {
-- int r;
--
- do
- r = _rl_insert_next (1);
- while (r == 0 && ++count < 0);
-- return r;
- }
-
-! return _rl_insert_next (count);
- }
-
---- 1114,1128 ----
- if (count < 0)
- {
- do
- r = _rl_insert_next (1);
- while (r == 0 && ++count < 0);
- }
-+ else
-+ r = _rl_insert_next (count);
-
-! if (r == 1)
-! _rl_insert_char (0, 0); /* insert partial multibyte character */
-!
-! return r;
- }
-
-
-*** ../readline-8.2/patchlevel 2013-11-15 08:11:11.000000000 -0500
---- patchlevel 2014-03-21 08:28:40.000000000 -0400
-***************
-*** 1,3 ****
- # Do not edit -- exists only for use by patch
-
-! 12
---- 1,3 ----
- # Do not edit -- exists only for use by patch
-
-! 13
new file mode 100644
@@ -0,0 +1,64 @@
+ READLINE PATCH REPORT
+ =====================
+
+Readline-Release: 8.3
+Patch-ID: readline83-001
+
+Bug-Reported-by: Dmitri A. Sergatskov <dasergatskov@gmail.com>
+Bug-Reference-ID: <CAO+XyQ+ipUzFiXvRrDbTstfm1heZrerjvZGVaC60y=txMgyP+g@mail.gmail.com>
+Bug-Reference-URL:
+
+Bug-Description:
+
+If an application uses readline's event hook, it is called while waiting for
+input. There is a bug in the function that waits for available input that
+causes it not to read that input under certain circumstances, resulting in
+a loop where the event hook continues to be called, but there is no input
+to stop it.
+
+Patch (apply with `patch -p0'):
+
+*** ../readline-8.3/input.c Fri May 2 09:29:05 2025
+--- input.c Tue Jul 8 15:37:13 2025
+***************
+*** 262,266 ****
+ tty = fileno (rl_instream);
+
+! /* Move this up here to give it first shot, but it can't set chars_avail */
+ /* XXX - need rl_chars_available_hook? */
+ if (rl_input_available_hook)
+--- 262,267 ----
+ tty = fileno (rl_instream);
+
+! /* Move this up here to give it first shot, but it can't set chars_avail,
+! so we assume a single character is available. */
+ /* XXX - need rl_chars_available_hook? */
+ if (rl_input_available_hook)
+***************
+*** 269,272 ****
+--- 270,275 ----
+ if (result == 0)
+ result = -1;
++ else
++ chars_avail = 1;
+ }
+
+***************
+*** 286,289 ****
+--- 289,293 ----
+ if (result <= 0)
+ return 0; /* Nothing to read. */
++ result = -1; /* there is something, so check how many chars below */
+ }
+ #endif
+*** ../readline-8.3/patchlevel 2013-11-15 08:11:11.000000000 -0500
+--- patchlevel 2014-03-21 08:28:40.000000000 -0400
+***************
+*** 1,3 ****
+ # Do not edit -- exists only for use by patch
+
+! 0
+--- 1,3 ----
+ # Do not edit -- exists only for use by patch
+
+! 1