[File] Remove static method to get permissions.
authorJonas Devlieghere <jonas@devlieghere.com>
Thu, 1 Nov 2018 22:46:49 +0000 (22:46 +0000)
committerJonas Devlieghere <jonas@devlieghere.com>
Thu, 1 Nov 2018 22:46:49 +0000 (22:46 +0000)
This patch removes the static accessor in File to get a file's
permissions. Permissions should be checked through the FileSystem class.

llvm-svn: 345901

lldb/include/lldb/Host/File.h
lldb/include/lldb/Host/FileSystem.h
lldb/source/Host/common/File.cpp
lldb/source/Host/common/FileSystem.cpp
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp

index 8cc21ba..f54c9b2 100644 (file)
@@ -419,8 +419,6 @@ public:
   //------------------------------------------------------------------
   uint32_t GetPermissions(Status &error) const;
 
-  static uint32_t GetPermissions(const FileSpec &file_spec, Status &error);
-
   //------------------------------------------------------------------
   /// Return true if this file is interactive.
   ///
index ea1fe08..60cdfdd 100644 (file)
@@ -66,6 +66,8 @@ public:
   /// @{
   uint32_t GetPermissions(const FileSpec &file_spec) const;
   uint32_t GetPermissions(const llvm::Twine &path) const;
+  uint32_t GetPermissions(const FileSpec &file_spec, std::error_code &ec) const;
+  uint32_t GetPermissions(const llvm::Twine &path, std::error_code &ec) const;
   /// @}
 
   /// Returns whether the given file exists.
index fb95495..4aae4d2 100644 (file)
@@ -248,19 +248,6 @@ Status File::Open(const char *path, uint32_t options, uint32_t permissions) {
   return error;
 }
 
-uint32_t File::GetPermissions(const FileSpec &file_spec, Status &error) {
-  if (file_spec) {
-    error.Clear();
-    auto Perms = llvm::sys::fs::getPermissions(file_spec.GetPath());
-    if (Perms)
-      return *Perms;
-    error = Status(Perms.getError());
-    return 0;
-  } else
-    error.SetErrorString("empty file spec");
-  return 0;
-}
-
 uint32_t File::GetPermissions(Status &error) const {
   int fd = GetDescriptor();
   if (fd != kInvalidDescriptor) {
index 664f794..73e74c1 100644 (file)
@@ -78,10 +78,23 @@ uint32_t FileSystem::GetPermissions(const FileSpec &file_spec) const {
   return GetPermissions(file_spec.GetPath());
 }
 
+uint32_t FileSystem::GetPermissions(const FileSpec &file_spec,
+                                    std::error_code &ec) const {
+  return GetPermissions(file_spec.GetPath(), ec);
+}
+
 uint32_t FileSystem::GetPermissions(const Twine &path) const {
+  std::error_code ec;
+  return GetPermissions(path, ec);
+}
+
+uint32_t FileSystem::GetPermissions(const Twine &path,
+                                    std::error_code &ec) const {
   ErrorOr<vfs::Status> status = m_fs->status(path);
-  if (!status)
+  if (!status) {
+    ec = status.getError();
     return sys::fs::perms::perms_not_known;
+  }
   return status->getPermissions();
 }
 
index 60b56b0..382754c 100644 (file)
@@ -660,14 +660,14 @@ GDBRemoteCommunicationServerCommon::Handle_vFile_Mode(
   std::string path;
   packet.GetHexByteString(path);
   if (!path.empty()) {
-    Status error;
     FileSpec file_spec(path);
     FileSystem::Instance().Resolve(file_spec);
-    const uint32_t mode = File::GetPermissions(file_spec, error);
+    std::error_code ec;
+    const uint32_t mode = FileSystem::Instance().GetPermissions(file_spec, ec);
     StreamString response;
     response.Printf("F%u", mode);
-    if (mode == 0 || error.Fail())
-      response.Printf(",%i", (int)error.GetError());
+    if (mode == 0 || ec)
+      response.Printf(",%i", (int)Status(ec).GetError());
     return SendPacketNoLock(response.GetString());
   }
   return SendErrorResponse(23);