dnhirapara2104

ls with Recursion

Jul 20th, 2020
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.13 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <dirent.h>
  4. #include <string.h>
  5. void print_path(int recur, DIR *dirp)
  6. {
  7.     struct dirent *dptr;
  8.     while (1)
  9.     {
  10.         dptr = readdir(dirp);
  11.         if (!dptr)
  12.             return;
  13.         printf("%s\n", dptr->d_name);
  14.         if (recur == 1)
  15.         {
  16.             char buff[256];
  17.             if (strcmp(dptr->d_name, ".") == 0 && dptr->d_name == "..")
  18.                 continue;
  19.             if (dptr && dptr->d_name != "." && dptr->d_name != "..")
  20.                 if (dptr->d_type == DT_DIR)
  21.                 {
  22.                     DIR *dirp1 = opendir(dptr->d_name);
  23.                     print_path(1, dirp1);
  24.                     //      printf("dir : %s\n", dptr->d_name);
  25.                     closedir(dirp1);
  26.                 }
  27.         }
  28.         //  printf("%d\n",dptr->d_type);
  29.         //  printf("%s\n", dptr->d_name);
  30.     }
  31. }
  32. int main()
  33. {
  34.     char buff[256];
  35.     DIR *dirpath;
  36.     struct dirent *dptr;
  37.     scanf("%s", buff);
  38.     if ((dirpath = opendir(buff)) == NULL)
  39.     {
  40.         printf("%s", "wrong path");
  41.         exit(0);
  42.     }
  43.     else
  44.     {
  45.         dptr = readdir(dirpath);
  46.         print_path(1, dirpath);
  47.         //              while(dptr=readdir(dirpath)){
  48.         //      while (1)
  49.         //      {
  50.         //       dptr = readdir(dirpath);
  51.         //          if (!dptr)
  52.         //              break;
  53.         //          printf("%s\n", dptr->d_name);
  54.         //          dptr++;
  55.         //      }
  56.         closedir(dirpath);
  57.     }
  58. }
Add Comment
Please, Sign In to add comment