From a9671258f0df7892135797443c9dd9839be80a11 Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Sat, 8 May 2021 12:58:52 -0400 Subject: Replace the old string parsing code in handle_directive() with a call to parse_quote(). This not only reduces code duplication, but also makes it more robust in the process. --- assemble.c | 31 ++++--------------------------- 1 file changed, 4 insertions(+), 27 deletions(-) diff --git a/assemble.c b/assemble.c index cdd82d6..a6abe1f 100644 --- a/assemble.c +++ b/assemble.c @@ -274,33 +274,10 @@ uint64_t handle_directive(token *t, bytecount *bc, uint8_t isasm, uint64_t addre break; case TOK_STRING: if (type == DIR_BYTE) { - for (uint16_t k = 0; t->str[k] != '\0'; k++) { - switch (t->str[k]) { - case '\\': - switch (t->str[k+1]) { - case 'n' : c = '\n'; break; - case 'r' : c = '\r'; break; - case 't' : c = '\t'; break; - case '\"': c = '\"'; break; - case '\'': c = '\''; break; - case '\\': c = '\\'; break; - case '0' : c = '\0'; break; - } - k++; - break; - default: c = t->str[k]; break; - } - if (isasm) { - addr[tmpaddr] = c; - } - tmpaddr++; - bc->datasize++; - } - if (isasm) { - addr[tmpaddr] = '\0'; - } - tmpaddr++; - bc->datasize++; + char *s = t->str; + tmp = parse_quote(&s, '\0', isasm, &addr[tmpaddr], dbg); + tmpaddr += tmp; + bc->datasize += tmp; } break; } -- cgit v1.2.3-13-gbd6f