From 807a50d89976e2de081d487a54e8e109d49f0a6d Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Sun, 14 Dec 2014 13:51:28 -0600 Subject: Make sed a\ line continuations work properly for different pattern input modes. --- toys/pending/sed.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'toys/pending') diff --git a/toys/pending/sed.c b/toys/pending/sed.c index 6c025f0d..fd5352a0 100644 --- a/toys/pending/sed.c +++ b/toys/pending/sed.c @@ -913,10 +913,15 @@ append: reg = extend_string((void *)&corwin, line, reg - (char *)corwin, end); line += end; - // Line continuation? - if (class && reg[-1] == '\\') { - reg[-1] = 0; - corwin->hit++; + // Line continuation? (Two slightly different input methods, -e with + // embedded newline vs -f line by line. Must parse both correctly.) + if (class && line[-1] == '\\') { + reg[-2] = 0; + if (*line && line[1]) { + reg -= 2; + line++; + goto append; + } else corwin->hit++; } // Commands that take no arguments -- cgit v1.2.3