mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-12 22:10:54 -04:00
metadata_v2: implement dirsize
This commit is contained in:
parent
bd33fbd0eb
commit
236b28da3c
@ -126,10 +126,12 @@ class metadata_v2 {
|
||||
}
|
||||
|
||||
std::optional<std::pair<entry_view, std::string_view>>
|
||||
readdir(directory_view d, size_t offset) const {
|
||||
return impl_->readdir(d, offset);
|
||||
readdir(directory_view dir, size_t offset) const {
|
||||
return impl_->readdir(dir, offset);
|
||||
}
|
||||
|
||||
size_t dirsize(directory_view dir) const { return impl_->dirsize(dir); }
|
||||
|
||||
#if 0
|
||||
size_t block_size() const { return impl_->block_size(); }
|
||||
|
||||
@ -139,8 +141,6 @@ class metadata_v2 {
|
||||
return impl_->access(de, mode, uid, gid);
|
||||
}
|
||||
|
||||
size_t dirsize(directory_view d) const { return impl_->dirsize(d); }
|
||||
|
||||
int readlink(entry_view de, char* buf, size_t size) const {
|
||||
return impl_->readlink(de, buf, size);
|
||||
}
|
||||
@ -181,14 +181,15 @@ class metadata_v2 {
|
||||
virtual std::optional<directory_view> opendir(entry_view de) const = 0;
|
||||
|
||||
virtual std::optional<std::pair<entry_view, std::string_view>>
|
||||
readdir(directory_view d, size_t offset) const = 0;
|
||||
readdir(directory_view dir, size_t offset) const = 0;
|
||||
|
||||
virtual size_t dirsize(directory_view dir) const = 0;
|
||||
|
||||
#if 0
|
||||
virtual size_t block_size() const = 0;
|
||||
virtual unsigned block_size_bits() const = 0;
|
||||
virtual int
|
||||
access(entry_view de, int mode, uid_t uid, gid_t gid) const = 0;
|
||||
virtual size_t dirsize(directory_view d) const = 0;
|
||||
virtual int readlink(entry_view de, char* buf, size_t size) const = 0;
|
||||
virtual int readlink(entry_view de, std::string* buf) const = 0;
|
||||
virtual int statvfs(struct ::statvfs* stbuf) const = 0;
|
||||
|
@ -110,6 +110,10 @@ class metadata_v2_ : public metadata_v2::impl {
|
||||
std::optional<std::pair<entry_view, std::string_view>>
|
||||
readdir(directory_view dir, size_t offset) const override;
|
||||
|
||||
size_t dirsize(directory_view dir) const override {
|
||||
return 2 + dir.entry_count(); // adds '.' and '..', which we fake in ;-)
|
||||
}
|
||||
|
||||
#if 0
|
||||
size_t block_size() const override {
|
||||
return static_cast<size_t>(1) << cfg_->block_size_bits;
|
||||
@ -119,9 +123,6 @@ class metadata_v2_ : public metadata_v2::impl {
|
||||
|
||||
int access(entry_view entry, int mode, uid_t uid,
|
||||
gid_t gid) const override;
|
||||
size_t dirsize(directory_view d) const override {
|
||||
return d->count + 2; // adds '.' and '..', which we fake in ;-)
|
||||
}
|
||||
int readlink(entry_view entry, char* buf, size_t size) const override;
|
||||
int readlink(entry_view entry, std::string* buf) const override;
|
||||
int statvfs(struct ::statvfs* stbuf) const override;
|
||||
@ -148,7 +149,8 @@ class metadata_v2_ : public metadata_v2::impl {
|
||||
void dump(std::ostream& os, const std::string& indent, directory_view dir,
|
||||
std::function<void(const std::string&, uint32_t)> const& icb) const;
|
||||
|
||||
std::optional<entry_view> find(directory_view d, std::string_view name) const;
|
||||
std::optional<entry_view>
|
||||
find(directory_view dir, std::string_view name) const;
|
||||
|
||||
std::string modestring(uint16_t mode) const;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user