summaryrefslogtreecommitdiff
path: root/cabinet/magic.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'cabinet/magic.hpp')
-rw-r--r--cabinet/magic.hpp36
1 files changed, 36 insertions, 0 deletions
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