aboutsummaryrefslogtreecommitdiff
path: root/editors/sed.c
diff options
context:
space:
mode:
Diffstat (limited to 'editors/sed.c')
-rw-r--r--editors/sed.c10
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
216static char *copy_parsing_escapes(const char *string, int len) 216static 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