| /* setfattr.c - Write POSIX extended attributes. |
| * |
| * Copyright 2016 Android Open Source Project. |
| * |
| * No standard |
| |
| USE_SETFATTR(NEWTOY(setfattr, "hn:|v:x:|[!xv]", TOYFLAG_USR|TOYFLAG_BIN)) |
| |
| config SETFATTR |
| bool "setfattr" |
| default n |
| help |
| usage: setfattr [-h] [-x|-n NAME] [-v VALUE] FILE... |
| |
| Write POSIX extended attributes. |
| |
| -h Do not dereference symlink. |
| -n Set given attribute. |
| -x Remove given attribute. |
| -v Set value for attribute -n (default is empty). |
| */ |
| |
| #define FOR_setfattr |
| #include "toys.h" |
| |
| GLOBALS( |
| char *x, *v, *n; |
| ) |
| |
| static void do_setfattr(char *file) |
| { |
| int h = toys.optflags & FLAG_h; |
| |
| if (toys.optflags&FLAG_x) { |
| if ((h ? lremovexattr : removexattr)(file, TT.x)) |
| perror_msg("removexattr failed"); |
| } else |
| if ((h ? lsetxattr : setxattr)(file, TT.n, TT.v, TT.v?strlen(TT.v):0, 0)) |
| perror_msg("setxattr failed"); |
| } |
| |
| void setfattr_main(void) |
| { |
| char **s; |
| |
| for (s=toys.optargs; *s; s++) do_setfattr(*s); |
| } |