[PATCH 06/21] resolve_missing_loose_ref(): simplify semantics
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- Mar 23, 2016, 10:04 UTC
- Message-ID
- <d40fad11431993f44a53e845f21af3a1add6f7d0.1458723959.git.mhagger@alum.mit.edu>
- In-Reply-To
- <cover.1458723959.git.mhagger@alum.mit.edu>
Make resolve_missing_loose_ref() only responsible for looking up a packed reference, without worrying about whether we want to read or write the reference and without setting errno on failure. Move the other logic to the caller.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> --- refs/files-backend.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-)
diff --git a/refs/files-backend.c b/refs/files-backend.c index 9676ec2..c0cf6fd 100644 --- a/refs/files-backend.c +++ b/refs/files-backend.c @@ -1368,11 +1368,9 @@ static struct ref_entry *get_packed_ref(const char *refname) } /* - * A loose ref file doesn't exist; check for a packed ref. The - * options are forwarded from resolve_safe_unsafe(). + * A loose ref file doesn't exist; check for a packed ref. */ static int resolve_missing_loose_ref(const char *refname, - int resolve_flags, unsigned char *sha1, int *flags) { @@ -1389,14 +1387,8 @@ static int resolve_missing_loose_ref(const char *refname, *flags |= REF_ISPACKED; return 0; } - /* The reference is not a packed reference, either. */ - if (resolve_flags & RESOLVE_REF_READING) { - errno = ENOENT; - return -1; - } else { - hashclr(sha1); - return 0; - } + /* refname is not a packed reference. */ + return -1; } /* This function needs to return a meaningful errno on failure */ @@ -1461,9 +1453,13 @@ static const char *resolve_ref_1(const char *refname, if (lstat(path, &st) < 0) { if (errno != ENOENT) return NULL; - if (resolve_missing_loose_ref(refname, resolve_flags, - sha1, flags)) - return NULL; + if (resolve_missing_loose_ref(refname, sha1, flags)) { + if (resolve_flags & RESOLVE_REF_READING) { + errno = ENOENT; + return NULL; + } + hashclr(sha1); + } if (bad_name) { hashclr(sha1); if (flags)
-- 2.8.0.rc3