1#include <stdio.h> 2#include <string.h> 3#include <errno.h> 4#include <libgen.h> 5#include <sys/acl.h> 6 7const char *progname; 8 9int main(int argc, char *argv[]) 10{ 11 acl_t acl; 12 int n, ret = 0; 13 14 progname = basename(argv[0]); 15 16 if (argc < 3) { 17 printf("%s -- set access control list of files\n" 18 "Usage: %s acl file ...\n", 19 progname, progname); 20 return 1; 21 } 22 23 acl = acl_from_text(argv[1]); 24 if (!acl) { 25 fprintf(stderr, "%s: `%s': %s\n", 26 progname, argv[1], strerror(errno)); 27 return 1; 28 } 29 if (acl_valid(acl) != 0) { 30 fprintf(stderr, "%s: `%s': invalid/incomplete acl\n", 31 progname, argv[1]); 32 acl_free(acl); 33 return 1; 34 } 35 36 for (n = 2; n < argc; n++) { 37 if (acl_set_file(argv[n], ACL_TYPE_ACCESS, acl) != 0) { 38 fprintf(stderr, "%s: setting acl of %s: %s\n", 39 progname, argv[n], strerror(errno)); 40 ret = 1; 41 } 42 } 43 44 acl_free(acl); 45 46 return ret; 47} 48