perf stat: Clear screen only if output file is a tty
authorNamhyung Kim <namhyung@kernel.org>
Mon, 14 Nov 2022 23:02:09 +0000 (15:02 -0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 16 Nov 2022 12:51:22 +0000 (09:51 -0300)
The --interval-clear option makes perf stat to clear the terminal at
each interval.  But it doesn't need to clear the screen when it saves
to a file.  Make it fail when it's enabled with the output options.

  $ perf stat -I 1 --interval-clear -o myfile true
  --interval-clear does not work with output

   Usage: perf stat [<options>] [<command>]

      -o, --output <file>   output file name
          --log-fd <n>      log output to fd, instead of stderr
          --interval-clear  clear screen in between new interval

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: James Clark <james.clark@arm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Xing Zhengjun <zhengjun.xing@linux.intel.com>
Link: https://lore.kernel.org/r/20221114230227.1255976-2-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-stat.c

index d5e1670..1d79801 100644 (file)
@@ -2403,6 +2403,14 @@ int cmd_stat(int argc, const char **argv)
                }
        }
 
+       if (stat_config.interval_clear && !isatty(fileno(output))) {
+               fprintf(stderr, "--interval-clear does not work with output\n");
+               parse_options_usage(stat_usage, stat_options, "o", 1);
+               parse_options_usage(NULL, stat_options, "log-fd", 0);
+               parse_options_usage(NULL, stat_options, "interval-clear", 0);
+               return -1;
+       }
+
        stat_config.output = output;
 
        /*