chown: support long options
function old new delta chown_longopts - 81 +81 chown_main 182 192 +10 Signed-off-by: Matheus Izvekov <mizvekov@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
8b8d32ea56
commit
31416d589e
@ -52,6 +52,13 @@ config CHOWN
|
|||||||
chown is used to change the user and/or group ownership
|
chown is used to change the user and/or group ownership
|
||||||
of files.
|
of files.
|
||||||
|
|
||||||
|
config FEATURE_CHOWN_LONG_OPTIONS
|
||||||
|
bool "Enable long options"
|
||||||
|
default n
|
||||||
|
depends on CHOWN && LONG_OPTS
|
||||||
|
help
|
||||||
|
Enable use of long options
|
||||||
|
|
||||||
config CHROOT
|
config CHROOT
|
||||||
bool "chroot"
|
bool "chroot"
|
||||||
default n
|
default n
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* BB_AUDIT SUSv3 defects - none? */
|
/* BB_AUDIT SUSv3 defects - none? */
|
||||||
/* BB_AUDIT GNU defects - unsupported long options. */
|
|
||||||
/* http://www.opengroup.org/onlinepubs/007904975/utilities/chown.html */
|
/* http://www.opengroup.org/onlinepubs/007904975/utilities/chown.html */
|
||||||
|
|
||||||
#include "libbb.h"
|
#include "libbb.h"
|
||||||
@ -37,6 +36,20 @@
|
|||||||
#define BIT_TRAVERSE_TOP (0x20|0x40)
|
#define BIT_TRAVERSE_TOP (0x20|0x40)
|
||||||
#define OPT_TRAVERSE_TOP (IF_DESKTOP(opt & BIT_TRAVERSE_TOP) IF_NOT_DESKTOP(0))
|
#define OPT_TRAVERSE_TOP (IF_DESKTOP(opt & BIT_TRAVERSE_TOP) IF_NOT_DESKTOP(0))
|
||||||
|
|
||||||
|
#if ENABLE_FEATURE_CHOWN_LONG_OPTIONS
|
||||||
|
static const char chown_longopts[] ALIGN1 =
|
||||||
|
"recursive\0" No_argument "R"
|
||||||
|
"dereference\0" No_argument "\xff"
|
||||||
|
"no-dereference\0" No_argument "h"
|
||||||
|
# if ENABLE_DESKTOP
|
||||||
|
"changes\0" No_argument "c"
|
||||||
|
"silent\0" No_argument "f"
|
||||||
|
"quiet\0" No_argument "f"
|
||||||
|
"verbose\0" No_argument "v"
|
||||||
|
# endif
|
||||||
|
;
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef int (*chown_fptr)(const char *, uid_t, gid_t);
|
typedef int (*chown_fptr)(const char *, uid_t, gid_t);
|
||||||
|
|
||||||
struct param_t {
|
struct param_t {
|
||||||
@ -78,6 +91,9 @@ int chown_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
param.ugid.gid = -1;
|
param.ugid.gid = -1;
|
||||||
param.chown_func = chown;
|
param.chown_func = chown;
|
||||||
|
|
||||||
|
#if ENABLE_FEATURE_CHOWN_LONG_OPTIONS
|
||||||
|
applet_long_options = chown_longopts;
|
||||||
|
#endif
|
||||||
opt_complementary = "-2";
|
opt_complementary = "-2";
|
||||||
opt = getopt32(argv, OPT_STR);
|
opt = getopt32(argv, OPT_STR);
|
||||||
argv += optind;
|
argv += optind;
|
||||||
|
Loading…
Reference in New Issue
Block a user