diff options
author | Fabian Homborg <FHomborg@gmail.com> | 2016-05-31 23:14:03 +0200 |
---|---|---|
committer | Fabian Homborg <FHomborg@gmail.com> | 2016-05-31 23:24:08 +0200 |
commit | 8d6735cb4194094b6f3e41573bbfffeb3d49d6ea (patch) | |
tree | 3b06c79b003a377bf9c087e5dd10415cee750f1d | |
parent | 3d74b160b3f1a7c424f38b815320b14bc712eb69 (diff) |
Make string match -rnv work
Fixes #3098.
-rw-r--r-- | src/builtin_string.cpp | 8 | ||||
-rw-r--r-- | tests/string.in | 2 | ||||
-rw-r--r-- | tests/string.out | 1 |
3 files changed, 9 insertions, 2 deletions
diff --git a/src/builtin_string.cpp b/src/builtin_string.cpp index edb6320f..a2ac0244 100644 --- a/src/builtin_string.cpp +++ b/src/builtin_string.cpp @@ -376,8 +376,12 @@ class pcre2_matcher_t : public string_matcher_t { // Return values: -1 = error, 0 = no match, 1 = match. if (pcre2_rc == PCRE2_ERROR_NOMATCH) { if (opts.invert_match && !opts.quiet) { - streams.out.append(arg); - streams.out.push_back(L'\n'); + if (opts.index) { + streams.out.append_format(L"1 %lu\n", wcslen(arg)); + } else { + streams.out.append(arg); + streams.out.push_back(L'\n'); + } } return opts.invert_match ? 1 : 0; diff --git a/tests/string.in b/tests/string.in index ac858618..15feb4f5 100644 --- a/tests/string.in +++ b/tests/string.in @@ -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 -v "???" dog can cat diz; or echo "no glob invert match" + +string match -rvn a bbb diff --git a/tests/string.out b/tests/string.out index bd3fff45..7afc267f 100644 --- a/tests/string.out +++ b/tests/string.out @@ -62,3 +62,4 @@ invalid argument error missing argument returns 0 no regexp invert match no glob invert match +1 3 |