Module: wine Branch: master Commit: e14f3c40cdf4eb638951c12396f94a9a0919d71e URL: https://source.winehq.org/git/wine.git/?a=commit;h=e14f3c40cdf4eb638951c1239...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Oct 1 09:36:17 2021 +0200
winemenubuilder: Use PathMatchSpec() instead of fnmatch().
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
configure | 2 -- configure.ac | 2 -- include/config.h.in | 6 ---- programs/winemenubuilder/winemenubuilder.c | 49 +++++------------------------- 4 files changed, 8 insertions(+), 51 deletions(-)
diff --git a/configure b/configure index eca83982196..038391a4439 100755 --- a/configure +++ b/configure @@ -7481,7 +7481,6 @@ for ac_header in \ dlfcn.h \ elf.h \ float.h \ - fnmatch.h \ getopt.h \ gettext-po.h \ grp.h \ @@ -17902,7 +17901,6 @@ for ac_func in \ __res_getservers \ _spawnvp \ epoll_create \ - fnmatch \ fork \ fstatfs \ futimens \ diff --git a/configure.ac b/configure.ac index 7ed1e73eb6d..da80562c445 100644 --- a/configure.ac +++ b/configure.ac @@ -450,7 +450,6 @@ AC_CHECK_HEADERS(\ dlfcn.h \ elf.h \ float.h \ - fnmatch.h \ getopt.h \ gettext-po.h \ grp.h \ @@ -2132,7 +2131,6 @@ AC_CHECK_FUNCS(\ __res_getservers \ _spawnvp \ epoll_create \ - fnmatch \ fork \ fstatfs \ futimens \ diff --git a/include/config.h.in b/include/config.h.in index dac43f7840e..80cc9c3a47f 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -96,12 +96,6 @@ /* Define to 1 if you have the <float.h> header file. */ #undef HAVE_FLOAT_H
-/* Define to 1 if you have the `fnmatch' function. */ -#undef HAVE_FNMATCH - -/* Define to 1 if you have the <fnmatch.h> header file. */ -#undef HAVE_FNMATCH_H - /* Define to 1 if you have the <fontconfig/fontconfig.h> header file. */ #undef HAVE_FONTCONFIG_FONTCONFIG_H
diff --git a/programs/winemenubuilder/winemenubuilder.c b/programs/winemenubuilder/winemenubuilder.c index 06f3cb50705..a4f1ee26e9c 100644 --- a/programs/winemenubuilder/winemenubuilder.c +++ b/programs/winemenubuilder/winemenubuilder.c @@ -73,9 +73,6 @@ #endif #include <errno.h> #include <stdarg.h> -#ifdef HAVE_FNMATCH_H -#include <fnmatch.h> -#endif
#define COBJMACROS #define NONAMELESSUNION @@ -181,7 +178,6 @@ struct xdg_mime_type { char *mimeType; char *glob; - char *lower_glob; struct list entry; };
@@ -1936,7 +1932,7 @@ static BOOL add_mimes(const char *xdg_data_dir, struct list *mime_types) int size = 0; while (ret && (ret = next_line(globs_file, &line, &size)) && line) { - char *pos, *l; + char *pos; struct xdg_mime_type *mime_type_entry = NULL; if (line[0] != '#' && (pos = strchr(line, ':'))) { @@ -1944,9 +1940,6 @@ static BOOL add_mimes(const char *xdg_data_dir, struct list *mime_types) *pos = 0; mime_type_entry->mimeType = xstrdup(line); mime_type_entry->glob = xstrdup(pos + 1); - mime_type_entry->lower_glob = xstrdup(pos + 1); - for (l = mime_type_entry->lower_glob; *l; l++) - *l = tolower(*l); list_add_tail(mime_types, &mime_type_entry->entry); } } @@ -1965,7 +1958,6 @@ static void free_native_mime_types(struct list *native_mime_types) { list_remove(&mime_type_entry->entry); heap_free(mime_type_entry->glob); - heap_free(mime_type_entry->lower_glob); heap_free(mime_type_entry->mimeType); heap_free(mime_type_entry); } @@ -2005,10 +1997,11 @@ static BOOL build_native_mime_types(const char *xdg_data_home, struct list *mime return ret; }
-static BOOL match_glob(struct list *native_mime_types, const char *extension, - int ignoreGlobCase, char **match) +static BOOL freedesktop_mime_type_for_extension(struct list *native_mime_types, + const char *extensionA, + LPCWSTR extensionW, + char **match) { -#ifdef HAVE_FNMATCH struct xdg_mime_type *mime_type_entry; int matchLength = 0;
@@ -2016,46 +2009,20 @@ static BOOL match_glob(struct list *native_mime_types, const char *extension,
LIST_FOR_EACH_ENTRY(mime_type_entry, native_mime_types, struct xdg_mime_type, entry) { - const char *glob = ignoreGlobCase ? mime_type_entry->lower_glob : mime_type_entry->glob; - if (fnmatch(glob, extension, 0) == 0) + if (PathMatchSpecA( extensionA, mime_type_entry->glob )) { - if (*match == NULL || matchLength < strlen(glob)) + if (*match == NULL || matchLength < strlen(mime_type_entry->glob)) { *match = mime_type_entry->mimeType; - matchLength = strlen(glob); + matchLength = strlen(mime_type_entry->glob); } } }
if (*match != NULL) *match = xstrdup(*match); -#else - *match = NULL; -#endif return TRUE; }
-static BOOL freedesktop_mime_type_for_extension(struct list *native_mime_types, - const char *extensionA, - LPCWSTR extensionW, - char **mime_type) -{ - WCHAR *lower_extensionW; - char *lower_extensionA; - INT len; - BOOL ret = match_glob(native_mime_types, extensionA, 0, mime_type); - if (ret == FALSE || *mime_type != NULL) - return ret; - len = strlenW(extensionW); - lower_extensionW = xmalloc((len + 1)*sizeof(WCHAR)); - memcpy(lower_extensionW, extensionW, (len + 1)*sizeof(WCHAR)); - strlwrW(lower_extensionW); - lower_extensionA = wchars_to_utf8_chars(lower_extensionW); - ret = match_glob(native_mime_types, lower_extensionA, 1, mime_type); - heap_free(lower_extensionA); - heap_free(lower_extensionW); - return ret; -} - static WCHAR* reg_get_valW(HKEY key, LPCWSTR subkey, LPCWSTR name) { DWORD size;