summary refs log tree commit diff stats
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)
downloadfocaccia-qemu-2c0d4b36e7fe28c569c5436f7724735e35d3c493.tar.gz
focaccia-qemu-2c0d4b36e7fe28c569c5436f7724735e35d3c493.zip
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 */