Magellan Linux

Diff of /trunk/mkinitrd-magellan/busybox/coreutils/chroot.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 815 by niro, Sat Sep 1 22:45:15 2007 UTC revision 816 by niro, Fri Apr 24 18:33:46 2009 UTC
# Line 9  Line 9 
9    
10  /* BB_AUDIT SUSv3 N/A -- Matches GNU behavior. */  /* BB_AUDIT SUSv3 N/A -- Matches GNU behavior. */
11    
12  #include "busybox.h"  #include "libbb.h"
13    
14    int chroot_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
15  int chroot_main(int argc, char **argv)  int chroot_main(int argc, char **argv)
16  {  {
17   if (argc < 2) {   if (argc < 2) {
# Line 18  int chroot_main(int argc, char **argv) Line 19  int chroot_main(int argc, char **argv)
19   }   }
20    
21   ++argv;   ++argv;
22   if (chroot(*argv)) {   xchroot(*argv);
  bb_perror_msg_and_die("cannot change root directory to %s", *argv);  
  }  
23   xchdir("/");   xchdir("/");
24    
25   ++argv;   ++argv;
26   if (argc == 2) {   if (argc == 2) {
27   argv -= 2;   argv -= 2;
28   if (!(*argv = getenv("SHELL"))) {   argv[0] = getenv("SHELL");
29   *argv = (char *) DEFAULT_SHELL;   if (!argv[0]) {
30     argv[0] = (char *) DEFAULT_SHELL;
31   }   }
32   argv[1] = (char *) "-i";   argv[1] = (char *) "-i";
33   }   }
34    
35   execvp(*argv, argv);   BB_EXECVP(*argv, argv);
36   bb_perror_msg_and_die("cannot execute %s", *argv);   bb_perror_msg_and_die("cannot execute %s", *argv);
37  }  }

Legend:
Removed from v.815  
changed lines
  Added in v.816