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.
This commit is contained in:
Jani Nikula 2015-09-25 19:48:19 +03:00 committed by David Bremner
parent 23b8ed610a
commit bcb695a716
2 changed files with 18 additions and 0 deletions

View file

@ -222,6 +222,19 @@ parse_boolean_term (void *ctx, const char *str,
return -1; 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 int
strcase_equal (const void *a, const void *b) strcase_equal (const void *a, const void *b)
{ {

View file

@ -64,6 +64,11 @@ int
parse_boolean_term (void *ctx, const char *str, parse_boolean_term (void *ctx, const char *str,
char **prefix_out, char **term_out); 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 */ /* GLib GEqualFunc compatible strcasecmp wrapper */
int strcase_equal (const void *a, const void *b); int strcase_equal (const void *a, const void *b);