bool countFiles( const QStringList& l, const QString& dir ) { for( QStringList::const_iterator it = l.begin(); it != l.end(); ++it ) { if( m_canceled ) return false; k3b_struct_stat s; if( k3b_lstat( QFile::encodeName( dir + *it ), &s ) ) return false; if( S_ISLNK( s.st_mode ) ) { ++totalSymlinks; if( followSymlinks ) { if( k3b_stat( QFile::encodeName( dir + *it ), &s ) ) return false; } } if( S_ISDIR( s.st_mode ) ) { ++totalDirs; if( !countDir( dir + *it + '/' ) ) return false; } else if( !S_ISLNK( s.st_mode ) ) { ++totalFiles; totalSize += (KIO::filesize_t)s.st_size; } } return true; }
QStringList Files::countDir(const QString &_path, const QStringList &_ext, bool *_stop) { QStringList files; if(_stop && *_stop) ///<остановка процесса поиска каталогов { return files; } QDir dir(_path); QStringList entryListFiles = dir.entryList(_ext, QDir::Files); QStringList entryListDirs = dir.entryList(QDir::Dirs); for(int i = 0 ; i < entryListFiles.size(); i++) { files.append(_path + "/" + entryListFiles[i]); } for(int i = 0; i < entryListDirs.size(); i++) { if(entryListDirs[i] != "." && entryListDirs[i] != "..") { files.append(countDir(_path + "/" + entryListDirs[i], _ext, _stop)); } } return files; }