+#include "builtin.h"
 #include "cache.h"
 #include "commit.h"
 #include "tree.h"
                        }
                        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;
 "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;