From 37a79c092edcc8691686a4d4b609d2c034ccd840 Mon Sep 17 00:00:00 2001 From: Mimi Li Date: Tue, 24 Jul 2012 13:20:12 +0200 Subject: sed: allow 'w' cmd to use two address form function old new delta add_cmd 1101 1094 -7 Signed-off-by: Mimi Li Signed-off-by: Denys Vlasenko --- editors/sed.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'editors/sed.c') diff --git a/editors/sed.c b/editors/sed.c index 42d8e17c6..070af611a 100644 --- a/editors/sed.c +++ b/editors/sed.c @@ -53,7 +53,9 @@ * Todo: * - Create a wrapper around regex to make libc's regex conform with sed * - * Reference http://www.opengroup.org/onlinepubs/007904975/utilities/sed.html + * Reference + * http://www.opengroup.org/onlinepubs/007904975/utilities/sed.html + * http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html */ //usage:#define sed_trivial_usage @@ -492,8 +494,10 @@ static const char *parse_cmd_args(sed_cmd_t *sed_cmd, const char *cmdstr) } /* handle edit cmds: (a)ppend, (i)nsert, and (c)hange */ else if (idx <= IDX_c) { /* a,i,c */ - if ((sed_cmd->end_line || sed_cmd->end_match) && sed_cmd->cmd != 'c') - bb_error_msg_and_die("only a beginning address can be specified for edit commands"); + if (idx < IDX_c) { /* a,i */ + if (sed_cmd->end_line || sed_cmd->end_match) + bb_error_msg_and_die("command '%c' uses only one address", sed_cmd->cmd); + } for (;;) { if (*cmdstr == '\n' || *cmdstr == '\\') { cmdstr++; @@ -510,8 +514,10 @@ static const char *parse_cmd_args(sed_cmd_t *sed_cmd, const char *cmdstr) } /* handle file cmds: (r)ead */ else if (idx <= IDX_w) { /* r,w */ - if (sed_cmd->end_line || sed_cmd->end_match) - bb_error_msg_and_die("command only uses one address"); + if (idx < IDX_w) { /* r */ + if (sed_cmd->end_line || sed_cmd->end_match) + bb_error_msg_and_die("command '%c' uses only one address", sed_cmd->cmd); + } cmdstr += parse_file_cmd(/*sed_cmd,*/ cmdstr, &sed_cmd->string); if (sed_cmd->cmd == 'w') { sed_cmd->sw_file = xfopen_for_write(sed_cmd->string); -- cgit v1.2.3