Make string match -rnv work

Fixes #3098.
This commit is contained in:
Fabian Homborg 2016-05-31 23:14:03 +02:00 committed by Kurtis Rader
parent 7cf6ef675a
commit f63f6e54fa
3 changed files with 13 additions and 9 deletions

View file

@ -450,15 +450,16 @@ class pcre2_matcher_t: public string_matcher_t
const wchar_t *argv0; const wchar_t *argv0;
compiled_regex_t regex; compiled_regex_t regex;
int report_match(const wchar_t *arg, int pcre2_rc) int report_match(const wchar_t *arg, int pcre2_rc) {
{ // Return values: -1 = error, 0 = no match, 1 = match.
// Return values: -1 = error, 0 = no match, 1 = match if (pcre2_rc == PCRE2_ERROR_NOMATCH) {
if (pcre2_rc == PCRE2_ERROR_NOMATCH) if (opts.invert_match && !opts.quiet) {
{ if (opts.index) {
if (opts.invert_match && !opts.quiet) streams.out.append_format(L"1 %lu\n", wcslen(arg));
{ } else {
streams.out.append(arg); streams.out.append(arg);
streams.out.push_back(L'\n'); streams.out.push_back(L'\n');
}
} }
return opts.invert_match ? 1 : 0; return opts.invert_match ? 1 : 0;

View file

@ -88,3 +88,5 @@ string length 2>/dev/null; or echo "missing argument returns 0"
string match -r -v "[dcantg].*" dog can cat diz; or echo "no regexp invert match" string match -r -v "[dcantg].*" dog can cat diz; or echo "no regexp invert match"
string match -v "???" dog can cat diz; or echo "no glob invert match" string match -v "???" dog can cat diz; or echo "no glob invert match"
string match -rvn a bbb

View file

@ -62,3 +62,4 @@ invalid argument error
missing argument returns 0 missing argument returns 0
no regexp invert match no regexp invert match
no glob invert match no glob invert match
1 3