This is a follow-up to the recently landed ab/refs-errno-cleanup topic, I missed a spot and left some meaningless use of "errno" in the refs (file) backend. Per the $subject I hope we can get this into v2.35.0. I submitted a v1[1] and v2[2] of this around the holidays so I think it may have fallen through the cracks. 1. https://lore.kernel.org/git/cover-0.3-00000000000-20211209T045735Z-avarab@xxxxxxxxx/ 2. https://lore.kernel.org/git/cover-v2-0.3-00000000000-20211212T195108Z-avarab@xxxxxxxxx/ Ævar Arnfjörð Bjarmason (3): refs API: use "failure_errno", not "errno" sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure refs API: remove "failure_errno" from refs_resolve_ref_unsafe() refs.c | 53 +++++++++++++-------------------------- refs.h | 7 +----- refs/files-backend.c | 34 ++++++++----------------- remote.c | 3 +-- sequencer.c | 10 +++----- t/helper/test-ref-store.c | 3 +-- worktree.c | 11 +++----- 7 files changed, 36 insertions(+), 85 deletions(-) Range-diff against v2: 1: 161fcad1578 = 1: a45268ac24b refs API: use "failure_errno", not "errno" 2: 12d453d3884 = 2: 8d8691a5e93 sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure 3: 614590b2d10 ! 3: 8f937d8f64a refs API: remove "failure_errno" from refs_resolve_ref_unsafe() @@ Commit message return value was NULL or not, i.e. if the ref could be resolved. There was one caller left in sequencer.c that used the - "failure_errnO', but as of the preceding commit it doesn't use that - "failure_errno" either. + "failure_errno', but as of the preceding commit it uses a boilerplate + "ignore_errno" instead. So let's remove this output parameter. Not only isn't it used now, but - we'd like to slowly move the refs API to a more file-backend - independent way of communicating error codes, having it use a - "failure_errno" was only the first step in that direction. If this or - any other function needs to communicate what specifically is wrong - with the requested "refname" it'll be better to have the function set - some output enum of well-defined error states than piggy-backend on - "errno". + it's unlikely that we'll want it again in the future. We'd like to + slowly move the refs API to a more file-backend independent way of + communicating error codes, having it use a "failure_errno" was only + the first step in that direction. If this or any other function needs + to communicate what specifically is wrong with the requested "refname" + it'll be better to have the function set some output enum of + well-defined error states than piggy-backend on "errno". Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> @@ refs/files-backend.c: static int lock_ref_for_update(struct files_ref_store *ref "error reading reference", @@ refs/files-backend.c: static int files_reflog_expire(struct ref_store *ref_store, - if ((flags & EXPIRE_REFLOGS_UPDATE_REF) && + if ((expire_flags & EXPIRE_REFLOGS_UPDATE_REF) && !is_null_oid(&cb.last_kept_oid)) { - int ignore_errno; int type; @@ sequencer.c: void print_commit_summary(struct repository *r, ## t/helper/test-ref-store.c ## @@ t/helper/test-ref-store.c: static int cmd_resolve_ref(struct ref_store *refs, const char **argv) - int resolve_flags = arg_flags(*argv++, "resolve-flags"); + int resolve_flags = arg_flags(*argv++, "resolve-flags", empty_flags); int flags; const char *ref; - int ignore_errno; @@ worktree.c: static void add_head_info(struct worktree *wt) if (!target) return; -@@ worktree.c: const struct worktree *find_shared_symref(const char *symref, +@@ worktree.c: const struct worktree *find_shared_symref(struct worktree **worktrees, const char *symref_target; struct ref_store *refs; int flags; @@ worktree.c: const struct worktree *find_shared_symref(const char *symref, if (wt->is_bare) continue; -@@ worktree.c: const struct worktree *find_shared_symref(const char *symref, +@@ worktree.c: const struct worktree *find_shared_symref(struct worktree **worktrees, refs = get_worktree_ref_store(wt); symref_target = refs_resolve_ref_unsafe(refs, symref, 0, -- 2.35.0.rc0.848.gb9d3879eb1d