Soucis de liste chainees en programmant la fonction ls
Bonjour,
Bonjour a tous !
Je dois en ce moment refaire la fonction ls. Sauf que jai un soucis de segfault (completement aleatoire) sur l'option -R.
Je pense que c'est du au content d'un des maillon de ma liste que serait faux.. Ca nest qu'une supposition. Voici les deux fonctions principales :
...
Merci a tous !
Bonjour a tous !
Je dois en ce moment refaire la fonction ls. Sauf que jai un soucis de segfault (completement aleatoire) sur l'option -R.
Je pense que c'est du au content d'un des maillon de ma liste que serait faux.. Ca nest qu'une supposition. Voici les deux fonctions principales :
void ft_fill_lst(t_list **lst, char *arg, char *root) { t_info *info; char *tmp; if (!ft_strequ(root, arg)) { tmp = ft_strjoin(root, "/"); arg = ft_strjoin(tmp, arg); } info = (t_info *)malloc(sizeof(t_info)); lstat(arg, &info->buf)) == -1; info->name = ft_strdup(arg); ft_lstadd(lst, ft_lstnew(info, sizeof(t_info))); } void ft_isdir(t_list *lst, t_options option, int j) { DIR *dir; t_list *list; struct dirent * dirent; while (lst) { if (((t_info *)(lst->content)) && (S_IFMT & ((t_info *)(lst->content))->buf.st_mode) == S_IFDIR) { if (!(dir = opendir(((t_info *)(lst->content))->name))) perror(((t_info *)(lst->content))->name); if (j > 1) printf("\n\n%s:\n", ((t_info *)(lst->content))->name); while ((dirent = readdir(dir))) { if (option.all == 1 || (dirent->d_name[0] != '.')) { ft_fill_lst(&((t_info *)(lst->content))->for_dir, dirent->d_name, ((t_info *)(lst->content))->name); list = ((t_info *)(lst->content))->for_dir; if (list && dirent->d_name[0] != '.' && option.recursive == 1 && S_ISDIR(((t_info *)(list->content))->buf.st_mode)) /* Cest ici que je segfault, quand jessaye d'acceder au content*/ ft_isdir(list, option, j); } } closedir(dir); } lst = lst->next; } list = NULL; }
...
for_dirétant la nouvelle liste chaînée que je remplis lorsque dans la première liste
lstje croise un directory.
Merci a tous !
A voir également:
- Soucis de liste chainees en programmant la fonction ls
- Liste déroulante excel - Guide
- Fonction si et - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Liste de diffusion whatsapp - Guide
1 réponse
Bonjour
Pour que l'on puisse t'aider, il vaudrait mieux que tu nous donne un exemple de code que l'on peut compiler et lancer.
Dans un premier temps tu peux regarder avec
Une fois dans
Bonne chance
Pour que l'on puisse t'aider, il vaudrait mieux que tu nous donne un exemple de code que l'on peut compiler et lancer.
Dans un premier temps tu peux regarder avec
gdbet
valgrindles éventuelles erreurs que tu fais.
gcc -g toto.c -o toto
valgrind toto
gdb toto
Une fois dans
gdb:
r
bt
Bonne chance