Tue Sep 20 2022 05:07:34 GMT+0100 (British Summer Time) ~ Andrii Nakryiko <andrii@xxxxxxxxxx> > Teach veristat to output results as CSV table for easier programmatic > processing. Change what was --output/-o argument to now be --emit/-e. > And then use --output-format/-o <fmt> to specify output format. > Currently "table" and "csv" is supported, table being default. > > For CSV output mode veristat is using spec identifiers as column names. > E.g., instead of "Total states" veristat uses "total_states" as a CSV > header name. > > Internally veristat recognizes three formats, one of them > (RESFMT_TABLE_CALCLEN) is a special format instructing veristat to > calculate column widths for table output. This felt a bit cleaner and > more uniform than either creating separate functions just for this. > > Also fix double-free of bpf_object in process_prog, which didn't feel > important enough to have a separate patch for. > > Signed-off-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > --- > tools/testing/selftests/bpf/veristat.c | 114 ++++++++++++++++--------- > 1 file changed, 76 insertions(+), 38 deletions(-) > > diff --git a/tools/testing/selftests/bpf/veristat.c b/tools/testing/selftests/bpf/veristat.c > index 39e6dc41e504..317f7736dd59 100644 > --- a/tools/testing/selftests/bpf/veristat.c > +++ b/tools/testing/selftests/bpf/veristat.c > @@ -46,10 +46,17 @@ struct stat_specs { > int lens[ALL_STATS_CNT]; > }; > > +enum resfmt { > + RESFMT_TABLE, > + RESFMT_TABLE_CALCLEN, /* fake format to pre-calculate table's column widths */ > + RESFMT_CSV, > +}; > + > static struct env { > char **filenames; > int filename_cnt; > bool verbose; > + enum resfmt out_fmt; > > struct verif_stats *prog_stats; > int prog_stat_cnt; > @@ -77,9 +84,10 @@ const char argp_program_doc[] = > > static const struct argp_option opts[] = { > { NULL, 'h', NULL, OPTION_HIDDEN, "Show the full help" }, > - { "verbose", 'v', NULL, 0, "Verbose mode" }, > - { "output", 'o', "SPEC", 0, "Specify output stats" }, > + { "vereose", 'v', NULL, 0, "Verbose mode" }, "vereose" -> looks like this line was changed by mistake