From fc5eafeb2886605d4de1546846f06a12a18c87ef Mon Sep 17 00:00:00 2001
From: "J.W" <jakwings@gmail.com>
Date: Mon, 22 Apr 2019 05:19:32 +0100
Subject: [PATCH 1/2] Fix macros for accept4(2)

Both accept(2) and accept4(2) exist on linux but accept4(2) does not
exist on macos 10.11.6 (and maybe other distros).
---
 src/lib/torsocks.c | 9 ++++++++-
 src/lib/torsocks.h | 4 +++-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/lib/torsocks.c b/src/lib/torsocks.c
index 16f2da0..9527513 100644
--- a/src/lib/torsocks.c
+++ b/src/lib/torsocks.c
@@ -234,9 +234,16 @@ static void init_libc_symbols(void)
 	tsocks_libc_socket = dlsym(libc_ptr, LIBC_SOCKET_NAME_STR);
 	tsocks_libc_syscall = dlsym(libc_ptr, LIBC_SYSCALL_NAME_STR);
 	tsocks_libc_execve = dlsym(libc_ptr, LIBC_EXECVE_NAME_STR);
+	tsocks_libc_accept = dlsym(libc_ptr, LIBC_ACCEPT_NAME_STR);
+#if (defined(__linux__))
 	tsocks_libc_accept4 = dlsym(libc_ptr, LIBC_ACCEPT4_NAME_STR);
+#endif
+
 	if (!tsocks_libc_connect || !tsocks_libc_close || !tsocks_libc_socket ||
-			!tsocks_libc_syscall || !tsocks_libc_execve || ! tsocks_libc_accept4) {
+#if (defined(__linux__))
+			!tsocks_libc_accept4 ||
+#endif
+			!tsocks_libc_syscall || !tsocks_libc_execve || ! tsocks_libc_accept) {
 		ERR("Unable to lookup symbols in " LIBC_NAME "(%s)", dlerror());
 		goto error;
 	}
diff --git a/src/lib/torsocks.h b/src/lib/torsocks.h
index 33da526..bf9109d 100644
--- a/src/lib/torsocks.h
+++ b/src/lib/torsocks.h
@@ -30,8 +30,10 @@
  * libc call outside of torsocks can be used. These are declared for each
  * symbol torsocks hijacked.
  */
+#define TSOCKS_LIBC_FUNC(name) \
+	tsocks_libc_##name
 #define TSOCKS_LIBC_DECL(name, type, sig) \
-	type (*tsocks_libc_##name)(sig);
+	type (*TSOCKS_LIBC_FUNC(name))(sig);
 #define TSOCKS_DECL(name, type, sig) \
 	extern type tsocks_##name(sig);
 
-- 
2.21.0

