Code:
int rekdir(string dirs)
{
//char[1000] dichinst;
//strcpy(dirchar,dichinst,1000);
DIR *aktdir;
struct dirent *aktdirzeiger;
struct dirent *merkdirzeiger;
cout << "here comes the dirs" << dirs << endl;
if((aktdir=opendir(dirs.c_str()))==NULL)
{
cout << "Fehler beim öffnen" << endl;
}
else
{
while((aktdirzeiger=readdir(aktdir))!=NULL)
{
string aktdirn="";
aktdirn=aktdirzeiger->d_name; //=(*aktdirzeiger).d_name
//debug aktdir
//cout << aktdirn << endl;
//cout << aktdirn << aktdirn.find(".") << endl;
if(aktdirn.find(".")!=0)
{
if(opendir(aktdirn.c_str())==NULL)
{
cout << "kein Dir: " << aktdirn << endl;
listeeintragen(dirs, aktdirn);
}
else
{
cout << "Rekdir: " << aktdirn << endl;
string tmp= dirs;
tmp += "/";
tmp += aktdirn;
rekdir(tmp);
}
}
}
if(closedir(aktdir) == -1)
{
cout << "Fehler beim schließen" << endl;
return(-1);
}
}
return(0);
}
Ich hab immernoch das Problem, dass er nicht einen tiefer geht. Irgendwie scheint was mit der Abfrage nicht zu funktionieren, allerdings weiß ich nicht was. Also um genauer zu sein, geht er ein Ordner runter (macht auch brav die Rekursion), erkennt aber dann die darin befindlichen Ordner nicht als Ordner.
Hier mal nen kleiner "Debug Output":
Code:
Rekdir: Comedy
TMP: /mnt/hdd1/mp3/Comedy
here comes the dirs /mnt/hdd1/mp3/Comedy
kein Dir: Ja_uff_erstmal
Außerdem meckert die glibc manchmal:
Code:
*** glibc detected *** double free or corruption (fasttop): 0x080707c0 ***
Aborted
Lesezeichen