*: BB_BANNER -> bb_banner (it is not a const or #define)!
authorDenis Vlasenko <vda.linux@googlemail.com>
Wed, 13 Jun 2007 12:27:17 +0000 (12:27 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Wed, 13 Jun 2007 12:27:17 +0000 (12:27 -0000)
correct_password: explain in detail why it is ok to use bb_banner
fsck_minix: make it print bb version, not it's own (outdated/irrelevant) one

Marginal size difference:
   text    data     bss     dec     hex filename
 679119    2700   15632  697451   aa46b busybox_old
 679091    2700   15632  697423   aa44f busybox_unstripped

12 files changed:
applets/applets.c
include/libbb.h
init/init.c
libbb/correct_password.c
libbb/messages.c
shell/ash.c
shell/hush.c
shell/lash.c
shell/msh.c
sysklogd/klogd.c
util-linux/fsck_minix.c
util-linux/mkfs_minix.c

index f3412425206dc404a0943568ad2f140fbb8300a7..cff792fb718206bae4d0bae50dc791c175147b89 100644 (file)
@@ -467,11 +467,11 @@ void bb_show_usage(void)
                        i--;
                }
 
-               format_string = "%s\n\nUsage: %s %s\n\n";
+               fprintf(stderr, "%s multi-call binary\n", bb_banner);
+               format_string = "\nUsage: %s %s\n\n";
                if (*p == '\b')
-                       format_string = "%s\n\nNo help available.\n\n";
-               fprintf(stderr, format_string, bb_msg_full_version,
-                                       applet_name, p);
+                       format_string = "\nNo help available.\n\n";
+               fprintf(stderr, format_string, applet_name, p);
                dealloc_usage_messages((char*)usage_string);
        }
        xfunc_die();
@@ -550,8 +550,8 @@ static int busybox_main(char **argv)
                /* leading tab and room to wrap */
                output_width -= sizeof("start-stop-daemon, ") + 8;
 
-               printf("%s\n"
-                      "Copyright (C) 1998-2006  Erik Andersen, Rob Landley, and others.\n"
+               printf("%s multi-call binary\n", bb_banner); /* reuse const string... */
+               printf("Copyright (C) 1998-2006  Erik Andersen, Rob Landley, and others.\n"
                       "Licensed under GPLv2.  See source distribution for full notice.\n"
                       "\n"
                       "Usage: busybox [function] [arguments]...\n"
@@ -561,7 +561,7 @@ static int busybox_main(char **argv)
                       "\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"
-                      "\nCurrently defined functions:\n", bb_msg_full_version);
+                      "\nCurrently defined functions:\n");
                col = 0;
                a = applets;
                while (a->name) {
index 5aa95ea88d15f57380a98877611ccfdae24c3338..c0c417c953352de59a8484e8133e46de58792fd3 100644 (file)
@@ -927,9 +927,8 @@ enum {      /* DO NOT CHANGE THESE VALUES!  cp.c, mv.c, install.c depend on them. */
 #define FILEUTILS_CP_OPTSTR "pdRfils" USE_SELINUX("c")
 extern const struct bb_applet *current_applet;
 extern const char *applet_name;
-extern const char BB_BANNER[];
-
-extern const char bb_msg_full_version[];
+/* "BusyBox vN.N.N (timestamp or extra_vestion)" */
+extern const char bb_banner[];
 extern const char bb_msg_memory_exhausted[];
 extern const char bb_msg_invalid_date[];
 extern const char bb_msg_read_error[];
index 6fcdc03c16a77aa0bee441fa79b12f0744ecf3ed..da79d101d78247bfff3997fdf2ab2f15c0556dd9 100644 (file)
@@ -934,7 +934,7 @@ int init_main(int argc, char **argv)
        if (argc > 1) setenv("RUNLEVEL", argv[1], 1);
 
        /* Hello world */
-       message(MAYBE_CONSOLE | L_LOG, "init started: %s", bb_msg_full_version);
+       message(MAYBE_CONSOLE | L_LOG, "init started: %s", bb_banner);
 
        /* Make sure there is enough memory to do something useful. */
        if (ENABLE_SWAPONOFF) {
index 6255f7e65019161026057468039263180e9cd0a2..d0f68c0cd3bdaf5777973c389006f34046eb785e 100644 (file)
@@ -47,9 +47,14 @@ int correct_password(const struct passwd *pw)
        char buffer[256];
 #endif
 
-       correct = bb_msg_full_version; /* fake salt. crypt() can choke otherwise */
-       if (!pw)
-               goto fake_it; /* The content of 'correct' will never match */
+       /* fake salt. crypt() can choke otherwise.
+        * (bb_banner's first two chars are letters and thus are valid salt) */
+       correct = bb_banner;
+       if (!pw) {
+               /* bb_banner will never match, it contains () which is never
+                * generated in valid encrypted passwords. */
+               goto fake_it;
+       }
        correct = pw->pw_passwd;
 #if ENABLE_FEATURE_SHADOWPASSWDS
        if (LONE_CHAR(pw->pw_passwd, 'x') || LONE_CHAR(pw->pw_passwd, '*')) {
index 56cccaf2cbce2f60028d953a8e8704f2038991fd..8cab2dcc8c7359694b370e9a0bf7bc92fcce84c2 100644 (file)
@@ -12,8 +12,7 @@
 #else
 #define BANNER "BusyBox v" BB_VER " (" BB_EXTRA_VERSION ")"
 #endif
-const char BB_BANNER[] = BANNER;
-const char bb_msg_full_version[] = BANNER " multi-call binary";
+const char bb_banner[] = BANNER;
 
 const char bb_msg_memory_exhausted[] = "memory exhausted";
 const char bb_msg_invalid_date[] = "invalid date '%s'";
index 173beb195715c2d4ac4aad880b91c31492a3121c..35eec42a7efb4d526e99dce60123ce8e9122394f 100644 (file)
@@ -7737,16 +7737,16 @@ setinteractive(int on)
 #if !ENABLE_FEATURE_SH_EXTRA_QUIET
        if (is_interactive > 1) {
                /* Looks like they want an interactive shell */
-               static smallint do_banner;
+               static smallint did_banner;
 
-               if (!do_banner) {
+               if (!did_banner) {
                        out1fmt(
                                "\n\n"
-                               "%s Built-in shell (ash)\n"
+                               "%s built-in shell (ash)\n"
                                "Enter 'help' for a list of built-in commands."
                                "\n\n",
-                               BB_BANNER);
-                       do_banner = 1;
+                               bb_banner);
+                       did_banner = 1;
                }
        }
 #endif
index e6fa3d9a5217d1a5542691a0a2d6cbff8d5294fb..a446bbeb28cdb5ec005781e42555b0caf05d4135 100644 (file)
@@ -3787,7 +3787,7 @@ int hush_main(int argc, char **argv)
                        hush_exit(xfunc_error_retval);
                }
 #if !ENABLE_FEATURE_SH_EXTRA_QUIET
-               printf("\n\n%s hush - the humble shell v"HUSH_VER_STR"\n", BB_BANNER);
+               printf("\n\n%s hush - the humble shell v"HUSH_VER_STR"\n", bb_banner);
                printf("Enter 'help' for a list of built-in commands.\n\n");
 #endif
        }
index 21c95fb1b61c7454a9a823bbbdc02ae23c376627..4e8b23776c5c7844a54c358f0ea775bbef47e07f 100644 (file)
@@ -1548,9 +1548,9 @@ int lash_main(int argc_l, char **argv_l)
        if (opt & LASH_OPT_i) {
                /* Looks like they want an interactive shell */
                if (!ENABLE_FEATURE_SH_EXTRA_QUIET) {
-                       printf("\n\n%s Built-in shell (lash)\n"
+                       printf("\n\n%s built-in shell (lash)\n"
                                        "Enter 'help' for a list of built-in commands.\n\n",
-                                       BB_BANNER);
+                                       bb_banner);
                }
        } else if (!local_pending_command && argv[optind]) {
                //printf( "optind=%d  argv[optind]='%s'\n", optind, argv[optind]);
index dc2fa9c162162a1760462de07bf903ebc0f55d40..2328e0734c1cc5b72b2d7d823c8da14a5fce2d2d 100644 (file)
@@ -36,7 +36,7 @@
 # define bb_dev_null "/dev/null"
 # define DEFAULT_SHELL "/proc/self/exe"
 # define CONFIG_BUSYBOX_EXEC_PATH "/proc/self/exe"
-# define BB_BANNER "busybox standalone"
+# define bb_banner "busybox standalone"
 # define ENABLE_FEATURE_SH_STANDALONE 0
 # define bb_msg_memory_exhausted "memory exhausted"
 # define xmalloc(size) malloc(size)
@@ -5315,9 +5315,9 @@ int msh_main(int argc, char **argv)
                        interactive++;
 #if !ENABLE_FEATURE_SH_EXTRA_QUIET
 #ifdef MSHDEBUG
-                       printf("\n\n%s Built-in shell (msh with debug)\n", BB_BANNER);
+                       printf("\n\n%s built-in shell (msh with debug)\n", bb_banner);
 #else
-                       printf("\n\n%s Built-in shell (msh)\n", BB_BANNER);
+                       printf("\n\n%s built-in shell (msh)\n", bb_banner);
 #endif
                        printf("Enter 'help' for a list of built-in commands.\n\n");
 #endif
index 5beec14dbeac05fd42cff1b72f3e3249f24a2765..fcc574686239a1aa4c9a8e246a89ccd6c0872279 100644 (file)
@@ -68,7 +68,7 @@ int klogd_main(int argc, char **argv)
        if (option_mask32 & OPT_LEVEL)
                klogctl(8, NULL, i);
 
-       syslog(LOG_NOTICE, "klogd started: %s", BB_BANNER);
+       syslog(LOG_NOTICE, "klogd started: %s", bb_banner);
 
        /* Note: this code does not detect incomplete messages
         * (messages not ending with '\n' or just when kernel
index 955d66f230c0f9ea70909fd800e899f05f9e6c13..74cccf671efcf38a4d075735f6ac3b807976eade 100644 (file)
@@ -114,7 +114,6 @@ static smallint version2;
 enum { version2 = 0 };
 #endif
 
-#define PROGRAM_VERSION "1.2 - 11/11/96"
 static smallint repair, automatic, verbose, list, show, warn_mode, force;
 static smallint changed;  /* is filesystem modified? */
 static smallint errors_uncorrected;  /* flag if some error was not corrected */
@@ -1315,7 +1314,7 @@ int fsck_minix_main(int argc, char **argv)
         * flags and whether or not the -f switch was specified on the
         * command line.
         */
-       printf("%s, "PROGRAM_VERSION"\n", applet_name);
+       printf("%s: %s\n", applet_name, bb_banner);
 
        if (!(Super.s_state & MINIX_ERROR_FS)
         && (Super.s_state & MINIX_VALID_FS) && !force
index ffdb2141ec1ec96ef30e8a80eb0f0c75406c6284..92d6404075fff50c004a1a4c95369622150b1870 100644 (file)
@@ -94,7 +94,7 @@ struct globals {
        int dev_fd;
 
 #if ENABLE_FEATURE_MINIX2
-       int version2;
+       smallint version2;
 #define version2 G.version2
 #endif
        char *device_name;