aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Fabian Homborg <FHomborg@gmail.com>2016-05-31 23:14:03 +0200
committerGravatar Fabian Homborg <FHomborg@gmail.com>2016-05-31 23:24:08 +0200
commit8d6735cb4194094b6f3e41573bbfffeb3d49d6ea (patch)
tree3b06c79b003a377bf9c087e5dd10415cee750f1d
parent3d74b160b3f1a7c424f38b815320b14bc712eb69 (diff)
Make string match -rnv work
Fixes #3098.
-rw-r--r--src/builtin_string.cpp8
-rw-r--r--tests/string.in2
-rw-r--r--tests/string.out1
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