Zbigniew Jędrzejewski-Szmek 930e1b
From 925af552121e7028d432685948c2e061d86955e5 Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 930e1b
From: Lennart Poettering <lennart@poettering.net>
Zbigniew Jędrzejewski-Szmek 930e1b
Date: Mon, 14 Oct 2013 04:59:26 +0200
Zbigniew Jędrzejewski-Szmek 930e1b
Subject: [PATCH] util: allow trailing semicolons on
Zbigniew Jędrzejewski-Szmek 930e1b
 define_trivial_cleanup_func lines
Zbigniew Jędrzejewski-Szmek 930e1b
Zbigniew Jędrzejewski-Szmek 930e1b
Emacs C indenting really gets confused by these lines if they carry no
Zbigniew Jędrzejewski-Szmek 930e1b
trailing semicolon, hence let's make this nicer for good old emacs. The
Zbigniew Jędrzejewski-Szmek 930e1b
other macros which define functions already do this too, so let's copy
Zbigniew Jędrzejewski-Szmek 930e1b
the scheme here.
Zbigniew Jędrzejewski-Szmek 930e1b
Zbigniew Jędrzejewski-Szmek 930e1b
Also, let's use an uppercase name for the macro. So far our rough rule
Zbigniew Jędrzejewski-Szmek 930e1b
was that macros that are totally not function-like (like this ones,
Zbigniew Jędrzejewski-Szmek 930e1b
which define a function) are uppercase. (Well, admittedly it is a rough
Zbigniew Jędrzejewski-Szmek 930e1b
rule only, for example function and variable decorators are all
Zbigniew Jędrzejewski-Szmek 930e1b
lower-case SINCE THE CONSTANT YELLING IN THE SOURCES WOULD SUCK, and
Zbigniew Jędrzejewski-Szmek 930e1b
also they at least got underscore prefixes.) Also, the macros that
Zbigniew Jędrzejewski-Szmek 930e1b
define functions that we already have are all uppercase, so let's do the
Zbigniew Jędrzejewski-Szmek 930e1b
same here...
Zbigniew Jędrzejewski-Szmek 930e1b
Zbigniew Jędrzejewski-Szmek 930e1b
Conflicts:
Zbigniew Jędrzejewski-Szmek 930e1b
	src/gpt-auto-generator/gpt-auto-generator.c
Zbigniew Jędrzejewski-Szmek 930e1b
---
Zbigniew Jędrzejewski-Szmek 930e1b
 src/gpt-auto-generator/gpt-auto-generator.c | 157 ++++++++++------------------
Zbigniew Jędrzejewski-Szmek 930e1b
 src/journal/journal-internal.h              |   2 +-
Zbigniew Jędrzejewski-Szmek 930e1b
 src/shared/fdset.h                          |   2 +-
Zbigniew Jędrzejewski-Szmek 930e1b
 src/shared/set.h                            |   4 +-
Zbigniew Jędrzejewski-Szmek 930e1b
 src/shared/strv.h                           |   2 +-
Zbigniew Jędrzejewski-Szmek 930e1b
 src/shared/udev-util.h                      |  10 +-
Zbigniew Jędrzejewski-Szmek 930e1b
 src/shared/util.h                           |  19 ++--
Zbigniew Jędrzejewski-Szmek 930e1b
 src/tmpfiles/tmpfiles.c                     |   2 +-
Zbigniew Jędrzejewski-Szmek 930e1b
 8 files changed, 78 insertions(+), 120 deletions(-)
Zbigniew Jędrzejewski-Szmek 930e1b
Zbigniew Jędrzejewski-Szmek 930e1b
diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
Zbigniew Jędrzejewski-Szmek 930e1b
index d2b4213..25440e7 100644
Zbigniew Jędrzejewski-Szmek 930e1b
--- a/src/gpt-auto-generator/gpt-auto-generator.c
Zbigniew Jędrzejewski-Szmek 930e1b
+++ b/src/gpt-auto-generator/gpt-auto-generator.c
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -36,6 +36,7 @@
Zbigniew Jędrzejewski-Szmek 930e1b
 #include "missing.h"
Zbigniew Jędrzejewski-Szmek 930e1b
 #include "sd-id128.h"
Zbigniew Jędrzejewski-Szmek 930e1b
 #include "libudev.h"
Zbigniew Jędrzejewski-Szmek 930e1b
+#include "udev-util.h"
Zbigniew Jędrzejewski-Szmek 930e1b
 #include "special.h"
Zbigniew Jędrzejewski-Szmek 930e1b
 #include "unit-name.h"
Zbigniew Jędrzejewski-Szmek 930e1b
 #include "virt.h"
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -48,12 +49,12 @@
Zbigniew Jędrzejewski-Szmek 930e1b
  *
Zbigniew Jędrzejewski-Szmek 930e1b
  */
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
+#define GPT_SWAP SD_ID128_MAKE(06,57,fd,6d,a4,ab,43,c4,84,e5,09,33,c8,4b,4f,4f)
Zbigniew Jędrzejewski-Szmek 930e1b
+#define GPT_HOME SD_ID128_MAKE(93,3a,c7,e1,2e,b4,4f,13,b8,44,0e,14,e2,ae,f9,15)
Zbigniew Jędrzejewski-Szmek 930e1b
+
Zbigniew Jędrzejewski-Szmek 930e1b
 static const char *arg_dest = "/tmp";
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
-static inline void blkid_free_probep(blkid_probe *b) {
Zbigniew Jędrzejewski-Szmek 930e1b
-        if (*b)
Zbigniew Jędrzejewski-Szmek 930e1b
-                blkid_free_probe(*b);
Zbigniew Jędrzejewski-Szmek 930e1b
-}
Zbigniew Jędrzejewski-Szmek 930e1b
+DEFINE_TRIVIAL_CLEANUP_FUNC(blkid_probe, blkid_free_probe);
Zbigniew Jędrzejewski-Szmek 930e1b
 #define _cleanup_blkid_freep_probe_ _cleanup_(blkid_free_probep)
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
 static int verify_gpt_partition(const char *node, sd_id128_t *type, unsigned *nr, char **fstype) {
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -113,13 +114,13 @@ static int verify_gpt_partition(const char *node, sd_id128_t *type, unsigned *nr
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         if (fstype) {
Zbigniew Jędrzejewski-Szmek 930e1b
-                char *fst;
Zbigniew Jędrzejewski-Szmek 930e1b
-
Zbigniew Jędrzejewski-Szmek 930e1b
                 errno = 0;
Zbigniew Jędrzejewski-Szmek 930e1b
                 r = blkid_probe_lookup_value(b, "TYPE", &v, NULL);
Zbigniew Jędrzejewski-Szmek 930e1b
                 if (r != 0)
Zbigniew Jędrzejewski-Szmek 930e1b
                         *fstype = NULL;
Zbigniew Jędrzejewski-Szmek 930e1b
                 else {
Zbigniew Jędrzejewski-Szmek 930e1b
+                        char *fst;
Zbigniew Jędrzejewski-Szmek 930e1b
+
Zbigniew Jędrzejewski-Szmek 930e1b
                         fst = strdup(v);
Zbigniew Jędrzejewski-Szmek 930e1b
                         if (!fst)
Zbigniew Jędrzejewski-Szmek 930e1b
                                 return -ENOMEM;
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -181,7 +182,7 @@ static int add_swap(const char *path, const char *fstype) {
Zbigniew Jędrzejewski-Szmek 930e1b
 }
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
 static int add_home(const char *path, const char *fstype) {
Zbigniew Jędrzejewski-Szmek 930e1b
-        _cleanup_free_ char *unit = NULL, *lnk = NULL;
Zbigniew Jędrzejewski-Szmek 930e1b
+        _cleanup_free_ char *unit = NULL, *lnk = NULL, *fsck = NULL;
Zbigniew Jędrzejewski-Szmek 930e1b
         _cleanup_fclose_ FILE *f = NULL;
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         if (dir_is_empty("/home") <= 0)
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -199,19 +200,23 @@ static int add_home(const char *path, const char *fstype) {
Zbigniew Jędrzejewski-Szmek 930e1b
                 return -errno;
Zbigniew Jędrzejewski-Szmek 930e1b
         }
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
+        fsck = unit_name_from_path_instance("systemd-fsck", path, ".service");
Zbigniew Jędrzejewski-Szmek 930e1b
+        if (!fsck)
Zbigniew Jędrzejewski-Szmek 930e1b
+                return log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
+
Zbigniew Jędrzejewski-Szmek 930e1b
         fprintf(f,
Zbigniew Jędrzejewski-Szmek 930e1b
                 "# Automatically generated by systemd-gpt-auto-generator\n\n"
Zbigniew Jędrzejewski-Szmek 930e1b
                 "[Unit]\n"
Zbigniew Jędrzejewski-Szmek 930e1b
                 "DefaultDependencies=no\n"
Zbigniew Jędrzejewski-Szmek 930e1b
-                "After=" SPECIAL_LOCAL_FS_PRE_TARGET "\n"
Zbigniew Jędrzejewski-Szmek 930e1b
+                "Requires=%s\n"
Zbigniew Jędrzejewski-Szmek 930e1b
+                "After=" SPECIAL_LOCAL_FS_PRE_TARGET " %s\n"
Zbigniew Jędrzejewski-Szmek 930e1b
                 "Conflicts=" SPECIAL_UMOUNT_TARGET "\n"
Zbigniew Jędrzejewski-Szmek 930e1b
                 "Before=" SPECIAL_UMOUNT_TARGET " " SPECIAL_LOCAL_FS_TARGET "\n\n"
Zbigniew Jędrzejewski-Szmek 930e1b
                 "[Mount]\n"
Zbigniew Jędrzejewski-Szmek 930e1b
                 "What=%s\n"
Zbigniew Jędrzejewski-Szmek 930e1b
                 "Where=/home\n"
Zbigniew Jędrzejewski-Szmek 930e1b
-                "Type=%s\n"
Zbigniew Jędrzejewski-Szmek 930e1b
-                "FsckPassNo=2\n",
Zbigniew Jędrzejewski-Szmek 930e1b
-                path, fstype);
Zbigniew Jędrzejewski-Szmek 930e1b
+                "Type=%s\n",
Zbigniew Jędrzejewski-Szmek 930e1b
+                fsck, fsck, path, fstype);
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         fflush(f);
Zbigniew Jędrzejewski-Szmek 930e1b
         if (ferror(f)) {
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -234,97 +239,80 @@ static int add_home(const char *path, const char *fstype) {
Zbigniew Jędrzejewski-Szmek 930e1b
 }
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
 static int enumerate_partitions(struct udev *udev, dev_t dev) {
Zbigniew Jędrzejewski-Szmek 930e1b
-        struct udev_enumerate *e = NULL;
Zbigniew Jędrzejewski-Szmek 930e1b
-        struct udev_device *parent = NULL, *d = NULL;
Zbigniew Jędrzejewski-Szmek 930e1b
+        struct udev_device *parent = NULL;
Zbigniew Jędrzejewski-Szmek 930e1b
+        _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL;
Zbigniew Jędrzejewski-Szmek 930e1b
+        _cleanup_udev_device_unref_ struct udev_device *d = NULL;
Zbigniew Jędrzejewski-Szmek 930e1b
         struct udev_list_entry *first, *item;
Zbigniew Jędrzejewski-Szmek 930e1b
         unsigned home_nr = (unsigned) -1;
Zbigniew Jędrzejewski-Szmek 930e1b
         _cleanup_free_ char *home = NULL, *home_fstype = NULL;
Zbigniew Jędrzejewski-Szmek 930e1b
         int r;
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         e = udev_enumerate_new(udev);
Zbigniew Jędrzejewski-Szmek 930e1b
-        if (!e) {
Zbigniew Jędrzejewski-Szmek 930e1b
-                r = log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
-                goto finish;
Zbigniew Jędrzejewski-Szmek 930e1b
-        }
Zbigniew Jędrzejewski-Szmek 930e1b
+        if (!e)
Zbigniew Jędrzejewski-Szmek 930e1b
+                return log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         d = udev_device_new_from_devnum(udev, 'b', dev);
Zbigniew Jędrzejewski-Szmek 930e1b
-        if (!d) {
Zbigniew Jędrzejewski-Szmek 930e1b
-                r = log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
-                goto finish;
Zbigniew Jędrzejewski-Szmek 930e1b
-        }
Zbigniew Jędrzejewski-Szmek 930e1b
+        if (!d)
Zbigniew Jędrzejewski-Szmek 930e1b
+                return log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         parent = udev_device_get_parent(d);
Zbigniew Jędrzejewski-Szmek 930e1b
-        if (!parent) {
Zbigniew Jędrzejewski-Szmek 930e1b
-                r = log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
-                goto finish;
Zbigniew Jędrzejewski-Szmek 930e1b
-        }
Zbigniew Jędrzejewski-Szmek 930e1b
+        if (!parent)
Zbigniew Jędrzejewski-Szmek 930e1b
+                return log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         r = udev_enumerate_add_match_parent(e, parent);
Zbigniew Jędrzejewski-Szmek 930e1b
-        if (r < 0) {
Zbigniew Jędrzejewski-Szmek 930e1b
-                r = log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
-                goto finish;
Zbigniew Jędrzejewski-Szmek 930e1b
-        }
Zbigniew Jędrzejewski-Szmek 930e1b
+        if (r < 0)
Zbigniew Jędrzejewski-Szmek 930e1b
+                return log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         r = udev_enumerate_add_match_subsystem(e, "block");
Zbigniew Jędrzejewski-Szmek 930e1b
-        if (r < 0) {
Zbigniew Jędrzejewski-Szmek 930e1b
-                r = log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
-                goto finish;
Zbigniew Jędrzejewski-Szmek 930e1b
-        }
Zbigniew Jędrzejewski-Szmek 930e1b
+        if (r < 0)
Zbigniew Jędrzejewski-Szmek 930e1b
+                return log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         r = udev_enumerate_scan_devices(e);
Zbigniew Jędrzejewski-Szmek 930e1b
         if (r < 0) {
Zbigniew Jędrzejewski-Szmek 930e1b
                 log_error("Failed to enumerate partitions on /dev/block/%u:%u: %s",
Zbigniew Jędrzejewski-Szmek 930e1b
                           major(dev), minor(dev), strerror(-r));
Zbigniew Jędrzejewski-Szmek 930e1b
-                goto finish;
Zbigniew Jędrzejewski-Szmek 930e1b
+                return r;
Zbigniew Jędrzejewski-Szmek 930e1b
         }
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         first = udev_enumerate_get_list_entry(e);
Zbigniew Jędrzejewski-Szmek 930e1b
         udev_list_entry_foreach(item, first) {
Zbigniew Jędrzejewski-Szmek 930e1b
                 _cleanup_free_ char *fstype = NULL;
Zbigniew Jędrzejewski-Szmek 930e1b
                 const char *node = NULL;
Zbigniew Jędrzejewski-Szmek 930e1b
-                struct udev_device *q;
Zbigniew Jędrzejewski-Szmek 930e1b
+                _cleanup_udev_device_unref_ struct udev_device *q;
Zbigniew Jędrzejewski-Szmek 930e1b
                 sd_id128_t type_id;
Zbigniew Jędrzejewski-Szmek 930e1b
                 unsigned nr;
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
                 q = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item));
Zbigniew Jędrzejewski-Szmek 930e1b
-                if (!q) {
Zbigniew Jędrzejewski-Szmek 930e1b
-                        r = log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
-                        goto finish;
Zbigniew Jędrzejewski-Szmek 930e1b
-                }
Zbigniew Jędrzejewski-Szmek 930e1b
+                if (!q)
Zbigniew Jędrzejewski-Szmek 930e1b
+                        return log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
                 if (udev_device_get_devnum(q) == udev_device_get_devnum(d))
Zbigniew Jędrzejewski-Szmek 930e1b
-                        goto skip;
Zbigniew Jędrzejewski-Szmek 930e1b
+                        continue;
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
                 if (udev_device_get_devnum(q) == udev_device_get_devnum(parent))
Zbigniew Jędrzejewski-Szmek 930e1b
-                        goto skip;
Zbigniew Jędrzejewski-Szmek 930e1b
+                        continue;
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
                 node = udev_device_get_devnode(q);
Zbigniew Jędrzejewski-Szmek 930e1b
-                if (!node) {
Zbigniew Jędrzejewski-Szmek 930e1b
-                        r = log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
-                        goto finish;
Zbigniew Jędrzejewski-Szmek 930e1b
-                }
Zbigniew Jędrzejewski-Szmek 930e1b
+                if (!node)
Zbigniew Jędrzejewski-Szmek 930e1b
+                        return log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
                 r = verify_gpt_partition(node, &type_id, &nr, &fstype);
Zbigniew Jędrzejewski-Szmek 930e1b
                 if (r < 0) {
Zbigniew Jędrzejewski-Szmek 930e1b
                         log_error("Failed to verify GPT partition %s: %s",
Zbigniew Jędrzejewski-Szmek 930e1b
                                   node, strerror(-r));
Zbigniew Jędrzejewski-Szmek 930e1b
-                        udev_device_unref(q);
Zbigniew Jędrzejewski-Szmek 930e1b
-                        goto finish;
Zbigniew Jędrzejewski-Szmek 930e1b
+                        return r;
Zbigniew Jędrzejewski-Szmek 930e1b
                 }
Zbigniew Jędrzejewski-Szmek 930e1b
                 if (r == 0)
Zbigniew Jędrzejewski-Szmek 930e1b
-                        goto skip;
Zbigniew Jędrzejewski-Szmek 930e1b
+                        continue;
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
-                if (sd_id128_equal(type_id, SD_ID128_MAKE(06,57,fd,6d,a4,ab,43,c4,84,e5,09,33,c8,4b,4f,4f)))
Zbigniew Jędrzejewski-Szmek 930e1b
+                if (sd_id128_equal(type_id, GPT_SWAP))
Zbigniew Jędrzejewski-Szmek 930e1b
                         add_swap(node, fstype);
Zbigniew Jędrzejewski-Szmek 930e1b
-                else if (sd_id128_equal(type_id, SD_ID128_MAKE(93,3a,c7,e1,2e,b4,4f,13,b8,44,0e,14,e2,ae,f9,15))) {
Zbigniew Jędrzejewski-Szmek 930e1b
-
Zbigniew Jędrzejewski-Szmek 930e1b
+                else if (sd_id128_equal(type_id, GPT_HOME)) {
Zbigniew Jędrzejewski-Szmek 930e1b
                         if (!home || nr < home_nr) {
Zbigniew Jędrzejewski-Szmek 930e1b
                                 free(home);
Zbigniew Jędrzejewski-Szmek 930e1b
                                 home = strdup(node);
Zbigniew Jędrzejewski-Szmek 930e1b
-                                if (!home) {
Zbigniew Jędrzejewski-Szmek 930e1b
-                                        r = log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
-                                        goto finish;
Zbigniew Jędrzejewski-Szmek 930e1b
-                                }
Zbigniew Jędrzejewski-Szmek 930e1b
+                                if (!home)
Zbigniew Jędrzejewski-Szmek 930e1b
+                                        return log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
                                 home_nr = nr;
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -333,27 +321,16 @@ static int enumerate_partitions(struct udev *udev, dev_t dev) {
Zbigniew Jędrzejewski-Szmek 930e1b
                                 fstype = NULL;
Zbigniew Jędrzejewski-Szmek 930e1b
                         }
Zbigniew Jędrzejewski-Szmek 930e1b
                 }
Zbigniew Jędrzejewski-Szmek 930e1b
-
Zbigniew Jędrzejewski-Szmek 930e1b
-        skip:
Zbigniew Jędrzejewski-Szmek 930e1b
-                udev_device_unref(q);
Zbigniew Jędrzejewski-Szmek 930e1b
         }
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         if (home && home_fstype)
Zbigniew Jędrzejewski-Szmek 930e1b
                 add_home(home, home_fstype);
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
-finish:
Zbigniew Jędrzejewski-Szmek 930e1b
-        if (d)
Zbigniew Jędrzejewski-Szmek 930e1b
-                udev_device_unref(d);
Zbigniew Jędrzejewski-Szmek 930e1b
-
Zbigniew Jędrzejewski-Szmek 930e1b
-        if (e)
Zbigniew Jędrzejewski-Szmek 930e1b
-                udev_enumerate_unref(e);
Zbigniew Jędrzejewski-Szmek 930e1b
-
Zbigniew Jędrzejewski-Szmek 930e1b
-
Zbigniew Jędrzejewski-Szmek 930e1b
         return r;
Zbigniew Jędrzejewski-Szmek 930e1b
 }
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
 static int get_btrfs_block_device(const char *path, dev_t *dev) {
Zbigniew Jędrzejewski-Szmek 930e1b
-        struct btrfs_ioctl_fs_info_args fsi;
Zbigniew Jędrzejewski-Szmek 930e1b
+        struct btrfs_ioctl_fs_info_args fsi = {};
Zbigniew Jędrzejewski-Szmek 930e1b
         _cleanup_close_ int fd = -1;
Zbigniew Jędrzejewski-Szmek 930e1b
         uint64_t id;
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -364,7 +341,6 @@ static int get_btrfs_block_device(const char *path, dev_t *dev) {
Zbigniew Jędrzejewski-Szmek 930e1b
         if (fd < 0)
Zbigniew Jędrzejewski-Szmek 930e1b
                 return -errno;
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
-        zero(fsi);
Zbigniew Jędrzejewski-Szmek 930e1b
         if (ioctl(fd, BTRFS_IOC_FS_INFO, &fsi) < 0)
Zbigniew Jędrzejewski-Szmek 930e1b
                 return -errno;
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -373,12 +349,11 @@ static int get_btrfs_block_device(const char *path, dev_t *dev) {
Zbigniew Jędrzejewski-Szmek 930e1b
                 return 0;
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         for (id = 1; id <= fsi.max_id; id++) {
Zbigniew Jędrzejewski-Szmek 930e1b
-                struct btrfs_ioctl_dev_info_args di;
Zbigniew Jędrzejewski-Szmek 930e1b
+                struct btrfs_ioctl_dev_info_args di = {
Zbigniew Jędrzejewski-Szmek 930e1b
+                        .devid = id,
Zbigniew Jędrzejewski-Szmek 930e1b
+                };
Zbigniew Jędrzejewski-Szmek 930e1b
                 struct stat st;
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
-                zero(di);
Zbigniew Jędrzejewski-Szmek 930e1b
-                di.devid = id;
Zbigniew Jędrzejewski-Szmek 930e1b
-
Zbigniew Jędrzejewski-Szmek 930e1b
                 if (ioctl(fd, BTRFS_IOC_DEV_INFO, &di) < 0) {
Zbigniew Jędrzejewski-Szmek 930e1b
                         if (errno == ENODEV)
Zbigniew Jędrzejewski-Szmek 930e1b
                                 continue;
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -427,44 +402,31 @@ static int get_block_device(const char *path, dev_t *dev) {
Zbigniew Jędrzejewski-Szmek 930e1b
 }
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
 static int devno_to_devnode(struct udev *udev, dev_t devno, char **ret) {
Zbigniew Jędrzejewski-Szmek 930e1b
-        struct udev_device *d = NULL;
Zbigniew Jędrzejewski-Szmek 930e1b
+        _cleanup_udev_device_unref_ struct udev_device *d;
Zbigniew Jędrzejewski-Szmek 930e1b
         const char *t;
Zbigniew Jędrzejewski-Szmek 930e1b
         char *n;
Zbigniew Jędrzejewski-Szmek 930e1b
-        int r;
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         d = udev_device_new_from_devnum(udev, 'b', devno);
Zbigniew Jędrzejewski-Szmek 930e1b
-        if (!d) {
Zbigniew Jędrzejewski-Szmek 930e1b
-                r = log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
-                goto finish;
Zbigniew Jędrzejewski-Szmek 930e1b
-        }
Zbigniew Jędrzejewski-Szmek 930e1b
+        if (!d)
Zbigniew Jędrzejewski-Szmek 930e1b
+                return log_oom();
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         t = udev_device_get_devnode(d);
Zbigniew Jędrzejewski-Szmek 930e1b
-        if (!t) {
Zbigniew Jędrzejewski-Szmek 930e1b
-                r = -ENODEV;
Zbigniew Jędrzejewski-Szmek 930e1b
-                goto finish;
Zbigniew Jędrzejewski-Szmek 930e1b
-        }
Zbigniew Jędrzejewski-Szmek 930e1b
+        if (!t)
Zbigniew Jędrzejewski-Szmek 930e1b
+                return -ENODEV;
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         n = strdup(t);
Zbigniew Jędrzejewski-Szmek 930e1b
-        if (!n) {
Zbigniew Jędrzejewski-Szmek 930e1b
-                r = -ENOMEM;
Zbigniew Jędrzejewski-Szmek 930e1b
-                goto finish;
Zbigniew Jędrzejewski-Szmek 930e1b
-        }
Zbigniew Jędrzejewski-Szmek 930e1b
+        if (!n)
Zbigniew Jędrzejewski-Szmek 930e1b
+                return -ENOMEM;
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         *ret = n;
Zbigniew Jędrzejewski-Szmek 930e1b
-        r = 0;
Zbigniew Jędrzejewski-Szmek 930e1b
-
Zbigniew Jędrzejewski-Szmek 930e1b
-finish:
Zbigniew Jędrzejewski-Szmek 930e1b
-        if (d)
Zbigniew Jędrzejewski-Szmek 930e1b
-                udev_device_unref(d);
Zbigniew Jędrzejewski-Szmek 930e1b
-
Zbigniew Jędrzejewski-Szmek 930e1b
-        return r;
Zbigniew Jędrzejewski-Szmek 930e1b
+        return 0;
Zbigniew Jędrzejewski-Szmek 930e1b
 }
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
 int main(int argc, char *argv[]) {
Zbigniew Jędrzejewski-Szmek 930e1b
         _cleanup_free_ char *node = NULL;
Zbigniew Jędrzejewski-Szmek 930e1b
-        struct udev *udev = NULL;
Zbigniew Jędrzejewski-Szmek 930e1b
+        _cleanup_udev_unref_ struct udev *udev = NULL;
Zbigniew Jędrzejewski-Szmek 930e1b
         dev_t devno;
Zbigniew Jędrzejewski-Szmek 930e1b
-        int r;
Zbigniew Jędrzejewski-Szmek 930e1b
+        int r = 0;
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         if (argc > 1 && argc != 4) {
Zbigniew Jędrzejewski-Szmek 930e1b
                 log_error("This program takes three or no arguments.");
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -483,13 +445,11 @@ int main(int argc, char *argv[]) {
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         if (in_initrd()) {
Zbigniew Jędrzejewski-Szmek 930e1b
                 log_debug("In initrd, exiting.");
Zbigniew Jędrzejewski-Szmek 930e1b
-                r = 0;
Zbigniew Jędrzejewski-Szmek 930e1b
                 goto finish;
Zbigniew Jędrzejewski-Szmek 930e1b
         }
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
         if (detect_container(NULL) > 0) {
Zbigniew Jędrzejewski-Szmek 930e1b
                 log_debug("In a container, exiting.");
Zbigniew Jędrzejewski-Szmek 930e1b
-                r = 0;
Zbigniew Jędrzejewski-Szmek 930e1b
                 goto finish;
Zbigniew Jędrzejewski-Szmek 930e1b
         }
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -528,8 +488,5 @@ int main(int argc, char *argv[]) {
Zbigniew Jędrzejewski-Szmek 930e1b
         r = enumerate_partitions(udev, devno);
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
 finish:
Zbigniew Jędrzejewski-Szmek 930e1b
-        if (udev)
Zbigniew Jędrzejewski-Szmek 930e1b
-                udev_unref(udev);
Zbigniew Jędrzejewski-Szmek 930e1b
-
Zbigniew Jędrzejewski-Szmek 930e1b
         return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
Zbigniew Jędrzejewski-Szmek 930e1b
 }
Zbigniew Jędrzejewski-Szmek 930e1b
diff --git a/src/journal/journal-internal.h b/src/journal/journal-internal.h
Zbigniew Jędrzejewski-Szmek 930e1b
index 1bc912c..3355fca 100644
Zbigniew Jędrzejewski-Szmek 930e1b
--- a/src/journal/journal-internal.h
Zbigniew Jędrzejewski-Szmek 930e1b
+++ b/src/journal/journal-internal.h
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -135,7 +135,7 @@ struct sd_journal {
Zbigniew Jędrzejewski-Szmek 930e1b
 char *journal_make_match_string(sd_journal *j);
Zbigniew Jędrzejewski-Szmek 930e1b
 void journal_print_header(sd_journal *j);
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
-define_trivial_cleanup_func(sd_journal*, sd_journal_close)
Zbigniew Jędrzejewski-Szmek 930e1b
+DEFINE_TRIVIAL_CLEANUP_FUNC(sd_journal*, sd_journal_close);
Zbigniew Jędrzejewski-Szmek 930e1b
 #define _cleanup_journal_close_ _cleanup_(sd_journal_closep)
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
 #define JOURNAL_FOREACH_DATA_RETVAL(j, data, l, retval)                     \
Zbigniew Jędrzejewski-Szmek 930e1b
diff --git a/src/shared/fdset.h b/src/shared/fdset.h
Zbigniew Jędrzejewski-Szmek 930e1b
index d0dc875..b91b430 100644
Zbigniew Jędrzejewski-Szmek 930e1b
--- a/src/shared/fdset.h
Zbigniew Jędrzejewski-Szmek 930e1b
+++ b/src/shared/fdset.h
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -48,5 +48,5 @@ int fdset_iterate(FDSet *s, Iterator *i);
Zbigniew Jędrzejewski-Szmek 930e1b
 #define FDSET_FOREACH(fd, fds, i) \
Zbigniew Jędrzejewski-Szmek 930e1b
         for ((i) = ITERATOR_FIRST, (fd) = fdset_iterate((fds), &(i)); (fd) >= 0; (fd) = fdset_iterate((fds), &(i)))
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
-define_trivial_cleanup_func(FDSet*, fdset_free)
Zbigniew Jędrzejewski-Szmek 930e1b
+DEFINE_TRIVIAL_CLEANUP_FUNC(FDSet*, fdset_free);
Zbigniew Jędrzejewski-Szmek 930e1b
 #define _cleanup_fdset_free_ _cleanup_(fdset_freep)
Zbigniew Jędrzejewski-Szmek 930e1b
diff --git a/src/shared/set.h b/src/shared/set.h
Zbigniew Jędrzejewski-Szmek 930e1b
index a291470..5612478 100644
Zbigniew Jędrzejewski-Szmek 930e1b
--- a/src/shared/set.h
Zbigniew Jędrzejewski-Szmek 930e1b
+++ b/src/shared/set.h
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -73,7 +73,7 @@ char **set_get_strv(Set *s);
Zbigniew Jędrzejewski-Szmek 930e1b
 #define SET_FOREACH_BACKWARDS(e, s, i) \
Zbigniew Jędrzejewski-Szmek 930e1b
         for ((i) = ITERATOR_LAST, (e) = set_iterate_backwards((s), &(i)); (e); (e) = set_iterate_backwards((s), &(i)))
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
-define_trivial_cleanup_func(Set*, set_free)
Zbigniew Jędrzejewski-Szmek 930e1b
-define_trivial_cleanup_func(Set*, set_free_free)
Zbigniew Jędrzejewski-Szmek 930e1b
+DEFINE_TRIVIAL_CLEANUP_FUNC(Set*, set_free);
Zbigniew Jędrzejewski-Szmek 930e1b
+DEFINE_TRIVIAL_CLEANUP_FUNC(Set*, set_free_free);
Zbigniew Jędrzejewski-Szmek 930e1b
 #define _cleanup_set_free_ _cleanup_(set_freep)
Zbigniew Jędrzejewski-Szmek 930e1b
 #define _cleanup_set_free_free_ _cleanup_(set_free_freep)
Zbigniew Jędrzejewski-Szmek 930e1b
diff --git a/src/shared/strv.h b/src/shared/strv.h
Zbigniew Jędrzejewski-Szmek 930e1b
index 4d117f8..f6fb033 100644
Zbigniew Jędrzejewski-Szmek 930e1b
--- a/src/shared/strv.h
Zbigniew Jędrzejewski-Szmek 930e1b
+++ b/src/shared/strv.h
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -30,7 +30,7 @@ char *strv_find(char **l, const char *name) _pure_;
Zbigniew Jędrzejewski-Szmek 930e1b
 char *strv_find_prefix(char **l, const char *name) _pure_;
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
 void strv_free(char **l);
Zbigniew Jędrzejewski-Szmek 930e1b
-define_trivial_cleanup_func(char**, strv_free)
Zbigniew Jędrzejewski-Szmek 930e1b
+DEFINE_TRIVIAL_CLEANUP_FUNC(char**, strv_free);
Zbigniew Jędrzejewski-Szmek 930e1b
 #define _cleanup_strv_free_ _cleanup_(strv_freep)
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
 char **strv_copy(char * const *l);
Zbigniew Jędrzejewski-Szmek 930e1b
diff --git a/src/shared/udev-util.h b/src/shared/udev-util.h
Zbigniew Jędrzejewski-Szmek 930e1b
index bff8f5f..27677af 100644
Zbigniew Jędrzejewski-Szmek 930e1b
--- a/src/shared/udev-util.h
Zbigniew Jędrzejewski-Szmek 930e1b
+++ b/src/shared/udev-util.h
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -24,11 +24,11 @@
Zbigniew Jędrzejewski-Szmek 930e1b
 #include "udev.h"
Zbigniew Jędrzejewski-Szmek 930e1b
 #include "util.h"
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
-define_trivial_cleanup_func(struct udev*, udev_unref)
Zbigniew Jędrzejewski-Szmek 930e1b
-define_trivial_cleanup_func(struct udev_device*, udev_device_unref)
Zbigniew Jędrzejewski-Szmek 930e1b
-define_trivial_cleanup_func(struct udev_enumerate*, udev_enumerate_unref)
Zbigniew Jędrzejewski-Szmek 930e1b
-define_trivial_cleanup_func(struct udev_event*, udev_event_unref)
Zbigniew Jędrzejewski-Szmek 930e1b
-define_trivial_cleanup_func(struct udev_rules*, udev_rules_unref)
Zbigniew Jędrzejewski-Szmek 930e1b
+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev*, udev_unref);
Zbigniew Jędrzejewski-Szmek 930e1b
+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_device*, udev_device_unref);
Zbigniew Jędrzejewski-Szmek 930e1b
+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_enumerate*, udev_enumerate_unref);
Zbigniew Jędrzejewski-Szmek 930e1b
+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_event*, udev_event_unref);
Zbigniew Jędrzejewski-Szmek 930e1b
+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_rules*, udev_rules_unref);
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
 #define _cleanup_udev_unref_ _cleanup_(udev_unrefp)
Zbigniew Jędrzejewski-Szmek 930e1b
 #define _cleanup_udev_device_unref_ _cleanup_(udev_device_unrefp)
Zbigniew Jędrzejewski-Szmek 930e1b
diff --git a/src/shared/util.h b/src/shared/util.h
Zbigniew Jędrzejewski-Szmek 930e1b
index 2c41765..bdbdca3 100644
Zbigniew Jędrzejewski-Szmek 930e1b
--- a/src/shared/util.h
Zbigniew Jędrzejewski-Szmek 930e1b
+++ b/src/shared/util.h
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -555,11 +555,12 @@ static inline void freep(void *p) {
Zbigniew Jędrzejewski-Szmek 930e1b
         free(*(void**) p);
Zbigniew Jędrzejewski-Szmek 930e1b
 }
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
-#define define_trivial_cleanup_func(type, func) \
Zbigniew Jędrzejewski-Szmek 930e1b
-        static inline void func##p(type *p) {   \
Zbigniew Jędrzejewski-Szmek 930e1b
-        if (*p)                                 \
Zbigniew Jędrzejewski-Szmek 930e1b
-                func(*p);                       \
Zbigniew Jędrzejewski-Szmek 930e1b
-        }                                       \
Zbigniew Jędrzejewski-Szmek 930e1b
+#define DEFINE_TRIVIAL_CLEANUP_FUNC(type, func)                 \
Zbigniew Jędrzejewski-Szmek 930e1b
+        static inline void func##p(type *p) {                   \
Zbigniew Jędrzejewski-Szmek 930e1b
+                if (*p)                                         \
Zbigniew Jędrzejewski-Szmek 930e1b
+                        func(*p);                               \
Zbigniew Jędrzejewski-Szmek 930e1b
+        }                                                       \
Zbigniew Jędrzejewski-Szmek 930e1b
+        struct __useless_struct_to_allow_trailing_semicolon__
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
 static inline void closep(int *fd) {
Zbigniew Jędrzejewski-Szmek 930e1b
         if (*fd >= 0)
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -570,10 +571,10 @@ static inline void umaskp(mode_t *u) {
Zbigniew Jędrzejewski-Szmek 930e1b
         umask(*u);
Zbigniew Jędrzejewski-Szmek 930e1b
 }
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
-define_trivial_cleanup_func(FILE*, fclose)
Zbigniew Jędrzejewski-Szmek 930e1b
-define_trivial_cleanup_func(FILE*, pclose)
Zbigniew Jędrzejewski-Szmek 930e1b
-define_trivial_cleanup_func(DIR*, closedir)
Zbigniew Jędrzejewski-Szmek 930e1b
-define_trivial_cleanup_func(FILE*, endmntent)
Zbigniew Jędrzejewski-Szmek 930e1b
+DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, fclose);
Zbigniew Jędrzejewski-Szmek 930e1b
+DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, pclose);
Zbigniew Jędrzejewski-Szmek 930e1b
+DEFINE_TRIVIAL_CLEANUP_FUNC(DIR*, closedir);
Zbigniew Jędrzejewski-Szmek 930e1b
+DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, endmntent);
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
 #define _cleanup_free_ _cleanup_(freep)
Zbigniew Jędrzejewski-Szmek 930e1b
 #define _cleanup_close_ _cleanup_(closep)
Zbigniew Jędrzejewski-Szmek 930e1b
diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
Zbigniew Jędrzejewski-Szmek 930e1b
index 7e873af..e23847b 100644
Zbigniew Jędrzejewski-Szmek 930e1b
--- a/src/tmpfiles/tmpfiles.c
Zbigniew Jędrzejewski-Szmek 930e1b
+++ b/src/tmpfiles/tmpfiles.c
Zbigniew Jędrzejewski-Szmek 930e1b
@@ -998,7 +998,7 @@ static void item_free(Item *i) {
Zbigniew Jędrzejewski-Szmek 930e1b
         free(i);
Zbigniew Jędrzejewski-Szmek 930e1b
 }
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
-define_trivial_cleanup_func(Item*, item_free)
Zbigniew Jędrzejewski-Szmek 930e1b
+DEFINE_TRIVIAL_CLEANUP_FUNC(Item*, item_free);
Zbigniew Jędrzejewski-Szmek 930e1b
 #define _cleanup_item_free_ _cleanup_(item_freep)
Zbigniew Jędrzejewski-Szmek 930e1b
 
Zbigniew Jędrzejewski-Szmek 930e1b
 static bool item_equal(Item *a, Item *b) {