diff --git a/src/common.h b/src/common.h index 61950787a..9a827fad4 100644 --- a/src/common.h +++ b/src/common.h @@ -19,6 +19,7 @@ #endif #include "cc-compat.h" +#include "git/common.h" #include "util.h" #include "thread-utils.h" #include "errors.h" diff --git a/src/util.c b/src/util.c index feb1bd8ab..80829e69e 100644 --- a/src/util.c +++ b/src/util.c @@ -1,5 +1,7 @@ #define GIT__NO_HIDE_MALLOC #include "common.h" +#include +#include void *git__malloc(size_t n) { @@ -25,6 +27,19 @@ char *git__strdup(const char *s) return r; } +int git__fmt(char *buf, size_t buf_sz, const char *fmt, ...) +{ + va_list va; + int r; + + va_start(va, fmt); + r = vsnprintf(buf, buf_sz, fmt, va); + va_end(va); + if (r < 0 || r >= buf_sz) + return GIT_ERROR; + return r; +} + int git__prefixcmp(const char *str, const char *prefix) { for (;;) { diff --git a/src/util.h b/src/util.h index 8e8169ce5..018fce57e 100644 --- a/src/util.h +++ b/src/util.h @@ -26,6 +26,8 @@ extern char *git__strdup(const char *); # define strdup(a) GIT__FORBID_MALLOC #endif +extern int git__fmt(char *, size_t, const char *, ...) + GIT_FORMAT_PRINTF(3, 4); extern int git__prefixcmp(const char *str, const char *prefix); extern int git__suffixcmp(const char *str, const char *suffix);