[Lldb-commits] [lldb] a98f394 - [LLDB][GUI] Resolve paths in file/directory fields

Greg Clayton via lldb-commits lldb-commits at lists.llvm.org
Mon Jul 26 11:05:18 PDT 2021


Author: Omar Emara
Date: 2021-07-26T11:05:10-07:00
New Revision: a98f394e81f4dd70dc2a4a3a6640b10a6144cc3f

URL: https://github.com/llvm/llvm-project/commit/a98f394e81f4dd70dc2a4a3a6640b10a6144cc3f
DIFF: https://github.com/llvm/llvm-project/commit/a98f394e81f4dd70dc2a4a3a6640b10a6144cc3f.diff

LOG: [LLDB][GUI] Resolve paths in file/directory fields

This patch resolves the paths in the file/directory fields before
performing checks. Those checks are applied on the file system if
m_need_to_exist is true, so remote files can set this to false to avoid
performing host-side file system checks. Additionally, methods to get
a resolved and a direct file specs were added to be used by client code.

Reviewed By: clayborg

Differential Revision: https://reviews.llvm.org/D106553

Added: 
    

Modified: 
    lldb/source/Core/IOHandlerCursesGUI.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Core/IOHandlerCursesGUI.cpp b/lldb/source/Core/IOHandlerCursesGUI.cpp
index 4105bcc497871..b54511d2cebb5 100644
--- a/lldb/source/Core/IOHandlerCursesGUI.cpp
+++ b/lldb/source/Core/IOHandlerCursesGUI.cpp
@@ -1300,8 +1300,11 @@ class FileFieldDelegate : public TextFieldDelegate {
     if (!IsSpecified())
       return;
 
-    FileSpec file(GetPath());
-    if (m_need_to_exist && !FileSystem::Instance().Exists(file)) {
+    if (!m_need_to_exist)
+      return;
+
+    FileSpec file = GetResolvedFileSpec();
+    if (!FileSystem::Instance().Exists(file)) {
       SetError("File doesn't exist!");
       return;
     }
@@ -1311,7 +1314,17 @@ class FileFieldDelegate : public TextFieldDelegate {
     }
   }
 
-  // Returns the path of the file.
+  FileSpec GetFileSpec() {
+    FileSpec file_spec(GetPath());
+    return file_spec;
+  }
+
+  FileSpec GetResolvedFileSpec() {
+    FileSpec file_spec(GetPath());
+    FileSystem::Instance().Resolve(file_spec);
+    return file_spec;
+  }
+
   const std::string &GetPath() { return m_content; }
 
 protected:
@@ -1330,8 +1343,11 @@ class DirectoryFieldDelegate : public TextFieldDelegate {
     if (!IsSpecified())
       return;
 
-    FileSpec file(GetPath());
-    if (m_need_to_exist && !FileSystem::Instance().Exists(file)) {
+    if (!m_need_to_exist)
+      return;
+
+    FileSpec file = GetResolvedFileSpec();
+    if (!FileSystem::Instance().Exists(file)) {
       SetError("Directory doesn't exist!");
       return;
     }
@@ -1341,7 +1357,17 @@ class DirectoryFieldDelegate : public TextFieldDelegate {
     }
   }
 
-  // Returns the path of the file.
+  FileSpec GetFileSpec() {
+    FileSpec file_spec(GetPath());
+    return file_spec;
+  }
+
+  FileSpec GetResolvedFileSpec() {
+    FileSpec file_spec(GetPath());
+    FileSystem::Instance().Resolve(file_spec);
+    return file_spec;
+  }
+
   const std::string &GetPath() { return m_content; }
 
 protected:


        


More information about the lldb-commits mailing list