Update internal.h to conditionally include asm/string.h
[oweals/busybox.git] / busybox.c
index 07caa3446fbdfb17e77f327d852dcdb74cdfb4d7..191dee13fdc3d2a74d1847488c997f839dd9d843 100644 (file)
--- a/busybox.c
+++ b/busybox.c
@@ -32,12 +32,13 @@ void *__libc_stack_end;
 
 const struct BB_applet applets[] = {
 
+#ifdef BB_AR
+       {"ar", ar_main, _BB_DIR_USR_BIN},
+#endif
 #ifdef BB_BASENAME
        {"basename", basename_main, _BB_DIR_USR_BIN},
 #endif
-#ifdef BB_BUSYBOX
        {"busybox", busybox_main, _BB_DIR_BIN},
-#endif
 #ifdef BB_BLOCK_DEVICE
        {"block_device", block_device_main, _BB_DIR_SBIN},
 #endif
@@ -188,6 +189,9 @@ const struct BB_applet applets[] = {
 #ifdef BB_MATH
        {"math", math_main, _BB_DIR_USR_BIN},
 #endif
+#ifdef BB_MD5SUM
+       {"md5sum", md5sum_main, _BB_DIR_USR_BIN},
+#endif
 #ifdef BB_MKDIR
        {"mkdir", mkdir_main, _BB_DIR_BIN},
 #endif
@@ -323,12 +327,21 @@ const struct BB_applet applets[] = {
 #ifdef BB_UPTIME
        {"uptime", uptime_main, _BB_DIR_USR_BIN},
 #endif
+#ifdef BB_UUENCODE
+       {"uuencode", uuencode_main, _BB_DIR_USR_BIN},
+#endif
+#ifdef BB_UUDECODE
+       {"uudecode", uudecode_main, _BB_DIR_USR_BIN},
+#endif
 #ifdef BB_USLEEP
        {"usleep", usleep_main, _BB_DIR_BIN},
 #endif
 #ifdef BB_WC
        {"wc", wc_main, _BB_DIR_USR_BIN},
 #endif
+#ifdef BB_WHICH
+       {"which", which_main, _BB_DIR_USR_BIN},
+#endif
 #ifdef BB_WHOAMI
        {"whoami", whoami_main, _BB_DIR_USR_BIN},
 #endif
@@ -361,18 +374,11 @@ int main(int argc, char **argv)
 
        while (a->name != 0) {
                if (strcmp(name, a->name) == 0) {
-                       int status;
-
-                       status = ((*(a->main)) (argc, argv));
-                       if (status < 0) {
-                               fprintf(stderr, "%s: %s\n", a->name, strerror(errno));
-                       }
-                       fprintf(stderr, "\n");
-                       exit(status);
+                       exit(((*(a->main)) (argc, argv)));
                }
                a++;
        }
-       exit(busybox_main(argc, argv));
+       return(busybox_main(argc, argv));
 }
 
 
@@ -386,16 +392,14 @@ int busybox_main(int argc, char **argv)
        if (been_there_done_that == 1 || argc < 1) {
                const struct BB_applet *a = applets;
 
-               fprintf(stderr, "BusyBox v%s (%s) multi-call binary -- GPL2\n\n",
-                               BB_VER, BB_BT);
-               fprintf(stderr, "Usage: busybox [function] [arguments]...\n");
-               fprintf(stderr, "   or: [function] [arguments]...\n\n");
-               fprintf(stderr,
+               fprintf(stderr, "BusyBox v%s (%s) multi-call binary -- GPL2\n\n"
+                               "Usage: busybox [function] [arguments]...\n"
+                               "   or: [function] [arguments]...\n\n"
                                "\tBusyBox is a multi-call binary that combines many common Unix\n"
                                "\tutilities into a single executable.  Most people will create a\n"
                                "\tlink to busybox for each function they wish to use, and BusyBox\n"
-                               "\twill act like whatever it was invoked as.\n");
-               fprintf(stderr, "\nCurrently defined functions:\n");
+                               "\twill act like whatever it was invoked as.\n" 
+                               "\nCurrently defined functions:\n", BB_VER, BB_BT);
 
                while (a->name != 0) {
                        col +=
@@ -408,11 +412,10 @@ int busybox_main(int argc, char **argv)
                }
                fprintf(stderr, "\n\n");
                exit(-1);
-       } else {
-               /* If we've already been here once, exit now */
-               been_there_done_that = 1;
-               return (main(argc, argv));
        }
+       /* If we've already been here once, exit now */
+       been_there_done_that = 1;
+       return (main(argc, argv));
 }
 
 /*