Re: [PATCH/RFC 09/10] ref-filter: introduce contents_atom_parser()
From: Eric Sunshine <hidden>
Date: 2016-06-15 23:07:26
On Sat, Dec 12, 2015 at 10:10 PM, Eric Sunshine [off-list ref] wrote:
On Wed, Nov 11, 2015 at 2:44 PM, Karthik Nayak [off-list ref] wrote:quoted
+void contents_atom_parser(struct used_atom *atom) +{ + const char * buf; + + if (match_atom_name(atom->str, "contents", &buf)) + atom->u.contents.all = 1; + + if (!buf) + return;
Also, isn't this logic somewhat bogus? u.contents.all is set to 1 for both bare %(contents) and decorated %(contents:whatever). Then, below, you also set one of .body, .signature, .subject, or .lines if a decoration is specified. So, now you have both .all and one of the other attributes set to 1, which is rather nonsensical (if I understand correctly). If you change this to an enum as suggested in my previous email, then the problem goes away.
quoted
+ if (!strcmp(buf, "body")) + atom->u.contents.body = 1; + else if (!strcmp(buf, "signature")) + atom->u.contents.signature = 1; + else if (!strcmp(buf, "subject")) + atom->u.contents.subject = 1; + else if (skip_prefix(buf, "lines=", &buf)) { + atom->u.contents.lines = 1; + if (strtoul_ui(buf, 10, &atom->u.contents.no_lines)) + die(_("positive value expected contents:lines=%s"), buf); + } else + die(_("improper format entered contents:%s"), buf); +}