У меня возникли проблемы со строкой 'if (S_IFDIR (stbuf.st_mode))' '. Это правильный способ проверки каталога, в который можно вернуться? Кажется, что функция в настоящий момент делает это правильно для 1 или 2 циклов, а затем дает сбой и ошибки сегментации.
Я пробовал следующее и, вероятно, больше как условие.
S_ISDIR(st_mode)
((st_mode & ST_IFMT) == S_IFDIR)
S_IFDIR(stbuf.st_mode)
Я включил всю функцию, потому что я обеспокоен, что проблема может быть в другом месте.
void getFolderContents(char *source, int temp){
struct stat stbuf;
int isDir;
dirPnt = opendir(source);
if(dirPnt != NULL){
while(entry = readdir(dirPnt)){
char *c = entry->d_name;
if(strcmp(entry->d_name, cwd) == 0 || strcmp(entry->d_name, parent) == 0){
}
else{
stat(entry->d_name, &stbuf);
printf("%i %i ", S_IFMT, stbuf.st_mode);
if(S_IFDIR(stbuf.st_mode)){ //Test DIR or file
printf("DIR: %s\n", entry->d_name);
getFolderContents(entry->d_name, 0);
}
printf("FILE: %s\n", entry->d_name);
}
}
closedir(dirPnt);
}