summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--library/storage.cpp139
-rw-r--r--library/storage.h4
2 files changed, 118 insertions, 25 deletions
diff --git a/library/storage.cpp b/library/storage.cpp
index f8b75d0..657fb71 100644
--- a/library/storage.cpp
+++ b/library/storage.cpp
@@ -53,21 +53,24 @@ static bool isCF(const QString& m)
{
#ifndef Q_OS_MACX
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 ) {
+ if ( f )
+ {
char line[1024];
char devtype[80];
char devname[80];
- while ( fgets( line, 1024, f ) ) {
+ while ( fgets( line, 1024, f ) )
+ {
// 0 ide ide-cs 0 hda 3 0
if ( sscanf(line,"%*d %s %*s %*s %s", devtype, devname )==2 )
{
- if ( QString(devtype) == "ide" && m.find(devname)>0 ) {
+ if ( QString(devtype) == "ide" && m.find(devname)>0 )
+ {
fclose(f);
return TRUE;
}
}
}
fclose(f);
@@ -103,13 +106,14 @@ StorageInfo::StorageInfo( QObject *parent )
/*! Returns the longest matching FileSystem that starts with the
same prefix as \a filename as its mount point.
*/
const FileSystem *StorageInfo::fileSystemOf( const QString &filename )
{
- for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) {
+ for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i)
+ {
if ( filename.startsWith( (*i)->path() ) )
return (*i);
}
return 0;
}
@@ -136,61 +140,75 @@ void StorageInfo::update()
QStringList curdisks;
QStringList curopts;
QStringList curfs;
bool rebuild = FALSE;
int n=0;
- if ( mntfp ) {
- while ( (me = getmntent( mntfp )) != 0 ) {
+ if ( mntfp )
+ {
+ while ( (me = getmntent( mntfp )) != 0 )
+ {
QString fs = me->mnt_fsname;
if ( fs.left(7)=="/dev/hd" || fs.left(7)=="/dev/sd"
|| fs.left(8)=="/dev/mtd" || fs.left(9) == "/dev/mmcd"
|| fs.left( 14 ) == "/dev/mmc/part1"
|| fs.left(5)=="tmpfs" || fs.left(9)=="/dev/root" )
{
n++;
curdisks.append(fs);
curopts.append( me->mnt_opts );
//qDebug("-->fs %s opts %s", fs.latin1(), me->mnt_opts );
curfs.append( me->mnt_dir );
bool found = FALSE;
- for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) {
- if ( (*i)->disk() == fs ) {
+ for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i)
+ {
+ if ( (*i)->disk() == fs )
+ {
found = TRUE;
break;
}
}
if ( !found )
rebuild = TRUE;
}
}
endmntent( mntfp );
}
- if ( rebuild || n != (int)mFileSystems.count() ) {
+ if ( rebuild || n != (int)mFileSystems.count() )
+ {
mFileSystems.clear();
QStringList::ConstIterator it=curdisks.begin();
QStringList::ConstIterator fsit=curfs.begin();
QStringList::ConstIterator optsIt=curopts.begin();
- for (; it!=curdisks.end(); ++it, ++fsit, ++optsIt) {
+ for (; it!=curdisks.end(); ++it, ++fsit, ++optsIt)
+ {
QString opts = *optsIt;
QString disk = *it;
QString humanname;
bool removable = FALSE;
- if ( isCF(disk) ) {
+ if ( isCF(disk) )
+ {
humanname = tr("CF Card");
removable = TRUE;
- } else if ( disk == "/dev/hda1" ) {
+ }
+ else if ( disk == "/dev/hda1" )
+ {
humanname = tr("Hard Disk");
- } else if ( disk.left(9) == "/dev/mmcd" ) {
+ }
+ else if ( disk.left(9) == "/dev/mmcd" )
+ {
humanname = tr("SD Card");
removable = TRUE;
- } else if ( disk.left( 14 ) == "/dev/mmc/part1" ) {
+ }
+ else if ( disk.left( 14 ) == "/dev/mmc/part1" )
+ {
humanname = tr("MMC Card");
removable = TRUE;
- } else if ( disk.left(7) == "/dev/hd" )
+ }
+ else if ( disk.left(7) == "/dev/hd" )
humanname = tr("Hard Disk") + " " + disk;
else if ( disk.left(7) == "/dev/sd" )
humanname = tr("SCSI Hard Disk") + " " + disk;
else if ( disk.left(14) == "/dev/mtdblock6" ) //openzaurus ramfs
humanname = tr("Internal Memory");
else if ( disk == "/dev/mtdblock1" || humanname == "/dev/mtdblock/1" )
@@ -204,47 +222,55 @@ void StorageInfo::update()
else if ( disk.left(5) == "tmpfs" ) //ipaqs /mnt/ramfs
humanname = tr("Internal Memory");
FileSystem *fs = new FileSystem( disk, *fsit, humanname, removable, opts );
mFileSystems.append( fs );
}
emit disksChanged();
- } else {
+ }
+ else
+ {
// just update them
for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i)
i.current()->update();
}
#endif
}
-bool deviceTab( const char *device) {
+bool deviceTab( const char *device)
+{
QString name = device;
bool hasDevice=false;
#ifdef Q_OS_MACX
// Darwin (MacOS X)
struct statfs** mntbufp;
int count = 0;
- if ( ( count = getmntinfo( mntbufp, MNT_WAIT ) ) == 0 ){
+ if ( ( count = getmntinfo( mntbufp, MNT_WAIT ) ) == 0 )
+ {
qWarning("deviceTab: Error in getmntinfo(): %s",strerror( errno ) );
hasDevice = false;
}
- for( int i = 0; i < count; i++ ){
+ for( int i = 0; i < count; i++ )
+ {
QString deviceName = mntbufp[i]->f_mntfromname;
qDebug(deviceName);
if( deviceName.left( name.length() ) == name )
hasDevice = true;
}
#else
// Linux
struct mntent *me;
FILE *mntfp = setmntent( "/etc/mtab", "r" );
- if ( mntfp ) {
- while ( (me = getmntent( mntfp )) != 0 ) {
+ if ( mntfp )
+ {
+ while ( (me = getmntent( mntfp )) != 0 )
+ {
QString deviceName = me->mnt_fsname;
// qDebug(deviceName);
- if( deviceName.left(name.length()) == name) {
+ if( deviceName.left(name.length()) == name)
+ {
hasDevice = true;
}
}
}
endmntent( mntfp );
#endif /* Q_OS_MACX */
@@ -272,25 +298,85 @@ bool StorageInfo::hasSd()
{
return deviceTab("/dev/mmcd");
}
/*!
* @fn static bool StorageInfo::hasMmc()
- * @brief reutrns whether device has mmc mounted
+ * @brief returns 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;
}
+/*!
+* @fn QString StorageInfo::getCfPath()
+* @brief returns the Mount-Path of Cf Card
+*
+*/
+QString StorageInfo::getCfPath()
+{
+ QString r = "";
+
+ for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i)
+ {
+ if ( (*i)->disk().left( 8 ) == "/dev/hda" )
+ {
+ r = (*i)->path();
+ break;
+ }
+ }
+ return r;
+}
+
+/*!
+* @fn QString StorageInfo::getSdPath()
+* @brief returns the Mount-Path of Sd Card
+*
+*/
+QString StorageInfo::getSdPath()
+{
+ QString r = "";
+
+ for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i)
+ {
+ if ( (*i)->disk().left( 9 ) == "/dev/mmcd" )
+ {
+ r = (*i)->path();
+ break;
+ }
+ }
+ return r;
+}
+
+/*!
+* @fn QString StorageInfo::getMmcPath()
+* @brief returns the Mount-Path of Mmc Card
+*
+*/
+QString StorageInfo::getMmcPath()
+{
+ QString r = "";
+
+ for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i)
+ {
+ if ( (*i)->disk().left( 14 ) == "/dev/mmc/part1" )
+ {
+ r = (*i)->path();
+ break;
+ }
+ }
+ return r;
+}
+
/*! \fn const QList<FileSystem> &StorageInfo::fileSystems() const
Returns a list of all available mounted file systems.
\warning This may change in Qtopia 3.x to return only relevant Qtopia file systems (and ignore mount points such as /tmp)
*/
@@ -307,17 +393,20 @@ FileSystem::FileSystem( const QString &disk, const QString &path, const QString
}
void FileSystem::update()
{
#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
struct statfs fs;
- if ( !statfs( fspath.latin1(), &fs ) ) {
+ if ( !statfs( fspath.latin1(), &fs ) )
+ {
blkSize = fs.f_bsize;
totalBlks = fs.f_blocks;
availBlks = fs.f_bavail;
- } else {
+ }
+ else
+ {
blkSize = 0;
totalBlks = 0;
availBlks = 0;
}
#endif
}
diff --git a/library/storage.h b/library/storage.h
index 0a0698f..35a1109 100644
--- a/library/storage.h
+++ b/library/storage.h
@@ -34,12 +34,16 @@ public:
const QList<FileSystem> &fileSystems() const { return mFileSystems; }
const FileSystem *fileSystemOf( const QString &filename );
static bool hasCf();
static bool hasSd();
static bool hasMmc();
+
+ QString getCfPath();
+ QString getSdPath();
+ QString getMmcPath();
signals:
void disksChanged();
public slots:
void update();