diff --git a/apply.c b/apply.c index c671d9e86c..81607c0fb6 100644 --- a/apply.c +++ b/apply.c @@ -563,7 +563,7 @@ static int find_header(char *line, unsigned long size, int *hdrsize, struct patc struct fragment dummy; if (parse_fragment_header(line, len, &dummy) < 0) continue; - error("patch fragment without header at line %d: %.*s", linenr, len-1, line); + error("patch fragment without header at line %d: %.*s", linenr, (int)len-1, line); } if (size < len + 6) @@ -968,7 +968,7 @@ static int apply_fragments(struct buffer_desc *desc, struct patch *patch) while (frag) { if (apply_one_fragment(desc, frag) < 0) - return error("patch failed: %s:%d", patch->old_name, frag->oldpos); + return error("patch failed: %s:%ld", patch->old_name, frag->oldpos); frag = frag->next; } return 0; diff --git a/cache.h b/cache.h index 957e2ca7ca..efd2a2c595 100644 --- a/cache.h +++ b/cache.h @@ -40,6 +40,10 @@ #define NORETURN #endif +#ifndef __attribute__ +#define __attribute(x) +#endif + /* * Intensive research over the course of many years has shown that * port 9418 is totally unused by anything else. Or @@ -171,8 +175,8 @@ extern void rollback_index_file(struct cache_file *); #define TYPE_CHANGED 0x0040 /* Return a statically allocated filename matching the sha1 signature */ -extern char *mkpath(const char *fmt, ...); -extern char *git_path(const char *fmt, ...); +extern char *mkpath(const char *fmt, ...) __attribute__((format (printf, 1, 2))); +extern char *git_path(const char *fmt, ...) __attribute__((format (printf, 1, 2))); extern char *sha1_file_name(const unsigned char *sha1); extern char *sha1_pack_name(const unsigned char *sha1); extern char *sha1_pack_index_name(const unsigned char *sha1); @@ -218,8 +222,8 @@ extern char *sha1_to_hex(const unsigned char *sha1); /* static buffer result! */ /* General helper functions */ extern void usage(const char *err) NORETURN; -extern void die(const char *err, ...) NORETURN; -extern int error(const char *err, ...); +extern void die(const char *err, ...) NORETURN __attribute__((format (printf, 1, 2))); +extern int error(const char *err, ...) __attribute__((format (printf, 1, 2))); extern int base_name_compare(const char *name1, int len1, int mode1, const char *name2, int len2, int mode2); extern int cache_name_compare(const char *name1, int len1, const char *name2, int len2); diff --git a/clone-pack.c b/clone-pack.c index e9c20dee71..49820c6579 100644 --- a/clone-pack.c +++ b/clone-pack.c @@ -30,7 +30,7 @@ static int is_master(struct ref *ref) static void write_one_ref(struct ref *ref) { - char *path = git_path(ref->name); + char *path = git_path("%s", ref->name); int fd; char *hex; diff --git a/connect.c b/connect.c index 20b80a1b54..8f4d99aef2 100644 --- a/connect.c +++ b/connect.c @@ -166,7 +166,8 @@ static int match_explicit_refs(struct ref *src, struct ref *dst, if (matched_src) break; errs = 1; - error("src refspec %s does not match any."); + error("src refspec %s does not match any.", + rs[i].src); break; default: errs = 1; diff --git a/csum-file.h b/csum-file.h index 776cfb152a..3ad1a992a7 100644 --- a/csum-file.h +++ b/csum-file.h @@ -11,7 +11,7 @@ struct sha1file { }; extern struct sha1file *sha1fd(int fd, const char *name); -extern struct sha1file *sha1create(const char *fmt, ...); +extern struct sha1file *sha1create(const char *fmt, ...) __attribute__((format (printf, 1, 2))); extern int sha1close(struct sha1file *, unsigned char *, int); extern int sha1write(struct sha1file *, void *, unsigned int); extern int sha1write_compressed(struct sha1file *, void *, unsigned int); diff --git a/pack-check.c b/pack-check.c index 054b0131e9..511f29424a 100644 --- a/pack-check.c +++ b/pack-check.c @@ -15,7 +15,7 @@ static int verify_packfile(struct packed_git *p) /* Header consistency check */ hdr = p->pack_base; if (hdr->hdr_signature != htonl(PACK_SIGNATURE)) - return error("Packfile signature mismatch", p->pack_name); + return error("Packfile %s signature mismatch", p->pack_name); if (hdr->hdr_version != htonl(PACK_VERSION)) return error("Packfile version %d different from ours %d", ntohl(hdr->hdr_version), PACK_VERSION); diff --git a/pkt-line.h b/pkt-line.h index b0b4f6d495..51d0cbe219 100644 --- a/pkt-line.h +++ b/pkt-line.h @@ -5,7 +5,7 @@ * Silly packetized line writing interface */ void packet_flush(int fd); -void packet_write(int fd, const char *fmt, ...); +void packet_write(int fd, const char *fmt, ...) __attribute__((format (printf, 2, 3))); int packet_read_line(int fd, char *buffer, unsigned size); diff --git a/refs.c b/refs.c index 774f1630fe..a5c8946610 100644 --- a/refs.c +++ b/refs.c @@ -6,7 +6,7 @@ static int read_ref(const char *refname, unsigned char *sha1) { int ret = -1; - int fd = open(git_path(refname), O_RDONLY); + int fd = open(git_path("%s", refname), O_RDONLY); if (fd >= 0) { char buffer[60]; @@ -20,7 +20,7 @@ static int read_ref(const char *refname, unsigned char *sha1) static int do_for_each_ref(const char *base, int (*fn)(const char *path, const unsigned char *sha1)) { int retval = 0; - DIR *dir = opendir(git_path(base)); + DIR *dir = opendir(git_path("%s", base)); if (dir) { struct dirent *de; @@ -46,7 +46,7 @@ static int do_for_each_ref(const char *base, int (*fn)(const char *path, const u if (namelen > 255) continue; memcpy(path + baselen, de->d_name, namelen+1); - if (lstat(git_path(path), &st) < 0) + if (lstat(git_path("%s", path), &st) < 0) continue; if (S_ISDIR(st.st_mode)) { retval = do_for_each_ref(path, fn); diff --git a/tar-tree.c b/tar-tree.c index a877fe545e..2716ae3eb1 100644 --- a/tar-tree.c +++ b/tar-tree.c @@ -325,8 +325,8 @@ static void write_header(const unsigned char *sha1, char typeflag, const char *b memcpy(&header[257], "ustar", 6); memcpy(&header[263], "00", 2); - printf(&header[329], "%07o", 0); /* devmajor */ - printf(&header[337], "%07o", 0); /* devminor */ + sprintf(&header[329], "%07o", 0); /* devmajor */ + sprintf(&header[337], "%07o", 0); /* devminor */ memset(&header[148], ' ', 8); for (i = 0; i < RECORDSIZE; i++)