Merge branch 'nd/wildmatch-double-asterisk'
A pattern with '**' that does not have a slash on either side used to be an invalid one, but the code now treats such double-asterisks the same way as two normal asterisks that happen to be adjacent to each other. * nd/wildmatch-double-asterisk: wildmatch: change behavior of "foo**bar" in WM_PATHNAME mode
This commit is contained in:
commit
25e4da89ed
@ -129,7 +129,8 @@ full pathname may have special meaning:
|
|||||||
matches zero or more directories. For example, "`a/**/b`"
|
matches zero or more directories. For example, "`a/**/b`"
|
||||||
matches "`a/b`", "`a/x/b`", "`a/x/y/b`" and so on.
|
matches "`a/b`", "`a/x/b`", "`a/x/y/b`" and so on.
|
||||||
|
|
||||||
- Other consecutive asterisks are considered invalid.
|
- Other consecutive asterisks are considered regular asterisks and
|
||||||
|
will match according to the previous rules.
|
||||||
|
|
||||||
NOTES
|
NOTES
|
||||||
-----
|
-----
|
||||||
|
@ -237,7 +237,7 @@ match 0 0 0 0 foobar 'foo\*bar'
|
|||||||
match 1 1 1 1 'f\oo' 'f\\oo'
|
match 1 1 1 1 'f\oo' 'f\\oo'
|
||||||
match 1 1 1 1 ball '*[al]?'
|
match 1 1 1 1 ball '*[al]?'
|
||||||
match 0 0 0 0 ten '[ten]'
|
match 0 0 0 0 ten '[ten]'
|
||||||
match 0 0 1 1 ten '**[!te]'
|
match 1 1 1 1 ten '**[!te]'
|
||||||
match 0 0 0 0 ten '**[!ten]'
|
match 0 0 0 0 ten '**[!ten]'
|
||||||
match 1 1 1 1 ten 't[a-g]n'
|
match 1 1 1 1 ten 't[a-g]n'
|
||||||
match 0 0 0 0 ten 't[!a-g]n'
|
match 0 0 0 0 ten 't[!a-g]n'
|
||||||
@ -253,7 +253,7 @@ match 1 1 1 1 ']' ']'
|
|||||||
# Extended slash-matching features
|
# Extended slash-matching features
|
||||||
match 0 0 1 1 'foo/baz/bar' 'foo*bar'
|
match 0 0 1 1 'foo/baz/bar' 'foo*bar'
|
||||||
match 0 0 1 1 'foo/baz/bar' 'foo**bar'
|
match 0 0 1 1 'foo/baz/bar' 'foo**bar'
|
||||||
match 0 0 1 1 'foobazbar' 'foo**bar'
|
match 1 1 1 1 'foobazbar' 'foo**bar'
|
||||||
match 1 1 1 1 'foo/baz/bar' 'foo/**/bar'
|
match 1 1 1 1 'foo/baz/bar' 'foo/**/bar'
|
||||||
match 1 1 0 0 'foo/baz/bar' 'foo/**/**/bar'
|
match 1 1 0 0 'foo/baz/bar' 'foo/**/**/bar'
|
||||||
match 1 1 1 1 'foo/b/a/z/bar' 'foo/**/bar'
|
match 1 1 1 1 'foo/b/a/z/bar' 'foo/**/bar'
|
||||||
|
@ -104,8 +104,8 @@ static int dowild(const uchar *p, const uchar *text, unsigned int flags)
|
|||||||
dowild(p + 1, text, flags) == WM_MATCH)
|
dowild(p + 1, text, flags) == WM_MATCH)
|
||||||
return WM_MATCH;
|
return WM_MATCH;
|
||||||
match_slash = 1;
|
match_slash = 1;
|
||||||
} else
|
} else /* WM_PATHNAME is set */
|
||||||
return WM_ABORT_MALFORMED;
|
match_slash = 0;
|
||||||
} else
|
} else
|
||||||
/* without WM_PATHNAME, '*' == '**' */
|
/* without WM_PATHNAME, '*' == '**' */
|
||||||
match_slash = flags & WM_PATHNAME ? 0 : 1;
|
match_slash = flags & WM_PATHNAME ? 0 : 1;
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
#define WM_CASEFOLD 1
|
#define WM_CASEFOLD 1
|
||||||
#define WM_PATHNAME 2
|
#define WM_PATHNAME 2
|
||||||
|
|
||||||
#define WM_ABORT_MALFORMED 2
|
|
||||||
#define WM_NOMATCH 1
|
#define WM_NOMATCH 1
|
||||||
#define WM_MATCH 0
|
#define WM_MATCH 0
|
||||||
#define WM_ABORT_ALL -1
|
#define WM_ABORT_ALL -1
|
||||||
|
Loading…
Reference in New Issue
Block a user