Как правильно использовать функцию stat () для проверки, является ли DIRENT каталогом или файлом?

У меня возникли проблемы сесли (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);
}

Ответы на вопрос(2)

Ваш ответ на вопрос