summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 9cf71b1)
raw | patch | inline | side by side (parent: 9cf71b1)
author | Adam Roben <aroben@apple.com> | |
Wed, 23 Apr 2008 19:17:45 +0000 (15:17 -0400) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Tue, 6 May 2008 03:57:55 +0000 (20:57 -0700) |
This will make it easier to add newer options later.
Signed-off-by: Adam Roben <aroben@apple.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Adam Roben <aroben@apple.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-cat-file.c | patch | blob | history |
diff --git a/builtin-cat-file.c b/builtin-cat-file.c
index 34a63d128078052c9e870faf676a1bab591abf1b..a76bb16b49d320cfe09b19e612382fb9b146553c 100644 (file)
--- a/builtin-cat-file.c
+++ b/builtin-cat-file.c
return 0;
}
+static const char cat_file_usage[] = "git-cat-file [-t|-s|-e|-p|<type>] <sha1>";
+
int cmd_cat_file(int argc, const char **argv, const char *prefix)
{
- int opt;
- const char *exp_type, *obj_name;
+ int i, opt = 0;
+ const char *exp_type = NULL, *obj_name = NULL;
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 */
+
+ for (i = 1; i < argc; ++i) {
+ const char *arg = argv[i];
+
+ if (!strcmp(arg, "-t") || !strcmp(arg, "-s") || !strcmp(arg, "-e") || !strcmp(arg, "-p")) {
+ exp_type = arg;
+ opt = exp_type[1];
+ continue;
+ }
+
+ if (arg[0] == '-')
+ usage(cat_file_usage);
+
+ if (!exp_type) {
+ exp_type = arg;
+ continue;
+ }
+
+ if (obj_name)
+ usage(cat_file_usage);
+
+ obj_name = arg;
+ break;
}
+ if (!exp_type || !obj_name)
+ usage(cat_file_usage);
+
return cat_one_file(opt, exp_type, obj_name);
}