-
- if(*ch == 's')fstr = 1;
- else if(*ch == 'f')ffloat = 1;
- else if(*ch == 'd')radix = 10;
- else if(*ch == 'x')radix = 16;
- else if(*ch == 'c')radix = 0;
- else if(*ch == 'o')radix = 8;
-
- if(fstr) {
- str = va_arg(ap, char *);
- while (*str) putchar(*str++);
- } else
- if(ffloat) {
- flt = va_arg(ap, float);
- x_ftoa(flt, buffer, 32, 6);
- str1 = buffer;
- while( *str1 )str1++; str1--;
- while( *str1 == '0' )str1--; str1++;
- *str1 = 0; str1 = buffer;
- while( *str1 )putchar(*str1++);
- } else {
- if(flong)val = va_arg(ap, long);
+
+ if (*ch == 's')
+ fstr = 1;
+ else if (*ch == 'f')
+ ffloat = 1;
+ else if (*ch == 'd')
+ radix = 10;
+ else if (*ch == 'x')
+ radix = 16;
+ else if (*ch == 'c')
+ radix = 0;
+ else if (*ch == 'o')
+ radix = 8;
+
+ if (fstr)
+ {
+ str = va_arg (ap, char *);
+ while (*str)
+ putchar (*str++);
+ }
+ else if (ffloat)
+ {
+ flt = va_arg (ap, float);
+ x_ftoa (flt, buffer, 32, 6);
+ str1 = buffer;
+ while (*str1)
+ ++str1;
+ --str1;
+ while (*str1 == '0')
+ --str1;
+ ++str1;
+ *str1 = 0;
+ str1 = buffer;
+ while (*str1)
+ putchar (*str1++);
+ }
+ else
+ {
+ if (flong)
+ val = va_arg (ap, long);
+ else if (fchar)
+ val = (char) va_arg (ap, int); // FIXME: SDCC casts char arguments into ints