[PATCH 5/5] refs.c: add an err argument to pack_refs
Signed-off-by: Ronnie Sahlberg sahlb...@google.com --- builtin/pack-refs.c | 8 +++- refs.c | 13 ++--- refs.h | 3 ++- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/builtin/pack-refs.c b/builtin/pack-refs.c index b20b1ec..299768e 100644 --- a/builtin/pack-refs.c +++ b/builtin/pack-refs.c @@ -10,6 +10,7 @@ static char const * const pack_refs_usage[] = { int cmd_pack_refs(int argc, const char **argv, const char *prefix) { unsigned int flags = PACK_REFS_PRUNE; + struct strbuf err = STRBUF_INIT; struct option opts[] = { OPT_BIT(0, all, flags, N_(pack everything), PACK_REFS_ALL), OPT_BIT(0, prune, flags, N_(prune loose refs (default)), PACK_REFS_PRUNE), @@ -17,5 +18,10 @@ int cmd_pack_refs(int argc, const char **argv, const char *prefix) }; if (parse_options(argc, argv, prefix, opts, pack_refs_usage, 0)) usage_with_options(pack_refs_usage, opts); - return pack_refs(flags); + if (pack_refs(flags, err)) { + error(%s, err.buf); + strbuf_release(err); + return -1; + } + return 0; } diff --git a/refs.c b/refs.c index 19e73f3..5875c29 100644 --- a/refs.c +++ b/refs.c @@ -2328,7 +2328,7 @@ static int commit_packed_refs(struct strbuf *err) strbuf_addf(err, error writing packed-refs. %s, strerror(errno)); return -1; - } + } data.fd = packed_ref_cache-lock-fd; data.err = err; @@ -2482,24 +2482,23 @@ static void prune_refs(struct ref_to_prune *r) } } -int pack_refs(unsigned int flags) +int pack_refs(unsigned int flags, struct strbuf *err) { struct pack_refs_cb_data cbdata; - struct strbuf err = STRBUF_INIT; memset(cbdata, 0, sizeof(cbdata)); cbdata.flags = flags; - if (lock_packed_refs(err)) - die(%s, err.buf); + if (lock_packed_refs(err)) + return -1; cbdata.packed_refs = get_packed_refs(ref_cache); do_for_each_entry_in_dir(get_loose_refs(ref_cache), 0, pack_if_possible_fn, cbdata); - if (commit_packed_refs(err)) - die(%s, err.buf); + if (commit_packed_refs(err)) + return -1; prune_refs(cbdata.ref_to_prune); return 0; diff --git a/refs.h b/refs.h index dee9a98..1a98e27 100644 --- a/refs.h +++ b/refs.h @@ -122,8 +122,9 @@ extern void warn_dangling_symrefs(FILE *fp, const char *msg_fmt, const struct st /* * Write a packed-refs file for the current repository. * flags: Combination of the above PACK_REFS_* flags. + * Returns 0 on success and fills in err on failure. */ -int pack_refs(unsigned int flags); +int pack_refs(unsigned int flags, struct strbuf *err); extern int ref_exists(const char *); -- 2.0.1.556.ge8f7cba.dirty -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 5/5] refs.c: add an err argument to pack_refs
Signed-off-by: Ronnie Sahlberg sahlb...@google.com --- builtin/pack-refs.c | 8 +++- refs.c | 13 ++--- refs.h | 3 ++- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/builtin/pack-refs.c b/builtin/pack-refs.c index b20b1ec..da5d46a 100644 --- a/builtin/pack-refs.c +++ b/builtin/pack-refs.c @@ -10,6 +10,7 @@ static char const * const pack_refs_usage[] = { int cmd_pack_refs(int argc, const char **argv, const char *prefix) { unsigned int flags = PACK_REFS_PRUNE; + struct strbuf err = STRBUF_INIT; struct option opts[] = { OPT_BIT(0, all, flags, N_(pack everything), PACK_REFS_ALL), OPT_BIT(0, prune, flags, N_(prune loose refs (default)), PACK_REFS_PRUNE), @@ -17,5 +18,10 @@ int cmd_pack_refs(int argc, const char **argv, const char *prefix) }; if (parse_options(argc, argv, prefix, opts, pack_refs_usage, 0)) usage_with_options(pack_refs_usage, opts); - return pack_refs(flags); + if (pack_refs(flags, err)) { + error(%s, err.buf); + strbuf_release(err); + return 1; + } + return 0; } diff --git a/refs.c b/refs.c index 19e73f3..5875c29 100644 --- a/refs.c +++ b/refs.c @@ -2328,7 +2328,7 @@ static int commit_packed_refs(struct strbuf *err) strbuf_addf(err, error writing packed-refs. %s, strerror(errno)); return -1; - } + } data.fd = packed_ref_cache-lock-fd; data.err = err; @@ -2482,24 +2482,23 @@ static void prune_refs(struct ref_to_prune *r) } } -int pack_refs(unsigned int flags) +int pack_refs(unsigned int flags, struct strbuf *err) { struct pack_refs_cb_data cbdata; - struct strbuf err = STRBUF_INIT; memset(cbdata, 0, sizeof(cbdata)); cbdata.flags = flags; - if (lock_packed_refs(err)) - die(%s, err.buf); + if (lock_packed_refs(err)) + return -1; cbdata.packed_refs = get_packed_refs(ref_cache); do_for_each_entry_in_dir(get_loose_refs(ref_cache), 0, pack_if_possible_fn, cbdata); - if (commit_packed_refs(err)) - die(%s, err.buf); + if (commit_packed_refs(err)) + return -1; prune_refs(cbdata.ref_to_prune); return 0; diff --git a/refs.h b/refs.h index dee9a98..1a98e27 100644 --- a/refs.h +++ b/refs.h @@ -122,8 +122,9 @@ extern void warn_dangling_symrefs(FILE *fp, const char *msg_fmt, const struct st /* * Write a packed-refs file for the current repository. * flags: Combination of the above PACK_REFS_* flags. + * Returns 0 on success and fills in err on failure. */ -int pack_refs(unsigned int flags); +int pack_refs(unsigned int flags, struct strbuf *err); extern int ref_exists(const char *); -- 2.0.1.523.g70700c9 -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html