https://git.reactos.org/?p=reactos.git;a=commitdiff;h=981f24bd1a7cb595b06e6b...
commit 981f24bd1a7cb595b06e6b344590c370a37b2392 Author: winesync ros-dev@reactos.org AuthorDate: Fri Sep 11 17:10:40 2020 +0200 Commit: Jérôme Gardou jerome.gardou@reactos.org CommitDate: Wed Sep 16 10:35:47 2020 +0200
[WINESYNC] dbghelp: Use file_name helper in more places.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
wine commit id 77e880e6d22ef9be031f783fbb4b6a5e8c8826e8 by Jacek Caban jacek@codeweavers.com --- dll/win32/dbghelp/dbghelp_private.h | 2 ++ dll/win32/dbghelp/elf_module.c | 14 +++++--------- dll/win32/dbghelp/macho_module.c | 21 +++++++-------------- dll/win32/dbghelp/module.c | 4 ++-- dll/win32/dbghelp/path.c | 4 ++-- sdk/tools/winesync/dbghelp.cfg | 2 +- 6 files changed, 19 insertions(+), 28 deletions(-)
diff --git a/dll/win32/dbghelp/dbghelp_private.h b/dll/win32/dbghelp/dbghelp_private.h index bfb193635e7..661a939eec8 100644 --- a/dll/win32/dbghelp/dbghelp_private.h +++ b/dll/win32/dbghelp/dbghelp_private.h @@ -703,6 +703,8 @@ extern BOOL path_find_symbol_file(const struct process* pcs, const struc PCSTR full_path, const GUID* guid, DWORD dw1, DWORD dw2, WCHAR *buffer, BOOL* is_unmatched) DECLSPEC_HIDDEN; extern WCHAR *get_dos_file_name(const WCHAR *filename) DECLSPEC_HIDDEN; +extern const WCHAR* file_name(const WCHAR* str) DECLSPEC_HIDDEN; +extern const char* file_nameA(const char* str) DECLSPEC_HIDDEN;
/* pe_module.c */ extern BOOL pe_load_nt_header(HANDLE hProc, DWORD64 base, IMAGE_NT_HEADERS* nth) DECLSPEC_HIDDEN; diff --git a/dll/win32/dbghelp/elf_module.c b/dll/win32/dbghelp/elf_module.c index a11e73a0e13..34fffdae5bd 100644 --- a/dll/win32/dbghelp/elf_module.c +++ b/dll/win32/dbghelp/elf_module.c @@ -727,8 +727,7 @@ static const Elf64_Sym *elf_lookup_symtab(const struct module* module, { compiland_name = source_get(module, ((const struct symt_compiland*)compiland)->source); - compiland_basename = strrchr(compiland_name, '/'); - if (!compiland_basename++) compiland_basename = compiland_name; + compiland_basename = file_nameA(compiland_name); } else compiland_name = compiland_basename = NULL;
@@ -745,8 +744,7 @@ static const Elf64_Sym *elf_lookup_symtab(const struct module* module, const char* filename = source_get(module, ste->compiland->source); if (strcmp(filename, compiland_name)) { - base = strrchr(filename, '/'); - if (!base++) base = filename; + base = file_nameA(filename); if (strcmp(base, compiland_basename)) continue; } } @@ -1434,7 +1432,7 @@ static BOOL elf_search_and_load_file(struct process* pcs, const WCHAR* filename, if (strstrW(filename, S_libstdcPPW)) return FALSE; /* We know we can't do it */ ret = elf_load_file(pcs, filename, load_offset, dyn_addr, elf_info); /* if relative pathname, try some absolute base dirs */ - if (!ret && !strchrW(filename, '/')) + if (!ret && filename == file_name(filename)) { ret = elf_load_file_from_path(pcs, filename, load_offset, dyn_addr, getenv("PATH"), elf_info) || @@ -1689,8 +1687,7 @@ static BOOL elf_load_cb(const WCHAR* name, unsigned long load_addr, /* memcmp is needed for matches when bufstr contains also version information * el->name: libc.so, name: libc.so.6.0 */ - p = strrchrW(name, '/'); - if (!p++) p = name; + p = file_name(name); }
if (!el->name || !memcmp(p, el->name, lstrlenW(el->name) * sizeof(WCHAR))) @@ -1724,8 +1721,7 @@ struct module* elf_load_module(struct process* pcs, const WCHAR* name, unsigned /* do only the lookup from the filename, not the path (as we lookup module * name in the process' loaded module list) */ - el.name = strrchrW(name, '/'); - if (!el.name++) el.name = name; + el.name = file_name(name); el.ret = FALSE;
if (!elf_enum_modules_internal(pcs, NULL, elf_load_cb, &el)) diff --git a/dll/win32/dbghelp/macho_module.c b/dll/win32/dbghelp/macho_module.c index 8fa05d312ac..4bc0a3e903c 100644 --- a/dll/win32/dbghelp/macho_module.c +++ b/dll/win32/dbghelp/macho_module.c @@ -1193,10 +1193,7 @@ static void find_and_map_dsym(struct process *pcs, struct module* module) if (!fmap->uuid) return;
- if ((p = strrchrW(module->module.LoadedImageName, '/'))) - p++; - else - p = module->module.LoadedImageName; + p = file_name(module->module.LoadedImageName); len = strlenW(module->module.LoadedImageName) + strlenW(dot_dsym) + strlenW(dsym_subpath) + strlenW(p) + 1; path = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); if (!path) @@ -1637,19 +1634,17 @@ static BOOL macho_search_and_load_file(struct process* pcs, const WCHAR* filenam if (strstrW(filename, S_libstdcPPW)) return FALSE; /* We know we can't do it */
/* If has no directories, try PATH first. */ - if (!strchrW(filename, '/')) + p = file_name(filename); + if (p == filename) { ret = macho_load_file_from_path(pcs, filename, load_addr, getenv("PATH"), macho_info); } /* Try DYLD_LIBRARY_PATH, with just the filename (no directories). */ if (!ret) - { - if ((p = strrchrW(filename, '/'))) p++; - else p = filename; ret = macho_load_file_from_path(pcs, p, load_addr, getenv("DYLD_LIBRARY_PATH"), macho_info); - } + /* Try the path as given. */ if (!ret) ret = macho_load_file(pcs, filename, load_addr, macho_info); @@ -1661,7 +1656,7 @@ static BOOL macho_search_and_load_file(struct process* pcs, const WCHAR* filenam fallback = "/usr/local/lib:/lib:/usr/lib"; ret = macho_load_file_from_path(pcs, p, load_addr, fallback, macho_info); } - if (!ret && !strchrW(filename, '/')) + if (!ret && p == filename) ret = macho_load_file_from_dll_path(pcs, filename, load_addr, macho_info);
return ret; @@ -1957,8 +1952,7 @@ static BOOL macho_load_cb(const WCHAR* name, unsigned long addr, void* user) /* memcmp is needed for matches when bufstr contains also version information * ml->name: libc.so, name: libc.so.6.0 */ - p = strrchrW(name, '/'); - if (!p++) p = name; + p = file_name(name); if (!memcmp(p, ml->name, lstrlenW(ml->name) * sizeof(WCHAR))) { ml->ret = macho_search_and_load_file(ml->pcs, name, addr, &ml->macho_info); @@ -1989,8 +1983,7 @@ struct module* macho_load_module(struct process* pcs, const WCHAR* name, unsign /* do only the lookup from the filename, not the path (as we lookup module * name in the process' loaded module list) */ - ml.name = strrchrW(name, '/'); - if (!ml.name++) ml.name = name; + ml.name = file_name(name); ml.ret = FALSE;
if (!macho_enum_modules_internal(pcs, NULL, macho_load_cb, &ml)) diff --git a/dll/win32/dbghelp/module.c b/dll/win32/dbghelp/module.c index df2dc178c4e..c04224f9532 100644 --- a/dll/win32/dbghelp/module.c +++ b/dll/win32/dbghelp/module.c @@ -87,14 +87,14 @@ static BOOL is_wine_loader(const WCHAR *module) static const WCHAR wineW[] = {'w','i','n','e',0}; static const WCHAR suffixW[] = {'6','4',0}; const WCHAR *filename = get_filename(module, NULL); - const char *ptr, *p; + const char *ptr; BOOL ret = FALSE; WCHAR *buffer; DWORD len;
if ((ptr = getenv("WINELOADER"))) { - if ((p = strrchr(ptr, '/'))) ptr = p + 1; + ptr = file_nameA(ptr); len = 2 + MultiByteToWideChar( CP_UNIXCP, 0, ptr, -1, NULL, 0 ); buffer = heap_alloc( len * sizeof(WCHAR) ); MultiByteToWideChar( CP_UNIXCP, 0, ptr, -1, buffer, len ); diff --git a/dll/win32/dbghelp/path.c b/dll/win32/dbghelp/path.c index 704fbbdee35..1b04d97e136 100644 --- a/dll/win32/dbghelp/path.c +++ b/dll/win32/dbghelp/path.c @@ -34,7 +34,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(dbghelp); static inline BOOL is_sepA(char ch) {return ch == '/' || ch == '\';} static inline BOOL is_sep(WCHAR ch) {return ch == '/' || ch == '\';}
-static inline const char* file_nameA(const char* str) +const char* file_nameA(const char* str) { const char* p;
@@ -42,7 +42,7 @@ static inline const char* file_nameA(const char* str) return p + 1; }
-static inline const WCHAR* file_name(const WCHAR* str) +const WCHAR* file_name(const WCHAR* str) { const WCHAR* p;
diff --git a/sdk/tools/winesync/dbghelp.cfg b/sdk/tools/winesync/dbghelp.cfg index c7908ce19ac..3ef3ca41a9b 100644 --- a/sdk/tools/winesync/dbghelp.cfg +++ b/sdk/tools/winesync/dbghelp.cfg @@ -4,4 +4,4 @@ files: include/dbghelp.h: sdk/include/psdk/dbghelp.h include/wine/mscvpdb.h: sdk/include/reactos/wine/mscvpdb.h tags: - wine: 63d41a41f21c4d9f32b484d6c7ed78c9d7b2a48d + wine: 77e880e6d22ef9be031f783fbb4b6a5e8c8826e8