Merge branch 'ab/attribute-format'
Many "printf"-like helper functions we have have been annotated with __attribute__() to catch placeholder/parameter mismatches. * ab/attribute-format: advice.h: add missing __attribute__((format)) & fix usage *.h: add a few missing __attribute__((format)) *.c static functions: add missing __attribute__((format)) sequencer.c: move static function to avoid forward decl *.c static functions: don't forward-declare __attribute__
This commit is contained in:
commit
dd6d3c90ee
@ -280,6 +280,7 @@ static void add_p_state_clear(struct add_p_state *s)
|
||||
clear_add_i_state(&s->s);
|
||||
}
|
||||
|
||||
__attribute__((format (printf, 2, 3)))
|
||||
static void err(struct add_p_state *s, const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
1
advice.h
1
advice.h
@ -90,6 +90,7 @@ int advice_enabled(enum advice_type type);
|
||||
/**
|
||||
* Checks the visibility of the advice before printing.
|
||||
*/
|
||||
__attribute__((format (printf, 2, 3)))
|
||||
void advise_if_enabled(enum advice_type type, const char *advice, ...);
|
||||
|
||||
int error_resolve_conflict(const char *me);
|
||||
|
@ -210,6 +210,7 @@ static void write_state_bool(const struct am_state *state,
|
||||
* If state->quiet is false, calls fprintf(fp, fmt, ...), and appends a newline
|
||||
* at the end.
|
||||
*/
|
||||
__attribute__((format (printf, 3, 4)))
|
||||
static void say(const struct am_state *state, FILE *fp, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
@ -117,6 +117,7 @@ static int write_in_file(const char *path, const char *mode, const char *format,
|
||||
return fclose(fp);
|
||||
}
|
||||
|
||||
__attribute__((format (printf, 2, 3)))
|
||||
static int write_to_file(const char *path, const char *format, ...)
|
||||
{
|
||||
int res;
|
||||
@ -129,6 +130,7 @@ static int write_to_file(const char *path, const char *format, ...)
|
||||
return res;
|
||||
}
|
||||
|
||||
__attribute__((format (printf, 2, 3)))
|
||||
static int append_to_file(const char *path, const char *format, ...)
|
||||
{
|
||||
int res;
|
||||
|
@ -369,9 +369,7 @@ static void parse_pack_header(void)
|
||||
use(sizeof(struct pack_header));
|
||||
}
|
||||
|
||||
static NORETURN void bad_object(off_t offset, const char *format,
|
||||
...) __attribute__((format (printf, 2, 3)));
|
||||
|
||||
__attribute__((format (printf, 2, 3)))
|
||||
static NORETURN void bad_object(off_t offset, const char *format, ...)
|
||||
{
|
||||
va_list params;
|
||||
|
@ -425,9 +425,6 @@ static int proc_receive_ref_matches(struct command *cmd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void rp_error(const char *err, ...) __attribute__((format (printf, 1, 2)));
|
||||
static void rp_warning(const char *err, ...) __attribute__((format (printf, 1, 2)));
|
||||
|
||||
static void report_message(const char *prefix, const char *err, va_list params)
|
||||
{
|
||||
int sz;
|
||||
@ -445,6 +442,7 @@ static void report_message(const char *prefix, const char *err, va_list params)
|
||||
xwrite(2, msg, sz);
|
||||
}
|
||||
|
||||
__attribute__((format (printf, 1, 2)))
|
||||
static void rp_warning(const char *err, ...)
|
||||
{
|
||||
va_list params;
|
||||
@ -453,6 +451,7 @@ static void rp_warning(const char *err, ...)
|
||||
va_end(params);
|
||||
}
|
||||
|
||||
__attribute__((format (printf, 1, 2)))
|
||||
static void rp_error(const char *err, ...)
|
||||
{
|
||||
va_list params;
|
||||
|
1
cache.h
1
cache.h
@ -1385,6 +1385,7 @@ enum get_oid_result {
|
||||
};
|
||||
|
||||
int repo_get_oid(struct repository *r, const char *str, struct object_id *oid);
|
||||
__attribute__((format (printf, 2, 3)))
|
||||
int get_oidf(struct object_id *oid, const char *fmt, ...);
|
||||
int repo_get_oid_commit(struct repository *r, const char *str, struct object_id *oid);
|
||||
int repo_get_oid_committish(struct repository *r, const char *str, struct object_id *oid);
|
||||
|
@ -2408,6 +2408,7 @@ cleanup:
|
||||
#define VERIFY_COMMIT_GRAPH_ERROR_HASH 2
|
||||
static int verify_commit_graph_error;
|
||||
|
||||
__attribute__((format (printf, 1, 2)))
|
||||
static void graph_report(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
@ -10,6 +10,7 @@ static char *username;
|
||||
static char *password;
|
||||
static UInt16 port;
|
||||
|
||||
__attribute__((format (printf, 1, 2)))
|
||||
static void die(const char *err, ...)
|
||||
{
|
||||
char msg[4096];
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
|
||||
|
||||
__attribute__((format (printf, 1, 2)))
|
||||
static void die(const char *err, ...)
|
||||
{
|
||||
char msg[4096];
|
||||
|
@ -66,6 +66,7 @@ const char *get_preferred_languages(void)
|
||||
}
|
||||
|
||||
#ifndef NO_GETTEXT
|
||||
__attribute__((format (printf, 1, 2)))
|
||||
static int test_vsnprintf(const char *fmt, ...)
|
||||
{
|
||||
char buf[26];
|
||||
|
@ -451,6 +451,7 @@ static int buffer_gets(struct imap_buffer *b, char **s)
|
||||
/* not reached */
|
||||
}
|
||||
|
||||
__attribute__((format (printf, 1, 2)))
|
||||
static void imap_info(const char *msg, ...)
|
||||
{
|
||||
va_list va;
|
||||
@ -463,6 +464,7 @@ static void imap_info(const char *msg, ...)
|
||||
}
|
||||
}
|
||||
|
||||
__attribute__((format (printf, 1, 2)))
|
||||
static void imap_warn(const char *msg, ...)
|
||||
{
|
||||
va_list va;
|
||||
@ -504,6 +506,7 @@ static char *next_arg(char **s)
|
||||
return ret;
|
||||
}
|
||||
|
||||
__attribute__((format (printf, 3, 4)))
|
||||
static int nfsnprintf(char *buf, int blen, const char *fmt, ...)
|
||||
{
|
||||
int ret;
|
||||
|
@ -8,6 +8,7 @@
|
||||
#define debug_mm(...) fprintf(stderr, __VA_ARGS__)
|
||||
#define debug_str(X) ((X) ? (X) : "(none)")
|
||||
#else
|
||||
__attribute__((format (printf, 1, 2)))
|
||||
static inline void debug_mm(const char *format, ...) {}
|
||||
static inline const char *debug_str(const char *s) { return s; }
|
||||
#endif
|
||||
|
@ -530,6 +530,7 @@ static void clear_or_reinit_internal_opts(struct merge_options_internal *opti,
|
||||
renames->callback_data_nr = renames->callback_data_alloc = 0;
|
||||
}
|
||||
|
||||
__attribute__((format (printf, 2, 3)))
|
||||
static int err(struct merge_options *opt, const char *err, ...)
|
||||
{
|
||||
va_list params;
|
||||
|
@ -167,6 +167,7 @@ static void flush_output(struct merge_options *opt)
|
||||
}
|
||||
}
|
||||
|
||||
__attribute__((format (printf, 2, 3)))
|
||||
static int err(struct merge_options *opt, const char *err, ...)
|
||||
{
|
||||
va_list params;
|
||||
|
1
midx.c
1
midx.c
@ -1172,6 +1172,7 @@ void clear_midx_file(struct repository *r)
|
||||
|
||||
static int verify_midx_error;
|
||||
|
||||
__attribute__((format (printf, 1, 2)))
|
||||
static void midx_report(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
1
quote.h
1
quote.h
@ -31,6 +31,7 @@ struct strbuf;
|
||||
|
||||
void sq_quote_buf(struct strbuf *, const char *src);
|
||||
void sq_quote_argv(struct strbuf *, const char **argv);
|
||||
__attribute__((format (printf, 2, 3)))
|
||||
void sq_quotef(struct strbuf *, const char *fmt, ...);
|
||||
|
||||
/*
|
||||
|
@ -213,6 +213,7 @@ static int used_atom_cnt, need_tagged, need_symref;
|
||||
* Expand string, append it to strbuf *sb, then return error code ret.
|
||||
* Allow to save few lines of code.
|
||||
*/
|
||||
__attribute__((format (printf, 3, 4)))
|
||||
static int strbuf_addf_ret(struct strbuf *sb, int ret, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
43
sequencer.c
43
sequencer.c
@ -3521,6 +3521,7 @@ static int do_exec(struct repository *r, const char *command_line)
|
||||
return status;
|
||||
}
|
||||
|
||||
__attribute__((format (printf, 2, 3)))
|
||||
static int safe_append(const char *filename, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
@ -3598,8 +3599,27 @@ static int do_label(struct repository *r, const char *name, int len)
|
||||
return ret;
|
||||
}
|
||||
|
||||
__attribute__((format (printf, 3, 4)))
|
||||
static const char *reflog_message(struct replay_opts *opts,
|
||||
const char *sub_action, const char *fmt, ...);
|
||||
const char *sub_action, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
static struct strbuf buf = STRBUF_INIT;
|
||||
char *reflog_action = getenv(GIT_REFLOG_ACTION);
|
||||
|
||||
va_start(ap, fmt);
|
||||
strbuf_reset(&buf);
|
||||
strbuf_addstr(&buf, reflog_action ? reflog_action : action_name(opts));
|
||||
if (sub_action)
|
||||
strbuf_addf(&buf, " (%s)", sub_action);
|
||||
if (fmt) {
|
||||
strbuf_addstr(&buf, ": ");
|
||||
strbuf_vaddf(&buf, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
|
||||
return buf.buf;
|
||||
}
|
||||
|
||||
static int do_reset(struct repository *r,
|
||||
const char *name, int len,
|
||||
@ -4178,27 +4198,6 @@ int apply_autostash_oid(const char *stash_oid)
|
||||
return apply_save_autostash_oid(stash_oid, 1);
|
||||
}
|
||||
|
||||
static const char *reflog_message(struct replay_opts *opts,
|
||||
const char *sub_action, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
static struct strbuf buf = STRBUF_INIT;
|
||||
char *reflog_action = getenv(GIT_REFLOG_ACTION);
|
||||
|
||||
va_start(ap, fmt);
|
||||
strbuf_reset(&buf);
|
||||
strbuf_addstr(&buf, reflog_action ? reflog_action : action_name(opts));
|
||||
if (sub_action)
|
||||
strbuf_addf(&buf, " (%s)", sub_action);
|
||||
if (fmt) {
|
||||
strbuf_addstr(&buf, ": ");
|
||||
strbuf_vaddf(&buf, fmt, ap);
|
||||
}
|
||||
va_end(ap);
|
||||
|
||||
return buf.buf;
|
||||
}
|
||||
|
||||
static int run_git_checkout(struct repository *r, struct replay_opts *opts,
|
||||
const char *commit, const char *action)
|
||||
{
|
||||
|
@ -27,6 +27,7 @@ static int uic_is_stale(const struct update_info_ctx *uic)
|
||||
return uic->old_fp == NULL;
|
||||
}
|
||||
|
||||
__attribute__((format (printf, 2, 3)))
|
||||
static int uic_printf(struct update_info_ctx *uic, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
1
strbuf.h
1
strbuf.h
@ -263,6 +263,7 @@ static inline void strbuf_insertstr(struct strbuf *sb, size_t pos,
|
||||
void strbuf_vinsertf(struct strbuf *sb, size_t pos, const char *fmt,
|
||||
va_list ap);
|
||||
|
||||
__attribute__((format (printf, 3, 4)))
|
||||
void strbuf_insertf(struct strbuf *sb, size_t pos, const char *fmt, ...);
|
||||
|
||||
/**
|
||||
|
@ -16,7 +16,7 @@ int cmd__advise_if_enabled(int argc, const char **argv)
|
||||
* selected here and in t0018 where this command is being
|
||||
* executed.
|
||||
*/
|
||||
advise_if_enabled(ADVICE_NESTED_TAG, argv[1]);
|
||||
advise_if_enabled(ADVICE_NESTED_TAG, "%s", argv[1]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -265,6 +265,7 @@ const char *worktree_prune_reason(struct worktree *wt, timestamp_t expire)
|
||||
}
|
||||
|
||||
/* convenient wrapper to deal with NULL strbuf */
|
||||
__attribute__((format (printf, 2, 3)))
|
||||
static void strbuf_addf_gently(struct strbuf *buf, const char *fmt, ...)
|
||||
{
|
||||
va_list params;
|
||||
|
Loading…
Reference in New Issue
Block a user