Fix uname problem that was breaking poweroff.
authorEric Andersen <andersen@codepoet.org>
Mon, 30 Oct 2000 17:22:04 +0000 (17:22 -0000)
committerEric Andersen <andersen@codepoet.org>
Mon, 30 Oct 2000 17:22:04 +0000 (17:22 -0000)
Changelog
mkswap.c
nfsmount.c
util-linux/mkswap.c
util-linux/nfsmount.c
utility.c

index 8b4cf8b4e8d76f6d9eb2b561ba7566cccd4b8b35..4f6f619bf72e8c17d162efa5b30e63e2fb3814ca 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,11 @@
+0.48
+
+       * Fixed uname problem causing the kernel version to be
+           mis-detected (causing problems with poweroff, init,
+           and other things).
+
+        -Erik Andersen
+
 0.47
 
        * A bug in syslogd was fixed that allowed it to potentially fork-bomb
index 8a9767cca5985436790b8072f8b84030f07941bc..627d04f6074102d75b183c38dca3c830257b70e8 100644 (file)
--- a/mkswap.c
+++ b/mkswap.c
@@ -63,20 +63,6 @@ static int version = -1;
 
 #define MAKE_VERSION(p,q,r)    (65536*(p) + 256*(q) + (r))
 
-static int linux_version_code(void)
-{
-       struct utsname my_utsname;
-       int p, q, r;
-
-       if (uname(&my_utsname) == 0) {
-               p = atoi(strtok(my_utsname.release, "."));
-               q = atoi(strtok(NULL, "."));
-               r = atoi(strtok(NULL, "."));
-               return MAKE_VERSION(p, q, r);
-       }
-       return 0;
-}
-
 /*
  * The definition of the union swap_header uses the constant PAGE_SIZE.
  * Unfortunately, on some architectures this depends on the hardware model,
@@ -345,7 +331,7 @@ int mkswap_main(int argc, char **argv)
        if (version == -1) {
                if (PAGES <= V0_MAX_PAGES)
                        version = 0;
-               else if (linux_version_code() < MAKE_VERSION(2, 1, 117))
+               else if (get_kernel_revision() < MAKE_VERSION(2, 1, 117))
                        version = 0;
                else if (pagesize < 2048)
                        version = 0;
@@ -366,7 +352,7 @@ int mkswap_main(int argc, char **argv)
 #else
        if (!version)
                maxpages = V0_MAX_PAGES;
-       else if (linux_version_code() >= MAKE_VERSION(2, 2, 1))
+       else if (get_kernel_revision() >= MAKE_VERSION(2, 2, 1))
                maxpages = V1_MAX_PAGES;
        else {
                maxpages = V1_OLD_MAX_PAGES;
index abae19afe241cab3f97a2715dac474bda5e70353..f8735e52cb326d014de3db8ad4cb6587d61766c3 100644 (file)
@@ -160,20 +160,6 @@ static char *nfs_strerror(int stat);
 #define EX_BG                  256       /* retry in background (internal only) */
 
 
-static int
-linux_version_code(void) {
-       struct utsname my_utsname;
-       int p, q, r;
-
-       if (uname(&my_utsname) == 0) {
-               p = atoi(strtok(my_utsname.release, "."));
-               q = atoi(strtok(NULL, "."));
-               r = atoi(strtok(NULL, "."));
-               return MAKE_VERSION(p,q,r);
-       }
-       return 0;
-}
-
 /*
  * nfs_mount_version according to the sources seen at compile time.
  */
@@ -197,7 +183,7 @@ find_kernel_nfs_mount_version(void) {
        if (kernel_version)
                return;
 
-       kernel_version = linux_version_code();
+       kernel_version = get_kernel_revision();
 
        if (kernel_version) {
             if (kernel_version < MAKE_VERSION(2,1,32))
@@ -796,7 +782,7 @@ int nfsmount(const char *spec, const char *node, int *flags,
          * to avoid problems with multihomed hosts.
          * --Swen
          */
-       if (linux_version_code() <= 66314
+       if (get_kernel_revision() <= 66314
            && connect(fsock, (struct sockaddr *) &server_addr,
                       sizeof (server_addr)) < 0) {
                perror(_("nfs connect"));
index 8a9767cca5985436790b8072f8b84030f07941bc..627d04f6074102d75b183c38dca3c830257b70e8 100644 (file)
@@ -63,20 +63,6 @@ static int version = -1;
 
 #define MAKE_VERSION(p,q,r)    (65536*(p) + 256*(q) + (r))
 
-static int linux_version_code(void)
-{
-       struct utsname my_utsname;
-       int p, q, r;
-
-       if (uname(&my_utsname) == 0) {
-               p = atoi(strtok(my_utsname.release, "."));
-               q = atoi(strtok(NULL, "."));
-               r = atoi(strtok(NULL, "."));
-               return MAKE_VERSION(p, q, r);
-       }
-       return 0;
-}
-
 /*
  * The definition of the union swap_header uses the constant PAGE_SIZE.
  * Unfortunately, on some architectures this depends on the hardware model,
@@ -345,7 +331,7 @@ int mkswap_main(int argc, char **argv)
        if (version == -1) {
                if (PAGES <= V0_MAX_PAGES)
                        version = 0;
-               else if (linux_version_code() < MAKE_VERSION(2, 1, 117))
+               else if (get_kernel_revision() < MAKE_VERSION(2, 1, 117))
                        version = 0;
                else if (pagesize < 2048)
                        version = 0;
@@ -366,7 +352,7 @@ int mkswap_main(int argc, char **argv)
 #else
        if (!version)
                maxpages = V0_MAX_PAGES;
-       else if (linux_version_code() >= MAKE_VERSION(2, 2, 1))
+       else if (get_kernel_revision() >= MAKE_VERSION(2, 2, 1))
                maxpages = V1_MAX_PAGES;
        else {
                maxpages = V1_OLD_MAX_PAGES;
index abae19afe241cab3f97a2715dac474bda5e70353..f8735e52cb326d014de3db8ad4cb6587d61766c3 100644 (file)
@@ -160,20 +160,6 @@ static char *nfs_strerror(int stat);
 #define EX_BG                  256       /* retry in background (internal only) */
 
 
-static int
-linux_version_code(void) {
-       struct utsname my_utsname;
-       int p, q, r;
-
-       if (uname(&my_utsname) == 0) {
-               p = atoi(strtok(my_utsname.release, "."));
-               q = atoi(strtok(NULL, "."));
-               r = atoi(strtok(NULL, "."));
-               return MAKE_VERSION(p,q,r);
-       }
-       return 0;
-}
-
 /*
  * nfs_mount_version according to the sources seen at compile time.
  */
@@ -197,7 +183,7 @@ find_kernel_nfs_mount_version(void) {
        if (kernel_version)
                return;
 
-       kernel_version = linux_version_code();
+       kernel_version = get_kernel_revision();
 
        if (kernel_version) {
             if (kernel_version < MAKE_VERSION(2,1,32))
@@ -796,7 +782,7 @@ int nfsmount(const char *spec, const char *node, int *flags,
          * to avoid problems with multihomed hosts.
          * --Swen
          */
-       if (linux_version_code() <= 66314
+       if (get_kernel_revision() <= 66314
            && connect(fsock, (struct sockaddr *) &server_addr,
                       sizeof (server_addr)) < 0) {
                perror(_("nfs connect"));
index d61ef30e11308c817a5dfb54d4968d26cc602660..235b582271224320b132dec4a79a76281fcedb1c 100644 (file)
--- a/utility.c
+++ b/utility.c
@@ -156,7 +156,9 @@ extern int get_kernel_revision(void)
                perror("cannot get system information");
                return (0);
        }
-       sscanf(name.version, "%d.%d.%d", &major, &minor, &patch);
+       major = atoi(strtok(name.release, "."));
+       minor = atoi(strtok(NULL, "."));
+       patch = atoi(strtok(NULL, "."));
        return major * 65536 + minor * 256 + patch;
 }
 #endif                                                 /* BB_INIT */