[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