From a75c230f0b36bc16a2d36e4321ebbdb82a25cc9b Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 25 Mar 2014 15:28:04 +0000 Subject: compilation fix for Miranda IM git-svn-id: http://svn.miranda-ng.org/main/trunk@8741 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/PluginUpdater/src/Compat/compat.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'plugins/PluginUpdater/src') diff --git a/plugins/PluginUpdater/src/Compat/compat.h b/plugins/PluginUpdater/src/Compat/compat.h index 8e3d152126..6afc901e17 100644 --- a/plugins/PluginUpdater/src/Compat/compat.h +++ b/plugins/PluginUpdater/src/Compat/compat.h @@ -121,3 +121,26 @@ __forceinline INT_PTR CreateDirectoryTreeT(const TCHAR *ptszPath) int __forceinline PUDeletePopup(HWND hWndPopup) { return (int)SendMessage(hWndPopup, UM_DESTROYPOPUP, 0, 0); } + +#define _qtoupper(_c) (((_c) >= 'a' && (_c) <= 'z')?((_c)-('a'+'A')):(_c)) + +int __forceinline wildcmpit(const WCHAR *name, const WCHAR *mask) +{ + if (name == NULL || mask == NULL) + return false; + + const WCHAR* last = NULL; + for (;; mask++, name++) { + if (*mask != '?' && _qtoupper(*mask) != _qtoupper(*name)) break; + if (*name == '\0') return ((BOOL)!*mask); + } + if (*mask != '*') return FALSE; + for (;; mask++, name++) { + while(*mask == '*') { + last = mask++; + if (*mask == '\0') return ((BOOL)!*mask); /* true */ + } + if (*name == '\0') return ((BOOL)!*mask); /* *mask == EOS */ + if (*mask != '?' && _qtoupper(*mask) != _qtoupper(*name)) name -= (size_t)(mask - last) - 1, mask = last; + } +} -- cgit v1.2.3