diff options
author | Přemysl Janouch <p.janouch@gmail.com> | 2015-07-09 01:28:52 +0200 |
---|---|---|
committer | Přemysl Janouch <p.janouch@gmail.com> | 2015-07-09 01:36:19 +0200 |
commit | f57cc7923db6698fb7bb7a906da52cf3b952a15c (patch) | |
tree | f8845fbe3002b3fb181a95d9e3c3a3ab5190ce78 /degesch.c | |
parent | 1ba6db50b6004417108aeb451f07cabb9299c841 (diff) | |
download | xK-f57cc7923db6698fb7bb7a906da52cf3b952a15c.tar.gz xK-f57cc7923db6698fb7bb7a906da52cf3b952a15c.tar.xz xK-f57cc7923db6698fb7bb7a906da52cf3b952a15c.zip |
degesch: clean up irc_handle_irc_isupport()
Diffstat (limited to 'degesch.c')
-rw-r--r-- | degesch.c | 38 |
1 files changed, 19 insertions, 19 deletions
@@ -5764,6 +5764,24 @@ unescape_isupport_value (const char *value, struct str *output) } static void +dispatch_isupport (struct server *s, const char *name, char *value) +{ +#define MATCH(from, to) if (!strcmp (name, (from))) { (to) (s, value); return; } + + // TODO: also make use of TARGMAX to split client commands as necessary + + MATCH ("PREFIX", irc_handle_isupport_prefix); + MATCH ("CASEMAPPING", irc_handle_isupport_casemapping); + MATCH ("CHANTYPES", irc_handle_isupport_chantypes); + MATCH ("IDCHAN", irc_handle_isupport_idchan); + MATCH ("STATUSMSG", irc_handle_isupport_statusmsg); + MATCH ("CHANMODES", irc_handle_isupport_chanmodes); + MATCH ("MODES", irc_handle_isupport_modes); + +#undef MATCH +} + +static void irc_handle_rpl_isupport (struct server *s, const struct irc_message *msg) { if (msg->params.len < 2) @@ -5779,25 +5797,7 @@ irc_handle_rpl_isupport (struct server *s, const struct irc_message *msg) struct str value_unescaped; str_init (&value_unescaped); unescape_isupport_value (value, &value_unescaped); - - if (!strcmp (param, "PREFIX")) - irc_handle_isupport_prefix (s, value_unescaped.str); - else if (!strcmp (param, "CASEMAPPING")) - irc_handle_isupport_casemapping (s, value_unescaped.str); - else if (!strcmp (param, "CHANTYPES")) - irc_handle_isupport_chantypes (s, value_unescaped.str); - else if (!strcmp (param, "IDCHAN")) - irc_handle_isupport_idchan (s, value_unescaped.str); - else if (!strcmp (param, "STATUSMSG")) - irc_handle_isupport_statusmsg (s, value_unescaped.str); - else if (!strcmp (param, "CHANMODES")) - irc_handle_isupport_chanmodes (s, value_unescaped.str); - else if (!strcmp (param, "MODES")) - irc_handle_isupport_modes (s, value_unescaped.str); - - // TODO: also parse TARGMAX and make use of it - // to split client commands as necessary - + dispatch_isupport (s, param, value_unescaped.str); str_free (&value_unescaped); } } |