Merge pull request 'Factory' (#3) from factory into main
This commit is contained in:
		| @@ -4,3 +4,5 @@ targettype x86 package bash | |||||||
|   +^/bin/bash$ |   +^/bin/bash$ | ||||||
|   +^/bin/sh$ |   +^/bin/sh$ | ||||||
|   prereq -glibc-x86 |   prereq -glibc-x86 | ||||||
|  | bash | ||||||
|  |   prereq readline-devel = 8.3 | ||||||
|   | |||||||
| @@ -5,8 +5,8 @@ | |||||||
|  3 files changed, 18 insertions(+), 2 deletions(-) |  3 files changed, 18 insertions(+), 2 deletions(-) | ||||||
|  |  | ||||||
| --- doc/bash.1 | --- doc/bash.1 | ||||||
| +++ doc/bash.1	2018-11-29 08:09:41.735675837 +0000 | +++ doc/bash.1	2025-02-03 10:57:09.568975363 +0000 | ||||||
| @@ -122,6 +122,12 @@ This option allows the positional parame | @@ -159,6 +159,12 @@ This option allows the positional parame | ||||||
|  when invoking an interactive shell or when reading input |  when invoking an interactive shell or when reading input | ||||||
|  through a pipe. |  through a pipe. | ||||||
|  .TP |  .TP | ||||||
| @@ -17,9 +17,9 @@ | |||||||
| +Print commands and their arguments as they are executed. | +Print commands and their arguments as they are executed. | ||||||
| +.TP | +.TP | ||||||
|  .B \-D |  .B \-D | ||||||
|  A list of all double-quoted strings preceded by \fB$\fP |  Print a list of all double-quoted strings preceded by \fB$\fP | ||||||
|  is printed on the standard output. |  on the standard output. | ||||||
| @@ -7667,6 +7673,11 @@ Apply the following `\fBs\fP' modifier o | @@ -8948,6 +8954,11 @@ modifier once to each word in the event | ||||||
|  .SH "SHELL BUILTIN COMMANDS" |  .SH "SHELL BUILTIN COMMANDS" | ||||||
|  .\" start of bash_builtins |  .\" start of bash_builtins | ||||||
|  .zZ |  .zZ | ||||||
| @@ -31,7 +31,7 @@ | |||||||
|  .PP |  .PP | ||||||
|  Unless otherwise noted, each builtin command documented in this |  Unless otherwise noted, each builtin command documented in this | ||||||
|  section as accepting options preceded by |  section as accepting options preceded by | ||||||
| @@ -11543,6 +11554,11 @@ process or job waited for. | @@ -13266,6 +13277,11 @@ the arguments as key sequences to bind. | ||||||
|  .SH "RESTRICTED SHELL" |  .SH "RESTRICTED SHELL" | ||||||
|  .\" rbash.1 |  .\" rbash.1 | ||||||
|  .zY |  .zY | ||||||
| @@ -44,7 +44,7 @@ | |||||||
|  If |  If | ||||||
|  .B bash |  .B bash | ||||||
| --- doc/builtins.1 | --- doc/builtins.1 | ||||||
| +++ doc/builtins.1	2018-11-29 08:09:41.735675837 +0000 | +++ doc/builtins.1	2025-02-03 10:56:04.910169130 +0000 | ||||||
| @@ -19,6 +19,6 @@ shift, shopt, source, suspend, test, tim | @@ -19,6 +19,6 @@ shift, shopt, source, suspend, test, tim | ||||||
|  ulimit, umask, unalias, unset, wait \- bash built-in commands, see \fBbash\fR(1) |  ulimit, umask, unalias, unset, wait \- bash built-in commands, see \fBbash\fR(1) | ||||||
|  .SH BASH BUILTIN COMMANDS |  .SH BASH BUILTIN COMMANDS | ||||||
| @@ -54,7 +54,7 @@ | |||||||
|  .SH SEE ALSO |  .SH SEE ALSO | ||||||
|  bash(1), sh(1) |  bash(1), sh(1) | ||||||
| --- doc/rbash.1 | --- doc/rbash.1 | ||||||
| +++ doc/rbash.1	2018-11-29 08:09:41.735675837 +0000 | +++ doc/rbash.1	2025-02-03 10:56:04.910169130 +0000 | ||||||
| @@ -3,6 +3,6 @@ | @@ -3,6 +3,6 @@ | ||||||
|  rbash \- restricted bash, see \fBbash\fR(1) |  rbash \- restricted bash, see \fBbash\fR(1) | ||||||
|  .SH RESTRICTED SHELL |  .SH RESTRICTED SHELL | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ | |||||||
|  |  | ||||||
| --- expr.c | --- expr.c | ||||||
| +++ expr.c	2018-11-29 08:10:59.542212175 +0000 | +++ expr.c	2018-11-29 08:10:59.542212175 +0000 | ||||||
| @@ -514,8 +514,8 @@ expassign () | @@ -520,8 +520,8 @@ expassign () | ||||||
|    value = expcond (); |    value = expcond (); | ||||||
|    if (curtok == EQ || curtok == OP_ASSIGN) |    if (curtok == EQ || curtok == OP_ASSIGN) | ||||||
|      { |      { | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
|  1 file changed, 13 insertions(+) |  1 file changed, 13 insertions(+) | ||||||
|  |  | ||||||
| --- locale.c | --- locale.c | ||||||
| +++ locale.c	2018-09-20 08:06:23.732593807 +0000 | +++ locale.c	2025-01-31 13:23:16.647340079 +0000 | ||||||
| @@ -33,6 +33,10 @@ | @@ -33,6 +33,10 @@ | ||||||
|  #include "bashintl.h" |  #include "bashintl.h" | ||||||
|  #include "bashansi.h" |  #include "bashansi.h" | ||||||
| @@ -15,13 +15,13 @@ | |||||||
|  #include "chartypes.h" |  #include "chartypes.h" | ||||||
|  #include <errno.h> |  #include <errno.h> | ||||||
|   |   | ||||||
| @@ -79,6 +83,15 @@ void | @@ -85,6 +89,15 @@ void | ||||||
|  set_default_locale () |  set_default_locale (void) | ||||||
|  { |  { | ||||||
|  #if defined (HAVE_SETLOCALE) |  #if defined (HAVE_SETLOCALE) | ||||||
| +  struct stat st; | +  struct stat st; | ||||||
| + | +  if (stat("/usr/lib/locale/locale-archive", &st) == 0 && st.st_size == 0) | ||||||
| +  if (stat("/usr/lib/locale/locale-archive", &st) == 0 && st.st_size == 0) { | +    { | ||||||
| +      errno = EINVAL; | +      errno = EINVAL; | ||||||
| +      sys_error("set_default_locale: broken locale"); | +      sys_error("set_default_locale: broken locale"); | ||||||
| +      fprintf  (stderr, "%s: Please remove /usr/lib/locale/locale-archive\n", | +      fprintf  (stderr, "%s: Please remove /usr/lib/locale/locale-archive\n", | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
|  1 file changed, 12 insertions(+), 1 deletion(-) |  1 file changed, 12 insertions(+), 1 deletion(-) | ||||||
|  |  | ||||||
| --- builtins/printf.def | --- builtins/printf.def | ||||||
| +++ builtins/printf.def	2022-06-22 06:26:14.069158235 +0000 | +++ builtins/printf.def	2025-01-31 13:35:58.961286087 +0000 | ||||||
| @@ -56,6 +56,7 @@ error occurs. | @@ -56,6 +56,7 @@ error occurs. | ||||||
|  $END |  $END | ||||||
|   |   | ||||||
| @@ -12,7 +12,7 @@ | |||||||
|   |   | ||||||
|  #include "../bashtypes.h" |  #include "../bashtypes.h" | ||||||
|   |   | ||||||
| @@ -702,7 +703,7 @@ printf_builtin (list) | @@ -783,7 +784,7 @@ printf_builtin (WORD_LIST *list) | ||||||
|  	    case 'A': |  	    case 'A': | ||||||
|  #endif |  #endif | ||||||
|  	      { |  	      { | ||||||
| @@ -21,10 +21,10 @@ | |||||||
|   |   | ||||||
|  	      	if (use_Lmod || posixly_correct == 0) |  	      	if (use_Lmod || posixly_correct == 0) | ||||||
|  		  { |  		  { | ||||||
| @@ -710,7 +711,12 @@ printf_builtin (list) | @@ -791,7 +792,12 @@ printf_builtin (WORD_LIST *list) | ||||||
|   |   | ||||||
|  		    p = getfloatmax (); |  		    p = getfloatmax (); | ||||||
|  		    f = mklong (start, FLOATMAX_CONV, USE_LONG_DOUBLE); |  		    f = mklong (start, FLOATMAX_CONV, FLOATMAX_CONVLEN); | ||||||
| + | + | ||||||
| +		    if (lce && lcl) setlocale(LC_NUMERIC, lce); | +		    if (lce && lcl) setlocale(LC_NUMERIC, lce); | ||||||
| + | + | ||||||
| @@ -34,7 +34,7 @@ | |||||||
|  		  } |  		  } | ||||||
|  		else		/* posixly_correct */ |  		else		/* posixly_correct */ | ||||||
|  		  { |  		  { | ||||||
| @@ -718,7 +724,12 @@ printf_builtin (list) | @@ -799,7 +805,12 @@ printf_builtin (WORD_LIST *list) | ||||||
|   |   | ||||||
|  		    p = getdouble (); |  		    p = getdouble (); | ||||||
|  		    f = mklong (start, "", 0); |  		    f = mklong (start, "", 0); | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ | |||||||
|  |  | ||||||
| --- locale.c | --- locale.c | ||||||
| +++ locale.c	2018-09-20 08:14:41.307485537 +0000 | +++ locale.c	2018-09-20 08:14:41.307485537 +0000 | ||||||
| @@ -57,6 +57,7 @@ extern int dump_translatable_strings, du | @@ -63,6 +63,7 @@ extern int dump_translatable_strings, du | ||||||
|   |   | ||||||
|  /* The current locale when the program begins */ |  /* The current locale when the program begins */ | ||||||
|  static char *default_locale; |  static char *default_locale; | ||||||
| @@ -12,7 +12,7 @@ | |||||||
|   |   | ||||||
|  /* The current domain for textdomain(3). */ |  /* The current domain for textdomain(3). */ | ||||||
|  static char *default_domain; |  static char *default_domain; | ||||||
| @@ -361,11 +362,21 @@ get_locale_var (var) | @@ -366,11 +367,21 @@ get_locale_var (var) | ||||||
|    if (locale == 0 || *locale == 0) |    if (locale == 0 || *locale == 0) | ||||||
|      locale = lang; |      locale = lang; | ||||||
|    if (locale == 0 || *locale == 0) |    if (locale == 0 || *locale == 0) | ||||||
|   | |||||||
| @@ -16,12 +16,12 @@ | |||||||
| |other files as well even if the bash does not. | |other files as well even if the bash does not. | ||||||
| | | | | ||||||
| --- | --- | ||||||
|  doc/bash.1 |   16 ++++++++++++---- |  doc/bash.1 |   22 +++++++++++++++++++--- | ||||||
|  1 file changed, 12 insertions(+), 4 deletions(-) |  1 file changed, 19 insertions(+), 3 deletions(-) | ||||||
|  |  | ||||||
| --- doc/bash.1 | --- doc/bash.1 | ||||||
| +++ doc/bash.1	2022-06-22 06:31:11.283670836 +0000 | +++ doc/bash.1	2025-01-31 14:07:19.026636616 +0000 | ||||||
| @@ -330,6 +330,8 @@ and executes commands from the first one | @@ -372,6 +372,8 @@ and executes commands from the first one | ||||||
|  The |  The | ||||||
|  .B \-\-noprofile |  .B \-\-noprofile | ||||||
|  option may be used when the shell is started to inhibit this behavior. |  option may be used when the shell is started to inhibit this behavior. | ||||||
| @@ -30,36 +30,45 @@ | |||||||
|  .PP |  .PP | ||||||
|  When an interactive login shell exits, |  When an interactive login shell exits, | ||||||
|  or a non-interactive login shell executes the \fBexit\fP builtin command, |  or a non-interactive login shell executes the \fBexit\fP builtin command, | ||||||
| @@ -339,13 +341,19 @@ exists. | @@ -383,8 +385,10 @@ if it exists. | ||||||
|  .PP |  | ||||||
|  When an interactive shell that is not a login shell is started, |  When an interactive shell that is not a login shell is started, | ||||||
|  .B bash |  .B bash | ||||||
| -reads and executes commands from \fI~/.bashrc\fP, if that file exists. |  reads and executes commands from  | ||||||
| -This may be inhibited by using the | -.FN \*~/.bashrc , | ||||||
| +reads and executes commands from \fI/etc/bash.bashrc\fP then \fI~/.bashrc\fP | -if that file exists. | ||||||
| +when those files exist and are readable. This may be inhibited by using the | +.FN /etc/bash.bashrc | ||||||
|  | +then | ||||||
|  | +.FN \*~/.bashrc | ||||||
|  | +when those files exist and are readable. | ||||||
|  |  The | ||||||
|  .B \-\-norc |  .B \-\-norc | ||||||
|  option. |  option inhibits this behavior. | ||||||
|  The \fB\-\-rcfile\fP \fIfile\fP option will force | @@ -392,6 +396,16 @@ The \fB\-\-rcfile\fP \fIfile\fP option c | ||||||
|  .B bash |  .B bash | ||||||
|  to read and execute commands from \fIfile\fP instead of \fI~/.bashrc\fP. |  to use \fIfile\fP instead of | ||||||
| +Please note that the file \fI/etc/bash.bashrc\fP includes an autodetection shell |  .FN \*~/.bashrc . | ||||||
|  | +Please note that the file | ||||||
|  | +.FN /etc/bash.bashrc | ||||||
|  | +includes an autodetection shell | ||||||
| +code wether it is used for by a remote OpenSSH SSH client like | +code wether it is used for by a remote OpenSSH SSH client like | ||||||
| +.BR ssh (1) | +.BR ssh (1) | ||||||
| +or | +or | ||||||
| +.BR slogin (1) | +.BR slogin (1) | ||||||
| +to source the local \fI/etc/profile\fP if not already done. | +to source the local | ||||||
|  | +.FN /etc/profile | ||||||
|  | +if not already done. | ||||||
|  .PP |  .PP | ||||||
|  When |  When | ||||||
|  .B bash |  .B bash | ||||||
| @@ -432,8 +440,8 @@ or the secure shell daemon \fIsshd\fP. | @@ -481,8 +495,10 @@ If | ||||||
|  If |  | ||||||
|  .B bash |  .B bash | ||||||
|  determines it is being run non-interactively in this fashion, |  determines it is being run non-interactively in this fashion, | ||||||
| -it reads and executes commands from \fI~/.bashrc\fP, |  it reads and executes commands from | ||||||
|  | +.FN /etc/bash.bashrc | ||||||
|  | +then | ||||||
|  |  .FN \*~/.bashrc , | ||||||
| -if that file exists and is readable. | -if that file exists and is readable. | ||||||
| +it reads and executes commands from \fI/etc/bash.bashrc\fP then | +when those file exists and is readable. | ||||||
| +\fI~/.bashrc\fP, when those files exists and are readable. |  .B Bash | ||||||
|  It will not do this if invoked as \fBsh\fP. |  does not read this file if invoked as \fBsh\fP. | ||||||
|  The |  The | ||||||
|  .B \-\-norc |  | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| --- | --- | ||||||
|  bashline.c |    7 +++++++ |  bashline.c |    6 ++++++ | ||||||
|  1 file changed, 7 insertions(+) |  1 file changed, 6 insertions(+) | ||||||
|  |  | ||||||
| --- bashline.c | --- bashline.c | ||||||
| +++ bashline.c	2018-11-29 08:12:25.876588305 +0000 | +++ bashline.c	2025-01-31 13:50:00.705768344 +0000 | ||||||
| @@ -2206,6 +2206,13 @@ globword: | @@ -2259,6 +2259,13 @@ globword: | ||||||
|  	    return ((char *)NULL); |  	    } | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
| +      if (GLOB_FAILED (glob_matches) || glob_matches == 0) | +      if (GLOB_FAILED (glob_matches) || glob_matches == 0) | ||||||
|   | |||||||
| @@ -1,9 +1,9 @@ | |||||||
| --- | --- | ||||||
|  shell.c |   24 ++++++++++++++++++++++++ |  shell.c |   25 +++++++++++++++++++++++++ | ||||||
|  1 file changed, 24 insertions(+) |  1 file changed, 25 insertions(+) | ||||||
|  |  | ||||||
| --- shell.c | --- shell.c | ||||||
| +++ shell.c	2018-09-20 08:08:34.242204532 +0000 | +++ shell.c	2025-01-31 13:53:05.110369836 +0000 | ||||||
| @@ -43,6 +43,8 @@ | @@ -43,6 +43,8 @@ | ||||||
|  #endif |  #endif | ||||||
|   |   | ||||||
| @@ -13,7 +13,7 @@ | |||||||
|  #  include <unistd.h> |  #  include <unistd.h> | ||||||
|  #endif |  #endif | ||||||
|   |   | ||||||
| @@ -1888,6 +1894,28 @@ init_interactive_script () | @@ -1873,6 +1875,28 @@ init_interactive_script (void) | ||||||
|  #endif |  #endif | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -40,9 +40,9 @@ | |||||||
| +} | +} | ||||||
| + | + | ||||||
|  void |  void | ||||||
|  get_current_user_info () |  get_current_user_info (void) | ||||||
|  { |  { | ||||||
| @@ -1919,6 +1946,7 @@ get_current_user_info () | @@ -1904,6 +1928,7 @@ get_current_user_info (void) | ||||||
|  #if defined (HAVE_GETPWENT) |  #if defined (HAVE_GETPWENT) | ||||||
|        endpwent (); |        endpwent (); | ||||||
|  #endif |  #endif | ||||||
|   | |||||||
| @@ -2,16 +2,16 @@ | |||||||
|  array.c                  |    2 +- |  array.c                  |    2 +- | ||||||
|  examples/loadables/tee.c |    3 ++- |  examples/loadables/tee.c |    3 ++- | ||||||
|  hashlib.c                |    4 ++-- |  hashlib.c                |    4 ++-- | ||||||
|  jobs.c                   |    9 +++++++++ |  jobs.c                   |    8 ++++++++ | ||||||
|  sig.c                    |    4 ++-- |  sig.c                    |    4 ++-- | ||||||
|  sig.h                    |    4 ++-- |  sig.h                    |    4 ++-- | ||||||
|  trap.c                   |    2 +- |  trap.c                   |    2 +- | ||||||
|  trap.h                   |    2 +- |  trap.h                   |    2 +- | ||||||
|  8 files changed, 20 insertions(+), 10 deletions(-) |  8 files changed, 19 insertions(+), 10 deletions(-) | ||||||
|  |  | ||||||
| --- array.c | --- array.c | ||||||
| +++ array.c	2020-10-12 16:00:37.207185803 +0000 | +++ array.c	2025-01-31 13:09:34.626496209 +0000 | ||||||
| @@ -1095,7 +1095,7 @@ char	*s, *sep; | @@ -1031,7 +1031,7 @@ array_from_string(char *s, char *sep) | ||||||
|   * To make a running version, compile -DTEST_ARRAY and link with: |   * To make a running version, compile -DTEST_ARRAY and link with: | ||||||
|   * 	xmalloc.o syntax.o lib/malloc/libmalloc.a lib/sh/libsh.a |   * 	xmalloc.o syntax.o lib/malloc/libmalloc.a lib/sh/libsh.a | ||||||
|   */ |   */ | ||||||
| @@ -19,9 +19,9 @@ | |||||||
| +volatile sig_atomic_t interrupt_immediately = 0; | +volatile sig_atomic_t interrupt_immediately = 0; | ||||||
|   |   | ||||||
|  int |  int | ||||||
|  signal_is_trapped(s) |  signal_is_trapped(int s) | ||||||
| --- examples/loadables/tee.c | --- examples/loadables/tee.c | ||||||
| +++ examples/loadables/tee.c	2020-10-12 16:00:37.267184666 +0000 | +++ examples/loadables/tee.c	2025-01-31 13:10:07.849883770 +0000 | ||||||
| @@ -35,6 +35,7 @@ | @@ -35,6 +35,7 @@ | ||||||
|  #include "bashansi.h" |  #include "bashansi.h" | ||||||
|   |   | ||||||
| @@ -37,11 +37,11 @@ | |||||||
| -extern int interrupt_immediately; | -extern int interrupt_immediately; | ||||||
| +extern volatile sig_atomic_t interrupt_immediately; | +extern volatile sig_atomic_t interrupt_immediately; | ||||||
|   |   | ||||||
|  extern char *strerror (); |  extern char *strerror (int); | ||||||
|   |   | ||||||
| --- hashlib.c | --- hashlib.c | ||||||
| +++ hashlib.c	2020-10-12 16:02:31.677016331 +0000 | +++ hashlib.c	2025-01-31 13:10:56.584985412 +0000 | ||||||
| @@ -473,8 +473,8 @@ hash_pstats (table, name) | @@ -449,8 +449,8 @@ hash_pstats (HASH_TABLE *table, char *na | ||||||
|   |   | ||||||
|  HASH_TABLE *table, *ntable; |  HASH_TABLE *table, *ntable; | ||||||
|   |   | ||||||
| @@ -51,14 +51,13 @@ | |||||||
| +volatile sig_atomic_t running_trap = 0; | +volatile sig_atomic_t running_trap = 0; | ||||||
|   |   | ||||||
|  int |  int | ||||||
|  signal_is_trapped (s) |  signal_is_trapped (int s) | ||||||
| --- jobs.c | --- jobs.c | ||||||
| +++ jobs.c	2020-10-12 16:00:37.267184666 +0000 | +++ jobs.c	2025-01-31 13:12:14.623546948 +0000 | ||||||
| @@ -2212,6 +2212,15 @@ make_child (command, flags) | @@ -2354,6 +2354,14 @@ make_child (char *command, int flags) | ||||||
|  	 child process, go back and change callers who free `command' in |  | ||||||
|  	 the child process when this returns. */ |  	 the child process when this returns. */ | ||||||
|        mypid = getpid (); |        mypid = getpid (); | ||||||
| + |   | ||||||
| +      if (interrupt_state) | +      if (interrupt_state) | ||||||
| +	{ | +	{ | ||||||
| +	  struct timeval tv; | +	  struct timeval tv; | ||||||
| @@ -67,12 +66,12 @@ | |||||||
| +	  (void) getrusage(RUSAGE_SELF, &rx); | +	  (void) getrusage(RUSAGE_SELF, &rx); | ||||||
| +	} | +	} | ||||||
| + | + | ||||||
|  #if defined (BUFFERED_INPUT) |  | ||||||
|        /* Close default_buffered_input if it's > 0.  We don't close it if it's |        /* Close default_buffered_input if it's > 0.  We don't close it if it's | ||||||
|  	 0 because that's the file descriptor used when redirecting input, |  	 0 because that's the file descriptor used when redirecting input, | ||||||
|  |  	 and it's wrong to close the file in that case. */ | ||||||
| --- sig.c | --- sig.c | ||||||
| +++ sig.c	2020-10-12 16:00:37.267184666 +0000 | +++ sig.c	2025-01-31 12:58:40.154563470 +0000 | ||||||
| @@ -84,10 +84,10 @@ sigset_t top_level_mask; | @@ -86,10 +86,10 @@ sigset_t top_level_mask; | ||||||
|  #endif /* JOB_CONTROL */ |  #endif /* JOB_CONTROL */ | ||||||
|   |   | ||||||
|  /* When non-zero, we throw_to_top_level (). */ |  /* When non-zero, we throw_to_top_level (). */ | ||||||
| @@ -86,7 +85,7 @@ | |||||||
|  #if defined (SIGWINCH) |  #if defined (SIGWINCH) | ||||||
|  static SigHandler *old_winch = (SigHandler *)SIG_DFL; |  static SigHandler *old_winch = (SigHandler *)SIG_DFL; | ||||||
| --- sig.h | --- sig.h | ||||||
| +++ sig.h	2020-10-12 16:03:44.403637781 +0000 | +++ sig.h	2025-01-31 13:12:50.922877875 +0000 | ||||||
| @@ -105,8 +105,8 @@ do { \ | @@ -105,8 +105,8 @@ do { \ | ||||||
|  extern volatile sig_atomic_t sigwinch_received; |  extern volatile sig_atomic_t sigwinch_received; | ||||||
|  extern volatile sig_atomic_t sigterm_received; |  extern volatile sig_atomic_t sigterm_received; | ||||||
| @@ -96,27 +95,27 @@ | |||||||
| +extern volatile sig_atomic_t interrupt_immediately;	/* no longer used */ | +extern volatile sig_atomic_t interrupt_immediately;	/* no longer used */ | ||||||
| +extern volatile sig_atomic_t terminate_immediately; | +extern volatile sig_atomic_t terminate_immediately; | ||||||
|   |   | ||||||
|  /* Functions from sig.c. */ |  extern volatile int builtin_catch_sigpipe;	/* not used yet */ | ||||||
|  extern sighandler termsig_sighandler PARAMS((int)); |   | ||||||
| --- trap.c | --- trap.c | ||||||
| +++ trap.c	2020-10-12 16:08:10.102600477 +0000 | +++ trap.c	2025-01-31 13:13:24.578257547 +0000 | ||||||
| @@ -111,7 +111,7 @@ int pending_traps[NSIG]; | @@ -112,7 +112,7 @@ int pending_traps[NSIG]; | ||||||
|     Used in execute_cmd.c and builtins/common.c to clean up when |     Used in execute_cmd.c and builtins/common.c to clean up when | ||||||
|     parse_and_execute does not return normally after executing the |     parse_and_execute does not return normally after executing the | ||||||
|     trap command (e.g., when `return' is executed in the trap command). */ |     trap command (e.g., when `return' is executed in the trap command). */ | ||||||
| -int running_trap; | -int running_trap; | ||||||
| +volatile sig_atomic_t running_trap; | +volatile sig_atomic_t running_trap; | ||||||
|   |   | ||||||
|  /* Set to last_command_exit_value before running a trap. */ |  /* The execution context (function/source execution level) when we began | ||||||
|  int trap_saved_exit_value; |     running this trap command. This is used to determine whether we have | ||||||
| --- trap.h | --- trap.h | ||||||
| +++ trap.h	2020-10-12 16:05:57.105122164 +0000 | +++ trap.h	2025-01-31 13:13:58.405634062 +0000 | ||||||
| @@ -62,7 +62,7 @@ extern char *trap_list[]; | @@ -62,7 +62,7 @@ extern char *trap_list[]; | ||||||
|   |   | ||||||
|  extern int trapped_signal_received; |  extern int trapped_signal_received; | ||||||
|  extern int wait_signal_received; |  extern int wait_signal_received; | ||||||
| -extern int running_trap; | -extern int running_trap; | ||||||
| +extern volatile sig_atomic_t running_trap; | +extern volatile sig_atomic_t running_trap; | ||||||
|  |  extern int trap_return_context; | ||||||
|  extern int trap_saved_exit_value; |  extern int trap_saved_exit_value; | ||||||
|  extern int suppress_debug_trap_verbose; |  extern int suppress_debug_trap_verbose; | ||||||
|   |  | ||||||
|   | |||||||
| @@ -1,14 +0,0 @@ | |||||||
| --- |  | ||||||
|  support/printenv.c |    1 + |  | ||||||
|  1 file changed, 1 insertion(+) |  | ||||||
|  |  | ||||||
| --- support/printenv.c |  | ||||||
| +++ support/printenv.c	2014-04-17 09:46:25.874236036 +0000 |  | ||||||
| @@ -31,6 +31,7 @@ |  | ||||||
|  #include "bashansi.h" |  | ||||||
|  #include <stdio.h>		/* puts */ |  | ||||||
|   |  | ||||||
| +#include <string.h> |  | ||||||
|  extern char **environ; |  | ||||||
|   |  | ||||||
|  int |  | ||||||
| @@ -2,16 +2,15 @@ | |||||||
|  examples/loadables/finfo.c   |    3 +-- |  examples/loadables/finfo.c   |    3 +-- | ||||||
|  examples/loadables/head.c    |    2 -- |  examples/loadables/head.c    |    2 -- | ||||||
|  examples/loadables/id.c      |    2 -- |  examples/loadables/id.c      |    2 -- | ||||||
|  examples/loadables/mkdir.c   |    2 +- |  | ||||||
|  examples/loadables/pathchk.c |    2 -- |  examples/loadables/pathchk.c |    2 -- | ||||||
|  examples/loadables/print.c   |    2 +- |  examples/loadables/print.c   |    2 +- | ||||||
|  examples/loadables/tee.c     |    2 -- |  examples/loadables/tee.c     |    2 -- | ||||||
|  7 files changed, 3 insertions(+), 12 deletions(-) |  6 files changed, 2 insertions(+), 11 deletions(-) | ||||||
|  |  | ||||||
| --- examples/loadables/finfo.c | --- examples/loadables/finfo.c | ||||||
| +++ examples/loadables/finfo.c	2018-09-20 08:07:43.739129083 +0000 | +++ examples/loadables/finfo.c	2025-01-31 13:39:12.821711490 +0000 | ||||||
| @@ -108,7 +108,7 @@ int	argc; | @@ -98,7 +98,7 @@ static int | ||||||
|  char	**argv; |  finfo_main(int argc, char **argv) | ||||||
|  { |  { | ||||||
|  	register int	i; |  	register int	i; | ||||||
| -	int	mode, flags, opt; | -	int	mode, flags, opt; | ||||||
| @@ -19,7 +18,7 @@ | |||||||
|   |   | ||||||
|  	sh_optind = 0;	/* XXX */ |  	sh_optind = 0;	/* XXX */ | ||||||
|  	prog = base_pathname(argv[0]); |  	prog = base_pathname(argv[0]); | ||||||
| @@ -396,7 +396,6 @@ finfo_builtin(list) | @@ -388,7 +388,6 @@ finfo_builtin(WORD_LIST *list) | ||||||
|  { |  { | ||||||
|    int c, r; |    int c, r; | ||||||
|    char **v; |    char **v; | ||||||
| @@ -28,8 +27,8 @@ | |||||||
|    v = make_builtin_argv (list, &c); |    v = make_builtin_argv (list, &c); | ||||||
|    r = finfo_main (c, v); |    r = finfo_main (c, v); | ||||||
| --- examples/loadables/head.c | --- examples/loadables/head.c | ||||||
| +++ examples/loadables/head.c	2018-09-20 08:07:43.739129083 +0000 | +++ examples/loadables/head.c	2025-01-31 13:37:22.031754291 +0000 | ||||||
| @@ -101,8 +101,6 @@ head_builtin (list) | @@ -97,8 +97,6 @@ head_builtin (WORD_LIST *list) | ||||||
|    WORD_LIST *l; |    WORD_LIST *l; | ||||||
|    FILE *fp; |    FILE *fp; | ||||||
|   |   | ||||||
| @@ -39,30 +38,19 @@ | |||||||
|   |   | ||||||
|    reset_internal_getopt (); |    reset_internal_getopt (); | ||||||
| --- examples/loadables/id.c | --- examples/loadables/id.c | ||||||
| +++ examples/loadables/id.c	2018-09-20 08:07:43.739129083 +0000 | +++ examples/loadables/id.c	2025-01-31 13:39:49.329038382 +0000 | ||||||
| @@ -64,8 +64,6 @@ static int id_flags; | @@ -64,8 +64,6 @@ static int id_flags; | ||||||
|  static uid_t ruid, euid; |  static uid_t ruid, euid; | ||||||
|  static gid_t rgid, egid; |  static gid_t rgid, egid; | ||||||
|   |   | ||||||
| -static char *id_user; | -static char *id_user; | ||||||
| - | - | ||||||
|  static int inituser (); |  static int inituser (char *); | ||||||
|   |   | ||||||
|  static int id_pruser (); |  static int id_pruser (int); | ||||||
| --- examples/loadables/mkdir.c |  | ||||||
| +++ examples/loadables/mkdir.c	2018-09-20 08:07:43.739129083 +0000 |  | ||||||
| @@ -170,7 +170,7 @@ make_path (path, nmode, parent_mode) |  | ||||||
|    while (*p == '/') |  | ||||||
|      p++; |  | ||||||
|   |  | ||||||
| -  while (p = strchr (p, '/')) |  | ||||||
| +  while ((p = strchr (p, '/'))) |  | ||||||
|      { |  | ||||||
|        *p = '\0'; |  | ||||||
|        if (stat (npath, &sb) != 0) |  | ||||||
| --- examples/loadables/pathchk.c | --- examples/loadables/pathchk.c | ||||||
| +++ examples/loadables/pathchk.c	2018-09-20 08:07:43.739129083 +0000 | +++ examples/loadables/pathchk.c	2025-01-31 13:37:22.031754291 +0000 | ||||||
| @@ -292,10 +292,8 @@ validate_path (path, portability) | @@ -284,10 +284,8 @@ validate_path (char *path, int portabili | ||||||
|    if (*path == '\0') |    if (*path == '\0') | ||||||
|      return 0; |      return 0; | ||||||
|   |   | ||||||
| @@ -74,8 +62,8 @@ | |||||||
|    /* Figure out the parent of the first element in PATH.  */ |    /* Figure out the parent of the first element in PATH.  */ | ||||||
|    parent = xstrdup (*path == '/' ? "/" : "."); |    parent = xstrdup (*path == '/' ? "/" : "."); | ||||||
| --- examples/loadables/print.c | --- examples/loadables/print.c | ||||||
| +++ examples/loadables/print.c	2018-09-20 08:07:43.739129083 +0000 | +++ examples/loadables/print.c	2025-01-31 13:37:22.031754291 +0000 | ||||||
| @@ -77,7 +77,7 @@ print_builtin (list) | @@ -76,7 +76,7 @@ print_builtin (WORD_LIST *list) | ||||||
|  { |  { | ||||||
|    int c, r, nflag, raw, ofd, sflag; |    int c, r, nflag, raw, ofd, sflag; | ||||||
|    intmax_t lfd; |    intmax_t lfd; | ||||||
| @@ -85,8 +73,8 @@ | |||||||
|   |   | ||||||
|    nflag = raw = sflag = 0; |    nflag = raw = sflag = 0; | ||||||
| --- examples/loadables/tee.c | --- examples/loadables/tee.c | ||||||
| +++ examples/loadables/tee.c	2018-09-20 08:07:43.739129083 +0000 | +++ examples/loadables/tee.c	2025-01-31 13:37:22.031754291 +0000 | ||||||
| @@ -70,8 +70,6 @@ tee_builtin (list) | @@ -69,8 +69,6 @@ tee_builtin (WORD_LIST *list) | ||||||
|    FLIST *fl; |    FLIST *fl; | ||||||
|    char *buf, *bp; |    char *buf, *bp; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -1,9 +1,9 @@ | |||||||
| --- | --- | ||||||
|  lib/sh/tmpfile.c |   49 ++++++++++++++++++++++++++++++++++++++++++++++++- |  lib/sh/tmpfile.c |   42 ++++++++++++++++++++++++++++++++++++++++++ | ||||||
|  1 file changed, 48 insertions(+), 1 deletion(-) |  1 file changed, 42 insertions(+) | ||||||
|  |  | ||||||
| --- lib/sh/tmpfile.c | --- lib/sh/tmpfile.c | ||||||
| +++ lib/sh/tmpfile.c	2018-01-24 12:38:42.410481352 +0000 | +++ lib/sh/tmpfile.c	2025-01-31 14:26:40.473201839 +0000 | ||||||
| @@ -36,6 +36,14 @@ | @@ -36,6 +36,14 @@ | ||||||
|  #include <stdio.h> |  #include <stdio.h> | ||||||
|  #include <errno.h> |  #include <errno.h> | ||||||
| @@ -19,16 +19,16 @@ | |||||||
|  #include <shell.h> |  #include <shell.h> | ||||||
|   |   | ||||||
|  #ifndef errno |  #ifndef errno | ||||||
| @@ -65,6 +73,8 @@ static unsigned long filenum = 1L; | @@ -71,6 +79,8 @@ static unsigned long filenum = 1L; | ||||||
|  static char * |  static char * | ||||||
|  get_sys_tmpdir () |  get_sys_tmpdir (void) | ||||||
|  { |  { | ||||||
| +  static int doshm; | +  static int doshm; | ||||||
| + | + | ||||||
|    if (sys_tmpdir) |    if (sys_tmpdir) | ||||||
|      return sys_tmpdir; |      return sys_tmpdir; | ||||||
|   |   | ||||||
| @@ -91,6 +101,31 @@ get_sys_tmpdir () | @@ -97,6 +107,31 @@ get_sys_tmpdir (void) | ||||||
|    return sys_tmpdir; |    return sys_tmpdir; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -58,19 +58,17 @@ | |||||||
| +#endif | +#endif | ||||||
| + | + | ||||||
|  static char * |  static char * | ||||||
|  get_tmpdir (flags) |  get_tmpdir (int flags) | ||||||
|       int flags; |  | ||||||
| @@ -194,7 +229,8 @@ sh_mktmpfd (nameroot, flags, namep) |  | ||||||
|  { |  { | ||||||
|    char *filename, *tdir, *lroot; | @@ -214,6 +249,7 @@ sh_mktmpfd (const char *nameroot, int fl | ||||||
|  |    const char *lroot; | ||||||
|    int fd, tdlen; |    int fd, tdlen; | ||||||
| -   |     | ||||||
| + |  | ||||||
| +enospace: | +enospace: | ||||||
|    filename = (char *)xmalloc (PATH_MAX + 1); |    filename = (char *)xmalloc (PATH_MAX + 1); | ||||||
|    tdir = get_tmpdir (flags); |    tdir = get_tmpdir (flags); | ||||||
|    tdlen = strlen (tdir); |    tdlen = strlen (tdir); | ||||||
| @@ -217,6 +253,10 @@ sh_mktmpfd (nameroot, flags, namep) | @@ -243,6 +279,10 @@ sh_mktmpfd (const char *nameroot, int fl | ||||||
|        free (filename); |        free (filename); | ||||||
|        filename = NULL; |        filename = NULL; | ||||||
|      } |      } | ||||||
| @@ -80,18 +78,13 @@ | |||||||
| + | + | ||||||
|    if (namep) |    if (namep) | ||||||
|      *namep = filename; |      *namep = filename; | ||||||
|    return fd; |  | ||||||
| @@ -235,6 +275,13 @@ sh_mktmpfd (nameroot, flags, namep) |  | ||||||
|      } |  | ||||||
|    while (fd < 0 && errno == EEXIST); |  | ||||||
|   |   | ||||||
|  | @@ -282,6 +322,8 @@ sh_mktmpfd (const char *nameroot, int fl | ||||||
|  |        free (filename); | ||||||
|  |        filename = NULL; | ||||||
|  |      } | ||||||
| +  if (fd < 0 && errno == ENOSPC && emergency_sys_tmpdir()) | +  if (fd < 0 && errno == ENOSPC && emergency_sys_tmpdir()) | ||||||
| +    { |  | ||||||
| +      free (filename); |  | ||||||
| +      filename = NULL; |  | ||||||
| +    goto enospace; | +    goto enospace; | ||||||
| +    } |   | ||||||
| + |  | ||||||
|    if (namep) |    if (namep) | ||||||
|      *namep = filename; |      *namep = filename; | ||||||
|    else |  | ||||||
|   | |||||||
| @@ -1,31 +0,0 @@ | |||||||
| From: coolo@suse.com |  | ||||||
|  |  | ||||||
| perl 5.22 makes the long deprecated defined(@array) an hard |  | ||||||
| error |  | ||||||
| --- |  | ||||||
|  support/texi2html |    6 +++--- |  | ||||||
|  1 file changed, 3 insertions(+), 3 deletions(-) |  | ||||||
|  |  | ||||||
| --- support/texi2html |  | ||||||
| +++ support/texi2html	2016-03-08 11:49:40.596622296 +0000 |  | ||||||
| @@ -4855,9 +4855,9 @@ sub update_sec_num { |  | ||||||
|      my $ret; |  | ||||||
|   |  | ||||||
|      $level--; # here we start at 0 |  | ||||||
| -    if ($name =~ /^appendix/ || defined(@appendix_sec_num)) { |  | ||||||
| +    if ($name =~ /^appendix/ || @appendix_sec_num) { |  | ||||||
|  	# appendix style |  | ||||||
| -	if (defined(@appendix_sec_num)) { |  | ||||||
| +	if (@appendix_sec_num) { |  | ||||||
|  	    &incr_sec_num($level, @appendix_sec_num); |  | ||||||
|  	} else { |  | ||||||
|  	    @appendix_sec_num = ('A', 0, 0, 0); |  | ||||||
| @@ -4865,7 +4865,7 @@ sub update_sec_num { |  | ||||||
|  	$ret = join('.', @appendix_sec_num[0..$level]); |  | ||||||
|      } else { |  | ||||||
|  	# normal style |  | ||||||
| -	if (defined(@normal_sec_num))  |  | ||||||
| +	if (@normal_sec_num)  |  | ||||||
|  	{ |  | ||||||
|  	  &incr_sec_num($level, @normal_sec_num); |  | ||||||
|  	}  |  | ||||||
| @@ -4,7 +4,7 @@ | |||||||
|  |  | ||||||
| --- sig.c | --- sig.c | ||||||
| +++ sig.c	2018-11-29 08:13:00.103944580 +0000 | +++ sig.c	2018-11-29 08:13:00.103944580 +0000 | ||||||
| @@ -814,6 +814,8 @@ set_signal_handler (sig, handler) | @@ -838,6 +838,8 @@ set_signal_handler (sig, handler) | ||||||
|    if (sig == SIGCHLD) |    if (sig == SIGCHLD) | ||||||
|      act.sa_flags |= SA_RESTART;		/* XXX */ |      act.sa_flags |= SA_RESTART;		/* XXX */ | ||||||
|  #endif |  #endif | ||||||
| @@ -13,7 +13,7 @@ | |||||||
|    /* Let's see if we can keep SIGWINCH from interrupting interruptible system |    /* Let's see if we can keep SIGWINCH from interrupting interruptible system | ||||||
|       calls, like open(2)/read(2)/write(2) */ |       calls, like open(2)/read(2)/write(2) */ | ||||||
|  #if defined (SIGWINCH) |  #if defined (SIGWINCH) | ||||||
| @@ -824,6 +826,10 @@ set_signal_handler (sig, handler) | @@ -848,6 +850,10 @@ set_signal_handler (sig, handler) | ||||||
|       it to be as close to SIG_IGN as possible. */ |       it to be as close to SIG_IGN as possible. */ | ||||||
|    if (sig == SIGTERM && handler == sigterm_sighandler) |    if (sig == SIGTERM && handler == sigterm_sighandler) | ||||||
|      act.sa_flags |= SA_RESTART;		/* XXX */ |      act.sa_flags |= SA_RESTART;		/* XXX */ | ||||||
|   | |||||||
| @@ -1,16 +0,0 @@ | |||||||
| --- |  | ||||||
|  aclocal.m4 |    3 +++ |  | ||||||
|  1 file changed, 3 insertions(+) |  | ||||||
|  |  | ||||||
| --- aclocal.m4 |  | ||||||
| +++ aclocal.m4	2024-02-28 13:50:24.552597535 +0000 |  | ||||||
| @@ -238,6 +238,9 @@ AC_CACHE_VAL(bash_cv_dup2_broken, |  | ||||||
|  #include <sys/types.h> |  | ||||||
|  #include <fcntl.h> |  | ||||||
|  #include <stdlib.h> |  | ||||||
| +#ifdef HAVE_UNISTD_H |  | ||||||
| +#include <unistd.h> |  | ||||||
| +#endif |  | ||||||
|  int |  | ||||||
|  main() |  | ||||||
|  { |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								bash-5.2-patches.tar.bz2
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bash-5.2-patches.tar.bz2
									 (Stored with Git LFS)
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bash-5.2.tar.gz
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bash-5.2.tar.gz
									 (Stored with Git LFS)
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bash-5.3-patches.tar.bz2
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bash-5.3-patches.tar.bz2
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -2,7 +2,7 @@ | |||||||
|  Makefile.in        |    2 +- |  Makefile.in        |    2 +- | ||||||
|  config-top.h       |   16 ++++++++++------ |  config-top.h       |   16 ++++++++++------ | ||||||
|  doc/Makefile.in    |    2 +- |  doc/Makefile.in    |    2 +- | ||||||
|  doc/bash.1         |    7 +++++-- |  doc/bash.1         |    7 +++++++ | ||||||
|  general.h          |    3 +++ |  general.h          |    3 +++ | ||||||
|  parse.y            |    6 +++++- |  parse.y            |    6 +++++- | ||||||
|  shell.c            |    6 +++++- |  shell.c            |    6 +++++- | ||||||
| @@ -12,11 +12,11 @@ | |||||||
|  tests/glob.tests   |    4 ++-- |  tests/glob.tests   |    4 ++-- | ||||||
|  tests/run-intl     |    2 +- |  tests/run-intl     |    2 +- | ||||||
|  tests/run-read     |    2 +- |  tests/run-read     |    2 +- | ||||||
|  13 files changed, 41 insertions(+), 21 deletions(-) |  13 files changed, 43 insertions(+), 19 deletions(-) | ||||||
| 
 | 
 | ||||||
| --- Makefile.in | --- Makefile.in | ||||||
| +++ Makefile.in	2022-06-22 06:38:20.511747259 +0000 | +++ Makefile.in	2025-01-31 14:34:48.840202425 +0000 | ||||||
| @@ -466,7 +466,7 @@ SOURCES	 = $(CSOURCES) $(HSOURCES) $(BUI | @@ -500,7 +500,7 @@ SOURCES	 = $(CSOURCES) $(HSOURCES) $(BUI | ||||||
|  # headers in top-level source directory that get installed by install-headers |  # headers in top-level source directory that get installed by install-headers | ||||||
|  INSTALLED_HEADERS = shell.h bashjmp.h command.h syntax.h general.h error.h \ |  INSTALLED_HEADERS = shell.h bashjmp.h command.h syntax.h general.h error.h \ | ||||||
|  		    variables.h array.h assoc.h arrayfunc.h quit.h dispose_cmd.h \ |  		    variables.h array.h assoc.h arrayfunc.h quit.h dispose_cmd.h \ | ||||||
| @@ -26,8 +26,8 @@ | |||||||
|  		    bashintl.h bashansi.h bashjmp.h alias.h hashlib.h \ |  		    bashintl.h bashansi.h bashjmp.h alias.h hashlib.h \ | ||||||
|  		    conftypes.h unwind_prot.h jobs.h siglist.h \ |  		    conftypes.h unwind_prot.h jobs.h siglist.h \ | ||||||
| --- config-top.h | --- config-top.h | ||||||
| +++ config-top.h	2022-04-28 11:55:03.660248012 +0000 | +++ config-top.h	2025-01-31 14:35:51.119054831 +0000 | ||||||
| @@ -60,10 +60,14 @@ | @@ -55,10 +55,14 @@ | ||||||
|     due to EPIPE. */ |     due to EPIPE. */ | ||||||
|  /* #define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS */ |  /* #define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS */ | ||||||
|   |   | ||||||
| @@ -43,16 +43,16 @@ | |||||||
|  #endif |  #endif | ||||||
|   |   | ||||||
|  /* If you want to unconditionally set a value for PATH in every restricted |  /* If you want to unconditionally set a value for PATH in every restricted | ||||||
| @@ -74,7 +78,7 @@ | @@ -69,7 +73,7 @@ | ||||||
|     the Posix.2 confstr () function, or CS_PATH define are not present. */ |     the Posix.2 confstr () function, or CS_PATH define are not present. */ | ||||||
|  #ifndef STANDARD_UTILS_PATH |  #ifndef STANDARD_UTILS_PATH | ||||||
|  #define STANDARD_UTILS_PATH \ |  #define STANDARD_UTILS_PATH \ | ||||||
| -  "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc" | -  "/bin:/usr/bin:/sbin:/usr/sbin" | ||||||
| +  _PATH_STDPATH | +  _PATH_STDPATH | ||||||
|  #endif |  #endif | ||||||
|   |   | ||||||
|  /* The default path for enable -f */ |  /* The default path for enable -f */ | ||||||
| @@ -97,20 +101,20 @@ | @@ -92,20 +96,20 @@ | ||||||
|  #define DEFAULT_BASHRC "~/.bashrc" |  #define DEFAULT_BASHRC "~/.bashrc" | ||||||
|   |   | ||||||
|  /* System-wide .bashrc file for interactive shells. */ |  /* System-wide .bashrc file for interactive shells. */ | ||||||
| @@ -78,32 +78,32 @@ | |||||||
|  /* Define if you want the case-toggling operators (~[~]) and the |  /* Define if you want the case-toggling operators (~[~]) and the | ||||||
|     `capcase' variable attribute (declare -c). */ |     `capcase' variable attribute (declare -c). */ | ||||||
| --- doc/Makefile.in | --- doc/Makefile.in | ||||||
| +++ doc/Makefile.in	2022-04-28 11:53:04.334380153 +0000 | +++ doc/Makefile.in	2025-01-31 14:36:39.222168456 +0000 | ||||||
| @@ -153,7 +153,7 @@ BASHREF_FILES = $(srcdir)/bashref.texi $ | @@ -153,7 +153,7 @@ BASHREF_FILES = $(srcdir)/bashref.texi $ | ||||||
|  #	$(RM) $@ |  #	$(RM) $@ | ||||||
|  #	-${TEXI2PDF} $< |  #	-${TEXI2PDF} $< | ||||||
|   |   | ||||||
| -all: ps info dvi text html $(MAN2HTML) | -all: info dvi text html pdf $(MAN2HTML) | ||||||
| +all: info html $(MAN2HTML) | +all: info html $(MAN2HTML) | ||||||
|  nodvi: ps info text html |  nodvi: ps info text html | ||||||
|  everything: all pdf |  everything: all ps | ||||||
|   |   | ||||||
| --- doc/bash.1 | --- doc/bash.1 | ||||||
| +++ doc/bash.1	2022-06-22 06:37:14.908958305 +0000 | +++ doc/bash.1	2025-01-31 14:39:44.682751126 +0000 | ||||||
| @@ -5745,8 +5745,8 @@ file (the \fIinputrc\fP file). | @@ -2800,6 +2800,10 @@ startup file, overriding the default of | ||||||
|  The name of this file is taken from the value of the |  | ||||||
|  .SM |  .SM | ||||||
|  .B INPUTRC |  .B READLINE | ||||||
| -variable.  If that variable is unset, the default is |  below). | ||||||
| -.IR ~/.inputrc . | +If that variable is unset, readline will read both | ||||||
| +environment variable. If that variable is unset, readline will read both | +.FN /etc/inputrc | ||||||
| +.IR /etc/inputrc " and " ~/.inputrc . | +and | ||||||
|  If that file  does not exist or cannot be read, the ultimate default is | +.FN \*~/.inputrc . | ||||||
|  .IR /etc/inputrc . |  | ||||||
|  When a program which uses the readline library starts up, the |  | ||||||
| @@ -11706,6 +11706,9 @@ command history |  | ||||||
|  .TP |  .TP | ||||||
|  .FN ~/.inputrc |  .B INSIDE_EMACS | ||||||
|  |  If this variable appears in the environment when the shell starts, | ||||||
|  | @@ -13443,6 +13447,9 @@ command history | ||||||
|  |  .TP | ||||||
|  |  .FN \*~/.inputrc | ||||||
|  Individual \fIreadline\fP initialization file |  Individual \fIreadline\fP initialization file | ||||||
| +.TP | +.TP | ||||||
| +.FN /etc/inputrc | +.FN /etc/inputrc | ||||||
| @@ -112,7 +112,7 @@ | |||||||
|  .SH AUTHORS |  .SH AUTHORS | ||||||
|  Brian Fox, Free Software Foundation |  Brian Fox, Free Software Foundation | ||||||
| --- general.h | --- general.h | ||||||
| +++ general.h	2022-04-28 11:53:04.334380153 +0000 | +++ general.h	2025-01-31 14:34:48.844202351 +0000 | ||||||
| @@ -21,10 +21,13 @@ | @@ -21,10 +21,13 @@ | ||||||
|  #if !defined (_GENERAL_H_) |  #if !defined (_GENERAL_H_) | ||||||
|  #define _GENERAL_H_ |  #define _GENERAL_H_ | ||||||
| @@ -128,10 +128,10 @@ | |||||||
|  #if defined (HAVE_SYS_RESOURCE_H) && defined (RLIMTYPE) |  #if defined (HAVE_SYS_RESOURCE_H) && defined (RLIMTYPE) | ||||||
|  #  if defined (HAVE_SYS_TIME_H) |  #  if defined (HAVE_SYS_TIME_H) | ||||||
| --- parse.y | --- parse.y | ||||||
| +++ parse.y	2022-04-28 11:53:04.334380153 +0000 | +++ parse.y	2025-01-31 14:40:55.673443061 +0000 | ||||||
| @@ -366,6 +366,10 @@ static FILE *yyerrstream; | @@ -405,6 +405,10 @@ static FILE *yyerrstream; | ||||||
|  /* Special; never created by yylex; only set by parse_comsub and xparse_dolparen */ |  /* Special; never created by yylex; only set by parse_matched_pair/parse_comsub/xparse_dolparen */ | ||||||
|  %token DOLPAREN |  %token DOLBRACE | ||||||
|   |   | ||||||
| +/* Declare token YYEOF as older bison version fails | +/* Declare token YYEOF as older bison version fails | ||||||
| +   with not defined as a token and has no rules */ | +   with not defined as a token and has no rules */ | ||||||
| @@ -140,7 +140,7 @@ | |||||||
|  /* The types that the various syntactical units return. */ |  /* The types that the various syntactical units return. */ | ||||||
|   |   | ||||||
|  %type <command> inputunit command pipeline pipeline_command |  %type <command> inputunit command pipeline pipeline_command | ||||||
| @@ -1513,7 +1513,7 @@ input_file_descriptor () | @@ -1649,7 +1653,7 @@ input_file_descriptor (void) | ||||||
|   |   | ||||||
|  #if defined (READLINE) |  #if defined (READLINE) | ||||||
|  char *current_readline_prompt = (char *)NULL; |  char *current_readline_prompt = (char *)NULL; | ||||||
| @@ -150,7 +150,7 @@ | |||||||
|   |   | ||||||
|  static int |  static int | ||||||
| --- shell.c | --- shell.c | ||||||
| +++ shell.c	2022-04-28 11:56:12.623015117 +0000 | +++ shell.c	2025-01-31 14:42:34.851615639 +0000 | ||||||
| @@ -46,6 +46,7 @@ | @@ -46,6 +46,7 @@ | ||||||
|  #  include <sys/mman.h> |  #  include <sys/mman.h> | ||||||
|  #  include <sys/types.h> |  #  include <sys/types.h> | ||||||
| @@ -159,7 +159,7 @@ | |||||||
|  #endif |  #endif | ||||||
|   |   | ||||||
|  #include "bashintl.h" |  #include "bashintl.h" | ||||||
| @@ -512,7 +513,7 @@ main (argc, argv, env) | @@ -512,7 +513,7 @@ main (int argc, char **argv, char **env) | ||||||
|      read_but_dont_execute = 1; |      read_but_dont_execute = 1; | ||||||
|  #endif |  #endif | ||||||
|   |   | ||||||
| @@ -168,18 +168,18 @@ | |||||||
|      disable_priv_mode (); |      disable_priv_mode (); | ||||||
|   |   | ||||||
|    /* Need to get the argument to a -c option processed in the |    /* Need to get the argument to a -c option processed in the | ||||||
| @@ -1342,6 +1343,9 @@ disable_priv_mode () | @@ -1343,6 +1344,9 @@ disable_priv_mode (void) | ||||||
|  { |    int e, r; | ||||||
|    int e; |  | ||||||
|   |   | ||||||
|  |    r = 0; | ||||||
| +  if (!current_user.user_name) | +  if (!current_user.user_name) | ||||||
| +    get_current_user_info(); | +    get_current_user_info(); | ||||||
| +  initgroups (current_user.user_name, current_user.gid); | +  r = initgroups (current_user.user_name, current_user.gid); | ||||||
|  #if HAVE_SETRESUID |  #if HAVE_SETRESUID | ||||||
|    if (setresuid (current_user.uid, current_user.uid, current_user.uid) < 0) |    if (current_user.euid != current_user.uid || current_user.saveuid != current_user.uid) | ||||||
|  #else |      r = setresuid (current_user.uid, current_user.uid, current_user.uid) ; | ||||||
| --- support/man2html.c | --- support/man2html.c | ||||||
| +++ support/man2html.c	2022-04-28 11:53:04.338380081 +0000 | +++ support/man2html.c	2025-01-31 14:34:48.848202278 +0000 | ||||||
| @@ -78,6 +78,7 @@ | @@ -78,6 +78,7 @@ | ||||||
|  #include <time.h> |  #include <time.h> | ||||||
|  #include <sys/time.h> |  #include <sys/time.h> | ||||||
| @@ -189,7 +189,7 @@ | |||||||
|  #define NULL_TERMINATED(n) ((n) + 1) |  #define NULL_TERMINATED(n) ((n) + 1) | ||||||
|   |   | ||||||
| --- support/rlvers.sh | --- support/rlvers.sh | ||||||
| +++ support/rlvers.sh	2022-04-28 11:53:04.338380081 +0000 | +++ support/rlvers.sh	2025-01-31 14:34:48.848202278 +0000 | ||||||
| @@ -27,10 +27,10 @@ TDIR=$TMPDIR/rlvers | @@ -27,10 +27,10 @@ TDIR=$TMPDIR/rlvers | ||||||
|   |   | ||||||
|  # defaults |  # defaults | ||||||
| @@ -205,7 +205,7 @@ | |||||||
|  # cannot rely on the presence of getopts |  # cannot rely on the presence of getopts | ||||||
|  while [ $# -gt 0 ]; do |  while [ $# -gt 0 ]; do | ||||||
| --- support/shobj-conf | --- support/shobj-conf | ||||||
| +++ support/shobj-conf	2022-04-28 11:57:29.117647038 +0000 | +++ support/shobj-conf	2025-01-31 14:34:48.848202278 +0000 | ||||||
| @@ -126,10 +126,11 @@ sunos5*|solaris2*) | @@ -126,10 +126,11 @@ sunos5*|solaris2*) | ||||||
|  linux*-*|gnu*-*|k*bsd*-gnu-*|midnightbsd*|freebsd*|dragonfly*) |  linux*-*|gnu*-*|k*bsd*-gnu-*|midnightbsd*|freebsd*|dragonfly*) | ||||||
|  	SHOBJ_CFLAGS=-fPIC |  	SHOBJ_CFLAGS=-fPIC | ||||||
| @@ -221,8 +221,8 @@ | |||||||
|   |   | ||||||
|  # Darwin/MacOS X |  # Darwin/MacOS X | ||||||
| --- tests/glob.tests | --- tests/glob.tests | ||||||
| +++ tests/glob.tests	2022-04-28 11:53:04.338380081 +0000 | +++ tests/glob.tests	2025-01-31 14:34:48.848202278 +0000 | ||||||
| @@ -34,8 +34,8 @@ ${THIS_SH} ./glob10.sub | @@ -35,8 +35,8 @@ ${THIS_SH} ./glob11.sub | ||||||
|   |   | ||||||
|  MYDIR=$PWD	# save where we are |  MYDIR=$PWD	# save where we are | ||||||
|   |   | ||||||
| @@ -234,7 +234,7 @@ | |||||||
|  rm -rf * |  rm -rf * | ||||||
|   |   | ||||||
| --- tests/run-intl | --- tests/run-intl | ||||||
| +++ tests/run-intl	2022-04-28 11:58:22.140698412 +0000 | +++ tests/run-intl	2025-01-31 14:34:48.848202278 +0000 | ||||||
| @@ -2,4 +2,4 @@ | @@ -2,4 +2,4 @@ | ||||||
|  ( diff -a ./intl.right ./intl.right >/dev/null 2>&1 ) && AFLAG=-a |  ( diff -a ./intl.right ./intl.right >/dev/null 2>&1 ) && AFLAG=-a | ||||||
|   |   | ||||||
| @@ -242,10 +242,30 @@ | |||||||
| -diff $AFLAG ${BASH_TSTOUT} intl.right && rm -f ${BASH_TSTOUT} | -diff $AFLAG ${BASH_TSTOUT} intl.right && rm -f ${BASH_TSTOUT} | ||||||
| +diff -w $AFLAG ${BASH_TSTOUT} intl.right && rm -f ${BASH_TSTOUT} | +diff -w $AFLAG ${BASH_TSTOUT} intl.right && rm -f ${BASH_TSTOUT} | ||||||
| --- tests/run-read | --- tests/run-read | ||||||
| +++ tests/run-read	2022-04-28 11:53:04.338380081 +0000 | +++ tests/run-read	2025-01-31 14:34:48.848202278 +0000 | ||||||
| @@ -1,4 +1,4 @@ | @@ -1,4 +1,4 @@ | ||||||
|  echo "warning: please do not consider output differing only in the amount of" >&2 |  echo "warning: please do not consider output differing only in the amount of" >&2 | ||||||
|  echo "warning: white space to be an error." >&2 |  echo "warning: white space to be an error." >&2 | ||||||
|  ${THIS_SH} ./read.tests > ${BASH_TSTOUT} 2>&1 |  ${THIS_SH} ./read.tests > ${BASH_TSTOUT} 2>&1 | ||||||
| -diff ${BASH_TSTOUT} read.right && rm -f ${BASH_TSTOUT} | -diff ${BASH_TSTOUT} read.right && rm -f ${BASH_TSTOUT} | ||||||
| +diff -w ${BASH_TSTOUT} read.right && rm -f ${BASH_TSTOUT} | +diff -w ${BASH_TSTOUT} read.right && rm -f ${BASH_TSTOUT} | ||||||
|  | --- configure | ||||||
|  | +++ configure	2025-07-22 11:44:32.379750615 +0000 | ||||||
|  | @@ -12749,7 +12749,6 @@ else case e in #( | ||||||
|  |             # defined sleep(n) _sleep ((n) * 1000) | ||||||
|  |             #endif | ||||||
|  |             #include <fcntl.h> | ||||||
|  | -           GL_MDA_DEFINES | ||||||
|  |             #ifndef O_NOATIME | ||||||
|  |              #define O_NOATIME 0 | ||||||
|  |             #endif | ||||||
|  | --- m4/fcntl-o.m4 | ||||||
|  | +++ m4/fcntl-o.m4	2025-07-22 11:54:23.317130679 +0000 | ||||||
|  | @@ -32,7 +32,6 @@ AC_DEFUN([gl_FCNTL_O_FLAGS], | ||||||
|  |             # defined sleep(n) _sleep ((n) * 1000) | ||||||
|  |             #endif | ||||||
|  |             #include <fcntl.h> | ||||||
|  | -           ]GL_MDA_DEFINES[ | ||||||
|  |             #ifndef O_NOATIME | ||||||
|  |              #define O_NOATIME 0 | ||||||
|  |             #endif | ||||||
							
								
								
									
										
											BIN
										
									
								
								bash-5.3.tar.gz
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bash-5.3.tar.gz
									 (Stored with Git LFS)
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								bash-5.3.tar.gz.sig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								bash-5.3.tar.gz.sig
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -1,5 +1,2 @@ | |||||||
| addFilter(".*shared-library-without-dependency-information.*") |  | ||||||
| addFilter(".*zero-length.*/etc/skel/\..*") |  | ||||||
| addFilter(".*call-to-mktemp.*/usr/bin/bash.*") | addFilter(".*call-to-mktemp.*/usr/bin/bash.*") | ||||||
| addFilter(".*W:.*patch-not-applied.*Patch.*:.*bash-4\.3-winch\.dif.*") | addFilter(".*W:.hidden-file-or-dir.*/usr/etc/skel/\..*") | ||||||
| addFilter(".*W:.*macro-in-comment.*%patch.*") |  | ||||||
|   | |||||||
							
								
								
									
										143
									
								
								bash.changes
									
									
									
									
									
								
							
							
						
						
									
										143
									
								
								bash.changes
									
									
									
									
									
								
							| @@ -1,5 +1,148 @@ | |||||||
| Adjusting changes | Adjusting changes | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Fri Aug  1 06:00:45 UTC 2025 - Dr. Werner Fink <werner@suse.de> | ||||||
|  |  | ||||||
|  | - Take refreshed source tar ball with uptodate (g)po files | ||||||
|  | - Refresh (g)po files as well due our patches | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Mon Jul 28 10:41:49 UTC 2025 - Dr. Werner Fink <werner@suse.de> | ||||||
|  |  | ||||||
|  | - Add upstream patches | ||||||
|  |   * bash53-001 | ||||||
|  |     In posix mode, `wait -n' with pid arguments does not restrict the set of | ||||||
|  |     processes it considers to those arguments. | ||||||
|  |   * bash53-002 | ||||||
|  |     There are too many differences in the various implementations of shm_open(2) | ||||||
|  |     to rely on it for bash's use. | ||||||
|  |   * bash53-003 | ||||||
|  |     Bash leaves internal quoting in place when expanding array subscripts | ||||||
|  |     that appear inside array subscripts in an arithmetic context, causing | ||||||
|  |     expansion failures. | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Fri Jul 18 07:39:27 UTC 2025 - Dr. Werner Fink <werner@suse.de> | ||||||
|  |  | ||||||
|  | - The package bash-loadables supplements a specific bash version | ||||||
|  |  | ||||||
|  | ------------------------------------------------------------------- | ||||||
|  | Thu Jul 17 08:52:25 UTC 2025 - Dr. Werner Fink <werner@suse.de> | ||||||
|  |  | ||||||
|  | -  Update to bash 5.3 | ||||||
|  | a. When checking whether a script file argument is a binary file, check the | ||||||
|  |    first two lines of a script if the first line begins with `#!'. | ||||||
|  | b. Bash does a better job of preserving user-supplied quotes around a word | ||||||
|  |    completion, instead of requoting it. | ||||||
|  | c. Bash reports the starting line number in an error message about an | ||||||
|  |    unterminated compound command like `if' without a `fi'. | ||||||
|  | d. Implement the POSIX requirement that running the `jobs' builtin removes | ||||||
|  |    jobs from the jobs list. | ||||||
|  | f. Call bash signal handlers while executing programmable completion commands, | ||||||
|  |    instead of readline's. | ||||||
|  | g. Print an error message if a regular expression used with [[ fails to compile. | ||||||
|  | h. The `umask' builtin now has additional features for full POSIX conformance. | ||||||
|  | i. `type -a -P' reports both hashed pathnames and the result of a $PATH search. | ||||||
|  | j. `trap' has a new -P option that prints the trap action associated with each | ||||||
|  |    signal argument. | ||||||
|  | k. The `command' builtin preceding a declaration builtin (e.g., `declare') | ||||||
|  |    preserves the special asisgnment statement parsing for the declaration | ||||||
|  |    builtin. This is a new POSIX requirement. | ||||||
|  | l. `printf' uses the `alternate form' for %q and %Q to force single quoting. | ||||||
|  | m. `printf' now interprets %ls (%S) and %lc (%C) as referring to wide strings | ||||||
|  |    and characters, respectively, when in a multibyte locale. | ||||||
|  | n. The shell can be compiled with a different default value for the | ||||||
|  |    patsub_replacement option. | ||||||
|  | o. Check for window size changes during trap commands, `bind -x' commands, | ||||||
|  |    and programmable completion. | ||||||
|  | p. Treat a NULL value for $PATH as equivalent to ".". | ||||||
|  | p. New loadable builtins: kv, strptime | ||||||
|  | q. GLOBSORT: new variable to specify how to sort the results of pathname | ||||||
|  |    expansion (name, size, blocks, mtime, atime, ctime, numeric, none) in | ||||||
|  |    ascending or descending order. | ||||||
|  | r. `compgen' has a new option: -V varname. If supplied, it stores the generated | ||||||
|  |    completions into VARNAME instead of printing them on stdout. | ||||||
|  | s. New form of command substitution: ${ command; } or ${|command;} to capture | ||||||
|  |    the output of COMMAND without forking a child process and using pipes. | ||||||
|  | t. array_expand_once: new shopt option, replaces assoc_expand_once | ||||||
|  | u. complete/compopt new option: fullquote; sets rl_full_quoting_desired so all | ||||||
|  |    possible completions are quoted as if they were filenames. | ||||||
|  | v. Command timing now allows precisions up to 6 digits instead of 3 in | ||||||
|  |    $TIMEFORMAT. | ||||||
|  | w. BASH_MONOSECONDS: new dynamic variable that returns the value of the | ||||||
|  |    system's monotonic clock, if one is available. | ||||||
|  | x. BASH_TRAPSIG: new variable, set to the numeric signal number of the trap | ||||||
|  |    being executed while it's running. | ||||||
|  | y. The checkwinsize option can be used in subshell commands started from | ||||||
|  |    interactive shells. | ||||||
|  | z. In posix mode, the test command < and > binary primaries compare strings | ||||||
|  |    using the current locale. | ||||||
|  | aa. bind -x allows new key binding syntax: separate the key sequence and the | ||||||
|  |     command string with whitespace, but require the command string to be | ||||||
|  |     double-quoted if this is used. This allows different quoting options for | ||||||
|  |     the command string. | ||||||
|  | bb. Print commands bound to key sequences using `bind -x' with the new key | ||||||
|  |     binding syntax it allows. | ||||||
|  | cc. `read' has a new `-E' option to use readline but with the default bash | ||||||
|  |     completion (including programmable completion). | ||||||
|  | dd. New bindable readline command name: `bash-vi-complete'. | ||||||
|  | ee. New test builtin behavior when parsing a parenthesized subexpression and | ||||||
|  |     test was given more than 4 arguments: scan forward for a closing paren and | ||||||
|  |     call posixtest() if there are 4 or fewer arguments between the parentheses. | ||||||
|  |     Added for compatibility with coreutils test, dependent on the shell | ||||||
|  |     compatibility level. Such expressions remain ambiguous. | ||||||
|  | ff. MULTIPLE_COPROCS is now enabled by default. | ||||||
|  | gg. The `bind' builtin interprets additional non-option arguments after -p or | ||||||
|  |     -P as bindable command names and restricts output to the bindings for | ||||||
|  |     those names. | ||||||
|  | hh. Bash now uses the login shell for $BASH if the shell is named `su' or `-su'. | ||||||
|  | ii. Bash now prints job notifications if an interactive shell is running a trap, | ||||||
|  |     even though the shell is not interactive at that moment. | ||||||
|  | jj. Programmable completion allows a new compspec loaded after a completion | ||||||
|  |     function returns 124 to be used in more cases. | ||||||
|  | kk. ./source has a new -p PATH option, which makes it use the PATH argument | ||||||
|  |     instead of $PATH to look for the file. | ||||||
|  | ll. Documentation has been significantly updated. | ||||||
|  | mm. `wait -n' can now return terminated process substitutions, jobs about | ||||||
|  |     which the user has already been notified (like `wait' without options), | ||||||
|  | nn. `wait -n' removes jobs from the jobs table or list of terminated children | ||||||
|  |      when in posix mode. | ||||||
|  | oo. Changed the `wait' builtin behavior regarding process substitutions to | ||||||
|  |     match the documentation. | ||||||
|  | pp. There is a new `bash_source_fullpath' shopt option, which makes bash put | ||||||
|  |     full pathnames into BASH_SOURCE, and a way to set a default value for it | ||||||
|  |     at configure time. | ||||||
|  | qq. Posix mode now forces job notifications to occur when the new edition of | ||||||
|  |     POSIX specifies (since it now specifies them). | ||||||
|  | rr. Interactive shells don't print job notifications while sourcing scripts. | ||||||
|  | ss. The parser prints more information about the command it's trying to parse | ||||||
|  |     when it encounters EOF before completing the command. | ||||||
|  | tt. Posix mode no longer requires function names to be valid shell identifiers. | ||||||
|  | uu. If `exit' is run in a trap and not supplied an exit status argument, it | ||||||
|  |     uses the value of $? from before the trap only if it's run at the trap's | ||||||
|  |     `top level' and would cause the trap to end (that is, not in a subshell). | ||||||
|  |     This is from Posix interp 1602. | ||||||
|  | vv. There is a new `fltexpr' loadable builtin to perform floating-point | ||||||
|  |     arithmetic similarly to `let'. | ||||||
|  | ww. The `install-strip' and `strip' Makefile targets now deal with cross- | ||||||
|  |     compiling. | ||||||
|  | - This update includes the upstream solution for bsc#1245199 | ||||||
|  | - Drop -std=gnu17 in CFLAGS as not required anymore | ||||||
|  | - Port patches | ||||||
|  |   * bash-2.03-manual.patch | ||||||
|  |   * bash-3.0-evalexp.patch | ||||||
|  |   * bash-3.2-printf.patch | ||||||
|  |   * bash-4.1-bash.bashrc.dif | ||||||
|  |   * bash-4.1-completion.dif | ||||||
|  |   * bash-4.2-nscdunmap.dif | ||||||
|  |   * bash-4.3-sigrestart.patch | ||||||
|  |   * bash-5.3.dif | ||||||
|  | - Port patch bash-5.2.dif and rename it to bash-5.3.dif | ||||||
|  | - Drop patches upstream now or not supported anymore (perl version) | ||||||
|  |   * bash-4.3-decl.patch | ||||||
|  |   * bash-4.3-perl522.patch | ||||||
|  |   * bash-5.2-gcc14.patch | ||||||
|  |  | ||||||
| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ||||||
| Sun Apr 20 20:27:08 UTC 2025 - Friedrich Haubensak <hsk17@mail.de> | Sun Apr 20 20:27:08 UTC 2025 - Friedrich Haubensak <hsk17@mail.de> | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										63
									
								
								bash.spec
									
									
									
									
									
								
							
							
						
						
									
										63
									
								
								bash.spec
									
									
									
									
									
								
							| @@ -25,10 +25,10 @@ | |||||||
| # Unicode tests do alloc to much memory | # Unicode tests do alloc to much memory | ||||||
| %bcond_with altarray | %bcond_with altarray | ||||||
| %define rl_major 8 | %define rl_major 8 | ||||||
| %define rl_version 8.2 | %define rl_version 8.3 | ||||||
|  |  | ||||||
| %define         bextend %{nil} | %define         bextend %{nil} | ||||||
| %define         bversion 5.2 | %define         bversion 5.3 | ||||||
| %define         bpatchlvl %(bash %{_sourcedir}/get_version_number.sh %{_sourcedir}) | %define         bpatchlvl %(bash %{_sourcedir}/get_version_number.sh %{_sourcedir}) | ||||||
| %global         _incdir     %{_includedir} | %global         _incdir     %{_includedir} | ||||||
| %global         _ldldir     %{_libdir}/bash | %global         _ldldir     %{_libdir}/bash | ||||||
| @@ -62,12 +62,12 @@ Source9:        bash-4.2-history-myown.dif.bz2 | |||||||
| Source10:       https://ftp.gnu.org/gnu/bash/bash-%{bversion}%{bextend}.tar.gz.sig | Source10:       https://ftp.gnu.org/gnu/bash/bash-%{bversion}%{bextend}.tar.gz.sig | ||||||
| # GPG key 7C0135FB088AAF6C66C650B9BB5869F064EA74AB Chet Ramey | # GPG key 7C0135FB088AAF6C66C650B9BB5869F064EA74AB Chet Ramey | ||||||
| Source11:       bash.keyring | Source11:       bash.keyring | ||||||
|  | Source99:       bash.changes | ||||||
| Patch0:         bash-%{bversion}.dif | Patch0:         bash-%{bversion}.dif | ||||||
| Patch1:         bash-2.03-manual.patch | Patch1:         bash-2.03-manual.patch | ||||||
| Patch3:         bash-4.3-2.4.4.patch | Patch3:         bash-4.3-2.4.4.patch | ||||||
| Patch4:         bash-3.0-evalexp.patch | Patch4:         bash-3.0-evalexp.patch | ||||||
| Patch5:         bash-3.0-warn-locale.patch | Patch5:         bash-3.0-warn-locale.patch | ||||||
| Patch7:         bash-4.3-decl.patch |  | ||||||
| Patch9:         bash-4.3-include-unistd.dif | Patch9:         bash-4.3-include-unistd.dif | ||||||
| Patch10:        bash-3.2-printf.patch | Patch10:        bash-3.2-printf.patch | ||||||
| Patch11:        bash-4.3-loadables.dif | Patch11:        bash-4.3-loadables.dif | ||||||
| @@ -80,15 +80,12 @@ Patch40:        bash-4.1-bash.bashrc.dif | |||||||
| # PATCH-FIX-SUSE For bsc#1065158 add support for broken Japanese locale Shift JIS | # PATCH-FIX-SUSE For bsc#1065158 add support for broken Japanese locale Shift JIS | ||||||
| Patch42:        bash-4.3-SJIS.patch | Patch42:        bash-4.3-SJIS.patch | ||||||
| Patch46:        man2html-no-timestamp.patch | Patch46:        man2html-no-timestamp.patch | ||||||
| Patch47:        bash-4.3-perl522.patch |  | ||||||
| # PATCH-FIX-SUSE | # PATCH-FIX-SUSE | ||||||
| Patch48:        bash-4.3-extra-import-func.patch | Patch48:        bash-4.3-extra-import-func.patch | ||||||
| # PATCH-EXTEND-SUSE Allow root to clean file system if filled up | # PATCH-EXTEND-SUSE Allow root to clean file system if filled up | ||||||
| Patch49:        bash-4.3-pathtemp.patch | Patch49:        bash-4.3-pathtemp.patch | ||||||
| # PATCH-FIX-SUSE | # PATCH-FIX-SUSE | ||||||
| Patch50:        quotes-man2html.patch | Patch50:        quotes-man2html.patch | ||||||
| # PATCH-FIX-UPSTREAM |  | ||||||
| Patch51:        bash-5.2-gcc14.patch |  | ||||||
| BuildRequires:  autoconf | BuildRequires:  autoconf | ||||||
| # latest bash uses with patch 18 the tag YYEOF | # latest bash uses with patch 18 the tag YYEOF | ||||||
| BuildRequires:  bison | BuildRequires:  bison | ||||||
| @@ -168,6 +165,7 @@ builtins for the interpreter Bash. Use the output of the command | |||||||
| %package loadables | %package loadables | ||||||
| Summary:        Loadable bash builtins | Summary:        Loadable bash builtins | ||||||
| Group:          System/Shells | Group:          System/Shells | ||||||
|  | Supplements:    %{name} = %{version} | ||||||
|  |  | ||||||
| %description loadables | %description loadables | ||||||
| This package contains the examples for the ready-to-dynamic-load | This package contains the examples for the ready-to-dynamic-load | ||||||
| @@ -268,7 +266,6 @@ set -x | |||||||
| %patch -P3   -b .2.4.4 | %patch -P3   -b .2.4.4 | ||||||
| %patch -P4   -b .evalexp | %patch -P4   -b .evalexp | ||||||
| %patch -P5   -b .warnlc | %patch -P5   -b .warnlc | ||||||
| %patch -P7   -b .decl |  | ||||||
| %patch -P9   -b .unistd | %patch -P9   -b .unistd | ||||||
| %patch -P10  -b .printf | %patch -P10  -b .printf | ||||||
| %patch -P11  -b .plugins | %patch -P11  -b .plugins | ||||||
| @@ -281,13 +278,11 @@ set -x | |||||||
| %patch -P42  -b .sjis | %patch -P42  -b .sjis | ||||||
| %endif | %endif | ||||||
| %patch -P46  -b .notimestamp | %patch -P46  -b .notimestamp | ||||||
| %patch -P47  -b .perl522 |  | ||||||
| %if %{with import_function} | %if %{with import_function} | ||||||
| %patch -P48 -b .eif | %patch -P48 -b .eif | ||||||
| %endif | %endif | ||||||
| %patch -P49  -b .pthtmp | %patch -P49  -b .pthtmp | ||||||
| %patch -P50  -b .qd | %patch -P50  -b .qd | ||||||
| %patch -P51  -b .gcc14 |  | ||||||
| %patch -P0   -b .p0 | %patch -P0   -b .p0 | ||||||
|  |  | ||||||
| # This has to be always the same version as included in the bash its self | # This has to be always the same version as included in the bash its self | ||||||
| @@ -308,6 +303,12 @@ echo exit 0 > tests/read7.sub | |||||||
| %endif | %endif | ||||||
|  |  | ||||||
| %build | %build | ||||||
|  |   SOURCE_DATE_EPOCH="$(sed -n '/^----/n;s/ - .*$//;p;q' %{SOURCE99} | date -u -f - +%%s)" | ||||||
|  |   TZ=UTC0 | ||||||
|  |   LANG=POSIX | ||||||
|  |   LC_ALL=C.UTF-8 | ||||||
|  |   export SOURCE_DATE_EPOCH TZ LANG LC_ALL | ||||||
|  |   touch -d "@${SOURCE_DATE_EPOCH}" .source_date_epoch | ||||||
|   LANG=POSIX |   LANG=POSIX | ||||||
|   LC_ALL=$LANG |   LC_ALL=$LANG | ||||||
|   unset LC_CTYPE |   unset LC_CTYPE | ||||||
| @@ -360,8 +361,7 @@ echo exit 0 > tests/read7.sub | |||||||
|       set +o noclobber |       set +o noclobber | ||||||
|   } |   } | ||||||
|   LARGEFILE="$(getconf LFS_CFLAGS)" |   LARGEFILE="$(getconf LFS_CFLAGS)" | ||||||
|   # add -std=gnu17 to build w/ gcc-15; not needed for bash-5.3 |   CFLAGS="%{optflags} $LARGEFILE -D_GNU_SOURCE -DRECYCLES_PIDS -Wall -g" | ||||||
|   CFLAGS="%{optflags} $LARGEFILE -D_GNU_SOURCE -DRECYCLES_PIDS -Wall -g -std=gnu17" |  | ||||||
|   LDFLAGS="" |   LDFLAGS="" | ||||||
|   # |   # | ||||||
|   # Never ever put -DMUST_UNBLOCK_CHLD herein as this breaks bash |   # Never ever put -DMUST_UNBLOCK_CHLD herein as this breaks bash | ||||||
| @@ -510,14 +510,49 @@ echo exit 0 > tests/read7.sub | |||||||
| %endif | %endif | ||||||
|   %make_build $makeopts "$profilecflags" all |   %make_build $makeopts "$profilecflags" all | ||||||
|   %make_build $makeopts -C examples/loadables/ |   %make_build $makeopts -C examples/loadables/ | ||||||
|  |   %make_build $makeopts -C po/ update-po | ||||||
|   %make_build $makeopts documentation |   %make_build $makeopts documentation | ||||||
|   grep -F '$'\' doc/bash.html %{nil:test for boo#1203091} |   grep -F '$'\' doc/bash.html %{nil:test for boo#1203091} | ||||||
|  |  | ||||||
| %check | %check | ||||||
|  |   SOURCE_DATE_EPOCH="$(date -u -r .source_date_epoch +%%s)" | ||||||
|  |   TZ=UTC0 | ||||||
|  |   LANG=POSIX | ||||||
|  |   LC_ALL=C.UTF-8 | ||||||
|  |   export SOURCE_DATE_EPOCH TZ LANG LC_ALL | ||||||
|   rm -vf tests/*.p0 |   rm -vf tests/*.p0 | ||||||
|   %make_build -j1 check |   SCREENDIR=$(mktemp -d ${PWD}/screen.XXXXXXXXXX) || exit 1 | ||||||
|  |   SCREENRC=${SCREENDIR}/tcsh | ||||||
|  |   TMPDIR=$(mktemp -d /tmp/bash.XXXXXXXXXX) || exit 1 | ||||||
|  |   export SCREENRC SCREENDIR TMPDIR | ||||||
|  |   exec 0< /dev/null | ||||||
|  |   SCREENLOG=${SCREENDIR}/log | ||||||
|  |   cat > $SCREENRC<<-EOF | ||||||
|  | 	deflogin off | ||||||
|  | 	deflog on | ||||||
|  | 	logfile $SCREENLOG | ||||||
|  | 	logfile flush 1 | ||||||
|  | 	logtstamp off | ||||||
|  | 	log on | ||||||
|  | 	setsid on | ||||||
|  | 	scrollback 0 | ||||||
|  | 	silence on | ||||||
|  | 	utf8 on | ||||||
|  | 	EOF | ||||||
|  |   > $SCREENLOG | ||||||
|  |   tail -q -s 0.5 -f $SCREENLOG & pid=$! | ||||||
|  |   env -i HOME=$HOME TERM=$TERM TMPDIR=$TMPDIR PATH=$PATH \ | ||||||
|  | 	SCREENRC=$SCREENRC SCREENDIR=$SCREENDIR \ | ||||||
|  | 	screen -D -m %make_build -j1 check | ||||||
|  |   sleep 1 | ||||||
|  |   kill -TERM $pid | ||||||
|  |  | ||||||
| %install | %install | ||||||
|  |   SOURCE_DATE_EPOCH="$(date -u -r .source_date_epoch +%%s)" | ||||||
|  |   TZ=UTC0 | ||||||
|  |   LANG=POSIX | ||||||
|  |   LC_ALL=C.UTF-8 | ||||||
|  |   export SOURCE_DATE_EPOCH TZ LANG LC_ALL | ||||||
|   %make_install |   %make_install | ||||||
|   make -C examples/loadables/ install-supported DESTDIR=%{buildroot} libdir=%{_libdir} |   make -C examples/loadables/ install-supported DESTDIR=%{buildroot} libdir=%{_libdir} | ||||||
|   mv -vf %{buildroot}%{_ldldir}/*.h   %{buildroot}%{_includedir}/bash/ |   mv -vf %{buildroot}%{_ldldir}/*.h   %{buildroot}%{_includedir}/bash/ | ||||||
| @@ -589,6 +624,10 @@ fi | |||||||
|  |  | ||||||
| %files | %files | ||||||
| %license COPYING | %license COPYING | ||||||
|  | %if 0%{?suse_version} < 1550 | ||||||
|  | %dir %{_prefix}%{_sysconfdir}/ | ||||||
|  | %dir %{_prefix}%{_sysconfdir}/skel/ | ||||||
|  | %endif | ||||||
| %{_prefix}%{_sysconfdir}/skel/.bashrc | %{_prefix}%{_sysconfdir}/skel/.bashrc | ||||||
| %{_prefix}%{_sysconfdir}/skel/.profile | %{_prefix}%{_sysconfdir}/skel/.profile | ||||||
| %if %{with alternatives} | %if %{with alternatives} | ||||||
|   | |||||||
| @@ -5,10 +5,11 @@ sourcedir=$1 | |||||||
| test -n "${sourcedir}" || sourcedir=$PWD | test -n "${sourcedir}" || sourcedir=$PWD | ||||||
| test -e ${sourcedir}/bash.spec  || exit 1 | test -e ${sourcedir}/bash.spec  || exit 1 | ||||||
| version=$(sed -rn '/^%define[[:space:]]+bversion/{s/^%define[[:space:]]+bversion[[:space:]]+([0-9]+\.[0-9]+)(\.[^\.]+)?/\1/p}' ${sourcedir}/bash.spec) || exit 1 | version=$(sed -rn '/^%define[[:space:]]+bversion/{s/^%define[[:space:]]+bversion[[:space:]]+([0-9]+\.[0-9]+)(\.[^\.]+)?/\1/p}' ${sourcedir}/bash.spec) || exit 1 | ||||||
|  | beta=$(sed -rn '/^%define[[:space:]]+bextend/{s/^%define[[:space:]]+bextend[[:space:]]+([^[:space:]])?/\1/p}' ${sourcedir}/bash.spec) || exit 1 | ||||||
|  | test "$beta" = "%{nil}" && beta="" || version=${version}${beta} | ||||||
| test -e ${sourcedir}/bash-${version}.tar.gz || exit 1 | test -e ${sourcedir}/bash-${version}.tar.gz || exit 1 | ||||||
| last=($(tar Oxf ${sourcedir}/bash-${version}.tar.gz bash-${version}/configure.ac | sed -rn '/^define.bashvers/{s/^define\(bashvers,[[:space:]]([0-9\.]+)\)/\1/p}')) || exit 1 | last=($(tar Oxf ${sourcedir}/bash-${version}.tar.gz bash-${version}/configure.ac | sed -rn '/^define.bashvers/{s/^define\(bashvers,[[:space:]]([0-9\.]+)\)/\1/p}')) || exit 1 | ||||||
| test -e ${sourcedir}/bash-${version}-patches.tar.bz2 || echo ${last[0]} | tar --wildcards -tf ${sourcedir}/bash-${version}-patches.tar.bz2 '*/bash[0-9][0-9]-*[0-9]' &> /dev/null || { echo 0 ; exit; } | ||||||
| tar --wildcards -tf ${sourcedir}/bash-${version}-patches.tar.bz2 '*/bash[0-9][0-9]-*[0-9]' &> /dev/null || echo ${last[0]} |  | ||||||
| OFS="$IFS" | OFS="$IFS" | ||||||
| IFS=- | IFS=- | ||||||
| last=($(tar --wildcards -tf ${sourcedir}/bash-${version}-patches.tar.bz2 '*/bash[0-9][0-9]-*[0-9]' | sed -r 's@\.patch$@@'| sort -t '-' -k 3,3 -n | tail -n 1)) | last=($(tar --wildcards -tf ${sourcedir}/bash-${version}-patches.tar.bz2 '*/bash[0-9][0-9]-*[0-9]' | sed -r 's@\.patch$@@'| sort -t '-' -k 3,3 -n | tail -n 1)) | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ | |||||||
|  |  | ||||||
| --- support/man2html.c | --- support/man2html.c | ||||||
| +++ support/man2html.c	2010-09-03 20:49:56.288632000 +0000 | +++ support/man2html.c	2010-09-03 20:49:56.288632000 +0000 | ||||||
| @@ -4076,7 +4076,7 @@ main(int argc, char **argv) | @@ -4085,7 +4085,7 @@ main(int argc, char **argv) | ||||||
|  		if (subs) |  		if (subs) | ||||||
|  			fputs("</DL>\n", stdout); |  			fputs("</DL>\n", stdout); | ||||||
|  		fputs("</DL>\n", stdout); |  		fputs("</DL>\n", stdout); | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ boo#1203091 | |||||||
|  |  | ||||||
| --- support/man2html.c | --- support/man2html.c | ||||||
| +++ support/man2html.c	2022-09-12 08:27:06.352648345 +0000 | +++ support/man2html.c	2022-09-12 08:27:06.352648345 +0000 | ||||||
| @@ -476,6 +476,18 @@ expand_char(int nr) | @@ -485,6 +485,18 @@ expand_char(int nr) | ||||||
|  	charb[0] = nr / 256; |  	charb[0] = nr / 256; | ||||||
|  	charb[1] = nr % 256; |  	charb[1] = nr % 256; | ||||||
|  	charb[2] = '\0'; |  	charb[2] = '\0'; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user