aboutsummaryrefslogtreecommitdiff
path: root/json-lexer.c
diff options
context:
space:
mode:
authorRoy Tam <roytam@gmail.com>2010-02-04 10:30:30 +0800
committerAnthony Liguori <aliguori@us.ibm.com>2010-02-10 12:47:58 -0600
commit2c0d4b36e7fe28c569c5436f7724735e35d3c493 (patch)
tree597ed7dadc4c0789c34ceecc1020d6dd567242c5 /json-lexer.c
parent2198a62eb2518b61c3fc7db26515f106e7498932 (diff)
json: fix PRId64 on Win32
OK we are fooled by the json lexer and parser. As we use %I64d to print 'long long' variables in Win32, but lexer and parser only deal with %lld but not %I64d, this patch add support for %I64d and solve 'info pci', 'powser_reset' and 'power_powerdown' assert failure in Win32. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'json-lexer.c')
-rw-r--r--json-lexer.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/json-lexer.c b/json-lexer.c
index 53697c5ffe..9d649205a7 100644
--- a/json-lexer.c
+++ b/json-lexer.c
@@ -54,6 +54,9 @@ enum json_lexer_state {
IN_ESCAPE,
IN_ESCAPE_L,
IN_ESCAPE_LL,
+ IN_ESCAPE_I,
+ IN_ESCAPE_I6,
+ IN_ESCAPE_I64,
IN_ESCAPE_DONE,
IN_WHITESPACE,
IN_OPERATOR_DONE,
@@ -223,6 +226,18 @@ static const uint8_t json_lexer[][256] = {
['l'] = IN_ESCAPE_LL,
},
+ [IN_ESCAPE_I64] = {
+ ['d'] = IN_ESCAPE_DONE,
+ },
+
+ [IN_ESCAPE_I6] = {
+ ['4'] = IN_ESCAPE_I64,
+ },
+
+ [IN_ESCAPE_I] = {
+ ['6'] = IN_ESCAPE_I6,
+ },
+
[IN_ESCAPE] = {
['d'] = IN_ESCAPE_DONE,
['i'] = IN_ESCAPE_DONE,
@@ -230,6 +245,7 @@ static const uint8_t json_lexer[][256] = {
['s'] = IN_ESCAPE_DONE,
['f'] = IN_ESCAPE_DONE,
['l'] = IN_ESCAPE_L,
+ ['I'] = IN_ESCAPE_I,
},
/* top level rule */