diff options
| -rw-r--r-- | editors/sed.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/editors/sed.c b/editors/sed.c index 11c476321..99e56ff52 100644 --- a/editors/sed.c +++ b/editors/sed.c | |||
| @@ -215,12 +215,16 @@ static void parse_escapes(char *dest, const char *string, int len, char from, ch | |||
| 215 | 215 | ||
| 216 | static char *copy_parsing_escapes(const char *string, int len) | 216 | static char *copy_parsing_escapes(const char *string, int len) |
| 217 | { | 217 | { |
| 218 | const char *s; | ||
| 218 | char *dest = xmalloc(len + 1); | 219 | char *dest = xmalloc(len + 1); |
| 219 | 220 | ||
| 220 | parse_escapes(dest, string, len, 'n', '\n'); | 221 | /* sed recognizes \n */ |
| 221 | /* GNU sed also recognizes \t and \r */ | 222 | /* GNU sed also recognizes \t and \r */ |
| 222 | parse_escapes(dest, dest, strlen(dest), 't', '\t'); | 223 | for (s = "\nn\tt\rr"; *s; s += 2) { |
| 223 | parse_escapes(dest, dest, strlen(dest), 'r', '\r'); | 224 | parse_escapes(dest, string, len, s[1], s[0]); |
| 225 | string = dest; | ||
| 226 | len = strlen(dest); | ||
| 227 | } | ||
| 224 | return dest; | 228 | return dest; |
| 225 | } | 229 | } |
| 226 | 230 | ||
