diff options
Diffstat (limited to 'cabinet/magic.hpp')
| -rw-r--r-- | cabinet/magic.hpp | 36 |
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 |
