[Lldb-commits] [lldb] r248055 - Moved ResolveSymbolicLink() to the FileSystem where it belongs, thanks

Sean Callanan via lldb-commits lldb-commits at lists.llvm.org
Fri Sep 18 15:24:57 PDT 2015


Author: spyffe
Date: Fri Sep 18 17:24:57 2015
New Revision: 248055

URL: http://llvm.org/viewvc/llvm-project?rev=248055&view=rev
Log:
Moved ResolveSymbolicLink() to the FileSystem where it belongs, thanks
zturner!

http://reviews.llvm.org/D12984

Modified:
    lldb/trunk/include/lldb/Host/FileSpec.h
    lldb/trunk/include/lldb/Host/FileSystem.h
    lldb/trunk/source/Host/common/FileSpec.cpp
    lldb/trunk/source/Host/common/HostInfoBase.cpp
    lldb/trunk/source/Host/posix/FileSystem.cpp
    lldb/trunk/source/Host/windows/FileSystem.cpp

Modified: lldb/trunk/include/lldb/Host/FileSpec.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/FileSpec.h?rev=248055&r1=248054&r2=248055&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Host/FileSpec.h (original)
+++ lldb/trunk/include/lldb/Host/FileSpec.h Fri Sep 18 17:24:57 2015
@@ -511,9 +511,6 @@ public:
 
     bool
     IsSymbolicLink () const;
-    
-    FileSpec
-    ResolveSymbolicLink () const;
 
     //------------------------------------------------------------------
     /// Get the memory cost of this object.

Modified: lldb/trunk/include/lldb/Host/FileSystem.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/FileSystem.h?rev=248055&r1=248054&r2=248055&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Host/FileSystem.h (original)
+++ lldb/trunk/include/lldb/Host/FileSystem.h Fri Sep 18 17:24:57 2015
@@ -39,6 +39,8 @@ class FileSystem
     static Error Symlink(const FileSpec &src, const FileSpec &dst);
     static Error Readlink(const FileSpec &src, FileSpec &dst);
     static Error Unlink(const FileSpec &file_spec);
+    
+    static Error ResolveSymbolicLink(const FileSpec &src, FileSpec &dst);
 
     static bool CalculateMD5(const FileSpec &file_spec, uint64_t &low, uint64_t &high);
     static bool CalculateMD5(const FileSpec &file_spec,

Modified: lldb/trunk/source/Host/common/FileSpec.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/FileSpec.cpp?rev=248055&r1=248054&r2=248055&view=diff
==============================================================================
--- lldb/trunk/source/Host/common/FileSpec.cpp (original)
+++ lldb/trunk/source/Host/common/FileSpec.cpp Fri Sep 18 17:24:57 2015
@@ -811,32 +811,6 @@ FileSpec::IsSymbolicLink () const
 #endif
 }
 
-FileSpec
-FileSpec::ResolveSymbolicLink () const {
-    if (!IsSymbolicLink())
-    {
-        return *this;
-    }
-        
-    char resolved_path[PATH_MAX];
-    if (!GetPath (resolved_path, sizeof (resolved_path)))
-    {
-        return *this;
-    }
-        
-#ifdef _WIN32
-    return *this; // TODO make this work on win32
-#else
-    char real_path[PATH_MAX + 1];
-    if (realpath(resolved_path, real_path) == nullptr)
-    {
-        return *this;
-    }
-    
-    return FileSpec(real_path, false);
-#endif
-}
-
 uint32_t
 FileSpec::GetPermissions () const
 {

Modified: lldb/trunk/source/Host/common/HostInfoBase.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/HostInfoBase.cpp?rev=248055&r1=248054&r2=248055&view=diff
==============================================================================
--- lldb/trunk/source/Host/common/HostInfoBase.cpp (original)
+++ lldb/trunk/source/Host/common/HostInfoBase.cpp Fri Sep 18 17:24:57 2015
@@ -308,7 +308,7 @@ HostInfoBase::ComputeSharedLibraryDirect
         Host::GetModuleFileSpecForHostAddress(reinterpret_cast<void *>(reinterpret_cast<intptr_t>(HostInfoBase::GetLLDBPath))));
     
     // This is necessary because when running the testsuite the shlib might be a symbolic link inside the Python resource dir.
-    lldb_file_spec = lldb_file_spec.ResolveSymbolicLink();
+    FileSystem::ResolveSymbolicLink(lldb_file_spec, lldb_file_spec);
     
     // Remove the filename so that this FileSpec only represents the directory.
     file_spec.GetDirectory() = lldb_file_spec.GetDirectory();

Modified: lldb/trunk/source/Host/posix/FileSystem.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/posix/FileSystem.cpp?rev=248055&r1=248054&r2=248055&view=diff
==============================================================================
--- lldb/trunk/source/Host/posix/FileSystem.cpp (original)
+++ lldb/trunk/source/Host/posix/FileSystem.cpp Fri Sep 18 17:24:57 2015
@@ -226,6 +226,28 @@ FileSystem::Readlink(const FileSpec &src
     return error;
 }
 
+Error
+FileSystem::ResolveSymbolicLink(const FileSpec &src, FileSpec &dst)
+{
+    char resolved_path[PATH_MAX];
+    if (!src.GetPath (resolved_path, sizeof (resolved_path)))
+    {
+        return Error("Couldn't get the canonical path for %s", src.GetCString());
+    }
+    
+    char real_path[PATH_MAX + 1];
+    if (realpath(resolved_path, real_path) == nullptr)
+    {
+        Error err;
+        err.SetErrorToErrno();
+        return err;
+    }
+    
+    dst = FileSpec(real_path, false);
+    
+    return Error();
+}
+
 #if defined(__NetBSD__)
 static bool IsLocal(const struct statvfs& info)
 {

Modified: lldb/trunk/source/Host/windows/FileSystem.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/windows/FileSystem.cpp?rev=248055&r1=248054&r2=248055&view=diff
==============================================================================
--- lldb/trunk/source/Host/windows/FileSystem.cpp (original)
+++ lldb/trunk/source/Host/windows/FileSystem.cpp Fri Sep 18 17:24:57 2015
@@ -199,6 +199,12 @@ FileSystem::Readlink(const FileSpec &src
     return error;
 }
 
+Error
+FileSystem::ResolveSymbolicLink(const FileSpec &src, FileSpec &dst)
+{
+    return Error("ResolveSymbolicLink() isn't implemented on Windows");
+}
+
 bool
 FileSystem::IsLocal(const FileSpec &spec)
 {




More information about the lldb-commits mailing list