aboutsummaryrefslogtreecommitdiff
path: root/libbb/kernel_version.c
diff options
context:
space:
mode:
authorGravatar Denys Vlasenko <vda.linux@googlemail.com>2020-10-06 02:36:47 +0200
committerGravatar Denys Vlasenko <vda.linux@googlemail.com>2020-10-06 02:36:47 +0200
commit2496616b0a8d1c80cd1416b73a4847b59b9f969a (patch)
treedc52a8f9bbbf33d507ecf0b808614b7923786567 /libbb/kernel_version.c
parent535a509846be5087ddd0d6e8fc6399f919942639 (diff)
downloadbusybox-2496616b0a8d1c80cd1416b73a4847b59b9f969a.tar.gz
busybox-2496616b0a8d1c80cd1416b73a4847b59b9f969a.tar.bz2
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.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/libbb/kernel_version.c b/libbb/kernel_version.c
index 7769a091b..6bb32ce5f 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;
}