1/* vi: set sw=4 ts=4: */ 2/* 3 * Mini chroot implementation for busybox 4 * 5 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> 6 * 7 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. 8 */ 9 10/* BB_AUDIT SUSv3 N/A -- Matches GNU behavior. */ 11 12#include "libbb.h" 13 14int chroot_main(int argc, char **argv); 15int chroot_main(int argc, char **argv) 16{ 17 if (argc < 2) { 18 bb_show_usage(); 19 } 20 21 ++argv; 22 if (chroot(*argv)) { 23 bb_perror_msg_and_die("cannot change root directory to %s", *argv); 24 } 25 xchdir("/"); 26 27 ++argv; 28 if (argc == 2) { 29 argv -= 2; 30 argv[0] = getenv("SHELL"); 31 if (!argv[0]) { 32 argv[0] = (char *) DEFAULT_SHELL; 33 } 34 argv[1] = (char *) "-i"; 35 } 36 37 BB_EXECVP(*argv, argv); 38 bb_perror_msg_and_die("cannot execute %s", *argv); 39} 40