random tiny size savings
authorDenis Vlasenko <vda.linux@googlemail.com>
Sun, 24 Dec 2006 15:23:28 +0000 (15:23 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Sun, 24 Dec 2006 15:23:28 +0000 (15:23 -0000)
applets/applets.c
applets/busybox.c
include/busybox.h
shell/ash.c
shell/msh.c

index f8abb2767eaf48e2e393908db67caf471b9c01ed..ebd1ff31329fcd155f696f7e979500d8a60f7444 100644 (file)
@@ -44,7 +44,7 @@ static const char usage_messages[] =
 static struct BB_applet *applet_using;
 
 /* The -1 arises because of the {0,NULL,0,-1} entry above. */
-const size_t NUM_APPLETS = (sizeof (applets) / sizeof (struct BB_applet) - 1);
+const unsigned short NUM_APPLETS = (sizeof (applets) / sizeof (struct BB_applet) - 1);
 
 
 #ifdef CONFIG_FEATURE_SUID_CONFIG
@@ -459,8 +459,6 @@ static int applet_name_compare(const void *name, const void *vapplet)
        return strcmp(name, applet->name);
 }
 
-extern const size_t NUM_APPLETS;
-
 struct BB_applet *find_applet_by_name(const char *name)
 {
        return bsearch(name, applets, NUM_APPLETS, sizeof(struct BB_applet),
@@ -469,15 +467,19 @@ struct BB_applet *find_applet_by_name(const char *name)
 
 void run_applet_by_name(const char *name, int argc, char **argv)
 {
-       if (ENABLE_FEATURE_SUID_CONFIG) parse_config_file();
+       if (ENABLE_FEATURE_SUID_CONFIG)
+               parse_config_file();
 
-       if (!strncmp(name, "busybox", 7)) busybox_main(argc, argv);
+       if (!strncmp(name, "busybox", 7))
+               exit(busybox_main(argc, argv));
        /* Do a binary search to find the applet entry given the name. */
        applet_using = find_applet_by_name(name);
        if (applet_using) {
                applet_name = applet_using->name;
-               if(argc==2 && !strcmp(argv[1], "--help")) bb_show_usage();
-               if(ENABLE_FEATURE_SUID) check_suid(applet_using);
-               exit((*(applet_using->main))(argc, argv));
+               if (argc == 2 && !strcmp(argv[1], "--help"))
+                       bb_show_usage();
+               if (ENABLE_FEATURE_SUID)
+                       check_suid(applet_using);
+               exit(applet_using->main(argc, argv));
        }
 }
index bb9eb3af7e6aa8417a2d6c631b95d31230adcdf1..9ca12ac2bdaab5511f2b6a7c03983e6dcc8d8e8b 100644 (file)
@@ -14,8 +14,8 @@ const char *applet_name ATTRIBUTE_EXTERNALLY_VISIBLE;
  *             this should be consistent w/ the enum, busybox.h::Location,
  *             or else...
  */
-static const char usr_bin [] ="/usr/bin";
-static const char usr_sbin[] ="/usr/sbin";
+static const char usr_bin [] = "/usr/bin";
+static const char usr_sbin[] = "/usr/sbin";
 
 static const char* const install_dir[] = {
        &usr_bin [8], /* "", equivalent to "/" for concat_path_file() */
@@ -26,25 +26,25 @@ static const char* const install_dir[] = {
 };
 
 /* abstract link() */
-typedef int (*__link_f)(const char *, const char *);
+typedef int (*link_func)(const char *, const char *);
 
 /* create (sym)links for each applet */
 static void install_links(const char *busybox, int use_symbolic_links)
 {
-       __link_f Link = link;
-
+       link_func lf = link;
        char *fpc;
        int i;
        int rc;
 
        if (use_symbolic_links)
-               Link = symlink;
+               lf = symlink;
 
        for (i = 0; applets[i].name != NULL; i++) {
                fpc = concat_path_file(
-                       install_dir[applets[i].location], applets[i].name);
-               rc = Link(busybox, fpc);
-               if (rc!=0 && errno!=EEXIST) {
+                               install_dir[applets[i].location],
+                               applets[i].name);
+               rc = lf(busybox, fpc);
+               if (rc != 0 && errno != EEXIST) {
                        bb_perror_msg("%s", fpc);
                }
                free(fpc);
@@ -59,10 +59,11 @@ int main(int argc, char **argv)
 {
        const char *s;
 
-       applet_name=argv[0];
-       if (*applet_name == '-') applet_name++;
-       for (s = applet_name; *s ;)
-               if (*(s++) == '/') applet_name = s;
+       applet_name = argv[0];
+       if (*applet_name == '-')
+               applet_name++;
+       while ((s = strchr(applet_name, '/')))
+               applet_name = s + 1;
 
        /* Set locale for everybody except 'init' */
        if (ENABLE_LOCALE_SUPPORT && getpid() != 1)
@@ -81,44 +82,41 @@ int busybox_main(int argc, char **argv)
         */
        if (ENABLE_FEATURE_INSTALLER && argc > 1 && !strcmp(argv[1], "--install")) {
                int use_symbolic_links = 0;
-               int rc = 0;
                char *busybox;
 
                /* to use symlinks, or not to use symlinks... */
-               if (argc > 2) {
-                       if ((strcmp(argv[2], "-s") == 0)) {
+               if (argc > 2)
+                       if (strcmp(argv[2], "-s") == 0)
                                use_symbolic_links = 1;
-                       }
-               }
 
                /* link */
 // XXX: FIXME: this is broken. Why not just use argv[0] ?
                busybox = xreadlink("/proc/self/exe");
-               if (busybox) {
-                       install_links(busybox, use_symbolic_links);
+               if (!busybox)
+                       return 1;
+               install_links(busybox, use_symbolic_links);
+               if (ENABLE_FEATURE_CLEAN_UP)
                        free(busybox);
-               } else {
-                       rc = 1;
-               }
-               return rc;
+               return 0;
        }
 
        /* Deal with --help.  (Also print help when called with no arguments) */
 
-       if (argc==1 || !strcmp(argv[1],"--help") ) {
-               if (argc>2) {
+       if (argc == 1 || !strcmp(argv[1], "--help") ) {
+               if (argc > 2) {
                        applet_name = argv[2];
                        run_applet_by_name(applet_name, 2, argv);
                } else {
                        const struct BB_applet *a;
                        int col, output_width;
 
+                       output_width = 80 - sizeof("start-stop-daemon, ") - 8;
                        if (ENABLE_FEATURE_AUTOWIDTH) {
                                /* Obtain the terminal width.  */
                                get_terminal_width_height(0, &output_width, NULL);
                                /* leading tab and room to wrap */
                                output_width -= sizeof("start-stop-daemon, ") + 8;
-                       } else output_width = 80 - sizeof("start-stop-daemon, ") - 8;
+                       }
 
                        printf("%s\n"
                               "Copyright (C) 1998-2006  Erik Andersen, Rob Landley, and others.\n"
@@ -130,19 +128,19 @@ int busybox_main(int argc, char **argv)
                               "\tlink to busybox for each function they wish to use and BusyBox\n"
                               "\twill act like whatever it was invoked as!\n"
                               "\nCurrently defined functions:\n", bb_msg_full_version);
-
-                       col=0;
+                       col = 0;
                        for(a = applets; a->name;) {
-                               col += printf("%s%s", (col ? ", " : "\t"), (a++)->name);
+                               col += printf("%s%s", (col ? ", " : "\t"), a->name);
+                               a++;
                                if (col > output_width && a->name) {
-                                       printf(",\n");
+                                       puts(",");
                                        col = 0;
                                }
                        }
-                       printf("\n\n");
-                       exit(0);
+                       puts("\n");
+                       return 0;
                }
-       } else run_applet_by_name(argv[1], argc-1, argv+1);
+       } else run_applet_by_name(argv[1], argc - 1, argv + 1);
 
        bb_error_msg_and_die("applet not found");
 }
index d20337ff15e07313007f63c3c742ee43ffadbd5d..a7a0f4915f1b7704aab3ec6b93d44d2d076ec9dd 100644 (file)
@@ -9,7 +9,7 @@
 
 #include "libbb.h"
 
-/* order matters:  used as index into "install_dir[]" in busybox.c */
+/* order matters: used as index into "install_dir[]" in busybox.c */
 enum Location {
        _BB_DIR_ROOT = 0,
        _BB_DIR_BIN,
@@ -31,8 +31,9 @@ struct BB_applet {
        __extension__ enum SUIDRoot need_suid:4;
 };
 
-/* From busybox.c */
+/* From busybox.c and applet.c */
 extern const struct BB_applet applets[];
+extern const unsigned short NUM_APPLETS;
 
 /* Automagically pull in all the applet function prototypes and
  * applet usage strings.  These are all of the form:
index 2de61dad926b1eaa1e5252c126873fd2737d7d89..e8f7d30bd62eafd31dfb2322de0562ef08fcb789 100644 (file)
@@ -11893,17 +11893,11 @@ static int helpcmd(int argc, char **argv)
                }
        }
 #ifdef CONFIG_FEATURE_SH_STANDALONE_SHELL
-       {
-               extern const struct BB_applet applets[];
-               extern const size_t NUM_APPLETS;
-
-               for (i = 0; i < NUM_APPLETS; i++) {
-
-                       col += out1fmt("%c%s", ((col == 0) ? '\t' : ' '), applets[i].name);
-                       if (col > 60) {
-                               out1fmt("\n");
-                               col = 0;
-                       }
+       for (i = 0; i < NUM_APPLETS; i++) {
+               col += out1fmt("%c%s", ((col == 0) ? '\t' : ' '), applets[i].name);
+               if (col > 60) {
+                       out1fmt("\n");
+                       col = 0;
                }
        }
 #endif
index 45ca3df81e4864d76ec76f6d2706bb39599a19a3..d4f5345513ed79e54b218522360dd53138a553b8 100644 (file)
@@ -3243,8 +3243,8 @@ static int dohelp(struct op *t)
        int col;
        const struct builtincmd *x;
 
-       printf("\nBuilt-in commands:\n");
-       printf("-------------------\n");
+       puts("\nBuilt-in commands:\n"
+            "-------------------");
 
        for (col = 0, x = builtincmds; x->builtinfunc != NULL; x++) {
                if (!x->name)
@@ -3259,8 +3259,6 @@ static int dohelp(struct op *t)
        {
                int i;
                const struct BB_applet *applet;
-               extern const struct BB_applet applets[];
-               extern const size_t NUM_APPLETS;
 
                for (i = 0, applet = applets; i < NUM_APPLETS; applet++, i++) {
                        if (!applet->name)
@@ -3274,7 +3272,7 @@ static int dohelp(struct op *t)
                }
        }
 #endif
-       printf("\n\n");
+       puts("\n");
        return EXIT_SUCCESS;
 }