Cleanup entry code

This commit is contained in:
Marcus Holland-Moritz 2020-12-02 12:58:09 +01:00
parent 28c6dd6b7a
commit 8d6734bdaf
2 changed files with 5 additions and 16 deletions

View File

@ -82,9 +82,7 @@ class entry : public file_interface {
virtual void accept(entry_visitor& v, bool preorder = false) = 0; virtual void accept(entry_visitor& v, bool preorder = false) = 0;
virtual uint32_t inode_num() const = 0; virtual uint32_t inode_num() const = 0;
virtual void scan(os_access& os, progress& prog) = 0; virtual void scan(os_access& os, progress& prog) = 0;
const struct ::stat& status() const { return stat_; }
protected:
void scan_stat(os_access& os, std::string const& p);
private: private:
std::string name_; std::string name_;
@ -155,7 +153,7 @@ class link : public entry {
private: private:
std::string link_; std::string link_;
uint32_t inode_ = 0; uint32_t inode_{0};
}; };
class entry_factory { class entry_factory {

View File

@ -44,10 +44,6 @@ entry::entry(const std::string& name, std::shared_ptr<entry> parent,
, parent_(std::move(parent)) , parent_(std::move(parent))
, stat_(st) {} , stat_(st) {}
void entry::scan_stat(os_access& os, std::string const& p) {
os.lstat(p, &stat_);
}
bool entry::has_parent() const { bool entry::has_parent() const {
if (parent_.lock()) { if (parent_.lock()) {
return true; return true;
@ -130,12 +126,9 @@ void file::accept(entry_visitor& v, bool) { v.visit(this); }
void file::scan(os_access& os, progress& prog) { void file::scan(os_access& os, progress& prog) {
static_assert(SHA_DIGEST_LENGTH == sizeof(hash_type)); static_assert(SHA_DIGEST_LENGTH == sizeof(hash_type));
auto p = path();
scan_stat(os, p);
if (size_t s = size(); s > 0) { if (size_t s = size(); s > 0) {
prog.original_size += s; prog.original_size += s;
auto mm = os.map_file(p, s); auto mm = os.map_file(path(), s);
::SHA1(mm->as<unsigned char>(), s, ::SHA1(mm->as<unsigned char>(), s,
reinterpret_cast<unsigned char*>(&hash_[0])); reinterpret_cast<unsigned char*>(&hash_[0]));
@ -190,7 +183,7 @@ void dir::sort() {
void dir::set_inode(uint32_t inode) { inode_ = inode; } void dir::set_inode(uint32_t inode) { inode_ = inode; }
void dir::scan(os_access& os, progress&) { scan_stat(os, path()); } void dir::scan(os_access&, progress&) {}
void dir::pack_entry(thrift::metadata::metadata& mv2, void dir::pack_entry(thrift::metadata::metadata& mv2,
global_entry_data const& data) const { global_entry_data const& data) const {
@ -223,9 +216,7 @@ void link::set_inode(uint32_t inode) { inode_ = inode; }
void link::accept(entry_visitor& v, bool) { v.visit(this); } void link::accept(entry_visitor& v, bool) { v.visit(this); }
void link::scan(os_access& os, progress& prog) { void link::scan(os_access& os, progress& prog) {
auto p = path(); link_ = os.readlink(path(), size());
scan_stat(os, p);
link_ = os.readlink(p, size());
prog.original_size += size(); prog.original_size += size();
} }