vapier 14/03/20 19:45:36 Added: bash-4.3-extglob-skipname.patch bash-4.3-compound-array-empty-value.patch Log: Add more fixes from upstream. (Portage version: 2.2.8-r1/cvs/Linux x86_64, signed Manifest commit with key D2E96200)
Revision Changes Path 1.1 app-shells/bash/files/bash-4.3-extglob-skipname.patch file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-shells/bash/files/bash-4.3-extglob-skipname.patch?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-shells/bash/files/bash-4.3-extglob-skipname.patch?rev=1.1&content-type=text/plain Index: bash-4.3-extglob-skipname.patch =================================================================== *** ../bash-4.3/lib/glob/gmisc.c 2013-10-28 14:45:25.000000000 -0400 --- lib/glob/gmisc.c 2014-03-19 09:16:08.000000000 -0400 *************** *** 211,214 **** --- 211,215 ---- case '!': case '@': + case '?': return (pat[1] == LPAREN); default: *** ../bash-4.3/lib/glob/glob.c 2014-01-31 21:43:51.000000000 -0500 --- lib/glob/glob.c 2014-03-20 09:01:26.000000000 -0400 *************** *** 180,202 **** int flags; { ! char *pp, *pe, *t; ! int n, r; pp = pat + 2; ! pe = pp + strlen (pp) - 1; /*(*/ ! if (*pe != ')') ! return 0; ! if ((t = strchr (pp, '|')) == 0) /* easy case first */ { *pe = '\0'; r = skipname (pp, dname, flags); /*(*/ *pe = ')'; return r; } while (t = glob_patscan (pp, pe, '|')) { n = t[-1]; t[-1] = '\0'; r = skipname (pp, dname, flags); t[-1] = n; if (r == 0) /* if any pattern says not skip, we don't skip */ --- 180,215 ---- int flags; { ! char *pp, *pe, *t, *se; ! int n, r, negate; + negate = *pat == '!'; pp = pat + 2; ! se = pp + strlen (pp) - 1; /* end of string */ ! pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */ ! /* we should check for invalid extglob pattern here */ ! /* if pe != se we have more of the pattern at the end of the extglob ! pattern. Check the easy case first ( */ ! if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0) { *pe = '\0'; + #if defined (HANDLE_MULTIBYTE) + r = mbskipname (pp, dname, flags); + #else r = skipname (pp, dname, flags); /*(*/ + #endif *pe = ')'; return r; } + + /* check every subpattern */ while (t = glob_patscan (pp, pe, '|')) { n = t[-1]; t[-1] = '\0'; + #if defined (HANDLE_MULTIBYTE) + r = mbskipname (pp, dname, flags); + #else r = skipname (pp, dname, flags); + #endif t[-1] = n; if (r == 0) /* if any pattern says not skip, we don't skip */ *************** *** 205,219 **** } /*(*/ ! if (pp == pe) /* glob_patscan might find end of pattern */ return r; ! *pe = '\0'; ! # if defined (HANDLE_MULTIBYTE) ! r = mbskipname (pp, dname, flags); /*(*/ ! # else ! r = skipname (pp, dname, flags); /*(*/ ! # endif ! *pe = ')'; ! return r; } #endif --- 218,227 ---- } /*(*/ ! /* glob_patscan might find end of pattern */ ! if (pp == se) return r; ! /* but if it doesn't then we didn't match a leading dot */ ! return 0; } #endif *************** *** 278,289 **** { #if EXTENDED_GLOB ! wchar_t *pp, *pe, *t, n; ! int r; pp = pat + 2; ! pe = pp + wcslen (pp) - 1; /*(*/ ! if (*pe != L')') ! return 0; ! if ((t = wcschr (pp, L'|')) == 0) { *pe = L'\0'; --- 286,298 ---- { #if EXTENDED_GLOB ! wchar_t *pp, *pe, *t, n, *se; ! int r, negate; + negate = *pat == L'!'; pp = pat + 2; ! se = pp + wcslen (pp) - 1; /*(*/ ! pe = glob_patscan_wc (pp, se, 0); ! ! if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0) { *pe = L'\0'; *************** *** 292,295 **** --- 301,306 ---- return r; } + + /* check every subpattern */ while (t = glob_patscan_wc (pp, pe, '|')) { *************** *** 306,313 **** return r; ! *pe = L'\0'; ! r = wchkname (pp, dname); /*(*/ ! *pe = L')'; ! return r; #else return (wchkname (pat, dname)); --- 317,322 ---- return r; ! /* but if it doesn't then we didn't match a leading dot */ ! return 0; #else return (wchkname (pat, dname)); 1.1 app-shells/bash/files/bash-4.3-compound-array-empty-value.patch file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-shells/bash/files/bash-4.3-compound-array-empty-value.patch?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-shells/bash/files/bash-4.3-compound-array-empty-value.patch?rev=1.1&content-type=text/plain Index: bash-4.3-compound-array-empty-value.patch =================================================================== *** ../bash-4.3/arrayfunc.c 2013-08-02 16:19:59.000000000 -0400 --- arrayfunc.c 2014-03-18 11:08:15.000000000 -0400 *************** *** 598,601 **** --- 598,606 ---- { val = expand_assignment_string_to_string (val, 0); + if (val == 0) + { + val = (char *)xmalloc (1); + val[0] = '\0'; /* like do_assignment_internal */ + } free_val = 1; }