Module: wine Branch: master Commit: 6f84b1c640bab6a7b721240517931e74c3dc4ccf URL: http://source.winehq.org/git/wine.git/?a=commit;h=6f84b1c640bab6a7b721240517...
Author: Eric Pouech eric.pouech@orange.fr Date: Wed Apr 30 21:26:37 2008 +0200
winedbg: Try harder to locate a source file.
---
programs/winedbg/source.c | 31 ++++++++++++++++++++++++++++--- 1 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/programs/winedbg/source.c b/programs/winedbg/source.c index eb9576d..41ee6f7 100644 --- a/programs/winedbg/source.c +++ b/programs/winedbg/source.c @@ -122,6 +122,32 @@ static struct open_file_list* source_search_open_file(const char* name) return ol; }
+static BOOL source_locate_file(const char* srcfile, char* path) +{ + BOOL found = FALSE; + + if (GetFileAttributes(srcfile) != INVALID_FILE_ATTRIBUTES) + { + strcpy(path, srcfile); + found = TRUE; + } + else if (search_path) + { + const char* spath; + + spath = srcfile; + while (!found) + { + spath = strchr(spath, '\'); + if (!spath) spath = strchr(spath, '/'); + if (!spath) break; + spath++; + found = SearchPathA(search_path, spath, NULL, MAX_PATH, path, NULL); + } + } + return found; +} + static int source_display(const char* sourcefile, int start, int end) { char* addr; @@ -158,9 +184,7 @@ static int source_display(const char* sourcefile, int start, int end) /* * Crapola. We need to try and open the file. */ - strcpy(tmppath, sourcefile); - if (GetFileAttributes(sourcefile) == INVALID_FILE_ATTRIBUTES && - (!search_path || !SearchPathA(search_path, sourcefile, NULL, MAX_PATH, tmppath, NULL))) + if (!source_locate_file(sourcefile, tmppath)) { if (dbg_interactiveP) { @@ -180,6 +204,7 @@ static int source_display(const char* sourcefile, int start, int end) */ strcat(tmppath, basename); } + else tmppath[0] = '\0';
if (GetFileAttributes(tmppath) == INVALID_FILE_ATTRIBUTES) {