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;
        }




Reply via email to