diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2020-10-06 02:36:47 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2020-10-06 02:36:47 +0200 |
commit | 2496616b0a8d1c80cd1416b73a4847b59b9f969a (patch) | |
tree | dc52a8f9bbbf33d507ecf0b808614b7923786567 /util-linux | |
parent | 535a509846be5087ddd0d6e8fc6399f919942639 (diff) | |
download | busybox-2496616b0a8d1c80cd1416b73a4847b59b9f969a.tar.gz |
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>
Diffstat (limited to 'util-linux')
-rw-r--r-- | util-linux/getopt.c | 5 | ||||
-rw-r--r-- | util-linux/mount.c | 3 | ||||
-rw-r--r-- | util-linux/setpriv.c | 9 | ||||
-rw-r--r-- | util-linux/switch_root.c | 4 |
4 files changed, 12 insertions, 9 deletions
diff --git a/util-linux/getopt.c b/util-linux/getopt.c index db7db6ff8..1fa402429 100644 --- a/util-linux/getopt.c +++ b/util-linux/getopt.c @@ -289,12 +289,13 @@ static struct option *add_long_options(struct option *long_options, char *option { int long_nr = 0; int arg_opt, tlen; - char *tokptr = strtok(options, ", \t\n"); + char *tokptr; if (long_options) while (long_options[long_nr].name) long_nr++; + tokptr = strtok_r(options, ", \t\n", &options); while (tokptr) { arg_opt = no_argument; tlen = strlen(tokptr); @@ -318,7 +319,7 @@ static struct option *add_long_options(struct option *long_options, char *option long_nr++; /*memset(&long_options[long_nr], 0, sizeof(long_options[0])); - xrealloc_vector did it */ } - tokptr = strtok(NULL, ", \t\n"); + tokptr = strtok_r(NULL, ", \t\n", &options); } return long_options; } diff --git a/util-linux/mount.c b/util-linux/mount.c index 19ac13930..fc5161d7f 100644 --- a/util-linux/mount.c +++ b/util-linux/mount.c @@ -1230,6 +1230,7 @@ static NOINLINE int nfsmount(struct mntent *mp, unsigned long vfsflags, char *fi * then data pointer is interpreted as a string. */ struct nfs_mount_data data; char *opt; + char *tokstate; struct hostent *hp; struct sockaddr_in server_addr; struct sockaddr_in mount_server_addr; @@ -1348,7 +1349,7 @@ static NOINLINE int nfsmount(struct mntent *mp, unsigned long vfsflags, char *fi nfsvers = 0; /* parse options */ - if (filteropts) for (opt = strtok(filteropts, ","); opt; opt = strtok(NULL, ",")) { + if (filteropts) for (opt = strtok_r(filteropts, ",", &tokstate); opt; opt = strtok_r(NULL, ",", &tokstate)) { char *opteq = strchr(opt, '='); if (opteq) { int val, idx; diff --git a/util-linux/setpriv.c b/util-linux/setpriv.c index 37e8821a1..1e4b201ed 100644 --- a/util-linux/setpriv.c +++ b/util-linux/setpriv.c @@ -144,10 +144,11 @@ static unsigned parse_cap(const char *cap) static void set_inh_caps(char *capstring) { struct caps caps; + char *string; getcaps(&caps); - capstring = strtok(capstring, ","); + capstring = strtok_r(capstring, ",", &string); while (capstring) { unsigned cap; @@ -159,7 +160,7 @@ static void set_inh_caps(char *capstring) caps.data[CAP_TO_INDEX(cap)].inheritable |= CAP_TO_MASK(cap); else caps.data[CAP_TO_INDEX(cap)].inheritable &= ~CAP_TO_MASK(cap); - capstring = strtok(NULL, ","); + capstring = strtok_r(NULL, ",", &string); } if (capset(&caps.header, caps.data) != 0) @@ -170,7 +171,7 @@ static void set_ambient_caps(char *string) { char *cap; - cap = strtok(string, ","); + cap = strtok_r(string, ",", &string); while (cap) { unsigned idx; @@ -182,7 +183,7 @@ static void set_ambient_caps(char *string) if (prctl(PR_CAP_AMBIENT, PR_CAP_AMBIENT_LOWER, idx, 0, 0) < 0) bb_simple_perror_msg("cap_ambient_lower"); } - cap = strtok(NULL, ","); + cap = strtok_r(NULL, ",", &string); } } #endif /* FEATURE_SETPRIV_CAPABILITIES */ diff --git a/util-linux/switch_root.c b/util-linux/switch_root.c index c65096c27..f2674b5ac 100644 --- a/util-linux/switch_root.c +++ b/util-linux/switch_root.c @@ -164,7 +164,7 @@ static void drop_capabilities(char *string) { char *cap; - cap = strtok(string, ","); + cap = strtok_r(string, ",", &string); while (cap) { unsigned cap_idx; @@ -174,7 +174,7 @@ static void drop_capabilities(char *string) drop_bounding_set(cap_idx); drop_capset(cap_idx); bb_error_msg("dropped capability: %s", cap); - cap = strtok(NULL, ","); + cap = strtok_r(NULL, ",", &string); } } #endif |