From 45d02bd22aa9c20fa8450c85f34a9505a739f475 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 17 Dec 2017 20:03:41 +0100 Subject: [PATCH] Ref T203, file utility functions --- src/blackmisc/fileutils.cpp | 27 +++++++++++++++++++++++---- src/blackmisc/fileutils.h | 9 +++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/blackmisc/fileutils.cpp b/src/blackmisc/fileutils.cpp index b01e0128c..469ba06f6 100644 --- a/src/blackmisc/fileutils.cpp +++ b/src/blackmisc/fileutils.cpp @@ -216,10 +216,7 @@ namespace BlackMisc if (excludeDirectories.isEmpty()) { return false; } for (const QString &ex : excludeDirectories) { - if (matchesExcludeDirectory(directoryPath, ex, cs)) - { - return true; - } + if (matchesExcludeDirectory(directoryPath, ex, cs)) { return true; } } return false; } @@ -394,4 +391,26 @@ namespace BlackMisc } return QString("%1 %2").arg(CMathUtils::roundAsString(currentSize, 2), unit); } + + const QStringList &CFileUtils::executableSuffixes() + { + // incomplete list of file name appendixes + static const QStringList appendixes({".exe", ".dmg", ".run"}); + return appendixes; + } + + bool CFileUtils::isExecutableFile(const QString &fileName) + { + for (const QString &app : CFileUtils::executableSuffixes()) + { + if (fileName.endsWith(app, Qt::CaseInsensitive)) { return true; } + } + return CFileUtils::isSwiftInstaller(fileName); + } + + bool CFileUtils::isSwiftInstaller(const QString &fileName) + { + if (fileName.isEmpty()) { return false; } + return fileName.contains("swift", Qt::CaseInsensitive) && fileName.contains("installer"); + } } // ns diff --git a/src/blackmisc/fileutils.h b/src/blackmisc/fileutils.h index cb20e2250..9907d1810 100644 --- a/src/blackmisc/fileutils.h +++ b/src/blackmisc/fileutils.h @@ -139,6 +139,15 @@ namespace BlackMisc //! Human readable (GB, MB, ..) file size static QString humanReadableFileSize(qint64 size); + + //! Executable file name appendixes + static const QStringList &executableSuffixes(); + + //! Executable file (decided by appendix) + static bool isExecutableFile(const QString &fileName); + + //! swift installer + static bool isSwiftInstaller(const QString &fileName); }; } // ns