On Wed, Dec 2, 2015 at 4:57 AM, Eric Sunshine <sunshine@xxxxxxxxxxxxxx> wrote: > 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/ > will change. >> '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? > Well the error checking is done when we parse the atom in color_atom_parser() so here we don't need to worry about something like this. >> 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) > > ? Yes, will change, thanks. -- Regards, Karthik Nayak -- 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