upx-clang-format -i snprintf.cpp

This commit is contained in:
Markus F.X.J. Oberhumer
2016-09-20 13:03:48 +02:00
parent 7acf150ac5
commit c97765de14
+37 -62
View File
@@ -58,7 +58,6 @@
* *
**************************************************************/ **************************************************************/
#if 1 #if 1
#include "conf.h" #include "conf.h"
#else #else
@@ -128,22 +127,18 @@
#undef MAX #undef MAX
#define MAX(p, q) (((p) >= (q)) ? (p) : (q)) #define MAX(p, q) (((p) >= (q)) ? (p) : (q))
/************************************************************************* /*************************************************************************
// //
**************************************************************************/ **************************************************************************/
static void dopr_outch(char *buffer, size_t *currlen, size_t maxlen, int c) static void dopr_outch(char *buffer, size_t *currlen, size_t maxlen, int c) {
{
if (*currlen < maxlen) if (*currlen < maxlen)
buffer[*currlen] = (char) c; buffer[*currlen] = (char) c;
*currlen += 1; *currlen += 1;
} }
static void fmtstr(char *buffer, size_t *currlen, size_t maxlen, const char *value, int flags,
static void fmtstr(char *buffer, size_t *currlen, size_t maxlen, int min, int max) {
const char *value, int flags, int min, int max)
{
int padlen, strln; /* amount to pad */ int padlen, strln; /* amount to pad */
int cnt = 0; int cnt = 0;
@@ -177,11 +172,9 @@ static void fmtstr(char *buffer, size_t *currlen, size_t maxlen,
} }
} }
/* Have to handle DP_F_NUM (ie 0x and 0 alternates) */ /* Have to handle DP_F_NUM (ie 0x and 0 alternates) */
static void fmtint(char *buffer, size_t *currlen, size_t maxlen, static void fmtint(char *buffer, size_t *currlen, size_t maxlen, LLONG value, unsigned base,
LLONG value, unsigned base, int min, int max, int flags) int min, int max, int flags) {
{
int signvalue = 0; int signvalue = 0;
ULLONG uvalue; ULLONG uvalue;
char convert[64 + 1]; char convert[64 + 1];
@@ -217,8 +210,10 @@ static void fmtint(char *buffer, size_t *currlen, size_t maxlen,
zpadlen = max - place; zpadlen = max - place;
spadlen = min - MAX(max, place) - (signvalue ? 1 : 0); spadlen = min - MAX(max, place) - (signvalue ? 1 : 0);
if (zpadlen < 0) zpadlen = 0; if (zpadlen < 0)
if (spadlen < 0) spadlen = 0; zpadlen = 0;
if (spadlen < 0)
spadlen = 0;
if (flags & DP_F_ZERO) { if (flags & DP_F_ZERO) {
zpadlen = MAX(zpadlen, spadlen); zpadlen = MAX(zpadlen, spadlen);
spadlen = 0; spadlen = 0;
@@ -227,8 +222,7 @@ static void fmtint(char *buffer, size_t *currlen, size_t maxlen,
spadlen = -spadlen; /* Left Justifty */ spadlen = -spadlen; /* Left Justifty */
#ifdef DEBUG_SNPRINTF #ifdef DEBUG_SNPRINTF
printf("zpad: %d, spad: %d, min: %d, max: %d, place: %d\n", printf("zpad: %d, spad: %d, min: %d, max: %d, place: %d\n", zpadlen, spadlen, min, max, place);
zpadlen, spadlen, min, max, place);
#endif #endif
/* Spaces */ /* Spaces */
@@ -258,15 +252,13 @@ static void fmtint(char *buffer, size_t *currlen, size_t maxlen,
} }
} }
/************************************************************************* /*************************************************************************
// floating format support // floating format support
**************************************************************************/ **************************************************************************/
#if !(NO_FLOAT) #if !(NO_FLOAT)
static LDOUBLE abs_val(LDOUBLE value) static LDOUBLE abs_val(LDOUBLE value) {
{
LDOUBLE result = value; LDOUBLE result = value;
if (value < 0) if (value < 0)
@@ -275,8 +267,7 @@ static LDOUBLE abs_val(LDOUBLE value)
return result; return result;
} }
static LDOUBLE POW10(int exp) static LDOUBLE POW10(int exp) {
{
LDOUBLE result = 1; LDOUBLE result = 1;
while (exp) { while (exp) {
@@ -287,21 +278,20 @@ static LDOUBLE POW10(int exp)
return result; return result;
} }
static LLONG ROUND(LDOUBLE value) static LLONG ROUND(LDOUBLE value) {
{
LLONG intpart; LLONG intpart;
intpart = (LLONG) value; intpart = (LLONG) value;
value = value - intpart; value = value - intpart;
if (value >= 0.5) intpart++; if (value >= 0.5)
intpart++;
return intpart; return intpart;
} }
/* a replacement for modf that doesn't need the math library. Should /* a replacement for modf that doesn't need the math library. Should
be portable, but slow */ be portable, but slow */
static double my_modf(double x0, double *iptr) static double my_modf(double x0, double *iptr) {
{
int i; int i;
long l; long l;
double x = x0; double x = x0;
@@ -309,7 +299,8 @@ static double my_modf(double x0, double *iptr)
for (i = 0; i < 100; i++) { for (i = 0; i < 100; i++) {
l = (long) x; l = (long) x;
if (l <= (x+1) && l >= (x-1)) break; if (l <= (x + 1) && l >= (x - 1))
break;
x *= 0.1; x *= 0.1;
f *= 10.0; f *= 10.0;
} }
@@ -332,10 +323,8 @@ static double my_modf(double x0, double *iptr)
return x - *iptr; return x - *iptr;
} }
static void fmtfp(char *buffer, size_t *currlen, size_t maxlen, LDOUBLE fvalue, int min, int max,
static void fmtfp (char *buffer, size_t *currlen, size_t maxlen, int flags) {
LDOUBLE fvalue, int min, int max, int flags)
{
/* avoid warnings with 'gcc -Wshadow' */ /* avoid warnings with 'gcc -Wshadow' */
#undef index #undef index
#define index iindex #define index iindex
@@ -418,8 +407,7 @@ static void fmtfp (char *buffer, size_t *currlen, size_t maxlen,
iconvert[iplace] = 0; iconvert[iplace] = 0;
/* Convert fractional part */ /* Convert fractional part */
if (fracpart) if (fracpart) {
{
do { do {
temp = fracpart; temp = fracpart;
my_modf(fracpart * 0.1, &fracpart); my_modf(fracpart * 0.1, &fracpart);
@@ -435,7 +423,8 @@ static void fmtfp (char *buffer, size_t *currlen, size_t maxlen,
/* -1 for decimal point, another -1 if we are printing a sign */ /* -1 for decimal point, another -1 if we are printing a sign */
padlen = min - iplace - max - 1 - ((signvalue) ? 1 : 0); padlen = min - iplace - max - 1 - ((signvalue) ? 1 : 0);
zpadlen = max - fplace; zpadlen = max - fplace;
if (zpadlen < 0) zpadlen = 0; if (zpadlen < 0)
zpadlen = 0;
if (padlen < 0) if (padlen < 0)
padlen = 0; padlen = 0;
if (flags & DP_F_MINUS) if (flags & DP_F_MINUS)
@@ -489,16 +478,13 @@ static void fmtfp (char *buffer, size_t *currlen, size_t maxlen,
#undef index #undef index
} }
#endif /* !(NO_FLOAT) */ #endif /* !(NO_FLOAT) */
/************************************************************************* /*************************************************************************
// dopr() // dopr()
**************************************************************************/ **************************************************************************/
static size_t dopr(char *buffer, size_t maxlen, const char *format, va_list args) static size_t dopr(char *buffer, size_t maxlen, const char *format, va_list args) {
{
char ch; char ch;
LLONG value; LLONG value;
#if !(NO_FLOAT) #if !(NO_FLOAT)
@@ -704,16 +690,19 @@ static size_t dopr(char *buffer, size_t maxlen, const char *format, va_list args
break; break;
case 's': case 's':
strvalue = va_arg(args, const char *); strvalue = va_arg(args, const char *);
if (!strvalue) strvalue = "(NULL)"; if (!strvalue)
strvalue = "(NULL)";
if (max == -1) { if (max == -1) {
max = (int) strlen(strvalue); max = (int) strlen(strvalue);
} }
if (min > 0 && max >= 0 && min > max) max = min; if (min > 0 && max >= 0 && min > max)
max = min;
fmtstr(buffer, &currlen, maxlen, strvalue, flags, min, max); fmtstr(buffer, &currlen, maxlen, strvalue, flags, min, max);
break; break;
case 'p': case 'p':
strvalue = (const char *) va_arg(args, const void *); strvalue = (const char *) va_arg(args, const void *);
fmtint (buffer, &currlen, maxlen, (LLONG) (upx_uintptr_t) strvalue, 16, min, max, flags); fmtint(buffer, &currlen, maxlen, (LLONG)(upx_uintptr_t) strvalue, 16, min, max,
flags);
break; break;
case 'n': case 'n':
if (cflags == DP_C_SHORT) { if (cflags == DP_C_SHORT) {
@@ -767,14 +756,12 @@ static size_t dopr(char *buffer, size_t maxlen, const char *format, va_list args
return currlen; return currlen;
} }
/************************************************************************* /*************************************************************************
// public entries // public entries
**************************************************************************/ **************************************************************************/
// UPX version with assertions // UPX version with assertions
static int xdopr(char *buffer, size_t maxlen, const char *format, va_list args) static int xdopr(char *buffer, size_t maxlen, const char *format, va_list args) {
{
size_t ret; size_t ret;
// preconditions // preconditions
@@ -787,8 +774,7 @@ static int xdopr(char *buffer, size_t maxlen, const char *format, va_list args)
ret = dopr(buffer, maxlen, format, args); ret = dopr(buffer, maxlen, format, args);
// postconditions // postconditions
if (buffer != NULL) if (buffer != NULL) {
{
assert((int) ret >= 0); assert((int) ret >= 0);
assert(ret < maxlen); assert(ret < maxlen);
assert(buffer[ret] == '\0'); assert(buffer[ret] == '\0');
@@ -797,15 +783,11 @@ static int xdopr(char *buffer, size_t maxlen, const char *format, va_list args)
return (int) ret; return (int) ret;
} }
int upx_vsnprintf(char *str, size_t count, const char *format, va_list ap) {
int upx_vsnprintf(char *str, size_t count, const char *format, va_list ap)
{
return xdopr(str, count, format, ap); return xdopr(str, count, format, ap);
} }
int __acc_cdecl_va upx_snprintf(char *str, size_t count, const char *format, ...) {
int __acc_cdecl_va upx_snprintf(char *str, size_t count, const char *format,...)
{
va_list ap; va_list ap;
int ret; int ret;
@@ -815,16 +797,13 @@ int __acc_cdecl_va upx_snprintf(char *str, size_t count, const char *format,...)
return ret; return ret;
} }
int upx_vasprintf(char **ptr, const char *format, va_list ap) {
int upx_vasprintf(char **ptr, const char *format, va_list ap)
{
int ret; int ret;
assert(ptr != NULL); assert(ptr != NULL);
*ptr = NULL; *ptr = NULL;
ret = xdopr(NULL, 0, format, ap); ret = xdopr(NULL, 0, format, ap);
if (ret > 0) if (ret > 0) {
{
*ptr = (char *) malloc(ret + 1); *ptr = (char *) malloc(ret + 1);
assert(*ptr != NULL); assert(*ptr != NULL);
if (*ptr == NULL) if (*ptr == NULL)
@@ -834,9 +813,7 @@ int upx_vasprintf(char **ptr, const char *format, va_list ap)
return ret; return ret;
} }
int __acc_cdecl_va upx_asprintf(char **ptr, const char *format, ...) {
int __acc_cdecl_va upx_asprintf(char **ptr, const char *format, ...)
{
va_list ap; va_list ap;
int ret; int ret;
@@ -846,7 +823,6 @@ int __acc_cdecl_va upx_asprintf(char **ptr, const char *format, ...)
return ret; return ret;
} }
/************************************************************************* /*************************************************************************
// //
**************************************************************************/ **************************************************************************/
@@ -998,4 +974,3 @@ int main(void)
/* /*
vi:ts=4:et vi:ts=4:et
*/ */