better shared strings trick
text data bss dec hex filename 861980 441 7540 869961 d4649 busybox_old 861914 441 7540 869895 d4607 busybox_unstripped Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
This commit is contained in:
parent
9dc04124d5
commit
0004e99493
@ -1573,12 +1573,22 @@ void bb_progress_update(bb_progress_t *p, const char *curfile,
|
||||
off_t totalsize) FAST_FUNC;
|
||||
|
||||
extern const char *applet_name;
|
||||
|
||||
/* Some older linkers don't perform string merging, we used to have common strings
|
||||
* as global arrays to do it by hand. But:
|
||||
* (1) newer linkers do it themselves,
|
||||
* (2) however, they DONT merge string constants with global arrays,
|
||||
* even if the value is the same (!). Thus global arrays actually
|
||||
* increased size a bit: for example, "/etc/passwd" string from libc
|
||||
* wasn't merged with bb_path_passwd_file[] array!
|
||||
* Therefore now we use #defines.
|
||||
*/
|
||||
/* "BusyBox vN.N.N (timestamp or extra_version)" */
|
||||
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[];
|
||||
extern const char bb_msg_write_error[];
|
||||
#define bb_msg_read_error "read error"
|
||||
#define bb_msg_write_error "write error"
|
||||
extern const char bb_msg_unknown[];
|
||||
extern const char bb_msg_can_not_create_raw_socket[];
|
||||
extern const char bb_msg_perm_denied_are_you_root[];
|
||||
@ -1588,18 +1598,23 @@ extern const char bb_msg_invalid_arg[];
|
||||
extern const char bb_msg_standard_input[];
|
||||
extern const char bb_msg_standard_output[];
|
||||
|
||||
extern const char bb_str_default[];
|
||||
/* NB: (bb_hexdigits_upcase[i] | 0x20) -> lowercase hex digit */
|
||||
extern const char bb_hexdigits_upcase[];
|
||||
|
||||
extern const char bb_path_mtab_file[];
|
||||
extern const char bb_path_passwd_file[];
|
||||
extern const char bb_path_shadow_file[];
|
||||
extern const char bb_path_gshadow_file[];
|
||||
extern const char bb_path_group_file[];
|
||||
extern const char bb_path_motd_file[];
|
||||
extern const char bb_path_wtmp_file[];
|
||||
extern const char bb_dev_null[];
|
||||
|
||||
/* Busybox mount uses either /proc/mounts or /etc/mtab to
|
||||
* get the list of currently mounted filesystems */
|
||||
#define bb_path_mtab_file IF_FEATURE_MTAB_SUPPORT("/etc/mtab")IF_NOT_FEATURE_MTAB_SUPPORT("/proc/mounts")
|
||||
|
||||
#define bb_path_passwd_file "/etc/passwd"
|
||||
#define bb_path_shadow_file "/etc/shadow"
|
||||
#define bb_path_gshadow_file "/etc/gshadow"
|
||||
#define bb_path_group_file "/etc/group"
|
||||
|
||||
#define bb_path_motd_file "/etc/motd"
|
||||
|
||||
#define bb_dev_null "/dev/null"
|
||||
extern const char bb_busybox_exec_path[];
|
||||
/* util-linux manpage says /sbin:/bin:/usr/sbin:/usr/bin,
|
||||
* but I want to save a few bytes here */
|
||||
|
@ -64,7 +64,6 @@ lib-y += md5.o
|
||||
#lib-y += md5prime.o
|
||||
lib-y += messages.o
|
||||
lib-y += mode_string.o
|
||||
lib-y += mtab_file.o
|
||||
lib-y += obscure.o
|
||||
lib-y += parse_mode.o
|
||||
lib-y += parse_config.o
|
||||
|
@ -23,7 +23,7 @@ int FAST_FUNC INET_resolve(const char *name, struct sockaddr_in *s_in, int hostf
|
||||
s_in->sin_port = 0;
|
||||
|
||||
/* Default is special, meaning 0.0.0.0. */
|
||||
if (!strcmp(name, bb_str_default)) {
|
||||
if (strcmp(name, "default") == 0) {
|
||||
s_in->sin_addr.s_addr = INADDR_ANY;
|
||||
return 1;
|
||||
}
|
||||
@ -109,7 +109,7 @@ char* FAST_FUNC INET_rresolve(struct sockaddr_in *s_in, int numeric, uint32_t ne
|
||||
if (ad == INADDR_ANY) {
|
||||
if ((numeric & 0x0FFF) == 0) {
|
||||
if (numeric & 0x8000)
|
||||
return xstrdup(bb_str_default);
|
||||
return xstrdup("default");
|
||||
return xstrdup("*");
|
||||
}
|
||||
}
|
||||
@ -205,7 +205,7 @@ char* FAST_FUNC INET6_rresolve(struct sockaddr_in6 *sin6, int numeric)
|
||||
}
|
||||
if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) {
|
||||
if (numeric & 0x8000)
|
||||
return xstrdup(bb_str_default);
|
||||
return xstrdup("default");
|
||||
return xstrdup("*");
|
||||
}
|
||||
|
||||
|
@ -24,8 +24,6 @@ const char bb_banner[] ALIGN1 = BANNER;
|
||||
|
||||
const char bb_msg_memory_exhausted[] ALIGN1 = "memory exhausted";
|
||||
const char bb_msg_invalid_date[] ALIGN1 = "invalid date '%s'";
|
||||
const char bb_msg_write_error[] ALIGN1 = "write error";
|
||||
const char bb_msg_read_error[] ALIGN1 = "read error";
|
||||
const char bb_msg_unknown[] ALIGN1 = "(unknown)";
|
||||
const char bb_msg_can_not_create_raw_socket[] ALIGN1 = "can't create raw socket";
|
||||
const char bb_msg_perm_denied_are_you_root[] ALIGN1 = "permission denied (are you root?)";
|
||||
@ -35,15 +33,8 @@ const char bb_msg_invalid_arg[] ALIGN1 = "invalid argument '%s' to '%s'";
|
||||
const char bb_msg_standard_input[] ALIGN1 = "standard input";
|
||||
const char bb_msg_standard_output[] ALIGN1 = "standard output";
|
||||
|
||||
const char bb_str_default[] ALIGN1 = "default";
|
||||
const char bb_hexdigits_upcase[] ALIGN1 = "0123456789ABCDEF";
|
||||
|
||||
const char bb_path_passwd_file[] ALIGN1 = "/etc/passwd";
|
||||
const char bb_path_shadow_file[] ALIGN1 = "/etc/shadow";
|
||||
const char bb_path_group_file[] ALIGN1 = "/etc/group";
|
||||
const char bb_path_gshadow_file[] ALIGN1 = "/etc/gshadow";
|
||||
const char bb_path_motd_file[] ALIGN1 = "/etc/motd";
|
||||
const char bb_dev_null[] ALIGN1 = "/dev/null";
|
||||
const char bb_busybox_exec_path[] ALIGN1 = CONFIG_BUSYBOX_EXEC_PATH;
|
||||
const char bb_default_login_shell[] ALIGN1 = LIBBB_DEFAULT_LOGIN_SHELL;
|
||||
/* util-linux manpage says /sbin:/bin:/usr/sbin:/usr/bin,
|
||||
|
@ -1,15 +0,0 @@
|
||||
/* vi: set sw=4 ts=4: */
|
||||
/*
|
||||
* Utility routines.
|
||||
*
|
||||
* Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
|
||||
*
|
||||
* Licensed under GPLv2 or later, see file LICENSE in this source tree.
|
||||
*/
|
||||
|
||||
#include "libbb.h"
|
||||
|
||||
/* Busybox mount uses either /proc/mounts or /etc/mtab to
|
||||
* get the list of currently mounted filesystems */
|
||||
const char bb_path_mtab_file[] ALIGN1 =
|
||||
IF_FEATURE_MTAB_SUPPORT("/etc/mtab")IF_NOT_FEATURE_MTAB_SUPPORT("/proc/mounts");
|
@ -370,7 +370,7 @@ int ifconfig_main(int argc UNUSED_PARAM, char **argv)
|
||||
#endif
|
||||
sai.sin_family = AF_INET;
|
||||
sai.sin_port = 0;
|
||||
if (!strcmp(host, bb_str_default)) {
|
||||
if (strcmp(host, "default") == 0) {
|
||||
/* Default is special, meaning 0.0.0.0. */
|
||||
sai.sin_addr.s_addr = INADDR_ANY;
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ int get_addr_1(inet_prefix *addr, char *name, int family)
|
||||
{
|
||||
memset(addr, 0, sizeof(*addr));
|
||||
|
||||
if (strcmp(name, bb_str_default) == 0
|
||||
if (strcmp(name, "default") == 0
|
||||
|| strcmp(name, "all") == 0
|
||||
|| strcmp(name, "any") == 0
|
||||
) {
|
||||
@ -103,7 +103,7 @@ static int get_prefix_1(inet_prefix *dst, char *arg, int family)
|
||||
|
||||
memset(dst, 0, sizeof(*dst));
|
||||
|
||||
if (strcmp(arg, bb_str_default) == 0
|
||||
if (strcmp(arg, "default") == 0
|
||||
|| strcmp(arg, "all") == 0
|
||||
|| strcmp(arg, "any") == 0
|
||||
) {
|
||||
|
@ -185,7 +185,7 @@ static NOINLINE void INET_setroute(int action, char **args)
|
||||
#endif
|
||||
} else {
|
||||
/* Default netmask. */
|
||||
netmask = bb_str_default;
|
||||
netmask = "default";
|
||||
}
|
||||
/* Prefer hostname lookup is -host flag (xflag==1) was given. */
|
||||
isnet = INET_resolve(target, (struct sockaddr_in *) &rt.rt_dst,
|
||||
@ -346,7 +346,7 @@ static NOINLINE void INET6_setroute(int action, char **args)
|
||||
/* We know args isn't NULL from the check in route_main. */
|
||||
const char *target = *args++;
|
||||
|
||||
if (strcmp(target, bb_str_default) == 0) {
|
||||
if (strcmp(target, "default") == 0) {
|
||||
prefix_len = 0;
|
||||
memset(&sa6, 0, sizeof(sa6));
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user