X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=selinux%2Fchcon.c;h=80a030fde090843052529eec87eca5b96cc96b37;hb=d4b719878f5a08986d0a3dc493aad90d4466752e;hp=72cfa93c3fadd2fb5387af7c11bcb08070c4b722;hpb=c86e052b81210e762f8ca6b79cb46b8c4bdfbfe0;p=oweals%2Fbusybox.git diff --git a/selinux/chcon.c b/selinux/chcon.c index 72cfa93c3..80a030fde 100644 --- a/selinux/chcon.c +++ b/selinux/chcon.c @@ -5,10 +5,11 @@ * * Copyright (C) 2006 - 2007 KaiGai Kohei */ -#include "busybox.h" #include #include +#include "libbb.h" + #define OPT_RECURSIVE (1<<0) /* 'R' */ #define OPT_CHANHES (1<<1) /* 'c' */ #define OPT_NODEREFERENCE (1<<2) /* 'h' */ @@ -27,7 +28,11 @@ static char *type = NULL; static char *range = NULL; static char *specified_context = NULL; -static int change_filedir_context(const char *fname, struct stat *stbuf, void *userData, int depth) +static int FAST_FUNC change_filedir_context( + const char *fname, + struct stat *stbuf UNUSED_PARAM, + void *userData UNUSED_PARAM, + int depth UNUSED_PARAM) { context_t context = NULL; security_context_t file_context = NULL; @@ -104,31 +109,30 @@ skip: } #if ENABLE_FEATURE_CHCON_LONG_OPTIONS -static struct option chcon_options[] = { - { "recursive", 0, NULL, 'R' }, - { "changes", 0, NULL, 'c' }, - { "no-dereference", 0, NULL, 'h' }, - { "silent", 0, NULL, 'f' }, - { "quiet", 0, NULL, 'f' }, - { "user", 1, NULL, 'u' }, - { "role", 1, NULL, 'r' }, - { "type", 1, NULL, 't' }, - { "range", 1, NULL, 'l' }, - { "verbose", 0, NULL, 'v' }, - { "reference", 1, NULL, 0xff }, /* no short option */ - { NULL, 0, NULL, 0 }, -}; +static const char chcon_longopts[] ALIGN1 = + "recursive\0" No_argument "R" + "changes\0" No_argument "c" + "no-dereference\0" No_argument "h" + "silent\0" No_argument "f" + "quiet\0" No_argument "f" + "user\0" Required_argument "u" + "role\0" Required_argument "r" + "type\0" Required_argument "t" + "range\0" Required_argument "l" + "verbose\0" No_argument "v" + "reference\0" Required_argument "\xff" /* no short option */ + ; #endif -int chcon_main(int argc, char *argv[]); -int chcon_main(int argc, char *argv[]) +int chcon_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; +int chcon_main(int argc UNUSED_PARAM, char **argv) { char *reference_file; char *fname; int i, errors = 0; #if ENABLE_FEATURE_CHCON_LONG_OPTIONS - applet_long_options = chcon_options; + applet_long_options = chcon_longopts; #endif opt_complementary = "-1" /* at least 1 param */ ":?" /* error if exclusivity constraints are violated */ @@ -136,7 +140,7 @@ int chcon_main(int argc, char *argv[]) ":\xff--urtl:u--\xff:r--\xff:t--\xff:l--\xff" #endif ":f--v:v--f"; /* 'verbose' and 'quiet' are exclusive */ - getopt32(argc, argv, "Rchf:u:r:t:l:v", + getopt32(argv, "Rchfu:r:t:l:v", &user, &role, &type, &range, &reference_file); argv += optind; @@ -163,9 +167,7 @@ int chcon_main(int argc, char *argv[]) fname[fname_len] = '\0'; if (recursive_action(fname, - option_mask32 & OPT_RECURSIVE, - FALSE, /* followLinks */ - FALSE, /* depthFirst */ + 1<