[PATCH 1/4] [DbgHelp]: added helper to get the basename + extension from full filename

Eric Pouech eric.pouech at wanadoo.fr
Tue Mar 13 11:32:52 CDT 2007




A+
---

 dlls/dbghelp/module.c |   22 +++++++++++++++-------
 1 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/dlls/dbghelp/module.c b/dlls/dbghelp/module.c
index 9668125..448ff56 100644
--- a/dlls/dbghelp/module.c
+++ b/dlls/dbghelp/module.c
@@ -64,17 +64,25 @@ static int match_ext(const WCHAR* ptr, s
     return 0;
 }
 
+static const WCHAR* get_filename(const WCHAR* name, const WCHAR* endptr)
+{
+    const WCHAR*        ptr;
+    
+    if (!endptr) endptr = name + strlenW(name);
+    for (ptr = endptr - 1; ptr >= name; ptr--)
+    {
+        if (*ptr == '/' || *ptr == '\\') break;
+    }
+    return ++ptr;
+}
+
 static void module_fill_module(const WCHAR* in, WCHAR* out, size_t size)
 {
-    const WCHAR *ptr,*endptr;
+    const WCHAR *ptr, *endptr;
     size_t      len, l;
 
-    endptr = in + strlenW(in);
-    for (ptr = endptr - 1;
-         ptr >= in && *ptr != '/' && *ptr != '\\';
-         ptr--);
-    ptr++;
-    len = min(endptr-ptr,size-1);
+    ptr = get_filename(in, endptr = in + strlenW(in));
+    len = min(endptr - ptr, size - 1);
     memcpy(out, ptr, len * sizeof(WCHAR));
     out[len] = '\0';
     if (len > 4 && (l = match_ext(out, len)))



More information about the wine-patches mailing list