I'm having problems with the if line (S_IFDIR (stbuf.st_mode)). Is this the right way to check the directory you want to fit into? The function at the moment seems to be doing it right for 1 or 2 cycles, and then crashing and segmentation errors.
I tried the following and probably more as a condition.
S_ISDIR(st_mode) ((st_mode & ST_IFMT) == S_IFDIR) S_IFDIR(stbuf.st_mode)
I turned on the whole function because I am worried that the problem may be elsewhere.
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); }
source share