sieeema! mam w jednym katalogu różne pliki, najczęściej nazwy mają po 4-6 liter, ale nie wykluczone, że może się trafić jakiś "dziki" plik. kolejno przekazuję ścieżkę każdego pliku z katalogu -> do funkcji. Obecnie sprawdzam długość ścieżki do katalogu + długość nazwy pliku i jeżeli trzeba wywołuje realloc. Jednakże przed chwilą sprawdziłam i widzę, że d_name (nazwa pliku) w Linuxie to max 255bajtów. I teraz pytanie; czy lepiej zostawić obecne rozwiązanie czy np. mallokować raz a dobrze (przed pętlą) na strlen(dir_path)+256 (w efekcie zrezygonować z ifa i realloc w pętli)?
char *filepath=NULL;
unsigned len_filepath=0;
while((entry = readdir(dir)) && !found) {
if(entry->d_name[0]=='.')
continue;
if(len_filepath < strlen(dir_path)+strlen(entry->d_name)+10) {
len_filepath = strlen(dir_path)+strlen(entry->d_name)+10;
filepath = realloc(filepath,len_filepath);
}
sprintf(filepath, "%s/%s", dir_path, entry->d_name);
if(this_is_it(filepath,device->type)) {
found=1;
device->path=filepath;
}
}
closedir(dir);
if(!found)
free(filepath);
return found;
}