aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2015-03-06 16:50:54 -0600
committerRob Landley <rob@landley.net>2015-03-06 16:50:54 -0600
commite3edd6cda410d25082135a6526cf7bfa17b49d8c (patch)
treee3b5a16d523de9aa192879d1df7c3cd161f5f134
parent1e2399b91cfd9895939876c4fb47af11c13ddf89 (diff)
downloadtoybox-e3edd6cda410d25082135a6526cf7bfa17b49d8c.tar.gz
sed depends on -r to be rightmost flag to simplify the REG_EXTENDED test.
(If a flag is 1, you can multiply it by the value you want and get that value else zero without a branch or conditional assignment.) So move -E one to the left so FLAG_r is 1 again, and add a [+Er] suffix instead of testing FLAG_r | FLAG_E in the users.
-rw-r--r--toys/posix/sed.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/toys/posix/sed.c b/toys/posix/sed.c
index dc3c8d91..705ea7bc 100644
--- a/toys/posix/sed.c
+++ b/toys/posix/sed.c
@@ -7,7 +7,7 @@
* TODO: lines > 2G could signed int wrap length counters. Not just getline()
* but N and s///
-USE_SED(NEWTOY(sed, "(version)e*f*inrE", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LOCALE))
+USE_SED(NEWTOY(sed, "(version)e*f*inEr[+Er]", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LOCALE))
config SED
bool "sed"
@@ -804,7 +804,7 @@ static void jewel_of_judgement(char **pline, long len)
if (!(s = unescape_delimited_string(&line, 0, 1))) goto brand;
if (!*s) corwin->rmatch[i] = 0;
else {
- xregcomp((void *)reg, s, (toys.optflags & (FLAG_r | FLAG_E))*REG_EXTENDED);
+ xregcomp((void *)reg, s, (toys.optflags & FLAG_r)*REG_EXTENDED);
corwin->rmatch[i] = reg-toybuf;
reg += sizeof(regex_t);
}
@@ -898,7 +898,7 @@ resume_s:
// allocating the space was done by extend_string() above
if (!*TT.remember) corwin->arg1 = 0;
else xregcomp((void *)(corwin->arg1 + (char *)corwin), TT.remember,
- ((toys.optflags & (FLAG_r | FLAG_E))*REG_EXTENDED)|((corwin->sflags&1)*REG_ICASE));
+ ((toys.optflags & FLAG_r)*REG_EXTENDED)|((corwin->sflags&1)*REG_ICASE));
free(TT.remember);
TT.remember = 0;
if (*line == 'w') {