Fix a bug that corrupted the string followed commands that had no arguments (Closes...
authorGlenn L McGrath <bug1@ihug.co.nz>
Tue, 18 Mar 2003 01:19:23 +0000 (01:19 -0000)
committerGlenn L McGrath <bug1@ihug.co.nz>
Tue, 18 Mar 2003 01:19:23 +0000 (01:19 -0000)
editors/sed.c

index e1242671e6ec4e5855aaaf3e3a4786c664ab0f26..7ff81da79fd15bb33cbcc51bf98321404f516a79 100644 (file)
@@ -377,16 +377,13 @@ static int parse_file_cmd(sed_cmd_t *sed_cmd, const char *filecmdstr)
        return idx + filenamelen;
 }
 
-
+/*
+ *  Process the commands arguments
+ */
 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 */
-       else if (sed_cmd->cmd == 's') {
+       if (sed_cmd->cmd == 's') {
                cmdstr += parse_subst_cmd(sed_cmd, cmdstr);
        }
        /* 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");
                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);
        }