[BACK]Return to glob.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / lib / libc / gen

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/lib/libc/gen/glob.c between version 1.31 and 1.31.8.2

version 1.31, 2011/10/30 21:53:43 version 1.31.8.2, 2013/06/23 06:21:05
Line 132  struct glob_limit {
Line 132  struct glob_limit {
 #define M_MASK          0xffff  #define M_MASK          0xffff
 #define M_ASCII         0x00ff  #define M_ASCII         0x00ff
   
 typedef u_short Char;  typedef unsigned short Char;
   
 #else  #else
   
Line 183  int
Line 183  int
 glob(const char * __restrict pattern, int flags, int (*errfunc)(const char *,  glob(const char * __restrict pattern, int flags, int (*errfunc)(const char *,
     int), glob_t * __restrict pglob)      int), glob_t * __restrict pglob)
 {  {
         const u_char *patnext;          const unsigned char *patnext;
         int c;          int c;
         Char *bufnext, *bufend, patbuf[MAXPATHLEN+1];          Char *bufnext, *bufend, patbuf[MAXPATHLEN+1];
         struct glob_limit limit = { 0, 0, 0, 0 };          struct glob_limit limit = { 0, 0, 0, 0 };
   
         _DIAGASSERT(pattern != NULL);          _DIAGASSERT(pattern != NULL);
   
         patnext = (const u_char *) pattern;          patnext = (const unsigned char *) pattern;
         if (!(flags & GLOB_APPEND)) {          if (!(flags & GLOB_APPEND)) {
                 pglob->gl_pathc = 0;                  pglob->gl_pathc = 0;
                 pglob->gl_pathv = NULL;                  pglob->gl_pathv = NULL;
Line 612  glob2(Char *pathbuf, Char *pathend, Char
Line 612  glob2(Char *pathbuf, Char *pathend, Char
         const Char *p;          const Char *p;
         Char *q;          Char *q;
         int anymeta;          int anymeta;
         Char *pend;  
         ptrdiff_t diff;  
   
         _DIAGASSERT(pathbuf != NULL);          _DIAGASSERT(pathbuf != NULL);
         _DIAGASSERT(pathend != NULL);          _DIAGASSERT(pathend != NULL);
Line 665  glob2(Char *pathbuf, Char *pathend, Char
Line 663  glob2(Char *pathbuf, Char *pathend, Char
                         *q++ = *p++;                          *q++ = *p++;
                 }                  }
   
                 /*                  if (!anymeta) {
                  * No expansion, or path ends in slash-dot shash-dot-dot,  
                  * do next segment.  
                  */  
                 if (pglob->gl_flags & GLOB_PERIOD) {  
                         for (pend = pathend; pend > pathbuf && pend[-1] == '/';  
                             pend--)  
                                 continue;  
                         diff = pend - pathbuf;  
                 } else {  
                         /* XXX: GCC */  
                         diff = 0;  
                         pend = pathend;  
                 }  
   
                 if ((!anymeta) ||  
                     ((pglob->gl_flags & GLOB_PERIOD) &&  
                      (diff >= 1 && pend[-1] == DOT) &&  
                      (diff >= 2 && (pend[-2] == SLASH || pend[-2] == DOT)) &&  
                      (diff < 3 || pend[-3] == SLASH))) {  
                         pathend = q;                          pathend = q;
                         pattern = p;                          pattern = p;
                         while (*pattern == SEP) {                          while (*pattern == SEP) {
Line 791  glob3(Char *pathbuf, Char *pathend, Char
Line 770  glob3(Char *pathbuf, Char *pathend, Char
         else          else
                 readdirfunc = (struct dirent *(*)(void *)) readdir;                  readdirfunc = (struct dirent *(*)(void *)) readdir;
         while ((dp = (*readdirfunc)(dirp)) != NULL) {          while ((dp = (*readdirfunc)(dirp)) != NULL) {
                 u_char *sc;                  unsigned char *sc;
                 Char *dc;                  Char *dc;
   
                 if ((pglob->gl_flags & GLOB_LIMIT) &&                  if ((pglob->gl_flags & GLOB_LIMIT) &&
Line 822  glob3(Char *pathbuf, Char *pathend, Char
Line 801  glob3(Char *pathbuf, Char *pathend, Char
                  * The resulting string contains EOS, so we can                   * The resulting string contains EOS, so we can
                  * use the pathlim character, if it is the nul                   * use the pathlim character, if it is the nul
                  */                   */
                 for (sc = (u_char *) dp->d_name, dc = pathend;                  for (sc = (unsigned char *) dp->d_name, dc = pathend;
                      dc <= pathlim && (*dc++ = *sc++) != EOS;)                       dc <= pathlim && (*dc++ = *sc++) != EOS;)
                         continue;                          continue;
   

Legend:
Removed from v.1.31  
changed lines
  Added in v.1.31.8.2

CVSweb <webmaster@jp.NetBSD.org>