Prawidłowo realloc czy "statycznie" (ścieżki plików)

0

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;
}
0

char filepath[256] i styknie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1