summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2013-04-16 17:40:41 +0100
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2013-04-16 17:40:41 +0100
commit68c1a26d1e740e2500001b4a28d91d5753fc99dc (patch)
treeecfaa28777d0ce909f784929a252343084244ab9
parent1aaeb6afd0d6dcc02497e6f952f88e94e05b04b9 (diff)
sd-daemon.c: update from systemd for better portability
-rw-r--r--dbus/sd-daemon.c35
1 files changed, 11 insertions, 24 deletions
diff --git a/dbus/sd-daemon.c b/dbus/sd-daemon.c
index 79d8ca370..485b30102 100644
--- a/dbus/sd-daemon.c
+++ b/dbus/sd-daemon.c
@@ -32,11 +32,7 @@
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/un.h>
-#ifdef __BIONIC__
-# include <linux/fcntl.h>
-#else
-# include <sys/fcntl.h>
-#endif
+#include <fcntl.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <errno.h>
@@ -47,7 +43,7 @@
#include <stddef.h>
#include <limits.h>
-#if defined(__linux__)
+#if defined(__linux__) && !defined(SD_DAEMON_DISABLE_MQ)
# include <mqueue.h>
#endif
@@ -84,7 +80,7 @@ _sd_export_ int sd_listen_fds(int unset_environment) {
errno = 0;
l = strtoul(e, &p, 10);
- if (errno != 0) {
+ if (errno > 0) {
r = -errno;
goto finish;
}
@@ -109,7 +105,7 @@ _sd_export_ int sd_listen_fds(int unset_environment) {
errno = 0;
l = strtoul(e, &p, 10);
- if (errno != 0) {
+ if (errno > 0) {
r = -errno;
goto finish;
}
@@ -278,11 +274,8 @@ _sd_export_ int sd_is_socket(int fd, int family, int type, int listening) {
return r;
if (family > 0) {
- union sockaddr_union sockaddr;
- socklen_t l;
-
- memset(&sockaddr, 0, sizeof(sockaddr));
- l = sizeof(sockaddr);
+ union sockaddr_union sockaddr = {};
+ socklen_t l = sizeof(sockaddr);
if (getsockname(fd, &sockaddr.sa, &l) < 0)
return -errno;
@@ -297,8 +290,8 @@ _sd_export_ int sd_is_socket(int fd, int family, int type, int listening) {
}
_sd_export_ int sd_is_socket_inet(int fd, int family, int type, int listening, uint16_t port) {
- union sockaddr_union sockaddr;
- socklen_t l;
+ union sockaddr_union sockaddr = {};
+ socklen_t l = sizeof(sockaddr);
int r;
if (family != 0 && family != AF_INET && family != AF_INET6)
@@ -308,9 +301,6 @@ _sd_export_ int sd_is_socket_inet(int fd, int family, int type, int listening, u
if (r <= 0)
return r;
- memset(&sockaddr, 0, sizeof(sockaddr));
- l = sizeof(sockaddr);
-
if (getsockname(fd, &sockaddr.sa, &l) < 0)
return -errno;
@@ -343,17 +333,14 @@ _sd_export_ int sd_is_socket_inet(int fd, int family, int type, int listening, u
}
_sd_export_ int sd_is_socket_unix(int fd, int type, int listening, const char *path, size_t length) {
- union sockaddr_union sockaddr;
- socklen_t l;
+ union sockaddr_union sockaddr = {};
+ socklen_t l = sizeof(sockaddr);
int r;
r = sd_is_socket_internal(fd, type, listening);
if (r <= 0)
return r;
- memset(&sockaddr, 0, sizeof(sockaddr));
- l = sizeof(sockaddr);
-
if (getsockname(fd, &sockaddr.sa, &l) < 0)
return -errno;
@@ -387,7 +374,7 @@ _sd_export_ int sd_is_socket_unix(int fd, int type, int listening, const char *p
}
_sd_export_ int sd_is_mq(int fd, const char *path) {
-#if !defined(__linux__)
+#if !defined(__linux__) || defined(SD_DAEMON_DISABLE_MQ)
return 0;
#else
struct mq_attr attr;