mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-09 12:28:13 -04:00
metadata_v2: implement open
This commit is contained in:
parent
924f7d2bf5
commit
f6ab7cbf53
@ -117,12 +117,12 @@ class metadata_v2 {
|
|||||||
return impl_->find(inode, name);
|
return impl_->find(inode, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
int getattr(entry_view de, struct ::stat* stbuf) const {
|
int getattr(entry_view entry, struct ::stat* stbuf) const {
|
||||||
return impl_->getattr(de, stbuf);
|
return impl_->getattr(entry, stbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::optional<directory_view> opendir(entry_view de) const {
|
std::optional<directory_view> opendir(entry_view entry) const {
|
||||||
return impl_->opendir(de);
|
return impl_->opendir(entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::optional<std::pair<entry_view, std::string_view>>
|
std::optional<std::pair<entry_view, std::string_view>>
|
||||||
@ -132,27 +132,27 @@ 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(entry_view de, int mode, uid_t uid, gid_t gid) const {
|
int access(entry_view entry, int mode, uid_t uid, gid_t gid) const {
|
||||||
return impl_->access(de, mode, uid, gid);
|
return impl_->access(entry, mode, uid, gid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int open(entry_view entry) const { return impl_->open(entry); }
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
size_t block_size() const { return impl_->block_size(); }
|
size_t block_size() const { return impl_->block_size(); }
|
||||||
|
|
||||||
unsigned block_size_bits() const { return impl_->block_size_bits(); }
|
unsigned block_size_bits() const { return impl_->block_size_bits(); }
|
||||||
|
|
||||||
int readlink(entry_view de, char* buf, size_t size) const {
|
int readlink(entry_view entry, char* buf, size_t size) const {
|
||||||
return impl_->readlink(de, buf, size);
|
return impl_->readlink(entry, buf, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
int readlink(entry_view de, std::string* buf) const {
|
int readlink(entry_view entry, std::string* buf) const {
|
||||||
return impl_->readlink(de, buf);
|
return impl_->readlink(entry, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
int statvfs(struct ::statvfs* stbuf) const { return impl_->statvfs(stbuf); }
|
int statvfs(struct ::statvfs* stbuf) const { return impl_->statvfs(stbuf); }
|
||||||
|
|
||||||
int open(entry_view de) const { return impl_->open(de); }
|
|
||||||
|
|
||||||
const chunk_type* get_chunks(int inode, size_t& num) const {
|
const chunk_type* get_chunks(int inode, size_t& num) const {
|
||||||
return impl_->get_chunks(inode, num);
|
return impl_->get_chunks(inode, num);
|
||||||
}
|
}
|
||||||
@ -176,24 +176,26 @@ class metadata_v2 {
|
|||||||
virtual std::optional<entry_view>
|
virtual std::optional<entry_view>
|
||||||
find(int inode, const char* name) const = 0;
|
find(int inode, const char* name) const = 0;
|
||||||
|
|
||||||
virtual int getattr(entry_view de, struct ::stat* stbuf) const = 0;
|
virtual int getattr(entry_view entry, struct ::stat* stbuf) const = 0;
|
||||||
|
|
||||||
virtual std::optional<directory_view> opendir(entry_view de) const = 0;
|
virtual std::optional<directory_view> opendir(entry_view entry) const = 0;
|
||||||
|
|
||||||
virtual std::optional<std::pair<entry_view, std::string_view>>
|
virtual std::optional<std::pair<entry_view, std::string_view>>
|
||||||
readdir(directory_view dir, size_t offset) const = 0;
|
readdir(directory_view dir, size_t offset) const = 0;
|
||||||
|
|
||||||
virtual size_t dirsize(directory_view dir) const = 0;
|
virtual size_t dirsize(directory_view dir) const = 0;
|
||||||
|
|
||||||
virtual int access(entry_view de, int mode, uid_t uid, gid_t gid) const = 0;
|
virtual int
|
||||||
|
access(entry_view entry, int mode, uid_t uid, gid_t gid) const = 0;
|
||||||
|
|
||||||
|
virtual int open(entry_view entry) const = 0;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
virtual size_t block_size() const = 0;
|
virtual size_t block_size() const = 0;
|
||||||
virtual unsigned block_size_bits() const = 0;
|
virtual unsigned block_size_bits() const = 0;
|
||||||
virtual int readlink(entry_view de, char* buf, size_t size) const = 0;
|
virtual int readlink(entry_view entry, char* buf, size_t size) const = 0;
|
||||||
virtual int readlink(entry_view de, std::string* buf) const = 0;
|
virtual int readlink(entry_view entry, std::string* buf) const = 0;
|
||||||
virtual int statvfs(struct ::statvfs* stbuf) const = 0;
|
virtual int statvfs(struct ::statvfs* stbuf) const = 0;
|
||||||
virtual int open(entry_view de) const = 0;
|
|
||||||
virtual const chunk_type* get_chunks(int inode, size_t& num) const = 0;
|
virtual const chunk_type* get_chunks(int inode, size_t& num) const = 0;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
@ -116,6 +116,8 @@ class metadata_v2_ : public metadata_v2::impl {
|
|||||||
|
|
||||||
int access(entry_view entry, int mode, uid_t uid, gid_t gid) const override;
|
int access(entry_view entry, int mode, uid_t uid, gid_t gid) const override;
|
||||||
|
|
||||||
|
int open(entry_view entry) const override;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
size_t block_size() const override {
|
size_t block_size() const override {
|
||||||
return static_cast<size_t>(1) << cfg_->block_size_bits;
|
return static_cast<size_t>(1) << cfg_->block_size_bits;
|
||||||
@ -126,7 +128,6 @@ class metadata_v2_ : public metadata_v2::impl {
|
|||||||
int readlink(entry_view entry, char* buf, size_t size) const override;
|
int readlink(entry_view entry, char* buf, size_t size) const override;
|
||||||
int readlink(entry_view entry, std::string* buf) const override;
|
int readlink(entry_view entry, std::string* buf) const override;
|
||||||
int statvfs(struct ::statvfs* stbuf) const override;
|
int statvfs(struct ::statvfs* stbuf) const override;
|
||||||
int open(entry_view entry) const override;
|
|
||||||
|
|
||||||
const chunk_type* get_chunks(int inode, size_t& num) const override;
|
const chunk_type* get_chunks(int inode, size_t& num) const override;
|
||||||
#endif
|
#endif
|
||||||
@ -459,16 +460,16 @@ int metadata_v2_<LoggerPolicy>::access(entry_view entry, int mode, uid_t uid,
|
|||||||
return (access_mode & mode) == mode ? 0 : EACCES;
|
return (access_mode & mode) == mode ? 0 : EACCES;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
template <typename LoggerPolicy>
|
template <typename LoggerPolicy>
|
||||||
int metadata_v2_<LoggerPolicy>::open(entry_view entry) const {
|
int metadata_v2_<LoggerPolicy>::open(entry_view entry) const {
|
||||||
if (S_ISREG(entry->mode)) {
|
if (S_ISREG(entry.mode())) {
|
||||||
return entry->inode;
|
return entry.inode();
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
template <typename LoggerPolicy>
|
template <typename LoggerPolicy>
|
||||||
int metadata_v2_<LoggerPolicy>::readlink(entry_view entry, char* buf,
|
int metadata_v2_<LoggerPolicy>::readlink(entry_view entry, char* buf,
|
||||||
size_t size) const {
|
size_t size) const {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user