sparse cleanup

Fix various things that sparse complains about:
 - use NULL instead of 0
 - make sure we declare everything properly, or mark it static
 - use proper function declarations ("fn(void)" instead of "fn()")

Sparse is always right.
diff --git a/date.c b/date.c
index b0b83c9..1f366a6 100644
--- a/date.c
+++ b/date.c
@@ -10,6 +10,8 @@
 #include <ctype.h>
 #include <time.h>
 
+#include "cache.h"
+
 static time_t my_mktime(struct tm *tm)
 {
 	static const int mdays[] = {
diff --git a/diff-cache.c b/diff-cache.c
index 40fd6b4..ff310ab 100644
--- a/diff-cache.c
+++ b/diff-cache.c
@@ -204,11 +204,11 @@
 
 	diff_setup(detect_rename, diff_score_opt, reverse_diff,
 		   (generate_patch ? -1 : line_termination),
-		   0, 0);
+		   NULL, 0);
 
 	mark_merge_entries();
 
-	tree = read_object_with_reference(tree_sha1, "tree", &size, 0);
+	tree = read_object_with_reference(tree_sha1, "tree", &size, NULL);
 	if (!tree)
 		die("bad tree object %s", argv[1]);
 	if (read_tree(tree, size, 1))
diff --git a/diff-files.c b/diff-files.c
index eb99c3c..c36bcf2 100644
--- a/diff-files.c
+++ b/diff-files.c
@@ -86,7 +86,7 @@
 
 	diff_setup(detect_rename, diff_score_opt, reverse_diff,
 		   (generate_patch ? -1 : line_termination),
-		   0, 0);
+		   NULL, 0);
 
 	for (i = 0; i < entries; i++) {
 		struct stat st;
diff --git a/diff-helper.c b/diff-helper.c
index 8d896f8..ea9aefa 100644
--- a/diff-helper.c
+++ b/diff-helper.c
@@ -79,7 +79,7 @@
 		if ((*cp != '\t') && *cp != ' ')
 			return -1;
 		strcpy(path, ++cp);
-		diff_change(old_mode, new_mode, old_sha1, new_sha1, path, 0);
+		diff_change(old_mode, new_mode, old_sha1, new_sha1, path, NULL);
 		break;
 	default:
 		return -1;
diff --git a/diff-tree.c b/diff-tree.c
index 3bf8899..5aa0d5e 100644
--- a/diff-tree.c
+++ b/diff-tree.c
@@ -254,10 +254,10 @@
 	unsigned long size1, size2;
 	int retval;
 
-	tree1 = read_object_with_reference(old, "tree", &size1, 0);
+	tree1 = read_object_with_reference(old, "tree", &size1, NULL);
 	if (!tree1)
 		die("unable to read source tree (%s)", sha1_to_hex(old));
-	tree2 = read_object_with_reference(new, "tree", &size2, 0);
+	tree2 = read_object_with_reference(new, "tree", &size2, NULL);
 	if (!tree2)
 		die("unable to read destination tree (%s)", sha1_to_hex(new));
 	retval = diff_tree(tree1, size1, tree2, size2, base);
@@ -273,7 +273,7 @@
 
 	diff_setup(detect_rename, diff_score_opt, reverse_diff,
 		   (generate_patch ? -1 : line_termination),
-		   0, 0);
+		   NULL, 0);
 	ret = diff_tree_sha1(old, new, base);
 	diff_flush();
 	return ret;
@@ -287,8 +287,8 @@
 
 	diff_setup(detect_rename, diff_score_opt, reverse_diff,
 		   (generate_patch ? -1 : line_termination),
-		   0, 0);
-	tree = read_object_with_reference(new, "tree", &size, 0);
+		   NULL, 0);
+	tree = read_object_with_reference(new, "tree", &size, NULL);
 	if (!tree)
 		die("unable to read root tree (%s)", sha1_to_hex(new));
 	retval = diff_tree("", 0, tree, size, base);
diff --git a/diff.c b/diff.c
index eae2fc3..21771e7 100644
--- a/diff.c
+++ b/diff.c
@@ -385,7 +385,7 @@
 				*arg++ = temp[1].mode;
 				if (other)
 					*arg++ = other;
-				*arg = 0;
+				*arg = NULL;
 				execvp(pgm, (char *const*) exec_arg);
 			}
 			else
@@ -504,7 +504,7 @@
 	else if (s->flags & SHOULD_MUNMAP)
 		munmap(s->data, s->size);
 	s->flags &= ~(SHOULD_FREE|SHOULD_MUNMAP);
-	s->data = 0;
+	s->data = NULL;
 }
 
 static void flush_remaining_diff(struct diff_spec_hold *elem,
@@ -541,7 +541,7 @@
 	return 0;
 }
 
-int estimate_similarity(struct diff_spec_hold *src, struct diff_spec_hold *dst)
+static int estimate_similarity(struct diff_spec_hold *src, struct diff_spec_hold *dst)
 {
 	/* src points at a deleted file and dst points at a created
 	 * file.  They may be quite similar, in which case we want to
diff --git a/export.c b/export.c
index b648717..ce10b5a 100644
--- a/export.c
+++ b/export.c
@@ -4,7 +4,7 @@
 /*
  * Show one commit
  */
-void show_commit(struct commit *commit)
+static void show_commit(struct commit *commit)
 {
 	char cmdline[400];
 	char hex[100];
@@ -27,7 +27,7 @@
 /*
  * Show all unseen commits, depth-first
  */
-void show_unseen(struct commit *top)
+static void show_unseen(struct commit *top)
 {
 	struct commit_list *parents;
 
@@ -42,7 +42,7 @@
 	show_commit(top);
 }
 
-void export(struct commit *top, struct commit *base)
+static void export(struct commit *top, struct commit *base)
 {
 	mark_reachable(&top->object, 1);
 	if (base)
@@ -50,7 +50,7 @@
 	show_unseen(top);
 }
 
-struct commit *get_commit(unsigned char *sha1)
+static struct commit *get_commit(unsigned char *sha1)
 {
 	struct commit *commit = lookup_commit(sha1);
 	if (!commit->object.parsed) {
diff --git a/init-db.c b/init-db.c
index b6bb783..a281f30 100644
--- a/init-db.c
+++ b/init-db.c
@@ -5,7 +5,7 @@
  */
 #include "cache.h"
 
-void safe_create_dir(const char *dir)
+static void safe_create_dir(const char *dir)
 {
 	if (mkdir(dir, 0755) < 0) {
 		if (errno != EEXIST) {
diff --git a/ls-files.c b/ls-files.c
index 214bd4a..3b93d5e 100644
--- a/ls-files.c
+++ b/ls-files.c
@@ -179,7 +179,7 @@
 				  e2->name, e2->len);
 }
 
-static void show_killed_files()
+static void show_killed_files(void)
 {
 	int i;
 	for (i = 0; i < nr_dir; i++) {
diff --git a/ls-tree.c b/ls-tree.c
index 30dfcdd..0f455c2 100644
--- a/ls-tree.c
+++ b/ls-tree.c
@@ -5,8 +5,8 @@
  */
 #include "cache.h"
 
-int line_termination = '\n';
-int recursive = 0;
+static int line_termination = '\n';
+static int recursive = 0;
 
 struct path_prefix {
 	struct path_prefix *prev;
@@ -73,7 +73,7 @@
 	void *buffer;
 	unsigned long size;
 
-	buffer = read_object_with_reference(sha1, "tree", &size, 0);
+	buffer = read_object_with_reference(sha1, "tree", &size, NULL);
 	if (!buffer)
 		die("unable to read sha1 file");
 	list_recursive(buffer, "tree", size, NULL);
diff --git a/merge-base.c b/merge-base.c
index 04f40fc..12ebb95 100644
--- a/merge-base.c
+++ b/merge-base.c
@@ -15,7 +15,7 @@
 	return NULL;
 }
 
-struct commit *common_ancestor(struct commit *rev1, struct commit *rev2)
+static struct commit *common_ancestor(struct commit *rev1, struct commit *rev2)
 {
 	struct commit_list *rev1list = NULL;
 	struct commit_list *rev2list = NULL;
diff --git a/read-tree.c b/read-tree.c
index c5f26d5..283f4d8 100644
--- a/read-tree.c
+++ b/read-tree.c
@@ -13,7 +13,7 @@
 	unsigned long size;
 	int ret;
 
-	buffer = read_object_with_reference(sha1, "tree", &size, 0);
+	buffer = read_object_with_reference(sha1, "tree", &size, NULL);
 	if (!buffer)
 		return -1;
 	ret = read_tree(buffer, size, stage);
diff --git a/rev-tree.c b/rev-tree.c
index f7dc98b..bc190eb 100644
--- a/rev-tree.c
+++ b/rev-tree.c
@@ -46,7 +46,7 @@
 	return 1;
 }
 
-void process_commit(unsigned char *sha1)
+static void process_commit(unsigned char *sha1)
 {
 	struct commit_list *parents;
 	struct commit *obj = lookup_commit(sha1);
diff --git a/rpush.c b/rpush.c
index 223bdd8..17d5ab8 100644
--- a/rpush.c
+++ b/rpush.c
@@ -3,7 +3,7 @@
 #include <sys/socket.h>
 #include <errno.h>
 
-void service(int fd_in, int fd_out) {
+static void service(int fd_in, int fd_out) {
 	ssize_t size;
 	int posn;
 	char unsigned sha1[20];
diff --git a/sha1_file.c b/sha1_file.c
index 83bc38c..ece9dff 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -44,7 +44,7 @@
 	return 0;
 }
 
-int get_sha1_file(const char *path, unsigned char *result)
+static int get_sha1_file(const char *path, unsigned char *result)
 {
 	char buffer[60];
 	int fd = open(path, O_RDONLY);
@@ -199,7 +199,7 @@
 {
 	int pass, totlen, i;
 	const char *cp, *last;
-	char *op = 0;
+	char *op = NULL;
 	const char *alt = gitenv(ALTERNATE_DB_ENVIRONMENT) ? : "";
 
 	/* The first pass counts how large an area to allocate to
@@ -236,7 +236,7 @@
 		if (pass)
 			break;
 		alt_odb = xmalloc(sizeof(*alt_odb) * (i + 1) + totlen);
-		alt_odb[i].base = alt_odb[i].name = 0;
+		alt_odb[i].base = alt_odb[i].name = NULL;
 		op = (char*)(&alt_odb[i+1]);
 	}
 }
diff --git a/strbuf.c b/strbuf.c
index 672a1e4..9d9d8be 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -4,7 +4,7 @@
 #include "cache.h"
 
 void strbuf_init(struct strbuf *sb) {
-	sb->buf = 0;
+	sb->buf = NULL;
 	sb->eof = sb->alloc = sb->len = 0;
 }
 
diff --git a/tar-tree.c b/tar-tree.c
index ccc39c9..233a256 100644
--- a/tar-tree.c
+++ b/tar-tree.c
@@ -375,7 +375,7 @@
 }
 
 /* get commit time from committer line of commit object */
-time_t commit_time(void * buffer, unsigned long size)
+static time_t commit_time(void * buffer, unsigned long size)
 {
 	time_t result = 0;
 	char *p = buffer;
diff --git a/update-cache.c b/update-cache.c
index a956953..e76fb9b 100644
--- a/update-cache.c
+++ b/update-cache.c
@@ -292,7 +292,7 @@
 	return add_cache_entry(ce, option);
 }
 
-struct cache_file cache_file;
+static struct cache_file cache_file;
 
 int main(int argc, char **argv)
 {