From 257ff4b065bbdcfbec186b6a10a6c210e4bee1ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Mon, 14 Jul 2025 23:59:59 -0300 Subject: [PATCH] Flag compressed archive extensions as binary files (SpartanJ/ecode#589). --- src/tools/ecode/pathhelper.cpp | 14 +++++++++++++- src/tools/ecode/pathhelper.hpp | 2 ++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/tools/ecode/pathhelper.cpp b/src/tools/ecode/pathhelper.cpp index e9d6fd124..5b1247a09 100644 --- a/src/tools/ecode/pathhelper.cpp +++ b/src/tools/ecode/pathhelper.cpp @@ -22,7 +22,19 @@ bool PathHelper::isDocumentExtension( std::string_view ext ) { } bool PathHelper::isOpenExternalExtension( std::string_view ext ) { - return isVideoExtension( ext ) || isDocumentExtension( ext ); + return isVideoExtension( ext ) || isDocumentExtension( ext ) || + isCompressedArchiveExtension( ext ); +} + +bool PathHelper::isCompressedArchiveExtension( std::string_view ext ) { + static constexpr std::array extensions = { + "zip", "rar", "7z", "tar", "gz", "bz2", "xz", "z", "arj", "cab", + "iso", "lzh", "lzma", "tgz", "tbz2", "txz", "zst", "ace", "arc", "cpio", + "deb", "dmg", "lrz", "lz", "lzo", "rpm", "shar", "wim", "zipx" }; + for ( const auto& cext : extensions ) + if ( String::iequals( ext, cext ) ) + return true; + return false; } } // namespace ecode diff --git a/src/tools/ecode/pathhelper.hpp b/src/tools/ecode/pathhelper.hpp index 342532f96..c90c5690d 100644 --- a/src/tools/ecode/pathhelper.hpp +++ b/src/tools/ecode/pathhelper.hpp @@ -57,6 +57,8 @@ struct PathHelper { static bool isDocumentExtension( std::string_view ext ); static bool isOpenExternalExtension( std::string_view ext ); + + static bool isCompressedArchiveExtension( std::string_view ext ); }; } // namespace ecode