[PATCH v2] refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
From: Han-Wen Nienhuys <hanwen@google.com>
The ref backend API uses errno as a sideband error channel.
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
---
refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
The ref backend API uses errno as a sideband error channel.
Signed-off-by: Han-Wen Nienhuys hanwen@google.comPublished-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1002%2Fhanwen%2Ferrno-debug-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1002/hanwen/errno-debug-v2
Pull-Request: https://github.com/git/git/pull/1002
Range-diff vs v1:
1: 9b150c5563f9 ! 1: 1e9a8990e7f2 refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
@@ Commit message
## refs/debug.c ##
@@ refs/debug.c: static int debug_read_raw_ref(struct ref_store *ref_store, const char *refname,
+ {
+ struct debug_ref_store *drefs = (struct debug_ref_store *)ref_store;
int res = 0;
++ int saved_errno = 0;
oidcpy(oid, &null_oid);
+ errno = 0;
res = drefs->refs->be->read_raw_ref(drefs->refs, refname, oid, referent,
type);
++ saved_errno = errno;
-@@ refs/debug.c: static int debug_read_raw_ref(struct ref_store *ref_store, const char *refname,
+ if (res == 0) {
trace_printf_key(&trace_refs, "read_raw_ref: %s: %s (=> %s) type %x: %d\n",
refname, oid_to_hex(oid), referent->buf, *type, res);
} else {
- trace_printf_key(&trace_refs, "read_raw_ref: %s: %d\n", refname, res);
+ trace_printf_key(&trace_refs,
+ "read_raw_ref: %s: %d (errno %d)\n", refname,
-+ res, errno);
++ res, saved_errno);
}
return res;
} refs/debug.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/refs/debug.c b/refs/debug.c
index 922e64fa6ad9..286987b72166 100644
--- a/refs/debug.c
+++ b/refs/debug.c
@@ -242,16 +242,21 @@ static int debug_read_raw_ref(struct ref_store *ref_store, const char *refname,
{
struct debug_ref_store *drefs = (struct debug_ref_store *)ref_store;
int res = 0;
+ int saved_errno = 0;
oidcpy(oid, &null_oid);
+ errno = 0;
res = drefs->refs->be->read_raw_ref(drefs->refs, refname, oid, referent,
type);
+ saved_errno = errno;
if (res == 0) {
trace_printf_key(&trace_refs, "read_raw_ref: %s: %s (=> %s) type %x: %d\n",
refname, oid_to_hex(oid), referent->buf, *type, res);
} else {
- trace_printf_key(&trace_refs, "read_raw_ref: %s: %d\n", refname, res);
+ trace_printf_key(&trace_refs,
+ "read_raw_ref: %s: %d (errno %d)\n", refname,
+ res, saved_errno);
}
return res;
}
base-commit: 89b43f80a514aee58b662ad606e6352e03eaeee4
--
gitgitgadget