From b415635e319943b44a72f4afa8265b5babed47b2 Mon Sep 17 00:00:00 2001 From: kramm Date: Thu, 6 Feb 2003 20:02:15 +0000 Subject: [PATCH] added string escaping. --- src/parser.lex | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/parser.lex b/src/parser.lex index f29926f..c0513d1 100644 --- a/src/parser.lex +++ b/src/parser.lex @@ -29,6 +29,27 @@ static void count(char*text, int len, int condition) static char*prefix = 0; +static void unescapeString(string_t * tmp) +{ + char *p, *p1; + + for (p1=tmp->str; (p=strchr(p1, '\\')) != 0; p1 = p+1) + { + switch(p[1]) + { + case '\\': p[1] = '\\'; break; + case 'b': p[1] = '\b'; break; + case 'f': p[1] = '\f'; break; + case 'n': p[1] = '\n'; break; + case 'r': p[1] = '\r'; break; + case 't': p[1] = '\t'; break; + default: + continue; + } + strcpy(p, p+1); + } +} + static void store(enum type_t type, int line, int column, char*text, int length) { struct token_t token; @@ -46,6 +67,7 @@ static void store(enum type_t type, int line, int column, char*text, int length) break; case STRING: string_set2(&tmp, text+1, length-2); + unescapeString(&tmp); token.text = (char*)mem_putstring(&strings, tmp); break; case TWIP: -- 1.7.10.4