changeset 1028:98791cc6b4b4

irccd: add channel prefixes in server-info command
author David Demelier <markand@malikania.fr>
date Thu, 25 Feb 2021 20:10:00 +0100
parents bab959e4a55a
children 113e523d999a
files irccd/peer.c lib/irccd/channel.c lib/irccd/channel.h
diffstat 3 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/irccd/peer.c	Wed Feb 24 18:14:02 2021 +0100
+++ b/irccd/peer.c	Thu Feb 25 20:10:00 2021 +0100
@@ -756,6 +756,13 @@
 	fprintf(fp, "%s %s %s\n", s->ident.nickname, s->ident.username, s->ident.realname);
 
 	LIST_FOREACH(c, &s->channels, link) {
+		const struct irc_channel_user *user = irc_channel_find(c, s->ident.nickname);
+
+		/* Prefix all our own modes on this channel. */
+		for (size_t i = 0; i < IRC_UTIL_SIZE(s->params.prefixes); ++i)
+			if (user && (user->modes & 1 << i))
+				fputc(s->params.prefixes[i].symbol, fp);
+
 		fprintf(fp, "%s", c->name);
 
 		if (LIST_NEXT(c, link))
--- a/lib/irccd/channel.c	Wed Feb 24 18:14:02 2021 +0100
+++ b/lib/irccd/channel.c	Thu Feb 25 20:10:00 2021 +0100
@@ -61,7 +61,7 @@
 }
 
 struct irc_channel_user *
-irc_channel_find(struct irc_channel *ch, const char *nickname)
+irc_channel_find(const struct irc_channel *ch, const char *nickname)
 {
 	struct irc_channel_user *u;
 
--- a/lib/irccd/channel.h	Wed Feb 24 18:14:02 2021 +0100
+++ b/lib/irccd/channel.h	Thu Feb 25 20:10:00 2021 +0100
@@ -51,7 +51,7 @@
 irc_channel_add(struct irc_channel *, const char *, int);
 
 struct irc_channel_user *
-irc_channel_find(struct irc_channel *, const char *);
+irc_channel_find(const struct irc_channel *, const char *);
 
 void
 irc_channel_clear(struct irc_channel *);