changeset 1686:d79dc782c2d9 draft

Cleanup pass on chcon.
author Rob Landley <rob@landley.net>
date Sun, 08 Feb 2015 16:38:11 -0600
parents 542b55c0f723
children 7f4413a90d45
files toys/pending/chcon.c
diffstat 1 files changed, 8 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/toys/pending/chcon.c	Sun Feb 08 16:33:24 2015 -0600
+++ b/toys/pending/chcon.c	Sun Feb 08 16:38:11 2015 -0600
@@ -2,7 +2,7 @@
  *
  * Copyright 2014 The Android Open Source Project
 
-USE_CHCON(NEWTOY(chcon, "<1hRv", TOYFLAG_USR|TOYFLAG_BIN))
+USE_CHCON(NEWTOY(chcon, "<2hvR", TOYFLAG_USR|TOYFLAG_BIN))
 
 config CHCON
   bool "chcon"
@@ -11,7 +11,7 @@
   help
     usage: chcon [-hRv] CONTEXT FILE...
 
-    Change the SELinux security context of listed file[s] (recursively with -R).
+    Change the SELinux security context of listed file[s].
 
     -h change symlinks instead of what they point to.
     -R recurse into subdirectories.
@@ -21,30 +21,23 @@
 #define FOR_chcon
 #include "toys.h"
 
-GLOBALS(
-  char *context;
-)
-
 int do_chcon(struct dirtree *try)
 {
-  int ret;
+  char *path, *con = *toys.optargs;
 
   if (!dirtree_notdotdot(try)) return 0;
 
-  char *path = dirtree_path(try, 0);
-  if (toys.optflags & FLAG_v)
-    printf("chcon '%s' to %s\n", path, TT.context);
-  ret = ((toys.optflags&FLAG_h) ? lsetfilecon : setfilecon)(path, TT.context);
-  if (ret == -1)
-    perror_msg("'%s' to %s", path, TT.context);
+  path = dirtree_path(try, 0);
+  if (toys.optflags & FLAG_v) printf("chcon '%s' to %s\n", path, con);
+  if (-1 == ((toys.optflags & FLAG_h) ? lsetfilecon : setfilecon)(path, con))
+    perror_msg("'%s' to %s", path, con);
   free(path);
 
-  return (toys.optflags & FLAG_R) ? DIRTREE_RECURSE : 0;
+  return (toys.optflags & FLAG_R)*DIRTREE_RECURSE;
 }
 
 void chcon_main(void)
 {
-  TT.context = *toys.optargs;
   char **file;
 
   for (file = toys.optargs+1; *file; file++) dirtree_read(*file, do_chcon);