From 44a16c1ca1c340d3f7641fa12b0ffe59cdf92992 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 30 May 2024 14:20:35 +0300 Subject: [PATCH] fix CI Signed-off-by: Trial97 --- launcher/FileSystem.cpp | 84 +++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 53 deletions(-) diff --git a/launcher/FileSystem.cpp b/launcher/FileSystem.cpp index 72df9368a..3ded638ae 100644 --- a/launcher/FileSystem.cpp +++ b/launcher/FileSystem.cpp @@ -74,7 +74,6 @@ #include #include #else -#include #include #endif @@ -809,53 +808,13 @@ QString removeDuplicates(QString a) return b.join(""); } -QString getFileSystemType(const QString& path) -{ - QString fileSystemType; - -#ifdef Q_OS_WIN - wchar_t volume[MAX_PATH + 1] = { 0 }; - if (GetVolumeInformationW((LPCWSTR)path.utf16(), nullptr, 0, nullptr, nullptr, nullptr, volume, MAX_PATH)) { - fileSystemType = QString::fromWCharArray(volume); - } -#elif defined(Q_OS_UNIX) - struct statvfs buf; - if (statvfs(path.toUtf8().constData(), &buf) == 0) { - switch (buf.f_type) { - case 0x4d44: // "MSDOS" - fileSystemType = "FAT32"; - break; - case 0x5346544e: // "NTFS" - fileSystemType = "NTFS"; - break; - case 0x4244: // "HFS+" or "H+" on some systems - case 0x482b: // "HFS+" or "H+" on some systems - fileSystemType = "HFS+"; - break; - case 0x41465342: // "APFS" - fileSystemType = "APFS"; - break; - case 0x65735546: // "exFAT" - fileSystemType = "exFAT"; - break; - default: - break; - } - } -#endif - - return fileSystemType; -} - static const QString BAD_WIN_CHARS = "\"?<>:*|\r\n"; -static const QString BAD_FAT32_CHARS = "<>:\"|?*+.,;=[]!"; +static const QString BAD_FAT_CHARS = "<>:\"|?*+.,;=[]!"; static const QString BAD_NTFS_CHARS = "<>:\"|?*"; static const QString BAD_HFS_CHARS = ":"; -static const QString BAD_EXFAT_CHARS = "<>:\"|?*"; -static const QString BAD_FILENAME_CHARS = - removeDuplicates(BAD_WIN_CHARS + BAD_FAT32_CHARS + BAD_NTFS_CHARS + BAD_HFS_CHARS + BAD_EXFAT_CHARS) + "\\/"; +static const QString BAD_FILENAME_CHARS = removeDuplicates(BAD_WIN_CHARS + BAD_FAT_CHARS + BAD_NTFS_CHARS + BAD_HFS_CHARS) + "\\/"; QString RemoveInvalidFilenameChars(QString string, QChar replaceWith) { @@ -872,16 +831,35 @@ QString RemoveInvalidPathChars(QString path, QChar replaceWith) invalidChars = BAD_WIN_CHARS; #endif - QString fileSystemType = getFileSystemType(QFileInfo(path).absolutePath()); - - if (fileSystemType == "FAT32") { - invalidChars += BAD_FAT32_CHARS; - } else if (fileSystemType == "NTFS") { - invalidChars += BAD_NTFS_CHARS; - } else if (fileSystemType == "HFS+" || fileSystemType == "APFS") { - invalidChars += BAD_HFS_CHARS; - } else if (fileSystemType == "exFAT") { - invalidChars += BAD_EXFAT_CHARS; + switch (statFS(path).fsType) { + case FilesystemType::FAT: + invalidChars += BAD_FAT_CHARS; + break; + case FilesystemType::NTFS: + invalidChars += BAD_NTFS_CHARS; + break; + // case FilesystemType::REFS: + // case FilesystemType::EXT: + // case FilesystemType::EXT_2_OLD: + // case FilesystemType::EXT_2_3_4: + // case FilesystemType::XFS: + // case FilesystemType::BTRFS: + // case FilesystemType::NFS: + // case FilesystemType::ZFS: + case FilesystemType::APFS: + /* fallthrough */ + case FilesystemType::HFS: + /* fallthrough */ + case FilesystemType::HFSPLUS: + /* fallthrough */ + case FilesystemType::HFSX: + invalidChars += BAD_HFS_CHARS; + break; + // case FilesystemType::FUSEBLK: + // case FilesystemType::F2FS: + // case FilesystemType::UNKNOWN: + default: + break; } if (invalidChars.size() != 0) {