summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2023-03-06 21:37:29 +0200
committerTimo Teräs <timo.teras@iki.fi>2023-03-06 21:39:48 +0200
commit42141acc64f4e3be596a6a4a239aba4a78420588 (patch)
tree3d14db9c2bc0c7532e2805c649699f6507e715b9
parentbd3e2be64d1118cb07ec1ecd82ca4abd2ad9ae96 (diff)
downloadapk-tools-42141acc64f4e3be596a6a4a239aba4a78420588.tar.gz
apk-tools-42141acc64f4e3be596a6a4a239aba4a78420588.tar.bz2
apk-tools-42141acc64f4e3be596a6a4a239aba4a78420588.tar.xz
apk-tools-42141acc64f4e3be596a6a4a239aba4a78420588.zip
db: case insensitive searches
fixes #10871
-rw-r--r--src/apk_database.h2
-rw-r--r--src/app_search.c4
-rw-r--r--src/database.c2
3 files changed, 4 insertions, 4 deletions
diff --git a/src/apk_database.h b/src/apk_database.h
index 42f465d..0539ab8 100644
--- a/src/apk_database.h
+++ b/src/apk_database.h
@@ -192,7 +192,7 @@ typedef union apk_database_or_void {
} apk_database_t __attribute__ ((__transparent_union__));
static inline int apk_name_cmp_display(const struct apk_name *a, const struct apk_name *b) {
- return strcmp(a->name, b->name);
+ return strcasecmp(a->name, b->name) ?: strcmp(a->name, b->name);
}
struct apk_provider_array *apk_name_sorted_providers(struct apk_name *);
diff --git a/src/app_search.c b/src/app_search.c
index 1dcb7b6..ab51d6d 100644
--- a/src/app_search.c
+++ b/src/app_search.c
@@ -118,8 +118,8 @@ static void print_result_pkg(struct search_ctx *ctx, struct apk_package *pkg)
if (ctx->search_description) {
foreach_array_item(pmatch, ctx->filter) {
- if (fnmatch(*pmatch, pkg->description, 0) == 0 ||
- fnmatch(*pmatch, pkg->name->name, 0) == 0)
+ if (fnmatch(*pmatch, pkg->description, FNM_CASEFOLD) == 0 ||
+ fnmatch(*pmatch, pkg->name->name, FNM_CASEFOLD) == 0)
goto match;
}
return;
diff --git a/src/database.c b/src/database.c
index e8865b1..bc25683 100644
--- a/src/database.c
+++ b/src/database.c
@@ -3123,7 +3123,7 @@ static int apk_string_match(const char *str, struct apk_string_array *filter, co
char **pmatch;
foreach_array_item(pmatch, filter) {
- if (fnmatch(*pmatch, str, 0) == 0) {
+ if (fnmatch(*pmatch, str, FNM_CASEFOLD) == 0) {
*res = *pmatch;
return 1;
}