text: /* chcon.c - Change file security context
   *
   * Copyright 2014 The Android Open Source Project
  
  USE_CHCON(NEWTOY(chcon, "<2hvR", TOYFLAG_USR|TOYFLAG_BIN))
  
  config CHCON
    bool "chcon"
    depends on TOYBOX_SELINUX
    default y
    help
      usage: chcon [-hRv] CONTEXT FILE...
  
      Change the SELinux security context of listed file[s].
  
      -h	Change symlinks instead of what they point to
      -R	Recurse into subdirectories
      -v	Verbose
  */
  
  #define FOR_chcon
  #include "toys.h"
  
  static int do_chcon(struct dirtree *try)
  {
    char *path, *con = *toys.optargs;
  
    if (!dirtree_notdotdot(try)) return 0;
  
    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;
  }
  
  void chcon_main(void)
  {
    char **file;
  
    for (file = toys.optargs+1; *file; file++) dirtree_read(*file, do_chcon);
  }
  