PDA

View Full Version : [linux/c]che file è?


NA01
06-04-2006, 18:09
voglio una lista di tutti i file che ho dentro una dir, escludendo le directory e altre cose strane.
ho scritto questo codice:


vector<string>& FileUtils::listFile(string dirName){
vector<string>* fileList = new vector<string>;
string fileName;
DIR * dir;
struct stat data;
struct dirent * direntry ;
if((dir = opendir(dirName.c_str())) == NULL){
throw FileException();
}
fchdir(dirfd(dir));
while ((direntry = readdir (dir)) != NULL ){
stat(direntry->d_name, &data);
if(dirent->d_type == DT_REG){
fileName = direntry->d_name;
fileList->push_back(fileName);
}
}
closedir(dir);
return *fileList;
}


ma la condizione if(dirent->d_type == DT_REG){ non passa mai, sebbene esistano un pacco di file regolari...
che sbaglio?

grazie, ciao!

Gavrila
06-04-2006, 19:12
voglio una lista di tutti i file che ho dentro una dir, escludendo le directory e altre cose strane.
ho scritto questo codice:

--cut--

ma la condizione if(dirent->d_type == DT_REG){ non passa mai, sebbene esistano un pacco di file regolari...
che sbaglio?

grazie, ciao!

beh innanzi tutto dovrebbe essere if(direntry->d_type...) no if(dirent->d_type...) poi non saprei O_o

NA01
06-04-2006, 20:57
si, ho sbagliato a ricopiare. comunque sul mio pc è corretto e non va :(

ciao!

NA01
07-04-2006, 16:37
uppete!!!

mr_hyde
07-04-2006, 23:43
Non conosco readdir, ma visto che hai il rsultato di stat hai provato a vedere S_ISREG(data.st_mode) ?

Per maggiori info su S_ISREG fai un man di stat (per la mia distro nella sezione "2" di man)

Ciao,
Mr Hyde