From bcb695a716bf28691ac21f6faa56e93fd3210486 Mon Sep 17 00:00:00 2001 From: Jani Nikula Date: Fri, 25 Sep 2015 19:48:19 +0300 Subject: [PATCH] util: add strcmp_null, a strcmp that handles NULL parameters Add strcmp_null, a strcmp that handles NULL strings; in strcmp terms a NULL string is considered to be less than a non-NULL string. --- util/string-util.c | 13 +++++++++++++ util/string-util.h | 5 +++++ 2 files changed, 18 insertions(+) diff --git a/util/string-util.c b/util/string-util.c index 76c0b902..92af937f 100644 --- a/util/string-util.c +++ b/util/string-util.c @@ -222,6 +222,19 @@ parse_boolean_term (void *ctx, const char *str, return -1; } +int +strcmp_null (const char *s1, const char *s2) +{ + if (s1 && s2) + return strcmp (s1, s2); + else if (! s1 && ! s2) + return 0; + else if (s1) + return 1; /* s1 (non-NULL) is greater than s2 (NULL) */ + else + return -1; /* s1 (NULL) is less than s2 (non-NULL) */ +} + int strcase_equal (const void *a, const void *b) { diff --git a/util/string-util.h b/util/string-util.h index 80d24d1c..87917b8f 100644 --- a/util/string-util.h +++ b/util/string-util.h @@ -64,6 +64,11 @@ int parse_boolean_term (void *ctx, const char *str, char **prefix_out, char **term_out); +/* strcmp that handles NULL strings; in strcmp terms a NULL string is + * considered to be less than a non-NULL string. + */ +int strcmp_null (const char *s1, const char *s2); + /* GLib GEqualFunc compatible strcasecmp wrapper */ int strcase_equal (const void *a, const void *b);