git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Timo Sirainen <tss@iki.fi>
To: git@vger.kernel.org
Subject: [PATCH] -Werror fixes
Date: Tue, 09 Aug 2005 18:30:22 +0300	[thread overview]
Message-ID: <1123601422.21306.46.camel@hurina> (raw)

[-- Attachment #1: Type: text/plain, Size: 6828 bytes --]

GCC's format __attribute__ is good for checking errors, especially with
-Werror=2 parameter. Patch below fixes most of the reported problems
against 2005-08-09 snapshot.

Also how about trying to implement some kind of generically usable
string object? Now the code uses sprintf/snprintf/etc. in various
different ways with their own memory allocations, and it looks all messy
and difficult to verify their correctness.

diff -ru git-current/apply.c git-modified/apply.c
--- git-current/apply.c	2005-08-09 18:00:06.000000000 +0300
+++ git-modified/apply.c	2005-08-09 17:50:13.712911497 +0300
@@ -563,7 +563,7 @@
 			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 @@
 
 	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 -ru git-current/cache.h git-modified/cache.h
--- git-current/cache.h	2005-08-09 18:00:06.000000000 +0300
+++ git-modified/cache.h	2005-08-09 18:14:37.858158948 +0300
@@ -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 @@
 #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 @@
 
 /* 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 -ru git-current/clone-pack.c git-modified/clone-pack.c
--- git-current/clone-pack.c	2005-08-09 18:00:06.000000000 +0300
+++ git-modified/clone-pack.c	2005-08-09 17:53:32.295922222 +0300
@@ -30,7 +30,7 @@
 
 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 -ru git-current/connect.c git-modified/connect.c
--- git-current/connect.c	2005-08-09 18:00:06.000000000 +0300
+++ git-modified/connect.c	2005-08-09 17:46:35.187838763 +0300
@@ -166,7 +166,8 @@
 			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 -ru git-current/csum-file.h git-modified/csum-file.h
--- git-current/csum-file.h	2005-08-09 18:00:06.000000000 +0300
+++ git-modified/csum-file.h	2005-08-09 18:02:33.825363592 +0300
@@ -11,7 +11,7 @@
 };
 
 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 -ru git-current/pack-check.c git-modified/pack-check.c
--- git-current/pack-check.c	2005-08-09 18:00:07.000000000 +0300
+++ git-modified/pack-check.c	2005-08-09 17:46:24.084918180 +0300
@@ -15,7 +15,7 @@
 	/* 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 -ru git-current/pkt-line.h git-modified/pkt-line.h
--- git-current/pkt-line.h	2005-08-09 18:00:07.000000000 +0300
+++ git-modified/pkt-line.h	2005-08-09 18:02:56.637125022 +0300
@@ -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 -ru git-current/refs.c git-modified/refs.c
--- git-current/refs.c	2005-08-09 18:00:07.000000000 +0300
+++ git-modified/refs.c	2005-08-09 17:53:25.318217137 +0300
@@ -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 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 @@
 			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 -ru git-current/tar-tree.c git-modified/tar-tree.c
--- git-current/tar-tree.c	2005-08-09 18:00:07.000000000 +0300
+++ git-modified/tar-tree.c	2005-08-09 17:49:27.512564400 +0300
@@ -325,8 +325,8 @@
 	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++)


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

             reply	other threads:[~2005-08-09 15:30 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-08-09 15:30 Timo Sirainen [this message]
2005-08-09 18:11 ` [PATCH] -Werror fixes Timo Sirainen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1123601422.21306.46.camel@hurina \
    --to=tss@iki.fi \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).