/* This file is part of epubgrep. * Copyright © 2021 tastytea * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, version 3. * * This program 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ #ifndef EPUBGREP_ZIP_HPP #define EPUBGREP_ZIP_HPP #include "fs-compat.hpp" #include #include #include #include #include #include namespace epubgrep::zip { //! Return the table of contents of a zip file. [[nodiscard]] std::vector list(const fs::path &filepath); //! Read a file from a zip archive and return its contents. [[nodiscard]] std::string read_file(const fs::path &filepath, std::string_view entry_path); //! Open zip file and return handle. [[nodiscard]] struct archive *open_file(const fs::path &filepath); //! Close zip file. void close_file(struct archive *zipfile, const fs::path &filepath); //! It's std::runtime_error, but with another name. class exception : public std::runtime_error { public: using std::runtime_error::runtime_error; std::uint8_t code{0}; }; } // namespace epubgrep::zip #endif // EPUBGREP_ZIP_HPP