C   59

recurse

Guest on 14th July 2022 02:07:44 AM

  1. /* recurse.c
  2. This program recursively print out all files inside the
  3. default directory and all sub directories.
  4. */
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8. #include <dirent.h>
  9. #include <sys/stat.h>
  10. #include <sys/types.h>
  11. #include <errno.h>
  12. #include <unistd.h>
  13. #define PATH_LENGTH 256
  14.  
  15. void recurse(char* dpath);
  16.  
  17. int main (int argc, char *argv[]){
  18.         char* dpath = malloc(256);
  19.     getcwd(dpath, PATH_LENGTH);\
  20.        
  21.        
  22.         recurse(dpath);
  23.  
  24.  
  25.   return EXIT_SUCCESS;
  26.  
  27. }
  28.  
  29. void recurse(char* dpath){
  30.     DIR* dPtr = opendir(dpath);
  31.         struct dirent* dir_entry = readdir(dPtr);
  32.         struct stat statbuf;
  33.         while (dir_entry != NULL){
  34.                 if(strcmp((dir_entry->d_name), ".") == 0 || strcmp((dir_entry->d_name), "..") == 0)
  35.                 {
  36.                         dir_entry = readdir(dPtr);
  37.                         continue;
  38.                 }
  39.             char* tmppath=calloc(256,1);
  40.                 strcat(tmppath,dpath);
  41.                 strcat(tmppath,"/");
  42.                 strcat(tmppath,dir_entry->d_name);
  43.                 stat(tmppath,&statbuf);
  44.                 printf("file is %s mode %d \n", tmppath, S_ISDIR(statbuf.st_mode));
  45.                
  46.                 if (S_ISDIR(statbuf.st_mode)){
  47.                         recurse(tmppath);
  48.                 }
  49.                
  50.                 dir_entry = readdir(dPtr);
  51.         }
  52.  
  53. }

Raw Paste


Login or Register to edit or fork this paste. It's free.