|
|
|
@ -143,23 +143,41 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name)
@@ -143,23 +143,41 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name)
|
|
|
|
|
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); |
|
|
|
|
} |
|
|
|
|