#include <stdio.h>
#include <dirent.h>
#include <stdlib.h>
#include <sys/stat.h>
// une macro définition
// attention ce n'est pas une fonction!
#define LISIBLE_PAR_L_UTILISATEUR(m) (m&S_IRUSR)
int main(int argc,char *argv[]) {
struct dirent *de;
struct stat infos;
// Ouvertuyre du répertoire courant en lecture
DIR *dir = opendir(".");
if (dir==NULL) { perror("probleme avec ."); exit(1); }
// Lecture itérative d'entrée de répertoire
while ( (de=readdir(dir)) != NULL) {
// Récupération des méta-informations associées à l'inœud associé à la référence donnée
if (stat(de->d_name,&infos)!=-1) {
// Affichage de différentes informations
printf("%lld %c%c%c%c %d %4d %12lld %s\n",
infos.st_ino,
S_ISDIR(infos.st_mode)?'d':'-',
LISIBLE_PAR_L_UTILISATEUR(infos.st_mode)?'r':'-',
(infos.st_mode&S_IWUSR)?'w':'-',
(infos.st_mode&S_IXUSR)?'x':'-',
infos.st_uid,
infos.st_nlink,
infos.st_size,
de->d_name);
}
}
// Libération des ressources associées
closedir(dir);
exit(0);
}