]> git.sur5r.net Git - cc65/commitdiff
Some improvements using the new SB_Printf for string buffers
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 16 Dec 2004 22:43:52 +0000 (22:43 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 16 Dec 2004 22:43:52 +0000 (22:43 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3335 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/codeopt.c
src/cc65/codeseg.c
src/cc65/compile.c
src/cc65/exprdesc.c

index fd909434d1359ee5d09499be175ec8f6022f3d1c..e26e747f42c2d8451d847e85015fbed322fac581 100644 (file)
@@ -42,7 +42,6 @@
 #include "cpu.h"
 #include "print.h"
 #include "xmalloc.h"
-#include "xsprintf.h"
 
 /* cc65 */
 #include "asmlabel.h"
index 4ae945fd62fce5b70832e83036cf8882901de48c..20c59df7b939dcf7b79dcedace3791c7f597089e 100644 (file)
@@ -42,9 +42,9 @@
 #include "debugflag.h"
 #include "global.h"
 #include "hashstr.h"
+#include "strbuf.h"
 #include "strutil.h"
 #include "xmalloc.h"
-#include "xsprintf.h"
 
 /* cc65 */
 #include "asmlabel.h"
@@ -506,11 +506,11 @@ void CS_AddVLine (CodeSeg* S, LineInfo* LI, const char* Format, va_list ap)
     char        Token[IDENTSIZE+10];
 
     /* Format the line */
-    char Buf [256];
-    xvsprintf (Buf, sizeof (Buf), Format, ap);
+    StrBuf Buf = STATIC_STRBUF_INITIALIZER;
+    SB_VPrintf (&Buf, Format, ap);
 
     /* Skip whitespace */
-    L = SkipSpace (Buf);
+    L = SkipSpace (SB_GetConstBuf (&Buf));
 
     /* Check which type of instruction we have */
     E = 0;     /* Assume no insn created */
@@ -539,6 +539,9 @@ void CS_AddVLine (CodeSeg* S, LineInfo* LI, const char* Format, va_list ap)
     if (E) {
        CS_AddEntry (S, E);
     }
+
+    /* Cleanup the string buffer */
+    DoneStrBuf (&Buf);
 }
 
 
index 8a9c7c3b5fb8b068fcd3f0cfd0869bc6ab249afe..bfec3eda5ef566454a5d8171b07745b32369b8c8 100644 (file)
@@ -271,9 +271,8 @@ static void Parse (void)
 void Compile (const char* FileName)
 /* Top level compile routine. Will setup things and call the parser. */
 {
-    char        Buf[20];
-    char        DateStr[20];
-    char        TimeStr[20];
+    char        DateStr[32];
+    char        TimeStr[32];
     time_t      Time;
     struct tm*  TM;
 
@@ -300,23 +299,23 @@ void Compile (const char* FileName)
      */
     if (IS_Get (&Optimize)) {
         long CodeSize = IS_Get (&CodeSizeFactor);
-       DefineNumericMacro ("__OPT__", 1);
+       DefineNumericMacro ("__OPT__", 1);
                if (CodeSize > 100) {
-           DefineNumericMacro ("__OPT_i__", CodeSize);
-       }
-       if (IS_Get (&EnableRegVars)) {
-           DefineNumericMacro ("__OPT_r__", 1);
-       }
+           DefineNumericMacro ("__OPT_i__", CodeSize);
+       }
+       if (IS_Get (&EnableRegVars)) {
+           DefineNumericMacro ("__OPT_r__", 1);
+       }
                if (IS_Get (&InlineStdFuncs)) {
-           DefineNumericMacro ("__OPT_s__", 1);
-       }
+           DefineNumericMacro ("__OPT_s__", 1);
+       }
     }
 
     /* __TIME__ and __DATE__ macros */
     Time = time (0);
     TM   = localtime (&Time);
-    strftime (Buf, sizeof (Buf), "%e %Y", TM);
-    xsprintf (DateStr, sizeof (DateStr), "\"%s %s\"", MonthNames[TM->tm_mon], Buf);
+    xsprintf (DateStr, sizeof (DateStr), "\"%s %2d %d\"",
+              MonthNames[TM->tm_mon], TM->tm_mday, TM->tm_year + 1900);
     strftime (TimeStr, sizeof (TimeStr), "\"%H:%M:%S\"", TM);
     DefineTextMacro ("__DATE__", DateStr);
     DefineTextMacro ("__TIME__", TimeStr);
index 4de2a6adfe428d4752c79dd85b7f5aea8a53535d..285da06e07b797009b34120f7d37ca48c7869bcb 100644 (file)
@@ -35,7 +35,7 @@
 
 /* common */
 #include "check.h"
-#include "xsprintf.h"
+#include "strbuf.h"
 
 /* cc65 */
 #include "asmlabel.h"
@@ -73,7 +73,7 @@ const char* ED_GetLabelName (const ExprDesc* Expr, long Offs)
  * call to the function.
  */
 {
-    static char Buf[256];
+    static StrBuf Buf = STATIC_STRBUF_INITIALIZER;
 
     /* Expr may have it's own offset, adjust Offs accordingly */
     Offs += Expr->IVal;
@@ -83,35 +83,30 @@ const char* ED_GetLabelName (const ExprDesc* Expr, long Offs)
 
         case E_LOC_ABS:
             /* Absolute: numeric address or const */
-           xsprintf (Buf, sizeof (Buf), "$%04X", (int)(Offs & 0xFFFF));
+                   SB_Printf (&Buf, "$%04X", (int)(Offs & 0xFFFF));
             break;
 
         case E_LOC_GLOBAL:
         case E_LOC_STATIC:
             /* Global or static variable */
            if (Offs) {
-               xsprintf (Buf, sizeof (Buf), "%s%+ld",
-                          SymGetAsmName (Expr->Sym), Offs);
+               SB_Printf (&Buf, "%s%+ld", SymGetAsmName (Expr->Sym), Offs);
            } else {
-               xsprintf (Buf, sizeof (Buf), "%s",
-                          SymGetAsmName (Expr->Sym));
+               SB_Printf (&Buf, "%s", SymGetAsmName (Expr->Sym));
            }
             break;
 
         case E_LOC_REGISTER:
             /* Register variable */
-           xsprintf (Buf, sizeof (Buf), "regbank+%u",
-                      (unsigned)((Offs + Expr->Name) & 0xFFFFU));
+           SB_Printf (&Buf, "regbank+%u", (unsigned)((Offs + Expr->Name) & 0xFFFFU));
             break;
 
         case E_LOC_LITERAL:
             /* Literal in the literal pool */
            if (Offs) {
-               xsprintf (Buf, sizeof (Buf), "%s%+ld",
-                          LocalLabelName (Expr->Name), Offs);
+               SB_Printf (&Buf, "%s%+ld", LocalLabelName (Expr->Name), Offs);
            } else {
-                       xsprintf (Buf, sizeof (Buf), "%s",
-                          LocalLabelName (Expr->Name));
+                       SB_Printf (&Buf, "%s", LocalLabelName (Expr->Name));
            }
             break;
 
@@ -120,7 +115,7 @@ const char* ED_GetLabelName (const ExprDesc* Expr, long Offs)
     }
 
     /* Return a pointer to the static buffer */
-    return Buf;
+    return SB_GetConstBuf (&Buf);
 }