summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qstorageinfo_unix.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/io/qstorageinfo_unix.cpp')
-rw-r--r--src/corelib/io/qstorageinfo_unix.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/corelib/io/qstorageinfo_unix.cpp b/src/corelib/io/qstorageinfo_unix.cpp
index 2e58065eed..667301b516 100644
--- a/src/corelib/io/qstorageinfo_unix.cpp
+++ b/src/corelib/io/qstorageinfo_unix.cpp
@@ -54,6 +54,12 @@
# include <sys/statvfs.h>
#elif defined(Q_OS_SOLARIS)
# include <sys/mnttab.h>
+#elif defined(Q_OS_HAIKU)
+# include <Directory.h>
+# include <Path.h>
+# include <Volume.h>
+# include <VolumeRoster.h>
+# include <sys/statvfs.h>
#else
# include <sys/statvfs.h>
#endif
@@ -129,6 +135,12 @@ private:
FILE *fp;
mntent mnt;
QByteArray buffer;
+#elif defined(Q_OS_HAIKU)
+ BVolumeRoster m_volumeRoster;
+
+ QByteArray m_rootPath;
+ QByteArray m_fileSystemType;
+ QByteArray m_device;
#endif
};
@@ -303,6 +315,54 @@ inline QByteArray QStorageIterator::device() const
return QByteArray(mnt.mnt_fsname);
}
+#elif defined(Q_OS_HAIKU)
+inline QStorageIterator::QStorageIterator()
+{
+}
+
+inline QStorageIterator::~QStorageIterator()
+{
+}
+
+inline bool QStorageIterator::isValid() const
+{
+ return true;
+}
+
+inline bool QStorageIterator::next()
+{
+ BVolume volume;
+
+ if (m_volumeRoster.GetNextVolume(&volume) != B_OK)
+ return false;
+
+ BDirectory directory;
+ if (volume.GetRootDirectory(&directory) != B_OK)
+ return false;
+
+ const BPath path(&directory);
+ m_rootPath = path.Path();
+ m_fileSystemType = QByteArray(); // no public API to access it
+ m_device = QByteArray::number(static_cast<qint32>(volume.Device()));
+
+ return true;
+}
+
+inline QString QStorageIterator::rootPath() const
+{
+ return QFile::decodeName(m_rootPath);
+}
+
+inline QByteArray QStorageIterator::fileSystemType() const
+{
+ return m_fileSystemType;
+}
+
+inline QByteArray QStorageIterator::device() const
+{
+ return m_device;
+}
+
#else
inline QStorageIterator::QStorageIterator()