From 7936e197af7cc5800277f518a4853e9729ccfbd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Mon, 21 Jan 2019 20:14:25 +0100 Subject: [PATCH] tag: add support for an optional tag argument in a tag format string E..g {volume:max} --- tag.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/tag.c b/tag.c index 1d68b81..f97b2a4 100644 --- a/tag.c +++ b/tag.c @@ -423,10 +423,19 @@ tags_expand_template(const char *template, const struct tag_set *tags) continue; } - /* Extract tag name */ - char tag_name[end - begin]; - strncpy(tag_name, begin + 1, end - begin - 1); - tag_name[end - begin - 1] = '\0'; + /* Extract tag name + argument*/ + char tag_name_and_arg[end - begin]; + strncpy(tag_name_and_arg, begin + 1, end - begin - 1); + tag_name_and_arg[end - begin - 1] = '\0'; + + const char *tag_name = NULL; + const char *tag_arg = NULL; + + { + char *saveptr; + tag_name = strtok_r(tag_name_and_arg, ":", &saveptr); + tag_arg = strtok_r(NULL, ":", &saveptr); + } /* Lookup tag */ const struct tag *tag = tag_for_name(tags, tag_name);