[PATCH 12/26] [DbgHelp]: implemented SymMatchFileNameW
Eric Pouech
eric.pouech at wanadoo.fr
Wed Feb 21 14:55:30 CST 2007
A+
---
dlls/dbghelp/dbghelp.spec | 2 +-
dlls/dbghelp/path.c | 29 +++++++++++++++++++++++++++++
include/dbghelp.h | 1 +
3 files changed, 31 insertions(+), 1 deletions(-)
diff --git a/dlls/dbghelp/dbghelp.spec b/dlls/dbghelp/dbghelp.spec
index a91415e..174341c 100644
--- a/dlls/dbghelp/dbghelp.spec
+++ b/dlls/dbghelp/dbghelp.spec
@@ -119,7 +119,7 @@
@ stdcall SymLoadModuleEx(long long str str double long ptr long)
@ stdcall SymLoadModuleExW(long long wstr wstr double long ptr long)
@ stdcall SymMatchFileName(str str ptr ptr)
-@ stub SymMatchFileNameW
+@ stdcall SymMatchFileNameW(wstr wstr ptr ptr)
@ stdcall SymMatchString(str str long)
@ stub SymMatchStringA
@ stub SymMatchStringW
diff --git a/dlls/dbghelp/path.c b/dlls/dbghelp/path.c
index cfea315..c900c2c 100644
--- a/dlls/dbghelp/path.c
+++ b/dlls/dbghelp/path.c
@@ -32,6 +32,7 @@ #include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(dbghelp);
static inline BOOL is_sep(char ch) {return ch == '/' || ch == '\\';}
+static inline BOOL is_sepW(WCHAR ch) {return ch == '/' || ch == '\\';}
static inline const char* file_name(const char* str)
{
@@ -146,6 +147,34 @@ BOOL WINAPI MakeSureDirectoryPathExists(
}
/******************************************************************
+ * SymMatchFileNameW (DBGHELP.@)
+ *
+ */
+BOOL WINAPI SymMatchFileNameW(WCHAR* file, WCHAR* match,
+ WCHAR** filestop, WCHAR** matchstop)
+{
+ WCHAR* fptr;
+ WCHAR* mptr;
+
+ TRACE("(%s %s %p %p)\n",
+ debugstr_w(file), debugstr_w(match), filestop, matchstop);
+
+ fptr = file + strlenW(file) - 1;
+ mptr = match + strlenW(match) - 1;
+
+ while (fptr >= file && mptr >= match)
+ {
+ if (toupperW(*fptr) != toupperW(*mptr) && !(is_sepW(*fptr) && is_sepW(*mptr)))
+ break;
+ fptr--; mptr--;
+ }
+ if (filestop) *filestop = fptr;
+ if (matchstop) *matchstop = mptr;
+
+ return mptr == match - 1;
+}
+
+/******************************************************************
* SymMatchFileName (DBGHELP.@)
*
*/
diff --git a/include/dbghelp.h b/include/dbghelp.h
index ee3103b..ba293ed 100644
--- a/include/dbghelp.h
+++ b/include/dbghelp.h
@@ -1023,6 +1023,7 @@ BOOL WINAPI SearchTreeForFile(PCSTR, PCS
typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACK)(LPCSTR, PVOID);
BOOL WINAPI EnumDirTree(HANDLE, PCSTR, PCSTR, PSTR, PENUMDIRTREE_CALLBACK, void*);
BOOL WINAPI SymMatchFileName(PSTR, PSTR, PSTR*, PSTR*);
+BOOL WINAPI SymMatchFileNameW(PWSTR, PWSTR, PWSTR*, PWSTR*);
PCHAR WINAPI SymSetHomeDirectory(HANDLE, PCSTR);
PCHAR WINAPI SymGetHomeDirectory(DWORD, PSTR, size_t);
#define hdBase 0
More information about the wine-patches
mailing list