about summary refs log tree commit diff
path: root/tag.c
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2019-02-25 16:02:41 -0500
committerJune McEnroe <june@causal.agency>2019-02-25 16:02:41 -0500
commit6b97c597569eb960e3696e7667e553d05238f3e9 (patch)
tree17bd5cf51cc0f580b9406e90ce5bdc1e4daadfd4 /tag.c
parentRemove tag X macros again (diff)
downloadcatgirl-6b97c597569eb960e3696e7667e553d05238f3e9.tar.gz
catgirl-6b97c597569eb960e3696e7667e553d05238f3e9.zip
Add color to tags
Diffstat (limited to 'tag.c')
-rw-r--r--tag.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/tag.c b/tag.c
index cae5f03..13f59d0 100644
--- a/tag.c
+++ b/tag.c
@@ -23,30 +23,33 @@
 
 static struct {
 	char *name[TagsLen];
+	enum IRCColor color[TagsLen];
 	size_t len;
 } tags = {
 	.name = { "<none>", "<status>", "<raw>" },
+	.color = { IRCBlack, IRCDefault, IRCRed },
 	.len = 3,
 };
 
-const struct Tag TagNone   = { 0, "<none>" };
-const struct Tag TagStatus = { 1, "<status>" };
-const struct Tag TagRaw    = { 2, "<raw>" };
+const struct Tag TagNone   = { 0, "<none>", IRCBlack };
+const struct Tag TagStatus = { 1, "<status>", IRCDefault };
+const struct Tag TagRaw    = { 2, "<raw>", IRCRed };
 
 struct Tag tagFind(const char *name) {
 	for (size_t id = 0; id < tags.len; ++id) {
 		if (strcmp(tags.name[id], name)) continue;
-		return (struct Tag) { id, tags.name[id] };
+		return (struct Tag) { id, tags.name[id], tags.color[id] };
 	}
 	return TagNone;
 }
 
-struct Tag tagFor(const char *name) {
+struct Tag tagFor(const char *name, enum IRCColor color) {
 	struct Tag tag = tagFind(name);
 	if (tag.id != TagNone.id) return tag;
 	if (tags.len == TagsLen) return TagStatus;
 	size_t id = tags.len++;
 	tags.name[id] = strdup(name);
 	if (!tags.name[id]) err(EX_OSERR, "strdup");
-	return (struct Tag) { id, tags.name[id] };
+	tags.color[id] = color;
+	return (struct Tag) { id, tags.name[id], color };
 }