diff options
-rw-r--r-- | e2fsprogs/mke2fs.c | 4 | ||||
-rw-r--r-- | include/libbb.h | 2 | ||||
-rw-r--r-- | include/platform.h | 7 | ||||
-rw-r--r-- | libbb/kernel_version.c | 7 | ||||
-rw-r--r-- | modutils/rmmod.c | 2 | ||||
-rw-r--r-- | networking/interface.c | 3 | ||||
-rw-r--r-- | util-linux/mkswap.c | 10 | ||||
-rw-r--r-- | util-linux/nfsmount.c | 13 |
8 files changed, 27 insertions, 21 deletions
diff --git a/e2fsprogs/mke2fs.c b/e2fsprogs/mke2fs.c index 787f28e..0ecbd05 100644 --- a/e2fsprogs/mke2fs.c +++ b/e2fsprogs/mke2fs.c @@ -833,8 +833,8 @@ static int PRS(int argc, char *argv[]) #endif #ifdef __linux__ - linux_version_code = get_kernel_revision(); - if (linux_version_code && linux_version_code < (2*65536 + 2*256)) { + linux_version_code = get_linux_version_code(); + if (linux_version_code && linux_version_code < KERNEL_VERSION(2,2,0)) { param.s_rev_level = 0; param.s_feature_incompat = 0; param.s_feature_compat = 0; diff --git a/include/libbb.h b/include/libbb.h index 02927cd..461c28f 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -120,7 +120,7 @@ extern long bb_xgetlarg(const char *arg, int base, long lower, long upper); extern unsigned long bb_baud_to_value(speed_t speed); extern speed_t bb_value_to_baud(unsigned long value); -extern int get_kernel_revision(void); +extern int get_linux_version_code(void); extern int get_console_fd(void); extern struct mntent *find_mount_point(const char *name, const char *table); diff --git a/include/platform.h b/include/platform.h index 257ddb2..6b3b3f7 100644 --- a/include/platform.h +++ b/include/platform.h @@ -91,6 +91,13 @@ # include <netinet/in.h> #endif +/*----- Kernel versioning ------------------------------------*/ +#ifdef __linux__ +#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) +#else +#error implement KERNEL_VERSION for your platform +#endif + /* ---- miscellaneous --------------------------------------- */ /* NLS stuff */ /* THIS SHOULD BE CLEANED OUT OF THE TREE ENTIRELY */ diff --git a/libbb/kernel_version.c b/libbb/kernel_version.c index 5f5d36d..310da2f 100644 --- a/libbb/kernel_version.c +++ b/libbb/kernel_version.c @@ -26,11 +26,12 @@ #include "libbb.h" -/* Returns kernel version encoded as major*65536 + minor*256 + patch, +/* Returns current kernel version encoded as major*65536 + minor*256 + patch, * so, for example, to check if the kernel is greater than 2.2.11: - * if (get_kernel_revision() <= 2*65536+2*256+11) { <stuff> } + * + * if (get_linux_version_code() > KERNEL_VERSION(2,2,11)) { <stuff> } */ -int get_kernel_revision(void) +int get_linux_version_code(void) { struct utsname name; char *s; diff --git a/modutils/rmmod.c b/modutils/rmmod.c index 5302ab2..36bea34 100644 --- a/modutils/rmmod.c +++ b/modutils/rmmod.c @@ -38,7 +38,7 @@ static inline void filename2modname(char *modname, const char *afterslash) #if ENABLE_FEATURE_2_4_MODULES int kr_chk = 1; - if (get_kernel_revision() <= 2*65536+6*256) + if (get_linux_version_code() <= KERNEL_VERSION(2,6,0)) kr_chk = 0; #else #define kr_chk 1 diff --git a/networking/interface.c b/networking/interface.c index eec696f..8784522 100644 --- a/networking/interface.c +++ b/networking/interface.c @@ -78,7 +78,6 @@ #define _PATH_PROCNET_DEV "/proc/net/dev" #define _PATH_PROCNET_IFINET6 "/proc/net/if_inet6" #define new(p) ((p) = xcalloc(1,sizeof(*(p)))) -#define KRELEASE(maj,min,patch) ((maj) * 65536 + (min)*256 + (patch)) #ifdef HAVE_HWSLIP #include <net/if_slip.h> @@ -713,7 +712,7 @@ static int sockets_open(int family) if (force < 0) { force = 0; - if (get_kernel_revision() < KRELEASE(2, 1, 0)) + if (get_linux_version_code() < KERNEL_VERSION(2,1,0)) force = 1; if (access("/proc/net", R_OK)) force = 1; diff --git a/util-linux/mkswap.c b/util-linux/mkswap.c index 44d809a..0054eca 100644 --- a/util-linux/mkswap.c +++ b/util-linux/mkswap.c @@ -61,14 +61,14 @@ static int check = 0; static int badpages = 0; #if ENABLE_FEATURE_MKSWAP_V0 static int version = -1; -#define MAKE_VERSION(p,q,r) (65536*(p) + 256*(q) + (r)) #else #define version 1 /* and make sure that we optimize away anything which would deal with checking * the kernel revision as we have v1 support only anyway. */ -#define MAKE_VERSION(p,q,r) 1 -#define get_kernel_revision() 1 +#undef KERNEL_VERSION +#define KERNEL_VERSION(p,q,r) 1 +#define get_linux_version_code() 1 #endif /* @@ -293,7 +293,7 @@ int mkswap_main(int argc, char **argv) if (sz & 4) { version = bb_xgetlarg(tmp, 10, 0, 1); } else { - if (get_kernel_revision() < MAKE_VERSION(2, 1, 117)) + if (get_linux_version_code() < KERNEL_VERSION(2, 1, 117)) version = 0; else version = 1; @@ -327,7 +327,7 @@ int mkswap_main(int argc, char **argv) #else if (!version) maxpages = V0_MAX_PAGES; - else if (get_kernel_revision() >= MAKE_VERSION(2, 2, 1)) + else if (get_linux_version_code() >= KERNEL_VERSION(2,2,1)) maxpages = V1_MAX_PAGES; else { maxpages = V1_OLD_MAX_PAGES; diff --git a/util-linux/nfsmount.c b/util-linux/nfsmount.c index be0c87f..7b742cb 100644 --- a/util-linux/nfsmount.c +++ b/util-linux/nfsmount.c @@ -214,7 +214,6 @@ enum { static char *nfs_strerror(int status); -#define MAKE_VERSION(p,q,r) (65536*(p) + 256*(q) + (r)) #define MAX_NFSPROT ((nfs_mount_version >= 4) ? 3 : 2) enum { @@ -249,13 +248,13 @@ find_kernel_nfs_mount_version(void) nfs_mount_version = NFS_MOUNT_VERSION; /* default */ - kernel_version = get_kernel_revision(); + kernel_version = get_linux_version_code(); if (kernel_version) { - if (kernel_version < MAKE_VERSION(2,1,32)) + if (kernel_version < KERNEL_VERSION(2,1,32)) nfs_mount_version = 1; - else if (kernel_version < MAKE_VERSION(2,2,18) || - (kernel_version >= MAKE_VERSION(2,3,0) && - kernel_version < MAKE_VERSION(2,3,99))) + else if (kernel_version < KERNEL_VERSION(2,2,18) || + (kernel_version >= KERNEL_VERSION(2,3,0) && + kernel_version < KERNEL_VERSION(2,3,99))) nfs_mount_version = 3; else nfs_mount_version = 4; /* since 2.3.99pre4 */ @@ -844,7 +843,7 @@ int nfsmount(const char *spec, const char *node, int *flags, * to avoid problems with multihomed hosts. * --Swen */ - if (get_kernel_revision() <= 66314 + if (get_linux_version_code() <= KERNEL_VERSION(2,3,10) && connect(fsock, (struct sockaddr *) &server_addr, sizeof (server_addr)) < 0) { perror(_("nfs connect")); |