changeset 1070:beb61243cf6d

misc: remove usage of BSD sys/queue.h (channel)
author David Demelier <markand@malikania.fr>
date Mon, 12 Jul 2021 21:20:31 +0200
parents 827431b41132
children e9b35306f376
files irccd/jsapi-server.c irccd/peer.c lib/irccd/channel.c lib/irccd/channel.h lib/irccd/server.c lib/irccd/server.h tests/test-channel.c tests/test-plugin-tictactoe.c
diffstat 8 files changed, 43 insertions(+), 43 deletions(-) [+]
line wrap: on
line diff
--- a/irccd/jsapi-server.c	Mon Jul 12 21:11:53 2021 +0200
+++ b/irccd/jsapi-server.c	Mon Jul 12 21:20:31 2021 +0200
@@ -20,6 +20,8 @@
 
 #include <duktape.h>
 
+#include <utlist.h>
+
 #include <irccd/channel.h>
 #include <irccd/conn.h>
 #include <irccd/irccd.h>
@@ -188,7 +190,7 @@
 	/* Channels. */
 	duk_push_array(ctx);
 
-	LIST_FOREACH(c, &s->channels, link) {
+	LL_FOREACH(s->channels, c) {
 		duk_push_object(ctx);
 		duk_push_string(ctx, c->name);
 		duk_put_prop_string(ctx, -2, "name");
@@ -196,7 +198,7 @@
 		duk_put_prop_string(ctx, -2, "joined");
 		duk_push_array(ctx);
 
-		LIST_FOREACH(u, &c->users, link) {
+		LL_FOREACH(c->users, u) {
 			duk_push_object(ctx);
 			duk_push_string(ctx, u->nickname);
 			duk_put_prop_string(ctx, -2, "nickname");
--- a/irccd/peer.c	Mon Jul 12 21:11:53 2021 +0200
+++ b/irccd/peer.c	Mon Jul 12 21:20:31 2021 +0200
@@ -774,7 +774,7 @@
 	    s->flags & IRC_SERVER_FLAGS_SSL ? " ssl" : "");
 	fprintf(fp, "%s %s %s\n", s->ident.nickname, s->ident.username, s->ident.realname);
 
-	LIST_FOREACH(c, &s->channels, link) {
+	LL_FOREACH(s->channels, c) {
 		const struct irc_channel_user *user = irc_channel_get(c, s->ident.nickname);
 
 		/* Prefix all our own modes on this channel. */
@@ -784,7 +784,7 @@
 
 		fprintf(fp, "%s", c->name);
 
-		if (LIST_NEXT(c, link))
+		if (c->next)
 			fputc(' ', fp);
 	}
 
--- a/lib/irccd/channel.c	Mon Jul 12 21:11:53 2021 +0200
+++ b/lib/irccd/channel.c	Mon Jul 12 21:20:31 2021 +0200
@@ -20,6 +20,8 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include <utlist.h>
+
 #include "channel.h"
 #include "util.h"
 
@@ -36,8 +38,6 @@
 	strlcpy(ch->name, name, sizeof (ch->name));
 	strlcpy(ch->password, password ? password : "", sizeof (ch->password));
 
-	LIST_INIT(&ch->users);
-
 	return ch;
 }
 
@@ -56,7 +56,7 @@
 	user->modes = modes;
 	strlcpy(user->nickname, nickname, sizeof (user->nickname));
 
-	LIST_INSERT_HEAD(&ch->users, user, link);
+	LL_PREPEND(ch->users, user);
 }
 
 struct irc_channel_user *
@@ -64,7 +64,7 @@
 {
 	struct irc_channel_user *u;
 
-	LIST_FOREACH(u, &ch->users, link)
+	LL_FOREACH(ch->users, u)
 		if (strcmp(u->nickname, nickname) == 0)
 			return u;
 
@@ -78,9 +78,10 @@
 
 	struct irc_channel_user *user, *tmp;
 
-	LIST_FOREACH_SAFE(user, &ch->users, link, tmp)
+	LL_FOREACH_SAFE(ch->users, user, tmp)
 		free(user);
-	LIST_INIT(&ch->users);
+
+	ch->users = NULL;
 }
 
 void
@@ -92,7 +93,7 @@
 	struct irc_channel_user *user;
 
 	if ((user = irc_channel_get(ch, nick))) {
-		LIST_REMOVE(user, link);
+		LL_DELETE(ch->users, user);
 		free(user);
 	}
 }
--- a/lib/irccd/channel.h	Mon Jul 12 21:11:53 2021 +0200
+++ b/lib/irccd/channel.h	Mon Jul 12 21:20:31 2021 +0200
@@ -19,7 +19,6 @@
 #ifndef IRCCD_CHANNEL_H
 #define IRCCD_CHANNEL_H
 
-#include <sys/queue.h>
 #include <stddef.h>
 
 #include "limits.h"
@@ -31,19 +30,17 @@
 struct irc_channel_user {
 	char nickname[IRC_NICKNAME_LEN];
 	int modes;
-	LIST_ENTRY(irc_channel_user) link;
+	struct irc_channel_user *next;
 };
 
 struct irc_channel {
 	char name[IRC_CHANNEL_LEN];
 	char password[IRC_PASSWORD_LEN];
 	int joined;
-	LIST_HEAD(, irc_channel_user) users;
-	LIST_ENTRY(irc_channel) link;
+	struct irc_channel_user *users;
+	struct irc_channel *next;
 };
 
-LIST_HEAD(irc_channel_list, irc_channel);
-
 struct irc_channel *
 irc_channel_new(const char *, const char *, int);
 
--- a/lib/irccd/server.c	Mon Jul 12 21:11:53 2021 +0200
+++ b/lib/irccd/server.c	Mon Jul 12 21:20:31 2021 +0200
@@ -24,6 +24,8 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include <utlist.h>
+
 #include "config.h"
 
 #if defined(IRCCD_WITH_SSL)
@@ -45,7 +47,7 @@
 {
 	struct irc_channel *c, *tmp;
 
-	LIST_FOREACH_SAFE(c, &s->channels, link, tmp) {
+	LL_FOREACH_SAFE(s->channels, c, tmp) {
 		if (free)
 			irc_channel_finish(c);
 		else
@@ -53,7 +55,7 @@
 	}
 
 	if (free)
-		LIST_INIT(&s->channels);
+		s->channels = NULL;
 }
 
 static inline void
@@ -94,16 +96,15 @@
 	if (password)
 		strlcpy(ch->password, password, sizeof (ch->password));
 
-	LIST_INIT(&ch->users);
-	LIST_INSERT_HEAD(&s->channels, ch, link);
+	LL_PREPEND(s->channels, ch);
 
 	return ch;
 }
 
 static void
-remove_channel(struct irc_channel *ch)
+remove_channel(struct irc_server *s, struct irc_channel *ch)
 {
-	LIST_REMOVE(ch, link);
+	LL_DELETE(s->channels, ch);
 	irc_channel_finish(ch);
 }
 
@@ -198,7 +199,7 @@
 	struct irc_channel *ch;
 
 	/* Now join all channels that were requested. */
-	LIST_FOREACH(ch, &s->channels, link)
+	LL_FOREACH(s->channels, ch)
 		irc_server_join(s, ch->name, ch->password);
 
 	s->state = IRC_SERVER_STATE_CONNECTED;
@@ -403,7 +404,7 @@
 	ch = add_channel(s, ev->part.channel, NULL, 1);
 
 	if (is_self(s, ev->part.origin)) {
-		remove_channel(ch);
+		remove_channel(s, ch);
 		irc_log_info("server %s: leaving channel %s", s->name, ev->part.channel);
 	} else
 		irc_channel_remove(ch, ev->part.origin);
@@ -534,14 +535,14 @@
 	if (!(fp = open_memstream(&ev->names.names, &length)))
 		return;
 
-	LIST_FOREACH(u, &ch->users, link) {
+	LL_FOREACH(ch->users, u) {
 		for (size_t i = 0; i < IRC_UTIL_SIZE(s->params.prefixes); ++i)
 			if (u->modes & (1 << i))
 				fprintf(fp, "%c", s->params.prefixes[i].symbol);
 
 		fprintf(fp, "%s", u->nickname);
 
-		if (LIST_NEXT(u, link))
+		if (u->next)
 			fputc(' ', fp);
 	}
 
@@ -727,7 +728,6 @@
 
 	/* Server itself. */
 	strlcpy(s->name, name, sizeof (s->name));
-	LIST_INIT(&s->channels);
 
 	/* Default options. */
 	strlcpy(s->prefix, "!", sizeof (s->prefix));
@@ -854,7 +854,7 @@
 
 	struct irc_channel *ch;
 
-	LIST_FOREACH(ch, &s->channels, link)
+	LL_FOREACH(s->channels, ch)
 		if (strcmp(ch->name, name) == 0)
 			return ch;
 
--- a/lib/irccd/server.h	Mon Jul 12 21:11:53 2021 +0200
+++ b/lib/irccd/server.h	Mon Jul 12 21:20:31 2021 +0200
@@ -90,7 +90,7 @@
 	struct irc_server_params params;
 	enum irc_server_state state;
 	enum irc_server_flags flags;
-	struct irc_channel_list channels;
+	struct irc_channel *channels;
 	struct irc_event_whois bufwhois;
 	struct irc_conn *conn;
 	size_t refc;
--- a/tests/test-channel.c	Mon Jul 12 21:11:53 2021 +0200
+++ b/tests/test-channel.c	Mon Jul 12 21:20:31 2021 +0200
@@ -33,31 +33,31 @@
 	GREATEST_ASSERT(ch->joined);
 
 	irc_channel_add(ch, "markand", 1);
-	user = LIST_FIRST(&ch->users);
+	user = ch->users;
 	GREATEST_ASSERT_EQ(1, user->modes);
 	GREATEST_ASSERT_STR_EQ("markand", user->nickname);
 
 	irc_channel_add(ch, "markand", 2);
-	user = LIST_FIRST(&ch->users);
+	user = ch->users;
 	GREATEST_ASSERT_EQ(1, user->modes);
 	GREATEST_ASSERT_STR_EQ("markand", user->nickname);
 
 	irc_channel_add(ch, "jean", 4);
-	user = LIST_FIRST(&ch->users);
+	user = ch->users;
 	GREATEST_ASSERT_EQ(4, user->modes);
 	GREATEST_ASSERT_STR_EQ("jean", user->nickname);
-	user = LIST_NEXT(user, link);
+	user = user->next;
 	GREATEST_ASSERT_EQ(1, user->modes);
 	GREATEST_ASSERT_STR_EQ("markand", user->nickname);
 
 	irc_channel_add(ch, "zoe", 0);
-	user = LIST_FIRST(&ch->users);
+	user = ch->users;
 	GREATEST_ASSERT_EQ(0, user->modes);
 	GREATEST_ASSERT_STR_EQ("zoe", user->nickname);
-	user = LIST_NEXT(user, link);
+	user = user->next;
 	GREATEST_ASSERT_EQ(4, user->modes);
 	GREATEST_ASSERT_STR_EQ("jean", user->nickname);
-	user = LIST_NEXT(user, link);
+	user = user->next;
 	GREATEST_ASSERT_EQ(1, user->modes);
 	GREATEST_ASSERT_STR_EQ("markand", user->nickname);
 
@@ -79,20 +79,20 @@
 	irc_channel_add(ch, "zoe", 0);
 
 	irc_channel_remove(ch, "jean");
-	user = LIST_FIRST(&ch->users);
+	user = ch->users;
 	GREATEST_ASSERT_EQ(0, user->modes);
 	GREATEST_ASSERT_STR_EQ("zoe", user->nickname);
-	user = LIST_NEXT(user, link);
+	user = user->next;
 	GREATEST_ASSERT_EQ(1, user->modes);
 	GREATEST_ASSERT_STR_EQ("markand", user->nickname);
 
 	irc_channel_remove(ch, "zoe");
-	user = LIST_FIRST(&ch->users);
+	user = ch->users;
 	GREATEST_ASSERT_EQ(1, user->modes);
 	GREATEST_ASSERT_STR_EQ("markand", user->nickname);
 
 	irc_channel_remove(ch, "markand");
-	GREATEST_ASSERT(!LIST_FIRST(&ch->users));
+	GREATEST_ASSERT(!ch->users);
 
 	irc_channel_finish(ch);
 
--- a/tests/test-plugin-tictactoe.c	Mon Jul 12 21:11:53 2021 +0200
+++ b/tests/test-plugin-tictactoe.c	Mon Jul 12 21:20:31 2021 +0200
@@ -79,8 +79,8 @@
 
 	/* We need tw players on a channel to play the game. */
 	irc_server_join(server, "#tictactoe", NULL);
-	irc_channel_add(LIST_FIRST(&server->channels), "a", 0);
-	irc_channel_add(LIST_FIRST(&server->channels), "b", 0);
+	irc_channel_add(server->channels, "a", 0);
+	irc_channel_add(server->channels, "b", 0);
 
 	/* Fake server connected to send data. */
 	server->state = IRC_SERVER_STATE_CONNECTED;