include header to define uint32_t, necessary on Mac OS X
[git.git] / cat-file.c
index 761111e..7413fee 100644 (file)
@@ -5,6 +5,8 @@
  */
 #include "cache.h"
 #include "exec_cmd.h"
+#include "tag.h"
+#include "tree.h"
 
 static void flush_buffer(const char *buf, unsigned long size)
 {
@@ -101,8 +103,10 @@ int main(int argc, char **argv)
 
        setup_git_directory();
        git_config(git_default_config);
-       if (argc != 3 || get_sha1(argv[2], sha1))
+       if (argc != 3)
                usage("git-cat-file [-t|-s|-e|-p|<type>] <sha1>");
+       if (get_sha1(argv[2], sha1))
+               die("Not a valid object name %s", argv[2]);
 
        opt = 0;
        if ( argv[1][0] == '-' ) {
@@ -131,18 +135,17 @@ int main(int argc, char **argv)
                return !has_sha1_file(sha1);
 
        case 'p':
-               if (get_sha1(argv[2], sha1) ||
-                   sha1_object_info(sha1, type, NULL))
+               if (sha1_object_info(sha1, type, NULL))
                        die("Not a valid object name %s", argv[2]);
 
                /* custom pretty-print here */
-               if (!strcmp(type, "tree"))
+               if (!strcmp(type, tree_type))
                        return execl_git_cmd("ls-tree", argv[2], NULL);
 
                buf = read_sha1_file(sha1, type, &size);
                if (!buf)
                        die("Cannot read object %s", argv[2]);
-               if (!strcmp(type, "tag"))
+               if (!strcmp(type, tag_type))
                        return pprint_tag(sha1, buf, size);
 
                /* otherwise just spit out the data */