Hello community, here is the log from the commit of package bash for openSUSE:Factory checked in at 2019-01-29 14:38:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/bash (Old) and /work/SRC/openSUSE:Factory/.bash.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "bash" Tue Jan 29 14:38:13 2019 rev:149 rq:664075 version:5.0 Changes: -------- --- /work/SRC/openSUSE:Factory/bash/bash.changes 2018-07-17 09:36:27.530557638 +0200 +++ /work/SRC/openSUSE:Factory/.bash.new.28833/bash.changes 2019-01-29 14:38:18.891558750 +0100 @@ -1,0 +2,166 @@ +Wed Jan 9 12:47:04 UTC 2019 - Dr. Werner Fink <[email protected]> + +- Update to bash 5.0 (final) + a. Tilde expansion isn't performed on indexed array subscripts, even for + backwards compatibility. + b. The shell doesn't exit in posix mode if the eval builtin gets a parse + error when run by the command builtin. + c. Fixed a bug that caused a shell comment in an alias to not find the end + of the alias properly. + d. Reverted a change from April, 2018 that caused strings containing + backslashes to be flagged as glob patterns. +- Modify patches + * bash-2.03-manual.patch + * bash-4.3-loadables.dif + * bash-5.0.dif + +------------------------------------------------------------------- +Fri Dec 21 13:34:47 UTC 2018 - Dr. Werner Fink <[email protected]> + +- Update to bash 5.0 rc1 + a. Fix to initial word completion detection code. + b. Fixed a bug that caused issues with assignment statements containing ^A in + the value assigned when IFS contains ^A. + c. Added a fallback to fnmatch() when strcoll can't correctly deal with + bracket expression character equivalence classes. + d. Fixed a bug that caused $BASH_COMMAND to contain the trap handler command + when running a trap handler containing [[ or (( commands. + e. Fixed a bug that caused nameref assignments in the temporary environment + to potentially create variables with invalid names. + f. Fixed a bug that caused `local -' to turn off alias expansion in scripts. + g. Fixed a parser issue with a command string containing EOF after an invalid + command as an argument to a special builtin not causing a posix-mode shell + to exit. + h. Made a slight change to the FNV-1 string hash algorithm used for associative + arrays (corrected the initial seed). + a. The `select' command now supports command forms without a word list + following `in'. + +------------------------------------------------------------------- +Thu Nov 29 08:22:16 UTC 2018 - Dr. Werner Fink <[email protected]> + +- Update to bash 5.0 beta2 + ii. Associative and indexed arrays now allow subscripts consisting solely of + whitespace. + jj. `checkwinsize' is now enabled by default. + kk. The `localvar_unset' shopt option is now visible and documented. + ll. The `progcomp_alias' shopt option is now visible and documented. + mm. The signal name processing code now understands `SIGRTMIN+n' all the way + up to SIGRTMAX. + nn. There is a new `seq' loadable builtin. + oo. Trap execution now honors the (internal) max invocations of `eval', since + traps are supposed to be executed as if using `eval'. + pp. The $_ variable doesn't change when the shell executes a command that forks. + qq. The `kill' builtin now supports -sSIGNAME and -nSIGNUM, even though + conforming applications aren't supposed to use them. + rr. POSIX mode now enables the `shift_verbose' option. +- Modify patches + * bash-2.03-manual.patch + * bash-3.0-evalexp.patch + * bash-3.2-printf.patch + * bash-4.0-security.patch + * bash-4.1-completion.dif + * bash-4.3-2.4.4.patch + * bash-4.3-SJIS.patch + * bash-4.3-extra-import-func.patch + * bash-4.3-sigrestart.patch + * bash-5.0.dif +- Add temporary upstream patch upstream.patch + +------------------------------------------------------------------- +Thu Sep 20 08:56:46 UTC 2018 - Dr. Werner Fink <[email protected]> + +- Update to bash 5.0 beta + a. The `wait' builtin can now wait for the last process substitution created. + b. There is an EPOCHSECONDS variable, which expands to the time in seconds + since the Unix epoch. + c. There is an EPOCHREALTIME variable, which expands to the time in seconds + since the Unix epoch with microsecond granularity. + d. New loadable builtins: rm, stat, fdflags. + e. BASH_ARGV0: a new variable that expands to $0 and sets $0 on assignment. + f. When supplied a numeric argument, the shell-expand-line bindable readline + command does not perform quote removal and suppresses command and process + substitution. + g. `history -d' understands negative arguments: negative arguments offset from + the end of the history list. + h. The `name' argument to the `coproc' reserved word now undergoes word + expansion, so unique coprocs can be created in loops. + i. A nameref name resolution loop in a function now resolves to a variable by + that name in the global scope. + j. The `wait' builtin now has a `-f' option, which signfies to wait until the + specified job or process terminates, instead of waiting until it changes + state. + k. There is a define in config-top.h that allows the shell to use a static + value for $PATH, overriding whatever is in the environment at startup, for + use by the restricted shell. + l. Process substitution does not inherit the `v' option, like command + substitution. + m. If a non-interactive shell with job control enabled detects that a foreground + job died due to SIGINT, it acts as if it received the SIGINT. + n. The SIGCHLD trap is run once for each exiting child process even if job + control is not enabled when the shell is in Posix mode. + o. A new shopt option: localvar_inherit; if set, a local variable inherits the + value of a variable with the same name at the nearest preceding scope. + p. `bind -r' now checks whether a key sequence is bound before binding it to + NULL, to avoid creating keymaps for a multi-key sequence. + q. A numeric argument to the line editing `operate-and-get-next' command + specifies which history entry to use. + r. The positional parameters are now assigned before running the shell startup + files, so startup files can use $@. + s. There is a compile-time option that forces the shell to disable the check + for an inherited OLDPWD being a directory. + t. The `history' builtin can now delete ranges of history entries using + `-d start-end'. + u. The `vi-edit-and-execute-command' bindable readline command now puts readline + back in vi insertion mode after executing commands from the edited file. + v. The command completion code now matches aliases and shell function names + case-insensitively if the readline completion-ignore-case variable is set. + w. There is a new `assoc_expand_once' shell option that attempts to expand + associative array subscripts only once. + x. The shell only sets up BASH_ARGV and BASH_ARGC at startup if extended + debugging mode is active. The old behavior of unconditionally setting them + is available as part of the shell compatibility options. + y. The `umask' builtin now allows modes and masks greater than octal 777. + z. The `times' builtin now honors the current locale when printing a decimal + point. + aa. There is a new (disabled by default, undocumented) shell option to enable + and disable sending history to syslog at runtime. + bb. Bash no longer allows variable assignments preceding a special builtin that + changes variable attributes to propagate back to the calling environment + unless the compatibility level is 44 or lower. + cc. You can set the default value for $HISTSIZE at build time in config-top.h. + dd. The `complete' builtin now accepts a -I option that applies the completion + to the initial word on the line. + ee. The internal bash malloc now uses mmap (if available) to satisfy requests + greater than 128K bytes, so free can use mfree to return the pages to the + kernel. + ff. The shell doesn't automatically set BASH_ARGC and BASH_ARGV at startup + unless it's in debugging mode, as the documentation has always said, but + will dynamically create them if a script references them at the top level + without having enabled debugging mode. + gg. The localvar_inherit option will not attempt to inherit a value from a + variable of an incompatible type (indexed vs. associative arrays, for + example). + hh. The `globasciiranges' option is now enabled by default; it can be set to + off by default at configuration time. +- Modify and port patches + * bash-2.03-manual.patch + * bash-3.0-evalexp.patch + * bash-3.0-warn-locale.patch + * bash-3.2-printf.patch + * bash-4.0-security.patch + * bash-4.0-setlocale.dif + * bash-4.1-bash.bashrc.dif + * bash-4.1-completion.dif + * bash-4.2-nscdunmap.dif + * bash-4.3-2.4.4.patch + * bash-4.3-extra-import-func.patch + * bash-4.3-loadables.dif + * bash-4.3-sigrestart.patch + * bash-4.3-winch.dif +- Port and rename bash-4.4.dif which is now bash-5.0.dif +- Delete not used patch bash-4.2-endpw.dif +- Remove patch bash-memmove.patch now upstream +- Add patch bash-4.3-SJIS.patch which is disabled by default + +------------------------------------------------------------------- Old: ---- bash-4.2-endpw.dif bash-4.4-patches.tar.bz2 bash-4.4.dif bash-4.4.tar.gz bash-memmove.patch New: ---- bash-4.3-SJIS.patch bash-5.0-patches.tar.bz2 bash-5.0.dif bash-5.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ bash.spec ++++++ --- /var/tmp/diff_new_pack.ekTSlC/_old 2019-01-29 14:38:19.739557726 +0100 +++ /var/tmp/diff_new_pack.ekTSlC/_new 2019-01-29 14:38:19.743557721 +0100 @@ -1,7 +1,7 @@ # # spec file for package bash # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,6 +17,7 @@ %bcond_with import_function +%bcond_with sjis Name: bash BuildRequires: audit-devel @@ -28,11 +29,11 @@ BuildRequires: patchutils BuildRequires: pkg-config # This has to be always the same version as included in the bash its self -BuildRequires: readline-devel == 7.0 +BuildRequires: readline-devel == 8.0 BuildRequires: screen BuildRequires: sed %define bextend %nil -Version: 4.4 +Version: 5.0 Release: 0 Summary: The GNU Bourne-Again Shell License: GPL-3.0-or-later @@ -63,8 +64,6 @@ Patch3: bash-4.3-2.4.4.patch Patch4: bash-3.0-evalexp.patch Patch5: bash-3.0-warn-locale.patch -# Disabled -Patch6: bash-4.2-endpw.dif Patch7: bash-4.3-decl.patch Patch9: bash-4.3-include-unistd.dif Patch10: bash-3.2-printf.patch @@ -77,13 +76,14 @@ # PATCH-EXTEND-SUSE bnc#828877 -- xterm resizing does not pass to all sub clients Patch18: bash-4.3-winch.dif Patch40: bash-4.1-bash.bashrc.dif +# PATCH-FIX-SUSE For bsc#1065158 add support for broken Japanese locale Shift JIS +Patch42: bash-4.3-SJIS.patch Patch46: man2html-no-timestamp.patch Patch47: bash-4.3-perl522.patch # PATCH-FIX-SUSE Patch48: bash-4.3-extra-import-func.patch # PATCH-EXTEND-SUSE Allow root to clean file system if filled up Patch49: bash-4.3-pathtemp.patch -Patch50: bash-memmove.patch %global _sysconfdir /etc %global _incdir %{_includedir} %global _ldldir /%{_lib}/bash @@ -188,6 +188,11 @@ %prep +%if %{with sjis} +echo -e '\033[1m\033[31mWarning: Shift JIS support is enabled\033[m' +%else +echo -e '\033[1m\032[31mShift JIS support disabled\033[m' +%endif %setup -q -n bash-%{version}%{bextend} -b1 typeset -i level for patch in ../bash-%{version}-patches/*; do @@ -208,7 +213,6 @@ %patch3 -p0 -b .2.4.4 %patch4 -p0 -b .evalexp %patch5 -p0 -b .warnlc -#%patch6 -p0 -b .endpw %patch7 -p0 -b .decl %patch9 -p0 -b .unistd %patch10 -p0 -b .printf @@ -217,16 +221,19 @@ %patch13 -p0 -b .nscdunmap %patch14 -p0 -b .sigrestart %patch16 -p0 -b .setlocale -%patch18 -p0 -b .winch +#%patch18 -p0 -b .winch %patch40 -p0 -b .bashrc +%if %{with sjis} +%patch42 -p0 -b .sjis +%endif %patch46 -p0 -b .notimestamp %patch47 -p0 -b .perl522 %if %{with import_function} %patch48 -b .eif %endif %patch49 -p0 -b .pthtmp -%patch50 -p1 -b .mmv %patch0 -p0 -b .0 + # This has to be always the same version as included in the bash its self rl1=($(sed -rn '/RL_READLINE_VERSION/p' lib/readline/readline.h)) rl2=($(sed -rn '/RL_READLINE_VERSION/p' /usr/include/readline/readline.h)) @@ -327,6 +334,7 @@ SYSMALLOC=" --without-gnu-malloc --without-bash-malloc + --enable-mem-scramble " # # System readline library (comment out it not to be used) @@ -343,6 +351,7 @@ --libdir=%{_libdir} \ --with-curses \ --with-afs \ + --with-gnu-ld \ $SYSMALLOC \ --enable-minimal-config \ --enable-arith-for-command \ @@ -360,6 +369,7 @@ --enable-job-control \ --enable-net-redirections \ --enable-process-substitution \ + --enable-glob-asciiranges-default \ --disable-strict-posix-default \ --enable-separate-helpfiles=%{_datadir}/bash/helpfiles \ $READLINE @@ -374,6 +384,7 @@ --docdir=%{_docdir}/%{name} \ --with-curses \ --with-afs \ + --with-gnu-ld \ $SYSMALLOC \ --enable-job-control \ --enable-net-redirections \ @@ -386,14 +397,17 @@ --enable-prompt-string-decoding \ --enable-select \ --enable-help-builtin \ + --enable-separate-helpfiles \ --enable-array-variables \ --enable-brace-expansion \ --enable-command-timing \ --enable-disabled-builtins \ + --enable-glob-asciiranges-default \ --disable-strict-posix-default \ --enable-multibyte \ --enable-separate-helpfiles=%{_datadir}/bash/helpfiles \ $READLINE + sed -rn '/Configuration feature settings controllable by autoconf/,/End of configuration settings controllable by autoconf/p' < config.h profilecflags=CFLAGS="$CFLAGS" %if 0%{?do_profiling} profilecflags=CFLAGS="$CFLAGS %cflags_profile_generate" ++++++ bash-2.03-manual.patch ++++++ --- /var/tmp/diff_new_pack.ekTSlC/_old 2019-01-29 14:38:19.787557668 +0100 +++ /var/tmp/diff_new_pack.ekTSlC/_new 2019-01-29 14:38:19.787557668 +0100 @@ -5,10 +5,10 @@ 3 files changed, 18 insertions(+), 2 deletions(-) --- doc/bash.1 -+++ doc/bash.1 2016-09-16 10:36:46.667901616 +0000 -@@ -121,6 +121,12 @@ processing, then commands are read from - This option allows the positional parameters to be set - when invoking an interactive shell. ++++ doc/bash.1 2018-11-29 08:09:41.735675837 +0000 +@@ -122,6 +122,12 @@ This option allows the positional parame + when invoking an interactive shell or when reading input + through a pipe. .TP +.B \-v +Print shell input lines as they are read. @@ -19,7 +19,7 @@ .B \-D A list of all double-quoted strings preceded by \fB$\fP is printed on the standard output. -@@ -7038,6 +7044,11 @@ Apply the following `\fBs\fP' modifier o +@@ -7294,6 +7300,11 @@ Apply the following `\fBs\fP' modifier o .SH "SHELL BUILTIN COMMANDS" .\" start of bash_builtins .zZ @@ -31,7 +31,7 @@ .PP Unless otherwise noted, each builtin command documented in this section as accepting options preceded by -@@ -10432,6 +10443,11 @@ process or job waited for. +@@ -10768,6 +10779,11 @@ process or job waited for. .SH "RESTRICTED SHELL" .\" rbash.1 .zY @@ -44,7 +44,7 @@ If .B bash --- doc/builtins.1 -+++ doc/builtins.1 2016-09-16 10:36:46.667901616 +0000 ++++ doc/builtins.1 2018-11-29 08:09:41.735675837 +0000 @@ -19,6 +19,6 @@ shift, shopt, source, suspend, test, tim ulimit, umask, unalias, unset, wait \- bash built-in commands, see \fBbash\fR(1) .SH BASH BUILTIN COMMANDS @@ -54,7 +54,7 @@ .SH SEE ALSO bash(1), sh(1) --- doc/rbash.1 -+++ doc/rbash.1 2016-09-16 10:36:46.667901616 +0000 ++++ doc/rbash.1 2018-11-29 08:09:41.735675837 +0000 @@ -3,6 +3,6 @@ rbash \- restricted bash, see \fBbash\fR(1) .SH RESTRICTED SHELL ++++++ bash-3.0-evalexp.patch ++++++ --- /var/tmp/diff_new_pack.ekTSlC/_old 2019-01-29 14:38:19.795557658 +0100 +++ /var/tmp/diff_new_pack.ekTSlC/_new 2019-01-29 14:38:19.799557653 +0100 @@ -3,8 +3,8 @@ 1 file changed, 2 insertions(+), 2 deletions(-) --- expr.c -+++ expr.c 2004-07-30 14:39:48.000000000 +0000 -@@ -466,8 +466,8 @@ expassign () ++++ expr.c 2018-11-29 08:10:59.542212175 +0000 +@@ -512,8 +512,8 @@ expassign () value = expcond (); if (curtok == EQ || curtok == OP_ASSIGN) { ++++++ bash-3.0-warn-locale.patch ++++++ --- /var/tmp/diff_new_pack.ekTSlC/_old 2019-01-29 14:38:19.803557648 +0100 +++ /var/tmp/diff_new_pack.ekTSlC/_new 2019-01-29 14:38:19.807557644 +0100 @@ -3,7 +3,7 @@ 1 file changed, 13 insertions(+) --- locale.c -+++ locale.c 2004-09-03 10:56:10.000000000 +0000 ++++ locale.c 2018-09-20 08:06:23.732593807 +0000 @@ -33,6 +33,10 @@ #include "bashintl.h" #include "bashansi.h" @@ -15,7 +15,7 @@ #include "chartypes.h" #include <errno.h> -@@ -76,6 +80,15 @@ void +@@ -77,6 +81,15 @@ void set_default_locale () { #if defined (HAVE_SETLOCALE) ++++++ bash-3.2-printf.patch ++++++ --- /var/tmp/diff_new_pack.ekTSlC/_old 2019-01-29 14:38:19.815557634 +0100 +++ /var/tmp/diff_new_pack.ekTSlC/_new 2019-01-29 14:38:19.815557634 +0100 @@ -3,7 +3,7 @@ 1 file changed, 10 insertions(+), 1 deletion(-) --- builtins/printf.def -+++ builtins/printf.def 2006-07-27 15:11:19.000000000 +0000 ++++ builtins/printf.def 2018-11-29 08:11:53.901189708 +0000 @@ -54,6 +54,7 @@ error occurs. $END @@ -12,7 +12,7 @@ #include "../bashtypes.h" -@@ -654,12 +655,20 @@ printf_builtin (list) +@@ -662,12 +663,20 @@ printf_builtin (list) case 'A': #endif { ++++++ bash-4.0-security.patch ++++++ --- /var/tmp/diff_new_pack.ekTSlC/_old 2019-01-29 14:38:19.823557624 +0100 +++ /var/tmp/diff_new_pack.ekTSlC/_new 2019-01-29 14:38:19.827557619 +0100 @@ -1,19 +1,19 @@ --- - variables.c | 27 +++++++++++++++++++++++++++ - 1 file changed, 27 insertions(+) + variables.c | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) --- variables.c -+++ variables.c 2016-09-14 08:51:32.306631046 +0000 -@@ -1300,6 +1300,7 @@ static unsigned long rseed = 1; - static int last_random_value; - static int seeded_subshell = 0; ++++ variables.c 2018-12-21 13:24:48.757352405 +0000 +@@ -1324,6 +1324,7 @@ static int seeded_subshell = 0; + # define BASH_RAND_MAX 0x7fffffff /* 32 bits */ + #endif +#if !defined(linux) - /* A linear congruential random number generator based on the example - one in the ANSI C standard. This one isn't very good, but a more - complicated one is overkill. */ -@@ -1344,6 +1345,32 @@ seedrand () - sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid ()); + /* Returns a pseudo-random number between 0 and 32767. */ + static int + brand () +@@ -1380,6 +1381,40 @@ seedrand () + #endif } +#else @@ -23,7 +23,7 @@ +{ + if (rseed == 0) + seedrand (); -+ return rand() & 32767; ++ return ((unsigned int)(rand() & BASH_RAND_MAX)); /* was % BASH_RAND_MAX+1 */ +} + +static void @@ -37,8 +37,16 @@ +seedrand (void) +{ + struct timeval tv; ++#ifdef _EXTENDTHIS ++ SHELL_VAR *v; ++#endif + gettimeofday (&tv, NULL); ++#ifdef _EXTENDTHIS ++ v = find_variable ("BASH_VERSION"); ++ sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid () ^ ((u_bits32_t)&v & 0x7fffffff)); ++#else + srand (tv.tv_sec ^ tv.tv_usec ^ getpid ()); ++#endif +} +#endif + ++++++ bash-4.0-setlocale.dif ++++++ --- /var/tmp/diff_new_pack.ekTSlC/_old 2019-01-29 14:38:19.835557610 +0100 +++ /var/tmp/diff_new_pack.ekTSlC/_new 2019-01-29 14:38:19.835557610 +0100 @@ -3,8 +3,8 @@ 1 file changed, 16 insertions(+), 5 deletions(-) --- locale.c -+++ locale.c 2008-11-25 13:41:50.000000000 +0000 -@@ -54,6 +54,7 @@ extern int dump_translatable_strings, du ++++ locale.c 2018-09-20 08:14:41.307485537 +0000 +@@ -55,6 +55,7 @@ extern int dump_translatable_strings, du /* The current locale when the program begins */ static char *default_locale; @@ -12,7 +12,7 @@ /* The current domain for textdomain(3). */ static char *default_domain; -@@ -326,11 +327,21 @@ get_locale_var (var) +@@ -339,11 +340,21 @@ get_locale_var (var) if (locale == 0 || *locale == 0) locale = lang; if (locale == 0 || *locale == 0) ++++++ bash-4.1-bash.bashrc.dif ++++++ --- /var/tmp/diff_new_pack.ekTSlC/_old 2019-01-29 14:38:19.843557600 +0100 +++ /var/tmp/diff_new_pack.ekTSlC/_new 2019-01-29 14:38:19.847557596 +0100 @@ -20,8 +20,8 @@ 1 file changed, 12 insertions(+), 3 deletions(-) --- doc/bash.1 -+++ doc/bash.1 2016-08-01 13:54:54.253999110 +0000 -@@ -329,6 +329,8 @@ and executes commands from the first one ++++ doc/bash.1 2018-09-20 08:16:12.073822864 +0000 +@@ -330,6 +330,8 @@ and executes commands from the first one The .B \-\-noprofile option may be used when the shell is started to inhibit this behavior. @@ -30,7 +30,7 @@ .PP When an interactive login shell exits, or a non-interactive login shell executes the \fBexit\fP builtin command, -@@ -338,13 +340,19 @@ exists. +@@ -339,13 +341,19 @@ exists. .PP When an interactive shell that is not a login shell is started, .B bash @@ -52,7 +52,7 @@ .PP When .B bash -@@ -430,7 +438,8 @@ daemon, usually \fIrshd\fP, or the secur +@@ -431,7 +439,8 @@ daemon, usually \fIrshd\fP, or the secur If .B bash determines it is being run in this fashion, it reads and executes ++++++ bash-4.1-completion.dif ++++++ --- /var/tmp/diff_new_pack.ekTSlC/_old 2019-01-29 14:38:19.851557590 +0100 +++ /var/tmp/diff_new_pack.ekTSlC/_new 2019-01-29 14:38:19.855557586 +0100 @@ -3,8 +3,8 @@ 1 file changed, 7 insertions(+) --- bashline.c -+++ bashline.c 2016-09-14 08:54:09.315700369 +0000 -@@ -2029,6 +2029,13 @@ globword: ++++ bashline.c 2018-11-29 08:12:25.876588305 +0000 +@@ -2045,6 +2045,13 @@ globword: return ((char *)NULL); } ++++++ bash-4.2-nscdunmap.dif ++++++ --- /var/tmp/diff_new_pack.ekTSlC/_old 2019-01-29 14:38:19.879557557 +0100 +++ /var/tmp/diff_new_pack.ekTSlC/_new 2019-01-29 14:38:19.879557557 +0100 @@ -3,7 +3,7 @@ 1 file changed, 24 insertions(+) --- shell.c -+++ shell.c 2016-09-14 08:54:32.971258862 +0000 ++++ shell.c 2018-09-20 08:08:34.242204532 +0000 @@ -43,6 +43,7 @@ #endif @@ -12,7 +12,7 @@ # include <unistd.h> #endif -@@ -1751,6 +1752,28 @@ init_interactive_script () +@@ -1800,6 +1801,28 @@ init_interactive_script () #endif } @@ -41,7 +41,7 @@ void get_current_user_info () { -@@ -1782,6 +1805,7 @@ get_current_user_info () +@@ -1831,6 +1854,7 @@ get_current_user_info () #if defined (HAVE_GETPWENT) endpwent (); #endif ++++++ bash-4.3-2.4.4.patch ++++++ --- /var/tmp/diff_new_pack.ekTSlC/_old 2019-01-29 14:38:19.891557542 +0100 +++ /var/tmp/diff_new_pack.ekTSlC/_new 2019-01-29 14:38:19.895557537 +0100 @@ -8,8 +8,8 @@ 6 files changed, 17 insertions(+), 7 deletions(-) --- array.c -+++ array.c 2017-01-27 17:45:42.364066849 +0000 -@@ -946,7 +946,7 @@ char *s, *sep; ++++ array.c 2018-11-29 08:10:37.098634355 +0000 +@@ -965,7 +965,7 @@ char *s, *sep; * To make a running version, compile -DTEST_ARRAY and link with: * xmalloc.o syntax.o lib/malloc/libmalloc.a lib/sh/libsh.a */ @@ -19,7 +19,7 @@ int signal_is_trapped(s) --- examples/loadables/tee.c -+++ examples/loadables/tee.c 2017-01-27 17:45:42.364066849 +0000 ++++ examples/loadables/tee.c 2018-11-29 08:10:37.098634355 +0000 @@ -35,6 +35,7 @@ #include "bashansi.h" @@ -38,8 +38,8 @@ extern char *strerror (); --- hashlib.c -+++ hashlib.c 2017-01-27 17:45:42.364066849 +0000 -@@ -382,7 +382,7 @@ hash_pstats (table, name) ++++ hashlib.c 2018-11-29 08:10:37.098634355 +0000 +@@ -391,7 +391,7 @@ hash_pstats (table, name) HASH_TABLE *table, *ntable; @@ -49,10 +49,10 @@ int signal_is_trapped (s) --- jobs.c -+++ jobs.c 2017-01-27 17:45:42.364066849 +0000 -@@ -1962,6 +1962,15 @@ make_child (command, async_p) - pid_t mypid; - ++++ jobs.c 2018-11-29 08:10:37.102634281 +0000 +@@ -1999,6 +1999,15 @@ make_child (command, async_p) + child process, go back and change callers who free `command' in + the child process when this returns. */ mypid = getpid (); + + if (interrupt_state) @@ -67,8 +67,8 @@ /* 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, --- sig.c -+++ sig.c 2017-01-27 17:45:42.364066849 +0000 -@@ -98,10 +98,10 @@ sigset_t top_level_mask; ++++ sig.c 2018-11-29 08:10:37.102634281 +0000 +@@ -83,10 +83,10 @@ sigset_t top_level_mask; #endif /* JOB_CONTROL */ /* When non-zero, we throw_to_top_level (). */ @@ -82,7 +82,7 @@ #if defined (SIGWINCH) static SigHandler *old_winch = (SigHandler *)SIG_DFL; --- sig.h -+++ sig.h 2017-01-27 17:45:42.364066849 +0000 ++++ sig.h 2018-11-29 08:10:37.102634281 +0000 @@ -109,8 +109,8 @@ do { \ extern volatile sig_atomic_t sigwinch_received; extern volatile sig_atomic_t sigterm_received; ++++++ bash-4.3-SJIS.patch ++++++ --- bashintl.h | 3 +++ builtins/printf.def | 21 +++++++++++++++++++++ builtins/read.def | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++- lib/sh/strtrans.c | 21 +++++++++++++++++++++ locale.c | 26 ++++++++++++++++++++++++++ parse.y | 42 +++++++++++++++++++++++++++++++++++++++++- 6 files changed, 163 insertions(+), 2 deletions(-) --- bashintl.h +++ bashintl.h 2018-11-29 08:14:56.165762022 +0000 @@ -43,6 +43,9 @@ # undef HAVE_SETLOCALE #endif +int bash_mbcs_non_utf8; +int bash_mb_cur_max; + #if !defined (HAVE_SETLOCALE) # define setlocale(cat, loc) #endif --- builtins/printf.def +++ builtins/printf.def 2018-11-29 08:18:21.445909015 +0000 @@ -247,6 +247,8 @@ printf_builtin (list) #if defined (HANDLE_MULTIBYTE) char mbch[25]; /* 25 > MB_LEN_MAX, plus can handle 4-byte UTF-8 and large Unicode characters*/ int mbind, mblen; + size_t charlen; + mbstate_t mbs; #endif #if defined (ARRAY_VARS) int arrayflags; @@ -334,6 +336,25 @@ printf_builtin (list) precision = fieldwidth = 0; have_fieldwidth = have_precision = 0; +#if defined (HANDLE_MULTIBYTE) + if (bash_mbcs_non_utf8) + { + memset (&mbs, 0, sizeof (mbs)); + charlen = mbrlen (fmt, bash_mb_cur_max, &mbs); + if (charlen > 1 && charlen != (size_t)-2 && charlen != (size_t)-1) + { + while (charlen > 0) + { + PC (*fmt); + fmt++; + charlen--; + } + fmt--; + continue; + } + } +#endif + if (*fmt == '\\') { fmt++; --- builtins/read.def +++ builtins/read.def 2018-11-29 08:14:56.165762022 +0000 @@ -188,6 +188,12 @@ read_builtin (list) char c; char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname; char *e, *t, *t1, *ps2, *tofree; +#if defined (HANDLE_MULTIBYTE) + static char mbch[25]; + size_t charlen; + int mblen; + mbstate_t mbs; +#endif struct stat tsb; SHELL_VAR *var; TTYSTRUCT ttattrs, ttset; @@ -548,6 +554,7 @@ read_builtin (list) #endif ps2 = 0; + charlen = 0; for (print_ps2 = eof = retval = 0;;) { CHECK_ALRM; @@ -589,14 +596,40 @@ read_builtin (list) reading = 1; CHECK_ALRM; +#if defined (HANDLE_MULTIBYTE) + charlen = 0; + mblen = 0; + if (bash_mbcs_non_utf8) + { + do + { + if (unbuffered_read) + retval = posixly_correct ? zreadintr (fd, &c, 1) : zread (fd, &c, 1); + else + retval = posixly_correct ? zreadcintr (fd, &c) : zreadc (fd, &c); + + if (retval <= 0) + break; + + mbch[mblen++] = c; + memset (&mbs, 0, sizeof (mbs)); + charlen = mbrlen (mbch, mblen, &mbs); + } + while (charlen == (size_t)-2 && mblen < bash_mb_cur_max); + } + else + { +#endif if (unbuffered_read == 2) retval = posixly_correct ? zreadintr (fd, &c, 1) : zreadn (fd, &c, nchars - nr); else if (unbuffered_read) retval = posixly_correct ? zreadintr (fd, &c, 1) : zread (fd, &c, 1); else retval = posixly_correct ? zreadcintr (fd, &c) : zreadc (fd, &c); +#if defined (HANDLE_MULTIBYTE) + } +#endif reading = 0; - if (retval <= 0) { if (retval < 0 && errno == EINTR) @@ -639,6 +672,11 @@ read_builtin (list) } } +#if defined (HANDLE_MULTIBYTE) + if (bash_mbcs_non_utf8 && charlen > 1) + goto add_char; +#endif + /* If the next character is to be accepted verbatim, a backslash newline pair still disappears from the input. */ if (pass_next) @@ -681,7 +719,19 @@ read_builtin (list) } add_char: +#if defined (HANDLE_MULTIBYTE) + if (bash_mbcs_non_utf8 && charlen > 1) + { + for (mblen = 0; mblen < charlen; mblen++) + input_string[i++] = mbch[mblen]; + } + else + { +#endif input_string[i++] = c; +#if defined (HANDLE_MULTIBYTE) + } +#endif CHECK_ALRM; #if defined (HANDLE_MULTIBYTE) --- lib/sh/strtrans.c +++ lib/sh/strtrans.c 2018-11-29 08:14:56.165762022 +0000 @@ -29,6 +29,7 @@ #include <chartypes.h> #include "shell.h" +#include "bashintl.h" #include "shmbchar.h" #include "shmbutil.h" @@ -55,6 +56,10 @@ ansicstr (string, len, flags, sawc, rlen int c, temp; char *ret, *r, *s; unsigned long v; +#if defined (HANDLE_MULTIBYTE) + size_t charlen; + mbstate_t mbs; +#endif if (string == 0 || *string == '\0') return ((char *)NULL); @@ -69,6 +74,22 @@ ansicstr (string, len, flags, sawc, rlen #endif for (r = ret, s = string; s && *s; ) { +#if defined (HANDLE_MULTIBYTE) + if (bash_mbcs_non_utf8) + { + memset (&mbs, 0, sizeof (mbs)); + charlen = mbrlen (s, bash_mb_cur_max, &mbs); + if (charlen > 1 && charlen != (size_t)-2 && charlen != (size_t)-1) + { + while (charlen > 0) + { + *r++ = *s++; + charlen--; + } + continue; + } + } +#endif c = *s++; if (c != '\\' || *s == '\0') *r++ = c; --- locale.c +++ locale.c 2018-11-29 08:14:56.165762022 +0000 @@ -52,6 +52,7 @@ int locale_mb_cur_max; /* value of MB_CU int locale_shiftstates; extern int dump_translatable_strings, dump_po_strings; +extern int bash_mb_cur_max, bash_mbcs_non_utf8; /* The current locale when the program begins */ static char *default_locale; @@ -76,6 +77,26 @@ static int reset_locale_vars __P((void)) static void locale_setblanks __P((void)); static int locale_isutf8 __P((char *)); +static void +set_mbcs_values () +{ + /* Enhance the performance. */ +#if defined (HANDLE_MULTIBYTE) + bash_mb_cur_max = MB_CUR_MAX; +# if defined (HAVE_LANGINFO_CODESET) + if (strcasestr (nl_langinfo (CODESET), "JIS") != 0 && bash_mb_cur_max == 2) + bash_mbcs_non_utf8 = 1; + else + bash_mbcs_non_utf8 = 0; +# else + bash_mbcs_non_utf8 = 0; +# endif +#else + bash_mb_cur_max = 1; + bash_mbcs_non_utf8 = 0; +#endif +} + /* Set the value of default_locale and make the current locale the system default locale. This should be called very early in main(). */ void @@ -94,6 +115,8 @@ set_default_locale () default_locale = setlocale (LC_ALL, ""); if (default_locale) default_locale = savestring (default_locale); + + set_mbcs_values (); #endif /* HAVE_SETLOCALE */ bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); @@ -150,6 +173,7 @@ set_default_locale_vars () setlocale (LC_TIME, lc_all); # endif /* LC_TIME */ + set_mbcs_values (); #endif /* HAVE_SETLOCALE */ val = get_string_value ("TEXTDOMAIN"); @@ -240,6 +264,7 @@ set_locale_var (var, value) if (lc_all == 0 || *lc_all == '\0') { x = setlocale (LC_CTYPE, get_locale_var ("LC_CTYPE")); + set_mbcs_values (); locale_setblanks (); locale_mb_cur_max = MB_CUR_MAX; /* if setlocale() returns NULL, the locale is not changed */ @@ -388,6 +413,7 @@ reset_locale_vars () t = setlocale (LC_TIME, get_locale_var ("LC_TIME")); # endif + set_mbcs_values (); locale_setblanks (); locale_mb_cur_max = MB_CUR_MAX; if (x) --- parse.y +++ parse.y 2018-11-29 08:14:56.165762022 +0000 @@ -2005,7 +2005,12 @@ read_a_line (remove_quoted_newline) { static char *line_buffer = (char *)NULL; static int buffer_size = 0; - int indx, c, peekc, pass_next; + int indx, c, peekc, pass_next, chari; +#if defined (HANDLE_MULTIBYTE) + size_t charlen; + mbstate_t mbs; + static char char_buffer[10]; +#endif #if defined (READLINE) if (no_line_editing && SHOULD_PROMPT ()) @@ -2020,7 +2025,42 @@ read_a_line (remove_quoted_newline) /* Allow immediate exit if interrupted during input. */ QUIT; +#if defined (HANDLE_MULTIBYTE) + if (!bash_mbcs_non_utf8) + c = yy_getc (); + else + { + chari = 0; + charlen = 0; + while (chari < 10) + { + char_buffer[chari++] = c = yy_getc (); + + if (c == EOF) + break; + + memset (&mbs, 0, sizeof (mbs)); + charlen = mbrlen (char_buffer, chari, &mbs); + + if ((size_t)charlen != (size_t)-2 && (size_t)charlen != (size_t)-1) + break; + } + + if (charlen != 1) + { + charlen = chari; + for (chari = 0; chari < charlen && char_buffer[chari] != EOF; chari++) + { + RESIZE_MALLOCED_BUFFER (line_buffer, indx, 2, buffer_size, 128); + line_buffer[indx++] = char_buffer[chari]; + } + if (chari == charlen) + continue; + } + } +#else c = yy_getc (); +#endif /* Ignore null bytes in input. */ if (c == 0) ++++++ bash-4.3-extra-import-func.patch ++++++ --- /var/tmp/diff_new_pack.ekTSlC/_old 2019-01-29 14:38:19.907557523 +0100 +++ /var/tmp/diff_new_pack.ekTSlC/_new 2019-01-29 14:38:19.911557518 +0100 @@ -1,21 +1,22 @@ --- builtins/shopt.def | 2 ++ doc/bash.1 | 7 +++++++ + execute_cmd.h | 1 + shell.c | 2 ++ - variables.c | 8 +++++++- - 4 files changed, 18 insertions(+), 1 deletion(-) + variables.c | 7 ++++++- + 5 files changed, 18 insertions(+), 1 deletion(-) --- builtins/shopt.def -+++ builtins/shopt.def 2016-09-14 08:57:33.723885627 +0000 ++++ builtins/shopt.def 2018-11-29 08:19:32.996571288 +0000 @@ -90,6 +90,7 @@ extern int autocd; extern int glob_star; extern int glob_asciirange; extern int lastpipe_opt; +extern int import_functions; extern int inherit_errexit; - - #if defined (EXTENDED_GLOB) -@@ -200,6 +201,7 @@ static struct { + extern int localvar_inherit; + extern int localvar_unset; +@@ -213,6 +214,7 @@ static struct { { "hostcomplete", &perform_hostname_completion, shopt_enable_hostname_completion }, #endif { "huponexit", &hup_on_exit, (shopt_set_func_t *)NULL }, @@ -24,8 +25,8 @@ { "interactive_comments", &interactive_comments, set_shellopts_after_change }, { "lastpipe", &lastpipe_opt, (shopt_set_func_t *)NULL }, --- doc/bash.1 -+++ doc/bash.1 2016-09-14 08:57:33.723885627 +0000 -@@ -244,6 +244,13 @@ The shell becomes restricted (see ++++ doc/bash.1 2018-11-29 08:19:33.000571213 +0000 +@@ -245,6 +245,13 @@ The shell becomes restricted (see .B "RESTRICTED SHELL" below). .TP @@ -39,9 +40,19 @@ .B \-\-verbose Equivalent to \fB\-v\fP. .TP +--- execute_cmd.h ++++ execute_cmd.h 2018-11-29 08:19:33.000571213 +0000 +@@ -61,6 +61,7 @@ extern int evalnest, evalnest_max; + extern int sourcenest, sourcenest_max; + extern int stdin_redir; + extern int line_number_for_err_trap; ++extern int import_functions; + + extern char *the_printed_command_except_trap; + --- shell.c -+++ shell.c 2016-09-14 08:57:33.723885627 +0000 -@@ -238,6 +238,7 @@ int posixly_correct = 1; /* Non-zero mea ++++ shell.c 2018-11-29 08:19:33.000571213 +0000 +@@ -232,6 +232,7 @@ int posixly_correct = 1; /* Non-zero mea #else int posixly_correct = 0; /* Non-zero means posix.2 superset. */ #endif @@ -49,7 +60,7 @@ /* Some long-winded argument names. These are obviously new. */ #define Int 1 -@@ -257,6 +258,7 @@ static const struct { +@@ -251,6 +252,7 @@ static const struct { { "help", Int, &want_initial_help, (char **)0x0 }, { "init-file", Charp, (int *)0x0, &bashrc_file }, { "login", Int, &make_login_shell, (char **)0x0 }, @@ -58,16 +69,8 @@ { "noprofile", Int, &no_profile, (char **)0x0 }, { "norc", Int, &no_rc, (char **)0x0 }, --- variables.c -+++ variables.c 2016-09-14 08:57:33.723885627 +0000 -@@ -115,6 +115,7 @@ extern time_t shell_start_time; - extern int assigning_in_environment; - extern int executing_builtin; - extern int funcnest_max; -+extern int import_functions; - - #if defined (READLINE) - extern int no_line_editing; -@@ -378,6 +379,11 @@ initialize_shell_variables (env, privmod ++++ variables.c 2018-11-29 08:19:33.000571213 +0000 +@@ -380,6 +380,11 @@ initialize_shell_variables (env, privmod tname = name + BASHFUNC_PREFLEN; /* start of func name */ tname[namelen] = '\0'; /* now tname == func name */ @@ -79,7 +82,7 @@ string_length = strlen (string); temp_string = (char *)xmalloc (namelen + string_length + 2); -@@ -392,7 +398,7 @@ initialize_shell_variables (env, privmod +@@ -394,7 +399,7 @@ initialize_shell_variables (env, privmod parse_and_execute (temp_string, tname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD); else free (temp_string); /* parse_and_execute does this */ ++++++ bash-4.3-loadables.dif ++++++ --- /var/tmp/diff_new_pack.ekTSlC/_old 2019-01-29 14:38:19.919557508 +0100 +++ /var/tmp/diff_new_pack.ekTSlC/_new 2019-01-29 14:38:19.919557508 +0100 @@ -1,15 +1,15 @@ --- - examples/loadables/finfo.c | 11 +++++------ + examples/loadables/finfo.c | 9 ++++----- examples/loadables/head.c | 2 -- examples/loadables/id.c | 2 -- examples/loadables/mkdir.c | 2 +- examples/loadables/pathchk.c | 2 -- examples/loadables/print.c | 2 +- examples/loadables/tee.c | 2 -- - 7 files changed, 7 insertions(+), 16 deletions(-) + 7 files changed, 6 insertions(+), 15 deletions(-) --- examples/loadables/finfo.c -+++ examples/loadables/finfo.c 2016-03-08 12:24:51.061423424 +0000 ++++ examples/loadables/finfo.c 2018-09-20 08:07:43.739129083 +0000 @@ -102,7 +102,7 @@ int argc; char **argv; { @@ -24,16 +24,15 @@ printf("%ld\n", st->st_ctime); } else if (flags & OPT_DEV) - printf("%d\n", st->st_dev); -+ printf("%lu\n", (ulong)st->st_dev); ++ printf("%lu\n", (unsigned long)st->st_dev); else if (flags & OPT_INO) -- printf("%d\n", st->st_ino); -+ printf("%lu\n", (ulong)st->st_ino); + printf("%lu\n", (unsigned long)st->st_ino); else if (flags & OPT_FID) -- printf("%d:%ld\n", st->st_dev, st->st_ino); -+ printf("%lu:%lu\n", (ulong)st->st_dev, (ulong)st->st_ino); +- printf("%d:%lu\n", st->st_dev, (unsigned long)st->st_ino); ++ printf("%lu:%lu\n", (unsigned long)st->st_dev, (unsigned long)st->st_ino); else if (flags & OPT_NLINK) - printf("%d\n", st->st_nlink); -+ printf("%lu\n", (ulong)st->st_nlink); ++ printf("%lu\n", (unsigned long)st->st_nlink); else if (flags & OPT_LNKNAM) { #ifdef S_ISLNK b = xmalloc(4096); @@ -46,7 +45,7 @@ v = make_builtin_argv (list, &c); r = finfo_main (c, v); --- examples/loadables/head.c -+++ examples/loadables/head.c 2016-03-08 12:24:51.061423424 +0000 ++++ examples/loadables/head.c 2018-09-20 08:07:43.739129083 +0000 @@ -99,8 +99,6 @@ head_builtin (list) WORD_LIST *l; FILE *fp; @@ -57,7 +56,7 @@ reset_internal_getopt (); --- examples/loadables/id.c -+++ examples/loadables/id.c 2016-03-08 12:24:51.061423424 +0000 ++++ examples/loadables/id.c 2018-09-20 08:07:43.739129083 +0000 @@ -64,8 +64,6 @@ static int id_flags; static uid_t ruid, euid; static gid_t rgid, egid; @@ -68,8 +67,8 @@ static int id_pruser (); --- examples/loadables/mkdir.c -+++ examples/loadables/mkdir.c 2016-03-08 12:24:51.061423424 +0000 -@@ -167,7 +167,7 @@ make_path (path, nmode, parent_mode) ++++ 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++; @@ -79,8 +78,8 @@ *p = '\0'; if (stat (npath, &sb) != 0) --- examples/loadables/pathchk.c -+++ examples/loadables/pathchk.c 2016-03-08 12:24:51.061423424 +0000 -@@ -291,10 +291,8 @@ validate_path (path, portability) ++++ examples/loadables/pathchk.c 2018-09-20 08:07:43.739129083 +0000 +@@ -292,10 +292,8 @@ validate_path (path, portability) if (*path == '\0') return 0; @@ -92,7 +91,7 @@ /* Figure out the parent of the first element in PATH. */ parent = xstrdup (*path == '/' ? "/" : "."); --- examples/loadables/print.c -+++ examples/loadables/print.c 2016-03-08 12:24:51.061423424 +0000 ++++ examples/loadables/print.c 2018-09-20 08:07:43.739129083 +0000 @@ -77,7 +77,7 @@ print_builtin (list) { int c, r, nflag, raw, ofd, sflag; @@ -103,7 +102,7 @@ nflag = raw = sflag = 0; --- examples/loadables/tee.c -+++ examples/loadables/tee.c 2016-03-08 12:24:51.061423424 +0000 ++++ examples/loadables/tee.c 2018-09-20 08:07:43.739129083 +0000 @@ -70,8 +70,6 @@ tee_builtin (list) FLIST *fl; char *buf, *bp; ++++++ bash-4.3-sigrestart.patch ++++++ --- /var/tmp/diff_new_pack.ekTSlC/_old 2019-01-29 14:38:19.935557489 +0100 +++ /var/tmp/diff_new_pack.ekTSlC/_new 2019-01-29 14:38:19.939557485 +0100 @@ -3,14 +3,17 @@ 1 file changed, 6 insertions(+) --- sig.c -+++ sig.c 2017-01-27 17:46:46.602829901 +0000 -@@ -739,10 +739,16 @@ set_signal_handler (sig, handler) ++++ sig.c 2018-11-29 08:13:00.103944580 +0000 +@@ -761,6 +761,8 @@ set_signal_handler (sig, handler) if (sig == SIGCHLD) act.sa_flags |= SA_RESTART; /* XXX */ #endif + if (handler == (trap_handler)) + act.sa_flags |= SA_NODEFER; /* XXX */ - /* If we're installing a SIGTERM handler for interactive shells, we want + /* Let's see if we can keep SIGWINCH from interrupting interruptible system + calls, like open(2)/read(2)/write(2) */ + #if defined (SIGWINCH) +@@ -771,6 +773,10 @@ set_signal_handler (sig, handler) it to be as close to SIG_IGN as possible. */ if (sig == SIGTERM && handler == sigterm_sighandler) act.sa_flags |= SA_RESTART; /* XXX */ ++++++ bash-4.3-winch.dif ++++++ --- /var/tmp/diff_new_pack.ekTSlC/_old 2019-01-29 14:38:19.951557470 +0100 +++ /var/tmp/diff_new_pack.ekTSlC/_new 2019-01-29 14:38:19.951557470 +0100 @@ -3,8 +3,8 @@ 1 file changed, 1 insertion(+), 1 deletion(-) --- config-top.h -+++ config-top.h 2016-09-14 08:55:30.170191343 +0000 -@@ -130,7 +130,7 @@ ++++ config-top.h 2018-09-20 08:15:45.026318359 +0000 +@@ -142,7 +142,7 @@ /* Define to 0 if you want the checkwinsize option off by default, 1 if you want it on. */ ++++++ bash-4.4-patches.tar.bz2 -> bash-5.0-patches.tar.bz2 ++++++ ++++ 1829 lines of diff (skipped) ++++++ bash-4.2-endpw.dif -> bash-5.0.dif ++++++ --- /work/SRC/openSUSE:Factory/bash/bash-4.2-endpw.dif 2016-10-26 13:25:41.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.bash.new.28833/bash-5.0.dif 2019-01-29 14:38:18.623559074 +0100 @@ -1,176 +1,249 @@ --- - bashline.c | 1 + - examples/loadables/finfo.c | 16 ++++++++++------ - examples/loadables/id.c | 37 +++++++++++++++++++++++++------------ - lib/tilde/shell.c | 9 +++++++++ - lib/tilde/tilde.c | 1 + - 5 files changed, 46 insertions(+), 18 deletions(-) + Makefile.in | 2 +- + config-top.h | 16 ++++++++++------ + doc/Makefile.in | 2 +- + doc/bash.1 | 7 +++++-- + general.h | 3 +++ + parse.y | 2 +- + shell.c | 6 +++++- + support/bashbug.sh | 2 +- + support/man2html.c | 1 + + support/rlvers.sh | 6 +++--- + support/shobj-conf | 5 +++-- + tests/glob.tests | 4 ++-- + tests/run-intl | 2 +- + tests/run-read | 2 +- + 14 files changed, 38 insertions(+), 22 deletions(-) ---- bashline.c -+++ bashline.c 2011-11-21 12:41:19.831646479 +0000 -@@ -2485,6 +2485,7 @@ bash_groupname_completion_function (text - } - - value = savestring (grent->gr_name); -+ endgrent (); - return (value); +--- Makefile.in ++++ Makefile.in 2018-11-29 08:14:06.638693338 +0000 +@@ -456,7 +456,7 @@ SOURCES = $(CSOURCES) $(HSOURCES) $(BUI + # 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 \ + variables.h array.h assoc.h arrayfunc.h quit.h dispose_cmd.h \ +- make_cmd.h subst.h sig.h externs.h builtins.h \ ++ make_cmd.h subst.h sig.h externs.h builtins.h bashline.h \ + bashtypes.h xmalloc.h config-top.h config-bot.h \ + bashintl.h bashansi.h bashjmp.h alias.h hashlib.h \ + conftypes.h unwind_prot.h jobs.h siglist.h +--- config-top.h ++++ config-top.h 2018-11-29 08:14:06.638693338 +0000 +@@ -60,10 +60,14 @@ + due to EPIPE. */ + /* #define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS */ + ++#ifndef _PATH_DEFPATH ++# include <paths.h> ++#endif ++ + /* The default value of the PATH variable. */ + #ifndef DEFAULT_PATH_VALUE + #define DEFAULT_PATH_VALUE \ +- "/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:." ++ "/usr/local/bin:" _PATH_DEFPATH ":." + #endif + + /* If you want to unconditionally set a value for PATH in every restricted +@@ -74,7 +78,7 @@ + the Posix.2 confstr () function, or CS_PATH define are not present. */ + #ifndef STANDARD_UTILS_PATH + #define STANDARD_UTILS_PATH \ +- "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc" ++ _PATH_STDPATH #endif - } ---- examples/loadables/finfo.c -+++ examples/loadables/finfo.c 2011-11-21 12:23:17.331147246 +0000 -@@ -290,6 +290,7 @@ struct stat *st; - pw = getpwuid(st->st_uid); - owner = pw ? pw->pw_name : "unknown"; - printf("Uid of owner: %d (%s)\n", (int) st->st_uid, owner); -+ endpwent(); - gr = getgrgid(st->st_gid); - owner = gr ? gr->gr_name : "unknown"; - printf("Gid of owner: %d (%s)\n", (int) st->st_gid, owner); -@@ -298,6 +299,7 @@ struct stat *st; - printf("File last access time: %s", ctime (&st->st_atime)); - printf("File last modify time: %s", ctime (&st->st_mtime)); - printf("File last status change time: %s", ctime (&st->st_ctime)); -+ endgrent(); - fflush(stdout); - return(0); - } -@@ -366,16 +368,18 @@ int flags; - else if (flags & OPT_PMASK) - printf("%o\n", getperm(st->st_mode) & pmask); - else if (flags & OPT_UID) { -- pw = getpwuid(st->st_uid); -- if (flags & OPT_ASCII) -+ if (flags & OPT_ASCII) { -+ pw = getpwuid(st->st_uid); - printf("%s\n", pw ? pw->pw_name : "unknown"); -- else -+ endpwent(); -+ } else - printf("%d\n", st->st_uid); - } else if (flags & OPT_GID) { -- gr = getgrgid(st->st_gid); -- if (flags & OPT_ASCII) -+ if (flags & OPT_ASCII) { -+ gr = getgrgid(st->st_gid); - printf("%s\n", gr ? gr->gr_name : "unknown"); -- else -+ endgrent(); -+ } else - printf("%d\n", st->st_gid); - } else if (flags & OPT_SIZE) - printf("%ld\n", (long) st->st_size); ---- examples/loadables/id.c -+++ examples/loadables/id.c 2011-11-21 12:39:06.895646231 +0000 -@@ -42,6 +42,7 @@ - - #if !defined (HAVE_GETPW_DECLS) - extern struct passwd *getpwuid (); -+extern void endpwent (); + + /* Default primary and secondary prompt strings. */ +@@ -91,20 +95,20 @@ + #define DEFAULT_BASHRC "~/.bashrc" + + /* System-wide .bashrc file for interactive shells. */ +-/* #define SYS_BASHRC "/etc/bash.bashrc" */ ++#define SYS_BASHRC "/etc/bash.bashrc" + + /* System-wide .bash_logout for login shells. */ +-/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */ ++#define SYS_BASH_LOGOUT "/etc/bash.bash_logout" + + /* Define this to make non-interactive shells begun with argv[0][0] == '-' + run the startup files when not in posix mode. */ +-/* #define NON_INTERACTIVE_LOGIN_SHELLS */ ++#define NON_INTERACTIVE_LOGIN_SHELLS + + /* Define this if you want bash to try to check whether it's being run by + sshd and source the .bashrc if so (like the rshd behavior). This checks + for the presence of SSH_CLIENT or SSH2_CLIENT in the initial environment, + which can be fooled under certain not-uncommon circumstances. */ +-/* #define SSH_SOURCE_BASHRC */ ++#define SSH_SOURCE_BASHRC + + /* Define if you want the case-capitalizing operators (~[~]) and the + `capcase' variable attribute (declare -c). */ +--- doc/Makefile.in ++++ doc/Makefile.in 2018-11-29 08:14:06.638693338 +0000 +@@ -154,7 +154,7 @@ BASHREF_FILES = $(srcdir)/bashref.texi $ + # $(RM) $@ + # -${TEXI2PDF} $< + +-all: ps info dvi text html $(MAN2HTML) ++all: info html $(MAN2HTML) + nodvi: ps info text html + everything: all pdf + +--- doc/bash.1 ++++ doc/bash.1 2018-11-29 08:14:06.638693338 +0000 +@@ -5443,8 +5443,8 @@ file (the \fIinputrc\fP file). + The name of this file is taken from the value of the + .SM + .B INPUTRC +-variable. If that variable is unset, the default is +-.IR ~/.inputrc . ++environment variable. If that variable is unset, readline will read both ++.IR /etc/inputrc " and " ~/.inputrc . + When a program which uses the readline library starts up, the + initialization file is read, and the key bindings and variables + are set. +@@ -10922,6 +10922,9 @@ The individual login shell cleanup file, + .TP + .FN ~/.inputrc + Individual \fIreadline\fP initialization file ++.TP ++.FN /etc/inputrc ++System \fBreadline\fP initialization file + .PD + .SH AUTHORS + Brian Fox, Free Software Foundation +--- general.h ++++ general.h 2018-11-29 08:14:06.638693338 +0000 +@@ -21,10 +21,13 @@ + #if !defined (_GENERAL_H_) + #define _GENERAL_H_ + ++#include <time.h> ++#include <sys/types.h> + #include "stdc.h" + + #include "bashtypes.h" + #include "chartypes.h" ++#include "bashline.h" + + #if defined (HAVE_SYS_RESOURCE_H) && defined (RLIMTYPE) + # if defined (HAVE_SYS_TIME_H) +--- parse.y ++++ parse.y 2018-11-29 08:14:06.638693338 +0000 +@@ -1456,7 +1456,7 @@ input_file_descriptor () + + #if defined (READLINE) + char *current_readline_prompt = (char *)NULL; +-char *current_readline_line = (char *)NULL; ++unsigned char *current_readline_line = (unsigned char *)NULL; + int current_readline_line_index = 0; + + static int +--- shell.c ++++ shell.c 2018-11-29 08:14:06.638693338 +0000 +@@ -45,6 +45,7 @@ + #if defined (HAVE_UNISTD_H) + # include <sys/types.h> + # include <unistd.h> ++# include <grp.h> #endif - extern struct group *getgrgid (); -@@ -136,18 +137,26 @@ static int - inituser (uname) - char *uname; + #include "bashintl.h" +@@ -497,7 +498,7 @@ main (argc, argv, env) + if (dump_translatable_strings) + read_but_dont_execute = 1; + +- if (running_setuid && privileged_mode == 0) ++ if (running_setuid && privileged_mode == 0 /* && act_like_sh == 0 */) + disable_priv_mode (); + + /* Need to get the argument to a -c option processed in the +@@ -1294,6 +1295,9 @@ disable_priv_mode () { -- struct passwd *pwd; -- - if (uname) - { -+ struct passwd *pwd; -+ int r; -+ -+ r = 0; - pwd = getpwnam (uname); - if (pwd == 0) - { - builtin_error ("%s: no such user", uname); -- return -1; -+ r = -1; - } -- ruid = euid = pwd->pw_uid; -- rgid = egid = pwd->pw_gid; -+ else -+ { -+ ruid = euid = pwd->pw_uid; -+ rgid = egid = pwd->pw_gid; -+ } -+ endpwent (); -+ if (r < 0) -+ return r; - } - else - { -@@ -172,11 +181,12 @@ id_pruser (uid) - { - pwd = getpwuid (uid); - if (pwd == NULL) -- r = 1; -+ r = 1; -+ else -+ printf ("%s", pwd->pw_name); -+ endpwent (); - } -- if (pwd) -- printf ("%s", pwd->pw_name); -- else -+ if (pwd == NULL) - printf ("%u", (unsigned) uid); - - return r; -@@ -197,11 +207,12 @@ id_prgrp (gid) - grp = getgrgid (gid); - if (grp == NULL) - r = 1; -+ else -+ printf ("%s", grp->gr_name); -+ endgrent (); - } - -- if (grp) -- printf ("%s", grp->gr_name); -- else -+ if (grp == NULL) - printf ("%u", (unsigned) gid); - - return r; -@@ -307,6 +318,8 @@ id_prall (uname) - else - printf ("(%s)", grp->gr_name); - } -+ endpwent (); -+ endgrent (); - - return r; - } ---- lib/tilde/shell.c -+++ lib/tilde/shell.c 2011-11-21 13:07:02.099146925 +0000 -@@ -45,9 +45,18 @@ - #include <pwd.h> - - #if !defined (HAVE_GETPW_DECLS) -+# if defined (HAVE_GETPWUID) - extern struct passwd *getpwuid (); -+# endif -+# if defined (HAVE_GETPWENT) -+extern void endpwent (); -+# endif - #endif /* !HAVE_GETPW_DECLS */ - -+#if !defined (savestring) -+# define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x)) -+#endif /* !savestring */ -+ - char * - get_env_value (varname) - char *varname; ---- lib/tilde/tilde.c -+++ lib/tilde/tilde.c 2011-11-11 13:10:07.000000000 +0000 -@@ -61,6 +61,7 @@ extern struct passwd *getpwuid PARAMS((u - # endif - # if defined (HAVE_GETPWNAM) - extern struct passwd *getpwnam PARAMS((const char *)); -+extern void endpwent (); - # endif - #endif /* !HAVE_GETPW_DECLS */ + int e; ++ if (!current_user.user_name) ++ get_current_user_info(); ++ initgroups (current_user.user_name, current_user.gid); + if (setuid (current_user.uid) < 0) + { + e = errno; +--- support/bashbug.sh ++++ support/bashbug.sh 2018-11-29 08:14:06.638693338 +0000 +@@ -1,4 +1,4 @@ +-#!/bin/sh - ++#!/bin/bash - + # + # bashbug - create a bug report and mail it to the bug address + # +--- support/man2html.c ++++ support/man2html.c 2018-11-29 08:14:06.638693338 +0000 +@@ -78,6 +78,7 @@ + #include <time.h> + #include <sys/time.h> + #include <errno.h> ++#include <unistd.h> + + #define NULL_TERMINATED(n) ((n) + 1) + +--- support/rlvers.sh ++++ support/rlvers.sh 2018-11-29 08:14:06.638693338 +0000 +@@ -27,10 +27,10 @@ TDIR=$TMPDIR/rlvers + + # defaults + CC=cc +-RL_LIBDIR=/usr/local/lib +-RL_INCDIR=/usr/local/include ++RL_LIBDIR=/lib ++RL_INCDIR=/usr/include + +-TERMCAP_LIB="-ltermcap" ++echo 'int main () { return 0; }' | gcc -ltinfo -o /dev/null -xc - > /dev/null 2>&1 && TERMCAP_LIB="-ltinfo" || TERMCAP_LIB="-lncurses" + + # cannot rely on the presence of getopts + while [ $# -gt 0 ]; do +--- support/shobj-conf ++++ support/shobj-conf 2018-11-29 08:14:06.642693263 +0000 +@@ -126,10 +126,11 @@ sunos5*|solaris2*) + linux*-*|gnu*-*|k*bsd*-gnu-*|freebsd*-gentoo) + SHOBJ_CFLAGS=-fPIC + SHOBJ_LD='${CC}' +- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@' ++ SHOBJ_LDFLAGS='-shared' + +- SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`' ++ SHLIB_XLDFLAGS='-Wl,-rpath-link,$(libdir) -Wl,-soname,`basename $@ $(SHLIB_MINOR)`' + SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)' ++ echo 'int main () { return 0; }' | gcc -ltinfo -o /dev/null -xc - > /dev/null 2>&1 && SHLIB_LIBS=-ltinfo || SHLIB_LIBS=-lncurses + ;; + + freebsd2*) +--- tests/glob.tests ++++ tests/glob.tests 2018-11-29 08:14:06.642693263 +0000 +@@ -15,8 +15,8 @@ ${THIS_SH} ./glob3.sub + + MYDIR=$PWD # save where we are + +-TESTDIR=$TMPDIR/glob-test-$$ +-mkdir $TESTDIR ++TESTDIR=${TMPDIR:=/tmp}/glob-test-$$ ++mkdir -p $TESTDIR + builtin cd $TESTDIR || { echo $0: cannot cd to $TESTDIR >&2 ; exit 1; } + rm -rf * + +--- tests/run-intl ++++ tests/run-intl 2018-11-29 08:14:06.642693263 +0000 +@@ -5,4 +5,4 @@ echo "warning: some of these tests will + echo "warning: locales installed on your system." >&2 + + ${THIS_SH} ./intl.tests > ${BASH_TSTOUT} +-diff $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 2018-11-29 08:14:06.642693263 +0000 +@@ -1,4 +1,4 @@ + echo "warning: please do not consider output differing only in the amount of" >&2 + echo "warning: white space to be an error." >&2 + ${THIS_SH} ./read.tests > ${BASH_TSTOUT} 2>&1 +-diff ${BASH_TSTOUT} read.right && rm -f ${BASH_TSTOUT} ++diff -w ${BASH_TSTOUT} read.right && rm -f ${BASH_TSTOUT} ++++++ bash-4.4.tar.gz -> bash-5.0.tar.gz ++++++ /work/SRC/openSUSE:Factory/bash/bash-4.4.tar.gz /work/SRC/openSUSE:Factory/.bash.new.28833/bash-5.0.tar.gz differ: char 5, line 1
