40 lines
644 B
40 lines
644 B
#include "../git-compat-util.h" |
|
|
|
#undef vsnprintf |
|
int git_vsnprintf(char *str, size_t maxsize, const char *format, va_list ap) |
|
{ |
|
char *s; |
|
int ret; |
|
|
|
ret = vsnprintf(str, maxsize, format, ap); |
|
if (ret != -1) |
|
return ret; |
|
|
|
s = NULL; |
|
if (maxsize < 128) |
|
maxsize = 128; |
|
|
|
while (ret == -1) { |
|
maxsize *= 4; |
|
str = realloc(s, maxsize); |
|
if (! str) |
|
break; |
|
s = str; |
|
ret = vsnprintf(str, maxsize, format, ap); |
|
} |
|
free(s); |
|
return ret; |
|
} |
|
|
|
int git_snprintf(char *str, size_t maxsize, const char *format, ...) |
|
{ |
|
va_list ap; |
|
int ret; |
|
|
|
va_start(ap, format); |
|
ret = git_vsnprintf(str, maxsize, format, ap); |
|
va_end(ap); |
|
|
|
return ret; |
|
} |
|
|
|
|