[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