diff --git a/ulib/ulib.h b/ulib/ulib.h index efdd9cf..414ea09 100644 --- a/ulib/ulib.h +++ b/ulib/ulib.h @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include diff --git a/user/tb/interp.c b/user/tb/interp.c index 92f7363..01cbdbc 100644 --- a/user/tb/interp.c +++ b/user/tb/interp.c @@ -45,6 +45,20 @@ void tz_tokenize(Tokenizer *tz) { case '\\': c = '\\'; break; case '\'': c = '\''; break; case '"': c = '"'; break; + case 'x': { + if (i + 2 < len) { + char buf[3]; + buf[0] = tz->str[i + 1]; + buf[1] = tz->str[i + 2]; + buf[2] = '\0'; + + char *endp; + uint8_t b = (uint8_t)string_conv_strtoul(buf, &endp, 16); + c = *(char *)&b; + + i += 2; + } + } break; default: c = tz->str[i]; break; } if (j + 1 < TZ_MAX_TK) {