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