diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2026-06-04 19:58:56 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2026-06-04 19:58:56 +0200 |
| commit | 7832816c0d239c1cd7a91daef3f15c8f94197e28 (patch) | |
| tree | d1de8dec25496a3a98234644a60d5c6f98140f06 /cabinet/main.cpp | |
| parent | 11df846b1ec951dd35feb9b0bad42486c7b94dca (diff) | |
| download | cabinet-7832816c0d239c1cd7a91daef3f15c8f94197e28.tar.xz cabinet-7832816c0d239c1cd7a91daef3f15c8f94197e28.zip | |
magic: implement file processing
Diffstat (limited to 'cabinet/main.cpp')
| -rw-r--r-- | cabinet/main.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/cabinet/main.cpp b/cabinet/main.cpp index bec0a5c..77a73ca 100644 --- a/cabinet/main.cpp +++ b/cabinet/main.cpp @@ -1,18 +1,33 @@ #include <cabinet/magic.hpp> #include <cstdlib> +#include <filesystem> #include <iostream> #include <print> -auto main() -> int +using flags = cab::magic::flags; + +auto main(int argc, char ** argv) -> int { - auto magic = cab::magic::open(cab::magic::flags::print_debug | // - cab::magic::flags::follow_symlinks | // - cab::magic::flags::mime); + if (argc != 2) + { + std::println(std::cerr, "Expected a filename"); + return EXIT_FAILURE; + } + auto magic = cab::magic::open(flags::follow_symlinks | flags::mime_type); if (!magic) { std::println(std::cerr, "Failed to initialize libmagic: {}", magic.error().message()); return EXIT_FAILURE; } + + auto mime_type = magic->process(std::filesystem::path{argv[1]}); + if (!mime_type) + { + std::println(std::cerr, "Failed to determine file type: {}", mime_type.error()); + return EXIT_FAILURE; + } + + std::println("{}: {}", argv[1], mime_type.value()); } |
