From 8176880173f593dc6833bf2ef52eb1c24786a935 Mon Sep 17 00:00:00 2001 From: Dan McGee 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 --- 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 4bb20c70..68d6897c 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 8f36c10c..e08b6073 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