From 3fd10d303a4c67a853a17525985c2c36a354c597 Mon Sep 17 00:00:00 2001 From: Ali Gholami Rudi Date: Fri, 4 Jun 2010 18:01:51 +0430 Subject: [PATCH] tok: '\12' and '\x3b' --- tok.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/tok.c b/tok.c index 9d2ed90..1553529 100644 --- a/tok.c +++ b/tok.c @@ -59,6 +59,7 @@ static int get_tok3(int num) static char *esc_code = "abefnrtv"; static char *esc = "\a\b\e\f\n\r\t\v"; +static char *digs = "0123456789abcdef"; static int esc_char(int *c, char *s) { @@ -70,6 +71,23 @@ static int esc_char(int *c, char *s) *c = esc[strchr(esc_code, s[1]) - esc_code]; return 2; } + if (isdigit(s[1]) || s[1] == 'x') { + int ret = 0; + int base = 8; + int i = 1; + char *d; + if (s[1] == 'x') { + base = 16; + i++; + } + while ((d = strchr(digs, s[i]))) { + ret *= base; + ret += d - digs; + i++; + } + *c = ret; + return i; + } *c = s[1]; return 2; } @@ -83,7 +101,6 @@ long tok_num(void) static void readnum(void) { - char *digs = "0123456789abcdef"; int base = 10; if (buf[cur] == '0' && buf[cur + 1] == 'x') { base = 16; -- 2.11.4.GIT