value = va_arg (args, int);
if (fmtint(buffer, &currlen, maxlen,
value, 10, min, max, flags) == -1)
- return -1;
+ goto fail;
break;
case 'o':
flags |= DP_F_UNSIGNED;
value = (long)va_arg (args, unsigned int);
if (fmtint(buffer, &currlen, maxlen, value,
8, min, max, flags) == -1)
- return -1;
+ goto fail;
break;
case 'u':
flags |= DP_F_UNSIGNED;
value = (long)va_arg (args, unsigned int);
if (fmtint(buffer, &currlen, maxlen, value,
10, min, max, flags) == -1)
- return -1;
+ goto fail;
break;
case 'X':
flags |= DP_F_UP;
value = (long)va_arg (args, unsigned int);
if (fmtint(buffer, &currlen, maxlen, value,
16, min, max, flags) == -1)
- return -1;
+ goto fail;
break;
case 'f':
if (cflags == DP_C_LDOUBLE)
fvalue = va_arg (args, double);
if (fmtfp(buffer, &currlen, maxlen, fvalue,
min, max, flags) == -1)
- return -1;
+ goto fail;
break;
case 'E':
flags |= DP_F_UP;
fvalue = va_arg (args, double);
if (fmtfp(buffer, &currlen, maxlen, fvalue,
min, max, flags) == -1)
- return -1;
+ goto fail;
break;
case 'G':
flags |= DP_F_UP;
fvalue = va_arg (args, double);
if (fmtfp(buffer, &currlen, maxlen, fvalue,
min, max, flags) == -1)
- return -1;
+ goto fail;
break;
case 'c':
DOPR_OUTCH(buffer, currlen, maxlen,
if (min > 0 && max >= 0 && min > max) max = min;
if (fmtstr(buffer, &currlen, maxlen,
strvalue, flags, min, max) == -1)
- return -1;
+ goto fail;
break;
case 'p':
strvalue = va_arg (args, void *);
if (fmtint(buffer, &currlen, maxlen,
(long) strvalue, 16, min, max, flags) == -1)
- return -1;
+ goto fail;
break;
#if we_dont_want_this_in_openssh
case 'n':
else if (maxlen > 0)
buffer[maxlen - 1] = '\0';
}
-
+ va_end(args);
return currlen < INT_MAX ? (int)currlen : -1;
+ fail:
+ va_end(args);
+ return -1;
}
static int