diff options
author | Rob Landley <rob@landley.net> | 2015-03-06 16:50:54 -0600 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2015-03-06 16:50:54 -0600 |
commit | e3edd6cda410d25082135a6526cf7bfa17b49d8c (patch) | |
tree | e3b5a16d523de9aa192879d1df7c3cd161f5f134 /toys | |
parent | 1e2399b91cfd9895939876c4fb47af11c13ddf89 (diff) | |
download | toybox-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.
Diffstat (limited to 'toys')
-rw-r--r-- | toys/posix/sed.c | 6 |
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') { |