summaryrefslogtreecommitdiff
path: root/ref-filter.c
diff options
context:
space:
mode:
authorTaylor Blau <me@ttaylorr.com>2017-10-02 05:25:24 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-10-02 12:15:30 (GMT)
commit7a5edbdb748f58c0ff3f2a459596ad6ddfda0640 (patch)
tree644b598f8b71e6e0c452876b23d8e8cf6a4b6ac4 /ref-filter.c
parent67a20a0010224255bbd5bb9fa4f95595c3e1ba7c (diff)
downloadgit-7a5edbdb748f58c0ff3f2a459596ad6ddfda0640.zip
git-7a5edbdb748f58c0ff3f2a459596ad6ddfda0640.tar.gz
git-7a5edbdb748f58c0ff3f2a459596ad6ddfda0640.tar.bz2
ref-filter.c: parse trailers arguments with %(contents) atom
The %(contents) atom takes a contents "field" as its argument. Since "trailers" is one of those fields, extend contents_atom_parser to parse "trailers"'s arguments when used through "%(contents)", like: %(contents:trailers:unfold,only) A caveat: trailers_atom_parser expects NULL when no arguments are given (see: `parse_ref_filter_atom`). This is because string_list_split (given a maxsplit of -1) returns a 1-ary string_list* containing the given string if the delimiter could not be found using `strchr`. To simulate this behavior without teaching trailers_atom_parser to accept strings with length zero, conditionally pass NULL to trailers_atom_parser if the arguments portion of the argument to %(contents) is empty. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'ref-filter.c')
-rw-r--r--ref-filter.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/ref-filter.c b/ref-filter.c
index 43ed10a..85625fe 100644
--- a/ref-filter.c
+++ b/ref-filter.c
@@ -212,9 +212,10 @@ static void contents_atom_parser(const struct ref_format *format, struct used_at
atom->u.contents.option = C_SIG;
else if (!strcmp(arg, "subject"))
atom->u.contents.option = C_SUB;
- else if (!strcmp(arg, "trailers"))
- atom->u.contents.option = C_TRAILERS;
- else if (skip_prefix(arg, "lines=", &arg)) {
+ else if (skip_prefix(arg, "trailers", &arg)) {
+ skip_prefix(arg, ":", &arg);
+ trailers_atom_parser(format, atom, *arg ? arg : NULL);
+ } else if (skip_prefix(arg, "lines=", &arg)) {
atom->u.contents.option = C_LINES;
if (strtoul_ui(arg, 10, &atom->u.contents.nlines))
die(_("positive value expected contents:lines=%s"), arg);