--- ./src/poolvendor.c	2025-09-10 13:03:21.232144888 -0500
+++ ./src/poolvendor.c_orig	2025-09-10 13:02:11.752154748 -0500
@@ -65,7 +65,7 @@
 	    break;	/* sorry, out of bits */
 	  m <<= 1;	/* next vendor equivalence class */
 	}
-      if (fnmatch(*vs == '!' ? vs + 1 : vs, vstr, FNM_CASEFOLD) == 0)
+      if (fnmatch(*vs == '!' ? vs + 1 : vs, vstr, 0) == 0)
 	{
 	  if (*vs != '!')
 	    mask |= m;

--- ./src/repodata.c_orig	2025-09-10 13:04:34.527291798 -0500
+++ ./src/repodata.c	2025-09-10 13:09:13.236793728 -0500
@@ -42,6 +42,21 @@
 
 static unsigned char *data_skip_key(Repodata *data, unsigned char *dp, Repokey *key);
 
+#ifndef HAVE_STRCASESTR
+const char *strcasestr(const char *a, const char *b)
+{
+   size_t l;
+   char f[3];
+
+   snprintf(f, sizeof(f), "%c%c", tolower(*b), toupper(*b));
+   for (l = strcspn(a, f); l != strlen(a); l += strcspn(a + l + 1, f) + 1)
+       if (strncasecmp(a + l, b, strlen(b)) == 0)
+          return(a + l);
+       return(NULL);
+   }
+#endif
+
+
 void
 repodata_initdata(Repodata *data, Repo *repo, int localpool)
 {
@@ -1468,7 +1483,7 @@
       else
 	return !strcmp(ma->match, str + l);
     case SEARCH_GLOB:
-      return !fnmatch(ma->match, str, (ma->flags & SEARCH_NOCASE) ? FNM_CASEFOLD : 0);
+      return !fnmatch(ma->match, str, (ma->flags & SEARCH_NOCASE) ? 0 : 0);
     case SEARCH_REGEX:
       return !regexec((const regex_t *)ma->matchdata, str, 0, NULL, 0);
     default:

--- ./src/selection.c_orig	2025-09-10 13:09:59.219484951 -0500
+++ ./src/selection.c	2025-09-10 13:12:26.452142814 -0500
@@ -503,7 +503,7 @@
 
   nocase = flags & SELECTION_NOCASE;
   doglob = (flags & SELECTION_GLOB) != 0 && strpbrk(name, "[*?") != 0;
-  globflags = doglob && nocase ? FNM_CASEFOLD : 0;
+  globflags = doglob && nocase ? 0 : 0;
 
   FOR_POOL_SOLVABLES(p)
     {
@@ -626,7 +626,7 @@
 
   /* looks like a glob or nocase match. really hard work. */
   match = 0;
-  globflags = doglob && nocase ? FNM_CASEFOLD : 0;
+  globflags = doglob && nocase ? 0 : 0;
   for (id = 1; id < pool->ss.nstrings; id++)
     {
       /* do we habe packages providing this id? */
@@ -783,7 +783,7 @@
 
   /* do a name match over all packages. hard work. */
   match = 0;
-  globflags = doglob && nocase ? FNM_CASEFOLD : 0;
+  globflags = doglob && nocase ? 0 : 0;
   FOR_POOL_SOLVABLES(p)
     {
       Solvable *s = pool->solvables + p;
@@ -1404,7 +1404,7 @@
     return 0;
   if (flags & SELECTION_GLOB)
     {
-      int globflags = (flags & SELECTION_NOCASE) != 0 ? FNM_CASEFOLD : 0;
+      int globflags = (flags & SELECTION_NOCASE) != 0 ? 0 : 0;
       return fnmatch(pattern, string, globflags) == 0 ? 1 : 0;
     }
   if (flags & SELECTION_NOCASE)
