1: /*
   2:  * Copyright (c) 1988 The Regents of the University of California.
   3:  * All rights reserved.
   4:  *
   5:  * Redistribution and use in source and binary forms are permitted
   6:  * provided that the above copyright notice and this paragraph are
   7:  * duplicated in all such forms and that any documentation,
   8:  * advertising materials, and other materials related to such
   9:  * distribution and use acknowledge that the software was developed
  10:  * by the University of California, Berkeley.  The name of the
  11:  * University may not be used to endorse or promote products derived
  12:  * from this software without specific prior written permission.
  13:  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  14:  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  15:  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  16:  */
  17: 
  18: #ifndef lint
  19: char copyright[] =
  20: "@(#) Copyright (c) 1988 The Regents of the University of California.\n\
  21:  All rights reserved.\n";
  22: #endif /* not lint */
  23: 
  24: #ifndef lint
  25: static char sccsid[] = "@(#)chroot.c	5.4 (Berkeley) 3/5/89";
  26: #endif /* not lint */
  27: 
  28: #include <stdio.h>
  29: #include "pathnames.h"
  30: 
  31: main(argc, argv)
  32:     int argc;
  33:     char **argv;
  34: {
  35:     extern int errno;
  36:     char *shell, *getenv(), *strerror();
  37: 
  38:     if (argc < 2) {
  39:         fprintf(stderr, "usage: chroot newroot [command]\n");
  40:         exit(1);
  41:     }
  42:     if (chdir(argv[1]) || chroot(argv[1]))
  43:         fatal(argv[1]);
  44:     setuid(getuid());
  45:     if (argv[2]) {
  46:         execvp(argv[2], &argv[2]);
  47:         fatal(argv[2]);
  48:     } else {
  49:         if (!(shell = getenv("SHELL")))
  50:             shell = _PATH_BSHELL;
  51:         execlp(shell, shell, "-i", (char *)NULL);
  52:         fatal(shell);
  53:     }
  54:     /* NOTREACHED */
  55: }
  56: 
  57: fatal(msg)
  58:     char *msg;
  59: {
  60:     extern int errno;
  61: 
  62:     fprintf(stderr, "chroot: %s: %s\n", msg, strerror(errno));
  63:     exit(1);
  64: }

Defined functions

fatal defined in line 57; used 3 times
main defined in line 31; never used

Defined variables

copyright defined in line 19; never used
sccsid defined in line 25; never used
Last modified: 1989-05-01
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 2736
Valid CSS Valid XHTML 1.0 Strict