restored use of PUTDF() macro; was broken in versions 1.10-1.12;
[mmh] / sbr / fmt_scan.c
index 4f79bf6..c9b882d 100644 (file)
@@ -88,7 +88,6 @@ match (char *str, char *sub)
 /*
  * macros to format data
  */
-
 #define PUTDF(cp, num, wid, fill)\
        if (cp + wid < ep) {\
            if ((i = (num)) < 0)\
@@ -109,26 +108,6 @@ match (char *str, char *sub)
            cp += c;\
            }
 
-#define PUTD(cp, num)\
-       if (cp < ep) {\
-           if ((i = (num)) == 0)\
-               *cp++ = '0';\
-           else {\
-               if ((i = (num)) < 0) {\
-                   *cp++ = '-';\
-                   i = -(num);\
-                   }\
-               c = 10;\
-               while (c <= i) \
-                   c *= 10;\
-               while (cp < ep && c > 1) {\
-                   c /= 10;\
-                   *cp++ = (i / c) + '0';\
-                   i %= c;\
-                   }\
-               }\
-           }
-
 #ifdef LOCALE
 #define PUTSF(cp, str, wid, fill) {\
                ljust = 0;\
@@ -286,7 +265,7 @@ fmt_scan (struct format *format, char *scanl, int width, int *dat)
     char *cp, *ep, *sp;
     char *savestr, *str = NULL;
     char buffer[BUFSIZ], buffer2[BUFSIZ];
-    int i, c, ljust;
+    int i, c, ljust, n;
     int value = 0;
     time_t t;
     struct format *fmt;
@@ -346,7 +325,8 @@ fmt_scan (struct format *format, char *scanl, int width, int *dat)
            adios (NULL, "internal error (FT_STRFW)");
 
        case FT_NUM:
-           PUTD (cp, value);
+           n = snprintf(cp, ep - cp, "%d", value);
+           if (n >= 0) cp += n;
            break;
        case FT_NUMF:
            PUTDF (cp, value, fmt->f_width, fmt->f_fill);