Commit 27b8b31e by Patrick Steinhardt

parse: remove use of variadic macros which are not C89 compliant

The macro `git_parse_error` is implemented in a variadic way so
that it's possible to pass printf-style parameters.
Unfortunately, variadic macros are not defined by C89 and thus we
cannot use that functionality. But as we have implemented
`git_error_vset` in the previous commit, we can now just use that
instead.

Convert `git_parse_error` to a variadic function and use
`git_error_vset` to fix the compliance violation. While at it,
move the function to "patch_parse.c".
parent c8e63812
...@@ -28,9 +28,6 @@ typedef struct { ...@@ -28,9 +28,6 @@ typedef struct {
int git_parse_ctx_init(git_parse_ctx *ctx, const char *content, size_t content_len); int git_parse_ctx_init(git_parse_ctx *ctx, const char *content, size_t content_len);
void git_parse_ctx_clear(git_parse_ctx *ctx); void git_parse_ctx_clear(git_parse_ctx *ctx);
#define git_parse_err(...) \
( git_error_set(GIT_ERROR_PATCH, __VA_ARGS__), -1 )
#define git_parse_ctx_contains_s(ctx, str) \ #define git_parse_ctx_contains_s(ctx, str) \
git_parse_ctx_contains(ctx, str, sizeof(str) - 1) git_parse_ctx_contains(ctx, str, sizeof(str) - 1)
......
...@@ -33,6 +33,18 @@ typedef struct { ...@@ -33,6 +33,18 @@ typedef struct {
char *old_prefix, *new_prefix; char *old_prefix, *new_prefix;
} git_patch_parsed; } git_patch_parsed;
static int git_parse_err(const char *fmt, ...) GIT_FORMAT_PRINTF(1, 2);
static int git_parse_err(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
git_error_vset(GIT_ERROR_PATCH, fmt, ap);
va_end(ap);
return -1;
}
static size_t header_path_len(git_patch_parse_ctx *ctx) static size_t header_path_len(git_patch_parse_ctx *ctx)
{ {
bool inquote = 0; bool inquote = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment