OSDN Git Service

More sed bugs.
authorRob Landley <rob@landley.net>
Sat, 20 Dec 2014 03:17:49 +0000 (21:17 -0600)
committerRob Landley <rob@landley.net>
Sat, 20 Dec 2014 03:17:49 +0000 (21:17 -0600)
1) Newline in -e after s/// was eaten as "whitespace before flags"
2) \\ needs to be passed through to regex to avoid "trailing \" error and
"\\n" is not a newline.

toys/pending/sed.c

index 8703806..070022c 100644 (file)
@@ -702,7 +702,8 @@ static char *unescape_delimited_string(char **pstr, char *delim, int regex)
 
       // Check escaped end delimiter before printf style escapes.
       if (from[1] == d) from++;
-      else if (from[1]!='\\') {
+      else if (from[1]=='\\') *(to++) = *(from++);
+      else {
         char c = unescape(from[1]);
 
         if (c) {
@@ -827,7 +828,7 @@ static void jewel_of_judgement(char **pline, long len)
       for (line++; *line; line++) {
         long l;
 
-        if (isspace(*line)) continue;
+        if (isspace(*line) && *line != '\n') continue;
 
         if (0 <= (l = stridx("igp", *line))) corwin->sflags |= 1<<l;
         else if (!(corwin->sflags>>3) && 0<(l = strtol(line, &line, 10))) {