25 #include "kdiskfreesp.h"
27 #include <tqtextstream.h>
31 #include <kio/global.h>
32 #include <config-kfile.h>
34 #include "kdiskfreesp.moc"
36 #define DF_COMMAND "df"
38 #define NO_FS_TYPE true
41 #define FULL_PERCENT 95.0
46 KDiskFreeSp::KDiskFreeSp(TQObject *parent,
const char *name)
47 : TQObject(parent,name)
49 dfProc =
new KProcess(); Q_CHECK_PTR(dfProc);
50 dfProc->setEnvironment(
"LANGUAGE",
"C");
51 connect( dfProc, TQT_SIGNAL(receivedStdout(KProcess *,
char *,
int) ),
52 this, TQT_SLOT (receivedDFStdErrOut(KProcess *,
char *,
int)) );
53 connect(dfProc,TQT_SIGNAL(processExited(KProcess *) ),
54 this, TQT_SLOT(dfDone() ) );
56 readingDFStdErrOut=
false;
71 void KDiskFreeSp::receivedDFStdErrOut(KProcess *,
char *data,
int len)
73 TQCString tmp(data,len+1);
74 dfStringErrOut.append(tmp);
82 if (readingDFStdErrOut || dfProc->isRunning())
84 m_mountPoint = mountPoint;
86 dfProc->clearArguments();
87 (*dfProc) << TQString::fromLocal8Bit(DF_COMMAND) << TQString::fromLocal8Bit(DF_ARGS);
88 if (!dfProc->start( KProcess::NotifyOnExit, KProcess::AllOutput ))
89 kdError() <<
"could not execute ["<< DF_COMMAND <<
"]" << endl;
97 void KDiskFreeSp::dfDone()
99 readingDFStdErrOut=
true;
101 TQTextStream t (dfStringErrOut, IO_ReadOnly);
102 TQString s=t.readLine();
103 if ( (s.isEmpty()) || ( s.left(10) != TQString::fromLatin1(
"Filesystem") ) )
104 kdError() <<
"Error running df command... got [" << s <<
"]" << endl;
108 s=s.simplifyWhiteSpace();
109 if ( !s.isEmpty() ) {
116 s=s.simplifyWhiteSpace();
123 s=s.remove(0,s.find(BLANK)+1 );
127 s=s.remove(0,s.find(BLANK)+1 );
129 u=s.left(s.find(BLANK));
130 unsigned long kBSize = u.toULong();
131 s=s.remove(0,s.find(BLANK)+1 );
134 u=s.left(s.find(BLANK));
135 unsigned long kBUsed = u.toULong();
136 s=s.remove(0,s.find(BLANK)+1 );
139 u=s.left(s.find(BLANK));
140 unsigned long kBAvail = u.toULong();
141 s=s.remove(0,s.find(BLANK)+1 );
145 s=s.remove(0,s.find(BLANK)+1 );
146 TQString mountPoint = s.stripWhiteSpace();
149 if ( mountPoint == m_mountPoint )
152 emit foundMountPoint( mountPoint, kBSize, kBUsed, kBAvail );
153 emit foundMountPoint( kBSize, kBUsed, kBAvail, mountPoint );
158 readingDFStdErrOut=
false;
166 TQString mountPoint = KIO::findPathMountPoint( path );
167 job->
readDF( mountPoint );