X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=builtin-pack-refs.c;h=1aaa76dd1fe42f56e25dac6c3ca0e787eb7b005e;hb=efb98b44536300f5daed25da3650033a1ce7fdef;hp=a62f06bb89aa6ef035c26c4aad05c0fdbf0512de;hpb=3d66dc9657f195cb241387a87bcdd5709abd8a21;p=git.git diff --git a/builtin-pack-refs.c b/builtin-pack-refs.c index a62f06bb8..1aaa76dd1 100644 --- a/builtin-pack-refs.c +++ b/builtin-pack-refs.c @@ -108,6 +108,12 @@ static int pack_refs(unsigned int flags) die("failed to write ref-pack file"); if (fflush(cbdata.refs_file) || fsync(fd) || fclose(cbdata.refs_file)) die("failed to write ref-pack file (%s)", strerror(errno)); + /* + * Since the lock file was fdopen()'ed and then fclose()'ed above, + * assign -1 to the lock file descriptor so that commit_lock_file() + * won't try to close() it. + */ + packed.fd = -1; if (commit_lock_file(&packed) < 0) die("unable to overwrite old ref-pack file (%s)", strerror(errno)); if (cbdata.flags & PACK_REFS_PRUNE) @@ -122,19 +128,13 @@ static char const * const pack_refs_usage[] = { int cmd_pack_refs(int argc, const char **argv, const char *prefix) { - int all = 0, prune = 1; - unsigned int flags = 0; + unsigned int flags = PACK_REFS_PRUNE; struct option opts[] = { - OPT_BOOLEAN(0, "all", &all, "pack everything"), - OPT_BOOLEAN(0, "prune", &prune, "prune loose refs (default)"), + OPT_BIT(0, "all", &flags, "pack everything", PACK_REFS_ALL), + OPT_BIT(0, "prune", &flags, "prune loose refs (default)", PACK_REFS_PRUNE), OPT_END(), }; - if (parse_options(argc, argv, opts, pack_refs_usage, 0)) usage_with_options(pack_refs_usage, opts); - if (prune) - flags |= PACK_REFS_PRUNE; - if (all) - flags |= PACK_REFS_ALL; return pack_refs(flags); }