Merge branch 'jc/pack'
[gitweb.git] / builtin-fsck.c
index a6ef65ea321c614c7616862a44ce0af7998e5749..8d12287f037c499acad26ea81acab73490c38d5c 100644 (file)
@@ -1,3 +1,4 @@
+#include "builtin.h"
 #include "cache.h"
 #include "commit.h"
 #include "tree.h"
@@ -151,7 +152,17 @@ static void check_unreachable_object(struct object *obj)
                        }
                        if (!(f = fopen(filename, "w")))
                                die("Could not open %s", filename);
-                       fprintf(f, "%s\n", sha1_to_hex(obj->sha1));
+                       if (obj->type == OBJ_BLOB) {
+                               enum object_type type;
+                               unsigned long size;
+                               char *buf = read_sha1_file(obj->sha1,
+                                               &type, &size);
+                               if (buf) {
+                                       fwrite(buf, size, 1, f);
+                                       free(buf);
+                               }
+                       } else
+                               fprintf(f, "%s\n", sha1_to_hex(obj->sha1));
                        fclose(f);
                }
                return;
@@ -659,7 +670,7 @@ static const char fsck_usage[] =
 "git-fsck [--tags] [--root] [[--unreachable] [--cache] [--full] "
 "[--strict] [--verbose] <head-sha1>*]";
 
-int cmd_fsck(int argc, char **argv, const char *prefix)
+int cmd_fsck(int argc, const char **argv, const char *prefix)
 {
        int i, heads;