teknoraver / rpms / systemd

Forked from rpms/systemd 2 months ago
Clone

Blame 0159-localed-remove-free_and_copy.patch

Zbigniew Jędrzejewski-Szmek 62fe94
From af76d302c1e26f916494202f1b3663f15710bdcd Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 62fe94
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Zbigniew Jędrzejewski-Szmek 62fe94
Date: Wed, 3 Sep 2014 22:53:23 -0400
Zbigniew Jędrzejewski-Szmek 62fe94
Subject: [PATCH] localed: remove free_and_copy
Zbigniew Jędrzejewski-Szmek 62fe94
Zbigniew Jędrzejewski-Szmek 62fe94
It was mostly a duplicate of free_and_strdup().
Zbigniew Jędrzejewski-Szmek 62fe94
---
Zbigniew Jędrzejewski-Szmek 62fe94
 src/locale/localed.c | 67 +++++++++++++++++++---------------------------------
Zbigniew Jędrzejewski-Szmek 62fe94
 src/shared/util.c    | 18 --------------
Zbigniew Jędrzejewski-Szmek 62fe94
 src/shared/util.h    |  2 --
Zbigniew Jędrzejewski-Szmek 62fe94
 3 files changed, 24 insertions(+), 63 deletions(-)
Zbigniew Jędrzejewski-Szmek 62fe94
Zbigniew Jędrzejewski-Szmek 62fe94
diff --git a/src/locale/localed.c b/src/locale/localed.c
Zbigniew Jędrzejewski-Szmek 62fe94
index c9f7105bb3..ac8477ad39 100644
Zbigniew Jędrzejewski-Szmek 62fe94
--- a/src/locale/localed.c
Zbigniew Jędrzejewski-Szmek 62fe94
+++ b/src/locale/localed.c
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -92,20 +92,8 @@ typedef struct Context {
Zbigniew Jędrzejewski-Szmek 62fe94
         Hashmap *polkit_registry;
Zbigniew Jędrzejewski-Szmek 62fe94
 } Context;
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
-static int free_and_copy(char **s, const char *v) {
Zbigniew Jędrzejewski-Szmek 62fe94
-        int r;
Zbigniew Jędrzejewski-Szmek 62fe94
-        char *t;
Zbigniew Jędrzejewski-Szmek 62fe94
-
Zbigniew Jędrzejewski-Szmek 62fe94
-        assert(s);
Zbigniew Jędrzejewski-Szmek 62fe94
-
Zbigniew Jędrzejewski-Szmek 62fe94
-        r = strdup_or_null(isempty(v) ? NULL : v, &t);
Zbigniew Jędrzejewski-Szmek 62fe94
-        if (r < 0)
Zbigniew Jędrzejewski-Szmek 62fe94
-                return r;
Zbigniew Jędrzejewski-Szmek 62fe94
-
Zbigniew Jędrzejewski-Szmek 62fe94
-        free(*s);
Zbigniew Jędrzejewski-Szmek 62fe94
-        *s = t;
Zbigniew Jędrzejewski-Szmek 62fe94
-
Zbigniew Jędrzejewski-Szmek 62fe94
-        return 0;
Zbigniew Jędrzejewski-Szmek 62fe94
+static const char* nonempty(const char *s) {
Zbigniew Jędrzejewski-Szmek 62fe94
+        return isempty(s) ? NULL : s;
Zbigniew Jędrzejewski-Szmek 62fe94
 }
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
 static void free_and_replace(char **s, char *v) {
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -144,10 +132,8 @@ static void locale_simplify(Context *c) {
Zbigniew Jędrzejewski-Szmek 62fe94
         int p;
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
         for (p = LOCALE_LANG+1; p < _LOCALE_MAX; p++)
Zbigniew Jędrzejewski-Szmek 62fe94
-                if (isempty(c->locale[p]) || streq_ptr(c->locale[LOCALE_LANG], c->locale[p])) {
Zbigniew Jędrzejewski-Szmek 62fe94
-                        free(c->locale[p]);
Zbigniew Jędrzejewski-Szmek 62fe94
-                        c->locale[p] = NULL;
Zbigniew Jędrzejewski-Szmek 62fe94
-                }
Zbigniew Jędrzejewski-Szmek 62fe94
+                if (isempty(c->locale[p]) || streq_ptr(c->locale[LOCALE_LANG], c->locale[p]))
Zbigniew Jędrzejewski-Szmek 62fe94
+                        free_and_replace(&c->locale[p], NULL);
Zbigniew Jędrzejewski-Szmek 62fe94
 }
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
 static int locale_read_data(Context *c) {
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -179,7 +165,8 @@ static int locale_read_data(Context *c) {
Zbigniew Jędrzejewski-Szmek 62fe94
                 for (p = 0; p < _LOCALE_MAX; p++) {
Zbigniew Jędrzejewski-Szmek 62fe94
                         assert(names[p]);
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
-                        r = free_and_copy(&c->locale[p], getenv(names[p]));
Zbigniew Jędrzejewski-Szmek 62fe94
+                        r = free_and_strdup(&c->locale[p],
Zbigniew Jędrzejewski-Szmek 62fe94
+                                            nonempty(getenv(names[p])));
Zbigniew Jędrzejewski-Szmek 62fe94
                         if (r < 0)
Zbigniew Jędrzejewski-Szmek 62fe94
                                 return r;
Zbigniew Jędrzejewski-Szmek 62fe94
                 }
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -503,8 +490,8 @@ static int vconsole_reload(sd_bus *bus) {
Zbigniew Jędrzejewski-Szmek 62fe94
         return r;
Zbigniew Jędrzejewski-Szmek 62fe94
 }
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
-static char *strnulldash(const char *s) {
Zbigniew Jędrzejewski-Szmek 62fe94
-        return s == NULL || *s == 0 || (s[0] == '-' && s[1] == 0) ? NULL : (char*) s;
Zbigniew Jędrzejewski-Szmek 62fe94
+static const char* strnulldash(const char *s) {
Zbigniew Jędrzejewski-Szmek 62fe94
+        return isempty(s) || streq(s, "-") ? NULL : s;
Zbigniew Jędrzejewski-Szmek 62fe94
 }
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
 static int read_next_mapping(FILE *f, unsigned *n, char ***a) {
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -588,10 +575,10 @@ static int vconsole_convert_to_x11(Context *c, sd_bus *bus) {
Zbigniew Jędrzejewski-Szmek 62fe94
                             !streq_ptr(c->x11_variant, strnulldash(a[3])) ||
Zbigniew Jędrzejewski-Szmek 62fe94
                             !streq_ptr(c->x11_options, strnulldash(a[4]))) {
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
-                                if (free_and_copy(&c->x11_layout, strnulldash(a[1])) < 0 ||
Zbigniew Jędrzejewski-Szmek 62fe94
-                                    free_and_copy(&c->x11_model, strnulldash(a[2])) < 0 ||
Zbigniew Jędrzejewski-Szmek 62fe94
-                                    free_and_copy(&c->x11_variant, strnulldash(a[3])) < 0 ||
Zbigniew Jędrzejewski-Szmek 62fe94
-                                    free_and_copy(&c->x11_options, strnulldash(a[4])) < 0)
Zbigniew Jędrzejewski-Szmek 62fe94
+                                if (free_and_strdup(&c->x11_layout, strnulldash(a[1])) < 0 ||
Zbigniew Jędrzejewski-Szmek 62fe94
+                                    free_and_strdup(&c->x11_model, strnulldash(a[2])) < 0 ||
Zbigniew Jędrzejewski-Szmek 62fe94
+                                    free_and_strdup(&c->x11_variant, strnulldash(a[3])) < 0 ||
Zbigniew Jędrzejewski-Szmek 62fe94
+                                    free_and_strdup(&c->x11_options, strnulldash(a[4])) < 0)
Zbigniew Jędrzejewski-Szmek 62fe94
                                         return -ENOMEM;
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                                 modified = true;
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -713,10 +700,9 @@ static int find_legacy_keymap(Context *c, char **new_keymap) {
Zbigniew Jędrzejewski-Szmek 62fe94
                 if (matching > best_matching) {
Zbigniew Jędrzejewski-Szmek 62fe94
                         best_matching = matching;
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
-                        free(*new_keymap);
Zbigniew Jędrzejewski-Szmek 62fe94
-                        *new_keymap = strdup(a[0]);
Zbigniew Jędrzejewski-Szmek 62fe94
-                        if (!*new_keymap)
Zbigniew Jędrzejewski-Szmek 62fe94
-                                return -ENOMEM;
Zbigniew Jędrzejewski-Szmek 62fe94
+                        r = free_and_strdup(new_keymap, a[0]);
Zbigniew Jędrzejewski-Szmek 62fe94
+                        if (r < 0)
Zbigniew Jędrzejewski-Szmek 62fe94
+                                return r;
Zbigniew Jędrzejewski-Szmek 62fe94
                 }
Zbigniew Jędrzejewski-Szmek 62fe94
         }
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -868,14 +854,9 @@ static int method_set_locale(sd_bus *bus, sd_bus_message *m, void *userdata, sd_
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                                 k = strlen(names[p]);
Zbigniew Jędrzejewski-Szmek 62fe94
                                 if (startswith(*i, names[p]) && (*i)[k] == '=') {
Zbigniew Jędrzejewski-Szmek 62fe94
-                                        char *t;
Zbigniew Jędrzejewski-Szmek 62fe94
-
Zbigniew Jędrzejewski-Szmek 62fe94
-                                        t = strdup(*i + k + 1);
Zbigniew Jędrzejewski-Szmek 62fe94
-                                        if (!t)
Zbigniew Jędrzejewski-Szmek 62fe94
-                                                return -ENOMEM;
Zbigniew Jędrzejewski-Szmek 62fe94
-
Zbigniew Jędrzejewski-Szmek 62fe94
-                                        free(c->locale[p]);
Zbigniew Jędrzejewski-Szmek 62fe94
-                                        c->locale[p] = t;
Zbigniew Jędrzejewski-Szmek 62fe94
+                                        r = free_and_strdup(&c->locale[p], *i + k + 1);
Zbigniew Jędrzejewski-Szmek 62fe94
+                                        if (r < 0)
Zbigniew Jędrzejewski-Szmek 62fe94
+                                                return r;
Zbigniew Jędrzejewski-Szmek 62fe94
                                         break;
Zbigniew Jędrzejewski-Szmek 62fe94
                                 }
Zbigniew Jędrzejewski-Szmek 62fe94
                         }
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -937,8 +918,8 @@ static int method_set_vc_keyboard(sd_bus *bus, sd_bus_message *m, void *userdata
Zbigniew Jędrzejewski-Szmek 62fe94
                 if (r == 0)
Zbigniew Jędrzejewski-Szmek 62fe94
                         return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
-                if (free_and_copy(&c->vc_keymap, keymap) < 0 ||
Zbigniew Jędrzejewski-Szmek 62fe94
-                    free_and_copy(&c->vc_keymap_toggle, keymap_toggle) < 0)
Zbigniew Jędrzejewski-Szmek 62fe94
+                if (free_and_strdup(&c->vc_keymap, keymap) < 0 ||
Zbigniew Jędrzejewski-Szmek 62fe94
+                    free_and_strdup(&c->vc_keymap_toggle, keymap_toggle) < 0)
Zbigniew Jędrzejewski-Szmek 62fe94
                         return -ENOMEM;
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                 r = vconsole_write_data(c);
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -1007,10 +988,10 @@ static int method_set_x11_keyboard(sd_bus *bus, sd_bus_message *m, void *userdat
Zbigniew Jędrzejewski-Szmek 62fe94
                 if (r == 0)
Zbigniew Jędrzejewski-Szmek 62fe94
                         return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
-                if (free_and_copy(&c->x11_layout, layout) < 0 ||
Zbigniew Jędrzejewski-Szmek 62fe94
-                    free_and_copy(&c->x11_model, model) < 0 ||
Zbigniew Jędrzejewski-Szmek 62fe94
-                    free_and_copy(&c->x11_variant, variant) < 0 ||
Zbigniew Jędrzejewski-Szmek 62fe94
-                    free_and_copy(&c->x11_options, options) < 0)
Zbigniew Jędrzejewski-Szmek 62fe94
+                if (free_and_strdup(&c->x11_layout, layout) < 0 ||
Zbigniew Jędrzejewski-Szmek 62fe94
+                    free_and_strdup(&c->x11_model, model) < 0 ||
Zbigniew Jędrzejewski-Szmek 62fe94
+                    free_and_strdup(&c->x11_variant, variant) < 0 ||
Zbigniew Jędrzejewski-Szmek 62fe94
+                    free_and_strdup(&c->x11_options, options) < 0)
Zbigniew Jędrzejewski-Szmek 62fe94
                         return -ENOMEM;
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
                 r = write_data_x11(c);
Zbigniew Jędrzejewski-Szmek 62fe94
diff --git a/src/shared/util.c b/src/shared/util.c
Zbigniew Jędrzejewski-Szmek 62fe94
index cf9d487b82..502b3675b1 100644
Zbigniew Jędrzejewski-Szmek 62fe94
--- a/src/shared/util.c
Zbigniew Jędrzejewski-Szmek 62fe94
+++ b/src/shared/util.c
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -4981,24 +4981,6 @@ bool kexec_loaded(void) {
Zbigniew Jędrzejewski-Szmek 62fe94
        return loaded;
Zbigniew Jędrzejewski-Szmek 62fe94
 }
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
-int strdup_or_null(const char *a, char **b) {
Zbigniew Jędrzejewski-Szmek 62fe94
-        char *c;
Zbigniew Jędrzejewski-Szmek 62fe94
-
Zbigniew Jędrzejewski-Szmek 62fe94
-        assert(b);
Zbigniew Jędrzejewski-Szmek 62fe94
-
Zbigniew Jędrzejewski-Szmek 62fe94
-        if (!a) {
Zbigniew Jędrzejewski-Szmek 62fe94
-                *b = NULL;
Zbigniew Jędrzejewski-Szmek 62fe94
-                return 0;
Zbigniew Jędrzejewski-Szmek 62fe94
-        }
Zbigniew Jędrzejewski-Szmek 62fe94
-
Zbigniew Jędrzejewski-Szmek 62fe94
-        c = strdup(a);
Zbigniew Jędrzejewski-Szmek 62fe94
-        if (!c)
Zbigniew Jędrzejewski-Szmek 62fe94
-                return -ENOMEM;
Zbigniew Jędrzejewski-Szmek 62fe94
-
Zbigniew Jędrzejewski-Szmek 62fe94
-        *b = c;
Zbigniew Jędrzejewski-Szmek 62fe94
-        return 0;
Zbigniew Jędrzejewski-Szmek 62fe94
-}
Zbigniew Jędrzejewski-Szmek 62fe94
-
Zbigniew Jędrzejewski-Szmek 62fe94
 int prot_from_flags(int flags) {
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
         switch (flags & O_ACCMODE) {
Zbigniew Jędrzejewski-Szmek 62fe94
diff --git a/src/shared/util.h b/src/shared/util.h
Zbigniew Jędrzejewski-Szmek 62fe94
index 3401280d09..08d556fc92 100644
Zbigniew Jędrzejewski-Szmek 62fe94
--- a/src/shared/util.h
Zbigniew Jędrzejewski-Szmek 62fe94
+++ b/src/shared/util.h
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -583,8 +583,6 @@ int block_get_whole_disk(dev_t d, dev_t *ret);
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
 int file_is_priv_sticky(const char *p);
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
-int strdup_or_null(const char *a, char **b);
Zbigniew Jędrzejewski-Szmek 62fe94
-
Zbigniew Jędrzejewski-Szmek 62fe94
 #define NULSTR_FOREACH(i, l)                                    \
Zbigniew Jędrzejewski-Szmek 62fe94
         for ((i) = (l); (i) && *(i); (i) = strchr((i), 0)+1)
Zbigniew Jędrzejewski-Szmek 62fe94