diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2007-10-16 16:42:02 +1000 |
---|---|---|
committer | Jon Loeliger <jdl@freescale.com> | 2007-10-16 08:10:15 -0500 |
commit | a756c12bea9e39acbed483d9008852f3a371e4a4 (patch) | |
tree | 8ab2b1ce49c726a0df2811ab3f7e359163070b0c /data.c | |
parent | 333542fabf8720b881e992a5abca32ef4bcb841a (diff) | |
download | device-tree-compiler-a756c12bea9e39acbed483d9008852f3a371e4a4.tar.gz |
dtc: Improve support for string escapes
dtc supports the use of C-style escapes (\n, \t and so forth) in
string property definitions via the data_copy_escape_string()
function. However, while it supports the most common escape
characters, it doesn't support the full set that C does, which is a
potential gotcha.
Worse, a bug in the lexer means that while data_copy_escape_string()
can handle the \" escape, a string with such an escape won't lex
correctly.
This patch fixes both problems, extending data_copy_escape_string() to
support the missing escapes, and fixing the regex for strings in the
lexer to handle internal escaped quotes.
This also adds a testcase for string escape functionality.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'data.c')
-rw-r--r-- | data.c | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -150,12 +150,24 @@ struct data data_copy_escape_string(char *s, int len) c = s[i++]; assert(c); switch (c) { + case 'a': + q[d.len++] = '\a'; + break; + case 'b': + q[d.len++] = '\b'; + break; case 't': q[d.len++] = '\t'; break; case 'n': q[d.len++] = '\n'; break; + case 'v': + q[d.len++] = '\v'; + break; + case 'f': + q[d.len++] = '\f'; + break; case 'r': q[d.len++] = '\r'; break; |