]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lscpu: keep lscpu usable on snapshots
authorKarel Zak <kzak@redhat.com>
Tue, 15 Mar 2016 13:23:59 +0000 (14:23 +0100)
committerKarel Zak <kzak@redhat.com>
Tue, 15 Mar 2016 13:23:59 +0000 (14:23 +0100)
This patch reverts 3ac03fe4d20558b55635a048d7f2fb0f5e85ee2a for
snapshots (--sysroot).

Yeah, poor-man solution. It would be really nice to have runtime
detection to support model overwriting also on snapshots.

Signed-off-by: Karel Zak <kzak@redhat.com>
sys-utils/lscpu.c

index 423bc56d6cfa4a983604420b229c38922665aeb1..8e62c6409c8c701a80efa114467e964fd27a6a72 100644 (file)
@@ -453,25 +453,36 @@ read_basicinfo(struct lscpu_desc *desc, struct lscpu_modifier *mod)
        char buf[BUFSIZ];
        struct utsname utsbuf;
        size_t setsize;
+       int overwrite_model = 0;
 
        /* architecture */
        if (uname(&utsbuf) == -1)
                err(EXIT_FAILURE, _("error: uname failed"));
        desc->arch = xstrdup(utsbuf.machine);
 
+       /* Use another records from cpuinfo for PPC, on snapshot follow
+        * standard behavior.
+        *
+        * TODO: use runtime detection to make model overwrite possible on
+        *       snapshots too.
+        */
+#if defined(__powerpc__) || defined(__powerpc64__)
+       if (mod->system == SYSTEM_LIVE)
+               overwrite_model = 1;
+#endif
        /* details */
        while (fgets(buf, sizeof(buf), fp) != NULL) {
                if (lookup(buf, "vendor", &desc->vendor)) ;
                else if (lookup(buf, "vendor_id", &desc->vendor)) ;
                else if (lookup(buf, "family", &desc->family)) ;
                else if (lookup(buf, "cpu family", &desc->family)) ;
-#if defined(__powerpc__) || defined(__powerpc64__)
-               else if (lookup(buf, "revision", &desc->model)) ;
-               else if (lookup(buf, "cpu", &desc->modelname)) ;
-#else
-               else if (lookup(buf, "model", &desc->model)) ;
-               else if (lookup(buf, "model name", &desc->modelname)) ;
-#endif
+
+               else if (overwrite_model && lookup(buf, "revision", &desc->model)) ;
+               else if (overwrite_model && lookup(buf, "cpu", &desc->modelname)) ;
+
+               else if (!overwrite_model && lookup(buf, "model", &desc->model)) ;
+               else if (!overwrite_model && lookup(buf, "model name", &desc->modelname)) ;
+
                else if (lookup(buf, "stepping", &desc->stepping)) ;
                else if (lookup(buf, "cpu MHz", &desc->mhz)) ;
                else if (lookup(buf, "flags", &desc->flags)) ;          /* x86 */