Mercurial > hg > toybox
changeset 1707:27d570eee68d draft
BSD sed uses -E instead of -r to enable ERE.
GNU sed silently supports -E as an alias for -r too.
author | Isabella Bosia <izaberina@gmail.com> |
---|---|
date | Sat, 28 Feb 2015 15:21:13 -0600 |
parents | 2d5e3e345c14 |
children | 3746a6d29d87 |
files | toys/posix/sed.c |
diffstat | 1 files changed, 5 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/toys/posix/sed.c Sat Feb 28 12:39:16 2015 -0600 +++ b/toys/posix/sed.c Sat Feb 28 15:21:13 2015 -0600 @@ -7,13 +7,13 @@ * TODO: lines > 2G could signed int wrap length counters. Not just getline() * but N and s/// -USE_SED(NEWTOY(sed, "(version)e*f*inr", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LOCALE)) +USE_SED(NEWTOY(sed, "(version)e*f*inrE", TOYFLAG_USR|TOYFLAG_BIN|TOYFLAG_LOCALE)) config SED bool "sed" default y help - usage: sed [-inr] [-e SCRIPT]...|SCRIPT [-f SCRIPT_FILE]... [FILE...] + usage: sed [-inrE] [-e SCRIPT]...|SCRIPT [-f SCRIPT_FILE]... [FILE...] Stream editor. Apply one or more editing SCRIPTs to each line of input (from FILE or stdin) producing output (by default to stdout). @@ -23,6 +23,7 @@ -i Edit each file in place. -n No default output. (Use the p command to output matched lines.) -r Use extended regular expression syntax. + -E Alias for -r. -s Treat input files separately (implied by -i) A SCRIPT is a series of one or more COMMANDs separated by newlines or @@ -803,7 +804,7 @@ 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)*REG_EXTENDED); + xregcomp((void *)reg, s, (toys.optflags & (FLAG_r | FLAG_E))*REG_EXTENDED); corwin->rmatch[i] = reg-toybuf; reg += sizeof(regex_t); } @@ -897,7 +898,7 @@ // 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)*REG_EXTENDED)|((corwin->sflags&1)*REG_ICASE)); + ((toys.optflags & (FLAG_r | FLAG_E))*REG_EXTENDED)|((corwin->sflags&1)*REG_ICASE)); free(TT.remember); TT.remember = 0; if (*line == 'w') {