Hello community, here is the log from the commit of package bash for openSUSE:Factory checked in at Mon Mar 9 00:17:34 CET 2009. -------- --- bash/bash.changes 2009-03-04 15:06:03.000000000 +0100 +++ /mounts/work_src_done/STABLE/bash/bash.changes 2009-03-04 17:36:58.512501218 +0100 @@ -1,0 +2,5 @@ +Wed Mar 4 17:36:35 CET 2009 - werner@suse.de + +- Use patches from bug-bash@gnu.org to make it work + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- bash-4.0-parenthese.dif ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ bash.spec ++++++ --- /var/tmp/diff_new_pack.B13608/_old 2009-03-09 00:15:58.000000000 +0100 +++ /var/tmp/diff_new_pack.B13608/_new 2009-03-09 00:15:58.000000000 +0100 @@ -27,7 +27,7 @@ Suggests: command-not-found AutoReqProv: on Version: 4.0 -Release: 4 +Release: 6 Summary: The GNU Bourne-Again Shell Url: http://www.gnu.org/software/bash/bash.html Source0: ftp://ftp.gnu.org/gnu/bash/bash-%{bash_vers}.tar.bz2 @@ -53,7 +53,6 @@ Patch15: bash-3.2-longjmp.dif Patch16: bash-4.0-setlocale.dif Patch17: bash-4.0-complete.dif -Patch18: bash-4.0-parenthese.dif Patch20: readline-%{rl_vers}.dif Patch21: readline-4.3-input.dif Patch22: readline-6.0-wrap.patch @@ -86,7 +85,7 @@ Provides: bash:%{_infodir}/bash.info.gz PreReq: %install_info_prereq Version: 4.0 -Release: 4 +Release: 6 AutoReqProv: on %description -n bash-doc @@ -106,7 +105,7 @@ Group: System/Libraries Provides: bash:/%{_lib}/libreadline.so.%{rl_major} Version: 6.0 -Release: 4 +Release: 6 Recommends: readline-doc = %{version} # bug437293 %ifarch ppc64 @@ -135,7 +134,7 @@ Group: Development/Libraries/C and C++ Provides: bash:%{_libdir}/libreadline.a Version: 6.0 -Release: 4 +Release: 6 Requires: libreadline6 = %{version} Requires: ncurses-devel Recommends: readline-doc = %{version} @@ -164,7 +163,7 @@ Provides: readline:%{_infodir}/readline.info.gz PreReq: %install_info_prereq Version: 6.0 -Release: 4 +Release: 6 AutoReqProv: on %description -n readline-doc @@ -200,7 +199,6 @@ %patch15 -p0 -b .longjmp %patch16 -p0 -b .setlocale %patch17 -p0 -b .complete -#%patch18 -p0 -b .parenthese %patch21 -p0 -b .zerotty %patch22 -p0 -b .wrap %patch23 -p0 -b .conf @@ -510,6 +508,8 @@ %changelog * Wed Mar 04 2009 werner@suse.de +- Use patches from bug-bash@gnu.org to make it work +* Wed Mar 04 2009 werner@suse.de - Patch for bnc#481817 does not work in any case * Wed Mar 04 2009 werner@suse.de - My last patch for bnc#470548 send to bug-bash@gnu.org was not ++++++ bash-4.0-patches.tar.bz2 ++++++ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bash-4.0-patches/bash-4.0-associative-array-subscripts.patch new/bash-4.0-patches/bash-4.0-associative-array-subscripts.patch --- old/bash-4.0-patches/bash-4.0-associative-array-subscripts.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/bash-4.0-patches/bash-4.0-associative-array-subscripts.patch 2009-03-04 17:19:20.000000000 +0100 @@ -0,0 +1,230 @@ +*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500 +--- parse.y 2009-02-25 17:25:56.000000000 -0500 +*************** +*** 2916,2919 **** +--- 2919,2923 ---- + #define P_COMMAND 0x08 /* parsing a command, so look for comments */ + #define P_BACKQUOTE 0x10 /* parsing a backquoted command substitution */ ++ #define P_ARRAYSUB 0x20 /* parsing a [...] array subscript for assignment */ + + /* Lexical state while parsing a grouping construct or $(...). */ +*************** +*** 3130,3133 **** +--- 3134,3139 ---- + FREE (nestret); + } ++ else if ((flags & P_ARRAYSUB) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */ ++ goto parse_dollar_word; + } + /* Parse an old-style command substitution within double quotes as a +*************** +*** 3146,3149 **** +--- 3152,3156 ---- + /* check for $(), $[], or ${} inside quoted string. */ + { ++ parse_dollar_word: + if (open == ch) /* undo previous increment */ + count--; +*************** +*** 4249,4253 **** + (token_index == 0 && (parser_state&PST_COMPASSIGN)))) + { +! ttok = parse_matched_pair (cd, '[', ']', &ttoklen, 0); + if (ttok == &matched_pair_error) + return -1; /* Bail immediately. */ +--- 4256,4260 ---- + (token_index == 0 && (parser_state&PST_COMPASSIGN)))) + { +! ttok = parse_matched_pair (cd, '[', ']', &ttoklen, P_ARRAYSUB); + if (ttok == &matched_pair_error) + return -1; /* Bail immediately. */ +*** ../bash-4.0/arrayfunc.c 2009-01-04 14:32:21.000000000 -0500 +--- arrayfunc.c 2009-02-25 07:58:54.000000000 -0500 +*************** +*** 605,666 **** + } + +! /* This function assumes s[i] == '['; returns with s[ret] == ']' if +! an array subscript is correctly parsed. */ +! int +! skipsubscript (s, i) +! const char *s; +! int i; +! { +! int count, c; +! #if defined (HANDLE_MULTIBYTE) +! mbstate_t state, state_bak; +! size_t slength, mblength; +! #endif +! +! #if defined (HANDLE_MULTIBYTE) +! memset (&state, '\0', sizeof (mbstate_t)); +! slength = strlen (s + i); +! #endif +! +! count = 1; +! while (count) +! { +! /* Advance one (possibly multibyte) character in S starting at I. */ +! #if defined (HANDLE_MULTIBYTE) +! if (MB_CUR_MAX > 1) +! { +! state_bak = state; +! mblength = mbrlen (s + i, slength, &state); +! +! if (MB_INVALIDCH (mblength)) +! { +! state = state_bak; +! i++; +! slength--; +! } +! else if (MB_NULLWCH (mblength)) +! return i; +! else +! { +! i += mblength; +! slength -= mblength; +! } +! } +! else +! #endif +! ++i; +! +! c = s[i]; +! +! if (c == 0) +! break; +! else if (c == '[') +! count++; +! else if (c == ']') +! count--; +! } +! +! return i; +! } + + /* This function is called with SUB pointing to just after the beginning +--- 605,609 ---- + } + +! /* skipsubscript moved to subst.c to use private functions. 2009/02/24. */ + + /* This function is called with SUB pointing to just after the beginning +*** ../bash-4.0/subst.c 2009-01-28 14:34:12.000000000 -0500 +--- subst.c 2009-02-25 09:18:33.000000000 -0500 +*************** +*** 223,226 **** +--- 223,227 ---- + static char *extract_delimited_string __P((char *, int *, char *, char *, char *, int)); + static char *extract_dollar_brace_string __P((char *, int *, int, int)); ++ static int skip_matched_pair __P((const char *, int, int, int, int)); + + static char *pos_params __P((char *, int, int, int)); +*************** +*** 1375,1378 **** +--- 1376,1480 ---- + #define CQ_RETURN(x) do { no_longjmp_on_fatal_error = 0; return (x); } while (0) + ++ /* This function assumes s[i] == open; returns with s[ret] == close; used to ++ parse array subscripts. FLAGS currently unused. */ ++ static int ++ skip_matched_pair (string, start, open, close, flags) ++ const char *string; ++ int start, open, close, flags; ++ { ++ int i, pass_next, backq, si, c, count; ++ size_t slen; ++ char *temp, *ss; ++ DECLARE_MBSTATE; ++ ++ slen = strlen (string + start) + start; ++ no_longjmp_on_fatal_error = 1; ++ ++ i = start + 1; /* skip over leading bracket */ ++ count = 1; ++ pass_next = backq = 0; ++ ss = (char *)string; ++ while (c = string[i]) ++ { ++ if (pass_next) ++ { ++ pass_next = 0; ++ if (c == 0) ++ CQ_RETURN(i); ++ ADVANCE_CHAR (string, slen, i); ++ continue; ++ } ++ else if (c == '\\') ++ { ++ pass_next = 1; ++ i++; ++ continue; ++ } ++ else if (backq) ++ { ++ if (c == '`') ++ backq = 0; ++ ADVANCE_CHAR (string, slen, i); ++ continue; ++ } ++ else if (c == '`') ++ { ++ backq = 1; ++ i++; ++ continue; ++ } ++ else if (c == open) ++ { ++ count++; ++ i++; ++ continue; ++ } ++ else if (c == close) ++ { ++ count--; ++ if (count == 0) ++ break; ++ i++; ++ continue; ++ } ++ else if (c == '\'' || c == '"') ++ { ++ i = (c == '\'') ? skip_single_quoted (ss, slen, ++i) ++ : skip_double_quoted (ss, slen, ++i); ++ /* no increment, the skip functions increment past the closing quote. */ ++ } ++ else if (c == '$' && (string[i+1] == LPAREN || string[i+1] == LBRACE)) ++ { ++ si = i + 2; ++ if (string[si] == '\0') ++ CQ_RETURN(si); ++ ++ if (string[i+1] == LPAREN) ++ temp = extract_delimited_string (ss, &si, "$(", "(", ")", SX_NOALLOC|SX_COMMAND); /* ) */ ++ else ++ temp = extract_dollar_brace_string (ss, &si, 0, SX_NOALLOC); ++ i = si; ++ if (string[i] == '\0') /* don't increment i past EOS in loop */ ++ break; ++ i++; ++ continue; ++ } ++ else ++ ADVANCE_CHAR (string, slen, i); ++ } ++ ++ CQ_RETURN(i); ++ } ++ ++ #if defined (ARRAY_VARS) ++ int ++ skipsubscript (string, start) ++ const char *string; ++ int start; ++ { ++ return (skip_matched_pair (string, start, '[', ']', 0)); ++ } ++ #endif ++ + /* Skip characters in STRING until we find a character in DELIMS, and return + the index of that character. START is the index into string at which we diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bash-4.0-patches/bash-4.0-comsub-backslash-metacharacters.patch new/bash-4.0-patches/bash-4.0-comsub-backslash-metacharacters.patch --- old/bash-4.0-patches/bash-4.0-comsub-backslash-metacharacters.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/bash-4.0-patches/bash-4.0-comsub-backslash-metacharacters.patch 2009-03-04 17:23:14.000000000 +0100 @@ -0,0 +1,15 @@ +*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500 +--- parse.y 2009-02-22 16:08:54.000000000 -0500 +*************** +*** 3307,3311 **** + + /* Meta-characters that can introduce a reserved word. Not perfect yet. */ +! if MBTEST((tflags & LEX_RESWDOK) == 0 && (tflags & LEX_CKCASE) && (tflags & LEX_INCOMMENT) == 0 && shellmeta(ch)) + { + /* Add this character. */ +--- 3307,3311 ---- + + /* Meta-characters that can introduce a reserved word. Not perfect yet. */ +! if MBTEST((tflags & LEX_PASSNEXT) == 0 && (tflags & LEX_RESWDOK) == 0 && (tflags & LEX_CKCASE) && (tflags & LEX_INCOMMENT) == 0 && shellmeta(ch)) + { + /* Add this character. */ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bash-4.0-patches/bash-4.0-comsub-comments.patch new/bash-4.0-patches/bash-4.0-comsub-comments.patch --- old/bash-4.0-patches/bash-4.0-comsub-comments.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/bash-4.0-patches/bash-4.0-comsub-comments.patch 2009-03-04 17:40:23.000000000 +0100 @@ -0,0 +1,29 @@ +*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500 +--- parse.y 2009-03-03 16:58:50.000000000 -0500 +*************** +*** 3172,3175 **** +--- 3179,3187 ---- + } + ++ /* Not exactly right yet, should handle shell metacharacters, too. If ++ any changes are made to this test, make analogous changes to subst.c: ++ extract_delimited_string(). */ ++ #define COMMENT_BEGIN(x) ((x) == '#' && (retind == 0 || ret[retind-1] == '\n' || shellblank (ret[retind - 1]))) ++ + /* Parse a $(...) command substitution. This is messier than I'd like, and + reproduces a lot more of the token-reading code than I'd like. */ +*************** +*** 3365,3369 **** + tflags &= ~LEX_RESWDOK; + } +! else if (shellbreak (ch) == 0) + { + tflags &= ~LEX_RESWDOK; +--- 3377,3383 ---- + tflags &= ~LEX_RESWDOK; + } +! else if MBTEST((tflags & LEX_CKCOMMENT) && COMMENT_BEGIN(ch)) +! ; /* don't turn off LEX_RESWDOK if we're starting a comment */ +! else if MBTEST(shellbreak (ch) == 0) + { + tflags &= ~LEX_RESWDOK; diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bash-4.0-patches/bash-4.0-comsub-herestring.patch new/bash-4.0-patches/bash-4.0-comsub-herestring.patch --- old/bash-4.0-patches/bash-4.0-comsub-herestring.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/bash-4.0-patches/bash-4.0-comsub-herestring.patch 2009-03-04 17:17:23.000000000 +0100 @@ -0,0 +1,20 @@ +*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500 +--- parse.y 2009-02-26 17:22:15.000000000 -0500 +*************** +*** 3395,3400 **** + else + shell_ungetc (peekc); +! tflags |= LEX_HEREDELIM; +! lex_firstind = -1; + continue; + } +--- 3402,3410 ---- + else + shell_ungetc (peekc); +! if (peekc != '<') +! { +! tflags |= LEX_HEREDELIM; +! lex_firstind = -1; +! } + continue; + } diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bash-4.0-patches/bash-4.0-declare-identifier.patch new/bash-4.0-patches/bash-4.0-declare-identifier.patch --- old/bash-4.0-patches/bash-4.0-declare-identifier.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/bash-4.0-patches/bash-4.0-declare-identifier.patch 2009-03-04 17:18:10.000000000 +0100 @@ -0,0 +1,29 @@ +*** ../bash-4.0/builtins/declare.def 2009-01-04 14:32:22.000000000 -0500 +--- builtins/declare.def 2009-02-26 11:40:16.000000000 -0500 +*************** +*** 296,299 **** +--- 296,306 ---- + if (t = strchr (name, '[')) /* ] */ + { ++ /* If offset != 0 we have already validated any array reference */ ++ if (offset == 0 && valid_array_reference (name) == 0) ++ { ++ sh_invalidid (name); ++ assign_error++; ++ NEXT_VARIABLE (); ++ } + subscript_start = t; + *t = '\0'; +*************** +*** 485,489 **** + /* declare -a name[[n]] or declare name[n] makes name an indexed + array variable. */ +! else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0) + var = convert_var_to_array (var); + #endif /* ARRAY_VARS */ +--- 492,496 ---- + /* declare -a name[[n]] or declare name[n] makes name an indexed + array variable. */ +! else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0 && assoc_p (var) == 0) + var = convert_var_to_array (var); + #endif /* ARRAY_VARS */ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bash-4.0-patches/bash-4.0-exit-checkjobs.patch new/bash-4.0-patches/bash-4.0-exit-checkjobs.patch --- old/bash-4.0-patches/bash-4.0-exit-checkjobs.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/bash-4.0-patches/bash-4.0-exit-checkjobs.patch 2009-03-04 17:21:40.000000000 +0100 @@ -0,0 +1,15 @@ +*** ../bash-4.0/builtins/exit.def 2009-01-04 14:32:22.000000000 -0500 +--- builtins/exit.def 2009-02-23 22:56:58.000000000 -0500 +*************** +*** 114,118 **** + if (jobs[i] && STOPPED (i)) + stopmsg = JSTOPPED; +! else if (check_jobs_at_exit && stopmsg == 0 && RUNNING (i)) + stopmsg = JRUNNING; + +--- 114,118 ---- + if (jobs[i] && STOPPED (i)) + stopmsg = JSTOPPED; +! else if (check_jobs_at_exit && stopmsg == 0 && jobs[i] && RUNNING (i)) + stopmsg = JRUNNING; + diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bash-4.0-patches/bash-4.0-pipeline-reserved-word.patch new/bash-4.0-patches/bash-4.0-pipeline-reserved-word.patch --- old/bash-4.0-patches/bash-4.0-pipeline-reserved-word.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/bash-4.0-patches/bash-4.0-pipeline-reserved-word.patch 2009-03-04 17:18:40.000000000 +0100 @@ -0,0 +1,10 @@ +*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500 +--- parse.y 2009-02-25 17:25:56.000000000 -0500 +*************** +*** 4450,4453 **** +--- 4457,4461 ---- + case AND_AND: + case BANG: ++ case BAR_AND: + case DO: + case DONE: diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bash-4.0-patches/bash-4.0-reset-parser-current-token.patch new/bash-4.0-patches/bash-4.0-reset-parser-current-token.patch --- old/bash-4.0-patches/bash-4.0-reset-parser-current-token.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/bash-4.0-patches/bash-4.0-reset-parser-current-token.patch 2009-03-04 17:20:51.000000000 +0100 @@ -0,0 +1,11 @@ +*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500 +--- parse.y 2009-02-25 15:58:25.000000000 -0500 +*************** +*** 2669,2672 **** +--- 2671,2675 ---- + word_desc_to_read = (WORD_DESC *)NULL; + ++ current_token = '\n'; /* XXX */ + last_read_token = '\n'; + token_to_read = '\n'; + diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/bash-4.0-patches/bash-4.0-save-current-token.patch new/bash-4.0-patches/bash-4.0-save-current-token.patch --- old/bash-4.0-patches/bash-4.0-save-current-token.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/bash-4.0-patches/bash-4.0-save-current-token.patch 2009-03-04 17:20:23.000000000 +0100 @@ -0,0 +1,30 @@ +*** ../bash-4.0/parse.y 2009-01-08 08:29:12.000000000 -0500 +--- parse.y 2009-02-23 22:40:55.000000000 -0500 +*************** +*** 1616,1623 **** + int *ret; + +! ret = (int *)xmalloc (3 * sizeof (int)); + ret[0] = last_read_token; + ret[1] = token_before_that; + ret[2] = two_tokens_ago; + return ret; + } +--- 1616,1624 ---- + int *ret; + +! ret = (int *)xmalloc (4 * sizeof (int)); + ret[0] = last_read_token; + ret[1] = token_before_that; + ret[2] = two_tokens_ago; ++ ret[3] = current_token; + return ret; + } +*************** +*** 1632,1635 **** +--- 1633,1637 ---- + token_before_that = ts[1]; + two_tokens_ago = ts[2]; ++ current_token = ts[3]; + } + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org