X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=verify-pack.c;h=c99db9dd79315dff4ac19c79b35275cd02397e60;hb=fb6a9f93d39e4e5fdb83673a927f71a34e9fb7c0;hp=3ae5ac1b4fd9440eb01d3a682375e4061355d6df;hpb=f9253394a271a9fefdd234a86c228adeb6d0136a;p=git.git diff --git a/verify-pack.c b/verify-pack.c index 3ae5ac1b..c99db9dd 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, 1))) + break; + /* No? did you name just foo? */ + strcpy(arg + len, ".idx"); + len += 4; + if ((g = add_packed_git(arg, len, 1))) + 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;