Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void ls_directory(char *dir_name, int level)
- {
- DIR *p_dir = NULL; // pointer to a directory
- struct dirent *p_entry; // pointer to a directory entry
- if(!(p_dir = opendir(dir_name)))
- {
- fprintf(stderr, "Error while opening directory %s: %s\n", dir_name, strerror(errno));
- return;
- }
- size_t dir_name_len = strlen(dir_name);
- printf("%s\n", dir_name);
- while((p_entry = readdir(p_dir)))
- {
- if(is_dir(p_entry->d_name))
- {
- // do not list the parent directories
- if(strcmp(p_entry->d_name, ".") != 0 && strcmp(p_entry->d_name, "..") != 0)
- {
- size_t name_len = strlen(p_entry->d_name);
- char *subname = malloc(dir_name_len + name_len + 2);
- memcpy(subname, dir_name, dir_name_len);
- subname[dir_name_len] = '/';
- memcpy(subname + dir_name_len + 1, p_entry->d_name, name_len+1);
- ls_directory(subname, level + 1);
- free(subname);
- }
- }
- else
- {
- printf("%s\n", p_entry->d_name);
- }
- }
- closedir(p_dir);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement