[PATCH 2/2] [WineDbg]: display a valid source file when reporting an error about a missing source file

Eric Pouech eric.pouech at orange.fr
Tue Mar 15 16:26:55 CDT 2011




A+
---

 programs/winedbg/source.c |   36 ++++++++++++++++++++++--------------
 1 files changed, 22 insertions(+), 14 deletions(-)


diff --git a/programs/winedbg/source.c b/programs/winedbg/source.c
index e341d48..e564815 100644
--- a/programs/winedbg/source.c
+++ b/programs/winedbg/source.c
@@ -199,31 +199,39 @@ static int source_display(const char* sourcefile, int start, int end)
             if (dbg_interactiveP)
             {
                 char zbuf[256];
-                /*
-                 * Still couldn't find it.  Ask user for path to add.
-                 */
-                snprintf(zbuf, sizeof(zbuf), "Enter path to file '%s': ", sourcefile);
-                input_read_line(zbuf, tmppath, sizeof(tmppath));
 
-                if (tmppath[strlen(tmppath) - 1] != '/')
+                for (;;)
                 {
-                    strcat(tmppath, "/");
+                    size_t      len;
+                    /*
+                     * Still couldn't find it.  Ask user for path to add.
+                     */
+                    snprintf(zbuf, sizeof(zbuf), "Enter path to file '%s' (<cr> to end search): ", sourcefile);
+                    input_read_line(zbuf, tmppath, sizeof(tmppath));
+                    if (!(len = strlen(tmppath))) break;
+
+                    /* append '/' if missing at the end */
+                    if (tmppath[len - 1] != '/' && tmppath[len - 1] != '\\')
+                        tmppath[len++] = '/';
+                    strcpy(&tmppath[len], basename);
+                    if (GetFileAttributesA(tmppath) != INVALID_FILE_ATTRIBUTES)
+                        break;
+                    dbg_printf("Unable to access file '%s'\n", tmppath);
                 }
-                /*
-                 * Now append the base file name.
-                 */
-                strcat(tmppath, basename);
             }
-            else tmppath[0] = '\0';
+            else
+            {
+                dbg_printf("Unable to access file '%s'\n", sourcefile);
+                tmppath[0] = '\0';
+            }
 
-            if (GetFileAttributesA(tmppath) == INVALID_FILE_ATTRIBUTES)
+            if (!tmppath[0])
             {
                 /*
                  * OK, I guess the user doesn't really want to see it
                  * after all.
                  */
                 ol = source_add_file(sourcefile, NULL);
-                dbg_printf("Unable to open file '%s'\n", tmppath);
                 return FALSE;
             }
         }




More information about the wine-patches mailing list