git-cat-file: Small refactor of cmd_cat_file
authorAdam Roben <aroben@apple.com>
Wed, 23 Apr 2008 19:17:44 +0000 (15:17 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 6 May 2008 03:57:55 +0000 (20:57 -0700)
I separated the logic of parsing the arguments from the logic of fetching and
outputting the data. cat_one_file now does the latter.

Signed-off-by: Adam Roben <aroben@apple.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-cat-file.c

index f132d583d3e2a2ac0fe696b66723c846902d0a19..34a63d128078052c9e870faf676a1bab591abf1b 100644 (file)
@@ -76,31 +76,16 @@ static void pprint_tag(const unsigned char *sha1, const char *buf, unsigned long
                write_or_die(1, cp, endp - cp);
 }
 
-int cmd_cat_file(int argc, const char **argv, const char *prefix)
+static int cat_one_file(int opt, const char *exp_type, const char *obj_name)
 {
        unsigned char sha1[20];
        enum object_type type;
        void *buf;
        unsigned long size;
-       int opt;
-       const char *exp_type, *obj_name;
-
-       git_config(git_default_config);
-       if (argc != 3)
-               usage("git-cat-file [-t|-s|-e|-p|<type>] <sha1>");
-       exp_type = argv[1];
-       obj_name = argv[2];
 
        if (get_sha1(obj_name, sha1))
                die("Not a valid object name %s", obj_name);
 
-       opt = 0;
-       if ( exp_type[0] == '-' ) {
-               opt = exp_type[1];
-               if ( !opt || exp_type[2] )
-                       opt = -1; /* Not a single character option */
-       }
-
        buf = NULL;
        switch (opt) {
        case 't':
@@ -157,3 +142,24 @@ int cmd_cat_file(int argc, const char **argv, const char *prefix)
        write_or_die(1, buf, size);
        return 0;
 }
+
+int cmd_cat_file(int argc, const char **argv, const char *prefix)
+{
+       int opt;
+       const char *exp_type, *obj_name;
+
+       git_config(git_default_config);
+       if (argc != 3)
+               usage("git-cat-file [-t|-s|-e|-p|<type>] <sha1>");
+       exp_type = argv[1];
+       obj_name = argv[2];
+
+       opt = 0;
+       if ( exp_type[0] == '-' ) {
+               opt = exp_type[1];
+               if ( !opt || exp_type[2] )
+                       opt = -1; /* Not a single character option */
+       }
+
+       return cat_one_file(opt, exp_type, obj_name);
+}