ref: 23584a584f44af28aea5943341e5344f45d88b8a
parent: 53fa60816196380c1a9e7d3e13d2d9bee4bee794
author: Antonio Niño Díaz <[email protected]>
date: Sun Apr 9 11:40:06 EDT 2017
Fix __FILE__, __TIME__ and __DATE__ If they don't have quotes when passed to sym_AddString() they can't be used at all by the assembler. I suppose nobody actually used them, they seem to have been broken forever. Added a comment to the function to say how to use it correctly for strings. Signed-off-by: Antonio Niño Díaz <[email protected]>
--- a/src/asm/fstack.c
+++ b/src/asm/fstack.c
@@ -346,7 +346,9 @@
{
char tzFileName[_MAX_PATH + 1];
- sym_AddString("__FILE__", s);
+ char tzSymFileName[_MAX_PATH + 1 + 2];
+ snprintf(tzSymFileName, sizeof(tzSymFileName), "\"%s\"", s);
+ sym_AddString("__FILE__", tzSymFileName);
strcpy(tzFileName, s);
pFileStack = NULL;
--- a/src/asm/symbol.c
+++ b/src/asm/symbol.c
@@ -495,7 +495,16 @@
}
/*
- * Add a string equated symbol
+ * Add a string equated symbol.
+ *
+ * If the desired symbol is a string it needs to be passed to this function with
+ * quotes inside the string, like sym_AddString("name", "\"test\"), or the
+ * assembler won't be able to use it with DB and similar. This is equivalent as
+ * ``` name EQUS "\"test\"" ```
+ *
+ * If the desired symbol is a register or a number, just the terminator quotes
+ * of the string are enough: sym_AddString("M_PI", "3.1415"). This is the same
+ * as ``` M_PI EQUS "3.1415" ```
*/
void
sym_AddString(char *tzSym, char *tzValue)
@@ -824,8 +833,8 @@
struct tm *tptr;
tptr = localtime(&tod);
- strftime(SavedTIME, sizeof(SavedTIME), "%H:%M:%S", tptr);
- strftime(SavedDATE, sizeof(SavedDATE), "%d %B %Y", tptr);
+ strftime(SavedTIME, sizeof(SavedTIME), "\"%H:%M:%S\"", tptr);
+ strftime(SavedDATE, sizeof(SavedDATE), "\"%d %B %Y\"", tptr);
sym_AddString("__TIME__", SavedTIME);
sym_AddString("__DATE__", SavedDATE);
}