mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-14 15:20:04 +00:00
(next_brace_sub): Return NULL if braces don't match, fix {{a,b},c} globbing,
clean up.
This commit is contained in:
parent
a0323a1c8f
commit
f47a6ad7db
@ -355,42 +355,14 @@ static
|
||||
inline
|
||||
#endif
|
||||
const char *
|
||||
next_brace_sub (begin)
|
||||
const char *begin;
|
||||
next_brace_sub (cp)
|
||||
const char *cp;
|
||||
{
|
||||
unsigned int depth = 0;
|
||||
const char *cp = begin;
|
||||
|
||||
while (1)
|
||||
{
|
||||
if (depth == 0)
|
||||
{
|
||||
if (*cp != ',' && *cp != '}' && *cp != '\0')
|
||||
{
|
||||
if (*cp == '{')
|
||||
++depth;
|
||||
++cp;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while (*cp != '\0' && (*cp != '}' || depth > 0))
|
||||
{
|
||||
if (*cp == '}')
|
||||
--depth;
|
||||
++cp;
|
||||
}
|
||||
if (*cp == '\0')
|
||||
/* An incorrectly terminated brace expression. */
|
||||
return NULL;
|
||||
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return cp;
|
||||
while (*cp != '\0' && (*cp != '}' || depth--) && (*cp != ',' || depth))
|
||||
if (*cp++ == '{')
|
||||
depth++;
|
||||
return *cp != '\0' ? cp : NULL;
|
||||
}
|
||||
|
||||
#endif /* !GLOB_ONLY_P */
|
||||
|
Loading…
Reference in New Issue
Block a user