[systemd-commits] 2 commits - src/core src/libsystemd-bus src/shared

Lennart Poettering lennart at kemper.freedesktop.org
Sun Jan 12 03:42:59 PST 2014


 src/core/manager.c                    |   16 +++++++++++++
 src/libsystemd-bus/test-bus-marshal.c |    9 ++++---
 src/shared/env-util.c                 |   39 +++++++++++++++++++++++++++++++++-
 src/shared/env-util.h                 |    1 
 4 files changed, 59 insertions(+), 6 deletions(-)

New commits:
commit 43d03a83766a0d63f535e2afa6aeb6e6acbe83b2
Author: Lennart Poettering <lennart at poettering.net>
Date:   Sun Jan 12 19:39:56 2014 +0800

    core: clean up environment block for --user instances a bit

diff --git a/src/core/manager.c b/src/core/manager.c
index a80d6a1..91c3d59 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -348,11 +348,25 @@ static int manager_default_environment(Manager *m) {
 
                 /* Import locale variables LC_*= from configuration */
                 locale_setup(&m->environment);
-        } else
+        } else {
                 /* The user manager passes its own environment
                  * along to its children. */
                 m->environment = strv_copy(environ);
 
+                /* Let's remove some environment variables that we
+                 * need ourselves to communicate with our clients */
+                strv_env_unset_many(
+                                m->environment,
+                                "NOTIFY_SOCKET",
+                                "MAINPID",
+                                "MANAGERPID",
+                                "LISTEN_PID",
+                                "LISTEN_FDS",
+                                "WATCHDOG_PID",
+                                "WATCHDOG_USEC",
+                                NULL);
+        }
+
         if (!m->environment)
                 return -ENOMEM;
 
diff --git a/src/shared/env-util.c b/src/shared/env-util.c
index 7976881..b2e4553 100644
--- a/src/shared/env-util.c
+++ b/src/shared/env-util.c
@@ -310,7 +310,7 @@ char **strv_env_unset(char **l, const char *p) {
         assert(p);
 
         /* Drops every occurrence of the env var setting p in the
-         * string list. edits in-place. */
+         * string list. Edits in-place. */
 
         for (f = t = l; *f; f++) {
 
@@ -326,6 +326,43 @@ char **strv_env_unset(char **l, const char *p) {
         return l;
 }
 
+char **strv_env_unset_many(char **l, ...) {
+
+        char **f, **t;
+
+        if (!l)
+                return NULL;
+
+        /* Like strv_env_unset() but applies many at once. Edits in-place. */
+
+        for (f = t = l; *f; f++) {
+                bool found = false;
+                const char *p;
+                va_list ap;
+
+                va_start(ap, l);
+
+                while ((p = va_arg(ap, const char*))) {
+                        if (env_match(*f, p)) {
+                                found = true;
+                                break;
+                        }
+                }
+
+                va_end(ap);
+
+                if (found) {
+                        free(*f);
+                        continue;
+                }
+
+                *(t++) = *f;
+        }
+
+        *t = NULL;
+        return l;
+}
+
 char **strv_env_set(char **x, const char *p) {
 
         char **k, **r;
diff --git a/src/shared/env-util.h b/src/shared/env-util.h
index 8d2114b..c0b1e38 100644
--- a/src/shared/env-util.h
+++ b/src/shared/env-util.h
@@ -39,6 +39,7 @@ char **strv_env_delete(char **x, unsigned n_lists, ...); /* New copy */
 
 char **strv_env_set(char **x, const char *p); /* New copy ... */
 char **strv_env_unset(char **l, const char *p); /* In place ... */
+char **strv_env_unset_many(char **l, ...) _sentinel_;
 
 char *strv_env_get_n(char **l, const char *name, size_t k) _pure_;
 char *strv_env_get(char **x, const char *n) _pure_;

commit d44fdf4954e3611e6fcd9b637763664b2574af6e
Author: Lennart Poettering <lennart at poettering.net>
Date:   Sun Jan 12 19:15:29 2014 +0800

    bus: add test case for signature type

diff --git a/src/libsystemd-bus/test-bus-marshal.c b/src/libsystemd-bus/test-bus-marshal.c
index 317e3a7..4fad049 100644
--- a/src/libsystemd-bus/test-bus-marshal.c
+++ b/src/libsystemd-bus/test-bus-marshal.c
@@ -65,7 +65,7 @@ static void test_bus_label_escape(void) {
 int main(int argc, char *argv[]) {
         _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *copy = NULL;
         int r, boolean;
-        const char *x, *x2, *y, *z, *a, *b, *c, *d;
+        const char *x, *x2, *y, *z, *a, *b, *c, *d, *a_signature;
         uint8_t u, v;
         void *buffer = NULL;
         size_t sz;
@@ -85,7 +85,7 @@ int main(int argc, char *argv[]) {
         r = sd_bus_message_append(m, "s", NULL);
         assert_se(r >= 0);
 
-        r = sd_bus_message_append(m, "as", 2, "string #1", "string #2");
+        r = sd_bus_message_append(m, "asg", 2, "string #1", "string #2", "sba(tt)ss");
         assert_se(r >= 0);
 
         r = sd_bus_message_append(m, "sass", "foobar", 5, "foo", "bar", "waldo", "piep", "pap", "after");
@@ -187,12 +187,13 @@ int main(int argc, char *argv[]) {
 
         assert_se(sd_bus_message_rewind(m, true) >= 0);
 
-        r = sd_bus_message_read(m, "ssas", &x, &x2, 2, &y, &z);
+        r = sd_bus_message_read(m, "ssasg", &x, &x2, 2, &y, &z, &a_signature);
         assert_se(r > 0);
         assert_se(streq(x, "a string"));
         assert_se(streq(x2, ""));
         assert_se(streq(y, "string #1"));
         assert_se(streq(z, "string #2"));
+        assert_se(streq(a_signature, "sba(tt)ss"));
 
         r = sd_bus_message_read(m, "sass", &x, 5, &y, &z, &a, &b, &c, &d);
         assert_se(r > 0);
@@ -273,7 +274,7 @@ int main(int argc, char *argv[]) {
 
         assert_se(sd_bus_message_verify_type(m, 's', NULL) > 0);
 
-        r = sd_bus_message_skip(m, "ssas");
+        r = sd_bus_message_skip(m, "ssasg");
         assert_se(r > 0);
 
         assert_se(sd_bus_message_verify_type(m, 's', NULL) > 0);



More information about the systemd-commits mailing list