diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2026-06-04 18:14:19 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2026-06-04 18:14:19 +0200 |
| commit | a95acc4d382cbb4937097e7fa2f6526974a26fcc (patch) | |
| tree | 71b922a413fad15d4796ee613a91240f4ae59df0 /cabinet | |
| parent | 0ff3f826d9772d3695f481e0a3d0bc1517dd3ae4 (diff) | |
| download | cabinet-a95acc4d382cbb4937097e7fa2f6526974a26fcc.tar.xz cabinet-a95acc4d382cbb4937097e7fa2f6526974a26fcc.zip | |
core: add basic libmagic abstraction skeleton
Diffstat (limited to 'cabinet')
| -rw-r--r-- | cabinet/magic.cpp | 19 | ||||
| -rw-r--r-- | cabinet/magic.hpp | 36 | ||||
| -rw-r--r-- | cabinet/main.cpp | 6 |
3 files changed, 60 insertions, 1 deletions
diff --git a/cabinet/magic.cpp b/cabinet/magic.cpp new file mode 100644 index 0000000..f8d7337 --- /dev/null +++ b/cabinet/magic.cpp @@ -0,0 +1,19 @@ +#include <cabinet/magic.hpp> + +#include <magic.h> + +#include <utility> + +namespace cab +{ + + magic::magic(magic::flags flags) + : m_cookie{magic_open(std::to_underlying(flags))} + {} + + magic::~magic() + { + magic_close(m_cookie); + } + +} // namespace cab diff --git a/cabinet/magic.hpp b/cabinet/magic.hpp new file mode 100644 index 0000000..3ad6dfa --- /dev/null +++ b/cabinet/magic.hpp @@ -0,0 +1,36 @@ +#ifndef CABINET_MAGIC_HPP +#define CABINET_MAGIC_HPP + +#include <magic.h> + +#include <utility> + +namespace cab +{ + + struct magic + { + enum struct flags : decltype(MAGIC_NONE) + { + none = MAGIC_NONE, + print_debug = MAGIC_DEBUG, + follow_symlinks = MAGIC_SYMLINK, + inspect_compressed = MAGIC_COMPRESS, + inspect_devices = MAGIC_DEVICES, + }; + + magic(flags flags); + ~magic(); + + private: + magic_t m_cookie{}; + }; + + constexpr auto operator|(magic::flags lhs, magic::flags rhs) noexcept -> magic::flags + { + return static_cast<magic::flags>(std::to_underlying(lhs) | std::to_underlying(rhs)); + } + +} // namespace cab + +#endif diff --git a/cabinet/main.cpp b/cabinet/main.cpp index 09509dd..26dd690 100644 --- a/cabinet/main.cpp +++ b/cabinet/main.cpp @@ -1,2 +1,6 @@ -auto main() -> int { +#include <cabinet/magic.hpp> + +auto main() -> int +{ + [[maybe_unused]] auto magic = cab::magic{cab::magic::flags::print_debug | cab::magic::flags::follow_symlinks}; } |
