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