détecter un fichier avec opendir
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().
Code:
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); |
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.
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.