From 62899bbd734cde1cb4ffabacd9b1a30ea66909ad Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Sun, 28 Jul 2024 16:58:17 +0200 Subject: [PATCH] refactor: remove access version returning int --- include/dwarfs/filesystem_v2.h | 8 +- include/dwarfs/internal/metadata_v2.h | 10 +- src/dwarfs/filesystem_v2.cpp | 16 ++- src/dwarfs/internal/metadata_v2.cpp | 20 ++- src/dwarfs_main.cpp | 4 +- test/compat_test.cpp | 2 +- test/dwarfs_test.cpp | 187 +++++++++++++------------- test/tool_main_test.cpp | 40 +++--- 8 files changed, 150 insertions(+), 137 deletions(-) diff --git a/include/dwarfs/filesystem_v2.h b/include/dwarfs/filesystem_v2.h index 08b792a0..f4d54a11 100644 --- a/include/dwarfs/filesystem_v2.h +++ b/include/dwarfs/filesystem_v2.h @@ -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 opendir(inode_view entry) const = 0; diff --git a/include/dwarfs/internal/metadata_v2.h b/include/dwarfs/internal/metadata_v2.h index d9de05be..e5d52d7c 100644 --- a/include/dwarfs/internal/metadata_v2.h +++ b/include/dwarfs/internal/metadata_v2.h @@ -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; diff --git a/src/dwarfs/filesystem_v2.cpp b/src/dwarfs/filesystem_v2.cpp index f79ffcbd..5a048c59 100644 --- a/src/dwarfs/filesystem_v2.cpp +++ b/src/dwarfs/filesystem_v2.cpp @@ -441,8 +441,8 @@ class filesystem_ final : public filesystem_v2::impl { std::optional 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 opendir(inode_view entry) const override; @@ -1080,11 +1080,13 @@ file_stat filesystem_::getattr(inode_view entry) const { } template -int filesystem_::access(inode_view entry, int mode, - file_stat::uid_type uid, - file_stat::gid_type gid) const { +bool filesystem_::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 @@ -1093,7 +1095,7 @@ void filesystem_::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 diff --git a/src/dwarfs/internal/metadata_v2.cpp b/src/dwarfs/internal/metadata_v2.cpp index 36901475..638f5757 100644 --- a/src/dwarfs/internal/metadata_v2.cpp +++ b/src/dwarfs/internal/metadata_v2.cpp @@ -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_::readdir(directory_view dir, size_t offset) const { } template -int metadata_::access(inode_view iv, int mode, - file_stat::uid_type uid, - file_stat::gid_type gid) const { +void metadata_::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_::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 diff --git a/src/dwarfs_main.cpp b/src/dwarfs_main.cpp index 66da2d1d..96c3ccd4 100644 --- a/src/dwarfs_main.cpp +++ b/src/dwarfs_main.cpp @@ -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; }); diff --git a/test/compat_test.cpp b/test/compat_test.cpp index 68e1f1ab..072eb87c 100644 --- a/test/compat_test.cpp +++ b/test/compat_test.cpp @@ -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); diff --git a/test/dwarfs_test.cpp b/test/dwarfs_test.cpp index 19f755da..828a62dd 100644 --- a/test/dwarfs_test.cpp +++ b/test/dwarfs_test.cpp @@ -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 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)); } diff --git a/test/tool_main_test.cpp b/test/tool_main_test.cpp index a6b10a88..3337a824 100644 --- a/test/tool_main_test.cpp +++ b/test/tool_main_test.cpp @@ -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)); } }