[PATCH v3 16/16] refs.c: add an err argument to pack_refs
From: Ronnie Sahlberg <hidden>
Date: 2016-06-15 23:02:52
Subsystem:
the rest · Maintainer:
Linus Torvalds
Signed-off-by: Ronnie Sahlberg <redacted> --- builtin/pack-refs.c | 8 +++++++- refs.c | 7 +++---- refs.h | 3 ++- 3 files changed, 12 insertions(+), 6 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 1314a9a..cafb4aa 100644
--- a/refs.c
+++ b/refs.c@@ -2593,16 +2593,15 @@ 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);
diff --git a/refs.h b/refs.h
index b5ba685..489aa9d 100644
--- a/refs.h
+++ b/refs.h@@ -130,8 +130,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.1.0.rc2.206.gedb03e5