avoid using strok - eliminates use of hidden global variable

function                                             old     new   delta
udhcp_str2optset                                     616     650     +34
setpriv_main                                         950     975     +25
switch_root_main                                     688     706     +18
parse                                                958     970     +12
getopt_main                                          622     628      +6
parse_resolvconf                                     302     306      +4
mpstat_main                                         1139    1142      +3
static.p                                               4       -      -4
cdcmd                                                717     702     -15
strtok                                               148       -    -148
------------------------------------------------------------------------------
(add/remove: 0/3 grow/shrink: 7/1 up/down: 102/-167)          Total: -65 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2020-10-06 02:36:47 +02:00
parent 535a509846
commit 2496616b0a
11 changed files with 46 additions and 36 deletions

View File

@@ -703,12 +703,13 @@ static void parse_resolvconf(void)
while (fgets(line, sizeof(line), resolv)) {
char *p, *arg;
char *tokstate;
p = strtok(line, " \t\n");
p = strtok_r(line, " \t\n", &tokstate);
if (!p)
continue;
dbg("resolv_key:'%s'\n", p);
arg = strtok(NULL, "\n");
arg = strtok_r(NULL, "\n", &tokstate);
dbg("resolv_arg:'%s'\n", arg);
if (!arg)
continue;

View File

@@ -526,7 +526,7 @@ int FAST_FUNC udhcp_str2optset(const char *const_str, void *arg,
/* Cheat, the only *const* str possible is "" */
str = (char *) const_str;
opt = strtok(str, " \t=:");
opt = strtok_r(str, " \t=:", &str);
if (!opt)
return 0;
@@ -550,10 +550,10 @@ int FAST_FUNC udhcp_str2optset(const char *const_str, void *arg,
char *val;
if (optflag->flags == OPTION_BIN) {
val = strtok(NULL, ""); /* do not split "'q w e'" */
val = strtok_r(NULL, "", &str); /* do not split "'q w e'" */
if (val) trim(val);
} else
val = strtok(NULL, ", \t");
val = strtok_r(NULL, ", \t", &str);
if (!val)
break;
@@ -567,7 +567,7 @@ int FAST_FUNC udhcp_str2optset(const char *const_str, void *arg,
break;
case OPTION_IP_PAIR:
retval = udhcp_str2nip(val, buffer);
val = strtok(NULL, ", \t/-");
val = strtok_r(NULL, ", \t/-", &str);
if (!val)
retval = 0;
if (retval)
@@ -631,7 +631,7 @@ int FAST_FUNC udhcp_str2optset(const char *const_str, void *arg,
*slash = '\0';
retval = udhcp_str2nip(val, buffer + 1);
buffer[0] = mask = bb_strtou(slash + 1, NULL, 10);
val = strtok(NULL, ", \t/-");
val = strtok_r(NULL, ", \t/-", &str);
if (!val || mask > 32 || errno)
retval = 0;
if (retval) {