Module: wine Branch: refs/heads/master Commit: 133b3069bb7641ffe130586ae762f7314c1cf763 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=133b3069bb7641ffe130586a...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Feb 17 17:38:28 2006 +0100
dbghelp: Use wine_dll_enum_load_path to search the dll load path.
---
dlls/dbghelp/elf_module.c | 33 ++++++++++++++++++++++++++++++--- 1 files changed, 30 insertions(+), 3 deletions(-)
diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c index 6331b57..92bb3f1 100644 --- a/dlls/dbghelp/elf_module.c +++ b/dlls/dbghelp/elf_module.c @@ -69,6 +69,7 @@ # include <sys/link.h> #endif
+#include "wine/library.h" #include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(dbghelp); @@ -1160,6 +1161,33 @@ static BOOL elf_load_file_from_path(HAND }
/****************************************************************** + * elf_load_file_from_dll_path + * + * Tries to load an ELF file from the dll path + */ +static BOOL elf_load_file_from_dll_path(HANDLE hProcess, + const char* filename, + unsigned long load_offset, + struct elf_info* elf_info) +{ + BOOL ret = FALSE; + unsigned int index = 0; + const char *path; + + while (!ret && (path = wine_dll_enum_load_path( index++ ))) + { + char *name = HeapAlloc( GetProcessHeap(), 0, strlen(path) + strlen(filename) + 2 ); + if (!name) break; + strcpy( name, path ); + strcat( name, "/" ); + strcat( name, filename ); + ret = elf_load_file(hProcess, name, load_offset, elf_info); + HeapFree( GetProcessHeap(), 0, name ); + } + return ret; +} + +/****************************************************************** * elf_search_and_load_file * * lookup a file in standard ELF locations, and if found, load it @@ -1187,9 +1215,8 @@ static BOOL elf_search_and_load_file(str ret = elf_load_file_from_path(pcs, filename, load_offset, getenv("PATH"), elf_info) || elf_load_file_from_path(pcs, filename, load_offset, - getenv("LD_LIBRARY_PATH"), elf_info) || - elf_load_file_from_path(pcs, filename, load_offset, - getenv("WINEDLLPATH"), elf_info); + getenv("LD_LIBRARY_PATH"), elf_info); + if (!ret) ret = elf_load_file_from_dll_path(pcs, filename, load_offset, elf_info); }
return ret;