Dr. Werner Fink 2016-09-16 11:10:58 +00:00 committed by Git OBS Bridge
parent 756ff0494e
commit 4ea4fdf26b
46 changed files with 645 additions and 829 deletions

View File

@ -1,4 +1,4 @@
libreadline6
libreadline7
obsoletes "readline-<targettype> <= <version>"
provides "readline-<targettype> = <version>"
targettype x86 package bash
@ -7,5 +7,6 @@ targettype x86 package bash
prereq -glibc-x86
readline-devel
requires -readline-<targettype>
requires "libreadline6-<targettype> = <version>"
requires "libreadline7-<targettype> = <version>"
conflicts "readline5-devel-<targettype>"
conflicts "readline6-devel-<targettype>"

View File

@ -1,6 +1,12 @@
---
doc/bash.1 | 16 ++++++++++++++++
doc/builtins.1 | 2 +-
doc/rbash.1 | 2 +-
3 files changed, 18 insertions(+), 2 deletions(-)
--- doc/bash.1
+++ doc/bash.1 2004-10-25 17:29:54.000000000 +0000
@@ -115,6 +115,12 @@ processing, then commands are read from
+++ 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.
.TP
@ -13,7 +19,7 @@
.B \-D
A list of all double-quoted strings preceded by \fB$\fP
is printed on the standard output.
@@ -6211,6 +6217,11 @@ Apply the following `\fBs\fP' modifier o
@@ -7038,6 +7044,11 @@ Apply the following `\fBs\fP' modifier o
.SH "SHELL BUILTIN COMMANDS"
.\" start of bash_builtins
.zZ
@ -25,7 +31,7 @@
.PP
Unless otherwise noted, each builtin command documented in this
section as accepting options preceded by
@@ -9205,6 +9216,11 @@ process or job waited for.
@@ -10432,6 +10443,11 @@ process or job waited for.
.SH "RESTRICTED SHELL"
.\" rbash.1
.zY
@ -38,8 +44,8 @@
If
.B bash
--- doc/builtins.1
+++ doc/builtins.1 2004-10-25 17:29:20.000000000 +0000
@@ -12,6 +12,6 @@ shift, shopt, source, suspend, test, tim
+++ doc/builtins.1 2016-09-16 10:36:46.667901616 +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
.nr zZ 1
@ -48,7 +54,7 @@
.SH SEE ALSO
bash(1), sh(1)
--- doc/rbash.1
+++ doc/rbash.1 2004-10-25 17:29:20.000000000 +0000
+++ doc/rbash.1 2016-09-16 10:36:46.667901616 +0000
@@ -3,6 +3,6 @@
rbash \- restricted bash, see \fBbash\fR(1)
.SH RESTRICTED SHELL

View File

@ -1,6 +1,10 @@
---
expr.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- expr.c
+++ expr.c 2004-07-30 14:39:48.000000000 +0000
@@ -410,8 +410,8 @@ expassign ()
@@ -466,8 +466,8 @@ expassign ()
value = expcond ();
if (curtok == EQ || curtok == OP_ASSIGN)
{

View File

@ -1,6 +1,10 @@
---
locale.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
--- locale.c
+++ locale.c 2004-09-03 10:56:10.000000000 +0000
@@ -29,6 +29,10 @@
@@ -33,6 +33,10 @@
#include "bashintl.h"
#include "bashansi.h"
#include <stdio.h>
@ -11,7 +15,7 @@
#include "chartypes.h"
#include <errno.h>
@@ -68,6 +72,15 @@ void
@@ -76,6 +80,15 @@ void
set_default_locale ()
{
#if defined (HAVE_SETLOCALE)

View File

@ -1,43 +0,0 @@
--- execute_cmd.c
+++ execute_cmd.c 2008-04-28 01:38:19.000000000 +0000
@@ -25,6 +25,7 @@
#endif /* _AIX && RISC6000 && !__GNUC__ */
#include <stdio.h>
+#include <paths.h>
#include "chartypes.h"
#include "bashtypes.h"
#if !defined (_MINIX) && defined (HAVE_SYS_FILE_H)
@@ -4764,6 +4765,23 @@ shell_execve (command, args, env)
/* We have committed to attempting to execute the contents of this file
as shell commands. */
+#if defined(BNC382214) && (BNC382214 == 1)
+ larray = strvec_len(args) + 1;
+ args = strvec_resize(args, larray + 1);
+
+ for (i = larray - 1; i; i--)
+ args[i] = args[i - 1];
+
+ args[0] = current_user.shell ? current_user.shell : savestring(_PATH_BSHELL);
+ args[1] = command;
+ args[larray] = (char *)0;
+
+ SETOSTYPE (0); /* Some systems use for USG/POSIX semantics */
+ execve (args[0], args, env);
+ SETOSTYPE (1);
+
+ internal_error (_("%s: cannot execute: %s"), command, strerror (errno));
+#else
initialize_subshell ();
set_sigint_handler ();
@@ -4806,6 +4824,8 @@ shell_execve (command, args, env)
longjmp (subshell_top_level, 1);
/*NOTREACHED*/
+#endif
+ return (EX_NOEXEC);
}
static int

View File

@ -1,6 +1,10 @@
---
builtins/printf.def | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
--- builtins/printf.def
+++ builtins/printf.def 2006-07-27 15:11:19.000000000 +0000
@@ -47,6 +47,7 @@ error occurs.
@@ -54,6 +54,7 @@ error occurs.
$END
#include <config.h>
@ -8,7 +12,7 @@
#include "../bashtypes.h"
@@ -529,12 +530,20 @@ printf_builtin (list)
@@ -654,12 +655,20 @@ printf_builtin (list)
case 'A':
#endif
{

View File

@ -1,6 +1,10 @@
---
jobs.c | 2 ++
1 file changed, 2 insertions(+)
--- jobs.c
+++ jobs.c 2009-09-09 17:38:46.286401756 +0200
@@ -626,6 +626,7 @@ stop_pipeline (async, deferred)
+++ jobs.c 2009-09-09 15:38:46.286401756 +0000
@@ -681,6 +681,7 @@ stop_pipeline (async, deferred)
if (newjob)
{
newjob->flags |= J_FOREGROUND;
@ -8,9 +12,9 @@
/*
* !!!!! NOTE !!!!! (chet@ins.cwru.edu)
*
@@ -640,6 +641,7 @@ stop_pipeline (async, deferred)
@@ -696,6 +697,7 @@ stop_pipeline (async, deferred)
*/
if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0)
if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0 && running_in_background == 0)
maybe_give_terminal_to (shell_pgrp, newjob->pgrp, 0);
+#endif
}

View File

@ -1,6 +1,10 @@
---
variables.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
--- variables.c
+++ variables.c 2009-12-04 09:31:06.579929599 +0000
@@ -1216,6 +1216,7 @@ static unsigned long rseed = 1;
+++ 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;
@ -8,7 +12,7 @@
/* 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. */
@@ -1264,6 +1265,32 @@ seedrand ()
@@ -1344,6 +1345,32 @@ seedrand ()
sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid ());
}

View File

@ -1,6 +1,10 @@
---
locale.c | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
--- locale.c
+++ locale.c 2008-11-25 13:41:50.000000000 +0000
@@ -47,6 +47,7 @@ extern int dump_translatable_strings, du
@@ -54,6 +54,7 @@ extern int dump_translatable_strings, du
/* The current locale when the program begins */
static char *default_locale;
@ -8,7 +12,7 @@
/* The current domain for textdomain(3). */
static char *default_domain;
@@ -314,11 +315,21 @@ get_locale_var (var)
@@ -326,11 +327,21 @@ get_locale_var (var)
if (locale == 0 || *locale == 0)
locale = lang;
if (locale == 0 || *locale == 0)

View File

@ -16,21 +16,21 @@
|other files as well even if the bash does not.
|
---
bash.1 | 15 ++++++++++++---
doc/bash.1 | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
--- doc/bash.1
+++ doc/bash.1 2016-08-01 12:40:06.771618500 +0000
@@ -324,6 +324,8 @@ and executes commands from the first one
+++ doc/bash.1 2016-08-01 13:54:54.253999110 +0000
@@ -329,6 +329,8 @@ and executes commands from the first one
The
.B \-\-noprofile
option may be used when the shell is started to inhibit this behavior.
+Please note that the file \fI/etc/profile\fP includes an autodetection shell
+code wether it has to source \fI/etc/bash.bashrc\fP as well as \fI~/.bashrc\fP.
.PP
When a login shell exits,
.B bash
@@ -332,13 +334,19 @@ exists.
When an interactive login shell exits,
or a non-interactive login shell executes the \fBexit\fP builtin command,
@@ -338,13 +340,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
@@ -424,7 +432,8 @@ daemon, usually \fIrshd\fP, or the secur
@@ -430,7 +438,8 @@ daemon, usually \fIrshd\fP, or the secur
If
.B bash
determines it is being run in this fashion, it reads and executes

View File

@ -1,6 +1,10 @@
---
bashline.c | 7 +++++++
1 file changed, 7 insertions(+)
--- bashline.c
+++ bashline.c 2010-03-09 14:11:27.612626475 +0000
@@ -1700,6 +1700,13 @@ globword:
+++ bashline.c 2016-09-14 08:54:09.315700369 +0000
@@ -2029,6 +2029,13 @@ globword:
return ((char *)NULL);
}

View File

@ -1,6 +1,14 @@
---
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(-)
--- bashline.c
+++ bashline.c 2011-11-21 12:41:19.831646479 +0000
@@ -2149,6 +2149,7 @@ bash_groupname_completion_function (text
@@ -2485,6 +2485,7 @@ bash_groupname_completion_function (text
}
value = savestring (grent->gr_name);
@ -10,7 +18,7 @@
}
--- examples/loadables/finfo.c
+++ examples/loadables/finfo.c 2011-11-21 12:23:17.331147246 +0000
@@ -269,6 +269,7 @@ struct stat *st;
@@ -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);
@ -18,7 +26,7 @@
gr = getgrgid(st->st_gid);
owner = gr ? gr->gr_name : "unknown";
printf("Gid of owner: %d (%s)\n", (int) st->st_gid, owner);
@@ -277,6 +278,7 @@ struct stat *st;
@@ -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));
@ -26,7 +34,7 @@
fflush(stdout);
return(0);
}
@@ -345,16 +347,18 @@ int flags;
@@ -366,16 +368,18 @@ int flags;
else if (flags & OPT_PMASK)
printf("%o\n", getperm(st->st_mode) & pmask);
else if (flags & OPT_UID) {
@ -156,29 +164,6 @@
char *
get_env_value (varname)
char *varname;
@@ -58,12 +67,19 @@ get_env_value (varname)
char *
get_home_dir ()
{
- char *home_dir;
+ static char *home_dir;
struct passwd *entry;
- home_dir = (char *)NULL;
+ if (home_dir)
+ goto out;
+#if defined (HAVE_GETPWUID)
entry = getpwuid (getuid ());
if (entry)
- home_dir = entry->pw_dir;
+ home_dir = savestring(entry->pw_dir);
+#endif
+#if defined (HAVE_GETPWENT)
+ endpwent ();
+#endif
+out:
return (home_dir);
}
--- 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

View File

@ -1,17 +1,19 @@
---
shell.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
--- shell.c
+++ shell.c 2011-11-11 15:08:39.479158014 +0000
@@ -39,8 +39,8 @@
#include <errno.h>
#include "filecntl.h"
#include <pwd.h>
-
+++ shell.c 2016-09-14 08:54:32.971258862 +0000
@@ -43,6 +43,7 @@
#endif
#if defined (HAVE_UNISTD_H)
+# include <sys/types.h>
# include <unistd.h>
#endif
@@ -1630,6 +1630,28 @@ init_interactive_script ()
expand_aliases = interactive_shell = startup_state = 1;
@@ -1751,6 +1752,28 @@ init_interactive_script ()
#endif
}
+static void
@ -39,10 +41,10 @@
void
get_current_user_info ()
{
@@ -1655,6 +1677,7 @@ get_current_user_info ()
current_user.home_dir = savestring ("/");
}
@@ -1782,6 +1805,7 @@ get_current_user_info ()
#if defined (HAVE_GETPWENT)
endpwent ();
#endif
+ maybe_unmap_nscd ();
}
}

View File

@ -1,6 +1,15 @@
---
array.c | 2 +-
examples/loadables/tee.c | 3 ++-
hashlib.c | 2 +-
jobs.c | 9 +++++++++
sig.c | 4 ++--
sig.h | 4 ++--
6 files changed, 17 insertions(+), 7 deletions(-)
--- array.c
+++ array.c 2006-11-14 09:54:22.000000000 +0000
@@ -940,7 +940,7 @@ char *s, *sep;
+++ array.c 2016-09-16 10:37:12.179427118 +0000
@@ -946,7 +946,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
*/
@ -10,7 +19,7 @@
int
signal_is_trapped(s)
--- examples/loadables/tee.c
+++ examples/loadables/tee.c 2006-11-14 10:31:29.000000000 +0000
+++ examples/loadables/tee.c 2016-09-16 10:37:12.179427118 +0000
@@ -35,6 +35,7 @@
#include "bashansi.h"
@ -29,8 +38,8 @@
extern char *strerror ();
--- hashlib.c
+++ hashlib.c 2006-11-14 09:54:36.000000000 +0000
@@ -381,7 +381,7 @@ hash_pstats (table, name)
+++ hashlib.c 2016-09-16 10:37:12.179427118 +0000
@@ -382,7 +382,7 @@ hash_pstats (table, name)
HASH_TABLE *table, *ntable;
@ -40,8 +49,8 @@
int
signal_is_trapped (s)
--- jobs.c
+++ jobs.c 2001-05-02 16:20:31.000000000 +0000
@@ -1783,6 +1783,15 @@ make_child (command, async_p)
+++ jobs.c 2016-09-16 10:37:12.183427043 +0000
@@ -1947,6 +1947,15 @@ make_child (command, async_p)
pid_t mypid;
mypid = getpid ();
@ -58,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 2006-11-14 09:53:51.000000000 +0000
@@ -92,10 +92,10 @@ sigset_t top_level_mask;
+++ sig.c 2016-09-16 10:37:12.183427043 +0000
@@ -98,10 +98,10 @@ sigset_t top_level_mask;
#endif /* JOB_CONTROL */
/* When non-zero, we throw_to_top_level (). */
@ -73,8 +82,8 @@
#if defined (SIGWINCH)
static SigHandler *old_winch = (SigHandler *)SIG_DFL;
--- sig.h
+++ sig.h 2014-04-17 09:42:15.030235662 +0000
@@ -111,8 +111,8 @@ do { \
+++ sig.h 2016-09-16 10:37:12.183427043 +0000
@@ -109,8 +109,8 @@ do { \
extern volatile sig_atomic_t sigwinch_received;
extern volatile sig_atomic_t sigterm_received;

View File

@ -1,25 +0,0 @@
This is a backport from bash-4.4-rc1 and might help to avoid to run
onto a not existing child pointer, bnc#971410.
---
jobs.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- jobs.c
+++ jobs.c 2016-04-01 08:32:53.898981856 +0000
@@ -2564,12 +2564,12 @@ itrace("wait_for: blocking wait for %d r
of the last child in the pipeline is the significant one. If the command
or job was terminated by a signal, note that value also. */
termination_state = (job != NO_JOB) ? job_exit_status (job)
- : process_exit_status (child->status);
+ : (child ? process_exit_status (child->status) : EXECUTION_SUCCESS);
last_command_exit_signal = (job != NO_JOB) ? job_exit_signal (job)
- : process_exit_signal (child->status);
+ : (child ? process_exit_signal (child->status) : 0);
/* XXX */
- if ((job != NO_JOB && JOBSTATE (job) == JSTOPPED) || WIFSTOPPED (child->status))
+ if ((job != NO_JOB && JOBSTATE (job) == JSTOPPED) || (child && WIFSTOPPED (child->status)))
termination_state = 128 + WSTOPSIG (child->status);
if (job == NO_JOB || IS_JOBCONTROL (job))

View File

@ -1,3 +1,7 @@
---
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 @@

View File

@ -2,93 +2,30 @@
builtins/shopt.def | 2 ++
doc/bash.1 | 7 +++++++
shell.c | 2 ++
variables.c | 13 ++++++++++++-
4 files changed, 23 insertions(+), 1 deletion(-)
variables.c | 8 +++++++-
4 files changed, 18 insertions(+), 1 deletion(-)
--- shell.c
+++ shell.c 2014-09-25 20:11:51.000000000 +0000
@@ -230,6 +230,7 @@ int posixly_correct = 1; /* Non-zero mea
#else
int posixly_correct = 0; /* Non-zero means posix.2 superset. */
#endif
+int import_functions = IMPORT_FUNCTIONS_DEF; /* Import functions from environment */
/* Some long-winded argument names. These are obviously new. */
#define Int 1
@@ -249,6 +250,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 },
+ { "import-functions", Int, &import_functions, (char **)0x0 },
{ "noediting", Int, &no_line_editing, (char **)0x0 },
{ "noprofile", Int, &no_profile, (char **)0x0 },
{ "norc", Int, &no_rc, (char **)0x0 },
--- variables.c
+++ variables.c 2014-10-06 08:36:41.299837915 +0000
@@ -110,6 +110,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;
@@ -328,6 +329,7 @@ initialize_shell_variables (env, privmod
char *name, *string, *temp_string;
int c, char_index, string_index, string_length, ro;
SHELL_VAR *temp_var;
+ int skipped_import;
create_variable_tables ();
@@ -352,9 +354,12 @@ initialize_shell_variables (env, privmod
temp_var = (SHELL_VAR *)NULL;
+ skipped_import = 0;
+ reval:
+
/* If exported function, define it now. Don't import functions from
the environment in privileged mode. */
- if (privmode == 0 && read_but_dont_execute == 0 &&
+ if (skipped_import == 0 && privmode == 0 && read_but_dont_execute == 0 &&
STREQN (BASHFUNC_PREFIX, name, BASHFUNC_PREFLEN) &&
STREQ (BASHFUNC_SUFFIX, name + char_index - BASHFUNC_SUFFLEN) &&
STREQN ("() {", string, 4))
@@ -367,6 +372,12 @@ initialize_shell_variables (env, privmod
tname = name + BASHFUNC_PREFLEN; /* start of func name */
tname[namelen] = '\0'; /* now tname == func name */
+ if (!import_functions && !interactive_shell) {
+ skipped_import = 1;
+ report_error (_("Skipping importing function definition for `%s': --import-functions required."), tname);
+ goto reval;
+ }
+
string_length = strlen (string);
temp_string = (char *)xmalloc (namelen + string_length + 2);
--- builtins/shopt.def
+++ builtins/shopt.def 2014-09-30 11:58:14.000000000 +0000
+++ builtins/shopt.def 2016-09-14 08:57:33.723885627 +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)
extern int extended_glob;
@@ -192,6 +193,7 @@ static struct {
@@ -200,6 +201,7 @@ static struct {
{ "hostcomplete", &perform_hostname_completion, shopt_enable_hostname_completion },
#endif
{ "huponexit", &hup_on_exit, (shopt_set_func_t *)NULL },
+ { "import-functions", &import_functions, (shopt_set_func_t *)NULL },
{ "inherit_errexit", &inherit_errexit, (shopt_set_func_t *)NULL },
{ "interactive_comments", &interactive_comments, set_shellopts_after_change },
{ "lastpipe", &lastpipe_opt, (shopt_set_func_t *)NULL },
#if defined (HISTORY)
--- doc/bash.1
+++ doc/bash.1 2014-09-30 12:09:40.000000000 +0000
@@ -240,6 +240,13 @@ The shell becomes restricted (see
+++ doc/bash.1 2016-09-14 08:57:33.723885627 +0000
@@ -244,6 +244,13 @@ The shell becomes restricted (see
.B "RESTRICTED SHELL"
below).
.TP
@ -100,5 +37,54 @@
+builtin to do this.
+.TP
.B \-\-verbose
Equivalent to \fB\-v\fP.
Equivalent to \fB\-v\fP.
.TP
--- shell.c
+++ shell.c 2016-09-14 08:57:33.723885627 +0000
@@ -238,6 +238,7 @@ int posixly_correct = 1; /* Non-zero mea
#else
int posixly_correct = 0; /* Non-zero means posix.2 superset. */
#endif
+int import_functions = IMPORT_FUNCTIONS_DEF; /* Import functions from environment */
/* Some long-winded argument names. These are obviously new. */
#define Int 1
@@ -257,6 +258,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 },
+ { "import-functions", Int, &import_functions, (char **)0x0 },
{ "noediting", Int, &no_line_editing, (char **)0x0 },
{ "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
tname = name + BASHFUNC_PREFLEN; /* start of func name */
tname[namelen] = '\0'; /* now tname == func name */
+ if (!import_functions && !interactive_shell) {
+ report_error (_("Skipping importing function definition for `%s': --import-functions required."), tname);
+ goto reval;
+ }
+
string_length = strlen (string);
temp_string = (char *)xmalloc (namelen + string_length + 2);
@@ -392,7 +398,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 */
-
+ reval:
if (temp_var = find_function (tname))
{
VSETATTR (temp_var, (att_exported|att_imported));

View File

@ -1,76 +0,0 @@
--- examples/loadables/Makefile.in
+++ examples/loadables/Makefile.in 2014-04-17 10:10:12.450235258 +0000
@@ -28,6 +28,9 @@ includedir = @includedir@
datarootdir = @datarootdir@
+# Support an alternate destination root directory for package building
+DESTDIR =
+
topdir = @top_srcdir@
BUILD_DIR = @BUILD_DIR@
srcdir = @srcdir@
@@ -61,6 +64,16 @@ LIBINTL_H = @LIBINTL_H@
CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) $(CFLAGS)
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALLMODE= -m 0755
+INSTALLMODE2 = -m 0555
+
+Name = bash
+Version = @BASHVERS@
+
#
# These values are generated for configure by ${topdir}/support/shobj-conf.
# If your system is not supported by that script, but includes facilities for
@@ -79,20 +92,46 @@ INC = -I. -I.. -I$(topdir) -I$(topdir)/l
-I$(BASHINCDIR) -I$(BUILD_DIR) -I$(LIBBUILD) \
-I$(BUILD_DIR)/builtins $(INTL_INC)
+.SUFFIXES: .d
+.c.d:
+ $(SHOBJ_CC) $(SHOBJ_CFLAGS) $(CCFLAGS) $(INC) -MM -MT install-headers -MF $@ $<
+
.c.o:
$(SHOBJ_CC) $(SHOBJ_CFLAGS) $(CCFLAGS) $(INC) -c -o $@ $<
+SUPPORT_SRC = $(topdir)/support/
ALLPROG = print truefalse sleep pushd finfo logname basename dirname \
tty pathchk tee head mkdir rmdir printenv id whoami \
uname sync push ln unlink realpath strftime mypid
OTHERPROG = necho hello cat
+HEADERS =
all: $(SHOBJ_STATUS)
supported: $(ALLPROG)
others: $(OTHERPROG)
+dependlist: template.d
+-include template.d
+
+install-headers: HEADERS = $(sort $(filter %.h,$(realpath $^)))
+install-headers:
+ @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(includedir)/$(Name)/$(Version)/builtins
+ for head in $(subst $(realpath $(topdir))/,,$(HEADERS)) ; do \
+ case $$head in \
+ builtins/*) dest=$(DESTDIR)$(includedir)/$(Name)/$(Version)/builtins ;; \
+ *) dest=$(DESTDIR)$(includedir)/$(Name)/$(Version) ;; \
+ esac; \
+ $(INSTALL_DATA) -t $$dest $(topdir)/$$head; \
+ done
+
+install-plugins: $(ALLPROG)
+ @${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(libdir)/$(Name)/$(Version)
+ for plugin in $(ALLPROG) ; do \
+ $(INSTALL) $$plugin $(DESTDIR)$(libdir)/$(Name)/$(Version)/$$plugin.so ; \
+ done
+
unsupported:
@echo "Your system (${host_os}) is not supported by the"
@echo "${topdir}/support/shobj-conf script."

View File

@ -1,9 +1,9 @@
This change was originally part of patch bash-4.3-loadables.dif.
However the loadables build just fine with this change, so it may
still be needed but does not belong to that patch.
---
shell.h | 3 +++
1 file changed, 3 insertions(+)
--- shell.h.orig
+++ shell.h
--- shell.h
+++ shell.h 2016-03-08 10:22:38.169929522 +0000
@@ -22,6 +22,9 @@
#include "config.h"
#endif

View File

@ -1,26 +1,16 @@
--- examples/loadables/basename.c
+++ examples/loadables/basename.c
@@ -31,6 +31,7 @@
#include "shell.h"
#include "common.h"
+int
basename_builtin (list)
WORD_LIST *list;
{
--- examples/loadables/dirname.c
+++ examples/loadables/dirname.c
@@ -31,6 +31,7 @@
#include "shell.h"
#include "common.h"
+int
dirname_builtin (list)
WORD_LIST *list;
{
---
examples/loadables/finfo.c | 11 +++++------
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(-)
--- examples/loadables/finfo.c
+++ examples/loadables/finfo.c
@@ -99,7 +99,7 @@ int argc;
+++ examples/loadables/finfo.c 2016-03-08 12:24:51.061423424 +0000
@@ -102,7 +102,7 @@ int argc;
char **argv;
{
register int i;
@ -29,25 +19,7 @@
sh_optind = 0; /* XXX */
prog = base_pathname(argv[0]);
@@ -192,7 +192,7 @@ int m;
return (m & (S_IRWXU|S_IRWXG|S_IRWXO|S_ISUID|S_ISGID));
}
-static int
+static void
perms(m)
int m;
{
@@ -236,7 +236,7 @@ int m;
printf ("u=%s,g=%s,o=%s", ubits, gbits, obits);
}
-static int
+static void
printmode(mode)
int mode;
{
@@ -331,13 +331,13 @@ int flags;
@@ -334,13 +334,13 @@ int flags;
else
printf("%ld\n", st->st_ctime);
} else if (flags & OPT_DEV)
@ -65,7 +37,7 @@
else if (flags & OPT_LNKNAM) {
#ifdef S_ISLNK
b = xmalloc(4096);
@@ -387,7 +387,6 @@ finfo_builtin(list)
@@ -390,7 +390,6 @@ finfo_builtin(list)
{
int c, r;
char **v;
@ -74,19 +46,8 @@
v = make_builtin_argv (list, &c);
r = finfo_main (c, v);
--- examples/loadables/head.c
+++ examples/loadables/head.c
@@ -88,8 +88,10 @@ file_head (fp, cnt)
break;
}
}
+ return EXECUTION_SUCCESS;
}
+int
head_builtin (list)
WORD_LIST *list;
{
@@ -97,8 +99,6 @@ head_builtin (list)
+++ examples/loadables/head.c 2016-03-08 12:24:51.061423424 +0000
@@ -99,8 +99,6 @@ head_builtin (list)
WORD_LIST *l;
FILE *fp;
@ -96,7 +57,7 @@
reset_internal_getopt ();
--- examples/loadables/id.c
+++ examples/loadables/id.c
+++ examples/loadables/id.c 2016-03-08 12:24:51.061423424 +0000
@@ -64,8 +64,6 @@ static int id_flags;
static uid_t ruid, euid;
static gid_t rgid, egid;
@ -106,38 +67,9 @@
static int inituser ();
static int id_pruser ();
--- examples/loadables/ln.c
+++ examples/loadables/ln.c
@@ -50,6 +50,7 @@ typedef int unix_link_syscall_t __P((con
static unix_link_syscall_t *linkfn;
static int dolink ();
+int
ln_builtin (list)
WORD_LIST *list;
{
--- examples/loadables/logname.c
+++ examples/loadables/logname.c
@@ -35,6 +35,7 @@
extern int errno;
#endif
+int
logname_builtin (list)
WORD_LIST *list;
{
--- examples/loadables/mkdir.c
+++ examples/loadables/mkdir.c
@@ -52,7 +52,7 @@ int
mkdir_builtin (list)
WORD_LIST *list;
{
- int opt, pflag, omode, rval, octal, nmode, parent_mode, um;
+ int opt, pflag, omode, rval, octal, nmode, parent_mode;
char *mode;
WORD_LIST *l;
@@ -169,7 +169,7 @@ make_path (path, nmode, parent_mode)
+++ examples/loadables/mkdir.c 2016-03-08 12:24:51.061423424 +0000
@@ -167,7 +167,7 @@ make_path (path, nmode, parent_mode)
while (*p == '/')
p++;
@ -147,16 +79,8 @@
*p = '\0';
if (stat (npath, &sb) != 0)
--- examples/loadables/pathchk.c
+++ examples/loadables/pathchk.c
@@ -98,6 +98,7 @@ extern char *strerror ();
static int validate_path ();
+int
pathchk_builtin (list)
WORD_LIST *list;
{
@@ -290,10 +291,8 @@ validate_path (path, portability)
+++ examples/loadables/pathchk.c 2016-03-08 12:24:51.061423424 +0000
@@ -291,10 +291,8 @@ validate_path (path, portability)
if (*path == '\0')
return 0;
@ -167,17 +91,8 @@
/* Figure out the parent of the first element in PATH. */
parent = xstrdup (*path == '/' ? "/" : ".");
@@ -370,7 +369,7 @@ validate_path (path, portability)
free (parent);
if (strlen (path) > path_max)
{
- builtin_error ("path `%s' has length %d; exceeds limit of %d",
+ builtin_error ("path `%s' has length %zu; exceeds limit of %d",
path, strlen (path), path_max);
return 1;
}
--- examples/loadables/print.c
+++ examples/loadables/print.c
+++ examples/loadables/print.c 2016-03-08 12:24:51.061423424 +0000
@@ -77,7 +77,7 @@ print_builtin (list)
{
int c, r, nflag, raw, ofd, sflag;
@ -187,47 +102,9 @@
WORD_LIST *l;
nflag = raw = sflag = 0;
--- examples/loadables/realpath.c
+++ examples/loadables/realpath.c
@@ -60,6 +60,7 @@ extern int errno;
extern char *sh_realpath();
+int
realpath_builtin(list)
WORD_LIST *list;
{
--- examples/loadables/rmdir.c
+++ examples/loadables/rmdir.c
@@ -32,6 +32,7 @@
extern int errno;
#endif
+int
rmdir_builtin (list)
WORD_LIST *list;
{
--- examples/loadables/sync.c
+++ examples/loadables/sync.c
@@ -28,6 +28,7 @@
#include "shell.h"
#include "bashgetopt.h"
+int
sync_builtin (list)
WORD_LIST *list;
{
--- examples/loadables/tee.c
+++ examples/loadables/tee.c
@@ -60,6 +60,7 @@ extern int interrupt_immediately;
extern char *strerror ();
+int
tee_builtin (list)
WORD_LIST *list;
{
@@ -68,8 +69,6 @@ tee_builtin (list)
+++ examples/loadables/tee.c 2016-03-08 12:24:51.061423424 +0000
@@ -70,8 +70,6 @@ tee_builtin (list)
FLIST *fl;
char *buf, *bp;
@ -236,81 +113,3 @@
reset_internal_getopt ();
append = nointr = 0;
tee_flist = (FLIST *)NULL;
--- examples/loadables/truefalse.c
+++ examples/loadables/truefalse.c
@@ -25,26 +25,26 @@
#include "builtins.h"
#include "common.h"
-true_builtin (list)
+int true_builtin (list)
WORD_LIST *list;
{
return EXECUTION_SUCCESS;
}
-false_builtin (list)
+int false_builtin (list)
WORD_LIST *list;
{
return EXECUTION_FAILURE;
}
-static char *true_doc[] = {
+char * const true_doc[] = {
"Exit successfully.",
"",
"Return a successful result.",
(char *)NULL
};
-static char *false_doc[] = {
+char * const false_doc[] = {
"Exit unsuccessfully.",
"",
"Return an unsuccessful result.",
--- examples/loadables/tty.c
+++ examples/loadables/tty.c
@@ -30,6 +30,7 @@
extern char *ttyname ();
+int
tty_builtin (list)
WORD_LIST *list;
{
--- examples/loadables/uname.c
+++ examples/loadables/uname.c
@@ -63,10 +63,11 @@ static void uprint();
static int uname_flags;
+int
uname_builtin (list)
WORD_LIST *list;
{
- int opt, r;
+ int opt;
struct utsname uninfo;
uname_flags = 0;
--- examples/loadables/unlink.c
+++ examples/loadables/unlink.c
@@ -38,6 +38,7 @@
extern int errno;
#endif
+int
unlink_builtin (list)
WORD_LIST *list;
{
--- examples/loadables/whoami.c
+++ examples/loadables/whoami.c
@@ -28,6 +28,7 @@
#include "bashgetopt.h"
#include "common.h"
+int
whoami_builtin (list)
WORD_LIST *list;
{

BIN
bash-4.3-patches.tar.bz2 (Stored with Git LFS)

Binary file not shown.

View File

@ -3,7 +3,7 @@
1 file changed, 43 insertions(+)
--- lib/sh/tmpfile.c
+++ lib/sh/tmpfile.c 2015-10-19 13:35:30.869518731 +0000
+++ lib/sh/tmpfile.c 2016-07-14 12:22:06.681051058 +0000
@@ -36,6 +36,14 @@
#include <stdio.h>
#include <errno.h>
@ -19,7 +19,7 @@
#include <shell.h>
#ifndef errno
@@ -60,6 +68,8 @@ static unsigned long filenum = 1L;
@@ -65,6 +73,8 @@ static unsigned long filenum = 1L;
static char *
get_sys_tmpdir ()
{
@ -28,7 +28,7 @@
if (sys_tmpdir)
return sys_tmpdir;
@@ -86,6 +96,31 @@ get_sys_tmpdir ()
@@ -91,6 +101,31 @@ get_sys_tmpdir ()
return sys_tmpdir;
}
@ -60,15 +60,15 @@
static char *
get_tmpdir (flags)
int flags;
@@ -164,6 +199,7 @@ sh_mktmpfd (nameroot, flags, namep)
@@ -188,6 +223,7 @@ sh_mktmpfd (nameroot, flags, namep)
int fd, tdlen;
filename = (char *)xmalloc (PATH_MAX + 1);
+enospace:
tdir = get_tmpdir (flags);
tdlen = strlen (tdir);
@@ -177,6 +213,10 @@ sh_mktmpfd (nameroot, flags, namep)
@@ -201,6 +237,10 @@ sh_mktmpfd (nameroot, flags, namep)
free (filename);
filename = NULL;
}
@ -79,7 +79,7 @@
if (namep)
*namep = filename;
return fd;
@@ -194,6 +234,9 @@ sh_mktmpfd (nameroot, flags, namep)
@@ -219,6 +259,9 @@ sh_mktmpfd (nameroot, flags, namep)
}
while (fd < 0 && errno == EEXIST);

View File

@ -2,9 +2,12 @@ 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
+++ support/texi2html 2016-03-08 11:49:40.596622296 +0000
@@ -4855,9 +4855,9 @@ sub update_sec_num {
my $ret;

View File

@ -1,6 +1,10 @@
---
sig.c | 6 ++++++
1 file changed, 6 insertions(+)
--- sig.c
+++ sig.c 2014-04-17 10:02:57.078235890 +0000
@@ -722,10 +722,16 @@ set_signal_handler (sig, handler)
+++ sig.c 2016-09-14 08:54:54.158863424 +0000
@@ -738,10 +738,16 @@ set_signal_handler (sig, handler)
if (sig == SIGCHLD)
act.sa_flags |= SA_RESTART; /* XXX */
#endif

View File

@ -1,6 +1,10 @@
---
config-top.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- config-top.h
+++ config-top.h 2014-04-17 10:19:39.698805960 +0000
@@ -122,7 +122,7 @@
+++ config-top.h 2016-09-14 08:55:30.170191343 +0000
@@ -130,7 +130,7 @@
/* Define to 0 if you want the checkwinsize option off by default, 1 if you
want it on. */

BIN
bash-4.3.tar.gz (Stored with Git LFS)

Binary file not shown.

BIN
bash-4.4-patches.tar.bz2 (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -1,6 +1,22 @@
---
config-top.h | 16 ++++++++++------
doc/Makefile.in | 2 +-
doc/bash.1 | 7 +++++--
general.h | 3 +++
parse.y | 2 +-
shell.c | 4 +++-
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 +-
13 files changed, 35 insertions(+), 21 deletions(-)
--- config-top.h
+++ config-top.h 2014-04-17 10:41:21.918735368 +0000
@@ -56,17 +56,21 @@
+++ config-top.h 2016-09-16 10:38:13.570285185 +0000
@@ -60,17 +60,21 @@
due to EPIPE. */
/* #define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS */
@ -24,8 +40,8 @@
#endif
/* Default primary and secondary prompt strings. */
@@ -80,20 +84,20 @@
#define KSH_COMPATIBLE_SELECT
@@ -87,20 +91,20 @@
#define DEFAULT_BASHRC "~/.bashrc"
/* System-wide .bashrc file for interactive shells. */
-/* #define SYS_BASHRC "/etc/bash.bashrc" */
@ -49,31 +65,20 @@
/* Define if you want the case-capitalizing operators (~[~]) and the
`capcase' variable attribute (declare -c). */
@@ -132,3 +136,10 @@
/* Define to 1 if you want to be able to export indexed arrays to processes
using the foo=([0]=one [1]=two) and so on */
/* #define ARRAY_EXPORT 1 */
+
+#ifndef USE_MKTEMP
+# define USE_MKTEMP
+#endif
+#ifndef USE_MKSTEMP
+# define USE_MKSTEMP
+#endif
--- doc/Makefile.in
+++ doc/Makefile.in 2006-03-27 12:15:25.000000000 +0000
@@ -146,7 +146,7 @@ BASHREF_FILES = $(srcdir)/bashref.texi $
${RM} $@
-${DVIPS} $<
+++ doc/Makefile.in 2016-09-16 10:38:13.570285185 +0000
@@ -154,7 +154,7 @@ BASHREF_FILES = $(srcdir)/bashref.texi $
# $(RM) $@
# -${TEXI2PDF} $<
-all: ps info dvi text html
+all: info html
-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 2006-03-27 12:15:25.000000000 +0000
@@ -5080,8 +5080,8 @@ file (the \fIinputrc\fP file).
+++ doc/bash.1 2016-09-16 10:38:13.570285185 +0000
@@ -5253,8 +5253,8 @@ file (the \fIinputrc\fP file).
The name of this file is taken from the value of the
.SM
.B INPUTRC
@ -84,7 +89,7 @@
When a program which uses the readline library starts up, the
initialization file is read, and the key bindings and variables
are set.
@@ -10266,6 +10266,9 @@ The individual login shell cleanup file,
@@ -10586,6 +10586,9 @@ The individual login shell cleanup file,
.TP
.FN ~/.inputrc
Individual \fIreadline\fP initialization file
@ -95,7 +100,7 @@
.SH AUTHORS
Brian Fox, Free Software Foundation
--- general.h
+++ general.h 2006-03-27 12:15:25.000000000 +0000
+++ general.h 2016-09-16 10:38:17.614209958 +0000
@@ -21,10 +21,13 @@
#if !defined (_GENERAL_H_)
#define _GENERAL_H_
@ -111,8 +116,8 @@
#if defined (HAVE_SYS_RESOURCE_H) && defined (RLIMTYPE)
# if defined (HAVE_SYS_TIME_H)
--- parse.y
+++ parse.y 2006-03-27 12:15:25.000000000 +0000
@@ -1413,7 +1413,7 @@ input_file_descriptor ()
+++ parse.y 2016-09-16 10:38:17.614209958 +0000
@@ -1426,7 +1426,7 @@ input_file_descriptor ()
#if defined (READLINE)
char *current_readline_prompt = (char *)NULL;
@ -122,8 +127,16 @@
static int
--- shell.c
+++ shell.c 2006-03-27 12:15:25.000000000 +0000
@@ -492,7 +492,7 @@ main (argc, argv, env)
+++ shell.c 2016-09-16 10:38:17.614209958 +0000
@@ -45,6 +45,7 @@
#if defined (HAVE_UNISTD_H)
# include <sys/types.h>
# include <unistd.h>
+# include <grp.h>
#endif
#include "bashintl.h"
@@ -501,7 +502,7 @@ main (argc, argv, env)
if (dump_translatable_strings)
read_but_dont_execute = 1;
@ -132,8 +145,24 @@
disable_priv_mode ();
/* Need to get the argument to a -c option processed in the
@@ -1277,6 +1278,7 @@ disable_priv_mode ()
{
int e;
+ setgroups(0, NULL);
if (setuid (current_user.uid) < 0)
{
e = errno;
--- support/bashbug.sh
+++ support/bashbug.sh 2016-09-16 10:38:17.614209958 +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 2011-11-25 17:07:29.000000000 +0000
+++ support/man2html.c 2016-09-16 10:38:17.618209884 +0000
@@ -78,6 +78,7 @@
#include <time.h>
#include <sys/time.h>
@ -143,7 +172,7 @@
#define NULL_TERMINATED(n) ((n) + 1)
--- support/rlvers.sh
+++ support/rlvers.sh 2006-03-27 12:15:25.000000000 +0000
+++ support/rlvers.sh 2016-09-16 10:38:17.618209884 +0000
@@ -27,10 +27,10 @@ TDIR=$TMPDIR/rlvers
# defaults
@ -159,7 +188,7 @@
# cannot rely on the presence of getopts
while [ $# -gt 0 ]; do
--- support/shobj-conf
+++ support/shobj-conf 2006-09-22 14:11:58.000000000 +0000
+++ support/shobj-conf 2016-09-16 10:38:17.618209884 +0000
@@ -126,10 +126,11 @@ sunos5*|solaris2*)
linux*-*|gnu*-*|k*bsd*-gnu-*|freebsd*-gentoo)
SHOBJ_CFLAGS=-fPIC
@ -174,57 +203,32 @@
;;
freebsd2*)
--- tests/glob.tests
+++ tests/glob.tests 2016-09-16 10:38:17.618209884 +0000
@@ -12,8 +12,8 @@ ${THIS_SH} ./glob1.sub
MYDIR=$PWD # save where we are
-TESTDIR=/tmp/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 2009-08-26 11:13:13.000000000 +0000
+++ tests/run-intl 2016-09-16 10:38:17.618209884 +0000
@@ -5,4 +5,4 @@ echo "warning: some of these tests will
echo "warning: locales installed on your system." >&2
echo "warning: please ignore any differences consisting only of white space" >&2
${THIS_SH} ./intl.tests > /tmp/xx
-diff $AFLAG /tmp/xx intl.right && rm -f /tmp/xx
+diff -w $AFLAG /tmp/xx intl.right && rm -f /tmp/xx
${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 2009-08-26 11:13:13.000000000 +0000
+++ tests/run-read 2016-09-16 10:38:17.618209884 +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 > /tmp/xx 2>&1
-diff /tmp/xx read.right && rm -f /tmp/xx
+diff -w /tmp/xx read.right && rm -f /tmp/xx
--- execute_cmd.c
+++ execute_cmd.c 2014-04-17 11:56:03.742234753 +0000
@@ -5225,7 +5225,8 @@ shell_execve (command, args, env)
run it for some reason. See why. */
#if defined (HAVE_HASH_BANG_EXEC)
READ_SAMPLE_BUF (command, sample, sample_len);
- sample[sample_len - 1] = '\0';
+ if (sample_len > 0)
+ sample[sample_len - 1] = '\0';
if (sample_len > 2 && sample[0] == '#' && sample[1] == '!')
{
char *interp;
--- support/bashbug.sh
+++ support/bashbug.sh 2014-04-17 12:01:05.678235918 +0000
@@ -1,4 +1,4 @@
-#!/bin/sh -
+#!/bin/bash -
#
# bashbug - create a bug report and mail it to the bug address
#
--- shell.c
+++ shell.c 2014-04-17 12:19:01.758235040 +0000
@@ -42,6 +42,7 @@
#if defined (HAVE_UNISTD_H)
# include <sys/types.h>
# include <unistd.h>
+# include <grp.h>
#endif
#include "bashintl.h"
@@ -1226,6 +1227,7 @@ uidget ()
void
disable_priv_mode ()
{
+ setgroups(0, NULL);
setuid (current_user.uid);
setgid (current_user.gid);
current_user.euid = current_user.uid;
${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}

BIN
bash-4.4.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -1,3 +1,30 @@
-------------------------------------------------------------------
Fri Sep 16 10:41:30 UTC 2016 - werner@suse.de
- Update bash 4.4 final
* Latest bug fixes since 4.4 rc2
- Update readline 7.0 final
* Latest bug fixes since 7.0 rc2
* New application-callable function: rl_pending_signal(): returns the signal
number of any signal readline has caught but not yet handled.
* New application-settable variable: rl_persistent_signal_handlers: if set
to a non-zero value, readline will enable the readline-6.2 signal handler
behavior in callback mode: handlers are installed when
rl_callback_handler_install is called and removed removed when a complete
line has been read.
- Drop patch bash-4.3-async-bnc971410.dif as this one is part of 4.4
- Drop patch bash-3.2-longjmp.dif as now long time be fixed
- Drop patch bash-4.3-headers.dif as loadables now simply work
- Drop readline-6.1-wrap.patch as this seems to be fixed
- Disable patch bash-4.0-async-bnc523667.dif for now as it seems to be fixed
in an other way
-------------------------------------------------------------------
Wed Sep 14 09:00:14 UTC 2016 - werner@suse.de
- Update bash 4.4 rc2 -- Bugfixes
- Update readline 7.0 rc2 -- Bugfixes
-------------------------------------------------------------------
Mon Aug 1 13:47:05 UTC 2016 - werner@suse.de
@ -6,28 +33,166 @@ Mon Aug 1 13:47:05 UTC 2016 - werner@suse.de
Therefore modify patch bash-4.1-bash.bashrc.dif (bsc#959755)
-------------------------------------------------------------------
Tue Jun 28 09:27:24 UTC 2016 - werner@suse.de
Thu Jul 14 12:43:08 UTC 2016 - werner@suse.de
- Add upstream patch bash43-046
An incorrect conversion from an indexed to associative array can
result in a core dump.
- Add upstream patch bash43-045
If a file open attempted as part of a redirection fails because it
is interrupted by a signal, the shell needs to process any pending
traps to allow the redirection to be canceled.
- Add upstream patch bash43-044
A typo prevents the `compat42' shopt option from working as intended.
- Add upstream patch bash43-043
When the lastpipe option is enabled, the last component can contain
nested pipelines and cause a segmentation fault under certain
circumestances.
- Update bash 4.4 beta 2
* Value conversions (arithmetic expansions, case modification, etc.) now
happen when assigning elements of an array using compound assignment.
* There is a new option settable in config-top.h that makes multiple
directory arguments to `cd' a fatal error.
* Bash now uses mktemp() when creating internal temporary files; it produces
a warning at build time on many Linux systems.
- Update to readline library 7.0 beta 2 (not enabled as not standalone)
* The default binding for ^W in vi mode now uses word boundaries specified
by Posix (vi-unix-word-rubout is bindable command name).
* rl_clear_visible_line: new application-callable function; clears all
screen lines occupied by the current visible readline line.
* rl_tty_set_echoing: application-callable function that controls whether
or not readline thinks it is echoing terminal output.
* Handle >| and strings of digits preceding and following redirection
specifications as single tokens when tokenizing the line for history
expansion.
* Fixed a bug with displaying completions when the prefix display length
is greater than the length of the completions to be displayed.
* The :p history modifier now applies to the entire line, so any expansion
specifying :p causes the line to be printed instead of expanded.
-------------------------------------------------------------------
Fri Apr 1 08:38:48 UTC 2016 - werner@suse.de
Tue Mar 8 14:49:41 UTC 2016 - werner@suse.de
- Add patch bash-4.3-async-bnc971410.dif
this is a backport from bash-4.4-rc1 and might help to avoid to
run onto a not existing child pointer, bnc#971410.
- Update bash 4.4 release candidate 1
* There is now a settable configuration #define that will cause the shell
to exit if the shell is running setuid without the -p option and setuid
to the real uid fails.
* Command and process substitutions now turn off the `-v' option when
executing, as other shells seem to do.
* The default value for the `checkhash' shell option may now be set at
compile time with a #define.
* The `mapfile' builtin now has a -d option to use an arbitrary character
as the record delimiter, and a -t option to strip the delimiter as
supplied with -d.
* The maximum number of nested recursive calls to `eval' is now settable in
config-top.h; the default is no limit.
* The `-p' option to declare and similar builtins will display attributes for
named variables even when those variables have not been assigned values
(which are technically unset).
* The maximum number of nested recursive calls to `source' is now settable
in config-top.h; the default is no limit.
* All builtin commands recognize the `--help' option and print a usage
summary.
* Bash does not allow function names containing `/' and `=' to be exported.
* The `ulimit' builtin has new -k (kqueues) and -P (pseudoterminals) options.
* The shell now allows `time ; othercommand' to time null commands.
* There is a new `--enable-function-import' configuration option to allow
importing shell functions from the environment; import is enabled by
default.
* `printf -v var ""' will now set `var' to the empty string, as if `var=""'
had been executed.
* GLOBIGNORE, the pattern substitution word expansion, and programmable
completion match filtering now honor the value of the `nocasematch' option.
* There is a new ${parameter@spec} family of operators to transform the
value of `parameter'.
* Bash no longer attempts to perform compound assignment if a variable on the
rhs of an assignment statement argument to `declare' has the form of a
compound assignment (e.g., w='(word)' ; declare foo=$w); compound
assignments are accepted if the variable was already declared as an array,
but with a warning.
* The declare builtin no longer displays array variables using the compound
assignment syntax with quotes; that will generate warnings when re-used as
input, and isn't necessary.
* Executing the rhs of && and || will no longer cause the shell to fork if
it's not necessary.
* The `local' builtin takes a new argument: `-', which will cause it to save
and the single-letter shell options and restore their previous values at
function return.
* `complete' and `compgen' have a new `-o nosort' option, which forces
readline to not sort the completion matches.
* Bash now allows waiting for the most recent process substitution, since it
appears as $!.
* The `unset' builtin now unsets a scalar variable if it is subscripted with
a `0', analogous to the ${var[0]} expansion.
* `set -i' is no longer valid, as in other shells.
* BASH_SUBSHELL is now updated for process substitution and group commands
in pipelines, and is available with the same value when running any exit
trap.
* Bash now checks $INSIDE_EMACS as well as $EMACS when deciding whether or
not bash is being run in a GNU Emacs shell window.
* Bash now treats SIGINT received when running a non-builtin command in a
loop the way it has traditionally treated running a builtin command:
running any trap handler and breaking out of the loop.
* New variable: EXECIGNORE; a colon-separate list of patterns that will
cause matching filenames to be ignored when searching for commands.
* Aliases whose value ends in a shell metacharacter now expand in a way to
allow them to be `pasted' to the next token, which can potentially change
the meaning of a command (e.g., turning `&' into `&&').
* `make install' now installs the example loadable builtins and a set of
bash headers to use when developing new loadable builtins.
* `enable -f' now attempts to call functions named BUILTIN_builtin_load when
loading BUILTIN, and BUILTIN_builtin_unload when deleting it. This allows
loadable builtins to run initialization and cleanup code.
* There is a new BASH_LOADABLES_PATH variable containing a list of directories
where the `enable -f' command looks for shared objects containing loadable
builtins.
* The `complete_fullquote' option to `shopt' changes filename completion to
quote all shell metacharacters in filenames and directory names.
* The `kill' builtin now has a `-L' option, equivalent to `-l', for
compatibility with Linux standalone versions of kill.
* BASH_COMPAT and FUNCNEST can be inherited and set from the shell's initial
environment.
* inherit_errexit: a new `shopt' option that, when set, causes command
substitutions to inherit the -e option. By default, those subshells disable
-e. It's enabled as part of turning on posix mode.
* New prompt string: PS0. Expanded and displayed by interactive shells after
reading a complete command but before executing it.
* Interactive shells now behave as if SIGTSTP/SIGTTIN/SIGTTOU are set to SIG_DFL
when the shell is started, so they are set to SIG_DFL in child processes.
* Posix-mode shells now allow double quotes to quote the history expansion
character.
* OLDPWD can be inherited from the environment if it names a directory.
* Shells running as root no longer inherit PS4 from the environment, closing a
security hole involving PS4 expansion performing command substitution.
* If executing an implicit `cd' when the `autocd' option is set, bash will now
invoke a function named `cd' if one exists before executing the `cd' builtin.
- Update to readline library 7.0 release candidate 1
* The history truncation code now uses the same error recovery mechansim as
the history writing code, and restores the old version of the history file
on error. The error recovery mechanism handles symlinked history files.
* There is a new bindable variable, `enable-bracketed-paste', which enables
support for a terminal's bracketed paste mode.
* The editing mode indicators can now be strings and are user-settable
(new `emacs-mode-string', `vi-cmd-mode-string' and `vi-ins-mode-string'
variables). Mode strings can contain invisible character sequences.
Setting mode strings to null strings restores the defaults.
* Prompt expansion adds the mode string to the last line of a multi-line
prompt (one with embedded newlines).
* There is a new bindable variable, `colored-completion-prefix', which, if
set, causes the common prefix of a set of possible completions to be
displayed in color.
* There is a new bindable command `vi-yank-pop', a vi-mode version of emacs-
mode yank-pop.
* The redisplay code underwent several efficiency improvements for multibyte
locales.
* The insert-char function attempts to batch-insert all pending typeahead
that maps to self-insert, as long as it is coming from the terminal.
* rl_callback_sigcleanup: a new application function that can clean up and
unset any state set by readline's callback mode. Intended to be used
after a signal.
* If an incremental search string has its last character removed with DEL, the
resulting empty search string no longer matches the previous line.
* If readline reads a history file that begins with `#' (or the value of
the history comment character) and has enabled history timestamps, the history
entries are assumed to be delimited by timestamps. This allows multi-line
history entries.
* Readline now throws an error if it parses a key binding without a terminating
`:' or whitespace.
- Remove patches which are upstream solved
bash-3.2-longjmp.dif
bash-4.3-headers.dif
readline-6.1-wrap.patch
- Rename patches
bash-4.3.dif become bash-4.4.dif
readline-6.3.dif become readline-7.0.dif
- Refresh other patches as well
-------------------------------------------------------------------
Mon Oct 19 13:38:58 UTC 2015 - werner@suse.de

102
bash.spec
View File

@ -20,38 +20,36 @@
Name: bash
BuildRequires: audit-devel
BuildRequires: bison
%if %suse_version > 1020
BuildRequires: autoconf
BuildRequires: bison
BuildRequires: fdupes
%endif
%if %suse_version > 1220
BuildRequires: makeinfo
%endif
BuildRequires: ncurses-devel
BuildRequires: patchutils
BuildRequires: pkg-config
BuildRequires: screen
BuildRequires: sed
%define bash_vers 4.3
%define rl_vers 6.3
%define extend ""
%if %suse_version > 1020
%define bash_vers 4.4
%define rl_vers 7.0
%define bextend %nil
%define rextend %nil
Recommends: bash-lang = %bash_vers
# The package bash-completion is a source of
# bugs which will hit at most this package
#Recommends: bash-completion
Suggests: command-not-found
Recommends: bash-doc = %bash_vers
%endif
Version: %{bash_vers}
Version: 4.4
Release: 0
Summary: The GNU Bourne-Again Shell
License: GPL-3.0+
Group: System/Shells
Url: http://www.gnu.org/software/bash/bash.html
# Git: http://git.savannah.gnu.org/cgit/bash.git
Source0: ftp://ftp.gnu.org/gnu/bash/bash-%{bash_vers}.tar.gz
Source1: ftp://ftp.gnu.org/gnu/readline/readline-%{rl_vers}.tar.gz
Source0: ftp://ftp.gnu.org/gnu/bash/bash-%{bash_vers}%{bextend}.tar.gz
Source1: ftp://ftp.gnu.org/gnu/readline/readline-%{rl_vers}%{rextend}.tar.gz
Source2: bash-%{bash_vers}-patches.tar.bz2
Source3: readline-%{rl_vers}-patches.tar.bz2
Source4: run-tests
@ -70,8 +68,10 @@ Patch2: bash-4.0-security.patch
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
# Is this fixed meanwhile?
Patch8: bash-4.0-async-bnc523667.dif
Patch9: bash-4.3-include-unistd.dif
Patch10: bash-3.2-printf.patch
@ -80,14 +80,11 @@ Patch12: bash-4.1-completion.dif
Patch13: bash-4.2-nscdunmap.dif
Patch14: bash-4.3-sigrestart.patch
# PATCH-FIX-UPSTREAM bnc#382214 -- disabled due bnc#806628 by -DBNC382214=0
Patch15: bash-3.2-longjmp.dif
Patch16: bash-4.0-setlocale.dif
Patch17: bash-4.3-headers.dif
# PATCH-EXTEND-SUSE bnc#828877 -- xterm resizing does not pass to all sub clients
Patch18: bash-4.3-winch.dif
Patch20: readline-%{rl_vers}.dif
Patch21: readline-6.3-input.dif
Patch22: readline-6.1-wrap.patch
Patch23: readline-5.2-conf.patch
Patch24: readline-6.2-metamode.patch
Patch25: readline-6.2-endpw.dif
@ -101,8 +98,6 @@ Patch47: bash-4.3-perl522.patch
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
# PATCH-FIX-UPSTREAM bnc#971410 -- bash script teminates unexpectedly throwing backtrace
Patch50: bash-4.3-async-bnc971410.dif
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%global _sysconfdir /etc
%global _incdir %{_includedir}
@ -124,9 +119,7 @@ Provides: bash:%{_infodir}/bash.info.gz
PreReq: %install_info_prereq
Version: %{bash_vers}
Release: 0
%if %suse_version > 1120
BuildArch: noarch
%endif
%description -n bash-doc
This package contains the documentation for using the bourne shell
@ -146,7 +139,6 @@ Requires: bash = %{bash_vers}
Provides translations to the package bash
%endif
%if 0%suse_version >= 1020
%package -n bash-devel
Summary: Include Files mandatory for Development of bash loadable builtins
Group: Development/Languages/C and C++
@ -157,7 +149,6 @@ Release: 0
This package contains the C header files for writing loadable new
builtins for the interpreter Bash. Use -I /usr/include/bash/<version>
on the compilers command line.
%endif
%package -n bash-loadables
Summary: Loadable bash builtins
@ -219,24 +210,22 @@ unlink Remove a directory entry.
whoami Print out username of current user.
%package -n libreadline6
%package -n libreadline7
Summary: The Readline Library
Group: System/Libraries
Provides: bash:/%{_lib}/libreadline.so.%{rl_major}
Version: %{rl_vers}
Release: 0
%if 0%suse_version > 1020
Recommends: readline-doc = %{version}
%endif
# bug437293
%ifarch ppc64
Obsoletes: readline-64bit
%endif
#
Provides: readline = %{rl_vers}
Obsoletes: readline <= 6.2
Obsoletes: readline <= 6.3
%description -n libreadline6
%description -n libreadline7
The readline library is used by the Bourne Again Shell (bash, the
standard command interpreter) for easy editing of command lines. This
includes history and search functionality.
@ -247,11 +236,9 @@ Group: Development/Libraries/C and C++
Provides: bash:%{_libdir}/libreadline.a
Version: %{rl_vers}
Release: 0
Requires: libreadline6 = %{rl_vers}
Requires: libreadline7 = %{rl_vers}
Requires: ncurses-devel
%if 0%suse_version > 1020
Recommends: readline-doc = %{rl_vers}
%endif
# bug437293
%ifarch ppc64
Obsoletes: readline-devel-64bit
@ -269,16 +256,14 @@ Provides: readline:%{_infodir}/readline.info.gz
PreReq: %install_info_prereq
Version: %{rl_vers}
Release: 0
%if 0%suse_version > 1120
BuildArch: noarch
%endif
%description -n readline-doc
This package contains the documentation for using the readline library
as well as programming with the interface of the readline library.
%prep
%setup -q -n bash-%{bash_vers}%{extend} -b1 -b2 -b3
%setup -q -n bash-%{bash_vers}%{bextend} -b1 -b2 -b3
typeset -i level
for patch in ../bash-%{bash_vers}-patches/*; do
test -e $patch || break
@ -300,19 +285,16 @@ done
%patch5 -p0 -b .warnlc
#%patch6 -p0 -b .endpw
%patch7 -p0 -b .decl
%patch8 -p0 -b .async
#%patch8 -p0 -b .async
%patch9 -p0 -b .unistd
%patch10 -p0 -b .printf
%patch11 -p0 -b .plugins
%patch12 -p0 -b .completion
%patch13 -p0 -b .nscdunmap
%patch14 -p0 -b .sigrestart
%patch15 -p0 -b .longjmp
%patch16 -p0 -b .setlocale
%patch17 -p0 -b .headers
%patch18 -p0 -b .winch
%patch21 -p0 -b .zerotty
%patch22 -p0 -b .wrap
%patch23 -p0 -b .conf
%patch24 -p0 -b .metamode
#%patch25 -p0 -b .endpw
@ -321,12 +303,11 @@ done
%patch46 -p0 -b .notimestamp
%patch47 -p0 -b .perl522
%if %{with import_function}
%patch48
%patch48 -b .eif
%endif
%patch49
%patch50
%patch49 -p0 -b .pthtmp
%patch0 -p0 -b .0
pushd ../readline-%{rl_vers}%{extend}
pushd ../readline-%{rl_vers}%{rextend}
for patch in ../readline-%{rl_vers}-patches/*; do
test -e $patch || break
let level=0 || true
@ -340,7 +321,6 @@ for patch in ../readline-%{rl_vers}-patches/*; do
patch -s -p$level < $patch
done
%patch21 -p2 -b .zerotty
%patch22 -p2 -b .wrap
%patch23 -p2 -b .conf
%patch24 -p2 -b .metamode
#%patch25 -p2 -b .endpw
@ -373,10 +353,8 @@ done
HOSTTYPE=${CPU}
MACHTYPE=${CPU}-suse-linux
export LANG LC_ALL HOSTTYPE MACHTYPE
pushd ../readline-%{rl_vers}%{extend}
%if 0%suse_version >= 1020
pushd ../readline-%{rl_vers}%{rextend}
autoconf
%endif
cflags ()
{
local flag=$1; shift
@ -442,7 +420,7 @@ pushd ../readline-%{rl_vers}%{extend}
cflags -DIMPORT_FUNCTIONS_DEF=0 CFLAGS
cflags -Wl,--as-needed LDFLAGS
cflags -Wl,-O2 LDFLAGS
cflags -Wl,-rpath,%{_ldldir}/%{bash_vers} LDFLAGS
cflags -Wl,-rpath,%{_ldldir} LDFLAGS
cflags -Wl,--version-script=${PWD}/rl.map LDFLAGS
cflags -Wl,--dynamic-list=${PWD}/dyn.map LDFLAGS
CC=gcc
@ -488,9 +466,7 @@ popd
CC_FOR_BUILD="$CC"
CFLAGS_FOR_BUILD="$CFLAGS"
export CC_FOR_BUILD CFLAGS_FOR_BUILD CFLAGS LDFLAGS CC
%if 0%suse_version > 1020
autoconf
%endif
#
# We have a malloc with our glibc
#
@ -576,7 +552,7 @@ popd
make documentation
%install
pushd ../readline-%{rl_vers}%{extend}
pushd ../readline-%{rl_vers}%{rextend}
make install htmldir=%{_defaultdocdir}/readline \
installdir=%{_defaultdocdir}/readline/examples DESTDIR=%{buildroot}
make install-shared libdir=/%{_lib} linkagedir=%{_libdir} DESTDIR=%{buildroot}
@ -592,8 +568,10 @@ pushd ../readline-%{rl_vers}%{extend}
ln -sf /%{_lib}/libreadline.so.%{rl_vers} %{buildroot}/%{_libdir}/libreadline.so
popd
make install DESTDIR=%{buildroot}
make -C examples/loadables/ install-plugins DESTDIR=%{buildroot} libdir=/%{_lib}
make -C examples/loadables/ install-headers DESTDIR=%{buildroot}
make -C examples/loadables/ install-supported DESTDIR=%{buildroot} libdir=/%{_lib}
rm -rf %{buildroot}%{_libdir}/bash
rm -rf %{buildroot}/%{_lib}/pkgconfig
sed -ri '/CC = gcc/s@(CC = gcc).*@\1@' %{buildroot}%{_libdir}/pkgconfig/bash.pc
mkdir -p %{buildroot}/bin
mv %{buildroot}%{_bindir}/bash %{buildroot}/bin/
%if %_minsh
@ -603,7 +581,6 @@ popd
ln -sf bash %{buildroot}/bin/sh
ln -sf ../../bin/bash %{buildroot}%{_bindir}/sh
%endif
install -m 755 bash %{buildroot}/bin/bash
ln -sf ../../bin/bash %{buildroot}%{_bindir}/rbash
install -m 644 COMPAT NEWS %{buildroot}%{_defaultdocdir}/bash/
install -m 644 COPYING %{buildroot}%{_defaultdocdir}/bash/
@ -644,9 +621,7 @@ EOF
touch -t 199605181720.50 %{buildroot}%{_sysconfdir}/skel/.bash_history
chmod 600 %{buildroot}%{_sysconfdir}/skel/.bash_history
%find_lang bash
%if %suse_version > 1020
%fdupes -s %{buildroot}%{_datadir}/bash/helpfiles
%endif
%post -n bash-doc
%install_info --info-dir=%{_infodir} %{_infodir}/bash.info.gz
@ -654,9 +629,9 @@ EOF
%preun -n bash-doc
%install_info_delete --info-dir=%{_infodir} %{_infodir}/bash.info.gz
%post -n libreadline6 -p /sbin/ldconfig
%post -n libreadline7 -p /sbin/ldconfig
%postun -n libreadline6 -p /sbin/ldconfig
%postun -n libreadline7 -p /sbin/ldconfig
%post -n readline-doc
%install_info --info-dir=%{_infodir} %{_infodir}/history.info.gz
@ -677,7 +652,7 @@ ldd -u -r %{buildroot}/%{_lib}/libreadline.so.* || true
%config %attr(600,root,root) %{_sysconfdir}/skel/.bash_history
%config %attr(644,root,root) %{_sysconfdir}/skel/.bashrc
%config %attr(644,root,root) %{_sysconfdir}/skel/.profile
%attr(755,root,root) /bin/bash
/bin/bash
/bin/sh
%dir %{_sysconfdir}/bash_completion.d
%{_bindir}/bashbug
@ -703,19 +678,22 @@ ldd -u -r %{buildroot}/%{_lib}/libreadline.so.* || true
%files -n bash-devel
%defattr(-,root,root)
%dir /%{_includedir}/bash/
%dir /%{_includedir}/bash/%{bash_vers}/
%dir /%{_includedir}/bash/%{bash_vers}/builtins/
/%{_incdir}/bash/%{bash_vers}/*.h
/%{_incdir}/bash/%{bash_vers}/builtins/*.h
%dir /%{_includedir}/bash/
%dir /%{_includedir}/bash/builtins/
%dir /%{_includedir}/bash/include/
/%{_incdir}/bash/*.h
/%{_incdir}/bash/builtins/*.h
/%{_incdir}/bash/include/*.h
%{_libdir}/pkgconfig/bash.pc
%endif
%files -n bash-loadables
%defattr(-,root,root)
%dir %{_ldldir}/
%dir %{_ldldir}/%{bash_vers}/
%{_ldldir}/%{bash_vers}/*
%dir %{_ldldir}/
%{_ldldir}/*
%files -n libreadline6
%files -n libreadline7
%defattr(-,root,root)
/%{_lib}/libhistory.so.%{rl_major}
/%{_lib}/libhistory.so.%{rl_vers}

View File

@ -1,8 +1,10 @@
Index: support/man2html.c
===================================================================
--- support/man2html.c.orig 2005-10-12 20:50:06.000000000 +0200
+++ support/man2html.c 2010-09-03 22:49:56.288632000 +0200
@@ -4061,7 +4061,7 @@ main(int argc, char **argv)
---
support/man2html.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- support/man2html.c
+++ support/man2html.c 2010-09-03 20:49:56.288632000 +0000
@@ -4076,7 +4076,7 @@ main(int argc, char **argv)
if (subs)
fputs("</DL>\n", stdout);
fputs("</DL>\n", stdout);

View File

@ -1,6 +1,12 @@
---
lib/readline/bind.c | 49 +++++++++++++++++++++++++++++++++++++++++--------
lib/readline/doc/rluser.texi | 3 ++-
lib/readline/rlconf.h | 2 +-
3 files changed, 44 insertions(+), 10 deletions(-)
--- lib/readline/bind.c
+++ lib/readline/bind.c 2006-11-13 16:20:23.000000000 +0000
@@ -751,6 +751,9 @@ rl_function_of_keyseq (keyseq, map, type
@@ -826,6 +826,9 @@ rl_function_of_keyseq (keyseq, map, type
/* The last key bindings file read. */
static char *last_readline_init_file = (char *)NULL;
@ -10,7 +16,7 @@
/* The file we're currently reading key bindings from. */
static const char *current_readline_init_file;
static int current_readline_init_include_level;
@@ -816,11 +819,14 @@ rl_re_read_init_file (count, ignore)
@@ -891,11 +894,14 @@ rl_re_read_init_file (count, ignore)
return r;
}
@ -26,7 +32,7 @@
4. /etc/inputrc
If the file existed and could be opened and read, 0 is returned,
otherwise errno is returned. */
@@ -832,16 +838,37 @@ rl_read_init_file (filename)
@@ -907,16 +913,37 @@ rl_read_init_file (filename)
if (filename == 0)
filename = last_readline_init_file;
if (filename == 0)
@ -69,7 +75,7 @@
#if defined (__MSDOS__)
if (_rl_read_init_file (filename, 0) == 0)
return 0;
@@ -1352,7 +1379,14 @@ rl_parse_and_bind (string)
@@ -1467,7 +1494,14 @@ remove_trailing:
rl_macro_bind (seq, &funname[1], _rl_keymap);
}
else
@ -85,7 +91,7 @@
xfree (seq);
return 0;
@@ -1490,7 +1524,6 @@ typedef int _rl_sv_func_t PARAMS((const
@@ -1632,7 +1666,6 @@ typedef int _rl_sv_func_t PARAMS((const
#define V_INT 2
/* Forward declarations */
@ -95,7 +101,7 @@
static int sv_compquery PARAMS((const char *));
--- lib/readline/rlconf.h
+++ lib/readline/rlconf.h 2006-11-13 16:21:26.000000000 +0000
@@ -33,7 +33,7 @@
@@ -37,7 +37,7 @@
#define HANDLE_SIGNALS
/* Ugly but working hack for binding prefix meta. */
@ -106,7 +112,7 @@
#define DEFAULT_INPUTRC "~/.inputrc"
--- lib/readline/doc/rluser.texi
+++ lib/readline/doc/rluser.texi 2006-11-13 16:23:56.000000000 +0000
@@ -347,7 +347,8 @@ file is taken from the value of the envi
@@ -349,7 +349,8 @@ file is taken from the value of the envi
@end ifclear
that variable is unset, the default is @file{~/.inputrc}. If that
file does not exist or cannot be read, the ultimate default is

View File

@ -1,14 +0,0 @@
--- lib/readline/display.c
+++ lib/readline/display.c 2006-11-13 15:55:24.000000000 +0000
@@ -714,7 +714,10 @@ rl_redisplay ()
inv_lbreaks[++newlines] = temp;
#if defined (HANDLE_MULTIBYTE)
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0 && prompt_multibyte_chars > 0)
- lpos -= _rl_col_width (local_prompt, n0, num, 1);
+ {
+ if (local_prompt_len > 0)
+ lpos -= _rl_col_width (local_prompt, n0, num, 1);
+ }
else
#endif
lpos -= _rl_screenwidth;

View File

@ -1,6 +1,10 @@
---
lib/readline/complete.c | 4 ++++
1 file changed, 4 insertions(+)
--- lib/readline/complete.c
+++ lib/readline/complete.c 2011-11-21 12:51:35.695646715 +0000
@@ -83,6 +83,7 @@ typedef int QSFUNC ();
@@ -89,6 +89,7 @@ typedef int QSFUNC ();
defined. */
#if defined (HAVE_GETPWENT) && (!defined (HAVE_GETPW_DECLS) || defined (_POSIX_SOURCE))
extern struct passwd *getpwent PARAMS((void));
@ -8,7 +12,7 @@
#endif /* HAVE_GETPWENT && (!HAVE_GETPW_DECLS || _POSIX_SOURCE) */
/* If non-zero, then this is the address of a function to call when
@@ -2068,6 +2069,9 @@ rl_username_completion_function (text, s
@@ -2316,6 +2317,9 @@ rl_username_completion_function (text, s
if (first_char == '~')
rl_filename_completion_desired = 1;
@ -18,60 +22,3 @@
return (value);
}
#endif /* !__WIN32__ && !__OPENNT */
--- lib/readline/shell.c
+++ lib/readline/shell.c 2011-11-21 13:08:46.343647023 +0000
@@ -61,9 +61,18 @@
#include "rlshell.h"
#include "xmalloc.h"
-#if defined (HAVE_GETPWUID) && !defined (HAVE_GETPW_DECLS)
+#if !defined (HAVE_GETPW_DECLS)
+# if defined (HAVE_GETPWUID)
extern struct passwd *getpwuid PARAMS((uid_t));
-#endif /* HAVE_GETPWUID && !HAVE_GETPW_DECLS */
+# 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 */
#ifndef NULL
# define NULL 0
@@ -159,15 +168,20 @@ sh_get_env_value (varname)
char *
sh_get_home_dir ()
{
- char *home_dir;
+ static char *home_dir;
struct passwd *entry;
- home_dir = (char *)NULL;
+ if (home_dir)
+ goto out;
#if defined (HAVE_GETPWUID)
entry = getpwuid (getuid ());
if (entry)
- home_dir = entry->pw_dir;
+ home_dir = savestring(entry->pw_dir);
#endif
+#if defined (HAVE_GETPWENT)
+ endpwent ();
+#endif
+out:
return (home_dir);
}
--- lib/readline/tilde.c
+++ lib/readline/tilde.c 2011-11-11 13:09:49.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 */

View File

@ -1,7 +1,10 @@
# See bug bnc#541379
---
lib/readline/bind.c | 1 +
1 file changed, 1 insertion(+)
--- lib/readline/bind.c
+++ lib/readline/bind.c 2011-03-04 15:00:17.332426313 +0000
@@ -1485,6 +1485,7 @@ static const struct {
@@ -1613,6 +1613,7 @@ static const struct {
#if defined (VISIBLE_STATS)
{ "visible-stats", &rl_visible_stats, 0 },
#endif /* VISIBLE_STATS */

View File

@ -1,3 +1,9 @@
---
xfree.c | 3 +++
xmalloc.c | 5 +++++
xmalloc.h | 8 ++++++++
3 files changed, 16 insertions(+)
--- xfree.c
+++ xfree.c 2012-10-17 12:48:37.862344784 +0000
@@ -48,3 +48,6 @@ xfree (string)

View File

@ -1,3 +1,8 @@
---
shlib/Makefile.in | 9 +++++----
support/shlib-install | 47 +++++++++++++++++++++++++++--------------------
2 files changed, 32 insertions(+), 24 deletions(-)
--- shlib/Makefile.in
+++ shlib/Makefile.in 2014-04-17 10:51:05.898235056 +0000
@@ -59,6 +59,7 @@ bindir = @bindir@

View File

@ -1,6 +1,11 @@
---
lib/readline/input.c | 7 ++++++-
lib/readline/readline.c | 7 +++++++
2 files changed, 13 insertions(+), 1 deletion(-)
--- lib/readline/input.c
+++ lib/readline/input.c 2003-03-17 19:03:51.000000000 +0000
@@ -468,6 +468,8 @@ rl_read_key ()
@@ -489,6 +489,8 @@ rl_read_key ()
return (c);
}
@ -9,7 +14,7 @@
int
rl_getc (stream)
FILE *stream;
@@ -493,7 +495,10 @@ rl_getc (stream)
@@ -526,7 +528,10 @@ rl_getc (stream)
/* If zero characters are returned, then the file that we are
reading from is empty! Return EOF in that case. */
if (result == 0)
@ -23,7 +28,7 @@
if (errno == EINTR)
--- lib/readline/readline.c
+++ lib/readline/readline.c 2014-04-17 10:24:16.302236347 +0000
@@ -515,6 +515,9 @@ _rl_internal_char_cleanup ()
@@ -522,6 +522,9 @@ _rl_internal_char_cleanup ()
_rl_erase_entire_line ();
}
@ -33,7 +38,7 @@
STATIC_CALLBACK int
#if defined (READLINE_CALLBACKS)
readline_internal_char ()
@@ -564,6 +567,10 @@ readline_internal_charloop ()
@@ -570,6 +573,10 @@ readline_internal_charloop ()
c = rl_read_key ();
RL_UNSETSTATE(RL_STATE_READCMD);

BIN
readline-6.3-patches.tar.bz2 (Stored with Git LFS)

Binary file not shown.

View File

@ -7,7 +7,7 @@ temporary files from public location without O_EXCL (bcn#868822).
--- lib/readline/util.c
+++ lib/readline/util.c 2014-04-17 10:29:43.157274616 +0000
@@ -501,10 +501,12 @@ _rl_trace (va_alist)
@@ -504,10 +504,12 @@ _rl_trace (va_alist)
if (_rl_tracefp == 0)
_rl_tropen ();
@ -21,16 +21,16 @@ temporary files from public location without O_EXCL (bcn#868822).
va_end (args);
}
@@ -517,7 +519,7 @@ _rl_tropen ()
fclose (_rl_tracefp);
sprintf (fnbuf, "/var/tmp/rltrace.%ld", (long)getpid());
@@ -527,7 +529,7 @@ _rl_tropen ()
#endif
sprintf (fnbuf, "%s/rltrace.%ld", x, (long)getpid());
unlink(fnbuf);
- _rl_tracefp = fopen (fnbuf, "w+");
+ _rl_tracefp = fopen (fnbuf, "w+xe");
return _rl_tracefp != 0;
}
@@ -525,8 +527,8 @@ int
@@ -535,8 +537,8 @@ int
_rl_trclose ()
{
int r;

BIN
readline-6.3.tar.gz (Stored with Git LFS)

Binary file not shown.

BIN
readline-7.0-patches.tar.bz2 (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -1,6 +1,17 @@
---
Makefile.in | 4 +---
complete.c | 6 +++---
doc/Makefile.in | 2 +-
doc/readline.3 | 11 +++++++++++
history.h | 1 +
readline.c | 7 +++++--
readline.h | 3 ++-
support/shobj-conf | 5 +++--
8 files changed, 27 insertions(+), 12 deletions(-)
--- Makefile.in
+++ Makefile.in 2014-04-17 10:57:38.386235678 +0000
@@ -235,10 +235,8 @@ uninstall-headers:
+++ Makefile.in 2016-09-14 08:59:09.830092311 +0000
@@ -233,10 +233,8 @@ uninstall-headers:
maybe-uninstall-headers: uninstall-headers
install-static: installdirs $(STATIC_LIBS) install-headers install-doc install-examples
@ -11,7 +22,7 @@
$(INSTALL_DATA) libhistory.a $(DESTDIR)$(libdir)/libhistory.a
-test -n "$(RANLIB)" && $(RANLIB) $(DESTDIR)$(libdir)/libhistory.a
@@ -268,7 +266,7 @@ install-doc: installdirs
@@ -266,7 +264,7 @@ install-doc: installdirs
$(INSTALL_DATA) $(OTHER_DOCS) $(DESTDIR)$(docdir)
-( if test -d doc ; then \
cd doc && \
@ -21,8 +32,8 @@
uninstall-doc:
--- complete.c
+++ complete.c 2014-04-17 10:58:11.042235308 +0000
@@ -1082,7 +1082,7 @@ _rl_find_completion_word (fp, dp)
+++ complete.c 2016-09-14 08:59:09.830092311 +0000
@@ -1152,7 +1152,7 @@ _rl_find_completion_word (fp, dp)
/* We didn't find an unclosed quoted substring upon which to do
completion, so use the word break characters to find the
substring on which to complete. */
@ -31,7 +42,7 @@
{
scan = rl_line_buffer[rl_point];
@@ -2116,7 +2116,7 @@ rl_completion_matches (text, entry_funct
@@ -2229,7 +2229,7 @@ rl_completion_matches (text, entry_funct
match_list = (char **)xmalloc ((match_list_size + 1) * sizeof (char *));
match_list[1] = (char *)NULL;
@ -40,7 +51,7 @@
{
if (RL_SIG_RECEIVED ())
{
@@ -2190,7 +2190,7 @@ rl_username_completion_function (text, s
@@ -2303,7 +2303,7 @@ rl_username_completion_function (text, s
}
#if defined (HAVE_GETPWENT)
@ -50,10 +61,10 @@
/* Null usernames should result in all users as possible completions. */
if (namelen == 0 || (STREQN (username, entry->pw_name, namelen)))
--- doc/Makefile.in
+++ doc/Makefile.in 2009-02-27 16:27:31.000000000 +0000
@@ -101,7 +101,7 @@ DIST_DOCS = $(DVIOBJ) $(PSOBJ) $(HTMLOBJ
$(RM) $@
-${DVIPDF} $<
+++ doc/Makefile.in 2016-09-14 08:59:09.830092311 +0000
@@ -107,7 +107,7 @@ DIST_DOCS = $(DVIOBJ) $(PSOBJ) $(HTMLOBJ
# $(RM) $@
# -${TEXI2PDF} $<
-all: info dvi html ps text pdf
+all: info html
@ -61,8 +72,8 @@
xdist: $(DIST_DOCS)
--- doc/readline.3
+++ doc/readline.3 2006-11-13 16:33:27.000000000 +0000
@@ -118,6 +118,14 @@ environment variable. If that variable
+++ doc/readline.3 2016-09-14 08:59:09.830092311 +0000
@@ -119,6 +119,14 @@ environment variable. If that variable
.IR ~/.inputrc .
If that file does not exist or cannot be read, the ultimate default is
.IR /etc/inputrc .
@ -77,7 +88,7 @@
When a program which uses the readline library starts up, the
init file is read, and the key bindings and variables are set.
There are only a few basic constructs allowed in the
@@ -1402,6 +1410,9 @@ VI Command Mode functions
@@ -1457,6 +1465,9 @@ VI Command Mode functions
.TP
.FN ~/.inputrc
Individual \fBreadline\fP initialization file
@ -88,7 +99,7 @@
.SH AUTHORS
Brian Fox, Free Software Foundation
--- history.h
+++ history.h 2012-07-18 08:06:56.000000000 +0000
+++ history.h 2016-09-14 08:59:09.830092311 +0000
@@ -32,6 +32,7 @@ extern "C" {
# include "rlstdc.h"
# include "rltypedefs.h"
@ -98,23 +109,23 @@
# include <readline/rltypedefs.h>
#endif
--- readline.c
+++ readline.c 2014-04-17 10:59:21.258235067 +0000
@@ -824,8 +824,11 @@ _rl_dispatch_subseq (key, map, got_subse
+++ readline.c 2016-09-14 08:59:09.830092311 +0000
@@ -851,8 +851,11 @@ _rl_dispatch_subseq (key, map, got_subse
{
/* Special case rl_do_lowercase_version (). */
if (func == rl_do_lowercase_version)
- /* Should we do anything special if key == ANYOTHERKEY? */
- return (_rl_dispatch (_rl_to_lower (key), map));
- return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map));
+ {
+ if (key == ANYOTHERKEY)
+ return -1;
+ return (_rl_dispatch (_rl_to_lower (key), map));
+ return (_rl_dispatch (_rl_to_lower ((unsigned char)key), map));
+ }
rl_executing_keymap = map;
rl_executing_key = key;
--- readline.h
+++ readline.h 2012-07-18 08:07:12.000000000 +0000
+++ readline.h 2016-09-14 08:59:09.830092311 +0000
@@ -32,6 +32,7 @@ extern "C" {
# include "keymaps.h"
# include "tilde.h"
@ -123,7 +134,7 @@
# include <readline/rlstdc.h>
# include <readline/rltypedefs.h>
# include <readline/keymaps.h>
@@ -459,7 +460,7 @@ extern char *rl_filename_completion_func
@@ -467,7 +468,7 @@ extern char *rl_filename_completion_func
extern int rl_completion_mode PARAMS((rl_command_func_t *));
@ -133,7 +144,7 @@
extern void free_undo_list PARAMS((void));
extern int maybe_save_line PARAMS((void));
--- support/shobj-conf
+++ support/shobj-conf 2006-09-22 14:17:48.000000000 +0000
+++ support/shobj-conf 2016-09-14 08:59:09.830092311 +0000
@@ -126,10 +126,11 @@ sunos5*|solaris2*)
linux*-*|gnu*-*|k*bsd*-gnu-*|freebsd*-gentoo)
SHOBJ_CFLAGS=-fPIC

BIN
readline-7.0.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -1,5 +1,16 @@
#! /bin/sh
: ${TMPDIR:=/tmp}
export TMPDIR
# basic /bin/sh syntax
SUFFIX=`${THIS_SH} -c 'echo $(( $RANDOM + $BASHPID ))'`
BASH_TSTOUT=${TMPDIR}/bashtst-$SUFFIX # for now
export BASH_TSTOUT
trap 'rm -f $BASH_TSTOUT' 0
PATH=.:$PATH # just to get recho/zecho/printenv if not run via `make tests'
export PATH
@ -13,7 +24,7 @@ export THIS_SH
${THIS_SH} ./version
rm -f /tmp/xx
rm -f "$BASH_TSTOUT"
echo Any output from any test, unless otherwise noted, indicates a possible anomaly