summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/libjson/json.c15
1 files changed, 15 insertions, 0 deletions
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;