12 |
#include "libbb.h" |
#include "libbb.h" |
13 |
|
|
14 |
int chroot_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
int chroot_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
15 |
int chroot_main(int argc, char **argv) |
int chroot_main(int argc UNUSED_PARAM, char **argv) |
16 |
{ |
{ |
|
if (argc < 2) { |
|
|
bb_show_usage(); |
|
|
} |
|
|
|
|
17 |
++argv; |
++argv; |
18 |
|
if (!*argv) |
19 |
|
bb_show_usage(); |
20 |
xchroot(*argv); |
xchroot(*argv); |
21 |
xchdir("/"); |
xchdir("/"); |
22 |
|
|
23 |
++argv; |
++argv; |
24 |
if (argc == 2) { |
if (!*argv) { /* no 2nd param (PROG), use shell */ |
25 |
argv -= 2; |
argv -= 2; |
26 |
argv[0] = getenv("SHELL"); |
argv[0] = getenv("SHELL"); |
27 |
if (!argv[0]) { |
if (!argv[0]) { |
31 |
} |
} |
32 |
|
|
33 |
BB_EXECVP(*argv, argv); |
BB_EXECVP(*argv, argv); |
34 |
bb_perror_msg_and_die("cannot execute %s", *argv); |
bb_perror_msg_and_die("can't execute '%s'", *argv); |
35 |
} |
} |