summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--library/storage.cpp61
-rw-r--r--library/storage.h4
2 files changed, 63 insertions, 2 deletions
diff --git a/library/storage.cpp b/library/storage.cpp
index a7c466d..912b22d 100644
--- a/library/storage.cpp
+++ b/library/storage.cpp
@@ -1,9 +1,10 @@
/**********************************************************************
** Copyright (C) Holger 'zecke' Freyther <freyther@kde.org>
+** Copyright (C) Lorn Potter <llornkcor@handhelds.org>
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
-** This file is part of Qtopia Environment.
+** This file is part of Opie Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
@@ -36,8 +37,12 @@
#endif
#include <qstringlist.h>
+#include <sys/vfs.h>
+#include <mntent.h>
+
+
static bool isCF(const QString& m)
{
FILE* f = fopen("/var/run/stab", "r");
if (!f) f = fopen("/var/state/pcmcia/stab", "r");
@@ -173,8 +178,62 @@ void StorageInfo::update()
}
#endif
}
+bool deviceTab( const char *device) {
+ QString name = device;
+ bool hasDevice=false;
+ struct mntent *me;
+ FILE *mntfp = setmntent( "/etc/mtab", "r" );
+ if ( mntfp ) {
+ while ( (me = getmntent( mntfp )) != 0 ) {
+ QString deviceName = me->mnt_fsname;
+// qDebug(deviceName);
+ if( deviceName.left(name.length()) == name) {
+ hasDevice = true;
+ }
+ }
+ }
+ endmntent( mntfp );
+ return hasDevice;
+}
+
+/*!
+ * @fn hasCf()
+ * @brief returns whether device has Cf mounted
+ *
+ */
+bool StorageInfo::hasCf()
+{
+ return deviceTab("/dev/hd");
+}
+
+/*!
+ * @fn hasSd()
+ * @brief returns whether device has SD mounted
+ *
+ */
+bool StorageInfo::hasSd()
+{
+ return deviceTab("/dev/mmcd");
+}
+
+/*!
+ * @fn hasMmc()
+ * @brief reutrns whether device has mmc mounted
+ *
+ */
+bool StorageInfo::hasMmc()
+{
+ bool hasMmc=false;
+ if( deviceTab("/dev/mmc/part"))
+ hasMmc=true;
+ if( deviceTab("/dev/mmcd"))
+ hasMmc=true;
+ return hasMmc;
+}
+
+
//---------------------------------------------------------------------------
FileSystem::FileSystem( const QString &disk, const QString &path, const QString &name, bool rem, const QString &o )
: fsdisk( disk ), fspath( path ), humanname( name ), blkSize(512), totalBlks(0), availBlks(0), removable( rem ), opts( o )
diff --git a/library/storage.h b/library/storage.h
index 66a9f9d..0a0698f 100644
--- a/library/storage.h
+++ b/library/storage.h
@@ -33,9 +33,11 @@ public:
StorageInfo( QObject *parent=0 );
const QList<FileSystem> &fileSystems() const { return mFileSystems; }
const FileSystem *fileSystemOf( const QString &filename );
-
+ static bool hasCf();
+ static bool hasSd();
+ static bool hasMmc();
signals:
void disksChanged();
public slots: