summaryrefslogtreecommitdiff
path: root/app-shells/bash/files
diff options
context:
space:
mode:
Diffstat (limited to 'app-shells/bash/files')
-rw-r--r--app-shells/bash/files/bash-5.3-empty-PROMPT_COMMAND.patch160
-rw-r--r--app-shells/bash/files/bash-5.3-read-sys.patch19
2 files changed, 179 insertions, 0 deletions
diff --git a/app-shells/bash/files/bash-5.3-empty-PROMPT_COMMAND.patch b/app-shells/bash/files/bash-5.3-empty-PROMPT_COMMAND.patch
new file mode 100644
index 000000000000..848768655ec4
--- /dev/null
+++ b/app-shells/bash/files/bash-5.3-empty-PROMPT_COMMAND.patch
@@ -0,0 +1,160 @@
+https://lists.gnu.org/archive/html/bug-bash/2025-07/msg00014.html
+--- parse.y Thu Jun 12 12:36:06 2025
+--- parse.y Sun Jul 6 16:46:00 2025
+***************
+*** 3009,3023 ****
+
+ void
+! execute_variable_command (const char *command, const char *vname)
+ {
+ char *last_lastarg;
+ sh_parser_state_t ps;
+
+! save_parser_state (&ps);
+ last_lastarg = save_lastarg ();
+
+ parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOOPTIMIZE|SEVAL_NOTIFY);
+
+! restore_parser_state (&ps);
+ bind_lastarg (last_lastarg);
+ FREE (last_lastarg);
+--- 3009,3025 ----
+
+ void
+! execute_variable_command (const char *command, const char *vname, int flags)
+ {
+ char *last_lastarg;
+ sh_parser_state_t ps;
+
+! if (flags)
+! save_parser_state (&ps);
+ last_lastarg = save_lastarg ();
+
+ parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOOPTIMIZE|SEVAL_NOTIFY);
+
+! if (flags)
+! restore_parser_state (&ps);
+ bind_lastarg (last_lastarg);
+ FREE (last_lastarg);
+--- eval.c Fri Mar 7 18:50:03 2025
+--- eval.c Sun Jul 6 16:49:18 2025
+***************
+*** 284,288 ****
+ /* Caller ensures that A has a non-zero number of elements */
+ int
+! execute_array_command (ARRAY *a, void *v)
+ {
+ char *tag;
+--- 284,288 ----
+ /* Caller ensures that A has a non-zero number of elements */
+ int
+! execute_array_command (ARRAY *a, void *v, int flags)
+ {
+ char *tag;
+***************
+*** 296,300 ****
+ {
+ if (argv[i] && argv[i][0])
+! execute_variable_command (argv[i], tag);
+ }
+ strvec_dispose (argv);
+--- 296,300 ----
+ {
+ if (argv[i] && argv[i][0])
+! execute_variable_command (argv[i], tag, flags);
+ }
+ strvec_dispose (argv);
+***************
+*** 319,323 ****
+ {
+ if ((pcmds = array_cell (pcv)) && array_num_elements (pcmds) > 0)
+! execute_array_command (pcmds, "PROMPT_COMMAND");
+ return;
+ }
+--- 319,323 ----
+ {
+ if ((pcmds = array_cell (pcv)) && array_num_elements (pcmds) > 0)
+! execute_array_command (pcmds, "PROMPT_COMMAND", 0);
+ return;
+ }
+***************
+*** 328,332 ****
+ command_to_execute = value_cell (pcv);
+ if (command_to_execute && *command_to_execute)
+! execute_variable_command (command_to_execute, "PROMPT_COMMAND");
+ }
+
+--- 328,332 ----
+ command_to_execute = value_cell (pcv);
+ if (command_to_execute && *command_to_execute)
+! execute_variable_command (command_to_execute, "PROMPT_COMMAND", 0);
+ }
+
+--- input.h Fri Mar 10 16:22:48 2023
+--- input.h Sun Jul 6 16:45:42 2025
+***************
+*** 100,104 ****
+ extern int find_reserved_word (const char *);
+ extern void gather_here_documents (void);
+! extern void execute_variable_command (const char *, const char *);
+
+ extern int *save_token_state (void);
+--- 100,104 ----
+ extern int find_reserved_word (const char *);
+ extern void gather_here_documents (void);
+! extern void execute_variable_command (const char *, const char *, int);
+
+ extern int *save_token_state (void);
+--- array.h Wed Dec 28 14:00:47 2022
+--- array.h Sun Jul 6 16:47:27 2025
+***************
+*** 178,182 ****
+
+ /* In eval.c, but uses ARRAY * */
+! extern int execute_array_command (ARRAY *, void *);
+
+ #endif /* _ARRAY_H_ */
+--- 178,182 ----
+
+ /* In eval.c, but uses ARRAY * */
+! extern int execute_array_command (ARRAY *, void *, int);
+
+ #endif /* _ARRAY_H_ */
+--- y.tab.c Mon Jun 30 09:56:25 2025
+--- y.tab.c Sun Jul 6 17:38:06 2025
+***************
+*** 5368,5382 ****
+
+ void
+! execute_variable_command (const char *command, const char *vname)
+ {
+ char *last_lastarg;
+ sh_parser_state_t ps;
+
+! save_parser_state (&ps);
+ last_lastarg = save_lastarg ();
+
+ parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOOPTIMIZE|SEVAL_NOTIFY);
+
+! restore_parser_state (&ps);
+ bind_lastarg (last_lastarg);
+ FREE (last_lastarg);
+--- 5368,5384 ----
+
+ void
+! execute_variable_command (const char *command, const char *vname, int flags)
+ {
+ char *last_lastarg;
+ sh_parser_state_t ps;
+
+! if (flags)
+! save_parser_state (&ps);
+ last_lastarg = save_lastarg ();
+
+ parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOOPTIMIZE|SEVAL_NOTIFY);
+
+! if (flags)
+! restore_parser_state (&ps);
+ bind_lastarg (last_lastarg);
+ FREE (last_lastarg);
+
diff --git a/app-shells/bash/files/bash-5.3-read-sys.patch b/app-shells/bash/files/bash-5.3-read-sys.patch
new file mode 100644
index 000000000000..9491d727cced
--- /dev/null
+++ b/app-shells/bash/files/bash-5.3-read-sys.patch
@@ -0,0 +1,19 @@
+Extracted from https://cgit.git.savannah.gnu.org/cgit/bash.git/commit/?h=devel&id=01070d43248fb97f3b2a08d780ae5a392573ce34
+(note https://lists.gnu.org/archive/html/bug-readline/2025-07/msg00001.html wrt Chet not discouraging
+such cherry-picking)
+
+https://lists.gnu.org/archive/html/bug-bash/2025-07/msg00031.html
+https://github.com/desultory/ugrd/pull/328
+--- builtins/evalfile.c
++++ builtins/evalfile.c
+@@ -160,8 +160,10 @@ file_error_and_exit:
+ nr = read (fd, string, file_size);
+ if (nr >= 0)
+ string[nr] = '\0';
++#if 0
+ if (nr != file_size)
+ nr = -1; /* XXX - didn't get the whole file */
++#endif
+ }
+ else
+ nr = zmapfd (fd, &string, 0);