From e90d606f0ad56146e8686acfdfd357005fa5b4a6 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Tue, 15 Jan 2013 22:39:51 +0100
Subject: socket_util: convert to C++

---
 Makefile.am          |   5 +--
 src/ServerSocket.cxx |   2 +-
 src/SocketUtil.cxx   | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++
 src/SocketUtil.hxx   |  58 +++++++++++++++++++++++++++++
 src/socket_util.c    | 102 ---------------------------------------------------
 src/socket_util.h    |  66 ---------------------------------
 6 files changed, 163 insertions(+), 172 deletions(-)
 create mode 100644 src/SocketUtil.cxx
 create mode 100644 src/SocketUtil.hxx
 delete mode 100644 src/socket_util.c
 delete mode 100644 src/socket_util.h

diff --git a/Makefile.am b/Makefile.am
index 9782cef5b..875ea4ccc 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -124,7 +124,6 @@ mpd_headers = \
 	src/TimePrint.cxx src/TimePrint.hxx \
 	src/song.h \
 	src/song_sort.c src/song_sort.h \
-	src/socket_util.h \
 	src/stats.h \
 	src/tag.h \
 	src/tag_internal.h \
@@ -280,7 +279,7 @@ src_mpd_SOURCES = \
 	src/SongPrint.cxx src/SongPrint.hxx \
 	src/SongSave.cxx src/SongSave.hxx \
 	src/resolver.c src/resolver.h \
-	src/socket_util.c \
+	src/SocketUtil.cxx src/SocketUtil.hxx \
 	src/StateFile.cxx src/StateFile.hxx \
 	src/Stats.cxx \
 	src/Tag.cxx \
@@ -1288,7 +1287,7 @@ test_run_output_SOURCES = test/run_output.cxx \
 	src/timer.c src/clock.c \
 	src/Tag.cxx src/TagNames.c src/TagPool.cxx \
 	src/page.c \
-	src/socket_util.c \
+	src/SocketUtil.cxx \
 	src/resolver.c \
 	src/OutputInit.cxx src/OutputFinish.cxx src/OutputList.cxx \
 	src/OutputPlugin.cxx \
diff --git a/src/ServerSocket.cxx b/src/ServerSocket.cxx
index 7127d3bdb..7f2853e20 100644
--- a/src/ServerSocket.cxx
+++ b/src/ServerSocket.cxx
@@ -24,7 +24,7 @@
 #endif
 
 #include "ServerSocket.hxx"
-#include "socket_util.h"
+#include "SocketUtil.hxx"
 #include "resolver.h"
 #include "fd_util.h"
 #include "glib_socket.h"
diff --git a/src/SocketUtil.cxx b/src/SocketUtil.cxx
new file mode 100644
index 000000000..6974c0df3
--- /dev/null
+++ b/src/SocketUtil.cxx
@@ -0,0 +1,102 @@
+/*
+ * Copyright (C) 2003-2013 The Music Player Daemon Project
+ * http://www.musicpd.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include "config.h"
+#include "SocketUtil.hxx"
+#include "fd_util.h"
+
+#include <glib.h>
+
+#include <errno.h>
+#include <unistd.h>
+
+#ifndef G_OS_WIN32
+#include <sys/socket.h>
+#else /* G_OS_WIN32 */
+#include <ws2tcpip.h>
+#include <winsock.h>
+#endif /* G_OS_WIN32 */
+
+#ifdef HAVE_IPV6
+#include <string.h>
+#endif
+
+static GQuark
+listen_quark(void)
+{
+	return g_quark_from_static_string("listen");
+}
+
+int
+socket_bind_listen(int domain, int type, int protocol,
+		   const struct sockaddr *address, size_t address_length,
+		   int backlog,
+		   GError **error)
+{
+	int fd, ret;
+	const int reuse = 1;
+
+	fd = socket_cloexec_nonblock(domain, type, protocol);
+	if (fd < 0) {
+		g_set_error(error, listen_quark(), errno,
+			    "Failed to create socket: %s", g_strerror(errno));
+		return -1;
+	}
+
+	ret = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR,
+			 (const char *) &reuse, sizeof(reuse));
+	if (ret < 0) {
+		g_set_error(error, listen_quark(), errno,
+			    "setsockopt() failed: %s", g_strerror(errno));
+		close_socket(fd);
+		return -1;
+	}
+
+	ret = bind(fd, address, address_length);
+	if (ret < 0) {
+		g_set_error(error, listen_quark(), errno,
+			    "%s", g_strerror(errno));
+		close_socket(fd);
+		return -1;
+	}
+
+	ret = listen(fd, backlog);
+	if (ret < 0) {
+		g_set_error(error, listen_quark(), errno,
+			    "listen() failed: %s", g_strerror(errno));
+		close_socket(fd);
+		return -1;
+	}
+
+#ifdef HAVE_STRUCT_UCRED
+	setsockopt(fd, SOL_SOCKET, SO_PASSCRED,
+		   (const char *) &reuse, sizeof(reuse));
+#endif
+
+	return fd;
+}
+
+int
+socket_keepalive(int fd)
+{
+	const int reuse = 1;
+
+	return setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE,
+			  (const char *)&reuse, sizeof(reuse));
+}
diff --git a/src/SocketUtil.hxx b/src/SocketUtil.hxx
new file mode 100644
index 000000000..3d0be78c4
--- /dev/null
+++ b/src/SocketUtil.hxx
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2003-2013 The Music Player Daemon Project
+ * http://www.musicpd.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+/*
+ * This library provides easy helper functions for working with
+ * sockets.
+ *
+ */
+
+#ifndef MPD_SOCKET_UTIL_HXX
+#define MPD_SOCKET_UTIL_HXX
+
+#include "gerror.h"
+
+#include <stddef.h>
+
+struct sockaddr;
+
+/**
+ * Creates a socket listening on the specified address.  This is a
+ * shortcut for socket(), bind() and listen().
+ *
+ * @param domain the socket domain, e.g. PF_INET6
+ * @param type the socket type, e.g. SOCK_STREAM
+ * @param protocol the protocol, usually 0 to let the kernel choose
+ * @param address the address to listen on
+ * @param address_length the size of #address
+ * @param backlog the backlog parameter for the listen() system call
+ * @param error location to store the error occurring, or NULL to
+ * ignore errors
+ * @return the socket file descriptor or -1 on error
+ */
+int
+socket_bind_listen(int domain, int type, int protocol,
+		   const struct sockaddr *address, size_t address_length,
+		   int backlog,
+		   GError **error);
+
+int
+socket_keepalive(int fd);
+
+#endif
diff --git a/src/socket_util.c b/src/socket_util.c
deleted file mode 100644
index ee8bf7e1a..000000000
--- a/src/socket_util.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2003-2011 The Music Player Daemon Project
- * http://www.musicpd.org
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#include "config.h"
-#include "socket_util.h"
-#include "fd_util.h"
-
-#include <glib.h>
-
-#include <errno.h>
-#include <unistd.h>
-
-#ifndef G_OS_WIN32
-#include <sys/socket.h>
-#else /* G_OS_WIN32 */
-#include <ws2tcpip.h>
-#include <winsock.h>
-#endif /* G_OS_WIN32 */
-
-#ifdef HAVE_IPV6
-#include <string.h>
-#endif
-
-static GQuark
-listen_quark(void)
-{
-	return g_quark_from_static_string("listen");
-}
-
-int
-socket_bind_listen(int domain, int type, int protocol,
-		   const struct sockaddr *address, size_t address_length,
-		   int backlog,
-		   GError **error)
-{
-	int fd, ret;
-	const int reuse = 1;
-
-	fd = socket_cloexec_nonblock(domain, type, protocol);
-	if (fd < 0) {
-		g_set_error(error, listen_quark(), errno,
-			    "Failed to create socket: %s", g_strerror(errno));
-		return -1;
-	}
-
-	ret = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR,
-			 (const char *) &reuse, sizeof(reuse));
-	if (ret < 0) {
-		g_set_error(error, listen_quark(), errno,
-			    "setsockopt() failed: %s", g_strerror(errno));
-		close_socket(fd);
-		return -1;
-	}
-
-	ret = bind(fd, address, address_length);
-	if (ret < 0) {
-		g_set_error(error, listen_quark(), errno,
-			    "%s", g_strerror(errno));
-		close_socket(fd);
-		return -1;
-	}
-
-	ret = listen(fd, backlog);
-	if (ret < 0) {
-		g_set_error(error, listen_quark(), errno,
-			    "listen() failed: %s", g_strerror(errno));
-		close_socket(fd);
-		return -1;
-	}
-
-#ifdef HAVE_STRUCT_UCRED
-	setsockopt(fd, SOL_SOCKET, SO_PASSCRED,
-		   (const char *) &reuse, sizeof(reuse));
-#endif
-
-	return fd;
-}
-
-int
-socket_keepalive(int fd)
-{
-	const int reuse = 1;
-
-	return setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE,
-			  (const char *)&reuse, sizeof(reuse));
-}
diff --git a/src/socket_util.h b/src/socket_util.h
deleted file mode 100644
index 3f602cd53..000000000
--- a/src/socket_util.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2003-2011 The Music Player Daemon Project
- * http://www.musicpd.org
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-/*
- * This library provides easy helper functions for working with
- * sockets.
- *
- */
-
-#ifndef SOCKET_UTIL_H
-#define SOCKET_UTIL_H
-
-#include "gerror.h"
-
-#include <stddef.h>
-
-struct sockaddr;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Creates a socket listening on the specified address.  This is a
- * shortcut for socket(), bind() and listen().
- *
- * @param domain the socket domain, e.g. PF_INET6
- * @param type the socket type, e.g. SOCK_STREAM
- * @param protocol the protocol, usually 0 to let the kernel choose
- * @param address the address to listen on
- * @param address_length the size of #address
- * @param backlog the backlog parameter for the listen() system call
- * @param error location to store the error occurring, or NULL to
- * ignore errors
- * @return the socket file descriptor or -1 on error
- */
-int
-socket_bind_listen(int domain, int type, int protocol,
-		   const struct sockaddr *address, size_t address_length,
-		   int backlog,
-		   GError **error);
-
-int
-socket_keepalive(int fd);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-- 
cgit v1.2.3