*/
bool str_endswith(const char *const string, const char *const suffix);
+/**
+ * str_endswith_ignore_case - indicate whether a string ends with a given suffix
+ * @string: string to test
+ * @suffix: suffix to expect in string
+ *
+ * If suffix is "" or NULL, this method always returns true; otherwise, this
+ * method returns true if and only if the full suffix exists at the end of the
+ * string.
+ */
+bool str_endswith_ignore_case(const char *const string, const char *const suffix);
+
/**
* str_starts_with - indicate whether a string starts with a given character
* @string: string to test
#include <assert.h>
#include <ctype.h>
#include <stdarg.h>
+#include <stdint.h>
#include <stdio.h>
#include <string.h>
+#include <strings.h>
#include "common/mem.h"
#include "common/string-helpers.h"
+enum str_flags {
+ STR_FLAG_NONE = 0,
+ STR_FLAG_IGNORE_CASE,
+};
+
bool
string_null_or_empty(const char *s)
{
return buf;
}
-bool
-str_endswith(const char *const string, const char *const suffix)
+static bool
+_str_endswith(const char *const string, const char *const suffix, uint32_t flags)
{
size_t len_str = string ? strlen(string) : 0;
size_t len_sfx = suffix ? strlen(suffix) : 0;
return true;
}
- return strcmp(string + len_str - len_sfx, suffix) == 0;
+ if (flags & STR_FLAG_IGNORE_CASE) {
+ return strcasecmp(string + len_str - len_sfx, suffix) == 0;
+ } else {
+ return strcmp(string + len_str - len_sfx, suffix) == 0;
+ }
+}
+
+bool
+str_endswith(const char *const string, const char *const suffix)
+{
+ return _str_endswith(string, suffix, STR_FLAG_NONE);
+}
+
+bool
+str_endswith_ignore_case(const char *const string, const char *const suffix)
+{
+ return _str_endswith(string, suffix, STR_FLAG_IGNORE_CASE);
}
bool