From f31deb5010b73b337b2611e2555a871ddac3cd28 Mon Sep 17 00:00:00 2001 From: Rangi Date: Tue, 15 Dec 2020 13:07:04 -0500 Subject: [PATCH] Fix STRUPR and STRLWR after 5aabb915ecdb8dff5fc38489b9d4d84c615d73d6 Fixes #647 --- include/asm/main.h | 3 --- src/asm/main.c | 16 ---------------- src/asm/parser.y | 18 ++++++++++++++++-- test/asm/strupr-strlwr.asm | 4 ++++ test/asm/strupr-strlwr.err | 0 test/asm/strupr-strlwr.out | 1 + 6 files changed, 21 insertions(+), 21 deletions(-) create mode 100644 test/asm/strupr-strlwr.asm create mode 100644 test/asm/strupr-strlwr.err create mode 100644 test/asm/strupr-strlwr.out diff --git a/include/asm/main.h b/include/asm/main.h index c2820d4c..2c5b4741 100644 --- a/include/asm/main.h +++ b/include/asm/main.h @@ -43,9 +43,6 @@ void opt_Push(void); void opt_Pop(void); void opt_Parse(char *s); -void upperstring(char *s); -void lowerstring(char *s); - /* TODO: are these really needed? */ #define YY_FATAL_ERROR fatalerror diff --git a/src/asm/main.c b/src/asm/main.c index 5f192bf9..47ee0019 100644 --- a/src/asm/main.c +++ b/src/asm/main.c @@ -197,22 +197,6 @@ static void opt_ParseDefines(void) sym_AddString(cldefines[i], cldefines[i + 1]); } -void upperstring(char *s) -{ - while (*s) { - *s = toupper(*s); - s++; - } -} - -void lowerstring(char *s) -{ - while (*s) { - *s = tolower(*s); - s++; - } -} - /* Escapes Make-special chars from a string */ static char *make_escape(const char *str) { diff --git a/src/asm/parser.y b/src/asm/parser.y index 7dfb6d75..2c89cd23 100644 --- a/src/asm/parser.y +++ b/src/asm/parser.y @@ -39,6 +39,20 @@ uint32_t nListCountEmpty; int32_t nPCOffset; bool executeElseBlock; /* If this is set, ELIFs cannot be executed anymore */ +static void upperstring(char *dest, char const *src) +{ + while (*src) + *dest++ = toupper(*src++); + *dest = '\0'; +} + +static void lowerstring(char *dest, char const *src) +{ + while (*src) + *dest++ = tolower(*src++); + *dest = '\0'; +} + static uint32_t str2int2(uint8_t *s, int32_t length) { int32_t i; @@ -1084,10 +1098,10 @@ string : T_STRING strcpy($$, $3); } | T_OP_STRUPR T_LPAREN string T_RPAREN { - upperstring($$); + upperstring($$, $3); } | T_OP_STRLWR T_LPAREN string T_RPAREN { - lowerstring($$); + lowerstring($$, $3); } ; diff --git a/test/asm/strupr-strlwr.asm b/test/asm/strupr-strlwr.asm new file mode 100644 index 00000000..17e4e61d --- /dev/null +++ b/test/asm/strupr-strlwr.asm @@ -0,0 +1,4 @@ +foo equs strupr("xii") +bar equs strlwr("LOL") + + printt "foo={foo} bar={bar}\n" diff --git a/test/asm/strupr-strlwr.err b/test/asm/strupr-strlwr.err new file mode 100644 index 00000000..e69de29b diff --git a/test/asm/strupr-strlwr.out b/test/asm/strupr-strlwr.out new file mode 100644 index 00000000..e6c38ade --- /dev/null +++ b/test/asm/strupr-strlwr.out @@ -0,0 +1 @@ +foo=XII bar=lol