[PATCH] Fix several gcc4 signedness warnings

Here is a patch that fixes several gcc4 warnings about different signedness,
all between char and unsigned char. I tried to keep the patch minimal
so resertod to casts in three places.

Signed-off-by: Mika Kukkonen <mikukkon@iki.fi>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
diff --git a/mkdelta.c b/mkdelta.c
index 1c10f1f..6470a94 100644
--- a/mkdelta.c
+++ b/mkdelta.c
@@ -36,10 +36,10 @@
 	return 0;
 }
 
-static void *create_object(char *buf, unsigned long len, char *hdr, int hdrlen,
-			   unsigned long *retsize)
+static void *create_object(unsigned char *buf, unsigned long len,
+			   char *hdr, int hdrlen, unsigned long *retsize)
 {
-	char *compressed;
+	unsigned char *compressed;
 	unsigned long size;
 	z_stream stream;
 
@@ -54,7 +54,7 @@
 	stream.avail_out = size;
 
 	/* First header.. */
-	stream.next_in = hdr;
+	stream.next_in = (unsigned char *)hdr;
 	stream.avail_in = hdrlen;
 	while (deflate(&stream, 0) == Z_OK)
 		/* nothing */;
@@ -69,7 +69,7 @@
 	return compressed;
 }
 
-static int restore_original_object(char *buf, unsigned long len,
+static int restore_original_object(unsigned char *buf, unsigned long len,
 				   char *type, unsigned char *sha1)
 {
 	char hdr[50];
@@ -84,7 +84,7 @@
 	return ret;
 }
 
-static void *create_delta_object(char *buf, unsigned long len,
+static void *create_delta_object(unsigned char *buf, unsigned long len,
 				 unsigned char *sha1_ref, unsigned long *size)
 {
 	char hdr[50];
diff --git a/pull.c b/pull.c
index 395ca45..e70fc02 100644
--- a/pull.c
+++ b/pull.c
@@ -49,7 +49,7 @@
 		return 0;
 
 	if (get_delta) {
-		char delta_sha1[20];
+		unsigned char delta_sha1[20];
 		status = sha1_delta_base(sha1, delta_sha1);
 		if (0 < status)
 			status = make_sure_we_have_it(what, delta_sha1);
diff --git a/sha1_file.c b/sha1_file.c
index e648c06..6d6073d 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -332,7 +332,7 @@
 void *unpack_sha1_rest(z_stream *stream, void *buffer, unsigned long size)
 {
 	int bytes = strlen(buffer) + 1;
-	char *buf = xmalloc(1+size);
+	unsigned char *buf = xmalloc(1+size);
 
 	memcpy(buf, buffer + bytes, stream->total_out - bytes);
 	bytes = stream->total_out - bytes;
@@ -472,7 +472,7 @@
 	 * The initial part of the delta starts at delta_data_head +
 	 * 20.  Borrow code from patch-delta to read the result size.
 	 */
-	data = hdr + strlen(hdr) + 1 + 20;
+	data = (unsigned char *)(hdr + strlen(hdr) + 1 + 20);
 
 	/* Skip over the source size; we are not interested in
 	 * it and we cannot verify it because we do not want
diff --git a/ssh-push.c b/ssh-push.c
index 18c0b65..12fb9fc 100644
--- a/ssh-push.c
+++ b/ssh-push.c
@@ -8,7 +8,7 @@
 int serve_object(int fd_in, int fd_out) {
 	ssize_t size;
 	int posn = 0;
-	char sha1[20];
+	unsigned char sha1[20];
 	unsigned long objsize;
 	void *buf;
 	signed char remote;
diff --git a/tar-tree.c b/tar-tree.c
index 4c47fc2..673ac66 100644
--- a/tar-tree.c
+++ b/tar-tree.c
@@ -430,8 +430,8 @@
 	if (!archive_time)
 		archive_time = time(NULL);
 	if (basedir)
-		write_header("0", TYPEFLAG_DIR, NULL, NULL, basedir, 040755,
-		             NULL, 0);
+		write_header((unsigned char *)"0", TYPEFLAG_DIR, NULL, NULL,
+			basedir, 040755, NULL, 0);
 	traverse_tree(buffer, size, NULL);
 	free(buffer);
 	write_trailer();