summaryrefslogtreecommitdiff
path: root/general_network.c
diff options
context:
space:
mode:
Diffstat (limited to 'general_network.c')
-rw-r--r--general_network.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/general_network.c b/general_network.c
index 63d3d7d..9da36ce 100644
--- a/general_network.c
+++ b/general_network.c
@@ -27,11 +27,60 @@
// OTHER DEALINGS IN THE SOFTWARE.
#include <string.h>
+#include <limits.h>
#include "network.h"
#include "tls.h"
#include "config.h"
+char channel_mode_types[UCHAR_MAX] = {
+ ['v'] = MODE_TYPE_USERS,
+ ['h'] = MODE_TYPE_USERS,
+ ['o'] = MODE_TYPE_USERS,
+ ['a'] = MODE_TYPE_USERS,
+ ['q'] = MODE_TYPE_USERS,
+ ['b'] = MODE_TYPE_MULTIPLE,
+ ['e'] = MODE_TYPE_MULTIPLE,
+ ['I'] = MODE_TYPE_MULTIPLE,
+ ['c'] = MODE_TYPE_NOARGS,
+ ['d'] = MODE_TYPE_REPLACE,
+ ['f'] = MODE_TYPE_REPLACE,
+ ['g'] = MODE_TYPE_MULTIPLE,
+ ['i'] = MODE_TYPE_NOARGS,
+ ['j'] = MODE_TYPE_REPLACE,
+ ['k'] = MODE_TYPE_REPLACE,
+ ['l'] = MODE_TYPE_REPLACE,
+ ['m'] = MODE_TYPE_NOARGS,
+ ['n'] = MODE_TYPE_NOARGS,
+ ['p'] = MODE_TYPE_NOARGS,
+ ['r'] = MODE_TYPE_NOARGS,
+ ['s'] = MODE_TYPE_NOARGS,
+ ['t'] = MODE_TYPE_NOARGS,
+ ['u'] = MODE_TYPE_NOARGS,
+ ['w'] = MODE_TYPE_MULTIPLE,
+ ['z'] = MODE_TYPE_NOARGS,
+ ['A'] = MODE_TYPE_NOARGS,
+ ['B'] = MODE_TYPE_NOARGS,
+ ['C'] = MODE_TYPE_NOARGS,
+ ['D'] = MODE_TYPE_NOARGS,
+ ['E'] = MODE_TYPE_REPLACE,
+ ['F'] = MODE_TYPE_REPLACE,
+ ['G'] = MODE_TYPE_NOARGS,
+ ['H'] = MODE_TYPE_REPLACE,
+ ['J'] = MODE_TYPE_REPLACE,
+ ['K'] = MODE_TYPE_NOARGS,
+ ['L'] = MODE_TYPE_REPLACE,
+ ['M'] = MODE_TYPE_NOARGS,
+ ['N'] = MODE_TYPE_NOARGS,
+ ['O'] = MODE_TYPE_NOARGS,
+ ['P'] = MODE_TYPE_NOARGS,
+ ['Q'] = MODE_TYPE_NOARGS,
+ ['R'] = MODE_TYPE_NOARGS,
+ ['S'] = MODE_TYPE_NOARGS,
+ ['T'] = MODE_TYPE_NOARGS,
+ ['X'] = MODE_TYPE_MULTIPLE,
+};
+
int PRIVMSG(struct string source, struct string target, struct string message) {
if (!(target.len == 9 && memcmp(target.data, "1HC000001", 9) == 0)) { // if not sending to our one local user
if (source.len != 0) {