#if defined(linux)
#include <stdio.h> /* printf() */
#include <unistd.h> /* syscall() */
#include <sys/syscall.h> /* __NR_capget */
#include <sys/types.h> /* uid_t */
#include <linux/capability.h> /* _LINUX_CAPABILITY_VERSION */
int main()
{
struct __user_cap_header_struct h;
struct __user_cap_data_struct d;
int syscall_result;
if (getuid() == 0)
fprintf(stderr, "Running as root\n");
h.version = _LINUX_CAPABILITY_VERSION;
h.pid = 0;
syscall_result = syscall(__NR_capget, &h, &d);
if (syscall_result >= 0)
{
fprintf(stderr,
"capget result:\n"
"effective %#x\n"
"permitted %#x\n"
"inheritable %#x\n",
d.effective,
d.permitted,
d.inheritable);
}
else
{
perror("capget");
}
return 0;
}
#else
#include <stdio.h>
int main()
{
fprintf(stderr, "This program is Linux-specific\n");
return 0;
}
#endif