From b647f14a81a8b2720053b818174f13b68ba40f19 Mon Sep 17 00:00:00 2001 From: jkim Date: Mon, 29 Apr 2013 21:05:12 +0000 Subject: [PATCH] MFC: r248777 Loosen restrictions for quoted strings. Now we can use more complex strings and "escaped" quote characters. git-svn-id: svn://svn.freebsd.org/base/stable/8@250067 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- usr.sbin/config/main.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/usr.sbin/config/main.c b/usr.sbin/config/main.c index b37175701..765232f27 100644 --- a/usr.sbin/config/main.c +++ b/usr.sbin/config/main.c @@ -377,16 +377,24 @@ begin: if (ch == '"' || ch == '\'') { int quote = ch; + escaped_nl = 0; while ((ch = getc(fp)) != EOF) { - if (ch == quote) + if (ch == quote && !escaped_nl) break; - if (ch == '\n') { + if (ch == '\n' && !escaped_nl) { *cp = 0; printf("config: missing quote reading `%s'\n", line); exit(2); } + if (ch == '\\' && !escaped_nl) { + escaped_nl = 1; + continue; + } + if (ch != quote && escaped_nl) + *cp++ = '\\'; *cp++ = ch; + escaped_nl = 0; } } else { *cp++ = ch; -- 2.45.0