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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| #include <sys/stat.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
void aff_right(struct stat *recupstat)
{
if ((S_IFMT & recupstat->st_mode) == S_IFREG)
printf("-");
else if ((S_IFMT & recupstat->st_mode) == S_IFDIR)
printf("d");
else if ((S_IFMT & recupstat->st_mode) == S_IFCHR)
printf("c");
else if ((S_IFMT & recupstat->st_mode) == S_IFBLK)
printf("b");
else if ((S_IFMT & recupstat->st_mode) == S_IFIFO)
printf("p");
else if ((S_IFMT & recupstat->st_mode) == S_IFLNK)
printf("l");
else if ((S_IFMT & recupstat->st_mode) == S_IFSOCK)
printf("s");
else
printf("?");
((recupstat->st_mode & S_IRUSR) == S_IRUSR) ? printf("r") : printf("-");
((recupstat->st_mode & S_IWUSR) == S_IWUSR) ? printf("w") : printf("-");
((recupstat->st_mode & S_IXUSR) == S_IXUSR) ? printf("x") : printf("-");
((recupstat->st_mode & S_IRGRP) == S_IRGRP) ? printf("r") : printf("-");
((recupstat->st_mode & S_IWGRP) == S_IWGRP) ? printf("w") : printf("-");
((recupstat->st_mode & S_IXGRP) == S_IXGRP) ? printf("x") : printf("-");
((recupstat->st_mode & S_IROTH) == S_IROTH) ? printf("r") : printf("-");
((recupstat->st_mode & S_IWOTH) == S_IWOTH) ? printf("w") : printf("-");
((recupstat->st_mode & S_IXOTH) == S_IXOTH) ? printf("x") : printf("-");
}
int main(int argc, char *argv[])
{
int i;
for(i=0; i < argc; ++i) {
struct stat s;
if (stat(argv[i], &s) == 0) {
aff_right(&s);
printf(" %s\n", argv[i]);
} else {
fprintf(stderr, "Failed to stat %s: %s\n", argv[i],
strerror(errno));
}
}
return 0;
} |