diff options
author | Lennart Poettering <lennart@poettering.net> | 2013-11-19 21:12:59 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2013-11-20 20:52:36 +0100 |
commit | 718db96199eb307751264e4163555662c9a389fa (patch) | |
tree | 9ec8467596ba1acba76bb6273c7797baf68c1a00 /src/libsystemd-bus/bus-signature.c | |
parent | 3febea3a0b0a968ea281e7959c1654cbaf95c9bf (diff) |
core: convert PID 1 to libsystemd-bus
This patch converts PID 1 to libsystemd-bus and thus drops the
dependency on libdbus. The only remaining code using libdbus is a test
case that validates our bus marshalling against libdbus' marshalling,
and this dependency can be turned off.
This patch also adds a couple of things to libsystem-bus, that are
necessary to make the port work:
- Synthesizing of "Disconnected" messages when bus connections are
severed.
- Support for attaching multiple vtables for the same interface on the
same path.
This patch also fixes the SetDefaultTarget() and GetDefaultTarget() bus
calls which used an inappropriate signature.
As a side effect we will now generate PropertiesChanged messages which
carry property contents, rather than just invalidation information.
Diffstat (limited to 'src/libsystemd-bus/bus-signature.c')
-rw-r--r-- | src/libsystemd-bus/bus-signature.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/libsystemd-bus/bus-signature.c b/src/libsystemd-bus/bus-signature.c index 35c054baf6..1e5bf4821d 100644 --- a/src/libsystemd-bus/bus-signature.c +++ b/src/libsystemd-bus/bus-signature.c @@ -33,7 +33,10 @@ static int signature_element_length_internal( int r; - assert(s); + if (!s) + return -EINVAL; + + assert(l); if (bus_type_is_basic(*s) || *s == SD_BUS_TYPE_VARIANT) { *l = 1; @@ -114,7 +117,8 @@ bool signature_is_single(const char *s, bool allow_dict_entry) { int r; size_t t; - assert(s); + if (!s) + return false; r = signature_element_length_internal(s, allow_dict_entry, 0, 0, &t); if (r < 0) @@ -124,7 +128,9 @@ bool signature_is_single(const char *s, bool allow_dict_entry) { } bool signature_is_pair(const char *s) { - assert(s); + + if (!s) + return false; if (!bus_type_is_basic(*s)) return false; @@ -136,7 +142,8 @@ bool signature_is_valid(const char *s, bool allow_dict_entry) { const char *p; int r; - assert(s); + if (!s) + return false; p = s; while (*p) { |