mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-10 04:50:31 -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); }
|
file_stat getattr(inode_view entry) const { return impl_->getattr(entry); }
|
||||||
|
|
||||||
int access(inode_view entry, int mode, file_stat::uid_type uid,
|
bool access(inode_view entry, int mode, file_stat::uid_type uid,
|
||||||
file_stat::gid_type gid) const {
|
file_stat::gid_type gid) const {
|
||||||
return impl_->access(entry, mode, uid, gid);
|
return impl_->access(entry, mode, uid, gid);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -248,8 +248,8 @@ class filesystem_v2 {
|
|||||||
find(int inode, const char* name) const = 0;
|
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, std::error_code& ec) const = 0;
|
||||||
virtual file_stat getattr(inode_view entry) const = 0;
|
virtual file_stat getattr(inode_view entry) const = 0;
|
||||||
virtual int access(inode_view entry, int mode, file_stat::uid_type uid,
|
virtual bool access(inode_view entry, int mode, file_stat::uid_type uid,
|
||||||
file_stat::gid_type gid) const = 0;
|
file_stat::gid_type gid) const = 0;
|
||||||
virtual void access(inode_view entry, int mode, file_stat::uid_type uid,
|
virtual void access(inode_view entry, int mode, file_stat::uid_type uid,
|
||||||
file_stat::gid_type gid, std::error_code& ec) const = 0;
|
file_stat::gid_type gid, std::error_code& ec) const = 0;
|
||||||
virtual std::optional<directory_view> opendir(inode_view entry) 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); }
|
size_t dirsize(directory_view dir) const { return impl_->dirsize(dir); }
|
||||||
|
|
||||||
int access(inode_view iv, int mode, file_stat::uid_type uid,
|
void access(inode_view iv, int mode, file_stat::uid_type uid,
|
||||||
file_stat::gid_type gid) const {
|
file_stat::gid_type gid, std::error_code& ec) const {
|
||||||
return impl_->access(iv, mode, uid, gid);
|
impl_->access(iv, mode, uid, gid, ec);
|
||||||
}
|
}
|
||||||
|
|
||||||
int open(inode_view iv) const { return impl_->open(iv); }
|
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 size_t dirsize(directory_view dir) const = 0;
|
||||||
|
|
||||||
virtual int access(inode_view iv, int mode, file_stat::uid_type uid,
|
virtual void access(inode_view iv, int mode, file_stat::uid_type uid,
|
||||||
file_stat::gid_type gid) const = 0;
|
file_stat::gid_type gid, std::error_code& ec) const = 0;
|
||||||
|
|
||||||
virtual int open(inode_view iv) 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;
|
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, std::error_code& ec) const override;
|
||||||
file_stat getattr(inode_view entry) const override;
|
file_stat getattr(inode_view entry) const override;
|
||||||
int access(inode_view entry, int mode, file_stat::uid_type uid,
|
bool access(inode_view entry, int mode, file_stat::uid_type uid,
|
||||||
file_stat::gid_type gid) const override;
|
file_stat::gid_type gid) const override;
|
||||||
void access(inode_view entry, int mode, file_stat::uid_type uid,
|
void access(inode_view entry, int mode, file_stat::uid_type uid,
|
||||||
file_stat::gid_type gid, std::error_code& ec) const override;
|
file_stat::gid_type gid, std::error_code& ec) const override;
|
||||||
std::optional<directory_view> opendir(inode_view entry) 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>
|
template <typename LoggerPolicy>
|
||||||
int filesystem_<LoggerPolicy>::access(inode_view entry, int mode,
|
bool filesystem_<LoggerPolicy>::access(inode_view entry, int mode,
|
||||||
file_stat::uid_type uid,
|
file_stat::uid_type uid,
|
||||||
file_stat::gid_type gid) const {
|
file_stat::gid_type gid) const {
|
||||||
PERFMON_CLS_SCOPED_SECTION(access)
|
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>
|
template <typename LoggerPolicy>
|
||||||
@ -1093,7 +1095,7 @@ void filesystem_<LoggerPolicy>::access(inode_view entry, int mode,
|
|||||||
file_stat::gid_type gid,
|
file_stat::gid_type gid,
|
||||||
std::error_code& ec) const {
|
std::error_code& ec) const {
|
||||||
PERFMON_CLS_SCOPED_SECTION(access_ec)
|
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>
|
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 ;-)
|
return 2 + dir.entry_count(); // adds '.' and '..', which we fake in ;-)
|
||||||
}
|
}
|
||||||
|
|
||||||
int access(inode_view iv, int mode, file_stat::uid_type uid,
|
void access(inode_view iv, int mode, file_stat::uid_type uid,
|
||||||
file_stat::gid_type gid) const override;
|
file_stat::gid_type gid, std::error_code& ec) const override;
|
||||||
|
|
||||||
int open(inode_view iv) 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>
|
template <typename LoggerPolicy>
|
||||||
int metadata_<LoggerPolicy>::access(inode_view iv, int mode,
|
void metadata_<LoggerPolicy>::access(inode_view iv, int mode,
|
||||||
file_stat::uid_type uid,
|
file_stat::uid_type uid,
|
||||||
file_stat::gid_type gid) const {
|
file_stat::gid_type gid,
|
||||||
|
std::error_code& ec) const {
|
||||||
LOG_DEBUG << fmt::format("access([{}, {:o}, {}, {}], {:o}, {}, {})",
|
LOG_DEBUG << fmt::format("access([{}, {:o}, {}, {}], {:o}, {}, {})",
|
||||||
iv.inode_num(), iv.mode(), iv.getuid(), iv.getgid(),
|
iv.inode_num(), iv.mode(), iv.getuid(), iv.getgid(),
|
||||||
mode, uid, gid);
|
mode, uid, gid);
|
||||||
|
|
||||||
if (mode == F_OK) {
|
if (mode == F_OK) {
|
||||||
// easy; we're only interested in the file's existance
|
// easy; we're only interested in the file's existance
|
||||||
return 0;
|
ec.clear();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int access_mode = 0;
|
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>
|
template <typename LoggerPolicy>
|
||||||
|
@ -459,7 +459,9 @@ int op_access_common(LogProxy& log_, dwarfs_userdata& userdata, int mode,
|
|||||||
Find const& find) {
|
Find const& find) {
|
||||||
return checked_call(log_, [&] {
|
return checked_call(log_, [&] {
|
||||||
if (auto entry = find()) {
|
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;
|
return ENOENT;
|
||||||
});
|
});
|
||||||
|
@ -849,7 +849,7 @@ void check_compat(logger& lgr, filesystem_v2 const& fs,
|
|||||||
EXPECT_EQ(1616013816, st.ctime);
|
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);
|
auto inode = fs.open(*entry);
|
||||||
EXPECT_GE(inode, 0);
|
EXPECT_GE(inode, 0);
|
||||||
|
@ -420,10 +420,13 @@ void basic_end_to_end_test(std::string const& compressor,
|
|||||||
ASSERT_TRUE(entry);
|
ASSERT_TRUE(entry);
|
||||||
st1 = fs.getattr(*entry);
|
st1 = fs.getattr(*entry);
|
||||||
EXPECT_EQ(access_fail ? 0 : 10000, st1.size);
|
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");
|
entry = fs.find(0, "baz.pl");
|
||||||
ASSERT_TRUE(entry);
|
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}) {
|
for (auto mp : {&filesystem_v2::walk, &filesystem_v2::walk_data_order}) {
|
||||||
std::map<std::string, file_stat> entries;
|
std::map<std::string, file_stat> entries;
|
||||||
@ -1296,65 +1299,65 @@ TEST(filesystem, root_access_github204) {
|
|||||||
static constexpr int const x_ok{X_OK};
|
static constexpr int const x_ok{X_OK};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, R_OK, 1000, 100));
|
EXPECT_TRUE(fs.access(*other, R_OK, 1000, 100));
|
||||||
EXPECT_EQ(0, fs.access(*group, R_OK, 1000, 100));
|
EXPECT_TRUE(fs.access(*group, R_OK, 1000, 100));
|
||||||
EXPECT_EQ(0, fs.access(*user, R_OK, 1000, 100));
|
EXPECT_TRUE(fs.access(*user, R_OK, 1000, 100));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, W_OK, 1000, 100));
|
EXPECT_TRUE(fs.access(*other, W_OK, 1000, 100));
|
||||||
EXPECT_EQ(0, fs.access(*group, W_OK, 1000, 100));
|
EXPECT_TRUE(fs.access(*group, W_OK, 1000, 100));
|
||||||
EXPECT_EQ(0, fs.access(*user, W_OK, 1000, 100));
|
EXPECT_TRUE(fs.access(*user, W_OK, 1000, 100));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, x_ok, 1000, 100));
|
EXPECT_TRUE(fs.access(*other, x_ok, 1000, 100));
|
||||||
EXPECT_EQ(0, fs.access(*group, x_ok, 1000, 100));
|
EXPECT_TRUE(fs.access(*group, x_ok, 1000, 100));
|
||||||
EXPECT_EQ(0, fs.access(*user, x_ok, 1000, 100));
|
EXPECT_TRUE(fs.access(*user, x_ok, 1000, 100));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, R_OK, 1000, 0));
|
EXPECT_TRUE(fs.access(*other, R_OK, 1000, 0));
|
||||||
EXPECT_EQ(0, fs.access(*group, R_OK, 1000, 0));
|
EXPECT_TRUE(fs.access(*group, R_OK, 1000, 0));
|
||||||
EXPECT_EQ(0, fs.access(*user, R_OK, 1000, 0));
|
EXPECT_TRUE(fs.access(*user, R_OK, 1000, 0));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, W_OK, 1000, 0));
|
EXPECT_TRUE(fs.access(*other, W_OK, 1000, 0));
|
||||||
EXPECT_EQ(0, fs.access(*group, W_OK, 1000, 0));
|
EXPECT_TRUE(fs.access(*group, W_OK, 1000, 0));
|
||||||
EXPECT_EQ(0, fs.access(*user, W_OK, 1000, 0));
|
EXPECT_TRUE(fs.access(*user, W_OK, 1000, 0));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, x_ok, 1000, 0));
|
EXPECT_TRUE(fs.access(*other, x_ok, 1000, 0));
|
||||||
EXPECT_EQ(0, fs.access(*group, x_ok, 1000, 0));
|
EXPECT_TRUE(fs.access(*group, x_ok, 1000, 0));
|
||||||
EXPECT_EQ(0, fs.access(*user, x_ok, 1000, 0));
|
EXPECT_TRUE(fs.access(*user, x_ok, 1000, 0));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, R_OK, 2000, 100));
|
EXPECT_TRUE(fs.access(*other, R_OK, 2000, 100));
|
||||||
EXPECT_EQ(0, fs.access(*group, R_OK, 2000, 100));
|
EXPECT_TRUE(fs.access(*group, R_OK, 2000, 100));
|
||||||
EXPECT_EQ(EACCES, fs.access(*user, R_OK, 2000, 100));
|
EXPECT_FALSE(fs.access(*user, R_OK, 2000, 100));
|
||||||
|
|
||||||
EXPECT_EQ(EACCES, fs.access(*other, W_OK, 2000, 100));
|
EXPECT_FALSE(fs.access(*other, W_OK, 2000, 100));
|
||||||
EXPECT_EQ(EACCES, fs.access(*group, W_OK, 2000, 100));
|
EXPECT_FALSE(fs.access(*group, W_OK, 2000, 100));
|
||||||
EXPECT_EQ(EACCES, fs.access(*user, W_OK, 2000, 100));
|
EXPECT_FALSE(fs.access(*user, W_OK, 2000, 100));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, x_ok, 2000, 100));
|
EXPECT_TRUE(fs.access(*other, x_ok, 2000, 100));
|
||||||
EXPECT_EQ(0, fs.access(*group, x_ok, 2000, 100));
|
EXPECT_TRUE(fs.access(*group, x_ok, 2000, 100));
|
||||||
EXPECT_EQ(EACCES, fs.access(*user, x_ok, 2000, 100));
|
EXPECT_FALSE(fs.access(*user, x_ok, 2000, 100));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, R_OK, 2000, 200));
|
EXPECT_TRUE(fs.access(*other, R_OK, 2000, 200));
|
||||||
EXPECT_EQ(EACCES, fs.access(*group, R_OK, 2000, 200));
|
EXPECT_FALSE(fs.access(*group, R_OK, 2000, 200));
|
||||||
EXPECT_EQ(EACCES, fs.access(*user, R_OK, 2000, 200));
|
EXPECT_FALSE(fs.access(*user, R_OK, 2000, 200));
|
||||||
|
|
||||||
EXPECT_EQ(EACCES, fs.access(*other, W_OK, 2000, 200));
|
EXPECT_FALSE(fs.access(*other, W_OK, 2000, 200));
|
||||||
EXPECT_EQ(EACCES, fs.access(*group, W_OK, 2000, 200));
|
EXPECT_FALSE(fs.access(*group, W_OK, 2000, 200));
|
||||||
EXPECT_EQ(EACCES, fs.access(*user, W_OK, 2000, 200));
|
EXPECT_FALSE(fs.access(*user, W_OK, 2000, 200));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, x_ok, 2000, 200));
|
EXPECT_TRUE(fs.access(*other, x_ok, 2000, 200));
|
||||||
EXPECT_EQ(EACCES, fs.access(*group, x_ok, 2000, 200));
|
EXPECT_FALSE(fs.access(*group, x_ok, 2000, 200));
|
||||||
EXPECT_EQ(EACCES, fs.access(*user, x_ok, 2000, 200));
|
EXPECT_FALSE(fs.access(*user, x_ok, 2000, 200));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, R_OK, 0, 0));
|
EXPECT_TRUE(fs.access(*other, R_OK, 0, 0));
|
||||||
EXPECT_EQ(0, fs.access(*group, R_OK, 0, 0));
|
EXPECT_TRUE(fs.access(*group, R_OK, 0, 0));
|
||||||
EXPECT_EQ(0, fs.access(*user, R_OK, 0, 0));
|
EXPECT_TRUE(fs.access(*user, R_OK, 0, 0));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, W_OK, 0, 0));
|
EXPECT_TRUE(fs.access(*other, W_OK, 0, 0));
|
||||||
EXPECT_EQ(0, fs.access(*group, W_OK, 0, 0));
|
EXPECT_TRUE(fs.access(*group, W_OK, 0, 0));
|
||||||
EXPECT_EQ(0, fs.access(*user, W_OK, 0, 0));
|
EXPECT_TRUE(fs.access(*user, W_OK, 0, 0));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, x_ok, 0, 0));
|
EXPECT_TRUE(fs.access(*other, x_ok, 0, 0));
|
||||||
EXPECT_EQ(0, fs.access(*group, x_ok, 0, 0));
|
EXPECT_TRUE(fs.access(*group, x_ok, 0, 0));
|
||||||
EXPECT_EQ(0, fs.access(*user, x_ok, 0, 0));
|
EXPECT_TRUE(fs.access(*user, x_ok, 0, 0));
|
||||||
|
|
||||||
other = fs.find("/other/file");
|
other = fs.find("/other/file");
|
||||||
group = fs.find("/group/file");
|
group = fs.find("/group/file");
|
||||||
@ -1364,63 +1367,63 @@ TEST(filesystem, root_access_github204) {
|
|||||||
EXPECT_TRUE(group);
|
EXPECT_TRUE(group);
|
||||||
EXPECT_TRUE(user);
|
EXPECT_TRUE(user);
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, R_OK, 1000, 100));
|
EXPECT_TRUE(fs.access(*other, R_OK, 1000, 100));
|
||||||
EXPECT_EQ(0, fs.access(*group, R_OK, 1000, 100));
|
EXPECT_TRUE(fs.access(*group, R_OK, 1000, 100));
|
||||||
EXPECT_EQ(0, fs.access(*user, R_OK, 1000, 100));
|
EXPECT_TRUE(fs.access(*user, R_OK, 1000, 100));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, W_OK, 1000, 100));
|
EXPECT_TRUE(fs.access(*other, W_OK, 1000, 100));
|
||||||
EXPECT_EQ(0, fs.access(*group, W_OK, 1000, 100));
|
EXPECT_TRUE(fs.access(*group, W_OK, 1000, 100));
|
||||||
EXPECT_EQ(0, fs.access(*user, W_OK, 1000, 100));
|
EXPECT_TRUE(fs.access(*user, W_OK, 1000, 100));
|
||||||
|
|
||||||
EXPECT_EQ(EACCES, fs.access(*other, x_ok, 1000, 100));
|
EXPECT_FALSE(fs.access(*other, x_ok, 1000, 100));
|
||||||
EXPECT_EQ(EACCES, fs.access(*group, x_ok, 1000, 100));
|
EXPECT_FALSE(fs.access(*group, x_ok, 1000, 100));
|
||||||
EXPECT_EQ(EACCES, fs.access(*user, x_ok, 1000, 100));
|
EXPECT_FALSE(fs.access(*user, x_ok, 1000, 100));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, R_OK, 1000, 0));
|
EXPECT_TRUE(fs.access(*other, R_OK, 1000, 0));
|
||||||
EXPECT_EQ(0, fs.access(*group, R_OK, 1000, 0));
|
EXPECT_TRUE(fs.access(*group, R_OK, 1000, 0));
|
||||||
EXPECT_EQ(0, fs.access(*user, R_OK, 1000, 0));
|
EXPECT_TRUE(fs.access(*user, R_OK, 1000, 0));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, W_OK, 1000, 0));
|
EXPECT_TRUE(fs.access(*other, W_OK, 1000, 0));
|
||||||
EXPECT_EQ(0, fs.access(*group, W_OK, 1000, 0));
|
EXPECT_TRUE(fs.access(*group, W_OK, 1000, 0));
|
||||||
EXPECT_EQ(0, fs.access(*user, W_OK, 1000, 0));
|
EXPECT_TRUE(fs.access(*user, W_OK, 1000, 0));
|
||||||
|
|
||||||
EXPECT_EQ(EACCES, fs.access(*other, x_ok, 1000, 0));
|
EXPECT_FALSE(fs.access(*other, x_ok, 1000, 0));
|
||||||
EXPECT_EQ(EACCES, fs.access(*group, x_ok, 1000, 0));
|
EXPECT_FALSE(fs.access(*group, x_ok, 1000, 0));
|
||||||
EXPECT_EQ(EACCES, fs.access(*user, x_ok, 1000, 0));
|
EXPECT_FALSE(fs.access(*user, x_ok, 1000, 0));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, R_OK, 2000, 100));
|
EXPECT_TRUE(fs.access(*other, R_OK, 2000, 100));
|
||||||
EXPECT_EQ(0, fs.access(*group, R_OK, 2000, 100));
|
EXPECT_TRUE(fs.access(*group, R_OK, 2000, 100));
|
||||||
EXPECT_EQ(EACCES, fs.access(*user, R_OK, 2000, 100));
|
EXPECT_FALSE(fs.access(*user, R_OK, 2000, 100));
|
||||||
|
|
||||||
EXPECT_EQ(EACCES, fs.access(*other, W_OK, 2000, 100));
|
EXPECT_FALSE(fs.access(*other, W_OK, 2000, 100));
|
||||||
EXPECT_EQ(EACCES, fs.access(*group, W_OK, 2000, 100));
|
EXPECT_FALSE(fs.access(*group, W_OK, 2000, 100));
|
||||||
EXPECT_EQ(EACCES, fs.access(*user, W_OK, 2000, 100));
|
EXPECT_FALSE(fs.access(*user, W_OK, 2000, 100));
|
||||||
|
|
||||||
EXPECT_EQ(EACCES, fs.access(*other, x_ok, 2000, 100));
|
EXPECT_FALSE(fs.access(*other, x_ok, 2000, 100));
|
||||||
EXPECT_EQ(EACCES, fs.access(*group, x_ok, 2000, 100));
|
EXPECT_FALSE(fs.access(*group, x_ok, 2000, 100));
|
||||||
EXPECT_EQ(EACCES, fs.access(*user, x_ok, 2000, 100));
|
EXPECT_FALSE(fs.access(*user, x_ok, 2000, 100));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, R_OK, 2000, 200));
|
EXPECT_TRUE(fs.access(*other, R_OK, 2000, 200));
|
||||||
EXPECT_EQ(EACCES, fs.access(*group, R_OK, 2000, 200));
|
EXPECT_FALSE(fs.access(*group, R_OK, 2000, 200));
|
||||||
EXPECT_EQ(EACCES, fs.access(*user, R_OK, 2000, 200));
|
EXPECT_FALSE(fs.access(*user, R_OK, 2000, 200));
|
||||||
|
|
||||||
EXPECT_EQ(EACCES, fs.access(*other, W_OK, 2000, 200));
|
EXPECT_FALSE(fs.access(*other, W_OK, 2000, 200));
|
||||||
EXPECT_EQ(EACCES, fs.access(*group, W_OK, 2000, 200));
|
EXPECT_FALSE(fs.access(*group, W_OK, 2000, 200));
|
||||||
EXPECT_EQ(EACCES, fs.access(*user, W_OK, 2000, 200));
|
EXPECT_FALSE(fs.access(*user, W_OK, 2000, 200));
|
||||||
|
|
||||||
EXPECT_EQ(EACCES, fs.access(*other, x_ok, 2000, 200));
|
EXPECT_FALSE(fs.access(*other, x_ok, 2000, 200));
|
||||||
EXPECT_EQ(EACCES, fs.access(*group, x_ok, 2000, 200));
|
EXPECT_FALSE(fs.access(*group, x_ok, 2000, 200));
|
||||||
EXPECT_EQ(EACCES, fs.access(*user, x_ok, 2000, 200));
|
EXPECT_FALSE(fs.access(*user, x_ok, 2000, 200));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, R_OK, 0, 0));
|
EXPECT_TRUE(fs.access(*other, R_OK, 0, 0));
|
||||||
EXPECT_EQ(0, fs.access(*group, R_OK, 0, 0));
|
EXPECT_TRUE(fs.access(*group, R_OK, 0, 0));
|
||||||
EXPECT_EQ(0, fs.access(*user, R_OK, 0, 0));
|
EXPECT_TRUE(fs.access(*user, R_OK, 0, 0));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*other, W_OK, 0, 0));
|
EXPECT_TRUE(fs.access(*other, W_OK, 0, 0));
|
||||||
EXPECT_EQ(0, fs.access(*group, W_OK, 0, 0));
|
EXPECT_TRUE(fs.access(*group, W_OK, 0, 0));
|
||||||
EXPECT_EQ(0, fs.access(*user, W_OK, 0, 0));
|
EXPECT_TRUE(fs.access(*user, W_OK, 0, 0));
|
||||||
|
|
||||||
EXPECT_EQ(EACCES, fs.access(*other, x_ok, 0, 0));
|
EXPECT_FALSE(fs.access(*other, x_ok, 0, 0));
|
||||||
EXPECT_EQ(EACCES, fs.access(*group, x_ok, 0, 0));
|
EXPECT_FALSE(fs.access(*group, x_ok, 0, 0));
|
||||||
EXPECT_EQ(EACCES, fs.access(*user, 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");
|
auto iv = fs.find("/access");
|
||||||
ASSERT_TRUE(iv);
|
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_FALSE(fs.access(*iv, R_OK, 1, 1));
|
||||||
EXPECT_EQ(0, fs.access(*iv, W_OK, 1, 1));
|
EXPECT_TRUE(fs.access(*iv, W_OK, 1, 1));
|
||||||
EXPECT_EQ(EACCES, fs.access(*iv, x_ok, 1, 1));
|
EXPECT_FALSE(fs.access(*iv, x_ok, 1, 1));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*iv, R_OK, 1, 3333));
|
EXPECT_TRUE(fs.access(*iv, R_OK, 1, 3333));
|
||||||
EXPECT_EQ(0, fs.access(*iv, W_OK, 1, 3333));
|
EXPECT_TRUE(fs.access(*iv, W_OK, 1, 3333));
|
||||||
EXPECT_EQ(EACCES, fs.access(*iv, x_ok, 1, 3333));
|
EXPECT_FALSE(fs.access(*iv, x_ok, 1, 3333));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*iv, R_OK, 222, 7));
|
EXPECT_TRUE(fs.access(*iv, R_OK, 222, 7));
|
||||||
EXPECT_EQ(0, fs.access(*iv, W_OK, 222, 7));
|
EXPECT_TRUE(fs.access(*iv, W_OK, 222, 7));
|
||||||
EXPECT_EQ(0, fs.access(*iv, x_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");
|
auto iv = fs.find("/access");
|
||||||
ASSERT_TRUE(iv);
|
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_FALSE(fs.access(*iv, R_OK, 1, 1));
|
||||||
EXPECT_EQ(EACCES, fs.access(*iv, W_OK, 1, 1));
|
EXPECT_FALSE(fs.access(*iv, W_OK, 1, 1));
|
||||||
EXPECT_EQ(EACCES, fs.access(*iv, x_ok, 1, 1));
|
EXPECT_FALSE(fs.access(*iv, x_ok, 1, 1));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*iv, R_OK, 1, 3333));
|
EXPECT_TRUE(fs.access(*iv, R_OK, 1, 3333));
|
||||||
EXPECT_EQ(EACCES, fs.access(*iv, W_OK, 1, 3333));
|
EXPECT_FALSE(fs.access(*iv, W_OK, 1, 3333));
|
||||||
EXPECT_EQ(EACCES, fs.access(*iv, x_ok, 1, 3333));
|
EXPECT_FALSE(fs.access(*iv, x_ok, 1, 3333));
|
||||||
|
|
||||||
EXPECT_EQ(0, fs.access(*iv, R_OK, 222, 7));
|
EXPECT_TRUE(fs.access(*iv, R_OK, 222, 7));
|
||||||
EXPECT_EQ(EACCES, fs.access(*iv, W_OK, 222, 7));
|
EXPECT_FALSE(fs.access(*iv, W_OK, 222, 7));
|
||||||
EXPECT_EQ(0, fs.access(*iv, x_ok, 222, 7));
|
EXPECT_TRUE(fs.access(*iv, x_ok, 222, 7));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user