diff options
author | Namhyung Kim <namhyung@gmail.com> | 2015-08-01 00:23:47 +0900 |
---|---|---|
committer | Namhyung Kim <namhyung@gmail.com> | 2015-08-01 02:16:24 +0900 |
commit | c030a850ba59fbcdf796abfe48b2f220933c52c0 (patch) | |
tree | 0b65fe5b4bf9695214412640deaff03f765454ec /src/libsystemd | |
parent | 10189fd6be0f547d75bc857860f3ecbbdbc447a6 (diff) |
busctl: add and use strcmp_ptr()
In member_compare_func(), it compares interface, type and name of
members. But as it can contain NULL pointer, it needs to check them
before calling strcmp(). So make it as a separate strcmp_ptr
function (named after streq_ptr) so that it can be used by others.
Also let streq_ptr() to use it in order to make the code simpler.
Diffstat (limited to 'src/libsystemd')
-rw-r--r-- | src/libsystemd/sd-bus/busctl.c | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/src/libsystemd/sd-bus/busctl.c b/src/libsystemd/sd-bus/busctl.c index 6aaaf0e5ec..2f4d977d72 100644 --- a/src/libsystemd/sd-bus/busctl.c +++ b/src/libsystemd/sd-bus/busctl.c @@ -656,28 +656,15 @@ static int member_compare_func(const void *a, const void *b) { assert(x->type); assert(y->type); - if (!x->interface && y->interface) - return -1; - if (x->interface && !y->interface) - return 1; - if (x->interface && y->interface) { - d = strcmp(x->interface, y->interface); - if (d != 0) - return d; - } + d = strcmp_ptr(x->interface, y->interface); + if (d != 0) + return d; d = strcmp(x->type, y->type); if (d != 0) return d; - if (!x->name && y->name) - return -1; - if (x->name && !y->name) - return 1; - if (x->name && y->name) - return strcmp(x->name, y->name); - - return 0; + return strcmp_ptr(x->name, y->name); } static int member_compare_funcp(const void *a, const void *b) { |