-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils_options2.c
47 lines (43 loc) · 939 Bytes
/
utils_options2.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "my_ls.h"
static int count_folder_in_list(t_elem *elem)
{
int i;
DIR *ptr_dir;
i = 0;
while (elem)
{
if (my_strcmp(elem->name, ".") && my_strcmp(elem->name, "..")
&& S_ISDIR(elem->stat.st_mode)
&& (ptr_dir = xopendir(elem->long_name)))
{
closedir(ptr_dir);
++i;
}
elem = elem->next;
}
return (i);
}
char **set_folder_recursive(t_elem *elem, char *opts)
{
int i;
char **rec;
DIR *ptr_dir;
i = 0;
if (opts[get_pos_strchr(OPTIONS, 'd')]
|| !opts[get_pos_strchr(OPTIONS, 'R')])
return (NULL);
rec = xmalloc((count_folder_in_list(elem) + 1) * sizeof(*rec));
while (elem)
{
if (my_strcmp(elem->name, ".") && my_strcmp(elem->name, "..")
&& S_ISDIR(elem->stat.st_mode)
&& (ptr_dir = xopendir(elem->long_name)))
{
closedir(ptr_dir);
rec[i++] = my_strdup(elem->long_name);
}
elem = elem->next;
}
rec[i] = 0;
return (rec);
}