Update to bash-5.0
OBS-URL: https://build.opensuse.org/package/show/Base:System/bash?expand=0&rev=269
This commit is contained in:
parent
d5df4a43f4
commit
f67253210a
@ -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
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
+
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -1,176 +0,0 @@
|
||||
---
|
||||
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
|
||||
@@ -2485,6 +2485,7 @@ bash_groupname_completion_function (text
|
||||
}
|
||||
|
||||
value = savestring (grent->gr_name);
|
||||
+ endgrent ();
|
||||
return (value);
|
||||
#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 ();
|
||||
#endif
|
||||
extern struct group *getgrgid ();
|
||||
|
||||
@@ -136,18 +137,26 @@ static int
|
||||
inituser (uname)
|
||||
char *uname;
|
||||
{
|
||||
- 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 */
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
328
bash-4.3-SJIS.patch
Normal file
328
bash-4.3-SJIS.patch
Normal file
@ -0,0 +1,328 @@
|
||||
---
|
||||
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)
|
@ -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 */
|
||||
|
@ -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;
|
||||
|
@ -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 */
|
||||
|
@ -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. */
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8c161f78c916668078676da505aad2756202cbfee895d714091bfdc5c836e1fd
|
||||
size 12693
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d86b3392c1202e8ff5a423b302e6284db7f8f435ea9f39b5b1b20fd3ac36dfcb
|
||||
size 9377313
|
3
bash-5.0-patches.tar.bz2
Normal file
3
bash-5.0-patches.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:28f8e4be802a88908b064f6fce74cd04d5e5357fbe9d1844699d1898301cf3df
|
||||
size 237
|
@ -5,7 +5,7 @@
|
||||
doc/bash.1 | 7 +++++--
|
||||
general.h | 3 +++
|
||||
parse.y | 2 +-
|
||||
shell.c | 4 +++-
|
||||
shell.c | 6 +++++-
|
||||
support/bashbug.sh | 2 +-
|
||||
support/man2html.c | 1 +
|
||||
support/rlvers.sh | 6 +++---
|
||||
@ -13,11 +13,11 @@
|
||||
tests/glob.tests | 4 ++--
|
||||
tests/run-intl | 2 +-
|
||||
tests/run-read | 2 +-
|
||||
14 files changed, 36 insertions(+), 22 deletions(-)
|
||||
14 files changed, 38 insertions(+), 22 deletions(-)
|
||||
|
||||
--- Makefile.in
|
||||
+++ Makefile.in 2017-09-25 09:08:48.341515472 +0000
|
||||
@@ -447,7 +447,7 @@ SOURCES = $(CSOURCES) $(HSOURCES) $(BUI
|
||||
+++ 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 \
|
||||
@ -27,8 +27,8 @@
|
||||
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 2017-09-25 09:08:06.210296290 +0000
|
||||
@@ -60,17 +60,21 @@
|
||||
+++ 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 */
|
||||
|
||||
@ -43,7 +43,8 @@
|
||||
+ "/usr/local/bin:" _PATH_DEFPATH ":."
|
||||
#endif
|
||||
|
||||
/* The value for PATH when invoking `command -p'. This is only used when
|
||||
/* 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 \
|
||||
@ -52,7 +53,7 @@
|
||||
#endif
|
||||
|
||||
/* Default primary and secondary prompt strings. */
|
||||
@@ -87,20 +91,20 @@
|
||||
@@ -91,20 +95,20 @@
|
||||
#define DEFAULT_BASHRC "~/.bashrc"
|
||||
|
||||
/* System-wide .bashrc file for interactive shells. */
|
||||
@ -78,7 +79,7 @@
|
||||
/* Define if you want the case-capitalizing operators (~[~]) and the
|
||||
`capcase' variable attribute (declare -c). */
|
||||
--- doc/Makefile.in
|
||||
+++ doc/Makefile.in 2017-09-25 09:08:06.210296290 +0000
|
||||
+++ doc/Makefile.in 2018-11-29 08:14:06.638693338 +0000
|
||||
@@ -154,7 +154,7 @@ BASHREF_FILES = $(srcdir)/bashref.texi $
|
||||
# $(RM) $@
|
||||
# -${TEXI2PDF} $<
|
||||
@ -89,8 +90,8 @@
|
||||
everything: all pdf
|
||||
|
||||
--- doc/bash.1
|
||||
+++ doc/bash.1 2017-09-25 09:08:06.214296216 +0000
|
||||
@@ -5253,8 +5253,8 @@ file (the \fIinputrc\fP file).
|
||||
+++ 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
|
||||
@ -101,7 +102,7 @@
|
||||
When a program which uses the readline library starts up, the
|
||||
initialization file is read, and the key bindings and variables
|
||||
are set.
|
||||
@@ -10586,6 +10586,9 @@ The individual login shell cleanup file,
|
||||
@@ -10922,6 +10922,9 @@ The individual login shell cleanup file,
|
||||
.TP
|
||||
.FN ~/.inputrc
|
||||
Individual \fIreadline\fP initialization file
|
||||
@ -112,7 +113,7 @@
|
||||
.SH AUTHORS
|
||||
Brian Fox, Free Software Foundation
|
||||
--- general.h
|
||||
+++ general.h 2017-09-25 09:08:06.214296216 +0000
|
||||
+++ general.h 2018-11-29 08:14:06.638693338 +0000
|
||||
@@ -21,10 +21,13 @@
|
||||
#if !defined (_GENERAL_H_)
|
||||
#define _GENERAL_H_
|
||||
@ -128,8 +129,8 @@
|
||||
#if defined (HAVE_SYS_RESOURCE_H) && defined (RLIMTYPE)
|
||||
# if defined (HAVE_SYS_TIME_H)
|
||||
--- parse.y
|
||||
+++ parse.y 2017-09-25 09:08:06.214296216 +0000
|
||||
@@ -1426,7 +1426,7 @@ input_file_descriptor ()
|
||||
+++ 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;
|
||||
@ -139,7 +140,7 @@
|
||||
|
||||
static int
|
||||
--- shell.c
|
||||
+++ shell.c 2017-09-25 09:08:06.214296216 +0000
|
||||
+++ shell.c 2018-11-29 08:14:06.638693338 +0000
|
||||
@@ -45,6 +45,7 @@
|
||||
#if defined (HAVE_UNISTD_H)
|
||||
# include <sys/types.h>
|
||||
@ -148,7 +149,7 @@
|
||||
#endif
|
||||
|
||||
#include "bashintl.h"
|
||||
@@ -501,7 +502,7 @@ main (argc, argv, env)
|
||||
@@ -497,7 +498,7 @@ main (argc, argv, env)
|
||||
if (dump_translatable_strings)
|
||||
read_but_dont_execute = 1;
|
||||
|
||||
@ -157,7 +158,7 @@
|
||||
disable_priv_mode ();
|
||||
|
||||
/* Need to get the argument to a -c option processed in the
|
||||
@@ -1277,6 +1278,9 @@ disable_priv_mode ()
|
||||
@@ -1294,6 +1295,9 @@ disable_priv_mode ()
|
||||
{
|
||||
int e;
|
||||
|
||||
@ -168,7 +169,7 @@
|
||||
{
|
||||
e = errno;
|
||||
--- support/bashbug.sh
|
||||
+++ support/bashbug.sh 2017-09-25 09:08:06.214296216 +0000
|
||||
+++ support/bashbug.sh 2018-11-29 08:14:06.638693338 +0000
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/bin/sh -
|
||||
+#!/bin/bash -
|
||||
@ -176,7 +177,7 @@
|
||||
# bashbug - create a bug report and mail it to the bug address
|
||||
#
|
||||
--- support/man2html.c
|
||||
+++ support/man2html.c 2017-09-25 09:08:06.214296216 +0000
|
||||
+++ support/man2html.c 2018-11-29 08:14:06.638693338 +0000
|
||||
@@ -78,6 +78,7 @@
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
@ -186,7 +187,7 @@
|
||||
#define NULL_TERMINATED(n) ((n) + 1)
|
||||
|
||||
--- support/rlvers.sh
|
||||
+++ support/rlvers.sh 2017-09-25 09:08:06.214296216 +0000
|
||||
+++ support/rlvers.sh 2018-11-29 08:14:06.638693338 +0000
|
||||
@@ -27,10 +27,10 @@ TDIR=$TMPDIR/rlvers
|
||||
|
||||
# defaults
|
||||
@ -202,7 +203,7 @@
|
||||
# cannot rely on the presence of getopts
|
||||
while [ $# -gt 0 ]; do
|
||||
--- support/shobj-conf
|
||||
+++ support/shobj-conf 2017-09-25 09:08:06.214296216 +0000
|
||||
+++ 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
|
||||
@ -218,20 +219,20 @@
|
||||
|
||||
freebsd2*)
|
||||
--- tests/glob.tests
|
||||
+++ tests/glob.tests 2017-09-25 09:08:06.214296216 +0000
|
||||
@@ -12,8 +12,8 @@ ${THIS_SH} ./glob1.sub
|
||||
+++ 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=/tmp/glob-test
|
||||
-TESTDIR=$TMPDIR/glob-test-$$
|
||||
-mkdir $TESTDIR
|
||||
+TESTDIR=${TMPDIR:=/tmp}/glob-test
|
||||
+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 2017-09-25 09:08:06.214296216 +0000
|
||||
+++ 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
|
||||
|
||||
@ -239,7 +240,7 @@
|
||||
-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 2017-09-25 09:08:06.214296216 +0000
|
||||
+++ 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
|
3
bash-5.0.tar.gz
Normal file
3
bash-5.0.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b4a80f2ac66170b2913efbfb9f2594f1f76c7b1afd11f799e22035d63077fb4d
|
||||
size 10135110
|
@ -1,19 +0,0 @@
|
||||
Author: Bernhard M. Wiedemann <bwiedemann suse de>
|
||||
Date: 2018-07-07
|
||||
|
||||
strcpy can cause corruption when working on overlapping strings
|
||||
so we use memmove instead that handles this case correctly
|
||||
|
||||
Index: bash-4.4/support/man2html.c
|
||||
===================================================================
|
||||
--- bash-4.4.orig/support/man2html.c
|
||||
+++ bash-4.4/support/man2html.c
|
||||
@@ -1992,7 +1993,7 @@ unescape (char *c)
|
||||
while (i < l && c[i]) {
|
||||
if (c[i] == '\a') {
|
||||
if (c[i+1])
|
||||
- strcpy(c + i, c + i + 1); /* should be memmove */
|
||||
+ memmove(c + i, c + i + 1, strlen(c + i));
|
||||
else {
|
||||
c[i] = '\0';
|
||||
break;
|
166
bash.changes
166
bash.changes
@ -1,3 +1,169 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 9 12:47:04 UTC 2019 - Dr. Werner Fink <werner@suse.de>
|
||||
|
||||
- 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 <werner@suse.de>
|
||||
|
||||
- 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 <werner@suse.de>
|
||||
|
||||
- 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 <werner@suse.de>
|
||||
|
||||
- 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
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Jul 7 05:03:48 UTC 2018 - bwiedemann@suse.com
|
||||
|
||||
|
32
bash.spec
32
bash.spec
@ -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: ncurses-devel
|
||||
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 @@ 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
|
||||
Patch9: bash-4.3-include-unistd.dif
|
||||
Patch10: bash-3.2-printf.patch
|
||||
@ -77,13 +76,14 @@ Patch16: bash-4.0-setlocale.dif
|
||||
# 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 @@ whoami Print out username of current user.
|
||||
|
||||
|
||||
%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 @@ done
|
||||
%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 @@ done
|
||||
%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 @@ test ${rl1[2]} = ${rl2[2]} || exit 1
|
||||
SYSMALLOC="
|
||||
--without-gnu-malloc
|
||||
--without-bash-malloc
|
||||
--enable-mem-scramble
|
||||
"
|
||||
#
|
||||
# System readline library (comment out it not to be used)
|
||||
@ -343,6 +351,7 @@ test ${rl1[2]} = ${rl2[2]} || exit 1
|
||||
--libdir=%{_libdir} \
|
||||
--with-curses \
|
||||
--with-afs \
|
||||
--with-gnu-ld \
|
||||
$SYSMALLOC \
|
||||
--enable-minimal-config \
|
||||
--enable-arith-for-command \
|
||||
@ -360,6 +369,7 @@ test ${rl1[2]} = ${rl2[2]} || exit 1
|
||||
--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 @@ test ${rl1[2]} = ${rl2[2]} || exit 1
|
||||
--docdir=%{_docdir}/%{name} \
|
||||
--with-curses \
|
||||
--with-afs \
|
||||
--with-gnu-ld \
|
||||
$SYSMALLOC \
|
||||
--enable-job-control \
|
||||
--enable-net-redirections \
|
||||
@ -386,14 +397,17 @@ test ${rl1[2]} = ${rl2[2]} || exit 1
|
||||
--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"
|
||||
|
Loading…
Reference in New Issue
Block a user