On Thu, Dec 17, 2015 at 2:51 AM, Eric Sunshine <sunsh...@sunshineco.com> wrote:
> On Wed, Dec 16, 2015 at 10:29 AM, Karthik Nayak <karthik....@gmail.com> wrote:
>> Introduce color_atom_parser() which will parse a "color" atom and
>> store its color in the "use_atom" structure for further usage in
>
> Same comment as last time: s/use_atom/used_atom/
>

Will change.

>> 'populate_value()'.
>
> s/'//g
>

Will do.

> More below...
>
>> Helped-by: Ramsay Jones <ram...@ramsayjones.plus.com>
>> Signed-off-by: Karthik Nayak <karthik....@gmail.com>
>> ---
>> diff --git a/ref-filter.c b/ref-filter.c
>> @@ -29,6 +29,9 @@ typedef enum { FIELD_STR, FIELD_ULONG, FIELD_TIME } 
>> cmp_type;
>>  static struct used_atom {
>>         const char *str;
>>         cmp_type type;
>> +       union {
>> +               const char *color;
>> +       } u;
>>  } *used_atom;
>>  static int used_atom_cnt, need_tagged, need_symref;
>>  static int need_color_reset_at_eol;
>> @@ -53,6 +56,13 @@ static int match_atom_name(const char *name, const char 
>> *atom_name, const char *
>> +static void color_atom_parser(struct used_atom *atom)
>> +{
>> +       match_atom_name(atom->str, "color", &atom->u.color);
>> +       if (!atom->u.color)
>> +               die(_("expected format: %%(color:<color>)"));
>> +}
>> +
>> @@ -833,12 +846,10 @@ static void populate_value(struct ref_array_item *ref)
>>                         refname = branch_get_push(branch, NULL);
>>                         if (!refname)
>>                                 continue;
>> -               } else if (match_atom_name(name, "color", &valp)) {
>> +               } else if (starts_with(name, "color:")) {
>>                         char color[COLOR_MAXLEN] = "";
>>
>> -                       if (!valp)
>> -                               die(_("expected format: %%(color:<color>)"));
>> -                       if (color_parse(valp, color) < 0)
>> +                       if (color_parse(atom->u.color, color) < 0)
>
> It would make a lot more sense to invoke color_parse() with the
> unchanging argument to "color:" just once in color_atom_parser()
> rather than doing it here repeatedly. (Also, you'd drop 'const' from
> used_atom.u.color declaration.)
>

This makes sense, I'll put have color_parse() in color_atom_parser().
This would also require us to allocate memory once in color_atom_parser.

>
> Does v->s get freed each time through the loop? If not, then, assuming
> you parse the color just once in color_atom_parser(), then you could
> just assign the parsed color directly to v->s rather than duplicating
> it.

No it doesn't. Yup will do.

-- 
Regards,
Karthik Nayak
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to