From f36635cec6da728fe06b849089ce2f6c1690dc67 Mon Sep 17 00:00:00 2001 From: Glenn L McGrath Date: Sat, 13 Sep 2003 15:12:22 +0000 Subject: [PATCH] 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' --- editors/sed.c | 8 +++++--- 1 file 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':