From 5ce0d46739e379a84d37deb886f1a444dcd825a0 Mon Sep 17 00:00:00 2001 From: Egor Date: Fri, 27 May 2022 23:49:41 +0300 Subject: [PATCH] add +0 chanmode for viewing all lists --- irc.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/irc.c b/irc.c index f1a1b88..3f01dde 100644 --- a/irc.c +++ b/irc.c @@ -618,35 +618,40 @@ int processPacket(struct client_data *client, char *source, char *command, int a return 0; // TODO: error if (argc == 2) { // Type A channel modes struct trie_find *f = NULL; - if (!strcmp(args[1], "+b") || !strcmp(args[1], "b")) { + int all = !strcmp(args[1], "+0"); + if (all) { + rpl_channelmodeis(client, chan), sendbuf(client); + rpl_creationtime(client, chan), sendbuf(client); + } + if (all || !strcmp(args[1], "+b") || !strcmp(args[1], "b")) { if (trie_findfirst(&f, &chan->listb) == 1) do { rpl_banlist(client, chan, f->key), sendbuf(client); } while(trie_findnext(&f) == 1); return rpl_endofbanlist(client, chan), sendbuf(client), 0; } - if (!strcmp(args[1], "+e") || !strcmp(args[1], "e")) { + if (all || !strcmp(args[1], "+e") || !strcmp(args[1], "e")) { if (trie_findfirst(&f, &chan->liste) == 1) do { rpl_exceptlist(client, chan, f->key), sendbuf(client); } while(trie_findnext(&f) == 1); return rpl_endofexceptlist(client, chan), sendbuf(client), 0; } - if (!strcmp(args[1], "+I") || !strcmp(args[1], "I")) { + if (all || !strcmp(args[1], "+I") || !strcmp(args[1], "I")) { if (trie_findfirst(&f, &chan->listI) == 1) do { rpl_invexlist(client, chan, f->key), sendbuf(client); } while(trie_findnext(&f) == 1); return rpl_endofinvexlist(client, chan), sendbuf(client), 0; } - if (!strcmp(args[1], "+q") || !strcmp(args[1], "q")) { + if (all || !strcmp(args[1], "+q") || !strcmp(args[1], "q")) { if (trie_findfirst(&f, &chan->listq) == 1) do { rpl_quietlist(client, chan, f->key), sendbuf(client); } while(trie_findnext(&f) == 1); return rpl_endofquietlist(client, chan), sendbuf(client), 0; } - if (!strcmp(args[1], "+w") || !strcmp(args[1], "w")) { + if (all || !strcmp(args[1], "+w") || !strcmp(args[1], "w")) { if (trie_findfirst(&f, &chan->listwo) == 1) do { rpl_accesslist(client, chan, 'o', f->key), sendbuf(client); -- 2.56.0