|
|
84b277 |
From 30725ba0d69c5ba935c64ce9c3892494687e4c9b Mon Sep 17 00:00:00 2001
|
|
|
84b277 |
From: Lennart Poettering <lennart@poettering.net>
|
|
|
84b277 |
Date: Mon, 14 Oct 2013 04:59:26 +0200
|
|
|
84b277 |
Subject: [PATCH] util: allow trailing semicolons on
|
|
|
84b277 |
define_trivial_cleanup_func lines
|
|
|
84b277 |
|
|
|
84b277 |
Emacs C indenting really gets confused by these lines if they carry no
|
|
|
84b277 |
trailing semicolon, hence let's make this nicer for good old emacs. The
|
|
|
84b277 |
other macros which define functions already do this too, so let's copy
|
|
|
84b277 |
the scheme here.
|
|
|
84b277 |
|
|
|
84b277 |
Also, let's use an uppercase name for the macro. So far our rough rule
|
|
|
84b277 |
was that macros that are totally not function-like (like this ones,
|
|
|
84b277 |
which define a function) are uppercase. (Well, admittedly it is a rough
|
|
|
84b277 |
rule only, for example function and variable decorators are all
|
|
|
84b277 |
lower-case SINCE THE CONSTANT YELLING IN THE SOURCES WOULD SUCK, and
|
|
|
84b277 |
also they at least got underscore prefixes.) Also, the macros that
|
|
|
84b277 |
define functions that we already have are all uppercase, so let's do the
|
|
|
84b277 |
same here...
|
|
|
84b277 |
|
|
|
84b277 |
(cherry-picked from cd7affaeea16d3904354b810a292e594dfef25dd)
|
|
|
84b277 |
|
|
|
84b277 |
Related: #1147524
|
|
|
84b277 |
---
|
|
|
84b277 |
src/gpt-auto-generator/gpt-auto-generator.c | 2 +-
|
|
|
84b277 |
src/journal/journal-internal.h | 2 +-
|
|
|
84b277 |
src/shared/fdset.h | 2 +-
|
|
|
84b277 |
src/shared/hashmap.h | 8 ++++++++
|
|
|
84b277 |
src/shared/label.c | 4 ++--
|
|
|
84b277 |
src/shared/set.h | 4 ++--
|
|
|
84b277 |
src/shared/strv.h | 2 +-
|
|
|
84b277 |
src/shared/udev-util.h | 10 +++++-----
|
|
|
84b277 |
src/shared/util.h | 19 ++++++++++---------
|
|
|
84b277 |
src/tmpfiles/tmpfiles.c | 2 +-
|
|
|
84b277 |
10 files changed, 32 insertions(+), 23 deletions(-)
|
|
|
84b277 |
|
|
|
84b277 |
diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
|
|
|
84b277 |
index 6a4c9d8..eb281b5 100644
|
|
|
84b277 |
--- a/src/gpt-auto-generator/gpt-auto-generator.c
|
|
|
84b277 |
+++ b/src/gpt-auto-generator/gpt-auto-generator.c
|
|
|
84b277 |
@@ -51,7 +51,7 @@
|
|
|
84b277 |
|
|
|
84b277 |
static const char *arg_dest = "/tmp";
|
|
|
84b277 |
|
|
|
84b277 |
-define_trivial_cleanup_func(blkid_probe, blkid_free_probe)
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(blkid_probe, blkid_free_probe);
|
|
|
84b277 |
#define _cleanup_blkid_freep_probe_ _cleanup_(blkid_free_probep)
|
|
|
84b277 |
|
|
|
84b277 |
static int verify_gpt_partition(const char *node, sd_id128_t *type, unsigned *nr, char **fstype) {
|
|
|
84b277 |
diff --git a/src/journal/journal-internal.h b/src/journal/journal-internal.h
|
|
|
84b277 |
index 1bc912c..3355fca 100644
|
|
|
84b277 |
--- a/src/journal/journal-internal.h
|
|
|
84b277 |
+++ b/src/journal/journal-internal.h
|
|
|
84b277 |
@@ -135,7 +135,7 @@ struct sd_journal {
|
|
|
84b277 |
char *journal_make_match_string(sd_journal *j);
|
|
|
84b277 |
void journal_print_header(sd_journal *j);
|
|
|
84b277 |
|
|
|
84b277 |
-define_trivial_cleanup_func(sd_journal*, sd_journal_close)
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(sd_journal*, sd_journal_close);
|
|
|
84b277 |
#define _cleanup_journal_close_ _cleanup_(sd_journal_closep)
|
|
|
84b277 |
|
|
|
84b277 |
#define JOURNAL_FOREACH_DATA_RETVAL(j, data, l, retval) \
|
|
|
84b277 |
diff --git a/src/shared/fdset.h b/src/shared/fdset.h
|
|
|
84b277 |
index 6277e46..907acd7 100644
|
|
|
84b277 |
--- a/src/shared/fdset.h
|
|
|
84b277 |
+++ b/src/shared/fdset.h
|
|
|
84b277 |
@@ -49,5 +49,5 @@ int fdset_iterate(FDSet *s, Iterator *i);
|
|
|
84b277 |
#define FDSET_FOREACH(fd, fds, i) \
|
|
|
84b277 |
for ((i) = ITERATOR_FIRST, (fd) = fdset_iterate((fds), &(i)); (fd) >= 0; (fd) = fdset_iterate((fds), &(i)))
|
|
|
84b277 |
|
|
|
84b277 |
-define_trivial_cleanup_func(FDSet*, fdset_free)
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(FDSet*, fdset_free);
|
|
|
84b277 |
#define _cleanup_fdset_free_ _cleanup_(fdset_freep)
|
|
|
84b277 |
diff --git a/src/shared/hashmap.h b/src/shared/hashmap.h
|
|
|
84b277 |
index 3d4f672..b912af8 100644
|
|
|
84b277 |
--- a/src/shared/hashmap.h
|
|
|
84b277 |
+++ b/src/shared/hashmap.h
|
|
|
84b277 |
@@ -24,6 +24,7 @@
|
|
|
84b277 |
#include <stdbool.h>
|
|
|
84b277 |
|
|
|
84b277 |
#include "macro.h"
|
|
|
84b277 |
+#include "util.h"
|
|
|
84b277 |
|
|
|
84b277 |
/* Pretty straightforward hash table implementation. As a minor
|
|
|
84b277 |
* optimization a NULL hashmap object will be treated as empty hashmap
|
|
|
84b277 |
@@ -104,3 +105,10 @@ char **hashmap_get_strv(Hashmap *h);
|
|
|
84b277 |
|
|
|
84b277 |
#define HASHMAP_FOREACH_BACKWARDS(e, h, i) \
|
|
|
84b277 |
for ((i) = ITERATOR_LAST, (e) = hashmap_iterate_backwards((h), &(i), NULL); (e); (e) = hashmap_iterate_backwards((h), &(i), NULL))
|
|
|
84b277 |
+
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(Hashmap*, hashmap_free);
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(Hashmap*, hashmap_free_free);
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(Hashmap*, hashmap_free_free_free);
|
|
|
84b277 |
+#define _cleanup_hashmap_free_ _cleanup_(hashmap_freep)
|
|
|
84b277 |
+#define _cleanup_hashmap_free_free_ _cleanup_(hashmap_free_freep)
|
|
|
84b277 |
+#define _cleanup_hashmap_free_free_free_ _cleanup_(hashmap_free_free_freep)
|
|
|
84b277 |
diff --git a/src/shared/label.c b/src/shared/label.c
|
|
|
84b277 |
index 4dab93e..8f7dfb4 100644
|
|
|
84b277 |
--- a/src/shared/label.c
|
|
|
84b277 |
+++ b/src/shared/label.c
|
|
|
84b277 |
@@ -40,8 +40,8 @@
|
|
|
84b277 |
#include <selinux/label.h>
|
|
|
84b277 |
#include <selinux/context.h>
|
|
|
84b277 |
|
|
|
84b277 |
-define_trivial_cleanup_func(security_context_t, freecon);
|
|
|
84b277 |
-define_trivial_cleanup_func(context_t, context_free);
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(security_context_t, freecon);
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(context_t, context_free);
|
|
|
84b277 |
|
|
|
84b277 |
#define _cleanup_security_context_free_ _cleanup_(freeconp)
|
|
|
84b277 |
#define _cleanup_context_free_ _cleanup_(context_freep)
|
|
|
84b277 |
diff --git a/src/shared/set.h b/src/shared/set.h
|
|
|
84b277 |
index a291470..5612478 100644
|
|
|
84b277 |
--- a/src/shared/set.h
|
|
|
84b277 |
+++ b/src/shared/set.h
|
|
|
84b277 |
@@ -73,7 +73,7 @@ char **set_get_strv(Set *s);
|
|
|
84b277 |
#define SET_FOREACH_BACKWARDS(e, s, i) \
|
|
|
84b277 |
for ((i) = ITERATOR_LAST, (e) = set_iterate_backwards((s), &(i)); (e); (e) = set_iterate_backwards((s), &(i)))
|
|
|
84b277 |
|
|
|
84b277 |
-define_trivial_cleanup_func(Set*, set_free)
|
|
|
84b277 |
-define_trivial_cleanup_func(Set*, set_free_free)
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(Set*, set_free);
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(Set*, set_free_free);
|
|
|
84b277 |
#define _cleanup_set_free_ _cleanup_(set_freep)
|
|
|
84b277 |
#define _cleanup_set_free_free_ _cleanup_(set_free_freep)
|
|
|
84b277 |
diff --git a/src/shared/strv.h b/src/shared/strv.h
|
|
|
84b277 |
index 4d117f8..f6fb033 100644
|
|
|
84b277 |
--- a/src/shared/strv.h
|
|
|
84b277 |
+++ b/src/shared/strv.h
|
|
|
84b277 |
@@ -30,7 +30,7 @@ char *strv_find(char **l, const char *name) _pure_;
|
|
|
84b277 |
char *strv_find_prefix(char **l, const char *name) _pure_;
|
|
|
84b277 |
|
|
|
84b277 |
void strv_free(char **l);
|
|
|
84b277 |
-define_trivial_cleanup_func(char**, strv_free)
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(char**, strv_free);
|
|
|
84b277 |
#define _cleanup_strv_free_ _cleanup_(strv_freep)
|
|
|
84b277 |
|
|
|
84b277 |
char **strv_copy(char * const *l);
|
|
|
84b277 |
diff --git a/src/shared/udev-util.h b/src/shared/udev-util.h
|
|
|
84b277 |
index bff8f5f..27677af 100644
|
|
|
84b277 |
--- a/src/shared/udev-util.h
|
|
|
84b277 |
+++ b/src/shared/udev-util.h
|
|
|
84b277 |
@@ -24,11 +24,11 @@
|
|
|
84b277 |
#include "udev.h"
|
|
|
84b277 |
#include "util.h"
|
|
|
84b277 |
|
|
|
84b277 |
-define_trivial_cleanup_func(struct udev*, udev_unref)
|
|
|
84b277 |
-define_trivial_cleanup_func(struct udev_device*, udev_device_unref)
|
|
|
84b277 |
-define_trivial_cleanup_func(struct udev_enumerate*, udev_enumerate_unref)
|
|
|
84b277 |
-define_trivial_cleanup_func(struct udev_event*, udev_event_unref)
|
|
|
84b277 |
-define_trivial_cleanup_func(struct udev_rules*, udev_rules_unref)
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev*, udev_unref);
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_device*, udev_device_unref);
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_enumerate*, udev_enumerate_unref);
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_event*, udev_event_unref);
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_rules*, udev_rules_unref);
|
|
|
84b277 |
|
|
|
84b277 |
#define _cleanup_udev_unref_ _cleanup_(udev_unrefp)
|
|
|
84b277 |
#define _cleanup_udev_device_unref_ _cleanup_(udev_device_unrefp)
|
|
|
84b277 |
diff --git a/src/shared/util.h b/src/shared/util.h
|
|
|
84b277 |
index 5a9bc99..d68f385 100644
|
|
|
84b277 |
--- a/src/shared/util.h
|
|
|
84b277 |
+++ b/src/shared/util.h
|
|
|
84b277 |
@@ -558,11 +558,12 @@ static inline void freep(void *p) {
|
|
|
84b277 |
free(*(void**) p);
|
|
|
84b277 |
}
|
|
|
84b277 |
|
|
|
84b277 |
-#define define_trivial_cleanup_func(type, func) \
|
|
|
84b277 |
- static inline void func##p(type *p) { \
|
|
|
84b277 |
- if (*p) \
|
|
|
84b277 |
- func(*p); \
|
|
|
84b277 |
- } \
|
|
|
84b277 |
+#define DEFINE_TRIVIAL_CLEANUP_FUNC(type, func) \
|
|
|
84b277 |
+ static inline void func##p(type *p) { \
|
|
|
84b277 |
+ if (*p) \
|
|
|
84b277 |
+ func(*p); \
|
|
|
84b277 |
+ } \
|
|
|
84b277 |
+ struct __useless_struct_to_allow_trailing_semicolon__
|
|
|
84b277 |
|
|
|
84b277 |
static inline void closep(int *fd) {
|
|
|
84b277 |
if (*fd >= 0)
|
|
|
84b277 |
@@ -573,10 +574,10 @@ static inline void umaskp(mode_t *u) {
|
|
|
84b277 |
umask(*u);
|
|
|
84b277 |
}
|
|
|
84b277 |
|
|
|
84b277 |
-define_trivial_cleanup_func(FILE*, fclose)
|
|
|
84b277 |
-define_trivial_cleanup_func(FILE*, pclose)
|
|
|
84b277 |
-define_trivial_cleanup_func(DIR*, closedir)
|
|
|
84b277 |
-define_trivial_cleanup_func(FILE*, endmntent)
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, fclose);
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, pclose);
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(DIR*, closedir);
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, endmntent);
|
|
|
84b277 |
|
|
|
84b277 |
#define _cleanup_free_ _cleanup_(freep)
|
|
|
84b277 |
#define _cleanup_close_ _cleanup_(closep)
|
|
|
84b277 |
diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
|
|
|
84b277 |
index df6c99a..9917514 100644
|
|
|
84b277 |
--- a/src/tmpfiles/tmpfiles.c
|
|
|
84b277 |
+++ b/src/tmpfiles/tmpfiles.c
|
|
|
84b277 |
@@ -999,7 +999,7 @@ static void item_free(Item *i) {
|
|
|
84b277 |
free(i);
|
|
|
84b277 |
}
|
|
|
84b277 |
|
|
|
84b277 |
-define_trivial_cleanup_func(Item*, item_free)
|
|
|
84b277 |
+DEFINE_TRIVIAL_CLEANUP_FUNC(Item*, item_free);
|
|
|
84b277 |
#define _cleanup_item_free_ _cleanup_(item_freep)
|
|
|
84b277 |
|
|
|
84b277 |
static bool item_equal(Item *a, Item *b) {
|