implemented numeric sort (sort -g)
[oweals/busybox.git] / chroot.c
index d39549496542978484a089ad02e91c7ac404b254..16524d92eae2f2f53fde2c0343b7df05cbb24fc3 100644 (file)
--- a/chroot.c
+++ b/chroot.c
@@ -1,7 +1,9 @@
 /*
  * Mini chroot implementation for busybox
  *
- * Copyright (C) 1998 by Erik Andersen <andersee@debian.org>
+ *
+ * Copyright (C) 1999 by Lineo, inc.
+ * Written by Erik Andersen <andersen@lineo.com>, <andersee@debian.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  */
 
 #include "internal.h"
+#include <stdlib.h>
 #include <stdio.h>
-#include <unistd.h>
+#include <errno.h>
 
 
-static const char chroot_usage[] = "NEWROOT [COMMAND...]\n"
+static const char chroot_usage[] = "chroot NEWROOT [COMMAND...]\n\n"
 "Run COMMAND with root directory set to NEWROOT.\n";
 
 
 
 int chroot_main(int argc, char **argv)
 {
-    if (argc < 2) {
-       fprintf(stderr, "Usage: %s %s", *argv, chroot_usage);
-       return( FALSE);
+    if ( (argc < 2) || (**(argv+1) == '-') ) {
+       usage( chroot_usage);
     }
     argc--;
     argv++;
 
-    fprintf(stderr, "new root: %s\n", *argv);
-    
     if (chroot (*argv) || (chdir ("/"))) {
-       perror("cannot chroot");
-       return( FALSE);
+       fprintf(stderr, "chroot: cannot change root directory to %s: %s\n",
+               *argv, strerror(errno));
+       exit( FALSE);
     }
 
     argc--;
@@ -56,10 +57,10 @@ int chroot_main(int argc, char **argv)
        prog = getenv ("SHELL");
        if (!prog)
            prog = "/bin/sh";
-       fprintf(stderr, "no command. running: %s\n", prog);
        execlp (prog, prog, NULL);
     }
-    perror("cannot exec");
-    return(FALSE);
+    fprintf(stderr, "chroot: cannot execute %s: %s\n",
+               *argv, strerror(errno));
+    exit( FALSE);
 }