bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Bash-3.1 Official Patch 15


From: Chet Ramey
Subject: Bash-3.1 Official Patch 15
Date: Fri, 31 Mar 2006 13:08:18 -0500

                             BASH PATCH REPORT
                             =================

Bash-Release: 3.1
Patch-ID: bash31-015

Bug-Reported-by: Benoit Vila
Bug-Reference-ID: <43FCA614.1090108@free.fr>
Bug-Reference-URL: 
http://lists.gnu.org/archive/html/bug-bash/2006-02/msg00058.html

Bug-Description:

A problem with the extended globbing code prevented dots from matching
filenames when used in some extended matching patterns.

Patch:

*** ../bash-3.1-patched/lib/glob/sm_loop.c      Sun Oct 16 21:21:04 2005
--- lib/glob/sm_loop.c  Mon Feb 27 17:18:43 2006
***************
*** 639,643 ****
    CHAR *pnext;                        /* pointer to next sub-pattern */
    CHAR *srest;                        /* pointer to rest of string */
!   int m1, m2;
  
  #if DEBUG_MATCHING
--- 638,642 ----
    CHAR *pnext;                        /* pointer to next sub-pattern */
    CHAR *srest;                        /* pointer to rest of string */
!   int m1, m2, xflags;         /* xflags = flags passed to recursive matches */
  
  #if DEBUG_MATCHING
***************
*** 645,648 ****
--- 644,648 ----
  fprintf(stderr, "extmatch: s = %s; se = %s\n", s, se);
  fprintf(stderr, "extmatch: p = %s; pe = %s\n", p, pe);
+ fprintf(stderr, "extmatch: flags = %d\n", flags);
  #endif
  
***************
*** 678,683 ****
                 multiple matches of the pattern. */
              if (m1)
!               m2 = (GMATCH (srest, se, prest, pe, flags) == 0) ||
!                     (s != srest && GMATCH (srest, se, p - 1, pe, flags) == 0);
              if (m1 && m2)
                return (0);
--- 678,687 ----
                 multiple matches of the pattern. */
              if (m1)
!               {
!                 /* if srest > s, we are not at start of string */
!                 xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
!                 m2 = (GMATCH (srest, se, prest, pe, xflags) == 0) ||
!                       (s != srest && GMATCH (srest, se, p - 1, pe, xflags) == 
0);
!               }
              if (m1 && m2)
                return (0);
***************
*** 705,710 ****
          for ( ; srest <= se; srest++)
            {
              if (GMATCH (s, srest, psub, pnext - 1, flags) == 0 &&
!                 GMATCH (srest, se, prest, pe, flags) == 0)
                return (0);
            }
--- 709,716 ----
          for ( ; srest <= se; srest++)
            {
+             /* if srest > s, we are not at start of string */
+             xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
              if (GMATCH (s, srest, psub, pnext - 1, flags) == 0 &&
!                 GMATCH (srest, se, prest, pe, xflags) == 0)
                return (0);
            }
***************
*** 727,731 ****
                break;
            }
!         if (m1 == 0 && GMATCH (srest, se, prest, pe, flags) == 0)
            return (0);
        }
--- 733,739 ----
                break;
            }
!         /* if srest > s, we are not at start of string */
!         xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
!         if (m1 == 0 && GMATCH (srest, se, prest, pe, xflags) == 0)
            return (0);
        }
*** ../bash-3.1/patchlevel.h    Wed Jul 20 13:58:20 2005
--- patchlevel.h        Wed Dec  7 13:48:42 2005
***************
*** 26,30 ****
     looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 14
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
     looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 15
  
  #endif /* _PATCHLEVEL_H_ */

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
( ``Discere est Dolere'' -- chet )
                                       Live Strong.  No day but today.
Chet Ramey, ITS, CWRU    chet@case.edu    http://cnswww.cns.cwru.edu/~chet/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]