From b1bc8b5c2b73a3b2cba83c12112644815e19c312 Mon Sep 17 00:00:00 2001 From: BurnZeZ Date: Sun, 27 Oct 2013 15:52:35 -0400 Subject: [PATCH] libjson: handle unicode escapes --- sys/src/libjson/json.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/sys/src/libjson/json.c b/sys/src/libjson/json.c index 850b94af7..0e1de4ca4 100644 --- a/sys/src/libjson/json.c +++ b/sys/src/libjson/json.c @@ -52,6 +52,8 @@ lex(Lex *l) { Rune r; char *t; + int i; + char c; for(;;){ r = peekch(l); @@ -117,6 +119,19 @@ lex(Lex *l) case 'r': r = '\r'; break; + case 'u': + r = 0; + for(i = 0; i < 4; i++){ + if(!isxdigit(peekch(l))) + break; + + c = getch(l); + r *= 16; + if(c > '0' && c < '9') r += c - '0'; + else if(c > 'a' && c < 'f') r += c - 'a' + 10; + else if(c > 'A' && c < 'F') r += c - 'A' + 10; + } + break; case 't': r = '\t'; break;