41 lines
644 B
C
41 lines
644 B
C
|
#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;
|
||
|
}
|
||
|
|