Fix a bug that corrupted the string followed commands that had no arguments (Closes #1304)

This commit is contained in:
Glenn L McGrath 2003-03-18 01:19:23 +00:00
parent 737f5fb890
commit 2971ef1730

View File

@ -377,16 +377,13 @@ static int parse_file_cmd(sed_cmd_t *sed_cmd, const char *filecmdstr)
return idx + filenamelen; return idx + filenamelen;
} }
/*
* Process the commands arguments
*/
static char *parse_cmd_str(sed_cmd_t * const sed_cmd, char *cmdstr) static char *parse_cmd_str(sed_cmd_t * const sed_cmd, char *cmdstr)
{ {
/* if it was a single-letter command that takes no arguments (such as 'p'
* or 'd') all we need to do is increment the index past that command */
if (strchr("nNpPqd=", sed_cmd->cmd)) {
cmdstr++;
}
/* handle (s)ubstitution command */ /* handle (s)ubstitution command */
else if (sed_cmd->cmd == 's') { if (sed_cmd->cmd == 's') {
cmdstr += parse_subst_cmd(sed_cmd, cmdstr); cmdstr += parse_subst_cmd(sed_cmd, cmdstr);
} }
/* handle edit cmds: (a)ppend, (i)nsert, and (c)hange */ /* handle edit cmds: (a)ppend, (i)nsert, and (c)hange */
@ -401,7 +398,10 @@ static char *parse_cmd_str(sed_cmd_t * const sed_cmd, char *cmdstr)
error_msg_and_die("Command only uses one address"); error_msg_and_die("Command only uses one address");
cmdstr += parse_file_cmd(sed_cmd, cmdstr); cmdstr += parse_file_cmd(sed_cmd, cmdstr);
} }
else { /* if it wasnt a single-letter command that takes no arguments
* then it must be an invalid command.
*/
else if (strchr("nNpPqd=", sed_cmd->cmd) == 0) {
error_msg_and_die("Unsupported command %c", sed_cmd->cmd); error_msg_and_die("Unsupported command %c", sed_cmd->cmd);
} }