diff options
author | Denys Vlasenko | 2020-10-06 02:36:47 +0200 |
---|---|---|
committer | Denys Vlasenko | 2020-10-06 02:36:47 +0200 |
commit | 2496616b0a8d1c80cd1416b73a4847b59b9f969a (patch) | |
tree | dc52a8f9bbbf33d507ecf0b808614b7923786567 /libbb/kernel_version.c | |
parent | 535a509846be5087ddd0d6e8fc6399f919942639 (diff) | |
download | busybox-2496616b0a8d1c80cd1416b73a4847b59b9f969a.zip 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 'libbb/kernel_version.c')
-rw-r--r-- | libbb/kernel_version.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/libbb/kernel_version.c b/libbb/kernel_version.c index 7769a09..6bb32ce 100644 --- a/libbb/kernel_version.c +++ b/libbb/kernel_version.c @@ -19,15 +19,17 @@ int FAST_FUNC get_linux_version_code(void) { struct utsname name; char *t; - int i, r; + int r; uname(&name); /* never fails */ - t = name.release; - r = 0; - for (i = 0; i < 3; i++) { - t = strtok(t, "."); - r = r * 256 + (t ? atoi(t) : 0); - t = NULL; - } - return r; + t = name.release - 1; + r = 1; + do { + r <<= 8; + if (t) { + r += atoi(++t); + t = strchr(t, '.'); + } + } while (r < 0x1000000); + return r - 0x1000000; } |