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