sed: shrink by 17 bytes
authorPascal Bellard <pascal.bellard@ads-lu.com>
Wed, 4 May 2011 22:26:37 +0000 (00:26 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 4 May 2011 22:26:37 +0000 (00:26 +0200)
Signed-off-by: Pascal Bellard <pascal.bellard@ads-lu.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
editors/sed.c

index 11c4763213a2192a8f06c565bddf5a30929dc71a..99e56ff5288c0dcf668b26438251dede4ad4d283 100644 (file)
@@ -215,12 +215,16 @@ static void parse_escapes(char *dest, const char *string, int len, char from, ch
 
 static char *copy_parsing_escapes(const char *string, int len)
 {
+       const char *s;
        char *dest = xmalloc(len + 1);
 
-       parse_escapes(dest, string, len, 'n', '\n');
+       /* sed recognizes \n */
        /* GNU sed also recognizes \t and \r */
-       parse_escapes(dest, dest, strlen(dest), 't', '\t');
-       parse_escapes(dest, dest, strlen(dest), 'r', '\r');
+       for (s = "\nn\tt\rr"; *s; s += 2) {
+               parse_escapes(dest, string, len, s[1], s[0]);
+               string = dest;
+               len = strlen(dest);
+       }
        return dest;
 }