Problem mit readdir_r
-
Hallo Leute,
bisher hatte ich so eine Funktion um einen Ordner und alle Unterordner zu lesen:
Filelist::Filelist(const std::string path) { DIR *dirHandle; struct dirent *dirEntry; // Open a folder dirHandle = opendir(path.c_str()); do { dirEntry = readdir(dirHandle); if (dirEntry) { _filenameList.push_back(dirEntry->d_name); } } while (dirEntry); closedir(dirHandle); }Und das hat auch super funktioniert. Problem: Jetzt dürfen wir aber readdir nicht verwenden

Und nun bin ich dabei, diesselbe Funktion mit readdir_r zu schreiben, doch leider will es noch nicht ganz funktionieren. Könnt ihr mir da mal helfen ?
Das hab ich schon:
Filelist::Filelist(const std::string path) { DIR *dirHandle; struct dirent dirEntry; struct dirent *dirResult; // Open a folder dirHandle = opendir(path.c_str()); int x; do { // dirEntry = readdir_r(dirHandle); x = readdir_r(dirHandle, &dirEntry, &dirResult); if (x == EOK) { _filenameList.push_back(dirEntry.d_name); } } while (x == EOK); closedir(dirHandle); }Dauernd gibt es ein Problem. Aktuell sieht meine Fehlerquote so aus, aber ich weiß ja noch nicht einmal, ob meine neue Funktion dasselbe macht wie meine alte ...
Filelist.cpp: In constructor ‘Filelist::Filelist(std::string)’: Filelist.cpp:30:14: error: ‘EOK’ was not declared in this scope Filelist.cpp:34:12: error: could not convert ‘dirEntry’ to ‘bool’ make: *** [Filelist.o] Error 1
-
Du verwendest einen Bezeichner, den es nicht gibt. Und da meckert der Compiler zu Recht. Vermutlich meintest du EOF (end of file) statt EOK.
Und zu deiner Funktion kann leider niemand was sagen, wenn du sie nicht postest.