diff -r 71503088f51b -r f880f219c566 openpkg/bash.patch --- a/openpkg/bash.patch Tue Jul 31 12:12:54 2012 +0200 +++ b/openpkg/bash.patch Tue Jul 31 12:23:42 2012 +0200 @@ -2,9 +2,9 @@ line options "-v" and "-x". It is derived from Debian GNU/Linux. Index: doc/bash.1 ---- doc/bash.1.orig 2004-07-12 17:27:08 +0200 -+++ doc/bash.1 2004-07-27 19:47:10 +0200 -@@ -116,6 +116,12 @@ +--- doc/bash.1.orig 2011-01-16 21:31:39.000000000 +0100 ++++ doc/bash.1 2011-02-21 18:56:01.000000000 +0100 +@@ -117,6 +117,12 @@ This option allows the positional parameters to be set when invoking an interactive shell. .TP @@ -23,9 +23,9 @@ Port to HP-UX 11i and similar less smart platforms. Index: configure ---- configure.orig 2004-07-21 22:18:56 +0200 -+++ configure 2004-07-27 19:47:10 +0200 -@@ -1517,6 +1517,7 @@ +--- configure.orig 2011-02-07 23:03:22.000000000 +0100 ++++ configure 2011-02-21 18:56:01.000000000 +0100 +@@ -2202,6 +2202,7 @@ *-beos*) opt_bash_malloc=no ;; # they say it's suitable *-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment *-opennt*|*-interix*) opt_bash_malloc=no ;; # Interix, now owned by Microsoft @@ -33,7 +33,7 @@ esac # memory scrambling on free() -@@ -1662,7 +1663,7 @@ +@@ -2270,7 +2271,7 @@ else MALLOC_LIB= @@ -43,8 +43,8 @@ MALLOC_DEP= fi Index: syntax.h ---- syntax.h.orig 2004-04-15 05:19:36 +0200 -+++ syntax.h 2004-07-27 19:47:10 +0200 +--- syntax.h.orig 2009-01-04 20:32:42.000000000 +0100 ++++ syntax.h 2011-02-21 18:56:01.000000000 +0100 @@ -21,6 +21,8 @@ #ifndef _SYNTAX_H_ #define _SYNTAX_H_ @@ -60,303 +60,70 @@ This adds the OpenPKG packaging brand. Index: version.c ---- version.c.orig 2003-12-19 22:34:02 +0100 -+++ version.c 2004-07-27 19:47:10 +0200 -@@ -77,7 +77,7 @@ +--- version.c.orig 2011-01-28 17:32:36.000000000 +0100 ++++ version.c 2011-02-21 18:56:01.000000000 +0100 +@@ -83,7 +83,7 @@ show_shell_version (extended) int extended; { -- printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE); -+ printf ("GNU bash, version %s (%s) [@l_openpkg_release@]\n", shell_version_string (), MACHTYPE); +- printf (_("GNU bash, version %s (%s)\n"), shell_version_string (), MACHTYPE); ++ printf (_("GNU bash, version %s (%s) [@l_openpkg_release@]\n"), shell_version_string (), MACHTYPE); if (extended) - printf (_("Copyright (C) 2005 Free Software Foundation, Inc.\n")); - } + { + printf ("%s\n", _(bash_copyright)); ----------------------------------------------------------------------------- -Accumulated vendor patches Bash 3.2 001-005 +Ensure that Autoconf and friends are not run. -Generated via: - -$ gunzip /tmp/bash.patch -$ popd -$ rm -rf bash-3.2 - -Index: parse.y ---- parse.y.orig 2006-09-19 22:37:21 +0200 -+++ parse.y 2006-12-06 13:32:45 +0100 -@@ -1029,6 +1029,7 @@ - #define PST_CMDTOKEN 0x1000 /* command token OK - unused */ - #define PST_COMPASSIGN 0x2000 /* parsing x=(...) compound assignment */ - #define PST_ASSIGNOK 0x4000 /* assignment statement ok in this context */ -+#define PST_REGEXP 0x8000 /* parsing an ERE/BRE as a single word */ +Index: Makefile.in +--- Makefile.in.orig 2010-12-01 01:22:42.000000000 +0100 ++++ Makefile.in 2011-02-21 18:56:01.000000000 +0100 +@@ -711,7 +711,6 @@ - /* Initial size to allocate for tokens, and the - amount to grow them by. */ -@@ -2591,6 +2592,9 @@ - return (character); - } + # comment out for distribution + $(srcdir)/configure: $(srcdir)/configure.in $(srcdir)/aclocal.m4 $(srcdir)/config.h.in +- cd $(srcdir) && autoconf -+ if (parser_state & PST_REGEXP) -+ goto tokword; -+ - /* Shell meta-characters. */ - if MBTEST(shellmeta (character) && ((parser_state & PST_DBLPAREN) == 0)) - { -@@ -2698,6 +2702,7 @@ - if MBTEST(character == '-' && (last_read_token == LESS_AND || last_read_token == GREATER_AND)) - return (character); - -+tokword: - /* Okay, if we got this far, we have to read a word. Read one, - and then check it against the known ones. */ - result = read_token_word (character); -@@ -2735,7 +2740,7 @@ - /* itrace("parse_matched_pair: open = %c close = %c", open, close); */ - count = 1; - pass_next_character = backq_backslash = was_dollar = in_comment = 0; -- check_comment = (flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0; -+ check_comment = (flags & P_COMMAND) && qc != '`' && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0; - - /* RFLAGS is the set of flags we want to pass to recursive calls. */ - rflags = (qc == '"') ? P_DQUOTE : (flags & P_DQUOTE); -@@ -3202,8 +3207,11 @@ - if (tok == WORD && test_binop (yylval.word->word)) - op = yylval.word; - #if defined (COND_REGEXP) -- else if (tok == WORD && STREQ (yylval.word->word,"=~")) -- op = yylval.word; -+ else if (tok == WORD && STREQ (yylval.word->word, "=~")) -+ { -+ op = yylval.word; -+ parser_state |= PST_REGEXP; -+ } - #endif - else if (tok == '<' || tok == '>') - op = make_word_from_token (tok); /* ( */ -@@ -3234,6 +3242,7 @@ - - /* rhs */ - tok = read_token (READ); -+ parser_state &= ~PST_REGEXP; - if (tok == WORD) - { - tright = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL); -@@ -3419,9 +3428,34 @@ - goto next_character; - } - -+#ifdef COND_REGEXP -+ /* When parsing a regexp as a single word inside a conditional command, -+ we need to special-case characters special to both the shell and -+ regular expressions. Right now, that is only '(' and '|'. */ /*)*/ -+ if MBTEST((parser_state & PST_REGEXP) && (character == '(' || character == '|')) /*)*/ -+ { -+ if (character == '|') -+ goto got_character; -+ -+ push_delimiter (dstack, character); -+ ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0); -+ pop_delimiter (dstack); -+ if (ttok == &matched_pair_error) -+ return -1; /* Bail immediately. */ -+ RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2, -+ token_buffer_size, TOKEN_DEFAULT_GROW_SIZE); -+ token[token_index++] = character; -+ strcpy (token + token_index, ttok); -+ token_index += ttoklen; -+ FREE (ttok); -+ dollar_present = all_digit_token = 0; -+ goto next_character; -+ } -+#endif /* COND_REGEXP */ -+ - #ifdef EXTENDED_GLOB - /* Parse a ksh-style extended pattern matching specification. */ -- if (extended_glob && PATTERN_CHAR (character)) -+ if MBTEST(extended_glob && PATTERN_CHAR (character)) - { - peek_char = shell_getc (1); - if MBTEST(peek_char == '(') /* ) */ -Index: patchlevel.h ---- patchlevel.h.orig 2006-04-13 14:31:04 +0200 -+++ patchlevel.h 2006-12-06 13:32:45 +0100 -@@ -25,6 +25,6 @@ - regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh - looks for to find the patch level (for the sccs version string). */ - --#define PATCHLEVEL 0 -+#define PATCHLEVEL 5 - - #endif /* _PATCHLEVEL_H_ */ -Index: subst.c ---- subst.c.orig 2006-09-19 14:35:09 +0200 -+++ subst.c 2006-12-06 13:32:45 +0100 -@@ -5707,6 +5707,11 @@ - vtype &= ~VT_STARSUB; - - mflags = 0; -+ if (patsub && *patsub == '/') -+ { -+ mflags |= MATCH_GLOBREP; -+ patsub++; -+ } - - /* Malloc this because expand_string_if_necessary or one of the expansion - functions in its call chain may free it on a substitution error. */ -@@ -5741,13 +5746,12 @@ - } - - /* ksh93 doesn't allow the match specifier to be a part of the expanded -- pattern. This is an extension. */ -+ pattern. This is an extension. Make sure we don't anchor the pattern -+ at the beginning or end of the string if we're doing global replacement, -+ though. */ - p = pat; -- if (pat && pat[0] == '/') -- { -- mflags |= MATCH_GLOBREP|MATCH_ANY; -- p++; -- } -+ if (mflags & MATCH_GLOBREP) -+ mflags |= MATCH_ANY; - else if (pat && pat[0] == '#') - { - mflags |= MATCH_BEG; -Index: y.tab.c ---- y.tab.c.orig 2006-09-25 14:15:16 +0200 -+++ y.tab.c 2006-12-06 13:39:36 +0100 -@@ -2359,6 +2359,7 @@ - #define PST_CMDTOKEN 0x1000 /* command token OK - unused */ - #define PST_COMPASSIGN 0x2000 /* parsing x=(...) compound assignment */ - #define PST_ASSIGNOK 0x4000 /* assignment statement ok in this context */ -+#define PST_REGEXP 0x8000 /* parsing an ERE/BRE as a single word */ - - /* Initial size to allocate for tokens, and the - amount to grow them by. */ -@@ -3921,6 +3922,9 @@ - return (character); - } - -+ if (parser_state & PST_REGEXP) -+ goto tokword; -+ - /* Shell meta-characters. */ - if MBTEST(shellmeta (character) && ((parser_state & PST_DBLPAREN) == 0)) - { -@@ -4028,6 +4032,7 @@ - if MBTEST(character == '-' && (last_read_token == LESS_AND || last_read_token == GREATER_AND)) - return (character); - -+tokword: - /* Okay, if we got this far, we have to read a word. Read one, - and then check it against the known ones. */ - result = read_token_word (character); -@@ -4065,7 +4070,7 @@ - /* itrace("parse_matched_pair: open = %c close = %c", open, close); */ - count = 1; - pass_next_character = backq_backslash = was_dollar = in_comment = 0; -- check_comment = (flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0; -+ check_comment = (flags & P_COMMAND) && qc != '`' && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0; - - /* RFLAGS is the set of flags we want to pass to recursive calls. */ - rflags = (qc == '"') ? P_DQUOTE : (flags & P_DQUOTE); -@@ -4532,8 +4537,11 @@ - if (tok == WORD && test_binop (yylval.word->word)) - op = yylval.word; - #if defined (COND_REGEXP) -- else if (tok == WORD && STREQ (yylval.word->word,"=~")) -- op = yylval.word; -+ else if (tok == WORD && STREQ (yylval.word->word, "=~")) -+ { -+ op = yylval.word; -+ parser_state |= PST_REGEXP; -+ } - #endif - else if (tok == '<' || tok == '>') - op = make_word_from_token (tok); /* ( */ -@@ -4564,6 +4572,7 @@ - - /* rhs */ - tok = read_token (READ); -+ parser_state &= ~PST_REGEXP; - if (tok == WORD) - { - tright = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL); -@@ -4749,9 +4758,34 @@ - goto next_character; - } - -+#ifdef COND_REGEXP -+ /* When parsing a regexp as a single word inside a conditional command, -+ we need to special-case characters special to both the shell and -+ regular expressions. Right now, that is only '(' and '|'. */ /*)*/ -+ if MBTEST((parser_state & PST_REGEXP) && (character == '(' || character == '|')) /*)*/ -+ { -+ if (character == '|') -+ goto got_character; -+ -+ push_delimiter (dstack, character); -+ ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0); -+ pop_delimiter (dstack); -+ if (ttok == &matched_pair_error) -+ return -1; /* Bail immediately. */ -+ RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2, -+ token_buffer_size, TOKEN_DEFAULT_GROW_SIZE); -+ token[token_index++] = character; -+ strcpy (token + token_index, ttok); -+ token_index += ttoklen; -+ FREE (ttok); -+ dollar_present = all_digit_token = 0; -+ goto next_character; -+ } -+#endif /* COND_REGEXP */ -+ - #ifdef EXTENDED_GLOB - /* Parse a ksh-style extended pattern matching specification. */ -- if (extended_glob && PATTERN_CHAR (character)) -+ if MBTEST(extended_glob && PATTERN_CHAR (character)) - { - peek_char = shell_getc (1); - if MBTEST(peek_char == '(') /* ) */ + # for chet + reconfig: force ----------------------------------------------------------------------------- -Do not require autoconf. Fixes build on Solaris 10 8/07 u4 on sparc64 +Fix Bash getcwd(3) run-time issue seen on Solaris where size argument +of 0 does not malloc buffer as expected by Bash code. -Index: Makefile.in ---- Makefile.in.orig 2006-08-17 20:03:35 +0200 -+++ Makefile.in 2007-10-15 13:00:34 +0200 -@@ -682,13 +682,9 @@ - stamp-h: config.status $(srcdir)/config.h.in $(srcdir)/config-top.h $(srcdir)/config-bot.h - CONFIG_FILES= CONFIG_HEADERS=config.h $(SHELL) ./config.status +Index: builtins/common.c +--- builtins/common.c.orig 2011-01-05 23:51:26.000000000 +0100 ++++ builtins/common.c 2011-02-21 18:56:01.000000000 +0100 +@@ -553,10 +553,11 @@ --config.status: $(srcdir)/configure -+config.status: - $(SHELL) ./config.status --recheck + if (the_current_working_directory == 0) + { ++ char *t = xmalloc(PATH_MAX); + #if defined (GETCWD_BROKEN) +- the_current_working_directory = getcwd (0, PATH_MAX); ++ the_current_working_directory = getcwd (t, PATH_MAX); + #else +- the_current_working_directory = getcwd (0, 0); ++ the_current_working_directory = getcwd (t, PATH_MAX); + #endif + if (the_current_working_directory == 0) + { + +----------------------------------------------------------------------------- + +Fix building under Linux. + +Index: externs.h +--- externs.h.orig 2010-11-30 02:59:20.000000000 +0100 ++++ externs.h 2011-02-21 18:56:01.000000000 +0100 +@@ -25,6 +25,7 @@ + # define _EXTERNS_H_ --# comment out for distribution --$(srcdir)/configure: $(srcdir)/configure.in $(srcdir)/aclocal.m4 $(srcdir)/config.h.in -- cd $(srcdir) && autoconf -- - # for chet - reconfig: force - sh $(srcdir)/configure -C + #include "stdc.h" ++#include + + /* Functions from expr.c. */ + extern intmax_t evalexp __P((char *, int *)); +