if (prec == 0)
prec = 1;
fp_begin:
- if (prec < 0)
+ if (prec < 0) {
prec = DEFPREC;
- if (dtoaresult != NULL)
+ }
+ if (dtoaresult != NULL) {
freedtoa(dtoaresult);
+ }
if (flags & LLONGINT) {
fparg.ldbl = GETARG(long double);
dtoaresult = cp = ldtoa(&fparg.ldbl, expchar ? 2 : 3, prec,
dtoaresult = cp = dtoa(fparg.dbl, expchar ? 2 : 3, prec,
&expt, &signflag, &dtoaend);
- if (expt == 9999)
+ if (expt == 9999) {
expt = INT_MAX;
+ }
}
/* Our dtoa / ldtoa call strdup(), which can fail. PR319844 */
if (dtoaresult == NULL) {
sbuf.error = TRUE;
goto error;
}
- if (signflag)
+ if (signflag) {
sign = '-';
+ }
if (expt == INT_MAX) { /* inf or nan */
if (*cp == 'N') {
cp = (ch >= 'a') ? "nan" : "NAN";
sign = '\0';
- } else
+ } else {
cp = (ch >= 'a') ? "inf" : "INF";
+ }
size = 3;
break;
}
if (expt > -4 && expt <= prec) {
/* Make %[gG] smell like %[fF] */
expchar = '\0';
- if (flags & ALT)
+ if (flags & ALT) {
prec -= expt;
- else
+ } else {
prec = ndig - expt;
- if (prec < 0)
+ }
+
+ if (prec < 0) {
prec = 0;
+ }
} else {
/*
* Make %[gG] smell like %[eE], but
* trim trailing zeroes if no # flag.
*/
- if (!(flags & ALT))
+
+ if (!(flags & ALT)) {
prec = ndig;
+ }
}
}
if (expchar) {
expsize = BSDFmt_Exponent(expstr, expt - 1, expchar);
size = expsize + prec;
- if (prec > 1 || flags & ALT)
+ if (prec > 1 || flags & ALT) {
++size;
+ }
} else {
/* space for digits before decimal point */
- if (expt > 0)
+ if (expt > 0) {
size = expt;
- else /* "0" */
+ } else { /* "0" */
size = 1;
+ }
/* space for decimal pt and following digits */
- if (prec || flags & ALT)
+ if (prec || flags & ALT) {
size += prec + 1;
+ }
if (grouping && expt > 0) {
/* space for thousands' grouping */
nseps = nrepeats = 0;
lead = expt;
while (*grouping != CHAR_MAX) {
- if (lead <= *grouping)
+ if (lead <= *grouping) {
break;
+ }
lead -= *grouping;
if (*(grouping+1)) {
nseps++;
grouping++;
- } else
+ } else {
nrepeats++;
+ }
}
size += nseps + nrepeats;
} else
* value overflows or is otherwise unrepresentable.
* C99 says to use `signed char' for %hhn conversions.
*/
- if (flags & LLONGINT)
+ if (flags & LLONGINT) {
*GETARG(long long *) = ret;
- else if (flags & SIZET)
+ }
+ else if (flags & SIZET) {
*GETARG(size_t *) = (size_t)ret;
- else if (flags & PTRDIFFT)
+ }
+ else if (flags & PTRDIFFT) {
*GETARG(ptrdiff_t *) = ret;
- else if (flags & INTMAXT)
+ }
+ else if (flags & INTMAXT) {
*GETARG(intmax_t *) = ret;
- else if (flags & LONGINT)
+ }
+ else if (flags & LONGINT) {
*GETARG(long *) = ret;
- else if (flags & SHORTINT)
+ }
+ else if (flags & SHORTINT) {
*GETARG(short *) = ret;
- else if (flags & CHARINT)
+ }
+ else if (flags & CHARINT) {
*GETARG(signed char *) = ret;
- else
+ } else {
*GETARG(int *) = ret;
+ }
continue; /* no output */
case 'O':
flags |= LONGINT;
/*FALLTHROUGH*/
case 'o':
- if (flags & INTMAX_SIZE)
+ if (flags & INTMAX_SIZE) {
ujval = UJARG();
- else
+ } else {
ulval = UARG();
+ }
base = 8;
goto nosign;
case 'p':
free(convbuf);
convbuf = NULL;
}
- if ((wcp = GETARG(wchar_t *)) == NULL)
+ if ((wcp = GETARG(wchar_t *)) == NULL) {
cp = "(null)";
- else {
+ } else {
convbuf = BSDFmt_WCharToUTF8(wcp, prec);
if (convbuf == NULL) {
sbuf.error = TRUE;
if (p != NULL) {
size = p - cp;
- if (size > prec)
+ if (size > prec) {
size = prec;
- } else
+ }
+ } else {
size = prec;
+ }
size = CodeSet_Utf8FindCodePointBoundary(cp, size);
- } else
+ } else {
size = strlen(cp);
+ }
sign = '\0';
break;
case 'U':
base = 16;
/* leading 0x/X only if non-zero */
if (flags & ALT &&
- (flags & INTMAX_SIZE ? ujval != 0 : ulval != 0))
+ (flags & INTMAX_SIZE ? ujval != 0 : ulval != 0)) {
ox[1] = ch;
+ }
flags &= ~GROUPING;
/* unsigned conversions */
cp = buf + INT_CONV_BUF;
if (flags & INTMAX_SIZE) {
if (ujval != 0 || prec != 0 ||
- (flags & ALT && base == 8))
+ (flags & ALT && base == 8)) {
cp = BSDFmt_UJToA(ujval, cp, base,
flags & ALT, xdigs,
flags & GROUPING, thousands_sep,
grouping);
+ }
} else {
if (ulval != 0 || prec != 0 ||
- (flags & ALT && base == 8))
+ (flags & ALT && base == 8)) {
cp = __ultoa(ulval, cp, base,
flags & ALT, xdigs,
flags & GROUPING, thousands_sep,
grouping);
+ }
}
size = buf + INT_CONV_BUF - cp;
- if (size > INT_CONV_BUF) /* should never happen */
+ if (size > INT_CONV_BUF) { /* should never happen */
abort();
+ }
break;
default: /* "%?" prints ?, unless ? is NUL */
- if (ch == '\0')
+ if (ch == '\0') {
goto done;
+ }
/* pretend it was %c with argument ch */
cp = buf;
*cp = ch;
* size excludes decimal prec; realsz includes it.
*/
realsz = dprec > size ? dprec : size;
- if (sign)
+ if (sign) {
realsz++;
- if (ox[1])
+ }
+ if (ox[1]) {
realsz += 2;
+ }
prsize = width > realsz ? width : realsz;
if ((unsigned)ret + prsize > INT_MAX) {
}
/* right-adjusting blank padding */
- if ((flags & (LADJUST|ZEROPAD)) == 0)
+ if ((flags & (LADJUST|ZEROPAD)) == 0) {
PAD(width - realsz, blanks);
+ }
/* prefix */
- if (sign)
+ if (sign) {
PRINT(&sign, 1);
+ }
if (ox[1]) { /* ox[1] is either x, X, or \0 */
ox[0] = '0';
}
/* right-adjusting zero padding */
- if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD)
+ if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD) {
PAD(width - realsz, zeroes);
+ }
/* leading zeroes from decimal precision */
PAD(dprec - size, zeroes);
if (!expchar) { /* %[fF] or sufficiently short %[gG] */
if (expt <= 0) {
PRINT(zeroes, 1);
- if (prec || flags & ALT)
+ if (prec || flags & ALT) {
PRINT(decimal_point, 1);
+ }
+
PAD(-expt, zeroes);
/* already handled initial 0's */
prec += expt;
cp += lead;
if (grouping) {
while (nseps > 0 || nrepeats > 0) {
- if (nrepeats > 0)
+ if (nrepeats > 0) {
nrepeats--;
- else {
+ } else {
grouping--;
nseps--;
}
PRINTANDPAD(cp,dtoaend, *grouping, zeroes);
cp += *grouping;
}
- if (cp > dtoaend)
+ if (cp > dtoaend) {
cp = dtoaend;
+ }
}
- if (prec || flags & ALT)
+ if (prec || flags & ALT) {
PRINT(decimal_point,1);
+ }
}
PRINTANDPAD(cp, dtoaend, prec, zeroes);
} else { /* %[eE] or sufficiently long %[gG] */
PRINT(buf, 2);
PRINT(cp, ndig - 1);
PAD(prec - ndig, zeroes);
- } else /* XeYYY */
+ } else { /* XeYYY */
PRINT(cp, 1);
+ }
PRINT(expstr, expsize);
}
}
PRINT(cp, size);
#endif
/* left-adjusting padding (always blank) */
- if (flags & LADJUST)
+ if (flags & LADJUST) {
PAD(width - realsz, blanks);
+ }
/* finally, adjust ret */
ret += prsize;
va_end(orgap);
#endif
#ifndef NO_FLOATING_POINT
- if (dtoaresult != NULL)
+ if (dtoaresult != NULL) {
freedtoa(dtoaresult);
+ }
#endif
if (convbuf != NULL) {
free(convbuf);
if (sbuf.error) {
ret = EOF;
}
- if ((argtable != NULL) && (argtable != statargtable))
+ if ((argtable != NULL) && (argtable != statargtable)) {
free (argtable);
+ }
// return allocated buffer on success, free it on failure
if (sbuf.alloc) {