1#include <stdio.h>
2#include <string.h>
3#include <errno.h>
4#include <sys/attr.h>
5#include <sys/types.h>
6#include <sys/stat.h>
7#include <unistd.h>
8
9struct attr_buffer {
10	uint32_t	length;
11	uint32_t	mount_flags;
12};
13
14int
15main(int argc, char **argv)
16{
17	int i;
18	struct attrlist attrs;
19	struct attr_buffer attrbuf;
20
21	if (argc < 2) {
22		fprintf(stderr, "Usage: checktrigger <pathname>...\n");
23		return 1;
24	}
25	argv++;
26	argc--;
27	for (i = 0; i < argc; i++) {
28		memset(&attrs, 0, sizeof(attrs));
29		attrs.bitmapcount = ATTR_BIT_MAP_COUNT;
30		attrs.dirattr = ATTR_DIR_MOUNTSTATUS;
31		if (getattrlist(argv[i], &attrs, &attrbuf, sizeof attrbuf,
32		    FSOPT_NOFOLLOW) == -1) {
33			fprintf(stderr, "checktrigger: getattrlist of %s failed: %s\n",
34			    argv[i], strerror(errno));
35			return 2;
36		}
37		printf("%s %s a trigger\n", argv[i],
38		    (attrbuf.mount_flags & DIR_MNTSTATUS_TRIGGER) ?
39		        "is" : "is not");
40	}
41	return 0;
42}
43