summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/storage.cpp61
-rw-r--r--library/storage.h8
2 files changed, 65 insertions, 4 deletions
diff --git a/library/storage.cpp b/library/storage.cpp
index a7c466d..912b22d 100644
--- a/library/storage.cpp
+++ b/library/storage.cpp
@@ -1,13 +1,14 @@
/**********************************************************************
** 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
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
@@ -32,16 +33,20 @@
#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
#include <sys/vfs.h>
#include <mntent.h>
#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");
if (!f) f = fopen("/var/lib/pcmcia/stab", "r");
if ( f ) {
char line[1024];
char devtype[80];
@@ -169,16 +174,70 @@ void StorageInfo::update()
} else {
// just update them
for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i)
i.current()->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 )
{
update();
}
diff --git a/library/storage.h b/library/storage.h
index 66a9f9d..0a0698f 100644
--- a/library/storage.h
+++ b/library/storage.h
@@ -27,19 +27,21 @@ class FileSystem;
class QCopChannel;
class StorageInfo : public QObject
{
Q_OBJECT
public:
StorageInfo( QObject *parent=0 );
- const QList<FileSystem> &fileSystems() const { return mFileSystems; }
- const FileSystem *fileSystemOf( const QString &filename );
-
+ 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:
void update();
private slots:
void cardMessage( const QCString& msg, const QByteArray& data );