summaryrefslogtreecommitdiff
path: root/src/basic
diff options
context:
space:
mode:
authorNamhyung Kim <namhyung@gmail.com>2015-08-01 00:23:47 +0900
committerNamhyung Kim <namhyung@gmail.com>2015-08-01 02:16:24 +0900
commitc030a850ba59fbcdf796abfe48b2f220933c52c0 (patch)
tree0b65fe5b4bf9695214412640deaff03f765454ec /src/basic
parent10189fd6be0f547d75bc857860f3ecbbdbc447a6 (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/basic')
-rw-r--r--src/basic/util.c20
-rw-r--r--src/basic/util.h1
2 files changed, 14 insertions, 7 deletions
diff --git a/src/basic/util.c b/src/basic/util.c
index 1c15fbc172..a968e2156d 100644
--- a/src/basic/util.c
+++ b/src/basic/util.c
@@ -115,17 +115,23 @@ size_t page_size(void) {
return pgsz;
}
-bool streq_ptr(const char *a, const char *b) {
-
- /* Like streq(), but tries to make sense of NULL pointers */
+int strcmp_ptr(const char *a, const char *b) {
+ /* Like strcmp(), but tries to make sense of NULL pointers */
if (a && b)
- return streq(a, b);
+ return strcmp(a, b);
- if (!a && !b)
- return true;
+ if (!a && b)
+ return -1;
- return false;
+ if (a && !b)
+ return 1;
+
+ return 0;
+}
+
+bool streq_ptr(const char *a, const char *b) {
+ return strcmp_ptr(a, b) == 0;
}
char* endswith(const char *s, const char *postfix) {
diff --git a/src/basic/util.h b/src/basic/util.h
index c2e5cc610b..05ddf14780 100644
--- a/src/basic/util.h
+++ b/src/basic/util.h
@@ -71,6 +71,7 @@ size_t page_size(void) _pure_;
#define strncaseeq(a, b, n) (strncasecmp((a), (b), (n)) == 0)
bool streq_ptr(const char *a, const char *b) _pure_;
+int strcmp_ptr(const char *a, const char *b) _pure_;
#define new(t, n) ((t*) malloc_multiply(sizeof(t), (n)))