chiark / gitweb /
networkd-wait-online: use automatic cleanup
authorThomas Hindoe Paaboel Andersen <phomes@gmail.com>
Sat, 1 Mar 2014 21:52:25 +0000 (22:52 +0100)
committerTom Gundersen <teg@jklm.no>
Sat, 1 Mar 2014 22:16:55 +0000 (23:16 +0100)
Makefile.am
src/network/network-util.h [new file with mode: 0644]
src/network/networkd-wait-online.c

index 4502f0b..070641b 100644 (file)
@@ -2418,7 +2418,8 @@ libsystemd_network_la_SOURCES = \
        src/libsystemd-network/dhcp-internal.h \
        src/libsystemd-network/dhcp-protocol.h \
        src/libsystemd-network/dhcp-lease-internal.h \
-       src/libsystemd-network/sd-dhcp-lease.c
+       src/libsystemd-network/sd-dhcp-lease.c \
+       src/libsystemd-network/network-util.h
 
 libsystemd_network_la_LIBADD = \
        libsystemd-internal.la \
diff --git a/src/network/network-util.h b/src/network/network-util.h
new file mode 100644 (file)
index 0000000..9979e6d
--- /dev/null
@@ -0,0 +1,28 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
+#pragma once
+
+/***
+  This file is part of systemd.
+
+  Copyright 2014 Thomas Hindø Paabøl Andersen
+
+  systemd is free software; you can redistribute it and/or modify it
+  under the terms of the GNU Lesser General Public License as published by
+  the Free Software Foundation; either version 2.1 of the License, or
+  (at your option) any later version.
+
+  systemd 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
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+
+#include "util.h"
+
+DEFINE_TRIVIAL_CLEANUP_FUNC(sd_network_monitor*, sd_network_monitor_unref);
+
+#define _cleanup_network_monitor_unref_ _cleanup_(sd_network_monitor_unrefp)
index 51c6bbd..50b753b 100644 (file)
 ***/
 
 #include "sd-event.h"
+#include "event-util.h"
 #include "sd-daemon.h"
 #include "sd-network.h"
+#include "network-util.h"
 
 #include "util.h"
 
@@ -62,9 +64,9 @@ static int event_handler(sd_event_source *s, int fd, uint32_t revents,
 }
 
 int main(int argc, char *argv[]) {
-        sd_event *event;
-        sd_event_source *event_source;
-        sd_network_monitor *monitor;
+        _cleanup_event_unref_ sd_event *event = NULL;
+        _cleanup_event_source_unref_ sd_event_source *event_source = NULL;
+        _cleanup_network_monitor_unref_ sd_network_monitor *monitor = NULL;
         int r, fd, events;
 
         log_set_target(LOG_TARGET_AUTO);
@@ -129,9 +131,5 @@ out:
         sd_notify(false,
                   "STATUS=All interfaces configured...");
 
-        sd_event_source_unref(event_source);
-        sd_event_unref(event);
-        sd_network_monitor_unref(monitor);
-
         return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
 }