X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Fsnprintf.c;h=4478f6f3a3d76282213dcd948cdc8c2ebe10a059;hp=2f2698bea47d2c958f394ece7d7970a420b0c4f2;hb=4a08094db88011153adadbf995103770b20d2a31;hpb=73ff253e371f58dde04ce30f04c59f2000a1b7e5 diff --git a/src/snprintf.c b/src/snprintf.c index 2f2698be..4478f6f3 100644 --- a/src/snprintf.c +++ b/src/snprintf.c @@ -44,9 +44,9 @@ * original. Also, there is now a builtin-test, just compile with: * gcc -DTEST_SNPRINTF -o snprintf snprintf.c -lm * and run snprintf for results. - * + * * Thomas Roessler 01/27/98 for mutt 0.89i - * The PGP code was using unsigned hexadecimal formats. + * The PGP code was using unsigned hexadecimal formats. * Unfortunately, unsigned formats simply didn't work. * * Michael Elkins 03/05/98 for mutt 0.90.8 @@ -188,7 +188,7 @@ static int dopr (char *buffer, size_t maxlen, const char *format, va_list args) int cflags; int total; size_t currlen; - + state = DP_S_DEFAULT; currlen = flags = cflags = min = 0; max = -1; @@ -200,17 +200,17 @@ static int dopr (char *buffer, size_t maxlen, const char *format, va_list args) if (ch == '\0') state = DP_S_DONE; - switch(state) + switch(state) { case DP_S_DEFAULT: - if (ch == '%') + if (ch == '%') state = DP_S_FLAGS; - else + else total += dopr_outch (buffer, &currlen, maxlen, ch); ch = *format++; break; case DP_S_FLAGS: - switch (ch) + switch (ch) { case '-': flags |= DP_F_MINUS; @@ -242,23 +242,23 @@ static int dopr (char *buffer, size_t maxlen, const char *format, va_list args) { min = 10*min + char_to_int (ch); ch = *format++; - } - else if (ch == '*') + } + else if (ch == '*') { min = va_arg (args, int); ch = *format++; state = DP_S_DOT; - } - else + } + else state = DP_S_DOT; break; case DP_S_DOT: - if (ch == '.') + if (ch == '.') { state = DP_S_MAX; ch = *format++; - } - else + } + else state = DP_S_MOD; break; case DP_S_MAX: @@ -268,18 +268,18 @@ static int dopr (char *buffer, size_t maxlen, const char *format, va_list args) max = 0; max = 10*max + char_to_int (ch); ch = *format++; - } - else if (ch == '*') + } + else if (ch == '*') { max = va_arg (args, int); ch = *format++; state = DP_S_MOD; - } - else + } + else state = DP_S_MOD; break; case DP_S_MOD: - switch (ch) + switch (ch) { case 'h': cflags = DP_C_SHORT; @@ -314,11 +314,11 @@ static int dopr (char *buffer, size_t maxlen, const char *format, va_list args) state = DP_S_CONV; break; case DP_S_CONV: - switch (ch) + switch (ch) { case 'd': case 'i': - if (cflags == DP_C_SHORT) + if (cflags == DP_C_SHORT) value = (short int) va_arg (args, int); else if (cflags == DP_C_LONG) value = va_arg (args, long int); @@ -408,25 +408,25 @@ static int dopr (char *buffer, size_t maxlen, const char *format, va_list args) max, flags); break; case 'n': - if (cflags == DP_C_SHORT) + if (cflags == DP_C_SHORT) { short int *num; num = va_arg (args, short int *); *num = currlen; } - else if (cflags == DP_C_LONG) + else if (cflags == DP_C_LONG) { long int *num; num = va_arg (args, long int *); *num = currlen; - } - else if (cflags == DP_C_LLONG) + } + else if (cflags == DP_C_LLONG) { LLONG *num; num = va_arg (args, LLONG *); *num = currlen; - } - else + } + else { int *num; num = va_arg (args, int *); @@ -458,9 +458,9 @@ static int dopr (char *buffer, size_t maxlen, const char *format, va_list args) } if (buffer != NULL) { - if (currlen < maxlen - 1) + if (currlen < maxlen - 1) buffer[currlen] = '\0'; - else + else buffer[maxlen - 1] = '\0'; } return total; @@ -472,7 +472,7 @@ static int fmtstr (char *buffer, size_t *currlen, size_t maxlen, int padlen, strln; /* amount to pad */ int cnt = 0; int total = 0; - + if (value == 0) { value = "(null)"; @@ -486,9 +486,9 @@ static int fmtstr (char *buffer, size_t *currlen, size_t maxlen, for (strln = 0; strln < max && value[strln]; ++strln) ; padlen = min - strln; - if (padlen < 0) + if (padlen < 0) padlen = 0; - if (flags & DP_F_MINUS) + if (flags & DP_F_MINUS) padlen = -padlen; /* Left Justify */ while (padlen > 0) @@ -522,7 +522,7 @@ static int fmtint (char *buffer, size_t *currlen, size_t maxlen, int zpadlen = 0; /* amount to zero pad */ const char *digits; int total = 0; - + if (max < 0) max = 0; @@ -541,7 +541,7 @@ static int fmtint (char *buffer, size_t *currlen, size_t maxlen, if (flags & DP_F_SPACE) signvalue = ' '; } - + if (flags & DP_F_UP) /* Should characters be upper case? */ digits = "0123456789ABCDEF"; @@ -564,7 +564,7 @@ static int fmtint (char *buffer, size_t *currlen, size_t maxlen, zpadlen = MAX(zpadlen, spadlen); spadlen = 0; } - if (flags & DP_F_MINUS) + if (flags & DP_F_MINUS) spadlen = -spadlen; /* Left Justifty */ #ifdef DEBUG_SNPRINTF @@ -573,18 +573,18 @@ static int fmtint (char *buffer, size_t *currlen, size_t maxlen, #endif /* Spaces */ - while (spadlen > 0) + while (spadlen > 0) { total += dopr_outch (buffer, currlen, maxlen, ' '); --spadlen; } /* Sign */ - if (signvalue) + if (signvalue) total += dopr_outch (buffer, currlen, maxlen, signvalue); /* Zeros */ - if (zpadlen > 0) + if (zpadlen > 0) { while (zpadlen > 0) { @@ -594,9 +594,9 @@ static int fmtint (char *buffer, size_t *currlen, size_t maxlen, } /* Digits */ - while (place > 0) + while (place > 0) total += dopr_outch (buffer, currlen, maxlen, convert[--place]); - + /* Left Justified spaces */ while (spadlen < 0) { total += dopr_outch (buffer, currlen, maxlen, ' '); @@ -625,7 +625,7 @@ static LDOUBLE pow10_int (int exp) result *= 10; exp--; } - + return result; } @@ -651,7 +651,7 @@ static int fmtfp (char *buffer, size_t *currlen, size_t maxlen, int iplace = 0; int fplace = 0; int padlen = 0; /* amount to pad */ - int zpadlen = 0; + int zpadlen = 0; int total = 0; LLONG intpart; LLONG fracpart; @@ -659,8 +659,8 @@ static int fmtfp (char *buffer, size_t *currlen, size_t maxlen, int leadingfrac0s = 0; /* zeros at the start of fractional part */ int omitzeros = 0; int omitcount = 0; - - /* + + /* * AIX manpage says the default is 0, but Solaris says the default * is 6, and sprintf on AIX defaults to 6 */ @@ -719,7 +719,7 @@ static int fmtfp (char *buffer, size_t *currlen, size_t maxlen, # define MAX_DIGITS 9 /* just long */ #endif - /* + /* * Sorry, we only support several digits past the decimal because of * our conversion method */ @@ -780,14 +780,14 @@ static int fmtfp (char *buffer, size_t *currlen, size_t maxlen, zpadlen = max - fplace; if (zpadlen < 0) zpadlen = 0; - if (padlen < 0) + if (padlen < 0) padlen = 0; - if (flags & DP_F_MINUS) + if (flags & DP_F_MINUS) padlen = -padlen; /* Left Justifty */ - if ((flags & DP_F_ZERO) && (padlen > 0)) + if ((flags & DP_F_ZERO) && (padlen > 0)) { - if (signvalue) + if (signvalue) { total += dopr_outch (buffer, currlen, maxlen, signvalue); --padlen; @@ -804,10 +804,10 @@ static int fmtfp (char *buffer, size_t *currlen, size_t maxlen, total += dopr_outch (buffer, currlen, maxlen, ' '); --padlen; } - if (signvalue) + if (signvalue) total += dopr_outch (buffer, currlen, maxlen, signvalue); - while (iplace > 0) + while (iplace > 0) total += dopr_outch (buffer, currlen, maxlen, iconvert[--iplace]); /* @@ -818,7 +818,7 @@ static int fmtfp (char *buffer, size_t *currlen, size_t maxlen, { total += dopr_outch (buffer, currlen, maxlen, '.'); - while (fplace > omitcount) + while (fplace > omitcount) total += dopr_outch (buffer, currlen, maxlen, fconvert[--fplace]); } @@ -828,7 +828,7 @@ static int fmtfp (char *buffer, size_t *currlen, size_t maxlen, --zpadlen; } - while (padlen < 0) + while (padlen < 0) { total += dopr_outch (buffer, currlen, maxlen, ' '); ++padlen; @@ -912,7 +912,7 @@ int main (void) #endif NULL }; - double fp_nums[] = { -1.5, 134.21, 91340.2, 341.1234, 0203.9, 0.96, 0.996, + double fp_nums[] = { -1.5, 134.21, 91340.2, 341.1234, 0203.9, 0.96, 0.996, 0.9996, 1.996, 4.136, 0.00205, 0.0001, 321.000009, 0}; char *int_fmt[] = { @@ -963,7 +963,7 @@ int main (void) sprintf (buf2, fp_fmt[x], fp_nums[y]); if (strcmp (buf1, buf2)) { - printf("snprintf doesn't match Format: %s\n\tsnprintf = %s\n\tsprintf = %s\n", + printf("snprintf doesn't match Format: %s\n\tsnprintf = %s\n\tsprintf = %s\n", fp_fmt[x], buf1, buf2); fail++; } @@ -977,7 +977,7 @@ int main (void) sprintf (buf2, int_fmt[x], int_nums[y]); if (strcmp (buf1, buf2)) { - printf("snprintf doesn't match Format: %s\n\tsnprintf = %s\n\tsprintf = %s\n", + printf("snprintf doesn't match Format: %s\n\tsnprintf = %s\n\tsprintf = %s\n", int_fmt[x], buf1, buf2); fail++; } @@ -992,7 +992,7 @@ int main (void) sprintf (buf2, llong_fmt[x], llong_nums[y]); if (strcmp (buf1, buf2)) { - printf("snprintf doesn't match Format: %s\n\tsnprintf = %s\n\tsprintf = %s\n", + printf("snprintf doesn't match Format: %s\n\tsnprintf = %s\n\tsprintf = %s\n", llong_fmt[x], buf1, buf2); fail++; }