On Wed, Nov 11, 2015 at 2:44 PM, Karthik Nayak <karthik.188@xxxxxxxxx> wrote: > Introduce color_atom_parser() which will parse a "color" atom and > store its color in the "use_atom" structure for further usage in s/use_atom/used_atom/ > 'populate_value()'. > > Signed-off-by: Karthik Nayak <Karthik.188@xxxxxxxxx> > --- > 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; > @@ -53,6 +56,13 @@ static int match_atom_name(const char *name, const char *atom_name, const char * > +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>)")); > +} > + > @@ -175,6 +185,9 @@ int parse_ref_filter_atom(const char *atom, const char *ep) > REALLOC_ARRAY(used_atom, used_atom_cnt); > used_atom[at].str = xmemdupz(atom, ep - atom); > used_atom[at].type = valid_atom[i].cmp_type; > + memset(&used_atom[at].u, 0, sizeof(used_atom[at].u)); > + if (valid_atom[i].parser) > + valid_atom[i].parser(&used_atom[at]); > if (*atom == '*') > need_tagged = 1; > if (!strcmp(used_atom[at].str, "symref")) > @@ -833,11 +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")) { Hmm, so this will also match "colorize". Is that desirable? > char color[COLOR_MAXLEN] = ""; > + const char *valp = atom->u.color; > > - if (!valp) > - die(_("expected format: %%(color:<color>)")); > if (color_parse(valp, color) < 0) Rather than declaring variable 'valp', why not just say: if (color_parse(atom->u.color, color) < 0) ? > die(_("unable to parse format")); > v->s = xstrdup(color); > -- > 2.6.2 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html