examples/mdev_fat.conf: small addition
[oweals/busybox.git] / selinux / chcon.c
index 288e93ad381a5dac0190802d6bbf32192503a9de..88d0cfec61b0918682baaee061a9df1aedbb2b28 100644 (file)
@@ -4,8 +4,42 @@
  * Port to busybox: KaiGai Kohei <kaigai@kaigai.gr.jp>
  *
  * Copyright (C) 2006 - 2007 KaiGai Kohei <kaigai@kaigai.gr.jp>
+ *
+ * Licensed under GPLv2, see file LICENSE in this source tree.
  */
-#include <getopt.h>
+
+//usage:#define chcon_trivial_usage
+//usage:       "[OPTIONS] CONTEXT FILE..."
+//usage:       "\n     chcon [OPTIONS] [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE..."
+//usage:       IF_FEATURE_CHCON_LONG_OPTIONS(
+//usage:       "\n     chcon [OPTIONS] --reference=RFILE FILE..."
+//usage:       )
+//usage:#define chcon_full_usage "\n\n"
+//usage:       "Change the security context of each FILE to CONTEXT\n"
+//usage:       IF_FEATURE_CHCON_LONG_OPTIONS(
+//usage:     "\n       -v,--verbose            Verbose"
+//usage:     "\n       -c,--changes            Report changes made"
+//usage:     "\n       -h,--no-dereference     Affect symlinks instead of their targets"
+//usage:     "\n       -f,--silent,--quiet     Suppress most error messages"
+//usage:     "\n       --reference=RFILE       Use RFILE's group instead of using a CONTEXT value"
+//usage:     "\n       -u,--user=USER          Set user/role/type/range in the target"
+//usage:     "\n       -r,--role=ROLE          security context"
+//usage:     "\n       -t,--type=TYPE"
+//usage:     "\n       -l,--range=RANGE"
+//usage:     "\n       -R,--recursive          Recurse"
+//usage:       )
+//usage:       IF_NOT_FEATURE_CHCON_LONG_OPTIONS(
+//usage:     "\n       -v      Verbose"
+//usage:     "\n       -c      Report changes made"
+//usage:     "\n       -h      Affect symlinks instead of their targets"
+//usage:     "\n       -f      Suppress most error messages"
+//usage:     "\n       -u USER Set user/role/type/range in the target security context"
+//usage:     "\n       -r ROLE"
+//usage:     "\n       -t TYPE"
+//usage:     "\n       -l RNG"
+//usage:     "\n       -R      Recurse"
+//usage:       )
+
 #include <selinux/context.h>
 
 #include "libbb.h"
@@ -28,11 +62,11 @@ static char *type = NULL;
 static char *range = NULL;
 static char *specified_context = NULL;
 
-static int change_filedir_context(
+static int FAST_FUNC change_filedir_context(
                const char *fname,
-               struct stat *stbuf ATTRIBUTE_UNUSED,
-               void *userData ATTRIBUTE_UNUSED,
-               int depth ATTRIBUTE_UNUSED)
+               struct stat *stbuf UNUSED_PARAM,
+               void *userData UNUSED_PARAM,
+               int depth UNUSED_PARAM)
 {
        context_t context = NULL;
        security_context_t file_context = NULL;
@@ -47,12 +81,12 @@ static int change_filedir_context(
        }
        if (status < 0 && errno != ENODATA) {
                if ((option_mask32 & OPT_QUIET) == 0)
-                       bb_error_msg("cannot obtain security context: %s", fname);
+                       bb_error_msg("can't obtain security context: %s", fname);
                goto skip;
        }
 
        if (file_context == NULL && specified_context == NULL) {
-               bb_error_msg("cannot apply partial context to unlabeled file %s", fname);
+               bb_error_msg("can't apply partial context to unlabeled file %s", fname);
                goto skip;
        }
 
@@ -60,7 +94,7 @@ static int change_filedir_context(
                context = set_security_context_component(file_context,
                                                         user, role, type, range);
                if (!context) {
-                       bb_error_msg("cannot compute security context from %s", file_context);
+                       bb_error_msg("can't compute security context from %s", file_context);
                        goto skip;
                }
        } else {
@@ -73,7 +107,7 @@ static int change_filedir_context(
 
        context_string = context_str(context);
        if (!context_string) {
-               bb_error_msg("cannot obtain security context in text expression");
+               bb_error_msg("can't obtain security context in text expression");
                goto skip;
        }
 
@@ -88,13 +122,13 @@ static int change_filedir_context(
                if ((option_mask32 & OPT_VERBOSE) || ((option_mask32 & OPT_CHANHES) && !fail)) {
                        printf(!fail
                               ? "context of %s changed to %s\n"
-                              : "failed to change context of %s to %s\n",
+                              : "can't change context of %s to %s\n",
                               fname, context_string);
                }
                if (!fail) {
                        rc = TRUE;
                } else if ((option_mask32 & OPT_QUIET) == 0) {
-                       bb_error_msg("failed to change context of %s to %s",
+                       bb_error_msg("can't change context of %s to %s",
                                     fname, context_string);
                }
        } else if (option_mask32 & OPT_VERBOSE) {
@@ -125,7 +159,7 @@ static const char chcon_longopts[] ALIGN1 =
 #endif
 
 int chcon_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int chcon_main(int argc ATTRIBUTE_UNUSED, char **argv)
+int chcon_main(int argc UNUSED_PARAM, char **argv)
 {
        char *reference_file;
        char *fname;