summaryrefslogtreecommitdiff
path: root/dtc-lexer.l
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2012-09-27 17:11:04 -0600
committerJon Loeliger <jdl@jdl.com>2012-09-28 09:23:43 -0500
commit1ff3d3f8de701ed107e908030b5c1fed9d17125a (patch)
tree6b5b4fadc245a5e8f8412778ec8943ccf49fd59e /dtc-lexer.l
parent45013d86197fea96810a7ae1b920d22b4c887688 (diff)
downloaddevice-tree-compiler-1ff3d3f8de701ed107e908030b5c1fed9d17125a.tar.gz
dtc: cpp co-existence: allow names starting with # to be escaped
The device tree language as currently defined conflicts with the C pre- processor in one aspect - when a property or node name begins with a # character, a pre-processor would attempt to interpret it as a directive, fail, and most likely error out. This change allows a property/node name to be prefixed with \. This prevents a pre-processor from seeing # as the first non-whitespace character on the line, and hence prevents the conflict. \ was previously an illegal character in property/node names, so this change is backwards compatible. The \ is stripped from the name during parsing by dtc. Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'dtc-lexer.l')
-rw-r--r--dtc-lexer.l5
1 files changed, 3 insertions, 2 deletions
diff --git a/dtc-lexer.l b/dtc-lexer.l
index 91c4930..edbeb86 100644
--- a/dtc-lexer.l
+++ b/dtc-lexer.l
@@ -162,9 +162,10 @@ static int pop_input_file(void);
return ']';
}
-<PROPNODENAME>{PROPNODECHAR}+ {
+<PROPNODENAME>\\?{PROPNODECHAR}+ {
DPRINT("PropNodeName: %s\n", yytext);
- yylval.propnodename = xstrdup(yytext);
+ yylval.propnodename = xstrdup((yytext[0] == '\\') ?
+ yytext + 1 : yytext);
BEGIN_DEFAULT();
return DT_PROPNODENAME;
}