kbd_mode: fix non-ASCII letters in comments
[oweals/busybox.git] / selinux / chcon.c
index 72cfa93c3fadd2fb5387af7c11bcb08070c4b722..80a030fde090843052529eec87eca5b96cc96b37 100644 (file)
@@ -5,10 +5,11 @@
  *
  * Copyright (C) 2006 - 2007 KaiGai Kohei <kaigai@kaigai.gr.jp>
  */
-#include "busybox.h"
 #include <getopt.h>
 #include <selinux/context.h>
 
+#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<<option_mask32 & OPT_RECURSIVE,
                                     change_filedir_context,
                                     change_filedir_context,
                                     NULL, 0) != TRUE)