1 #if defined(linux)
2 
3 
4 #include <stdio.h>            /* printf() */
5 #include <unistd.h>           /* syscall() */
6 #include <sys/syscall.h>      /* __NR_capget */
7 #include <sys/types.h>        /* uid_t */
8 #include <linux/capability.h> /* _LINUX_CAPABILITY_VERSION */
9 
10 
main()11 int main()
12 {
13   struct __user_cap_header_struct h;
14   struct __user_cap_data_struct d;
15   int syscall_result;
16 
17   if (getuid() == 0)
18     fprintf(stderr, "Running as root\n");
19   h.version = _LINUX_CAPABILITY_VERSION;
20   h.pid = 0;
21   syscall_result = syscall(__NR_capget, &h, &d);
22   if (syscall_result >= 0)
23   {
24     fprintf(stderr,
25             "capget result:\n"
26             "effective   %#x\n"
27             "permitted   %#x\n"
28             "inheritable %#x\n",
29             d.effective,
30             d.permitted,
31             d.inheritable);
32   }
33   else
34   {
35     perror("capget");
36   }
37   return 0;
38 }
39 
40 
41 #else
42 
43 
44 #include <stdio.h>
45 
main()46 int main()
47 {
48   fprintf(stderr, "This program is Linux-specific\n");
49   return 0;
50 }
51 
52 
53 #endif
54