Re: [PATCH 2/2] perf tools: Add +field argument support for --sort option

From: Jiri Olsa
Date: Fri Aug 22 2014 - 11:24:18 EST


On Fri, Aug 22, 2014 at 12:16:51PM -0300, Arnaldo Carvalho de Melo wrote:

SNIP

> > }
> >
> > +static int setup_sort_order(void)
> > +{
> > +#define BUF_MAX 4096
>
> This is an arbitrary value, and you will use this just here, so you
> could just have used a number and later used sizeof(buf).
>
> Anyway, what bothers me is the use of yet another static buffer.
>
> The thing to use here is asprintf, that will do it all for you, format
> _and_ allocate a buffer the size you need.
>
> > + static char buf[BUF_MAX];
> > +
> > + if (!sort_order || is_strict_order(sort_order))
> > + return 0;
> > +
> > + if (!strlen(sort_order + 1)) {
> > + error("Invalid --fields key: `+'");
> > + return -EINVAL;
> > + }
> > +
> > + scnprintf(buf, BUF_MAX, "%s,%s",
> > + get_default_sort_order(),
> > + sort_order + 1);
> > +
> > + sort_order = buf;
>
> I.e. it would be better to have this as:
>
> char *new_sort_order;
>
> if (sort_order[1] == '\0') {
> error("Invalid --fields key: `+'");
> return -EINVAL;
> }
>
> if (asprintf(&new_sort_order, "%s,%s",
> get_default_sort_order(), sort_order + 1) < 0) {
> error("Not enough memory to set up --sort");
> return -ENOMEM;
> }

ok, will check the asprintf

>
> sort_order = new_sort_order;
>
> > + return 0;
>
>
> Also please fix the error message, there is a cut'n'paste error there :-)

aargh right ;-)

I'll send v2

thanks,
jirka
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/