# HG changeset patch # User David Demelier # Date 1626118097 -7200 # Node ID e9b35306f3768cf79c3b5082ff69652564fa23da # Parent beb61243cf6ddf1885529b5a2b93846fa935b8b6 misc: remove usage of BSD sys/queue.h (rule) diff -r beb61243cf6d -r e9b35306f376 irccd/jsapi-rule.c --- a/irccd/jsapi-rule.c Mon Jul 12 21:20:31 2021 +0200 +++ b/irccd/jsapi-rule.c Mon Jul 12 21:28:17 2021 +0200 @@ -19,6 +19,8 @@ #include #include +#include + #include #include @@ -107,7 +109,7 @@ duk_push_array(ctx); - TAILQ_FOREACH(rule, &irc.rules, link) { + DL_FOREACH(irc.rules, rule) { duk_push_object(ctx); duk_push_int(ctx, rule->action); duk_put_prop_string(ctx, -2, "action"); diff -r beb61243cf6d -r e9b35306f376 irccd/peer.c --- a/irccd/peer.c Mon Jul 12 21:20:31 2021 +0200 +++ b/irccd/peer.c Mon Jul 12 21:28:17 2021 +0200 @@ -553,12 +553,12 @@ if (!(fp = fmemopen(out, sizeof (out), "w"))) return error(p, "%s", strerror(errno)); - TAILQ_FOREACH(rule, &irc.rules, link) + DL_FOREACH(irc.rules, rule) rulesz++; fprintf(fp, "OK %zu\n", rulesz); - TAILQ_FOREACH(rule, &irc.rules, link) { + DL_FOREACH(irc.rules, rule) { /* Convert : to spaces. */ fprintf(fp, "%s\n", rule->action == IRC_RULE_ACCEPT ? "accept" : "drop"); fprintf(fp, "%s\n", rule_list_to_spaces(rule->servers)); diff -r beb61243cf6d -r e9b35306f376 lib/irccd/irccd.c --- a/lib/irccd/irccd.c Mon Jul 12 21:20:31 2021 +0200 +++ b/lib/irccd/irccd.c Mon Jul 12 21:28:17 2021 +0200 @@ -86,50 +86,50 @@ { switch (ev->type) { case IRC_EVENT_COMMAND: - return irc_rule_matchlist(&irc.rules, ev->server->name, + return irc_rule_matchlist(irc.rules, ev->server->name, ev->message.channel, ev->message.origin, p->name, "onCommand"); case IRC_EVENT_CONNECT: - return irc_rule_matchlist(&irc.rules, ev->server->name, + return irc_rule_matchlist(irc.rules, ev->server->name, NULL, NULL, p->name, "onConnect"); case IRC_EVENT_DISCONNECT: - return irc_rule_matchlist(&irc.rules, ev->server->name, + return irc_rule_matchlist(irc.rules, ev->server->name, NULL, NULL, p->name, "onDisconnect"); case IRC_EVENT_INVITE: - return irc_rule_matchlist(&irc.rules, ev->server->name, + return irc_rule_matchlist(irc.rules, ev->server->name, ev->invite.channel, ev->invite.origin, p->name, "onInvite"); case IRC_EVENT_JOIN: - return irc_rule_matchlist(&irc.rules, ev->server->name, + return irc_rule_matchlist(irc.rules, ev->server->name, ev->join.channel, ev->join.origin, p->name, "onJoin"); case IRC_EVENT_KICK: - return irc_rule_matchlist(&irc.rules, ev->server->name, + return irc_rule_matchlist(irc.rules, ev->server->name, ev->kick.channel, ev->kick.origin, p->name, "onKick"); break; case IRC_EVENT_ME: - return irc_rule_matchlist(&irc.rules, ev->server->name, + return irc_rule_matchlist(irc.rules, ev->server->name, ev->message.channel, ev->message.origin, p->name, "onMe"); case IRC_EVENT_MESSAGE: - return irc_rule_matchlist(&irc.rules, ev->server->name, + return irc_rule_matchlist(irc.rules, ev->server->name, ev->message.channel, ev->message.origin, p->name, "onMessage"); case IRC_EVENT_MODE: - return irc_rule_matchlist(&irc.rules, ev->server->name, + return irc_rule_matchlist(irc.rules, ev->server->name, ev->mode.channel, ev->mode.origin, p->name, "onMode"); case IRC_EVENT_NAMES: - return irc_rule_matchlist(&irc.rules, ev->server->name, + return irc_rule_matchlist(irc.rules, ev->server->name, ev->names.channel, NULL, p->name, "onNames"); case IRC_EVENT_NICK: - return irc_rule_matchlist(&irc.rules, ev->server->name, + return irc_rule_matchlist(irc.rules, ev->server->name, NULL, ev->nick.origin, p->name, "onNick"); case IRC_EVENT_NOTICE: - return irc_rule_matchlist(&irc.rules, ev->server->name, + return irc_rule_matchlist(irc.rules, ev->server->name, ev->notice.channel, ev->notice.origin, p->name, "onNotice"); case IRC_EVENT_PART: - return irc_rule_matchlist(&irc.rules, ev->server->name, + return irc_rule_matchlist(irc.rules, ev->server->name, ev->part.channel, ev->part.origin, p->name, "onPart"); case IRC_EVENT_TOPIC: - return irc_rule_matchlist(&irc.rules, ev->server->name, + return irc_rule_matchlist(irc.rules, ev->server->name, ev->topic.channel, ev->topic.origin, p->name, "onTopic"); case IRC_EVENT_WHOIS: - return irc_rule_matchlist(&irc.rules, ev->server->name, + return irc_rule_matchlist(irc.rules, ev->server->name, NULL, NULL, p->name, "onWhois"); default: return 1; @@ -442,16 +442,16 @@ assert(rule); if (index == 0) - TAILQ_INSERT_HEAD(&irc.rules, rule, link); + DL_PREPEND(irc.rules, rule); else if (index >= irc_bot_rule_size()) - TAILQ_INSERT_TAIL(&irc.rules, rule, link); + DL_APPEND(irc.rules, rule); else { struct irc_rule *pos; - for (pos = TAILQ_FIRST(&irc.rules); --index; ) - pos = TAILQ_NEXT(pos, link); + for (pos = irc.rules; --index; ) + pos = pos->next; - TAILQ_INSERT_AFTER(&irc.rules, pos, rule, link); + DL_APPEND_ELEM(irc.rules, pos, rule); } } @@ -462,8 +462,8 @@ struct irc_rule *rule; - for (rule = TAILQ_FIRST(&irc.rules); index-- != 0; ) - rule = TAILQ_NEXT(rule, link); + for (rule = irc.rules; index-- != 0; ) + rule = rule->next; return rule; } @@ -478,20 +478,20 @@ if (from == to) return; - f = t = TAILQ_FIRST(&irc.rules); + f = t = irc.rules; while (from--) - f = TAILQ_NEXT(f, link); + f = f->next; - TAILQ_REMOVE(&irc.rules, f, link); + DL_DELETE(irc.rules, f); if (to == 0) - TAILQ_INSERT_HEAD(&irc.rules, f, link); + DL_PREPEND(irc.rules, f); else { - while (TAILQ_NEXT(t, link) && to--) - t = TAILQ_NEXT(t, link); + while (t && to--) + t = t->next; - TAILQ_INSERT_AFTER(&irc.rules, t, f, link); + DL_APPEND_ELEM(irc.rules, t, f); } } @@ -500,12 +500,12 @@ { assert(index < irc_bot_rule_size()); - struct irc_rule *pos = TAILQ_FIRST(&irc.rules); + struct irc_rule *pos = irc.rules; for (size_t i = 0; i < index; ++i) - pos = TAILQ_NEXT(pos, link); + pos = pos->next; - TAILQ_REMOVE(&irc.rules, pos, link); + DL_DELETE(irc.rules, pos); } size_t @@ -514,7 +514,7 @@ const struct irc_rule *r; size_t total = 0; - TAILQ_FOREACH(r, &irc.rules, link) + DL_FOREACH(irc.rules, r) total++; return total; @@ -525,9 +525,10 @@ { struct irc_rule *r, *tmp; - TAILQ_FOREACH_SAFE(r, &irc.rules, link, tmp) + DL_FOREACH_SAFE(irc.rules, r, tmp) irc_rule_finish(r); - TAILQ_INIT(&irc.rules); + + irc.rules = NULL; } void diff -r beb61243cf6d -r e9b35306f376 lib/irccd/irccd.h --- a/lib/irccd/irccd.h Mon Jul 12 21:20:31 2021 +0200 +++ b/lib/irccd/irccd.h Mon Jul 12 21:28:17 2021 +0200 @@ -34,7 +34,7 @@ struct irc_server_list servers; struct irc_plugin *plugins; struct irc_plugin_loader *plugin_loaders; - struct irc_rule_list rules; + struct irc_rule *rules; struct irc_hook *hooks; } irc; diff -r beb61243cf6d -r e9b35306f376 lib/irccd/rule.c --- a/lib/irccd/rule.c Mon Jul 12 21:20:31 2021 +0200 +++ b/lib/irccd/rule.c Mon Jul 12 21:28:17 2021 +0200 @@ -24,6 +24,8 @@ #include #include +#include + #include "rule.h" #include "util.h" @@ -139,7 +141,7 @@ } int -irc_rule_matchlist(const struct irc_rule_list *rules, +irc_rule_matchlist(const struct irc_rule *rules, const char *server, const char *channel, const char *origin, @@ -147,9 +149,9 @@ const char *event) { int result = 1; - struct irc_rule *r; + const struct irc_rule *r; - TAILQ_FOREACH(r, rules, link) + DL_FOREACH(rules, r) if (irc_rule_match(r, server, channel, origin, plugin, event)) result = r->action == IRC_RULE_ACCEPT; diff -r beb61243cf6d -r e9b35306f376 lib/irccd/rule.h --- a/lib/irccd/rule.h Mon Jul 12 21:20:31 2021 +0200 +++ b/lib/irccd/rule.h Mon Jul 12 21:28:17 2021 +0200 @@ -19,8 +19,6 @@ #ifndef IRCCD_RULE_H #define IRCCD_RULE_H -#include - #include "limits.h" #if defined(__cplusplus) @@ -39,11 +37,10 @@ char origins[IRC_RULE_LEN]; char plugins[IRC_RULE_LEN]; char events[IRC_RULE_LEN]; - TAILQ_ENTRY(irc_rule) link; + struct irc_rule *next; + struct irc_rule *prev; }; -TAILQ_HEAD(irc_rule_list, irc_rule); - struct irc_rule * irc_rule_new(enum irc_rule_action); @@ -62,7 +59,7 @@ const char *); int -irc_rule_matchlist(const struct irc_rule_list *, +irc_rule_matchlist(const struct irc_rule *, const char *, const char *, const char *, diff -r beb61243cf6d -r e9b35306f376 tests/test-rule.c --- a/tests/test-rule.c Mon Jul 12 21:20:31 2021 +0200 +++ b/tests/test-rule.c Mon Jul 12 21:28:17 2021 +0200 @@ -44,9 +44,9 @@ irc_bot_rule_insert(r1, 0); irc_bot_rule_insert(r2, 0); - r = TAILQ_FIRST(&irc.rules); + r = irc.rules; GREATEST_ASSERT_EQ(r2, r); - r = TAILQ_NEXT(r, link); + r = r->next; GREATEST_ASSERT_EQ(r1, r); GREATEST_PASS(); @@ -70,17 +70,17 @@ irc_bot_rule_insert(r3, -1); irc_bot_rule_remove(1); - r = TAILQ_FIRST(&irc.rules); + r = irc.rules; GREATEST_ASSERT_EQ(r1, r); - r = TAILQ_NEXT(r, link); + r = r->next; GREATEST_ASSERT_EQ(r3, r); irc_bot_rule_remove(1); - r = TAILQ_FIRST(&irc.rules); + r = irc.rules; GREATEST_ASSERT_EQ(r1, r); irc_bot_rule_remove(0); - r = TAILQ_FIRST(&irc.rules); + r = irc.rules; GREATEST_ASSERT(!r); GREATEST_PASS(); @@ -249,19 +249,19 @@ solve_match7(void) { /* Allowed */ - GREATEST_ASSERT(irc_rule_matchlist(&irc.rules, "malikania", "#staff", "", "a", "onMessage")); + GREATEST_ASSERT(irc_rule_matchlist(irc.rules, "malikania", "#staff", "", "a", "onMessage")); /* Allowed */ - GREATEST_ASSERT(irc_rule_matchlist(&irc.rules, "freenode", "#staff", "", "b", "onTopic")); + GREATEST_ASSERT(irc_rule_matchlist(irc.rules, "freenode", "#staff", "", "b", "onTopic")); /* Not allowed */ - GREATEST_ASSERT(!irc_rule_matchlist(&irc.rules, "malikania", "#staff", "", "", "onCommand")); + GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, "malikania", "#staff", "", "", "onCommand")); /* Not allowed */ - GREATEST_ASSERT(!irc_rule_matchlist(&irc.rules, "freenode", "#staff", "", "c", "onCommand")); + GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, "freenode", "#staff", "", "c", "onCommand")); /* Allowed */ - GREATEST_ASSERT(irc_rule_matchlist(&irc.rules, "unsafe", "#staff", "", "c", "onCommand")); + GREATEST_ASSERT(irc_rule_matchlist(irc.rules, "unsafe", "#staff", "", "c", "onCommand")); GREATEST_PASS(); } @@ -270,29 +270,29 @@ solve_match8(void) { /* Allowed */ - GREATEST_ASSERT(irc_rule_matchlist(&irc.rules, "malikania", "#games", "", "game", "onMessage")); + GREATEST_ASSERT(irc_rule_matchlist(irc.rules, "malikania", "#games", "", "game", "onMessage")); /* Allowed */ - GREATEST_ASSERT(irc_rule_matchlist(&irc.rules, "localhost", "#games", "", "game", "onMessage")); + GREATEST_ASSERT(irc_rule_matchlist(irc.rules, "localhost", "#games", "", "game", "onMessage")); /* Allowed */ - GREATEST_ASSERT(irc_rule_matchlist(&irc.rules, "malikania", "#games", "", "game", "onCommand")); + GREATEST_ASSERT(irc_rule_matchlist(irc.rules, "malikania", "#games", "", "game", "onCommand")); /* Not allowed */ - GREATEST_ASSERT(!irc_rule_matchlist(&irc.rules, "malikania", "#games", "", "game", "onQuery")); + GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, "malikania", "#games", "", "game", "onQuery")); /* Not allowed */ - GREATEST_ASSERT(!irc_rule_matchlist(&irc.rules, "freenode", "#no", "", "game", "onMessage")); + GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, "freenode", "#no", "", "game", "onMessage")); /* Not allowed */ - GREATEST_ASSERT(!irc_rule_matchlist(&irc.rules, "malikania", "#test", "", "game", "onMessage")); + GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, "malikania", "#test", "", "game", "onMessage")); GREATEST_PASS(); } GREATEST_TEST solve_match9(void) { - GREATEST_ASSERT(!irc_rule_matchlist(&irc.rules, "MALIKANIA", "#STAFF", "", "SYSTEM", "onCommand")); + GREATEST_ASSERT(!irc_rule_matchlist(irc.rules, "MALIKANIA", "#STAFF", "", "SYSTEM", "onCommand")); GREATEST_PASS(); }