Bonjour,
J'essaie d'ouvrir des répertoires avec opendir(). J'aimerais pouvoir renvoyer le nom du fichier i celui-ci est passé en argument d'opendir().
La macro S_ISREG me permettrait de détecter si j'ai effectivement un fichier régulier, mais l'instance readdir m'aura déjà pondu un segfault.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 DIR *dirp; struct dirent *dp; struct stat stat_buffer; dirp = opendir (path); dp = readdir(dirp); printf("%s\n", dp->d_name); if ((dp = readdir(dirp)) == NULL) { printf("%s\n", path); return (1); } stat(dp->d_name, &stat_buffer); printf("%s\n", dp->d_name); if (dirp == NULL) { if (S_ISREG(stat_buffer.st_mode)) printf("%s\n", path); else printf ("Cannot open directory '%s'\n", path); return 1; } while ((dp = readdir(dirp)) != NULL) { printf("%s\n",dp->d_name); } closedir (dirp);
Existe-t'il un moyen de le faire avec opendir ?
Je pourrais ainsi vérifier si j'ai un fichier régulier, auquel cas j'afficherais son nom, sinon si j'ai un path qui n'existe pas, je renverrais un erreur et autrement je pourrais travailler tranquillement dans mon répertoire.
EDIT : retrait des commentaires dans le code.
Partager