mirror of
https://git.proxmox.com/git/libgit2
synced 2025-08-03 23:59:05 +00:00
Add git__fmt as an easier to use snprintf
Checking the return value of snprintf is a pain, as it must be >= 0 and < sizeof(buffer). git__fmt is a simple wrapper to perform these checks. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
5690f02e87
commit
2c4b7707f7
@ -19,6 +19,7 @@
|
||||
#endif
|
||||
|
||||
#include "cc-compat.h"
|
||||
#include "git/common.h"
|
||||
#include "util.h"
|
||||
#include "thread-utils.h"
|
||||
#include "errors.h"
|
||||
|
15
src/util.c
15
src/util.c
@ -1,5 +1,7 @@
|
||||
#define GIT__NO_HIDE_MALLOC
|
||||
#include "common.h"
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
|
||||
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 (;;) {
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user