[bug #4296] PUTD() macro can't hack 10 digit values
authorGlenn Burkhardt <glenn@aoi.ultranet.com>
Tue, 30 Sep 2003 16:07:49 +0000 (16:07 +0000)
committerGlenn Burkhardt <glenn@aoi.ultranet.com>
Tue, 30 Sep 2003 16:07:49 +0000 (16:07 +0000)
Once the number exceeded 1000000000, the conversion would fail.  An execution of
 dp -format "%(clock{text})" "Tue, 01 Jul 2003 21:38:05 +0700" would erroneously print
749660476, instead of 1057070285.

The macros PUTD() and PUTDF() have been replaced by snprintf() calls;  These macros
should never have been written in the first place, when system functions exist to do the
work.

sbr/fmt_scan.c

index 4f79bf6..0a2397b 100644 (file)
@@ -511,10 +511,7 @@ fmt_scan (struct format *format, char *scanl, int width, int *dat)
            value = dat[fmt->f_value];
            break;
        case FT_LV_STRLEN:
-           if (str != NULL)
-                   value = strlen(str);
-           else
-                   value = 0;
+           value = strlen(str);
            break;
        case FT_LV_CHAR_LEFT:
            value = width - (cp - scanl);