X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=selinux%2Fchcon.c;h=55c2522f66642a83a520fb951ae3981b92dbed76;hb=5a49d284a6a9f6cf2076f23561f95aebdfd44592;hp=0eab6864ea867103581abf6a7aad5121a523a7bd;hpb=3e816c1252cc55e3763f946622129d31ea1f0f20;p=oweals%2Fbusybox.git diff --git a/selinux/chcon.c b/selinux/chcon.c index 0eab6864e..55c2522f6 100644 --- a/selinux/chcon.c +++ b/selinux/chcon.c @@ -4,11 +4,14 @@ * Port to busybox: KaiGai Kohei * * Copyright (C) 2006 - 2007 KaiGai Kohei + * + * Licensed under GPLv2, see file LICENSE in this tarball for details. */ -#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 +30,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 +111,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 +142,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;