summaryrefslogtreecommitdiff
path: root/myfind/display_perm/display_perm.c
blob: 3ad17e68316b13a8783c8579188cde82fa4d8279 (plain)
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
#include <stdio.h>
#include <sys/stat.h>

int main(int argc, char **argv)
{
    if (argc != 2)
        return 2;

    struct stat s;
    stat(argv[1], &s);

    // User
    printf("%d",
           ((s.st_mode & S_IRUSR) != 0) * 4 + ((s.st_mode & S_IWUSR) != 0) * 2
               + ((s.st_mode & S_IXUSR) != 0));
    printf("%d",
           ((s.st_mode & S_IRGRP) != 0) * 4 + ((s.st_mode & S_IWGRP) != 0) * 2
               + ((s.st_mode & S_IXGRP) != 0));
    printf("%d",
           ((s.st_mode & S_IROTH) != 0) * 4 + ((s.st_mode & S_IWOTH) != 0) * 2
               + ((s.st_mode & S_IXOTH) != 0));
    printf("\n");

    return 0;
}