aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/tag.c12
-rw-r--r--src/tag.h7
2 files changed, 16 insertions, 3 deletions
diff --git a/src/tag.c b/src/tag.c
index 285afe84c..edef3aedd 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -365,16 +365,22 @@ tag_merge(const struct tag *base, const struct tag *add)
return ret;
}
-bool tag_has_type(const struct tag *tag, enum tag_type type)
+const char *
+tag_get_value(const struct tag *tag, enum tag_type type)
{
assert(tag != NULL);
assert(type < TAG_NUM_OF_ITEM_TYPES);
for (unsigned i = 0; i < tag->numOfItems; i++)
if (tag->items[i]->type == type)
- return true;
+ return tag->items[i]->value;
+
+ return NULL;
+}
- return false;
+bool tag_has_type(const struct tag *tag, enum tag_type type)
+{
+ return tag_get_value(tag, type) != NULL;
}
int tag_equal(const struct tag *tag1, const struct tag *tag2)
diff --git a/src/tag.h b/src/tag.h
index a37408819..2347801e3 100644
--- a/src/tag.h
+++ b/src/tag.h
@@ -110,6 +110,13 @@ tag_is_empty(const struct tag *tag)
}
/**
+ * Returns the first value of the specified tag type, or NULL if none
+ * is present in this tag object.
+ */
+const char *
+tag_get_value(const struct tag *tag, enum tag_type type);
+
+/**
* Checks whether the tag contains one or more items with
* the specified type.
*/