[File] Remove static method to get permissions.

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
This commit is contained in:
Jonas Devlieghere 2018-11-01 22:46:49 +00:00
parent d5d06a0763
commit 73ed607180
5 changed files with 20 additions and 20 deletions

View 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.
///

View 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.

View 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) {

View 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();
}

View 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);