new file mode 100644
@@ -0,0 +1,27 @@
+From 3d202924c8ddd96029129bb745772cb2918a5f10 Mon Sep 17 00:00:00 2001
+From: Patrice Dumas <pertusus@free.fr>
+Date: Sun, 16 Jun 2024 15:10:22 +0200
+Subject: * system.h: remove strerror definition, the prototype looks wrong and
+ the conditional is not set anywhere.
+
+Upstream-Status: Backport [https://cgit.git.savannah.gnu.org/cgit/texinfo.git/commit/?id=3d202924c8ddd96029129bb745772cb2918a5f10]
+Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
+---
+ system.h | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/system.h b/system.h
+index e32937f16e..7694d85a45 100644
+--- a/system.h
++++ b/system.h
+@@ -65,10 +65,6 @@ extern int errno;
+ #include <perror.h>
+ #endif
+
+-#ifndef HAVE_DECL_STRERROR
+-extern char *strerror ();
+-#endif
+-
+ #include <limits.h>
+
+ #ifndef PATH_MAX
new file mode 100644
@@ -0,0 +1,27 @@
+From 5e06e9846c44cb5d7b1c937728ba701b4a9d9523 Mon Sep 17 00:00:00 2001
+From: Gavin Smith <gavinsmith0123@gmail.com>
+Date: Sun, 28 Jan 2024 15:45:25 +0000
+Subject: * info/info.h (Function, CFunction): Remove unused typedefs.
+
+Upstream-Status: Backport [https://cgit.git.savannah.gnu.org/cgit/texinfo.git/commit/?id=5e06e9846c44cb5d7b1c937728ba701b4a9d9523]
+Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
+---
+ info/info.h | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/info/info.h b/info/info.h
+index 8082725146..b1274ef7a4 100644
+--- a/info/info.h
++++ b/info/info.h
+@@ -23,10 +23,8 @@
+ /* System dependencies. */
+ #include "system.h"
+
+-/* Some of our other include files use these. */
+-typedef int Function ();
++/* Some of our other include files use this. */
+ typedef void VFunction ();
+-typedef char *CFunction ();
+
+ #include "string.h"
+ #include "mbiter.h"
new file mode 100644
@@ -0,0 +1,194 @@
+From deb7fb40bcaeaa537b14e0690f0fa78081844481 Mon Sep 17 00:00:00 2001
+From: Patrice Dumas <pertusus@free.fr>
+Date: Mon, 17 Jun 2024 19:26:32 +0200
+Subject: [PATCH] Use explicit prototype for Info command functions
+
+* info/m-x.c (info_execute_command): call command function with two
+arguments only, window and count.
+
+* info/doc.h (InfoCommand), info/echo-area.c
+(read_and_dispatch_in_echo_area, ea_yank_pop)
+(ea_possible_completions), info/info.h (COMMAND_FUNCTION),
+info/makedoc.c (process_one_file), info/session.c
+(info_read_and_dispatch, read_key_sequence), info/terminal.h
+(VFunction): add a function type COMMAND_FUNCTION for pointers on info
+commands function and replace the VFunction untyped generic function
+type. Move VFunction definition to terminal.h.
+
+Upstream-Status: Backport [https://cgit.git.savannah.gnu.org/cgit/texinfo.git/commit/?id=2e62ec97bad667f1dd91f1a396f5c0376aef1c03]
+Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
+---
+ info/doc.h | 2 +-
+ info/echo-area.c | 10 +++++-----
+ info/info.h | 4 ++--
+ info/m-x.c | 2 +-
+ info/makedoc.c | 2 +-
+ info/session.c | 8 ++++----
+ info/session.h | 4 ++--
+ info/terminal.h | 2 +-
+ 8 files changed, 17 insertions(+), 17 deletions(-)
+
+diff --git a/info/doc.h b/info/doc.h
+index 26ed41f80c..e9cc2ced0e 100644
+--- a/info/doc.h
++++ b/info/doc.h
+@@ -44,7 +44,7 @@ typedef struct function_keyseq
+ /* Structure describing an Info command. */
+ typedef struct
+ {
+- VFunction *func; /* Pointer to function implementing command. */
++ COMMAND_FUNCTION *func; /* Pointer to function implementing command. */
+ char *func_name; /* Name of this command. */
+ FUNCTION_KEYSEQ *keys; /* Key sequences that could invoke this command. */
+ char *doc; /* Documentation string. */
+diff --git a/info/echo-area.c b/info/echo-area.c
+index f485e43f76..375c66a560 100644
+--- a/info/echo-area.c
++++ b/info/echo-area.c
+@@ -31,7 +31,7 @@ int info_aborted_echo_area = 0;
+ int echo_area_is_active = 0;
+
+ /* The address of the last command executed in the echo area. */
+-static VFunction *ea_last_executed_command = NULL;
++static COMMAND_FUNCTION *ea_last_executed_command = NULL;
+
+ /* Non-zero means that the last command executed while reading input
+ killed some text. */
+@@ -158,7 +158,7 @@ read_and_dispatch_in_echo_area (void)
+ while (1)
+ {
+ int count;
+- VFunction *cmd;
++ COMMAND_FUNCTION *cmd;
+ int lk = 0;
+
+ lk = echo_area_last_command_was_kill;
+@@ -669,8 +669,8 @@ DECLARE_INFO_COMMAND (ea_yank_pop, _("Yank back a previous kill"))
+ {
+ register int len;
+
+- if (((ea_last_executed_command != (VFunction *) ea_yank) &&
+- (ea_last_executed_command != (VFunction *) ea_yank_pop)) ||
++ if (((ea_last_executed_command != ea_yank) &&
++ (ea_last_executed_command != ea_yank_pop)) ||
+ (kill_ring_index == 0))
+ return;
+
+@@ -1166,7 +1166,7 @@ DECLARE_INFO_COMMAND (ea_possible_completions, _("List possible completions"))
+
+ DECLARE_INFO_COMMAND (ea_complete, _("Insert completion"))
+ {
+- if (ea_last_executed_command == (VFunction *) ea_complete)
++ if (ea_last_executed_command == ea_complete)
+ {
+ ea_possible_completions (window, count);
+ return;
+diff --git a/info/info.h b/info/info.h
+index b1274ef7a4..401b0543d3 100644
+--- a/info/info.h
++++ b/info/info.h
+@@ -23,8 +23,8 @@
+ /* System dependencies. */
+ #include "system.h"
+
+-/* Some of our other include files use this. */
+-typedef void VFunction ();
++struct window_struct;
++typedef void COMMAND_FUNCTION (struct window_struct *window, int count);
+
+ #include "string.h"
+ #include "mbiter.h"
+diff --git a/info/m-x.c b/info/m-x.c
+index 669d999738..9a194a1e28 100644
+--- a/info/m-x.c
++++ b/info/m-x.c
+@@ -137,7 +137,7 @@ DECLARE_INFO_COMMAND (info_execute_command,
+ free (line);
+
+ if (command && command->func)
+- (*command->func) (active_window, count, 0);
++ (*command->func) (active_window, count);
+ }
+ }
+
+diff --git a/info/makedoc.c b/info/makedoc.c
+index e7d98d64f9..84ea419d4d 100644
+--- a/info/makedoc.c
++++ b/info/makedoc.c
+@@ -436,7 +436,7 @@ process_one_file (char *filename, FILE *doc_stream, FILE *funs_stream)
+ doc[offset - point] = '\0';
+
+ fprintf (doc_stream,
+- " { (VFunction *)%s, \"%s\", (FUNCTION_KEYSEQ *)0, %s },\n",
++ " { %s, \"%s\", (FUNCTION_KEYSEQ *)0, %s },\n",
+ func, func_name, doc);
+
+ free (func_name);
+diff --git a/info/session.c b/info/session.c
+index 499857ef13..2cb4414326 100644
+--- a/info/session.c
++++ b/info/session.c
+@@ -229,7 +229,7 @@ static int info_keyseq_displayed_p;
+ void
+ info_read_and_dispatch (void)
+ {
+- VFunction *cmd;
++ COMMAND_FUNCTION *cmd;
+ int count;
+
+ for (quit_info_immediately = 0; !quit_info_immediately; )
+@@ -5018,7 +5018,7 @@ incremental_search (WINDOW *window, int count)
+
+ while (isearch_is_active)
+ {
+- VFunction *func = NULL;
++ COMMAND_FUNCTION *func = NULL;
+ int quoted = 0;
+
+ /* Show the search string in the echo area. */
+@@ -5546,7 +5546,7 @@ void info_add_digit_to_numeric_arg (WINDOW *, int count);
+
+ If INSERT, call ea_insert if a printable character was input.
+ */
+-VFunction *
++COMMAND_FUNCTION *
+ read_key_sequence (Keymap map, int menu, int mouse,
+ int insert, int *count)
+ {
+@@ -5554,7 +5554,7 @@ read_key_sequence (Keymap map, int menu, int mouse,
+ int reading_universal_argument = 0;
+
+ int numeric_arg = 1, numeric_arg_sign = 1, *which_explicit_arg;
+- VFunction *func;
++ COMMAND_FUNCTION *func;
+
+ /* Process the right numeric argument. */
+ if (!echo_area_is_active)
+diff --git a/info/session.h b/info/session.h
+index 4606d0a519..94b4935ef0 100644
+--- a/info/session.h
++++ b/info/session.h
+@@ -58,8 +58,8 @@ extern int scroll_last_node;
+ int get_input_key (void);
+ int get_another_input_key (void);
+
+-VFunction *read_key_sequence (Keymap map, int menu, int mouse,
+- int insert, int *count);
++COMMAND_FUNCTION *read_key_sequence (Keymap map, int menu, int mouse,
++ int insert, int *count);
+ unsigned char info_input_pending_p (void);
+ void info_set_node_of_window (WINDOW *window, NODE *node);
+ void info_set_node_of_window_fast (WINDOW *window, NODE *node);
+diff --git a/info/terminal.h b/info/terminal.h
+index 8108b6b6b5..ee881a8bb1 100644
+--- a/info/terminal.h
++++ b/info/terminal.h
+@@ -20,7 +20,7 @@
+ #if !defined (TERMINAL_H)
+ #define TERMINAL_H
+
+-#include "info.h"
++typedef void VFunction ();
+
+ /* For almost every function externally visible from terminal.c, there is
+ a corresponding "hook" function which can be bound in order to replace
new file mode 100644
@@ -0,0 +1,217 @@
+From 7e8d0093b411729c8c570b25280bef6b55415594 Mon Sep 17 00:00:00 2001
+From: Gavin Smith <gavinsmith0123@gmail.com>
+Date: Fri, 9 Aug 2024 11:05:08 +0100
+Subject: [PATCH] Remove VFunction.
+
+* info/terminal.c, info/terminal.h
+(terminal_begin_blink_hook, terminal_begin_bold_hook)
+(terminal_begin_inverse_hook, terminal_begin_standout_hook)
+(terminal_begin_underline_hook, terminal_clear_screen_hook)
+(terminal_clear_to_eol_hook, terminal_default_colour_hook)
+(terminal_down_line_hook, terminal_end_all_modes_hook)
+(terminal_end_inverse_hook, terminal_end_standout_hook)
+(terminal_end_underline_hook, terminal_get_screen_size_hook)
+(terminal_goto_xy_hook, terminal_initialize_terminal_hook)
+(terminal_new_terminal_hook, terminal_prep_terminal_hook)
+(terminal_put_text_hook, terminal_ring_bell_hook)
+(terminal_scroll_terminal_hook, terminal_set_bgcolour_hook,)
+(terminal_set_colour_hook, terminal_unprep_terminal_hook,)
+(terminal_up_line_hook, terminal_write_chars_hook):
+Declare with explicit variable list.
+(VFunction): Remove.
+
+C23 does not allow a variable list to be left undefined as ().
+Report from Jeffrey Cliff <jeffrey.cliff@gmail.com>.
+
+Upstream-Status: Backport [https://cgit.git.savannah.gnu.org/cgit/texinfo.git/commit/?id=7e8d0093b411729c8c570b25280bef6b55415594]
+Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
+---
+ info/terminal.c | 53 +++++++++++++++++++++++++------------------------
+ info/terminal.h | 42 +++++++++++++++++++--------------------
+ 2 files changed, 47 insertions(+), 48 deletions(-)
+
+diff --git a/info/terminal.c b/info/terminal.c
+index 7a9793befc..b6f59ff5c5 100644
+--- a/info/terminal.c
++++ b/info/terminal.c
+@@ -53,32 +53,33 @@ extern int tputs ();
+ function is called when appropriate instead of its namesake. Your
+ function is called with exactly the same arguments that were passed
+ to the namesake function. */
+-VFunction *terminal_begin_inverse_hook = NULL;
+-VFunction *terminal_end_inverse_hook = NULL;
+-VFunction *terminal_begin_standout_hook = NULL;
+-VFunction *terminal_end_standout_hook = NULL;
+-VFunction *terminal_begin_underline_hook = NULL;
+-VFunction *terminal_end_underline_hook = NULL;
+-VFunction *terminal_begin_bold_hook = NULL;
+-VFunction *terminal_begin_blink_hook = NULL;
+-VFunction *terminal_end_all_modes_hook = NULL;
+-VFunction *terminal_default_colour_hook = NULL;
+-VFunction *terminal_set_colour_hook = NULL;
+-VFunction *terminal_set_bgcolour_hook = NULL;
+-VFunction *terminal_prep_terminal_hook = NULL;
+-VFunction *terminal_unprep_terminal_hook = NULL;
+-VFunction *terminal_up_line_hook = NULL;
+-VFunction *terminal_down_line_hook = NULL;
+-VFunction *terminal_clear_screen_hook = NULL;
+-VFunction *terminal_clear_to_eol_hook = NULL;
+-VFunction *terminal_get_screen_size_hook = NULL;
+-VFunction *terminal_goto_xy_hook = NULL;
+-VFunction *terminal_initialize_terminal_hook = NULL;
+-VFunction *terminal_new_terminal_hook = NULL;
+-VFunction *terminal_put_text_hook = NULL;
+-VFunction *terminal_ring_bell_hook = NULL;
+-VFunction *terminal_write_chars_hook = NULL;
+-VFunction *terminal_scroll_terminal_hook = NULL;
++
++void (*terminal_initialize_terminal_hook) (char *terminal_name) = NULL;
++void (*terminal_get_screen_size_hook) (void) = NULL;
++int (*terminal_prep_terminal_hook) (void) = NULL;
++void (*terminal_unprep_terminal_hook) (void) = NULL;
++void (*terminal_new_terminal_hook) (char *terminal_name) = NULL;
++void (*terminal_goto_xy_hook) (int x, int y) = NULL;
++void (*terminal_put_text_hook) (char *string) = NULL;
++void (*terminal_write_chars_hook) (char *string, int nchars) = NULL;
++void (*terminal_clear_to_eol_hook) (void) = NULL;
++void (*terminal_clear_screen_hook) (void) = NULL;
++void (*terminal_up_line_hook) (void) = NULL;
++void (*terminal_down_line_hook) (void) = NULL;
++void (*terminal_begin_inverse_hook) (void) = NULL;
++void (*terminal_end_inverse_hook) (void) = NULL;
++void (*terminal_begin_standout_hook) (void) = NULL;
++void (*terminal_end_standout_hook) (void) = NULL;
++void (*terminal_begin_underline_hook) (void) = NULL;
++void (*terminal_end_underline_hook) (void) = NULL;
++void (*terminal_scroll_terminal_hook) (int start, int end, int amount) = NULL;
++void (*terminal_ring_bell_hook) (void) = NULL;
++void (*terminal_begin_bold_hook) (void) = NULL;
++void (*terminal_begin_blink_hook) (void) = NULL;
++void (*terminal_default_colour_hook) (void) = NULL;
++void (*terminal_set_colour_hook) (int) = NULL;
++void (*terminal_set_bgcolour_hook) (int) = NULL;
++void (*terminal_end_all_modes_hook) (void) = NULL;
+
+ /* User variable 'mouse'. Values can be MP_* constants in terminal.h. */
+ int mouse_protocol = MP_NONE;
+diff --git a/info/terminal.h b/info/terminal.h
+index ee881a8bb1..718d0844a6 100644
+--- a/info/terminal.h
++++ b/info/terminal.h
+@@ -20,8 +20,6 @@
+ #if !defined (TERMINAL_H)
+ #define TERMINAL_H
+
+-typedef void VFunction ();
+-
+ /* For almost every function externally visible from terminal.c, there is
+ a corresponding "hook" function which can be bound in order to replace
+ the functionality of the one found in terminal.c. This is how we go
+@@ -50,87 +48,87 @@ extern int terminal_can_scroll_region;
+ The variables SCREENHEIGHT and SCREENWIDTH are set to the dimensions that
+ this terminal actually has. */
+ extern void terminal_initialize_terminal (char *terminal_name);
+-extern VFunction *terminal_initialize_terminal_hook;
++extern void (*terminal_initialize_terminal_hook) (char *terminal_name);
+
+ /* Return the current screen width and height in the variables
+ SCREENWIDTH and SCREENHEIGHT. */
+ extern void terminal_get_screen_size (void);
+-extern VFunction *terminal_get_screen_size_hook;
++extern void (*terminal_get_screen_size_hook) (void);
+
+ /* Save and restore tty settings. */
+ extern int terminal_prep_terminal (void);
+ extern void terminal_unprep_terminal (void);
+
+-extern VFunction *terminal_prep_terminal_hook;
+-extern VFunction *terminal_unprep_terminal_hook;
++extern int (*terminal_prep_terminal_hook) (void);
++extern void (*terminal_unprep_terminal_hook) (void);
+
+ /* Re-initialize the terminal to TERMINAL_NAME. */
+ extern void terminal_new_terminal (char *terminal_name);
+-extern VFunction *terminal_new_terminal_hook;
++extern void (*terminal_new_terminal_hook) (char *terminal_name);
+
+ /* Move the cursor to the terminal location of X and Y. */
+ extern void terminal_goto_xy (int x, int y);
+-extern VFunction *terminal_goto_xy_hook;
++extern void (*terminal_goto_xy_hook) (int x, int y);
+
+ /* Print STRING to the terminal at the current position. */
+ extern void terminal_put_text (char *string);
+-extern VFunction *terminal_put_text_hook;
++extern void (*terminal_put_text_hook) (char *string);
+
+ /* Print NCHARS from STRING to the terminal at the current position. */
+ extern void terminal_write_chars (char *string, int nchars);
+-extern VFunction *terminal_write_chars_hook;
++extern void (*terminal_write_chars_hook) (char *string, int nchars);
+
+ /* Clear from the current position of the cursor to the end of the line. */
+ extern void terminal_clear_to_eol (void);
+-extern VFunction *terminal_clear_to_eol_hook;
++extern void (*terminal_clear_to_eol_hook) (void);
+
+ /* Clear the entire terminal screen. */
+ extern void terminal_clear_screen (void);
+-extern VFunction *terminal_clear_screen_hook;
++extern void (*terminal_clear_screen_hook) (void);
+
+ /* Move the cursor up one line. */
+ extern void terminal_up_line (void);
+-extern VFunction *terminal_up_line_hook;
++extern void (*terminal_up_line_hook) (void);
+
+ /* Move the cursor down one line. */
+ extern void terminal_down_line (void);
+-extern VFunction *terminal_down_line_hook;
++extern void (*terminal_down_line_hook) (void);
+
+ /* Turn on reverse video if possible. */
+ extern void terminal_begin_inverse (void);
+-extern VFunction *terminal_begin_inverse_hook;
++extern void (*terminal_begin_inverse_hook) (void);
+
+ /* Turn off reverse video if possible. */
+ extern void terminal_end_inverse (void);
+-extern VFunction *terminal_end_inverse_hook;
++extern void (*terminal_end_inverse_hook) (void);
+
+ /* Turn on standout mode if possible. */
+ extern void terminal_begin_standout (void);
+-extern VFunction *terminal_begin_standout_hook;
++extern void (*terminal_begin_standout_hook) (void);
+
+ /* Turn off standout mode if possible. */
+ extern void terminal_end_standout (void);
+-extern VFunction *terminal_end_standout_hook;
++extern void (*terminal_end_standout_hook) (void);
+
+ /* Turn on and off underline mode if possible. */
+ void terminal_begin_underline (void);
+-extern VFunction *terminal_begin_underline_hook;
++extern void (*terminal_begin_underline_hook) (void);
+ void terminal_end_underline (void);
+-extern VFunction *terminal_end_underline_hook;
++extern void (*terminal_end_underline_hook) (void);
+
+ /* Scroll an area of the terminal, starting with the region from START
+ to END, AMOUNT lines. If AMOUNT is negative, the lines are scrolled
+ towards the top of the screen, else they are scrolled towards the
+ bottom of the screen. */
+ extern void terminal_scroll_terminal (int start, int end, int amount);
+-extern VFunction *terminal_scroll_terminal_hook;
++extern void (*terminal_scroll_terminal_hook) (int start, int end, int amount);
+
+ extern void terminal_scroll_region (int start, int end, int amount);
+
+ /* Ring the terminal bell. The bell is run visibly if it both has one and
+ terminal_use_visible_bell_p is non-zero. */
+ extern void terminal_ring_bell (void);
+-extern VFunction *terminal_ring_bell_hook;
++extern void (*terminal_ring_bell_hook) (void);
+
+ /* The key sequences output by special keys, if this terminal has any. */
+ extern char *term_ku, *term_kd, *term_kr, *term_kl;
@@ -33,6 +33,10 @@ SRC_URI = "${GNU_MIRROR}/texinfo/${BP}.tar.gz \
file://link-zip.patch \
file://dont-depend-on-help2man.patch \
${TARGET_PATCH} \
+ file://0001-system.h-remove-strerror-definition-the-prototype-lo.patch \
+ file://0002-info-info.h-Function-CFunction-Remove-unused-typedef.patch \
+ file://0003-Use-explicit-prototype-for-Info-command-functions.patch \
+ file://0004-Remove-VFunction.patch \
"
SRC_URI[sha256sum] = "3cc5706fb086b895e1dc2b407aade9f95a3a233ff856273e2b659b089f117683"