From 79549aab5b9ca8f0cad4f00bc8ad68b7091ab65f Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Fri, 5 Jun 2026 10:12:56 +0200 Subject: magic: implement buffer processing support --- cabinet/main.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'cabinet/main.cpp') diff --git a/cabinet/main.cpp b/cabinet/main.cpp index ff35d34..3602142 100644 --- a/cabinet/main.cpp +++ b/cabinet/main.cpp @@ -1,8 +1,13 @@ #include #include +#include +#include +#include +#include #include +#include #include #include @@ -23,12 +28,21 @@ auto main(int argc, char ** argv) -> int return EXIT_FAILURE; } - auto fd = open(argv[1], O_RDONLY); - auto mime_type = magic->process(fd); + auto fd = ::open(argv[1], O_RDONLY); + if (fd < 0) + { + std::println(std::cerr, "Failed to determine file type: {}", ::strerror(errno)); + return EXIT_FAILURE; + } + + std::array buffer{}; + ::read(fd, buffer.data(), buffer.size()); + auto mime_type = magic->process(buffer); if (!mime_type) { std::println(std::cerr, "Failed to determine file type: {}", mime_type.error().message()); return EXIT_FAILURE; } + std::println("{}: {}", argv[1], mime_type.value()); } -- cgit v1.2.3