diff options
-rw-r--r-- | editors/sed.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/editors/sed.c b/editors/sed.c index 45574e81d..3d6871621 100644 --- a/editors/sed.c +++ b/editors/sed.c @@ -112,7 +112,7 @@ typedef struct sed_cmd_s { /* globals */ /* options */ -static int be_quiet = 0, in_place=0; +static int be_quiet = 0, in_place=0, regex_type=0; FILE *nonstdout; char *outname; @@ -298,7 +298,7 @@ static int get_address(char *my_str, int *linenum, regex_t ** regex) temp=copy_parsing_slashn(pos,next); *regex = (regex_t *) xmalloc(sizeof(regex_t)); - xregcomp(*regex, temp, REG_NEWLINE); + xregcomp(*regex, temp, regex_type|REG_NEWLINE); free(temp); /* Move position to next character after last delimiter */ pos+=(next+1); @@ -326,7 +326,7 @@ static int parse_file_cmd(sed_cmd_t * sed_cmd, const char *filecmdstr, char **re static int parse_subst_cmd(sed_cmd_t * const sed_cmd, char *substr) { - int cflags = 0; + int cflags = regex_type; char *match; int idx = 0; @@ -1115,12 +1115,15 @@ extern int sed_main(int argc, char **argv) #endif /* do normal option parsing */ - while ((opt = getopt(argc, argv, "ine:f:")) > 0) { + while ((opt = getopt(argc, argv, "irne:f:")) > 0) { switch (opt) { case 'i': in_place++; atexit(cleanup_outname); break; + case 'r': + regex_type|=REG_EXTENDED; + break; case 'n': be_quiet++; break; |