From 7832816c0d239c1cd7a91daef3f15c8f94197e28 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Thu, 4 Jun 2026 19:58:56 +0200 Subject: magic: implement file processing --- cabinet/main.cpp | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'cabinet/main.cpp') 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 #include +#include #include #include -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()); } -- cgit v1.2.3