Bonjour,
Le code lsd.c suivant :[code]
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
int
main(int argc, char *argv[]) {
int i;
struct dirent *dp;
struct stat s;
DIR *dir;
if((argc > 1) && !strncmp(argv[1], "-v", 3)) {
fputs("lsd-"VERSION"\n", stdout);
exit(EXIT_SUCCESS);
}
for(i = 0; i < argc; i++)
if((dir = opendir(argv[i]))) {
fchdir(dirfd(dir));
do
if((dp = readdir(dir))
&& (stat(dp->d_name, &s) != -1)
&& S_ISDIR (s.st_mode)
&& !access(dp->d_name, X_OK))
puts(dp->d_name);
while(dp);
closedir(dir);
}
return 0;
}[/code]produit un programme qui, lancé avec le nom d’un répertoire en argument va lister tous ses sous-répertoires comme
la commandels -dU .*/ */
Du moins ce que je crois, or dans le listage les répertoires . et … sont listés deux fois, est-ce que quelqu’un saurait me dire pourquoi?