1#include "../git-compat-util.h"
   2#undef vsnprintf
   4int git_vsnprintf(char *str, size_t maxsize, const char *format, va_list ap)
   5{
   6        char *s;
   7        int ret;
   8        ret = vsnprintf(str, maxsize, format, ap);
  10        if (ret != -1)
  11                return ret;
  12        s = NULL;
  14        if (maxsize < 128)
  15                maxsize = 128;
  16        while (ret == -1) {
  18                maxsize *= 4;
  19                str = realloc(s, maxsize);
  20                if (! str)
  21                        break;
  22                s = str;
  23                ret = vsnprintf(str, maxsize, format, ap);
  24        }
  25        free(s);
  26        return ret;
  27}
  28int git_snprintf(char *str, size_t maxsize, const char *format, ...)
  30{
  31        va_list ap;
  32        int ret;
  33        va_start(ap, format);
  35        ret = git_vsnprintf(str, maxsize, format, ap);
  36        va_end(ap);
  37        return ret;
  39}
  40