From f36635cec6da728fe06b849089ce2f6c1690dc67 Mon Sep 17 00:00:00 2001
From: Glenn L McGrath <bug1@ihug.co.nz>
Date: Sat, 13 Sep 2003 15:12:22 +0000
Subject: 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(-)

(limited to 'editors')

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':
-- 
cgit v1.2.3