/* vim:set ts=2 sw=2 sts=2 et: */ /** * \author Marcus Holland-Moritz (github@mhxnet.de) * \copyright Copyright (c) Marcus Holland-Moritz * * This file is part of dwarfs. * * dwarfs is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * dwarfs is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with dwarfs. If not, see . */ #include #include #include #include #include #include #include #include #include #include #include namespace dwarfs::reader { inode_view::mode_type inode_view::mode() const { return iv_->mode(); } std::string inode_view::mode_string() const { return iv_->mode_string(); } std::string inode_view::perm_string() const { return iv_->perm_string(); } posix_file_type::value inode_view::type() const { return iv_->type(); } bool inode_view::is_regular_file() const { return iv_->type() == posix_file_type::regular; } bool inode_view::is_directory() const { return iv_->type() == posix_file_type::directory; } bool inode_view::is_symlink() const { return iv_->type() == posix_file_type::symlink; } inode_view::uid_type inode_view::getuid() const { return iv_->getuid(); } inode_view::gid_type inode_view::getgid() const { return iv_->getgid(); } uint32_t inode_view::inode_num() const { return iv_->inode_num(); } std::string dir_entry_view::name() const { return impl_->name(); } inode_view dir_entry_view::inode() const { return inode_view{impl_->inode()}; } bool dir_entry_view::is_root() const { return impl_->is_root(); } std::optional dir_entry_view::parent() const { if (auto p = impl_->parent()) { return dir_entry_view{std::move(p)}; } return std::nullopt; } std::string dir_entry_view::path() const { return impl_->path(); } std::string dir_entry_view::unix_path() const { return impl_->unix_path(); } std::filesystem::path dir_entry_view::fs_path() const { return impl_->fs_path(); } std::wstring dir_entry_view::wpath() const { return impl_->wpath(); } void dir_entry_view::append_to(std::filesystem::path& p) const { impl_->append_to(p); } uint32_t dir_entry_view::self_index() const { return impl_->self_index(); } uint32_t directory_view::first_entry(uint32_t ino) const { return g_->first_dir_entry(ino); } uint32_t directory_view::parent_entry(uint32_t ino) const { return g_->parent_dir_entry(ino); } uint32_t directory_view::entry_count() const { return first_entry(inode_ + 1) - first_entry(); } boost::integer_range directory_view::entry_range() const { return boost::irange(first_entry(), first_entry(inode_ + 1)); } uint32_t directory_view::parent_inode() const { if (inode_ == 0) { return 0; } auto ent = parent_entry(inode_); if (auto e = g_->meta().dir_entries()) { ent = (*e)[ent].inode_num(); } return ent; } } // namespace dwarfs::reader