Advertisement
Guest User

Untitled

a guest
Jan 26th, 2015
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. void ls_directory(char *dir_name, int level)
  2. {
  3.     DIR *p_dir = NULL; // pointer to a directory
  4.     struct dirent *p_entry; // pointer to a directory entry
  5.     if(!(p_dir = opendir(dir_name)))
  6.     {
  7.         fprintf(stderr, "Error while opening directory %s: %s\n", dir_name, strerror(errno));
  8.         return;
  9.     }
  10.    
  11.     size_t dir_name_len = strlen(dir_name);
  12.     printf("%s\n", dir_name);
  13.     while((p_entry = readdir(p_dir)))
  14.     {
  15.         if(is_dir(p_entry->d_name))
  16.         {
  17.             // do not list the parent directories
  18.             if(strcmp(p_entry->d_name, ".") != 0 && strcmp(p_entry->d_name, "..") != 0)
  19.             {
  20.                 size_t name_len = strlen(p_entry->d_name);
  21.                 char *subname = malloc(dir_name_len + name_len + 2);
  22.                 memcpy(subname, dir_name, dir_name_len);
  23.                 subname[dir_name_len] = '/';
  24.                 memcpy(subname + dir_name_len + 1, p_entry->d_name, name_len+1);
  25.                 ls_directory(subname, level + 1);
  26.                 free(subname);
  27.             }
  28.         }
  29.         else
  30.         {
  31.             printf("%s\n", p_entry->d_name);
  32.         }
  33.     }
  34.     closedir(p_dir);
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement