Commit 6f84b1c6 authored by Eric Pouech's avatar Eric Pouech Committed by Alexandre Julliard

winedbg: Try harder to locate a source file.

parent b0a7c55c
...@@ -122,6 +122,32 @@ static struct open_file_list* source_search_open_file(const char* name) ...@@ -122,6 +122,32 @@ static struct open_file_list* source_search_open_file(const char* name)
return ol; 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) static int source_display(const char* sourcefile, int start, int end)
{ {
char* addr; char* addr;
...@@ -158,9 +184,7 @@ static int source_display(const char* sourcefile, int start, int end) ...@@ -158,9 +184,7 @@ static int source_display(const char* sourcefile, int start, int end)
/* /*
* Crapola. We need to try and open the file. * Crapola. We need to try and open the file.
*/ */
strcpy(tmppath, sourcefile); if (!source_locate_file(sourcefile, tmppath))
if (GetFileAttributes(sourcefile) == INVALID_FILE_ATTRIBUTES &&
(!search_path || !SearchPathA(search_path, sourcefile, NULL, MAX_PATH, tmppath, NULL)))
{ {
if (dbg_interactiveP) if (dbg_interactiveP)
{ {
...@@ -180,6 +204,7 @@ static int source_display(const char* sourcefile, int start, int end) ...@@ -180,6 +204,7 @@ static int source_display(const char* sourcefile, int start, int end)
*/ */
strcat(tmppath, basename); strcat(tmppath, basename);
} }
else tmppath[0] = '\0';
if (GetFileAttributes(tmppath) == INVALID_FILE_ATTRIBUTES) if (GetFileAttributes(tmppath) == INVALID_FILE_ATTRIBUTES)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment