summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Helleu <flashcode@flashtux.org>2010-05-22 10:51:43 +0200
committerSebastien Helleu <flashcode@flashtux.org>2010-05-22 10:51:43 +0200
commit2dee40dd1a7c0cca2adb262e32d92791abd37fa8 (patch)
tree5c469c1c4e21bed153589b5b32fe11749267cb9c
parent6253e3ac375b9203cf232329069cbd695a7ded5a (diff)
downloadweechat-2dee40dd1a7c0cca2adb262e32d92791abd37fa8.zip
Add isupport value in IRC servers (content of IRC message 005), with new infos: irc_server_isupport and irc_server_isupport_value
-rw-r--r--ChangeLog4
-rw-r--r--doc/en/autogen/plugin_api/infos.txt4
-rw-r--r--doc/fr/autogen/plugin_api/infos.txt4
-rw-r--r--doc/it/autogen/plugin_api/infos.txt4
-rw-r--r--po/cs.po12
-rw-r--r--po/de.po12
-rw-r--r--po/es.po12
-rw-r--r--po/fr.po14
-rw-r--r--po/hu.po12
-rw-r--r--po/it.po12
-rw-r--r--po/pl.po12
-rw-r--r--po/ru.po12
-rw-r--r--po/weechat.pot11
-rw-r--r--src/plugins/irc/irc-info.c48
-rw-r--r--src/plugins/irc/irc-protocol.c33
-rw-r--r--src/plugins/irc/irc-server.c62
-rw-r--r--src/plugins/irc/irc-server.h3
-rw-r--r--src/plugins/irc/irc-upgrade.c3
18 files changed, 260 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index d303db919..d2db628bb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,7 @@
WeeChat ChangeLog
=================
FlashCode <flashcode@flashtux.org>
-v0.3.3-dev, 2010-05-21
+v0.3.3-dev, 2010-05-22
Version 0.3.3 (under dev!)
@@ -13,6 +13,8 @@ Version 0.3.3 (under dev!)
process)
* api: add function "string_expand_home", fix bug with replacement of home in
paths
+* irc: add isupport value in servers (content of IRC message 005), with new
+ infos: irc_server_isupport and irc_server_isupport_value
* irc: add message in private buffer when nick is back on server after a /quit
* irc: add new options irc.network.autoreconnect_delay_growing and
irc.network.autoreconnect_delay_max (task #10338)
diff --git a/doc/en/autogen/plugin_api/infos.txt b/doc/en/autogen/plugin_api/infos.txt
index c674f7485..815d746b5 100644
--- a/doc/en/autogen/plugin_api/infos.txt
+++ b/doc/en/autogen/plugin_api/infos.txt
@@ -16,6 +16,10 @@
| irc | irc_nick_from_host | get nick from IRC host | IRC host (like `:nick!name@server.com`)
+| irc | irc_server_isupport | 1 if server supports this feature (from IRC message 005) | server,feature
+
+| irc | irc_server_isupport_value | value of feature, if supported by server (from IRC message 005) | server,feature
+
| weechat | charset_internal | WeeChat internal charset | -
| weechat | charset_terminal | terminal charset | -
diff --git a/doc/fr/autogen/plugin_api/infos.txt b/doc/fr/autogen/plugin_api/infos.txt
index 3f7c48121..9267ae291 100644
--- a/doc/fr/autogen/plugin_api/infos.txt
+++ b/doc/fr/autogen/plugin_api/infos.txt
@@ -16,6 +16,10 @@
| irc | irc_nick_from_host | retourne le pseudo à partir d'un host IRC | host IRC (comme `:pseudo!nom@serveur.com`)
+| irc | irc_server_isupport | 1 si le serveur supporte cette fonctionnalité (du message IRC 005) | serveur,fonctionnalité
+
+| irc | irc_server_isupport_value | valeur de la fonctionnalité, si supportée par le serveur (du message IRC 005) | serveur,fonctionnalité
+
| weechat | charset_internal | charset interne à WeeChat | -
| weechat | charset_terminal | charset du terminal | -
diff --git a/doc/it/autogen/plugin_api/infos.txt b/doc/it/autogen/plugin_api/infos.txt
index 221dec85f..de92aaead 100644
--- a/doc/it/autogen/plugin_api/infos.txt
+++ b/doc/it/autogen/plugin_api/infos.txt
@@ -16,6 +16,10 @@
| irc | irc_nick_from_host | ottiene nick dall'host IRC | host IRC (come `:nick!nome@server.com`)
+| irc | irc_server_isupport | 1 if server supports this feature (from IRC message 005) | server,feature
+
+| irc | irc_server_isupport_value | value of feature, if supported by server (from IRC message 005) | server,feature
+
| weechat | charset_internal | set caratteri interno di WeeChat | -
| weechat | charset_terminal | set caratteri terminale | -
diff --git a/po/cs.po b/po/cs.po
index b892ca1fb..ebe61bf2f 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.3-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2010-05-21 18:07+0200\n"
+"POT-Creation-Date: 2010-05-22 09:52+0200\n"
"PO-Revision-Date: 2010-05-20 12:20+0200\n"
"Last-Translator: Jiri Golembiovsky <golemj@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -4686,6 +4686,16 @@ msgstr "získat ukazatel bufferu pro IRC server/kanál/přezdívku"
msgid "server,channel,nick (channel and nicks are optional)"
msgstr "server,kanál,přezdívka (kanál a přezdívka jsou volitelné)"
+msgid "1 if server supports this feature (from IRC message 005)"
+msgstr ""
+
+#, fuzzy
+msgid "server,feature"
+msgstr "jméno serveru"
+
+msgid "value of feature, if supported by server (from IRC message 005)"
+msgstr ""
+
msgid "list of IRC servers"
msgstr "seznam IRC serverů"
diff --git a/po/de.po b/po/de.po
index c1cb1fe51..ef9ad69c2 100644
--- a/po/de.po
+++ b/po/de.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.3-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2010-05-21 18:07+0200\n"
+"POT-Creation-Date: 2010-05-22 09:52+0200\n"
"PO-Revision-Date: 2010-05-20 12:20+0200\n"
"Last-Translator: Nils G <weechatter@arcor.de>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -4863,6 +4863,16 @@ msgstr "hole Buffer Pointer für einen IRC Server/Channel/Nick"
msgid "server,channel,nick (channel and nicks are optional)"
msgstr "server,channel,nick (Channel und Nicks sind optional)"
+msgid "1 if server supports this feature (from IRC message 005)"
+msgstr ""
+
+#, fuzzy
+msgid "server,feature"
+msgstr "Servername"
+
+msgid "value of feature, if supported by server (from IRC message 005)"
+msgstr ""
+
msgid "list of IRC servers"
msgstr "Liste der IRC-Server"
diff --git a/po/es.po b/po/es.po
index 743baaac4..0d6ac37ae 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.3-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2010-05-21 18:07+0200\n"
+"POT-Creation-Date: 2010-05-22 09:52+0200\n"
"PO-Revision-Date: 2010-05-20 12:31+0200\n"
"Last-Translator: Elián Hanisch <lambdae2@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -4755,6 +4755,16 @@ msgstr "devuelve el puntero del buffer de un servidor/canal/apodo IRC"
msgid "server,channel,nick (channel and nicks are optional)"
msgstr "servidor,canal,apodo (canal y apodo es opcional)"
+msgid "1 if server supports this feature (from IRC message 005)"
+msgstr ""
+
+#, fuzzy
+msgid "server,feature"
+msgstr "nombre del servidor"
+
+msgid "value of feature, if supported by server (from IRC message 005)"
+msgstr ""
+
msgid "list of IRC servers"
msgstr "lista de servidores IRC"
diff --git a/po/fr.po b/po/fr.po
index 7485066a1..4f99eaf9a 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.3-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2010-05-21 18:07+0200\n"
-"PO-Revision-Date: 2010-05-21 18:08+0200\n"
+"POT-Creation-Date: 2010-05-22 09:52+0200\n"
+"PO-Revision-Date: 2010-05-22 09:53+0200\n"
"Last-Translator: FlashCode <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: French\n"
@@ -4801,6 +4801,16 @@ msgstr "retourne le pointeur vers le tampon pour un serveur/canal/pseudo IRC"
msgid "server,channel,nick (channel and nicks are optional)"
msgstr "serveur,canal,pseudo (canal et pseudo sont optionnels)"
+msgid "1 if server supports this feature (from IRC message 005)"
+msgstr "1 si le serveur supporte cette fonctionnalité (du message IRC 005)"
+
+msgid "server,feature"
+msgstr "serveur,fonctionnalité"
+
+msgid "value of feature, if supported by server (from IRC message 005)"
+msgstr ""
+"valeur de la fonctionnalité, si supportée par le serveur (du message IRC 005)"
+
msgid "list of IRC servers"
msgstr "liste des serveurs IRC"
diff --git a/po/hu.po b/po/hu.po
index 4a5ccdc2c..7dd7e3d81 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.3-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2010-05-21 18:07+0200\n"
+"POT-Creation-Date: 2010-05-22 09:52+0200\n"
"PO-Revision-Date: 2010-05-20 12:20+0200\n"
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -4508,6 +4508,16 @@ msgstr "szobák listája ahová be akarunk lépni csatlakozás után"
msgid "server,channel,nick (channel and nicks are optional)"
msgstr ""
+msgid "1 if server supports this feature (from IRC message 005)"
+msgstr ""
+
+#, fuzzy
+msgid "server,feature"
+msgstr "cél: szerver neve"
+
+msgid "value of feature, if supported by server (from IRC message 005)"
+msgstr ""
+
#, fuzzy
msgid "list of IRC servers"
msgstr "IRC szerver portja"
diff --git a/po/it.po b/po/it.po
index 660282b21..e007d17db 100644
--- a/po/it.po
+++ b/po/it.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Weechat 0.3.3-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2010-05-21 18:07+0200\n"
+"POT-Creation-Date: 2010-05-22 09:52+0200\n"
"PO-Revision-Date: 2010-05-20 12:26+0200\n"
"Last-Translator: Marco Paolone <marcopaolone@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -4762,6 +4762,16 @@ msgstr "ottiene puntatore al buffer per un server/canale/nick IRC"
msgid "server,channel,nick (channel and nicks are optional)"
msgstr "server,canale,nick (canale e nick sono opzionali)"
+msgid "1 if server supports this feature (from IRC message 005)"
+msgstr ""
+
+#, fuzzy
+msgid "server,feature"
+msgstr "nome server"
+
+msgid "value of feature, if supported by server (from IRC message 005)"
+msgstr ""
+
msgid "list of IRC servers"
msgstr "elenco di server IRC"
diff --git a/po/pl.po b/po/pl.po
index 236f89a53..bf6c6b580 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.3-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2010-05-21 18:07+0200\n"
+"POT-Creation-Date: 2010-05-22 09:52+0200\n"
"PO-Revision-Date: 2010-05-20 12:22+0200\n"
"Last-Translator: Krzysztof Koroscik <soltys@szluug.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -4735,6 +4735,16 @@ msgstr "pobiera wskaźnik dla serwera/kanału/nicku IRC"
msgid "server,channel,nick (channel and nicks are optional)"
msgstr "serwer,kanał,nick (kanał oraz nick są opcjonalne)"
+msgid "1 if server supports this feature (from IRC message 005)"
+msgstr ""
+
+#, fuzzy
+msgid "server,feature"
+msgstr "nazwa srwera"
+
+msgid "value of feature, if supported by server (from IRC message 005)"
+msgstr ""
+
msgid "list of IRC servers"
msgstr "lista serwerów IRC"
diff --git a/po/ru.po b/po/ru.po
index c066cd5e6..30c386684 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.3-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2010-05-21 18:07+0200\n"
+"POT-Creation-Date: 2010-05-22 09:52+0200\n"
"PO-Revision-Date: 2010-05-20 12:22+0200\n"
"Last-Translator: Pavel Shevchuk <stlwrt@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -4509,6 +4509,16 @@ msgstr "Список каналов, на которые заходить при
msgid "server,channel,nick (channel and nicks are optional)"
msgstr ""
+msgid "1 if server supports this feature (from IRC message 005)"
+msgstr ""
+
+#, fuzzy
+msgid "server,feature"
+msgstr "цель: название сервера"
+
+msgid "value of feature, if supported by server (from IRC message 005)"
+msgstr ""
+
#, fuzzy
msgid "list of IRC servers"
msgstr "порт IRC сервера"
diff --git a/po/weechat.pot b/po/weechat.pot
index 5d8495d73..1a632c655 100644
--- a/po/weechat.pot
+++ b/po/weechat.pot
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2010-05-21 18:07+0200\n"
+"POT-Creation-Date: 2010-05-22 09:52+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -3859,6 +3859,15 @@ msgstr ""
msgid "server,channel,nick (channel and nicks are optional)"
msgstr ""
+msgid "1 if server supports this feature (from IRC message 005)"
+msgstr ""
+
+msgid "server,feature"
+msgstr ""
+
+msgid "value of feature, if supported by server (from IRC message 005)"
+msgstr ""
+
msgid "list of IRC servers"
msgstr ""
diff --git a/src/plugins/irc/irc-info.c b/src/plugins/irc/irc-info.c
index 54496830b..0e437a37b 100644
--- a/src/plugins/irc/irc-info.c
+++ b/src/plugins/irc/irc-info.c
@@ -67,7 +67,7 @@ irc_info_get_info_cb (void *data, const char *info_name,
const char *arguments)
{
char *pos_comma, *pos_comma2, *server, *channel, *host;
- const char *nick;
+ const char *nick, *isupport_value;
static char str_true[2] = "1";
struct t_irc_server *ptr_server;
struct t_irc_channel *ptr_channel;
@@ -180,6 +180,46 @@ irc_info_get_info_cb (void *data, const char *info_name,
}
}
}
+ else if (weechat_strcasecmp (info_name, "irc_server_isupport") == 0)
+ {
+ isupport_value = NULL;
+ pos_comma = strchr (arguments, ',');
+ if (pos_comma)
+ {
+ server = weechat_strndup (arguments, pos_comma - arguments);
+ if (server)
+ {
+ ptr_server = irc_server_search (server);
+ if (ptr_server)
+ {
+ isupport_value = irc_server_get_isupport_value (ptr_server,
+ pos_comma + 1);
+ }
+ }
+ }
+ if (isupport_value)
+ return str_true;
+ return NULL;
+ }
+ else if (weechat_strcasecmp (info_name, "irc_server_isupport_value") == 0)
+ {
+ isupport_value = NULL;
+ pos_comma = strchr (arguments, ',');
+ if (pos_comma)
+ {
+ server = weechat_strndup (arguments, pos_comma - arguments);
+ if (server)
+ {
+ ptr_server = irc_server_search (server);
+ if (ptr_server)
+ {
+ isupport_value = irc_server_get_isupport_value (ptr_server,
+ pos_comma + 1);
+ }
+ }
+ }
+ return isupport_value;
+ }
return NULL;
}
@@ -422,6 +462,12 @@ irc_info_init ()
weechat_hook_info ("irc_buffer", N_("get buffer pointer for an IRC server/channel/nick"),
N_("server,channel,nick (channel and nicks are optional)"),
&irc_info_get_info_cb, NULL);
+ weechat_hook_info ("irc_server_isupport", N_("1 if server supports this feature (from IRC message 005)"),
+ N_("server,feature"),
+ &irc_info_get_info_cb, NULL);
+ weechat_hook_info ("irc_server_isupport_value", N_("value of feature, if supported by server (from IRC message 005)"),
+ N_("server,feature"),
+ &irc_info_get_info_cb, NULL);
/* infolist hooks */
weechat_hook_infolist ("irc_server", N_("list of IRC servers"),
diff --git a/src/plugins/irc/irc-protocol.c b/src/plugins/irc/irc-protocol.c
index b562ffe70..2dc44bcfb 100644
--- a/src/plugins/irc/irc-protocol.c
+++ b/src/plugins/irc/irc-protocol.c
@@ -1868,7 +1868,8 @@ IRC_PROTOCOL_CALLBACK(001)
IRC_PROTOCOL_CALLBACK(005)
{
- char *pos, *pos2;
+ char *pos, *pos2, *pos_start;
+ int length_isupport, length;
/*
* 005 message looks like:
@@ -1883,7 +1884,8 @@ IRC_PROTOCOL_CALLBACK(005)
irc_protocol_cb_numeric (server,
nick, address, host, command,
ignored, argc, argv, argv_eol);
-
+
+ /* save prefix */
pos = strstr (argv_eol[3], "PREFIX=");
if (pos)
{
@@ -1898,6 +1900,33 @@ IRC_PROTOCOL_CALLBACK(005)
pos2[0] = ' ';
}
+ /* save whole message (concatenate to existing isupport, if any) */
+ pos_start = NULL;
+ pos = strstr (argv_eol[3], " :");
+ length = (pos) ? pos - argv_eol[3] : (int)strlen (argv_eol[3]);
+ if (server->isupport)
+ {
+ length_isupport = strlen (server->isupport);
+ server->isupport = realloc (server->isupport,
+ length_isupport + /* existing */
+ 1 + length + 1); /* new */
+ if (server->isupport)
+ pos_start = server->isupport + length_isupport;
+ }
+ else
+ {
+ server->isupport = malloc (1 + length + 1);
+ if (server->isupport)
+ pos_start = server->isupport;
+ }
+
+ if (pos_start)
+ {
+ pos_start[0] = ' ';
+ memcpy (pos_start + 1, argv_eol[3], length);
+ pos_start[length + 1] = '\0';
+ }
+
return WEECHAT_RC_OK;
}
diff --git a/src/plugins/irc/irc-server.c b/src/plugins/irc/irc-server.c
index c14d697dd..50a0cfa58 100644
--- a/src/plugins/irc/irc-server.c
+++ b/src/plugins/irc/irc-server.c
@@ -298,6 +298,57 @@ irc_server_get_nick_index (struct t_irc_server *server)
}
/*
+ * irc_server_get_isupport_value: return value of an item in "isupport" (copy
+ * of IRC message 005)
+ * if featureis found but has no value, empty
+ * string is returned
+ * if feature is not found, NULL is returned
+ */
+
+const char *
+irc_server_get_isupport_value (struct t_irc_server *server, const char *feature)
+{
+ char feature2[64], *pos_feature, *pos_equal, *pos_space;
+ int length;
+ static char value[256];
+
+ if (!server || !server->isupport || !feature)
+ return NULL;
+
+ /* search feature with value */
+ snprintf (feature2, sizeof (feature2), " %s=", feature);
+ pos_feature = strstr (server->isupport, feature2);
+ if (pos_feature)
+ {
+ /* feature found with value, return value */
+ pos_feature++;
+ pos_equal = strchr (pos_feature, '=');
+ pos_space = strchr (pos_feature, ' ');
+ if (pos_space)
+ length = pos_space - pos_equal - 1;
+ else
+ length = strlen (pos_equal) + 1;
+ if (length > (int)sizeof (value) - 1)
+ length = (int)sizeof (value) - 1;
+ memcpy (value, pos_equal + 1, length);
+ value[length] = '\0';
+ return value;
+ }
+
+ /* search feature without value */
+ feature2[strlen (feature2) - 1] = ' ';
+ pos_feature = strstr (server->isupport, feature2);
+ if (pos_feature)
+ {
+ value[0] = '\0';
+ return value;
+ }
+
+ /* feature not found in isupport */
+ return NULL;
+}
+
+/*
* irc_server_alloc: allocate a new server and add it to the servers queue
*/
@@ -355,6 +406,7 @@ irc_server_alloc (const char *name)
new_server->nick_first_tried = 0;
new_server->nick = NULL;
new_server->nick_modes = NULL;
+ new_server->isupport = NULL;
new_server->prefix = NULL;
new_server->reconnect_delay = 0;
new_server->reconnect_start = 0;
@@ -754,6 +806,8 @@ irc_server_free_data (struct t_irc_server *server)
free (server->nick);
if (server->nick_modes)
free (server->nick_modes);
+ if (server->isupport)
+ free (server->isupport);
if (server->prefix)
free (server->prefix);
if (server->away_message)
@@ -2965,6 +3019,11 @@ irc_server_disconnect (struct t_irc_server *server, int reconnect)
server->nick_modes = NULL;
weechat_bar_item_update ("input_prompt");
}
+ if (server->isupport)
+ {
+ free (server->isupport);
+ server->isupport = NULL;
+ }
if (server->prefix)
{
free (server->prefix);
@@ -3553,6 +3612,8 @@ irc_server_add_to_infolist (struct t_infolist *infolist,
return 0;
if (!weechat_infolist_new_var_string (ptr_item, "nick_modes", server->nick_modes))
return 0;
+ if (!weechat_infolist_new_var_string (ptr_item, "isupport", server->isupport))
+ return 0;
if (!weechat_infolist_new_var_string (ptr_item, "prefix", server->prefix))
return 0;
if (!weechat_infolist_new_var_integer (ptr_item, "reconnect_delay", server->reconnect_delay))
@@ -3791,6 +3852,7 @@ irc_server_print_log ()
weechat_log_printf (" nick_first_tried . . : %d", ptr_server->nick_first_tried);
weechat_log_printf (" nick . . . . . . . . : '%s'", ptr_server->nick);
weechat_log_printf (" nick_modes . . . . . : '%s'", ptr_server->nick_modes);
+ weechat_log_printf (" isupport . . . . . . : '%s'", ptr_server->isupport);
weechat_log_printf (" prefix . . . . . . . : '%s'", ptr_server->prefix);
weechat_log_printf (" reconnect_delay. . . : %d", ptr_server->reconnect_delay);
weechat_log_printf (" reconnect_start. . . : %ld", ptr_server->reconnect_start);
diff --git a/src/plugins/irc/irc-server.h b/src/plugins/irc/irc-server.h
index adf3e4f2f..9e202bf80 100644
--- a/src/plugins/irc/irc-server.h
+++ b/src/plugins/irc/irc-server.h
@@ -137,6 +137,7 @@ struct t_irc_server
/* when (re-)connecting to server */
char *nick; /* current nickname */
char *nick_modes; /* nick modes */
+ char *isupport; /* copy of message 005 (ISUPPORT) */
char *prefix; /* nick prefix allowed (from msg 005) */
int reconnect_delay; /* current reconnect delay (growing) */
time_t reconnect_start; /* this time + delay = reconnect time */
@@ -190,6 +191,8 @@ extern void irc_server_set_addresses (struct t_irc_server *server,
extern void irc_server_set_nicks (struct t_irc_server *server, const char *nicks);
extern void irc_server_set_nick (struct t_irc_server *server, const char *nick);
extern int irc_server_get_nick_index (struct t_irc_server *server);
+extern const char *irc_server_get_isupport_value (struct t_irc_server *server,
+ const char *feature);
extern struct t_irc_server *irc_server_alloc (const char *name);
extern int irc_server_alloc_with_url (const char *irc_url);
extern void irc_server_apply_command_line_options (struct t_irc_server *server,
diff --git a/src/plugins/irc/irc-upgrade.c b/src/plugins/irc/irc-upgrade.c
index 35ac6c2fb..45cf23f13 100644
--- a/src/plugins/irc/irc-upgrade.c
+++ b/src/plugins/irc/irc-upgrade.c
@@ -253,6 +253,9 @@ irc_upgrade_read_cb (void *data,
str = weechat_infolist_string (infolist, "nick_modes");
if (str)
irc_upgrade_current_server->nick_modes = strdup (str);
+ str = weechat_infolist_string (infolist, "isupport");
+ if (str)
+ irc_upgrade_current_server->isupport = strdup (str);
str = weechat_infolist_string (infolist, "prefix");
if (str)
irc_upgrade_current_server->prefix = strdup (str);