From 0cbd2d1d03ff96eb668fc6a14311d96ed0f9f8b5 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 19 Dec 2022 11:13:11 +0200 Subject: Restore newline escaping (line continuations) in double-quoted strings Also make effective escaping in buildspec and command line variable overrides consistent with double-quoted strings. --- libbuild2/context.cxx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'libbuild2/context.cxx') diff --git a/libbuild2/context.cxx b/libbuild2/context.cxx index c9f4340..08c4e7e 100644 --- a/libbuild2/context.cxx +++ b/libbuild2/context.cxx @@ -378,12 +378,13 @@ namespace build2 istringstream is (s); is.exceptions (istringstream::failbit | istringstream::badbit); - // Similar to buildspec we do "effective escaping" and only for ['"\$(] - // (basically what's necessary inside a double-quoted literal plus the + // Similar to buildspec we do "effective escaping" of the special + // `'"\$(` characters, line continuations, plus `)` for symmetry + // (basically what's escapable inside a double-quoted literal plus the // single quote). // path_name in (""); - lexer l (is, in, 1 /* line */, "\'\"\\$("); + lexer l (is, in, 1 /* line */, "\'\"\\$()\n"); // At the buildfile level the scope-specific variable should be // separated from the directory with a whitespace, for example: -- cgit v1.1