1 /* setfattr.c - Write POSIX extended attributes.
2 *
3 * Copyright 2016 Android Open Source Project.
4 *
5 * No standard
6
7 USE_SETFATTR(NEWTOY(setfattr, "hn:|v:x:|[!xv]", TOYFLAG_USR|TOYFLAG_BIN))
8
9 config SETFATTR
10 bool "setfattr"
11 default y
12 help
13 usage: setfattr [-h] [-x|-n NAME] [-v VALUE] FILE...
14
15 Write POSIX extended attributes.
16
17 -h Do not dereference symlink
18 -n Set given attribute
19 -x Remove given attribute
20 -v Set value for attribute -n (default is empty)
21 */
22
23 #define FOR_setfattr
24 #include "toys.h"
25
26 GLOBALS(
27 char *x, *v, *n;
28 )
29
setfattr_main(void)30 void setfattr_main(void)
31 {
32 int h = FLAG(h), rc;
33 char **s;
34
35 for (s = toys.optargs; *s; s++) {
36 if (TT.x) rc = (h ? lremovexattr : removexattr)(*s, TT.x);
37 else rc = (h ? lsetxattr : setxattr)(*s, TT.n, TT.v, TT.v ? strlen(TT.v) : 0, 0);
38 if (rc) perror_msg_raw(*s);
39 }
40 }
41