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>
diff --git a/networking/nslookup.c b/networking/nslookup.c
index c43e605..759de5c 100644
--- a/networking/nslookup.c
+++ b/networking/nslookup.c
@@ -703,12 +703,13 @@
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;
diff --git a/networking/udhcp/common.c b/networking/udhcp/common.c
index 20d843b..4bc7190 100644
--- a/networking/udhcp/common.c
+++ b/networking/udhcp/common.c
@@ -526,7 +526,7 @@
/* 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 @@
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 @@
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 @@
*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) {