Changed _xdata, _near, etc and removed _generic from library files
[fw/sdcc] / device / lib / vprintf.c
index a0b2d4c14e7b34ce1d6a6fcce67f90b89f1039bd..77bd361fab7df3a33580a8701466cb6fe8496f36 100644 (file)
    You are forbidden to forbid anyone else to use, share and improve
    what you give them.   Help stamp out software-hoarding!  
 -------------------------------------------------------------------------*/
+
+/* this module uses some global variables instead function parameters, so: */
+#ifdef SDCC_STACK_AUTO
+#warning "this module cannot yet be use as a reentrant one"
+#endif
+
 #ifdef __ds390
 #define USE_FLOATS 1
 #endif
@@ -43,7 +49,7 @@
 
 /****************************************************************************/
 
-typedef char _generic *ptr_t;
+typedef char ptr_t;
 
 #ifdef toupper
 #undef toupper
@@ -58,7 +64,7 @@ typedef union
   long           l;
   unsigned long  ul;
   float          f;
-  char _generic *p;
+  char           *p;
 } value_t;
 
 
@@ -72,7 +78,7 @@ static bit   lsd;
 /* this one NEEDS to be in data */
 static data value_t value;
 
-static unsigned short radix;
+static unsigned char radix;
 
 // jwk: TODO: this makes the whole dammed thing nonreentrent
 static int charsOutputted;
@@ -252,14 +258,14 @@ static void output_float (float f, unsigned char reqWidth,
 
 int vsprintf (const char *buf, const char *format, va_list ap)
 {
-  bit            left_justify;
-  bit            zero_padding;
-  bit            prefix_sign;
-  bit            prefix_space;
-  bit            signed_argument;
-  bit            char_argument;
-  bit            long_argument;
-  bit            float_argument;
+  static bit            left_justify;
+  static bit            zero_padding;
+  static bit            prefix_sign;
+  static bit            prefix_space;
+  static bit            signed_argument;
+  static bit            char_argument;
+  static bit            long_argument;
+  static bit            float_argument;
 
   unsigned char  width;
   signed char decimals;