(root)/
acl-2.3.1/
examples/
copyperm.c
       1  /*
       2    Copyright (C) 2009  Andreas Gruenbacher <agruen@suse.de>
       3  
       4    This program is free software: you can redistribute it and/or modify it
       5    under the terms of the GNU General Public License as published by
       6    the Free Software Foundation, either version 2 of the License, or
       7    (at your option) any later version.
       8  
       9    This program is distributed in the hope that it will be useful,
      10    but WITHOUT ANY WARRANTY; without even the implied warranty of
      11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      12    GNU General Public License for more details.
      13  
      14    You should have received a copy of the GNU General Public License
      15    along with this program.  If not, see <http://www.gnu.org/licenses/>.
      16  */
      17  
      18  #include <stdlib.h>
      19  #include <stdio.h>
      20  #include <stdarg.h>
      21  #include <string.h>
      22  #include <errno.h>
      23  #include <locale.h>
      24  
      25  #include <attr/error_context.h>
      26  #include <attr/libattr.h>
      27  #include <acl/libacl.h>
      28  
      29  void
      30  error(struct error_context *ctx, const char *fmt, ...)
      31  {
      32  	va_list ap;
      33  
      34  	va_start(ap, fmt);
      35  	if (vfprintf(stderr, fmt, ap))
      36  		fprintf(stderr, ": ");
      37  	fprintf(stderr, "%s\n", strerror(errno));
      38  	va_end(ap);
      39  }
      40  
      41  struct error_context ctx = {
      42  	error
      43  };
      44  
      45  int
      46  main(int argc, char *argv[])
      47  {
      48  	int ret;
      49  
      50  	setlocale(LC_MESSAGES, "");
      51  	setlocale(LC_CTYPE, "");
      52  
      53  	if (argc != 3) {
      54  		fprintf(stderr, "Usage: %s from to\n", argv[0]);
      55  		exit(1);
      56  	}
      57  
      58  	ret = perm_copy_file(argv[1], argv[2], &ctx);
      59  	exit (ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
      60  }
      61