diff options
author | Lennart Poettering <lennart@poettering.net> | 2014-11-28 19:16:37 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2014-11-28 20:29:44 +0100 |
commit | 198b158f4941b817f26f8eb0ff75809bf5436496 (patch) | |
tree | 22672296fa38696687a99fd701cebda86b5e8555 /src/libsystemd/sd-bus/test-bus-match.c | |
parent | d9fba533169b271d0e803016fea86fb57bc3f5ca (diff) |
sd-bus: add support for matches against arrays of strings in messages
Diffstat (limited to 'src/libsystemd/sd-bus/test-bus-match.c')
-rw-r--r-- | src/libsystemd/sd-bus/test-bus-match.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/libsystemd/sd-bus/test-bus-match.c b/src/libsystemd/sd-bus/test-bus-match.c index 6c5d35b3d3..7133117038 100644 --- a/src/libsystemd/sd-bus/test-bus-match.c +++ b/src/libsystemd/sd-bus/test-bus-match.c @@ -33,8 +33,9 @@ static bool mask[32]; static int filter(sd_bus *b, sd_bus_message *m, void *userdata, sd_bus_error *ret_error) { - log_info("Ran %i", PTR_TO_INT(userdata)); - mask[PTR_TO_INT(userdata)] = true; + log_info("Ran %u", PTR_TO_UINT(userdata)); + assert(PTR_TO_UINT(userdata) < ELEMENTSOF(mask)); + mask[PTR_TO_UINT(userdata)] = true; return 0; } @@ -85,9 +86,9 @@ int main(int argc, char *argv[]) { }; _cleanup_bus_message_unref_ sd_bus_message *m = NULL; - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; enum bus_match_node_type i; - sd_bus_slot slots[15]; + sd_bus_slot slots[19]; int r; r = sd_bus_open_system(&bus); @@ -108,16 +109,20 @@ int main(int argc, char *argv[]) { assert_se(match_add(slots, &root, "arg1='two'", 12) >= 0); assert_se(match_add(slots, &root, "member='waldo',arg2path='/prefix/'", 13) >= 0); assert_se(match_add(slots, &root, "member=waldo,path='/foo/bar',arg3namespace='prefix'", 14) >= 0); + assert_se(match_add(slots, &root, "arg4='pi'", 15) >= 0); + assert_se(match_add(slots, &root, "arg4='pa'", 16) >= 0); + assert_se(match_add(slots, &root, "arg4='po'", 17) >= 0); + assert_se(match_add(slots, &root, "arg4='pu'", 18) >= 0); bus_match_dump(&root, 0); assert_se(sd_bus_message_new_signal(bus, &m, "/foo/bar", "bar.x", "waldo") >= 0); - assert_se(sd_bus_message_append(m, "ssss", "one", "two", "/prefix/three", "prefix.four") >= 0); + assert_se(sd_bus_message_append(m, "ssssas", "one", "two", "/prefix/three", "prefix.four", 3, "pi", "pa", "po") >= 0); assert_se(bus_message_seal(m, 1, 0) >= 0); zero(mask); assert_se(bus_match_run(NULL, &root, m) == 0); - assert_se(mask_contains((unsigned[]) { 9, 8, 7, 5, 10, 12, 13, 14 }, 8)); + assert_se(mask_contains((unsigned[]) { 9, 8, 7, 5, 10, 12, 13, 14, 15, 16, 17 }, 11)); assert_se(bus_match_remove(&root, &slots[8].match_callback) >= 0); assert_se(bus_match_remove(&root, &slots[13].match_callback) >= 0); @@ -126,7 +131,7 @@ int main(int argc, char *argv[]) { zero(mask); assert_se(bus_match_run(NULL, &root, m) == 0); - assert_se(mask_contains((unsigned[]) { 9, 5, 10, 12, 14, 7 }, 6)); + assert_se(mask_contains((unsigned[]) { 9, 5, 10, 12, 14, 7, 15, 16, 17 }, 9)); for (i = 0; i < _BUS_MATCH_NODE_TYPE_MAX; i++) { char buf[32]; |