mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-09 12:28:13 -04:00
refactor: remove access version returning int
This commit is contained in:
parent
6a2cc3f860
commit
62899bbd73
@ -120,8 +120,8 @@ class filesystem_v2 {
|
||||
|
||||
file_stat getattr(inode_view entry) const { return impl_->getattr(entry); }
|
||||
|
||||
int access(inode_view entry, int mode, file_stat::uid_type uid,
|
||||
file_stat::gid_type gid) const {
|
||||
bool access(inode_view entry, int mode, file_stat::uid_type uid,
|
||||
file_stat::gid_type gid) const {
|
||||
return impl_->access(entry, mode, uid, gid);
|
||||
}
|
||||
|
||||
@ -248,8 +248,8 @@ class filesystem_v2 {
|
||||
find(int inode, const char* name) const = 0;
|
||||
virtual file_stat getattr(inode_view entry, std::error_code& ec) const = 0;
|
||||
virtual file_stat getattr(inode_view entry) const = 0;
|
||||
virtual int access(inode_view entry, int mode, file_stat::uid_type uid,
|
||||
file_stat::gid_type gid) const = 0;
|
||||
virtual bool access(inode_view entry, int mode, file_stat::uid_type uid,
|
||||
file_stat::gid_type gid) const = 0;
|
||||
virtual void access(inode_view entry, int mode, file_stat::uid_type uid,
|
||||
file_stat::gid_type gid, std::error_code& ec) const = 0;
|
||||
virtual std::optional<directory_view> opendir(inode_view entry) const = 0;
|
||||
|
@ -120,9 +120,9 @@ class metadata_v2 {
|
||||
|
||||
size_t dirsize(directory_view dir) const { return impl_->dirsize(dir); }
|
||||
|
||||
int access(inode_view iv, int mode, file_stat::uid_type uid,
|
||||
file_stat::gid_type gid) const {
|
||||
return impl_->access(iv, mode, uid, gid);
|
||||
void access(inode_view iv, int mode, file_stat::uid_type uid,
|
||||
file_stat::gid_type gid, std::error_code& ec) const {
|
||||
impl_->access(iv, mode, uid, gid, ec);
|
||||
}
|
||||
|
||||
int open(inode_view iv) const { return impl_->open(iv); }
|
||||
@ -199,8 +199,8 @@ class metadata_v2 {
|
||||
|
||||
virtual size_t dirsize(directory_view dir) const = 0;
|
||||
|
||||
virtual int access(inode_view iv, int mode, file_stat::uid_type uid,
|
||||
file_stat::gid_type gid) const = 0;
|
||||
virtual void access(inode_view iv, int mode, file_stat::uid_type uid,
|
||||
file_stat::gid_type gid, std::error_code& ec) const = 0;
|
||||
|
||||
virtual int open(inode_view iv) const = 0;
|
||||
|
||||
|
@ -441,8 +441,8 @@ class filesystem_ final : public filesystem_v2::impl {
|
||||
std::optional<inode_view> find(int inode, const char* name) const override;
|
||||
file_stat getattr(inode_view entry, std::error_code& ec) const override;
|
||||
file_stat getattr(inode_view entry) const override;
|
||||
int access(inode_view entry, int mode, file_stat::uid_type uid,
|
||||
file_stat::gid_type gid) const override;
|
||||
bool access(inode_view entry, int mode, file_stat::uid_type uid,
|
||||
file_stat::gid_type gid) const override;
|
||||
void access(inode_view entry, int mode, file_stat::uid_type uid,
|
||||
file_stat::gid_type gid, std::error_code& ec) const override;
|
||||
std::optional<directory_view> opendir(inode_view entry) const override;
|
||||
@ -1080,11 +1080,13 @@ file_stat filesystem_<LoggerPolicy>::getattr(inode_view entry) const {
|
||||
}
|
||||
|
||||
template <typename LoggerPolicy>
|
||||
int filesystem_<LoggerPolicy>::access(inode_view entry, int mode,
|
||||
file_stat::uid_type uid,
|
||||
file_stat::gid_type gid) const {
|
||||
bool filesystem_<LoggerPolicy>::access(inode_view entry, int mode,
|
||||
file_stat::uid_type uid,
|
||||
file_stat::gid_type gid) const {
|
||||
PERFMON_CLS_SCOPED_SECTION(access)
|
||||
return meta_.access(entry, mode, uid, gid);
|
||||
std::error_code ec;
|
||||
meta_.access(entry, mode, uid, gid, ec);
|
||||
return !ec;
|
||||
}
|
||||
|
||||
template <typename LoggerPolicy>
|
||||
@ -1093,7 +1095,7 @@ void filesystem_<LoggerPolicy>::access(inode_view entry, int mode,
|
||||
file_stat::gid_type gid,
|
||||
std::error_code& ec) const {
|
||||
PERFMON_CLS_SCOPED_SECTION(access_ec)
|
||||
call_int_error([&] { return meta_.access(entry, mode, uid, gid); }, ec);
|
||||
meta_.access(entry, mode, uid, gid, ec);
|
||||
}
|
||||
|
||||
template <typename LoggerPolicy>
|
||||
|
@ -494,8 +494,8 @@ class metadata_ final : public metadata_v2::impl {
|
||||
return 2 + dir.entry_count(); // adds '.' and '..', which we fake in ;-)
|
||||
}
|
||||
|
||||
int access(inode_view iv, int mode, file_stat::uid_type uid,
|
||||
file_stat::gid_type gid) const override;
|
||||
void access(inode_view iv, int mode, file_stat::uid_type uid,
|
||||
file_stat::gid_type gid, std::error_code& ec) const override;
|
||||
|
||||
int open(inode_view iv) const override;
|
||||
|
||||
@ -1618,16 +1618,18 @@ metadata_<LoggerPolicy>::readdir(directory_view dir, size_t offset) const {
|
||||
}
|
||||
|
||||
template <typename LoggerPolicy>
|
||||
int metadata_<LoggerPolicy>::access(inode_view iv, int mode,
|
||||
file_stat::uid_type uid,
|
||||
file_stat::gid_type gid) const {
|
||||
void metadata_<LoggerPolicy>::access(inode_view iv, int mode,
|
||||
file_stat::uid_type uid,
|
||||
file_stat::gid_type gid,
|
||||
std::error_code& ec) const {
|
||||
LOG_DEBUG << fmt::format("access([{}, {:o}, {}, {}], {:o}, {}, {})",
|
||||
iv.inode_num(), iv.mode(), iv.getuid(), iv.getgid(),
|
||||
mode, uid, gid);
|
||||
|
||||
if (mode == F_OK) {
|
||||
// easy; we're only interested in the file's existance
|
||||
return 0;
|
||||
ec.clear();
|
||||
return;
|
||||
}
|
||||
|
||||
int access_mode = 0;
|
||||
@ -1679,7 +1681,11 @@ int metadata_<LoggerPolicy>::access(inode_view iv, int mode,
|
||||
}
|
||||
}
|
||||
|
||||
return (access_mode & mode) == mode ? 0 : EACCES;
|
||||
if ((access_mode & mode) == mode) {
|
||||
ec.clear();
|
||||
} else {
|
||||
ec = std::make_error_code(std::errc::permission_denied);
|
||||
}
|
||||
}
|
||||
|
||||
template <typename LoggerPolicy>
|
||||
|
@ -459,7 +459,9 @@ int op_access_common(LogProxy& log_, dwarfs_userdata& userdata, int mode,
|
||||
Find const& find) {
|
||||
return checked_call(log_, [&] {
|
||||
if (auto entry = find()) {
|
||||
return userdata.fs.access(*entry, mode, uid, gid);
|
||||
std::error_code ec;
|
||||
userdata.fs.access(*entry, mode, uid, gid, ec);
|
||||
return ec.value();
|
||||
}
|
||||
return ENOENT;
|
||||
});
|
||||
|
@ -849,7 +849,7 @@ void check_compat(logger& lgr, filesystem_v2 const& fs,
|
||||
EXPECT_EQ(1616013816, st.ctime);
|
||||
}
|
||||
|
||||
EXPECT_EQ(0, fs.access(*entry, R_OK, 1000, 0));
|
||||
EXPECT_TRUE(fs.access(*entry, R_OK, 1000, 0));
|
||||
|
||||
auto inode = fs.open(*entry);
|
||||
EXPECT_GE(inode, 0);
|
||||
|
@ -420,10 +420,13 @@ void basic_end_to_end_test(std::string const& compressor,
|
||||
ASSERT_TRUE(entry);
|
||||
st1 = fs.getattr(*entry);
|
||||
EXPECT_EQ(access_fail ? 0 : 10000, st1.size);
|
||||
EXPECT_EQ(0, fs.access(*entry, R_OK, 1000, 100));
|
||||
EXPECT_TRUE(fs.access(*entry, R_OK, 1000, 100));
|
||||
entry = fs.find(0, "baz.pl");
|
||||
ASSERT_TRUE(entry);
|
||||
EXPECT_EQ(set_uid ? EACCES : 0, fs.access(*entry, R_OK, 1337, 0));
|
||||
std::error_code ec;
|
||||
fs.access(*entry, R_OK, 1337, 0, ec);
|
||||
EXPECT_EQ(set_uid ? EACCES : 0, ec.value());
|
||||
EXPECT_EQ(set_uid, !fs.access(*entry, R_OK, 1337, 0));
|
||||
|
||||
for (auto mp : {&filesystem_v2::walk, &filesystem_v2::walk_data_order}) {
|
||||
std::map<std::string, file_stat> entries;
|
||||
@ -1296,65 +1299,65 @@ TEST(filesystem, root_access_github204) {
|
||||
static constexpr int const x_ok{X_OK};
|
||||
#endif
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, R_OK, 1000, 100));
|
||||
EXPECT_EQ(0, fs.access(*group, R_OK, 1000, 100));
|
||||
EXPECT_EQ(0, fs.access(*user, R_OK, 1000, 100));
|
||||
EXPECT_TRUE(fs.access(*other, R_OK, 1000, 100));
|
||||
EXPECT_TRUE(fs.access(*group, R_OK, 1000, 100));
|
||||
EXPECT_TRUE(fs.access(*user, R_OK, 1000, 100));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, W_OK, 1000, 100));
|
||||
EXPECT_EQ(0, fs.access(*group, W_OK, 1000, 100));
|
||||
EXPECT_EQ(0, fs.access(*user, W_OK, 1000, 100));
|
||||
EXPECT_TRUE(fs.access(*other, W_OK, 1000, 100));
|
||||
EXPECT_TRUE(fs.access(*group, W_OK, 1000, 100));
|
||||
EXPECT_TRUE(fs.access(*user, W_OK, 1000, 100));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, x_ok, 1000, 100));
|
||||
EXPECT_EQ(0, fs.access(*group, x_ok, 1000, 100));
|
||||
EXPECT_EQ(0, fs.access(*user, x_ok, 1000, 100));
|
||||
EXPECT_TRUE(fs.access(*other, x_ok, 1000, 100));
|
||||
EXPECT_TRUE(fs.access(*group, x_ok, 1000, 100));
|
||||
EXPECT_TRUE(fs.access(*user, x_ok, 1000, 100));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, R_OK, 1000, 0));
|
||||
EXPECT_EQ(0, fs.access(*group, R_OK, 1000, 0));
|
||||
EXPECT_EQ(0, fs.access(*user, R_OK, 1000, 0));
|
||||
EXPECT_TRUE(fs.access(*other, R_OK, 1000, 0));
|
||||
EXPECT_TRUE(fs.access(*group, R_OK, 1000, 0));
|
||||
EXPECT_TRUE(fs.access(*user, R_OK, 1000, 0));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, W_OK, 1000, 0));
|
||||
EXPECT_EQ(0, fs.access(*group, W_OK, 1000, 0));
|
||||
EXPECT_EQ(0, fs.access(*user, W_OK, 1000, 0));
|
||||
EXPECT_TRUE(fs.access(*other, W_OK, 1000, 0));
|
||||
EXPECT_TRUE(fs.access(*group, W_OK, 1000, 0));
|
||||
EXPECT_TRUE(fs.access(*user, W_OK, 1000, 0));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, x_ok, 1000, 0));
|
||||
EXPECT_EQ(0, fs.access(*group, x_ok, 1000, 0));
|
||||
EXPECT_EQ(0, fs.access(*user, x_ok, 1000, 0));
|
||||
EXPECT_TRUE(fs.access(*other, x_ok, 1000, 0));
|
||||
EXPECT_TRUE(fs.access(*group, x_ok, 1000, 0));
|
||||
EXPECT_TRUE(fs.access(*user, x_ok, 1000, 0));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, R_OK, 2000, 100));
|
||||
EXPECT_EQ(0, fs.access(*group, R_OK, 2000, 100));
|
||||
EXPECT_EQ(EACCES, fs.access(*user, R_OK, 2000, 100));
|
||||
EXPECT_TRUE(fs.access(*other, R_OK, 2000, 100));
|
||||
EXPECT_TRUE(fs.access(*group, R_OK, 2000, 100));
|
||||
EXPECT_FALSE(fs.access(*user, R_OK, 2000, 100));
|
||||
|
||||
EXPECT_EQ(EACCES, fs.access(*other, W_OK, 2000, 100));
|
||||
EXPECT_EQ(EACCES, fs.access(*group, W_OK, 2000, 100));
|
||||
EXPECT_EQ(EACCES, fs.access(*user, W_OK, 2000, 100));
|
||||
EXPECT_FALSE(fs.access(*other, W_OK, 2000, 100));
|
||||
EXPECT_FALSE(fs.access(*group, W_OK, 2000, 100));
|
||||
EXPECT_FALSE(fs.access(*user, W_OK, 2000, 100));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, x_ok, 2000, 100));
|
||||
EXPECT_EQ(0, fs.access(*group, x_ok, 2000, 100));
|
||||
EXPECT_EQ(EACCES, fs.access(*user, x_ok, 2000, 100));
|
||||
EXPECT_TRUE(fs.access(*other, x_ok, 2000, 100));
|
||||
EXPECT_TRUE(fs.access(*group, x_ok, 2000, 100));
|
||||
EXPECT_FALSE(fs.access(*user, x_ok, 2000, 100));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, R_OK, 2000, 200));
|
||||
EXPECT_EQ(EACCES, fs.access(*group, R_OK, 2000, 200));
|
||||
EXPECT_EQ(EACCES, fs.access(*user, R_OK, 2000, 200));
|
||||
EXPECT_TRUE(fs.access(*other, R_OK, 2000, 200));
|
||||
EXPECT_FALSE(fs.access(*group, R_OK, 2000, 200));
|
||||
EXPECT_FALSE(fs.access(*user, R_OK, 2000, 200));
|
||||
|
||||
EXPECT_EQ(EACCES, fs.access(*other, W_OK, 2000, 200));
|
||||
EXPECT_EQ(EACCES, fs.access(*group, W_OK, 2000, 200));
|
||||
EXPECT_EQ(EACCES, fs.access(*user, W_OK, 2000, 200));
|
||||
EXPECT_FALSE(fs.access(*other, W_OK, 2000, 200));
|
||||
EXPECT_FALSE(fs.access(*group, W_OK, 2000, 200));
|
||||
EXPECT_FALSE(fs.access(*user, W_OK, 2000, 200));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, x_ok, 2000, 200));
|
||||
EXPECT_EQ(EACCES, fs.access(*group, x_ok, 2000, 200));
|
||||
EXPECT_EQ(EACCES, fs.access(*user, x_ok, 2000, 200));
|
||||
EXPECT_TRUE(fs.access(*other, x_ok, 2000, 200));
|
||||
EXPECT_FALSE(fs.access(*group, x_ok, 2000, 200));
|
||||
EXPECT_FALSE(fs.access(*user, x_ok, 2000, 200));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, R_OK, 0, 0));
|
||||
EXPECT_EQ(0, fs.access(*group, R_OK, 0, 0));
|
||||
EXPECT_EQ(0, fs.access(*user, R_OK, 0, 0));
|
||||
EXPECT_TRUE(fs.access(*other, R_OK, 0, 0));
|
||||
EXPECT_TRUE(fs.access(*group, R_OK, 0, 0));
|
||||
EXPECT_TRUE(fs.access(*user, R_OK, 0, 0));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, W_OK, 0, 0));
|
||||
EXPECT_EQ(0, fs.access(*group, W_OK, 0, 0));
|
||||
EXPECT_EQ(0, fs.access(*user, W_OK, 0, 0));
|
||||
EXPECT_TRUE(fs.access(*other, W_OK, 0, 0));
|
||||
EXPECT_TRUE(fs.access(*group, W_OK, 0, 0));
|
||||
EXPECT_TRUE(fs.access(*user, W_OK, 0, 0));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, x_ok, 0, 0));
|
||||
EXPECT_EQ(0, fs.access(*group, x_ok, 0, 0));
|
||||
EXPECT_EQ(0, fs.access(*user, x_ok, 0, 0));
|
||||
EXPECT_TRUE(fs.access(*other, x_ok, 0, 0));
|
||||
EXPECT_TRUE(fs.access(*group, x_ok, 0, 0));
|
||||
EXPECT_TRUE(fs.access(*user, x_ok, 0, 0));
|
||||
|
||||
other = fs.find("/other/file");
|
||||
group = fs.find("/group/file");
|
||||
@ -1364,63 +1367,63 @@ TEST(filesystem, root_access_github204) {
|
||||
EXPECT_TRUE(group);
|
||||
EXPECT_TRUE(user);
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, R_OK, 1000, 100));
|
||||
EXPECT_EQ(0, fs.access(*group, R_OK, 1000, 100));
|
||||
EXPECT_EQ(0, fs.access(*user, R_OK, 1000, 100));
|
||||
EXPECT_TRUE(fs.access(*other, R_OK, 1000, 100));
|
||||
EXPECT_TRUE(fs.access(*group, R_OK, 1000, 100));
|
||||
EXPECT_TRUE(fs.access(*user, R_OK, 1000, 100));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, W_OK, 1000, 100));
|
||||
EXPECT_EQ(0, fs.access(*group, W_OK, 1000, 100));
|
||||
EXPECT_EQ(0, fs.access(*user, W_OK, 1000, 100));
|
||||
EXPECT_TRUE(fs.access(*other, W_OK, 1000, 100));
|
||||
EXPECT_TRUE(fs.access(*group, W_OK, 1000, 100));
|
||||
EXPECT_TRUE(fs.access(*user, W_OK, 1000, 100));
|
||||
|
||||
EXPECT_EQ(EACCES, fs.access(*other, x_ok, 1000, 100));
|
||||
EXPECT_EQ(EACCES, fs.access(*group, x_ok, 1000, 100));
|
||||
EXPECT_EQ(EACCES, fs.access(*user, x_ok, 1000, 100));
|
||||
EXPECT_FALSE(fs.access(*other, x_ok, 1000, 100));
|
||||
EXPECT_FALSE(fs.access(*group, x_ok, 1000, 100));
|
||||
EXPECT_FALSE(fs.access(*user, x_ok, 1000, 100));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, R_OK, 1000, 0));
|
||||
EXPECT_EQ(0, fs.access(*group, R_OK, 1000, 0));
|
||||
EXPECT_EQ(0, fs.access(*user, R_OK, 1000, 0));
|
||||
EXPECT_TRUE(fs.access(*other, R_OK, 1000, 0));
|
||||
EXPECT_TRUE(fs.access(*group, R_OK, 1000, 0));
|
||||
EXPECT_TRUE(fs.access(*user, R_OK, 1000, 0));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, W_OK, 1000, 0));
|
||||
EXPECT_EQ(0, fs.access(*group, W_OK, 1000, 0));
|
||||
EXPECT_EQ(0, fs.access(*user, W_OK, 1000, 0));
|
||||
EXPECT_TRUE(fs.access(*other, W_OK, 1000, 0));
|
||||
EXPECT_TRUE(fs.access(*group, W_OK, 1000, 0));
|
||||
EXPECT_TRUE(fs.access(*user, W_OK, 1000, 0));
|
||||
|
||||
EXPECT_EQ(EACCES, fs.access(*other, x_ok, 1000, 0));
|
||||
EXPECT_EQ(EACCES, fs.access(*group, x_ok, 1000, 0));
|
||||
EXPECT_EQ(EACCES, fs.access(*user, x_ok, 1000, 0));
|
||||
EXPECT_FALSE(fs.access(*other, x_ok, 1000, 0));
|
||||
EXPECT_FALSE(fs.access(*group, x_ok, 1000, 0));
|
||||
EXPECT_FALSE(fs.access(*user, x_ok, 1000, 0));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, R_OK, 2000, 100));
|
||||
EXPECT_EQ(0, fs.access(*group, R_OK, 2000, 100));
|
||||
EXPECT_EQ(EACCES, fs.access(*user, R_OK, 2000, 100));
|
||||
EXPECT_TRUE(fs.access(*other, R_OK, 2000, 100));
|
||||
EXPECT_TRUE(fs.access(*group, R_OK, 2000, 100));
|
||||
EXPECT_FALSE(fs.access(*user, R_OK, 2000, 100));
|
||||
|
||||
EXPECT_EQ(EACCES, fs.access(*other, W_OK, 2000, 100));
|
||||
EXPECT_EQ(EACCES, fs.access(*group, W_OK, 2000, 100));
|
||||
EXPECT_EQ(EACCES, fs.access(*user, W_OK, 2000, 100));
|
||||
EXPECT_FALSE(fs.access(*other, W_OK, 2000, 100));
|
||||
EXPECT_FALSE(fs.access(*group, W_OK, 2000, 100));
|
||||
EXPECT_FALSE(fs.access(*user, W_OK, 2000, 100));
|
||||
|
||||
EXPECT_EQ(EACCES, fs.access(*other, x_ok, 2000, 100));
|
||||
EXPECT_EQ(EACCES, fs.access(*group, x_ok, 2000, 100));
|
||||
EXPECT_EQ(EACCES, fs.access(*user, x_ok, 2000, 100));
|
||||
EXPECT_FALSE(fs.access(*other, x_ok, 2000, 100));
|
||||
EXPECT_FALSE(fs.access(*group, x_ok, 2000, 100));
|
||||
EXPECT_FALSE(fs.access(*user, x_ok, 2000, 100));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, R_OK, 2000, 200));
|
||||
EXPECT_EQ(EACCES, fs.access(*group, R_OK, 2000, 200));
|
||||
EXPECT_EQ(EACCES, fs.access(*user, R_OK, 2000, 200));
|
||||
EXPECT_TRUE(fs.access(*other, R_OK, 2000, 200));
|
||||
EXPECT_FALSE(fs.access(*group, R_OK, 2000, 200));
|
||||
EXPECT_FALSE(fs.access(*user, R_OK, 2000, 200));
|
||||
|
||||
EXPECT_EQ(EACCES, fs.access(*other, W_OK, 2000, 200));
|
||||
EXPECT_EQ(EACCES, fs.access(*group, W_OK, 2000, 200));
|
||||
EXPECT_EQ(EACCES, fs.access(*user, W_OK, 2000, 200));
|
||||
EXPECT_FALSE(fs.access(*other, W_OK, 2000, 200));
|
||||
EXPECT_FALSE(fs.access(*group, W_OK, 2000, 200));
|
||||
EXPECT_FALSE(fs.access(*user, W_OK, 2000, 200));
|
||||
|
||||
EXPECT_EQ(EACCES, fs.access(*other, x_ok, 2000, 200));
|
||||
EXPECT_EQ(EACCES, fs.access(*group, x_ok, 2000, 200));
|
||||
EXPECT_EQ(EACCES, fs.access(*user, x_ok, 2000, 200));
|
||||
EXPECT_FALSE(fs.access(*other, x_ok, 2000, 200));
|
||||
EXPECT_FALSE(fs.access(*group, x_ok, 2000, 200));
|
||||
EXPECT_FALSE(fs.access(*user, x_ok, 2000, 200));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, R_OK, 0, 0));
|
||||
EXPECT_EQ(0, fs.access(*group, R_OK, 0, 0));
|
||||
EXPECT_EQ(0, fs.access(*user, R_OK, 0, 0));
|
||||
EXPECT_TRUE(fs.access(*other, R_OK, 0, 0));
|
||||
EXPECT_TRUE(fs.access(*group, R_OK, 0, 0));
|
||||
EXPECT_TRUE(fs.access(*user, R_OK, 0, 0));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*other, W_OK, 0, 0));
|
||||
EXPECT_EQ(0, fs.access(*group, W_OK, 0, 0));
|
||||
EXPECT_EQ(0, fs.access(*user, W_OK, 0, 0));
|
||||
EXPECT_TRUE(fs.access(*other, W_OK, 0, 0));
|
||||
EXPECT_TRUE(fs.access(*group, W_OK, 0, 0));
|
||||
EXPECT_TRUE(fs.access(*user, W_OK, 0, 0));
|
||||
|
||||
EXPECT_EQ(EACCES, fs.access(*other, x_ok, 0, 0));
|
||||
EXPECT_EQ(EACCES, fs.access(*group, x_ok, 0, 0));
|
||||
EXPECT_EQ(EACCES, fs.access(*user, x_ok, 0, 0));
|
||||
EXPECT_FALSE(fs.access(*other, x_ok, 0, 0));
|
||||
EXPECT_FALSE(fs.access(*group, x_ok, 0, 0));
|
||||
EXPECT_FALSE(fs.access(*user, x_ok, 0, 0));
|
||||
}
|
||||
|
@ -1093,19 +1093,19 @@ TEST(mkdwarfs_test, metadata_access) {
|
||||
auto iv = fs.find("/access");
|
||||
ASSERT_TRUE(iv);
|
||||
|
||||
EXPECT_EQ(0, fs.access(*iv, F_OK, 1, 1));
|
||||
EXPECT_TRUE(fs.access(*iv, F_OK, 1, 1));
|
||||
|
||||
EXPECT_EQ(EACCES, fs.access(*iv, R_OK, 1, 1));
|
||||
EXPECT_EQ(0, fs.access(*iv, W_OK, 1, 1));
|
||||
EXPECT_EQ(EACCES, fs.access(*iv, x_ok, 1, 1));
|
||||
EXPECT_FALSE(fs.access(*iv, R_OK, 1, 1));
|
||||
EXPECT_TRUE(fs.access(*iv, W_OK, 1, 1));
|
||||
EXPECT_FALSE(fs.access(*iv, x_ok, 1, 1));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*iv, R_OK, 1, 3333));
|
||||
EXPECT_EQ(0, fs.access(*iv, W_OK, 1, 3333));
|
||||
EXPECT_EQ(EACCES, fs.access(*iv, x_ok, 1, 3333));
|
||||
EXPECT_TRUE(fs.access(*iv, R_OK, 1, 3333));
|
||||
EXPECT_TRUE(fs.access(*iv, W_OK, 1, 3333));
|
||||
EXPECT_FALSE(fs.access(*iv, x_ok, 1, 3333));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*iv, R_OK, 222, 7));
|
||||
EXPECT_EQ(0, fs.access(*iv, W_OK, 222, 7));
|
||||
EXPECT_EQ(0, fs.access(*iv, x_ok, 222, 7));
|
||||
EXPECT_TRUE(fs.access(*iv, R_OK, 222, 7));
|
||||
EXPECT_TRUE(fs.access(*iv, W_OK, 222, 7));
|
||||
EXPECT_TRUE(fs.access(*iv, x_ok, 222, 7));
|
||||
}
|
||||
|
||||
{
|
||||
@ -1114,19 +1114,19 @@ TEST(mkdwarfs_test, metadata_access) {
|
||||
auto iv = fs.find("/access");
|
||||
ASSERT_TRUE(iv);
|
||||
|
||||
EXPECT_EQ(0, fs.access(*iv, F_OK, 1, 1));
|
||||
EXPECT_TRUE(fs.access(*iv, F_OK, 1, 1));
|
||||
|
||||
EXPECT_EQ(EACCES, fs.access(*iv, R_OK, 1, 1));
|
||||
EXPECT_EQ(EACCES, fs.access(*iv, W_OK, 1, 1));
|
||||
EXPECT_EQ(EACCES, fs.access(*iv, x_ok, 1, 1));
|
||||
EXPECT_FALSE(fs.access(*iv, R_OK, 1, 1));
|
||||
EXPECT_FALSE(fs.access(*iv, W_OK, 1, 1));
|
||||
EXPECT_FALSE(fs.access(*iv, x_ok, 1, 1));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*iv, R_OK, 1, 3333));
|
||||
EXPECT_EQ(EACCES, fs.access(*iv, W_OK, 1, 3333));
|
||||
EXPECT_EQ(EACCES, fs.access(*iv, x_ok, 1, 3333));
|
||||
EXPECT_TRUE(fs.access(*iv, R_OK, 1, 3333));
|
||||
EXPECT_FALSE(fs.access(*iv, W_OK, 1, 3333));
|
||||
EXPECT_FALSE(fs.access(*iv, x_ok, 1, 3333));
|
||||
|
||||
EXPECT_EQ(0, fs.access(*iv, R_OK, 222, 7));
|
||||
EXPECT_EQ(EACCES, fs.access(*iv, W_OK, 222, 7));
|
||||
EXPECT_EQ(0, fs.access(*iv, x_ok, 222, 7));
|
||||
EXPECT_TRUE(fs.access(*iv, R_OK, 222, 7));
|
||||
EXPECT_FALSE(fs.access(*iv, W_OK, 222, 7));
|
||||
EXPECT_TRUE(fs.access(*iv, x_ok, 222, 7));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user