From 1d6200af164a2e7fe21b3f2bdadb3373dadae76c Mon Sep 17 00:00:00 2001
From: Runxi Yu <me@runxiyu.org>
Date: Mon, 17 Feb 2025 12:20:23 +0800
Subject: git_hooks_client.c: Get return value from unix socket

---
 git_hooks_client/git_hooks_client.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

(limited to 'git_hooks_client')

diff --git a/git_hooks_client/git_hooks_client.c b/git_hooks_client/git_hooks_client.c
index 01af196..9050181 100644
--- a/git_hooks_client/git_hooks_client.c
+++ b/git_hooks_client/git_hooks_client.c
@@ -68,6 +68,25 @@ int main(void) {
 		return EXIT_FAILURE;
 	}
 
+	char status_buf[1];
+	ssize_t bytes_read = read(sock, status_buf, 1);
+	switch (bytes_read) {
+	case -1:
+		perror("read");
+		close(sock);
+		return EXIT_FAILURE;
+	case 0:
+		dprintf(STDERR_FILENO, "fatal: unexpected EOF on internal socket\n");
+		close(sock);
+		return EXIT_FAILURE;
+	case 1:
+		break;
+	default:
+		dprintf(STDERR_FILENO, "fatal: read returned unexpected value on internal socket\n");
+		close(sock);
+		return EXIT_FAILURE;
+	}
+
 	close(sock);
-	return EXIT_SUCCESS;
+	return *status_buf;
 }
-- 
cgit v1.2.3