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

@ -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 */