# HG changeset patch # User Rob Landley # Date 1423435091 21600 # Node ID d79dc782c2d977d666f0d1476b10e2b5b79560c0 # Parent 542b55c0f7231ea01fc04db38a694adc8c60d2b4 Cleanup pass on chcon. diff -r 542b55c0f723 -r d79dc782c2d9 toys/pending/chcon.c --- 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);