Beispiel #1
0
  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;
}