diff options
-rw-r--r-- | editors/sed.c | 8 | ||||
-rw-r--r-- | testsuite/sed/sed-accepts-blanks-before-command | 1 |
2 files changed, 9 insertions, 0 deletions
diff --git a/editors/sed.c b/editors/sed.c index 7f765842c..fe1c0dbae 100644 --- a/editors/sed.c +++ b/editors/sed.c @@ -414,6 +414,10 @@ static char *parse_cmd_str(struct sed_cmd * const sed_cmd, const char *const cmd * part1 part2 part3 */ + /* skip initial whitespace */ + while (isspace(cmdstr[idx])) + idx++; + /* first part (if present) is an address: either a number or a /regex/ */ if (isdigit(cmdstr[idx]) || cmdstr[idx] == '/') idx = get_address(sed_cmd, cmdstr, &sed_cmd->beg_line, &sed_cmd->beg_match); @@ -422,6 +426,10 @@ static char *parse_cmd_str(struct sed_cmd * const sed_cmd, const char *const cmd if (cmdstr[idx] == ',') idx += get_address(sed_cmd, &cmdstr[++idx], &sed_cmd->end_line, &sed_cmd->end_match); + /* skip whitespace before the command */ + while (isspace(cmdstr[idx])) + idx++; + /* last part (mandatory) will be a command */ if (cmdstr[idx] == '\0') error_msg_and_die("missing command"); diff --git a/testsuite/sed/sed-accepts-blanks-before-command b/testsuite/sed/sed-accepts-blanks-before-command new file mode 100644 index 000000000..9597c2f8b --- /dev/null +++ b/testsuite/sed/sed-accepts-blanks-before-command @@ -0,0 +1 @@ +busybox sed -e '1 d' </dev/null |