Re: [PATCH v2 06/11] ref-filter: introduce color_atom_parser()
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Dec 16, 2015, 21:21 UTC
- Message-ID
- <CAPig+cTNEXA75Gh_jXrdhLOJpXYgyZ97TJCPHXz4DodOcjWheA@mail.gmail.com>
- In-Reply-To
- <1450279802-29414-7-git-send-email-Karthik.188@gmail.com>
On Wed, Dec 16, 2015 at 10:29 AM, Karthik Nayak <karthik.188@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/
> 'populate_value()'.
s/'//g
More below...
Show 34 quoted lines
> Helped-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
> Signed-off-by: Karthik Nayak <Karthik.188@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.)
> die(_("unable to parse format"));
> v->s = xstrdup(color);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.
> continue; > -- > 2.6.4