Allgemein: ich weiss gerade nicht wo ich Fragen rein stellen soll - wenn ich welche Stelle werden die 50% hier, 50% auf github oder gar nicht beantwortet 
gibt es da einen besseren Kanal/Chatgruppe oder so was? oder kann ich [Question] Issues auf github erstellen?
Ich hab hier eine Frage:
https://github.com/Henne/BrightEyes/pull...3675192267
Inhalt:
mir würde es gefallen wenn wir das Dateisuchen ein wenig entkoppeln z.B. mit einer Find-Funktion und einem Callback zur Entkopplung
- Dateinamen suchen und Dateien verarbeiten sind zwei paar Stiefel - das muss nicht alles in einem Code-Bobbel zusammengezimmert werden
z.B. könnte man diese find_files Routine an 4-9 Stellen verwenden - anstatt alles inline zu implementieren
dabei kommt das Ergebnis raus
ich weiss nicht ob die grosse Menge an Code-Duplikation gerade einfach akzeptiert wird, gewünscht ist oder ob das erst irgendwann in der Zukunft behandelt werden soll

gibt es da einen besseren Kanal/Chatgruppe oder so was? oder kann ich [Question] Issues auf github erstellen?
Ich hab hier eine Frage:
https://github.com/Henne/BrightEyes/pull...3675192267
Inhalt:
mir würde es gefallen wenn wir das Dateisuchen ein wenig entkoppeln z.B. mit einer Find-Funktion und einem Callback zur Entkopplung
- Dateinamen suchen und Dateien verarbeiten sind zwei paar Stiefel - das muss nicht alles in einem Code-Bobbel zusammengezimmert werden
z.B. könnte man diese find_files Routine an 4-9 Stellen verwenden - anstatt alles inline zu implementieren
Code:
static bool valid_filename(const char* filename, const char* ext)
{
return (filename[0] != '.') && strstr(filename, ext);
}
void find_files(const char* search_path, const char* ext, void (*file_found_callback)(const char* filename))
{
#if defined(__BORLANDC__)
// ...
#elif defined(_WIN32)
char path[_MAX_PATH];
snprintf(path, sizeof(path), "%s/*", search_path);
struct _finddata_t fileinfo;
intptr_t handle = _findfirst(path, &fileinfo);
while (handle != -1) {
if (valid_filename(fileinfo.name, ext)) {
file_found_callback(fileinfo.name);
}
if (_findnext(handle, &fileinfo) != 0)
{
break;
}
}
_findclose(handle);
#else
DIR* dir = opendir(search_path);
if (dir != NULL) {
const struct dirent* ent = readdir(dir);
while (ent != NULL) {
if (valid_filename(fileinfo.name, ext)) {
file_found_callback(fileinfo.name);
}
ent = readdir(dir);
}
closedir(dir);
}
#endif
}
// wird aufgerufen wenn find_files eine passende Datei gefunden hat
// hier kann man auch kopieren, loeschen etc.
void print_file_name(const char* filename)
{
printf("filename: %s\n", filename);
}
int main(int argc, char** argv)
{
printf("find all *.chr\n");
find_files("./",".CHR", print_file_name);
printf("find all *.*\n");
find_files("./","", print_file_name);
}dabei kommt das Ergebnis raus
Code:
find all *.chr
filename: ARBOSH.CHR
filename: HJALDIS.CHR
filename: RHENAYA.CHR
filename: TALIMEE.CHR
filename: TAMION.CHR
filename: YARANO.CHR
find all *.*
filename: ARBOSH.CHR
filename: GAMES.NAM
filename: HJALDIS.CHR
filename: RHENAYA.CHR
filename: SCHICK.DAT
filename: schick_MSVC.exe
filename: schick_MSVC.pdb
filename: SDL2d.dll
filename: TALIMEE.CHR
filename: TAMION.CHR
filename: TEMP
filename: YARANO.CHRich weiss nicht ob die grosse Menge an Code-Duplikation gerade einfach akzeptiert wird, gewünscht ist oder ob das erst irgendwann in der Zukunft behandelt werden soll

