Fix missing return values and some error tests for empty index files

Patches from Dave Jones and Ingo Molnar, but since I don't have any
infrastructure in place to use the old patch applicator scripts I
am trying to build up, I ended up fixing the thing by hand instead.

Credit where credit is due, though. Nice to see that people are
taking a look at the project even in this early stage.
diff --git a/cache.h b/cache.h
index 864f70b..900824a 100644
--- a/cache.h
+++ b/cache.h
@@ -56,7 +56,7 @@
 	unsigned int st_size;
 	unsigned char sha1[20];
 	unsigned short namelen;
-	unsigned char name[0];
+	char name[0];
 };
 
 const char *sha1_file_directory;