author | llornkcor <llornkcor> | 2003-03-26 02:06:21 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2003-03-26 02:06:21 (UTC) |
commit | a76176911328349414203edda3785ac8925c0648 (patch) (side-by-side diff) | |
tree | 30e345d6c458b3dc2f0fd06fe900d4b7203e902f /library/storage.cpp | |
parent | f50d60ad220bbaf76e6cbcb07caf5bed037311d5 (diff) | |
download | opie-a76176911328349414203edda3785ac8925c0648.zip opie-a76176911328349414203edda3785ac8925c0648.tar.gz opie-a76176911328349414203edda3785ac8925c0648.tar.bz2 |
add static isCf, isSd, and isMmc
-rw-r--r-- | library/storage.cpp | 61 |
1 files changed, 60 insertions, 1 deletions
diff --git a/library/storage.cpp b/library/storage.cpp index a7c466d..912b22d 100644 --- a/library/storage.cpp +++ b/library/storage.cpp @@ -1,17 +1,18 @@ /********************************************************************** ** 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. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are @@ -28,24 +29,28 @@ #include <qtimer.h> #include <qcopchannel_qws.h> #include <stdio.h> #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]; char devname[80]; while ( fgets( line, 1024, f ) ) { // 0 ide ide-cs 0 hda 3 0 if ( sscanf(line,"%*d %s %*s %*s %s", devtype, devname )==2 ) @@ -165,24 +170,78 @@ void StorageInfo::update() FileSystem *fs = new FileSystem( disk, *fsit, humanname, removable, opts ); mFileSystems.append( fs ); } emit disksChanged(); } 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(); } void FileSystem::update() { #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) struct statfs fs; |