-rw-r--r-- | noncore/settings/sysinfo/storage.cpp | 178 |
1 files changed, 98 insertions, 80 deletions
diff --git a/noncore/settings/sysinfo/storage.cpp b/noncore/settings/sysinfo/storage.cpp index 4e81170..0a07a3b 100644 --- a/noncore/settings/sysinfo/storage.cpp +++ b/noncore/settings/sysinfo/storage.cpp @@ -19,3 +19,3 @@ **********************************************************************/ - +// additions copyright 2002 by L.J. Potter #include <qlabel.h> @@ -28,6 +28,6 @@ #include <stdio.h> -#if defined(_OS_LINUX_) || defined(Q_OS_LINUX) + #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) #include <sys/vfs.h> #include <mntent.h> -#endif + #endif @@ -54,16 +54,15 @@ static bool isCF(const QString& m) 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 ) - { - if ( QString(devtype) == "ide" && m.find(devname)>0 ) { - fclose(f); - return TRUE; - } - } - } - fclose(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 ) { + if ( QString(devtype) == "ide" && m.find(devname)>0 ) { + fclose(f); + return TRUE; + } + } + } + fclose(f); } @@ -79,2 +78,4 @@ void StorageInfo::updateMounts() QStringList curfs; + QStringList mountList; + QStringList fsT; bool rebuild = FALSE; @@ -82,61 +83,71 @@ void StorageInfo::updateMounts() 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" ) - { - n++; - curdisks.append(fs); - QString d = me->mnt_dir; - curfs.append(d); - if ( !disks.find(d) ) - rebuild = TRUE; - } - } - endmntent( 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(9) == "/dev/root" || fs.left(5) == "/ramfs") { + n++; + curdisks.append(fs); + QString d = me->mnt_dir; + curfs.append(d); + QString mount = me->mnt_dir; + mountList.append(mount); + QString t = me->mnt_type; + fsT.append(t); + if ( !disks.find(d) ) + rebuild = TRUE; + } + } + endmntent( mntfp ); } if ( rebuild || n != (int)disks.count() ) { - disks.clear(); - lines.clear(); - delete vb; - vb = new QVBoxLayout( this, n > 3 ? 1 : 5 ); - bool frst=TRUE; - QStringList::ConstIterator it=curdisks.begin(); - QStringList::ConstIterator fsit=curfs.begin(); - for (; it!=curdisks.end(); ++it, ++fsit) { - if ( !frst ) { - QFrame *f = new QFrame( this ); - vb->addWidget(f); - f->setFrameStyle( QFrame::HLine | QFrame::Sunken ); - lines.append(f); - f->show(); - } frst=FALSE; - QString humanname=*it; - if ( isCF(humanname) ) - humanname = tr("CF Card"); - else if ( humanname == "/dev/hda1" ) - humanname = tr("Hard Disk"); - else if ( humanname.left(9) == "/dev/mmcd" ) - humanname = tr("SD Card"); - else if ( humanname.left(7) == "/dev/hd" ) - humanname = tr("Hard Disk") + " " + humanname.mid(7); - else if ( humanname.left(7) == "/dev/sd" ) - humanname = tr("SCSI Hard Disk") + " " + humanname.mid(7); - else if ( humanname == "/dev/mtdblock1" || humanname == "/dev/mtdblock/1" ) - humanname = tr("Internal Storage"); - else if ( humanname.left(14) == "/dev/mtdblock/" ) - humanname = tr("Internal Storage") + " " + humanname.mid(14); - else if ( humanname.left(13) == "/dev/mtdblock" ) - humanname = tr("Internal Storage") + " " + humanname.mid(13); - // etc. - MountInfo* mi = new MountInfo( *fsit, humanname, this ); - vb->addWidget(mi); - disks.insert(*fsit,mi); - mi->show(); - } - vb->addStretch(); + disks.clear(); + lines.clear(); + delete vb; + vb = new QVBoxLayout( this, n > 3 ? 1 : 5 ); + bool frst=TRUE; + QStringList::ConstIterator it=curdisks.begin(); + QStringList::ConstIterator fsit=curfs.begin(); + QStringList::ConstIterator fsmount=mountList.begin(); + QStringList::ConstIterator fsTit=fsT.begin(); + + for (; it!=curdisks.end(); ++it, ++fsit) { + if ( !frst ) { + QFrame *f = new QFrame( this ); + vb->addWidget(f); + f->setFrameStyle( QFrame::HLine | QFrame::Sunken ); + lines.append(f); + f->show(); + } frst=FALSE; + QString humanname=*it; + if ( isCF(humanname) ) + humanname = tr("CF Card: "+*fsmount+" "+*fsTit+" "); + else if ( humanname == "/dev/hda1" ) + humanname = tr("Hard Disk "+*fsmount+" "+*fsTit+" "); + else if ( humanname.left(9) == "/dev/mmcd" ) + humanname = tr("SD Card "+*fsmount+" "+*fsTit+" "); + else if ( humanname.left(7) == "/dev/hd" ) + humanname = tr("Hard Disk") + " " + humanname.mid(7)+" "+*fsmount+" "+*fsTit+" "; + else if ( humanname.left(7) == "/dev/sd" ) + humanname = tr("SCSI Hard Disk") + " " + humanname.mid(7)+" "+*fsmount+" "+*fsTit+" "; + else if ( humanname == "/dev/mtdblock1" || humanname == "/dev/mtdblock/1" ) + humanname = tr("Internal Storage "+*fsmount+" "+*fsTit+"\n"); + else if ( humanname.left(14) == "/dev/mtdblock/" ) + humanname = tr("Internal Storage") + " " + humanname.mid(14)+" "+*fsmount+" "+*fsTit+" "; + else if ( humanname.left(13) == "/dev/mtdblock" ) + humanname = tr("Internal Storage") + " " + humanname.mid(13)+" "+*fsmount+" "+*fsTit+" "; + else if ( humanname.left(9) == "/dev/root" ) + humanname = tr("Internal Storage "+*fsmount+" "+*fsTit+" "); + // etc. + MountInfo* mi = new MountInfo( *fsit, humanname, this ); + vb->addWidget(mi); + disks.insert(*fsit,mi); + mi->show(); + fsmount++;fsTit++; + } + vb->addStretch(); } else { - // just update them - for (QDictIterator<MountInfo> i(disks); i.current(); ++i) - i.current()->updateData(); + // just update them + for (QDictIterator<MountInfo> i(disks); i.current(); ++i) + i.current()->updateData(); } @@ -149,2 +160,3 @@ MountInfo::MountInfo( const QString &path, const QString &ttl, QWidget *parent, { + qDebug("new path is "+path); fs = new FileSystem( path ); @@ -186,3 +198,3 @@ void MountInfo::updateData() long used = total - avail; - totalSize->setText( title + tr(" total: %1 kB").arg( total ) ); + totalSize->setText( title + tr("Total: %1 kB").arg( total ) ); data->clear(); @@ -209,9 +221,15 @@ void FileSystem::update() if ( !statfs( fspath.latin1(), &fs ) ) { - blkSize = fs.f_bsize; - totalBlks = fs.f_blocks; - availBlks = fs.f_bavail; + if( fspath.left(8) == "/mnt/ram") { //ugly hack openzaurus + blkSize = fs.f_bsize; + totalBlks = fs.f_blocks; + availBlks = fs.f_ffree; + } else { + blkSize = fs.f_bsize; + totalBlks = fs.f_blocks; + availBlks = fs.f_bavail; + } } else { - blkSize = 0; - totalBlks = 0; - availBlks = 0; + blkSize = 0; + totalBlks = 0; + availBlks = 0; } |