+ added dc (aka the function formerly known as math)
[oweals/busybox.git] / busybox.c
index be9aa3e83875ddb9ea0039c39030e0bd41cef707..221ef2a65b77c55ab26d34d0172ff0b05b6f1d1b 100644 (file)
--- a/busybox.c
+++ b/busybox.c
@@ -72,6 +72,9 @@ const struct BB_applet applets[] = {
 #ifdef BB_DATE
        {"date", date_main, _BB_DIR_BIN},
 #endif
+#ifdef BB_DC
+       {"dc", dc_main, _BB_DIR_USR_BIN},
+#endif
 #ifdef BB_DD
        {"dd", dd_main, _BB_DIR_BIN},
 #endif
@@ -374,18 +377,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));
 }
 
 
@@ -419,11 +415,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));
 }
 
 /*