
5 changed files with 92 additions and 0 deletions
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
#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; |
||||
} |
||||
|
Loading…
Reference in new issue