diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/printf_test.c | 14 | ||||
-rw-r--r-- | lib/string.h | 9 |
2 files changed, 23 insertions, 0 deletions
diff --git a/lib/printf_test.c b/lib/printf_test.c index 10d284ac..341fde9c 100644 --- a/lib/printf_test.c +++ b/lib/printf_test.c @@ -89,6 +89,19 @@ t_time(void) return 1; } +static int +t_bstrcmp(void) +{ + bt_assert(bstrcmp("aa", "aa") == 0); + bt_assert(bstrcmp("aa", "bb") == -1); + bt_assert(bstrcmp("bb", "aa") == 1); + bt_assert(bstrcmp(NULL, NULL) == 0); + bt_assert(bstrcmp(NULL, "bb") == -1); + bt_assert(bstrcmp("bb", NULL) == 1); + + return 1; +} + int main(int argc, char *argv[]) { @@ -97,6 +110,7 @@ main(int argc, char *argv[]) bt_test_suite(t_simple, "printf without varargs"); bt_test_suite(t_router_id, "print router id"); bt_test_suite(t_time, "print time"); + bt_test_suite(t_bstrcmp, "bstrcmp"); return bt_exit_value(); } diff --git a/lib/string.h b/lib/string.h index 0d34f9c5..bd4fd2a0 100644 --- a/lib/string.h +++ b/lib/string.h @@ -60,6 +60,15 @@ memset32(void *D, u32 val, uint n) dst[i] = val; } +static inline int +bstrcmp(const char *s1, const char *s2) +{ + if (s1 && s2) + return strcmp(s1, s2); + else + return !s2 - !s1; +} + #define ROUTER_ID_64_LENGTH 23 #endif |