diff options
author | Glenn L McGrath <bug1@ihug.co.nz> | 2003-09-13 15:12:22 +0000 |
---|---|---|
committer | Glenn L McGrath <bug1@ihug.co.nz> | 2003-09-13 15:12:22 +0000 |
commit | f36635cec6da728fe06b849089ce2f6c1690dc67 (patch) | |
tree | b30e5d8216a515f0e549f29802d915eee9991e08 | |
parent | c18ce373a21f72b23259c9c15503ac8800d605c7 (diff) | |
download | busybox-f36635cec6da728fe06b849089ce2f6c1690dc67.tar.gz |
Fix the following testcase by disabling global substitution if the regex
is anchored to the start of line, there can be only one subst.
echo "aah" | sed 's/^a/b/g'
-rw-r--r-- | editors/sed.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/editors/sed.c b/editors/sed.c index 5bfe924a5..75ed53eb7 100644 --- a/editors/sed.c +++ b/editors/sed.c @@ -43,11 +43,11 @@ Unsupported features: - GNU extensions - - and lots, lots more. + - and more. Bugs: - - Cant subst globally using ^ or $ in regex, eg. "aah" | sed 's/^a/b/g' + - lots Reference http://www.opengroup.org/onlinepubs/007904975/utilities/sed.html */ @@ -299,7 +299,9 @@ static int parse_subst_cmd(sed_cmd_t * const sed_cmd, const char *substr) while (substr[++idx]) { switch (substr[idx]) { case 'g': - sed_cmd->sub_g = 1; + if (match[0] != '^') { + sed_cmd->sub_g = 1; + } break; /* Hmm, i dont see the I option mentioned in the standard */ case 'I': |