]> git.ipfire.org Git - thirdparty/util-linux.git/blobdiff - sys-utils/lscpu.c
Make the ways of using output stream consistent in usage()
[thirdparty/util-linux.git] / sys-utils / lscpu.c
index 8333dcbea628bfd67ceb69b6e19184c67450e6e6..278f2be5816ea20848b4382312c2d605203052e6 100644 (file)
@@ -855,13 +855,15 @@ print_cpuset(struct lscpu_cxt *cxt,
             const char *key, cpu_set_t *set)
 {
        size_t setbuflen = 7 * cxt->maxcpus;
-       char setbuf[setbuflen], *p;
+       char *setbuf, *p;
 
        assert(set);
        assert(key);
        assert(tb);
        assert(cxt);
 
+       setbuf = xmalloc(setbuflen);
+
        if (cxt->hex) {
                p = cpumask_create(setbuf, setbuflen, set, cxt->setsize);
                add_summary_s(tb, sec, key, p);
@@ -869,6 +871,8 @@ print_cpuset(struct lscpu_cxt *cxt,
                p = cpulist_create(setbuf, setbuflen, set, cxt->setsize);
                add_summary_s(tb, sec, key, p);
        }
+
+       free(setbuf);
 }
 
 static void
@@ -1194,7 +1198,7 @@ static void __attribute__((__noreturn__)) usage(void)
        fputs(_("     --hierarchic[=when] use subsections in summary (auto, never, always)\n"), out);
        fputs(_("     --output-all        print all available columns for -e, -p or -C\n"), out);
        fputs(USAGE_SEPARATOR, out);
-       printf(USAGE_HELP_OPTIONS(25));
+       fprintf(out, USAGE_HELP_OPTIONS(25));
 
        fputs(_("\nAvailable output columns for -e or -p:\n"), out);
        for (i = 0; i < ARRAY_SIZE(coldescs_cpu); i++)
@@ -1204,7 +1208,7 @@ static void __attribute__((__noreturn__)) usage(void)
        for (i = 0; i < ARRAY_SIZE(coldescs_cache); i++)
                fprintf(out, " %13s  %s\n", coldescs_cache[i].name, _(coldescs_cache[i].help));
 
-       printf(USAGE_MAN_TAIL("lscpu(1)"));
+       fprintf(out, USAGE_MAN_TAIL("lscpu(1)"));
 
        exit(EXIT_SUCCESS);
 }
@@ -1455,10 +1459,13 @@ int main(int argc, char *argv[])
                        columns[ncolumns++] = COL_CPU_NODE;
                        columns[ncolumns++] = COL_CPU_CACHE;
                }
-               if (outarg && string_add_to_idarray(outarg, columns,
+               if (outarg) {
+                       if (string_add_to_idarray(outarg, columns,
                                        ARRAY_SIZE(columns),
                                        &ncolumns, cpu_column_name_to_id) < 0)
-                       return EXIT_FAILURE;
+                               return EXIT_FAILURE;
+                       cxt->show_compatible = 0;
+               }
 
                print_cpus_parsable(cxt, columns, ncolumns);
                break;