Klamscan: handle block devices correctly.

This resolves issue #12.

Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
pull/24/head
Mavridis Philippe 3 years ago
parent b487b5bb8b
commit d523b1c1e8
Signed by: blu.256
GPG Key ID: F8D2D7E2F989A494

@ -108,12 +108,12 @@ class DeviceItem : public TQObject, public TQCheckListItem
void stateChange( bool ); // reimpl.
void activate(); // reimpl.
void paintCell( TQPainter * p, const TQColorGroup & cg, int column, int width, int align ); // reimpl.
TQString getMountPoint(const TQString & device);
public slots:
void newItems( const KFileItemList& );
void completed() { if( childCount() == 0 ) { setExpandable( false ); repaint(); } }
private:
void mountDevice(const TQString & device);
TQString getMountPoint(const TQString & device);
void mountDevice(const TQString & device);
KDirLister m_lister;
KURL m_url;
bool m_listed;

@ -33,6 +33,9 @@
#include <dcopref.h>
#include <dcopclient.h>
#include <sys/stat.h> // TDEIO does not seem to have what we need
using namespace KlamAV;
Klamscan::Klamscan(TQWidget *parent, const char *name)
@ -477,9 +480,26 @@ TQStringList Klamscan::pruneSelectedDirs(){
listOfUrlsToScan.sort();
TQString prev;
TQStringList prevdirs;
struct stat sb;
for (TQStringList::Iterator it = listOfUrlsToScan.begin(); it != listOfUrlsToScan.end(); it++ ){
//kdDebug() << "dir: " << (*it) << endl;
(*it) = (*it).stripWhiteSpace() + "/";
(*it) = (*it).stripWhiteSpace();
// replace block devices with mountpoints
lstat( (*it), &sb );
if ( (sb.st_mode & S_IFMT) == S_IFBLK ) {
// This is actually from directorylist.cpp
DCOPRef mediamanager("kded", "mediamanager");
DCOPReply reply = mediamanager.call( "properties", (*it) );
TQStringList properties;
reply.get( properties, "TQStringList" );
(*it) = * (properties.at(7) );
} else {
(*it) = (*it) + "/";
}
if (prevdirs.isEmpty()){
//kdDebug() << (*it) << endl;
filepattern.append(*it);

Loading…
Cancel
Save