From adac2883769eee376169c686f1dbf48f9e8d1713 Mon Sep 17 00:00:00 2001 From: Edward Thomson Date: Thu, 30 Oct 2025 15:32:26 -0700 Subject: [PATCH] str: add case insensitive suffixcmp --- src/util/util.c | 17 +++++++++++++++-- src/util/util.h | 1 + 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/util/util.c b/src/util/util.c index e86bceeb5..3e4d93443 100644 --- a/src/util/util.c +++ b/src/util/util.c @@ -269,13 +269,26 @@ int git__prefixncmp_icase(const char *str, size_t str_n, const char *prefix) return prefixcmp(str, str_n, prefix, true); } -int git__suffixcmp(const char *str, const char *suffix) +static int suffixcmp(const char *str, const char *suffix, bool icase) { size_t a = strlen(str); size_t b = strlen(suffix); + if (a < b) return -1; - return strcmp(str + (a - b), suffix); + + return icase ? strcasecmp(str + (a - b), suffix) : + strcmp(str + (a - b), suffix); +} + +int git__suffixcmp(const char *str, const char *suffix) +{ + return suffixcmp(str, suffix, false); +} + +int git__suffixcmp_icase(const char *str, const char *suffix) +{ + return suffixcmp(str, suffix, true); } char *git__strtok(char **end, const char *sep) diff --git a/src/util/util.h b/src/util/util.h index 7053a9d49..d3cbbf4dd 100644 --- a/src/util/util.h +++ b/src/util/util.h @@ -57,6 +57,7 @@ extern int git__prefixcmp_icase(const char *str, const char *prefix); extern int git__prefixncmp(const char *str, size_t str_n, const char *prefix); extern int git__prefixncmp_icase(const char *str, size_t str_n, const char *prefix); extern int git__suffixcmp(const char *str, const char *suffix); +extern int git__suffixcmp_icase(const char *str, const char *suffix); GIT_INLINE(int) git__signum(int val) {