forked from OSchip/llvm-project
[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:
parent
d5d06a0763
commit
73ed607180
|
@ -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.
|
||||
///
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue