Fixed bug where sed '/foo/p' was printing "invalid command".
authorMark Whitley <markw@lineo.com>
Thu, 13 Jul 2000 22:52:02 +0000 (22:52 -0000)
committerMark Whitley <markw@lineo.com>
Thu, 13 Jul 2000 22:52:02 +0000 (22:52 -0000)
editors/sed.c
sed.c

index 22d642e..bf8ca1b 100644 (file)
@@ -188,11 +188,9 @@ static int get_address(const char *str, int *line, regex_t **regex)
                } while (isdigit(my_str[idx]));
                my_str[idx] = 0;
                *line = atoi(my_str);
-               *regex = NULL;
        }
        else if (my_str[idx] == '$') {
                *line = -1;
-               *regex = NULL;
                idx++;
        }
        else if (my_str[idx] == '/') {
@@ -202,6 +200,7 @@ static int get_address(const char *str, int *line, regex_t **regex)
                my_str[idx] = '\0';
                *regex = (regex_t *)xmalloc(sizeof(regex_t));
                xregcomp(*regex, my_str+1, REG_NEWLINE);
+               idx++; /* so it points to the next character after the last '/' */
        }
        else {
                fprintf(stderr, "sed.c:get_address: no address found in string\n");
diff --git a/sed.c b/sed.c
index 22d642e..bf8ca1b 100644 (file)
--- a/sed.c
+++ b/sed.c
@@ -188,11 +188,9 @@ static int get_address(const char *str, int *line, regex_t **regex)
                } while (isdigit(my_str[idx]));
                my_str[idx] = 0;
                *line = atoi(my_str);
-               *regex = NULL;
        }
        else if (my_str[idx] == '$') {
                *line = -1;
-               *regex = NULL;
                idx++;
        }
        else if (my_str[idx] == '/') {
@@ -202,6 +200,7 @@ static int get_address(const char *str, int *line, regex_t **regex)
                my_str[idx] = '\0';
                *regex = (regex_t *)xmalloc(sizeof(regex_t));
                xregcomp(*regex, my_str+1, REG_NEWLINE);
+               idx++; /* so it points to the next character after the last '/' */
        }
        else {
                fprintf(stderr, "sed.c:get_address: no address found in string\n");