Klamscan: handle block devices correctly.

This resolves issue #12.

Signed-off-by: Mavridis Philippe <mavridisf@gmail.com>
pull/24/head
Mavridis Philippe 4 years ago
parent b487b5bb8b
commit d523b1c1e8
No known key found for this signature in database
GPG Key ID: F8D2D7E2F989A494

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

@ -33,6 +33,9 @@
#include <dcopref.h> #include <dcopref.h>
#include <dcopclient.h> #include <dcopclient.h>
#include <sys/stat.h> // TDEIO does not seem to have what we need
using namespace KlamAV; using namespace KlamAV;
Klamscan::Klamscan(TQWidget *parent, const char *name) Klamscan::Klamscan(TQWidget *parent, const char *name)
@ -477,9 +480,26 @@ TQStringList Klamscan::pruneSelectedDirs(){
listOfUrlsToScan.sort(); listOfUrlsToScan.sort();
TQString prev; TQString prev;
TQStringList prevdirs; TQStringList prevdirs;
struct stat sb;
for (TQStringList::Iterator it = listOfUrlsToScan.begin(); it != listOfUrlsToScan.end(); it++ ){ for (TQStringList::Iterator it = listOfUrlsToScan.begin(); it != listOfUrlsToScan.end(); it++ ){
//kdDebug() << "dir: " << (*it) << endl; //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()){ if (prevdirs.isEmpty()){
//kdDebug() << (*it) << endl; //kdDebug() << (*it) << endl;
filepattern.append(*it); filepattern.append(*it);

Loading…
Cancel
Save