From 8176880173f593dc6833bf2ef52eb1c24786a935 Mon Sep 17 00:00:00 2001
From: Dan McGee <dan@archlinux.org>
Date: Mon, 19 Sep 2011 10:55:27 -0500
Subject: Simplify setsockopt() casting workaround

On Win32, the third setsockopt parameter has type (char *) while on POSIX
systems it is (void *). However, given that it is a no-op cast to go from a
char pointer to a void pointer, we can cast to a char pointer (with a
possible const modifier) on all platforms and satisfy the compiler.

Signed-off-by: Dan McGee <dan@archlinux.org>
---
 src/output/raop_output_plugin.c |  4 ++--
 src/socket_util.c               | 22 ++++------------------
 2 files changed, 6 insertions(+), 20 deletions(-)

diff --git a/src/output/raop_output_plugin.c b/src/output/raop_output_plugin.c
index 4bb20c70d..68d6897cb 100644
--- a/src/output/raop_output_plugin.c
+++ b/src/output/raop_output_plugin.c
@@ -328,7 +328,7 @@ open_udp_socket(char *hostname, unsigned short *port,
 		GError **error_r)
 {
 	int sd;
-	int size = 30000;
+	const int size = 30000;
 
 	/* socket creation */
 	sd = socket(PF_INET, SOCK_DGRAM, 0);
@@ -338,7 +338,7 @@ open_udp_socket(char *hostname, unsigned short *port,
 			    g_strerror(errno));
 		return -1;
 	}
-	if (setsockopt(sd, SOL_SOCKET, SO_SNDBUF, (void *) &size, sizeof(size)) < 0) {
+	if (setsockopt(sd, SOL_SOCKET, SO_SNDBUF, (const char *) &size, sizeof(size)) < 0) {
 		g_set_error(error_r, raop_output_quark(), errno,
 			    "failed to set UDP buffer size: %s",
 			    g_strerror(errno));
diff --git a/src/socket_util.c b/src/socket_util.c
index 8f36c10cf..e08b60735 100644
--- a/src/socket_util.c
+++ b/src/socket_util.c
@@ -50,9 +50,6 @@ socket_bind_listen(int domain, int type, int protocol,
 {
 	int fd, ret;
 	const int reuse = 1;
-#ifdef HAVE_STRUCT_UCRED
-	int passcred = 1;
-#endif
 
 	fd = socket_cloexec_nonblock(domain, type, protocol);
 	if (fd < 0) {
@@ -61,14 +58,8 @@ socket_bind_listen(int domain, int type, int protocol,
 		return -1;
 	}
 
-#ifdef WIN32
-	const char *optval = (const char *)&reuse;
-#else
-	const void *optval = &reuse;
-#endif
-
 	ret = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR,
-			 optval, sizeof(reuse));
+			 (const char *) &reuse, sizeof(reuse));
 	if (ret < 0) {
 		g_set_error(error, listen_quark(), errno,
 			    "setsockopt() failed: %s", g_strerror(errno));
@@ -93,7 +84,8 @@ socket_bind_listen(int domain, int type, int protocol,
 	}
 
 #ifdef HAVE_STRUCT_UCRED
-	setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &passcred, sizeof(passcred));
+	setsockopt(fd, SOL_SOCKET, SO_PASSCRED,
+		   (const char *) &reuse, sizeof(reuse));
 #endif
 
 	return fd;
@@ -104,12 +96,6 @@ socket_keepalive(int fd)
 {
 	const int reuse = 1;
 
-#ifdef WIN32
-	const char *optval = (const char *)&reuse;
-#else
-	const void *optval = &reuse;
-#endif
-
 	return setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE,
-			optval, sizeof(reuse));
+			  (const char *)&reuse, sizeof(reuse));
 }
-- 
cgit v1.2.3