X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=verify-pack.c;fp=verify-pack.c;h=30c40feebdf4369683dbb365caa13faeb5699f82;hb=f3bf92240956241e6b21e80a1c281ec7716b9f23;hp=3ae5ac1b4fd9440eb01d3a682375e4061355d6df;hpb=c62266f37c677c1de7415ac6cf1e2eb6726590e1;p=git.git diff --git a/verify-pack.c b/verify-pack.c index 3ae5ac1b..30c40fee 100644 --- a/verify-pack.c +++ b/verify-pack.c @@ -1,25 +1,56 @@ #include "cache.h" #include "pack.h" -static int verify_one_pack(char *arg) +static int verify_one_pack(char *arg, int verbose) { - struct packed_git *g = add_packed_git(arg, strlen(arg)); - if (!g) - return -1; - return verify_pack(g); + int len = strlen(arg); + struct packed_git *g; + + while (1) { + /* Should name foo.idx, but foo.pack may be named; + * convert it to foo.idx + */ + if (!strcmp(arg + len - 5, ".pack")) { + strcpy(arg + len - 5, ".idx"); + len--; + } + /* Should name foo.idx now */ + if ((g = add_packed_git(arg, len))) + break; + /* No? did you name just foo? */ + strcpy(arg + len, ".idx"); + len += 4; + if ((g = add_packed_git(arg, len))) + break; + return error("packfile %s not found.", arg); + } + return verify_pack(g, verbose); } +static const char *verify_pack_usage = "git-verify-pack [-v] ..."; + int main(int ac, char **av) { int errs = 0; + int verbose = 0; + int no_more_options = 0; while (1 < ac) { char path[PATH_MAX]; - strcpy(path, av[1]); - if (verify_one_pack(path)) - errs++; - else - printf("%s: OK\n", av[1]); + + if (!no_more_options && av[1][0] == '-') { + if (!strcmp("-v", av[1])) + verbose = 1; + else if (!strcmp("--", av[1])) + no_more_options = 1; + else + usage(verify_pack_usage); + } + else { + strcpy(path, av[1]); + if (verify_one_pack(path, verbose)) + errs++; + } ac--; av++; } return !!errs;