Remove bb_strlen() in favor of -fno-builtin-strlen. Saves as many bytes
as the old optimization did (actually does slightly better under gcc 4.0), and simplifies the code.
This commit is contained in:
parent
f8a8084267
commit
a389651115
@ -125,6 +125,7 @@ check_ld=$(shell \
|
||||
# Pin CHECKED_CFLAGS with := so it's only evaluated once.
|
||||
CHECKED_CFLAGS:=$(call check_gcc,-funsigned-char,)
|
||||
CHECKED_CFLAGS+=$(call check_gcc,-mmax-stack-frame=256,)
|
||||
CHECKED_CFLAGS+=$(call check_gcc,-fno-builtin-strlen)
|
||||
|
||||
# Preemptively pin this too.
|
||||
PROG_CFLAGS:=
|
||||
|
@ -1573,7 +1573,7 @@ static void unpack_package(deb_file_t *deb_file)
|
||||
init_archive_deb_control(archive_handle);
|
||||
|
||||
while(all_control_files[i]) {
|
||||
char *c = (char *) xmalloc(3 + bb_strlen(all_control_files[i]));
|
||||
char *c = (char *) xmalloc(3 + strlen(all_control_files[i]));
|
||||
sprintf(c, "./%s", all_control_files[i]);
|
||||
accept_list= llist_add_to(accept_list, c);
|
||||
i++;
|
||||
|
@ -29,7 +29,7 @@ int which_main(int argc, char **argv)
|
||||
|
||||
path_list = getenv("PATH");
|
||||
if (path_list != NULL) {
|
||||
size_t path_len = bb_strlen(path_list);
|
||||
size_t path_len = strlen(path_list);
|
||||
char *new_list = NULL;
|
||||
count = 1;
|
||||
|
||||
@ -88,7 +88,7 @@ int which_main(int argc, char **argv)
|
||||
break;
|
||||
}
|
||||
free(buf);
|
||||
path_n += (bb_strlen(path_n) + 1);
|
||||
path_n += (strlen(path_n) + 1);
|
||||
}
|
||||
}
|
||||
if (found) {
|
||||
|
@ -534,7 +534,7 @@ static void *hash_find(xhash *hash, const char *name)
|
||||
if (++hash->nel / hash->csize > 10)
|
||||
hash_rebuild(hash);
|
||||
|
||||
l = bb_strlen(name) + 1;
|
||||
l = strlen(name) + 1;
|
||||
hi = xcalloc(sizeof(hash_item) + l, 1);
|
||||
memcpy(hi->name, name, l);
|
||||
|
||||
@ -559,7 +559,7 @@ static void hash_remove(xhash *hash, const char *name)
|
||||
while (*phi) {
|
||||
hi = *phi;
|
||||
if (strcmp(hi->name, name) == 0) {
|
||||
hash->glen -= (bb_strlen(name) + 1);
|
||||
hash->glen -= (strlen(name) + 1);
|
||||
hash->nel--;
|
||||
*phi = hi->next;
|
||||
free(hi);
|
||||
@ -1364,7 +1364,7 @@ static node *mk_splitter(char *s, tsplitter *spl)
|
||||
regfree(re);
|
||||
regfree(ire);
|
||||
}
|
||||
if (bb_strlen(s) > 1) {
|
||||
if (strlen(s) > 1) {
|
||||
mk_re_node(s, n, re);
|
||||
} else {
|
||||
n->info = (uint32_t) *s;
|
||||
@ -1432,7 +1432,7 @@ static int awk_split(char *s, node *spl, char **slist)
|
||||
regmatch_t pmatch[2];
|
||||
|
||||
/* in worst case, each char would be a separate field */
|
||||
*slist = s1 = bb_xstrndup(s, bb_strlen(s) * 2 + 3);
|
||||
*slist = s1 = bb_xstrndup(s, strlen(s) * 2 + 3);
|
||||
|
||||
c[0] = c[1] = (char)spl->info;
|
||||
c[2] = c[3] = '\0';
|
||||
@ -1527,12 +1527,12 @@ static void handle_special(var *v)
|
||||
|
||||
/* recalculate $0 */
|
||||
sep = getvar_s(V[OFS]);
|
||||
sl = bb_strlen(sep);
|
||||
sl = strlen(sep);
|
||||
b = NULL;
|
||||
len = 0;
|
||||
for (i=0; i<n; i++) {
|
||||
s = getvar_s(&Fields[i]);
|
||||
l = bb_strlen(s);
|
||||
l = strlen(s);
|
||||
if (b) {
|
||||
memcpy(b+len, sep, sl);
|
||||
len += sl;
|
||||
@ -1769,7 +1769,7 @@ static char *awk_printf(node *n)
|
||||
|
||||
} else if (c == 's') {
|
||||
s1 = getvar_s(arg);
|
||||
qrealloc(&b, incr+i+bb_strlen(s1), &bsize);
|
||||
qrealloc(&b, incr+i+strlen(s1), &bsize);
|
||||
i += sprintf(b+i, s, s1);
|
||||
|
||||
} else {
|
||||
@ -1809,7 +1809,7 @@ static int awk_sub(node *rn, char *repl, int nm, var *src, var *dest, int ex)
|
||||
|
||||
i = di = 0;
|
||||
sp = getvar_s(src);
|
||||
rl = bb_strlen(repl);
|
||||
rl = strlen(repl);
|
||||
while (regexec(re, sp, 10, pmatch, sp==getvar_s(src) ? 0:REG_NOTBOL) == 0) {
|
||||
so = pmatch[0].rm_so;
|
||||
eo = pmatch[0].rm_eo;
|
||||
@ -1922,7 +1922,7 @@ static var *exec_builtin(node *op, var *res)
|
||||
break;
|
||||
|
||||
case B_ss:
|
||||
l = bb_strlen(as[0]);
|
||||
l = strlen(as[0]);
|
||||
i = getvar_i(av[1]) - 1;
|
||||
if (i>l) i=l; if (i<0) i=0;
|
||||
n = (nargs > 2) ? getvar_i(av[2]) : l-i;
|
||||
@ -1950,8 +1950,8 @@ lo_cont:
|
||||
|
||||
case B_ix:
|
||||
n = 0;
|
||||
ll = bb_strlen(as[1]);
|
||||
l = bb_strlen(as[0]) - ll;
|
||||
ll = strlen(as[1]);
|
||||
l = strlen(as[0]) - ll;
|
||||
if (ll > 0 && l >= 0) {
|
||||
if (! icase) {
|
||||
s = strstr(as[0], as[1]);
|
||||
@ -2353,7 +2353,7 @@ re_cont:
|
||||
case F_le:
|
||||
if (! op1)
|
||||
L.s = getvar_s(V[F0]);
|
||||
R.d = bb_strlen(L.s);
|
||||
R.d = strlen(L.s);
|
||||
break;
|
||||
|
||||
case F_sy:
|
||||
@ -2441,12 +2441,12 @@ re_cont:
|
||||
/* concatenation (" ") and index joining (",") */
|
||||
case XC( OC_CONCAT ):
|
||||
case XC( OC_COMMA ):
|
||||
opn = bb_strlen(L.s) + bb_strlen(R.s) + 2;
|
||||
opn = strlen(L.s) + strlen(R.s) + 2;
|
||||
X.s = (char *)xmalloc(opn);
|
||||
strcpy(X.s, L.s);
|
||||
if ((opinfo & OPCLSMASK) == OC_COMMA) {
|
||||
L.s = getvar_s(V[SUBSEP]);
|
||||
X.s = (char *)xrealloc(X.s, opn + bb_strlen(L.s));
|
||||
X.s = (char *)xrealloc(X.s, opn + strlen(L.s));
|
||||
strcat(X.s, L.s);
|
||||
}
|
||||
strcat(X.s, R.s);
|
||||
|
@ -67,11 +67,6 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define strlen(x) bb_strlen(x)
|
||||
extern size_t bb_strlen(const char *string);
|
||||
#endif
|
||||
|
||||
/* ---- Endian Detection ------------------------------------ */
|
||||
#ifndef __APPLE__
|
||||
# include <byteswap.h>
|
||||
|
@ -69,7 +69,7 @@ $(LIBBB_MOBJ0):$(LIBBB_MSRC0)
|
||||
LIBBB_MSRC1:=$(srcdir)/xfuncs.c
|
||||
LIBBB_MOBJ1:=xmalloc.o xrealloc.o xcalloc.o xstrdup.o xstrndup.o \
|
||||
xfopen.o xopen.o xopen3.o xread.o xread_all.o xread_char.o \
|
||||
xferror.o xferror_stdout.o xfflush_stdout.o strlen.o
|
||||
xferror.o xferror_stdout.o xfflush_stdout.o
|
||||
LIBBB_MOBJ1:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ1))
|
||||
$(LIBBB_MOBJ1):$(LIBBB_MSRC1)
|
||||
$(compile.c) -DL_$(notdir $*)
|
||||
@ -101,7 +101,7 @@ $(LIBBB_MOBJ5):$(LIBBB_MSRC5)
|
||||
$(compile.c) -DL_$(notdir $*)
|
||||
|
||||
LIBBB_MSRC6:=$(srcdir)/llist.c
|
||||
LIBBB_MOBJ6:=llist_add_to.o llist_add_to_end.o llist_free_one.o llist_free.o
|
||||
LIBBB_MOBJ6:=llist_add_to.o llist_add_to_end.o llist_pop.o llist_free.o
|
||||
LIBBB_MOBJ6:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ6))
|
||||
$(LIBBB_MOBJ6):$(LIBBB_MSRC6)
|
||||
$(compile.c) -DL_$(notdir $*)
|
||||
|
@ -72,6 +72,6 @@ int correct_password ( const struct passwd *pw )
|
||||
return 0;
|
||||
}
|
||||
encrypted = crypt ( unencrypted, correct );
|
||||
memset ( unencrypted, 0, bb_strlen ( unencrypted ));
|
||||
memset ( unencrypted, 0, strlen ( unencrypted ));
|
||||
return ( strcmp ( encrypted, correct ) == 0 ) ? 1 : 0;
|
||||
}
|
||||
|
@ -174,15 +174,6 @@ void bb_xfflush_stdout(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
// GCC forces inlining of strlen everywhere, which is generally a byte
|
||||
// larger than calling a function, and it's called a lot so it adds up.
|
||||
#ifdef L_strlen
|
||||
size_t bb_strlen(const char *string)
|
||||
{
|
||||
return(__builtin_strlen(string));
|
||||
}
|
||||
#endif
|
||||
|
||||
/* END CODE */
|
||||
/*
|
||||
Local Variables:
|
||||
|
@ -338,7 +338,7 @@ static int check_tty ( const char *tty )
|
||||
|
||||
if (( fp = fopen ( bb_path_securetty_file, "r" ))) {
|
||||
while ( fgets ( buf, sizeof( buf ) - 1, fp )) {
|
||||
for ( i = bb_strlen( buf ) - 1; i >= 0; --i ) {
|
||||
for ( i = strlen( buf ) - 1; i >= 0; --i ) {
|
||||
if ( !isspace ( buf[i] ))
|
||||
break;
|
||||
}
|
||||
|
@ -283,7 +283,7 @@ static void include_conf ( struct dep_t **first, struct dep_t **current, char *b
|
||||
if ( p )
|
||||
*p = 0;
|
||||
|
||||
l = bb_strlen ( buffer );
|
||||
l = strlen ( buffer );
|
||||
|
||||
while ( l && isspace ( buffer [l-1] )) {
|
||||
buffer [l-1] = 0;
|
||||
@ -399,7 +399,7 @@ static struct dep_t *build_dep ( void )
|
||||
free(filename);
|
||||
|
||||
while ( reads ( fd, buffer, sizeof( buffer ))) {
|
||||
int l = bb_strlen ( buffer );
|
||||
int l = strlen ( buffer );
|
||||
char *p = 0;
|
||||
|
||||
while ( l > 0 && isspace ( buffer [l-1] )) {
|
||||
|
@ -293,7 +293,7 @@ int arping_main(int argc, char **argv)
|
||||
if (opt & 128) /* timeout */
|
||||
timeout = atoi(_timeout);
|
||||
if (opt & 256) { /* interface */
|
||||
if (bb_strlen(_device) > IF_NAMESIZE) {
|
||||
if (strlen(_device) > IF_NAMESIZE) {
|
||||
bb_error_msg_and_die("Interface name `%s' must be less than %d",
|
||||
_device, IF_NAMESIZE);
|
||||
}
|
||||
|
@ -256,7 +256,7 @@ static char *parse(char *command, struct interface_defn_t *ifd)
|
||||
varvalue = get_var(command, nextpercent - command, ifd);
|
||||
|
||||
if (varvalue) {
|
||||
addstr(&result, &len, &pos, varvalue, bb_strlen(varvalue));
|
||||
addstr(&result, &len, &pos, varvalue, strlen(varvalue));
|
||||
} else {
|
||||
#ifdef CONFIG_FEATURE_IFUPDOWN_IP
|
||||
/* Sigh... Add a special case for 'ip' to convert from
|
||||
@ -267,7 +267,7 @@ static char *parse(char *command, struct interface_defn_t *ifd)
|
||||
if (varvalue && (res=count_netmask_bits(varvalue)) > 0) {
|
||||
char argument[255];
|
||||
sprintf(argument, "%d", res);
|
||||
addstr(&result, &len, &pos, argument, bb_strlen(argument));
|
||||
addstr(&result, &len, &pos, argument, strlen(argument));
|
||||
command = nextpercent + 1;
|
||||
break;
|
||||
}
|
||||
@ -763,7 +763,7 @@ static struct interfaces_file_t *read_interfaces(const char *filename)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (bb_strlen(buf_ptr) == 0) {
|
||||
if (strlen(buf_ptr) == 0) {
|
||||
bb_error_msg("option with empty value \"%s\"", buf);
|
||||
return NULL;
|
||||
}
|
||||
@ -845,7 +845,7 @@ static char *setlocalenv(char *format, const char *name, const char *value)
|
||||
char *here;
|
||||
char *there;
|
||||
|
||||
result = xmalloc(bb_strlen(format) + bb_strlen(name) + bb_strlen(value) + 1);
|
||||
result = xmalloc(strlen(format) + strlen(name) + strlen(value) + 1);
|
||||
|
||||
sprintf(result, format, name, value);
|
||||
|
||||
@ -860,7 +860,7 @@ static char *setlocalenv(char *format, const char *name, const char *value)
|
||||
here++;
|
||||
}
|
||||
}
|
||||
memmove(here, there, bb_strlen(there) + 1);
|
||||
memmove(here, there, strlen(there) + 1);
|
||||
|
||||
return result;
|
||||
}
|
||||
@ -1061,7 +1061,7 @@ static char *run_mapping(char *physical, struct mapping_defn_t * map)
|
||||
/* If we are able to read a line of output from the script,
|
||||
* remove any trailing whitespace and use this value
|
||||
* as the name of the logical interface. */
|
||||
char *pch = new_logical + bb_strlen(new_logical) - 1;
|
||||
char *pch = new_logical + strlen(new_logical) - 1;
|
||||
|
||||
while (pch >= new_logical && isspace(*pch))
|
||||
*(pch--) = '\0';
|
||||
@ -1083,7 +1083,7 @@ static char *run_mapping(char *physical, struct mapping_defn_t * map)
|
||||
|
||||
static llist_t *find_iface_state(llist_t *state_list, const char *iface)
|
||||
{
|
||||
unsigned short iface_len = bb_strlen(iface);
|
||||
unsigned short iface_len = strlen(iface);
|
||||
llist_t *search = state_list;
|
||||
|
||||
while (search) {
|
||||
@ -1308,7 +1308,7 @@ int ifupdown_main(int argc, char **argv)
|
||||
llist_t *iface_state = find_iface_state(state_list, iface);
|
||||
|
||||
if (cmds == iface_up) {
|
||||
char *newiface = xmalloc(bb_strlen(iface) + 1 + bb_strlen(liface) + 1);
|
||||
char *newiface = xmalloc(strlen(iface) + 1 + strlen(liface) + 1);
|
||||
sprintf(newiface, "%s=%s", iface, liface);
|
||||
if (iface_state == NULL) {
|
||||
state_list = llist_add_to_end(state_list, newiface);
|
||||
|
@ -146,7 +146,7 @@ int sysctl_preload_file(const char *filename, int output)
|
||||
if (*ptr == '#' || *ptr == ';')
|
||||
continue;
|
||||
|
||||
if (bb_strlen(ptr) < 2)
|
||||
if (strlen(ptr) < 2)
|
||||
continue;
|
||||
|
||||
name = strtok(ptr, "=");
|
||||
@ -323,7 +323,7 @@ int sysctl_display_all(const char *path, int output, int show_table)
|
||||
sysctl_display_all(tmpdir, output, show_table);
|
||||
} else
|
||||
retval |=
|
||||
sysctl_read_setting(tmpdir + bb_strlen(PROC_PATH),
|
||||
sysctl_read_setting(tmpdir + strlen(PROC_PATH),
|
||||
output);
|
||||
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ static int show_clock(int utc)
|
||||
|
||||
safe_strncpy ( buffer, ctime ( &t ), 64);
|
||||
if ( buffer [0] )
|
||||
buffer [bb_strlen ( buffer ) - 1] = 0;
|
||||
buffer [strlen ( buffer ) - 1] = 0;
|
||||
|
||||
//printf ( "%s %.6f seconds %s\n", buffer, 0.0, utc ? "" : ( ptm-> tm_isdst ? tzname [1] : tzname [0] ));
|
||||
printf ( "%s %.6f seconds\n", buffer, 0.0 );
|
||||
@ -157,7 +157,7 @@ static int check_utc(void)
|
||||
RESERVE_CONFIG_BUFFER(buffer, 128);
|
||||
|
||||
while ( fgets ( buffer, sizeof( buffer ), f )) {
|
||||
int len = bb_strlen ( buffer );
|
||||
int len = strlen ( buffer );
|
||||
|
||||
while ( len && isspace ( buffer [len - 1] ))
|
||||
len--;
|
||||
|
Loading…
Reference in New Issue
Block a user