From da912c3b139554d60a8af20b5b677843513767c8 Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Sat, 27 Jun 2026 07:23:57 +0200 Subject: [PATCH] [PATCH] KFileSystemType: add custom determineFileSystemTypeImpl for Hurd Add a specific implementation of determineFileSystemTypeImpl for GNU/Hurd, checking the proper values for the filesystem type/magic (rather than the Linux values). This avoids the need to guard Linux bits in the Linux implementation, so those checks are dropped now. Gbp-Pq: Name upstream_KFileSystemType-add-custom-determineFileSystemTypeIm.patch --- src/lib/io/kfilesystemtype.cpp | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/lib/io/kfilesystemtype.cpp b/src/lib/io/kfilesystemtype.cpp index 2ce069b..8f406d7 100644 --- a/src/lib/io/kfilesystemtype.cpp +++ b/src/lib/io/kfilesystemtype.cpp @@ -74,13 +74,11 @@ KFileSystemType::Type determineFileSystemTypeImpl(const QByteArray &path) return kde_typeFromName(buf.f_fstypename); } -#elif defined(Q_OS_LINUX) || defined(Q_OS_HURD) +#elif defined(Q_OS_LINUX) #include -#ifdef Q_OS_LINUX #include // A lot of the filesystem superblock MAGIC numbers #include -#endif // Add known missig magics // Can use https://github.com/systemd/systemd/blob/main/src/basic/missing_magic.h @@ -120,7 +118,6 @@ KFileSystemType::Type determineFileSystemTypeImpl(const QByteArray &path) #define AUTOFSNG_SUPER_MAGIC 0x7d92b1a0 #endif -#ifdef Q_OS_HURD #ifndef NFS_SUPER_MAGIC #define NFS_SUPER_MAGIC 0x00006969 #endif @@ -136,7 +133,6 @@ KFileSystemType::Type determineFileSystemTypeImpl(const QByteArray &path) #ifndef RAMFS_MAGIC #define RAMFS_MAGIC 0x858458F6 #endif -#endif KFileSystemType::Type probeFuseBlkType(const QByteArray &path) { @@ -248,6 +244,30 @@ KFileSystemType::Type determineFileSystemTypeImpl(const QByteArray &path) return kde_typeFromName(buf.f_basetype); #endif } + +#elif defined(Q_OS_HURD) +#include +#include + +static KFileSystemType::Type determineFileSystemTypeImpl(const QByteArray &path) +{ + struct statfs buf; + if (statfs(path.constData(), &buf) != 0) { + return KFileSystemType::Unknown; + } + + switch (buf.f_type) { + case FSTYPE_NFS: + case FSTYPE_AFS: + return KFileSystemType::Nfs; + case FSTYPE_MSLOSS: + return KFileSystemType::Fat; + case FSTYPE_MEMFS: + return KFileSystemType::Ramfs; + default: + return KFileSystemType::Other; + } +} #endif #else KFileSystemType::Type determineFileSystemTypeImpl(const QByteArray &path) -- 2.39.5