author | "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> |
Sun Jul 01 21:25:03 2007 +0000 (2007-07-01) | |
changeset 187 | 0772186bc60f |
permissions | -rw-r--r-- |
yann@1 | 1 |
2001-11-29 Jakub Jelinek <jakub@redhat.com> |
yann@1 | 2 |
|
yann@1 | 3 |
* sysdeps/generic/glob.c (next_brace_sub): Return NULL if braces |
yann@1 | 4 |
don't match, fix {{a,b},c} globbing, clean up. |
yann@1 | 5 |
Patch by Flavio Veloso <flaviovs@magnux.com>. |
yann@1 | 6 |
|
yann@1 | 7 |
--- libc/sysdeps/generic/glob.c.jj Thu Aug 23 18:49:29 2001 |
yann@1 | 8 |
+++ libc/sysdeps/generic/glob.c Thu Nov 29 13:17:21 2001 |
yann@1 | 9 |
@@ -355,42 +355,14 @@ static |
yann@1 | 10 |
inline |
yann@1 | 11 |
#endif |
yann@1 | 12 |
const char * |
yann@1 | 13 |
-next_brace_sub (begin) |
yann@1 | 14 |
- const char *begin; |
yann@1 | 15 |
+next_brace_sub (cp) |
yann@1 | 16 |
+ const char *cp; |
yann@1 | 17 |
{ |
yann@1 | 18 |
unsigned int depth = 0; |
yann@1 | 19 |
- const char *cp = begin; |
yann@1 | 20 |
- |
yann@1 | 21 |
- while (1) |
yann@1 | 22 |
- { |
yann@1 | 23 |
- if (depth == 0) |
yann@1 | 24 |
- { |
yann@1 | 25 |
- if (*cp != ',' && *cp != '}' && *cp != '\0') |
yann@1 | 26 |
- { |
yann@1 | 27 |
- if (*cp == '{') |
yann@1 | 28 |
- ++depth; |
yann@1 | 29 |
- ++cp; |
yann@1 | 30 |
- continue; |
yann@1 | 31 |
- } |
yann@1 | 32 |
- } |
yann@1 | 33 |
- else |
yann@1 | 34 |
- { |
yann@1 | 35 |
- while (*cp != '\0' && (*cp != '}' || depth > 0)) |
yann@1 | 36 |
- { |
yann@1 | 37 |
- if (*cp == '}') |
yann@1 | 38 |
- --depth; |
yann@1 | 39 |
- ++cp; |
yann@1 | 40 |
- } |
yann@1 | 41 |
- if (*cp == '\0') |
yann@1 | 42 |
- /* An incorrectly terminated brace expression. */ |
yann@1 | 43 |
- return NULL; |
yann@1 | 44 |
- |
yann@1 | 45 |
- continue; |
yann@1 | 46 |
- } |
yann@1 | 47 |
- break; |
yann@1 | 48 |
- } |
yann@1 | 49 |
- |
yann@1 | 50 |
- return cp; |
yann@1 | 51 |
+ while (*cp != '\0' && (*cp != '}' || depth--) && (*cp != ',' || depth)) |
yann@1 | 52 |
+ if (*cp++ == '{') |
yann@1 | 53 |
+ depth++; |
yann@1 | 54 |
+ return *cp != '\0' ? cp : NULL; |
yann@1 | 55 |
} |
yann@1 | 56 |
|
yann@1 | 57 |
#endif /* !GLOB_ONLY_P */ |