#include #include #include #define die(msg) \ do { perror(msg); return EXIT_FAILURE; } while (0) const char* usage = "Usage: %s \n" "See man page for cap_to_text(3) for more information.\n"; int main(int argc, char *argv[]) { cap_t caps; char *capstring; if (argc != 2) { fprintf(stderr, usage, argv[0]); return EXIT_FAILURE; } if ((argv[1][0] == '-') && argv[1][1] == 'r') { // -r: a common setcap(1) parameter // to purge capability info from a file return EXIT_SUCCESS; } caps = cap_from_text(argv[1]); if (caps == NULL) die("cap_from_text"); capstring = cap_to_text(caps, NULL); if (capstring == NULL) die("cap_to_text"); printf("%s\n", capstring); if (cap_free(capstring) != 0 || cap_free(caps) != 0) die("cap_free"); return EXIT_SUCCESS; }