From 1e0753e08bc5fbaa6ec4436b0b47c589cce4abcd Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Sun, 3 Feb 2008 16:12:52 +0100 Subject: [PATCH] Use of many addresses for one IRC server (auto-switch when a connexion fails), nicks are now set with one option "nicks" (task #6088) --- ChangeLog | 4 +- po/cs.po | 47 +++-- po/de.po | 46 +++-- po/es.po | 46 +++-- po/fr.po | 86 +++++---- po/hu.po | 47 +++-- po/ru.po | 47 +++-- po/weechat.pot | 37 ++-- src/plugins/irc/irc-command.c | 56 ++---- src/plugins/irc/irc-config.c | 24 +-- src/plugins/irc/irc-display.c | 6 +- src/plugins/irc/irc-server.c | 354 +++++++++++++++++++++++++--------- src/plugins/irc/irc-server.h | 18 +- 13 files changed, 504 insertions(+), 314 deletions(-) diff --git a/ChangeLog b/ChangeLog index 57b931ff7..90d5c551c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,10 +1,12 @@ WeeChat - Wee Enhanced Environment for Chat =========================================== -ChangeLog - 2008-01-28 +ChangeLog - 2008-02-03 Version 0.2.7 (under dev!): + * use of many addresses for one IRC server (auto-switch when a connexion + fails), nicks are now set with one option "nicks" (task #6088) * fixed bug when switching window, scrollback is now preserved (task #7680) * added group support in nicklist * added backlog option in logger plugin diff --git a/po/cs.po b/po/cs.po index df83c4963..459aba758 100644 --- a/po/cs.po +++ b/po/cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-02-02 23:26+0100\n" +"POT-Creation-Date: 2008-02-03 13:17+0100\n" "PO-Revision-Date: 2007-09-06 12:44+0200\n" "Last-Translator: Jiri Golembiovsky \n" "Language-Team: weechat-dev \n" @@ -2599,11 +2599,11 @@ msgstr "vypíše, přídá nebo odebere servery" #, fuzzy msgid "" -"[list [servername]] | [listfull [servername]] | [add servername hostname [-" -"port port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks " -"nick1,nick2,nick3,...] [-username username] [-realname realname] [-command " -"command] [-autojoin channel[,channel]] ] | [copy servername newservername] | " -"[rename servername newservername] | [keep servername] | [del servername]" +"[list [servername]] | [listfull [servername]] | [add servername hostname[/" +"port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1," +"nick2,...] [-username username] [-realname realname] [-command command] [-" +"autojoin channel[,channel]] ] | [copy servername newservername] | [rename " +"servername newservername] | [keep servername] | [del servername]" msgstr "" "[list [jméno_serveru]] | [listfull [jméno_serveru]] | [add jméno_serveru " "jméno_hosta [-port port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd " @@ -2613,22 +2613,21 @@ msgstr "" "jméno_serveru nové_jméno_serveru] | [keep jméno_serveru] | [del " "jméno_serveru]" +#, fuzzy msgid "" " list: list servers (no parameter implies this list)\n" " listfull: list servers with detailed info for each server\n" " add: create a new server\n" "servername: server name, for internal and display use\n" -" hostname: name or IP address of server\n" -" port: port for server (integer, default is 6667)\n" +" hostname: name or IP address of server, with optional port (default: " +"6667)\n" " temp: create temporary server (not saved in config file)\n" " auto: automatically connect to server when WeeChat starts\n" " noauto: do not connect to server when WeeChat starts (default)\n" " ipv6: use IPv6 protocol\n" " ssl: use SSL protocol\n" " password: password for server\n" -" nick1: first nick for server\n" -" nick2: alternate nick for server\n" -" nick3: second alternate nick for server\n" +"nick1,2,..: nicknames for server\n" " username: user name\n" " realname: real name of user\n" " copy: duplicate a server\n" @@ -3025,11 +3024,9 @@ msgstr "automaticky znovu připojit server, když je odpojen" msgid "delay (in seconds) before trying again to reconnect to server" msgstr "doba (v sekundách) před novým zkušením znovupřipojení na server" -msgid "IP address or hostname of IRC server" -msgstr "IP adresa nebo jeméno hosta IRC serveru" - -msgid "port for connecting to server" -msgstr "port pro připojení na server" +#, fuzzy +msgid "list of IP/port or hostname/port for server (separated by comma)" +msgstr "přezdívka použitá na IRC serveru" msgid "use IPv6 protocol for server communication" msgstr "použít protokol IPv6 pro komunikaci se serverem" @@ -3962,6 +3959,10 @@ msgstr "%s zpoždění je veliké, odpojuji se od serveru...\n" msgid "%s%s: reconnecting to server in %d %s" msgstr "%s: Navazuji nové spojení se serverem za %d sekund\n" +#, fuzzy, c-format +msgid "%s%s: switching address to %s/%d" +msgstr "%s IP adresa nenalezena\n" + #, fuzzy, c-format msgid "%s%s: GnuTLS handshake failed" msgstr "%s handshake s gnutls selhal\n" @@ -4010,19 +4011,19 @@ msgstr "" "GNUtls\n" #, fuzzy, c-format -msgid "%s%s: connecting to server %s:%d%s%s via %s proxy %s:%d%s..." +msgid "%s%s: connecting to server %s/%d%s%s via %s proxy %s/%d%s..." msgstr "%s: připojuji se k serveru %s:%d%s%s přes %s proxy %s:%d%s...\n" #, fuzzy, c-format -msgid "Connecting to server %s:%d%s%s via %s proxy %s:%d%s..." +msgid "Connecting to server %s/%d%s%s via %s proxy %s/%d%s..." msgstr "Připojuji se k serveru %s:%d%s%s přes %s proxy %s:%d%s...\n" #, fuzzy, c-format -msgid "%s%s: connecting to server %s:%d%s%s..." +msgid "%s%s: connecting to server %s/%d%s%s..." msgstr "%s: připojuji se k serveru %s:%d%s%s...\n" #, fuzzy, c-format -msgid "%s: connecting to server %s:%d%s%s..." +msgid "%s: connecting to server %s/%d%s%s..." msgstr "%s: připojuji se k serveru %s:%d%s%s...\n" #, fuzzy, c-format @@ -4328,6 +4329,12 @@ msgstr "" msgid "%s%s: wrong arguments for function \"%s\"" msgstr "%s špatné parametry pro příkaz \"%s\"\n" +#~ msgid "IP address or hostname of IRC server" +#~ msgstr "IP adresa nebo jeméno hosta IRC serveru" + +#~ msgid "port for connecting to server" +#~ msgstr "port pro připojení na server" + #~ msgid "" #~ "alternate nickname to use on IRC server (if nickname is already used)" #~ msgstr "" diff --git a/po/de.po b/po/de.po index f740fa0f4..d8f7f45cf 100644 --- a/po/de.po +++ b/po/de.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-02-02 23:26+0100\n" +"POT-Creation-Date: 2008-02-03 13:17+0100\n" "PO-Revision-Date: 2007-09-06 12:44+0200\n" "Last-Translator: Thomas Schuetz \n" "Language-Team: weechat-dev \n" @@ -2597,11 +2597,11 @@ msgstr "Auflisten, Hinzufügen oder Entfernen von Servern" #, fuzzy msgid "" -"[list [servername]] | [listfull [servername]] | [add servername hostname [-" -"port port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks " -"nick1,nick2,nick3,...] [-username username] [-realname realname] [-command " -"command] [-autojoin channel[,channel]] ] | [copy servername newservername] | " -"[rename servername newservername] | [keep servername] | [del servername]" +"[list [servername]] | [listfull [servername]] | [add servername hostname[/" +"port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1," +"nick2,...] [-username username] [-realname realname] [-command command] [-" +"autojoin channel[,channel]] ] | [copy servername newservername] | [rename " +"servername newservername] | [keep servername] | [del servername]" msgstr "" "[Servername] | [Servername Hostname Port [-auto | -noauto] [-ipv6] [-ssl] [-" "pwd Passwort] [-nicks Nick1 Nick2 Nick3] [-username Benutzername] [-realname " @@ -2613,17 +2613,15 @@ msgid "" " listfull: list servers with detailed info for each server\n" " add: create a new server\n" "servername: server name, for internal and display use\n" -" hostname: name or IP address of server\n" -" port: port for server (integer, default is 6667)\n" +" hostname: name or IP address of server, with optional port (default: " +"6667)\n" " temp: create temporary server (not saved in config file)\n" " auto: automatically connect to server when WeeChat starts\n" " noauto: do not connect to server when WeeChat starts (default)\n" " ipv6: use IPv6 protocol\n" " ssl: use SSL protocol\n" " password: password for server\n" -" nick1: first nick for server\n" -" nick2: alternate nick for server\n" -" nick3: second alternate nick for server\n" +"nick1,2,..: nicknames for server\n" " username: user name\n" " realname: real name of user\n" " copy: duplicate a server\n" @@ -3012,11 +3010,9 @@ msgstr "" "Zeit in Sekunden, die gewartet wird, bevor ein Verbindungsneuaufbau versucht " "wird" -msgid "IP address or hostname of IRC server" -msgstr "IP-Adresse oder Hostname des IRC-Servers" - -msgid "port for connecting to server" -msgstr "Port, auf dem der IRC-Server läuft" +#, fuzzy +msgid "list of IP/port or hostname/port for server (separated by comma)" +msgstr "eigener Nickname, der auf dem IRC-Server benutzt werden soll" msgid "use IPv6 protocol for server communication" msgstr "Server über IPv6 ansprechen" @@ -3954,6 +3950,10 @@ msgstr "%s der Lag ist hoch, die Verbindung wird getrennt...\n" msgid "%s%s: reconnecting to server in %d %s" msgstr "%s: Neuverbinden in %d Sekunden\n" +#, fuzzy, c-format +msgid "%s%s: switching address to %s/%d" +msgstr "%s IP-Adresse nicht gefunden\n" + #, fuzzy, c-format msgid "%s%s: GnuTLS handshake failed" msgstr "%s gnutls-Handshake schlug fehl\n" @@ -4002,19 +4002,19 @@ msgstr "" "kompiliert wurde\n" #, fuzzy, c-format -msgid "%s%s: connecting to server %s:%d%s%s via %s proxy %s:%d%s..." +msgid "%s%s: connecting to server %s/%d%s%s via %s proxy %s/%d%s..." msgstr "%s: verbinden zu Server %s:%d%s%s via %s-Proxy %s:%d%s...\n" #, fuzzy, c-format -msgid "Connecting to server %s:%d%s%s via %s proxy %s:%d%s..." +msgid "Connecting to server %s/%d%s%s via %s proxy %s/%d%s..." msgstr "verbinden zu Server %s:%d%s%s via %s-Proxy %s:%d%s...\n" #, fuzzy, c-format -msgid "%s%s: connecting to server %s:%d%s%s..." +msgid "%s%s: connecting to server %s/%d%s%s..." msgstr "%s: verbinden zu Server %s:%d%s%s...\n" #, fuzzy, c-format -msgid "%s: connecting to server %s:%d%s%s..." +msgid "%s: connecting to server %s/%d%s%s..." msgstr "%s: verbinden zu Server %s:%d%s%s...\n" #, fuzzy, c-format @@ -4322,6 +4322,12 @@ msgstr "" msgid "%s%s: wrong arguments for function \"%s\"" msgstr "%s fehlerhafte Argumente für der \"%s\"-Befehl\n" +#~ msgid "IP address or hostname of IRC server" +#~ msgstr "IP-Adresse oder Hostname des IRC-Servers" + +#~ msgid "port for connecting to server" +#~ msgstr "Port, auf dem der IRC-Server läuft" + #~ msgid "" #~ "alternate nickname to use on IRC server (if nickname is already used)" #~ msgstr "" diff --git a/po/es.po b/po/es.po index e9b12a59b..3954f9fc9 100644 --- a/po/es.po +++ b/po/es.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-02-02 23:26+0100\n" +"POT-Creation-Date: 2008-02-03 13:17+0100\n" "PO-Revision-Date: 2007-09-19 12:09+0200\n" "Last-Translator: Roberto González Cardenete \n" "Language-Team: weechat-dev \n" @@ -2595,11 +2595,11 @@ msgstr "lista, añde o elimina servidores" #, fuzzy msgid "" -"[list [servername]] | [listfull [servername]] | [add servername hostname [-" -"port port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks " -"nick1,nick2,nick3,...] [-username username] [-realname realname] [-command " -"command] [-autojoin channel[,channel]] ] | [copy servername newservername] | " -"[rename servername newservername] | [keep servername] | [del servername]" +"[list [servername]] | [listfull [servername]] | [add servername hostname[/" +"port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1," +"nick2,...] [-username username] [-realname realname] [-command command] [-" +"autojoin channel[,channel]] ] | [copy servername newservername] | [rename " +"servername newservername] | [keep servername] | [del servername]" msgstr "" "[nombre_de_servidor] | [nombre_de_servidor nombre/IP puerto [-auto | -" "noauto] [-ipv6] [-ssl] [-pwd contraseña] [-nicks alias1 alias2 alias3] [-" @@ -2612,17 +2612,15 @@ msgid "" " listfull: list servers with detailed info for each server\n" " add: create a new server\n" "servername: server name, for internal and display use\n" -" hostname: name or IP address of server\n" -" port: port for server (integer, default is 6667)\n" +" hostname: name or IP address of server, with optional port (default: " +"6667)\n" " temp: create temporary server (not saved in config file)\n" " auto: automatically connect to server when WeeChat starts\n" " noauto: do not connect to server when WeeChat starts (default)\n" " ipv6: use IPv6 protocol\n" " ssl: use SSL protocol\n" " password: password for server\n" -" nick1: first nick for server\n" -" nick2: alternate nick for server\n" -" nick3: second alternate nick for server\n" +"nick1,2,..: nicknames for server\n" " username: user name\n" " realname: real name of user\n" " copy: duplicate a server\n" @@ -3017,11 +3015,9 @@ msgid "delay (in seconds) before trying again to reconnect to server" msgstr "" "espera (en segundos) antes de intentar de nuevo una reconexión al servidor" -msgid "IP address or hostname of IRC server" -msgstr "dirección IP o nombre de máquina del servidor IRC" - -msgid "port for connecting to server" -msgstr "puerto para conectarse al servidor" +#, fuzzy +msgid "list of IP/port or hostname/port for server (separated by comma)" +msgstr "nombre de usuario a utilizar en el servidor IRC" msgid "use IPv6 protocol for server communication" msgstr "usar el protocolo IPv6 para la comunicación del servidor" @@ -3966,6 +3962,10 @@ msgstr "%s el lag (retraso) es alto, desconectando del servidor...\n" msgid "%s%s: reconnecting to server in %d %s" msgstr "%s: Reconexión al servidor en %d segundos\n" +#, fuzzy, c-format +msgid "%s%s: switching address to %s/%d" +msgstr "%s Dirección IP no encontrada\n" + #, fuzzy, c-format msgid "%s%s: GnuTLS handshake failed" msgstr "%s el handshake gnutls ha fallado\n" @@ -4014,19 +4014,19 @@ msgstr "" "con soporte GNUtls\n" #, fuzzy, c-format -msgid "%s%s: connecting to server %s:%d%s%s via %s proxy %s:%d%s..." +msgid "%s%s: connecting to server %s/%d%s%s via %s proxy %s/%d%s..." msgstr "%s: conectando al servidor %s:%d%s%s vía %s proxy %s: %d%s...\n" #, fuzzy, c-format -msgid "Connecting to server %s:%d%s%s via %s proxy %s:%d%s..." +msgid "Connecting to server %s/%d%s%s via %s proxy %s/%d%s..." msgstr "Conectando al servidor %s:%d%s%s vía %s proxy %s:%d%s...\n" #, fuzzy, c-format -msgid "%s%s: connecting to server %s:%d%s%s..." +msgid "%s%s: connecting to server %s/%d%s%s..." msgstr "%s: conectando al servidor %s:%d%s%s...\n" #, fuzzy, c-format -msgid "%s: connecting to server %s:%d%s%s..." +msgid "%s: connecting to server %s/%d%s%s..." msgstr "%s: conectando al servidor %s:%d%s%s...\n" #, fuzzy, c-format @@ -4334,6 +4334,12 @@ msgstr "" msgid "%s%s: wrong arguments for function \"%s\"" msgstr "%s argumentos incorrectos para el comando \"%s\"\n" +#~ msgid "IP address or hostname of IRC server" +#~ msgstr "dirección IP o nombre de máquina del servidor IRC" + +#~ msgid "port for connecting to server" +#~ msgstr "puerto para conectarse al servidor" + #~ msgid "" #~ "alternate nickname to use on IRC server (if nickname is already used)" #~ msgstr "" diff --git a/po/fr.po b/po/fr.po index 4e4ef200f..d475dcada 100644 --- a/po/fr.po +++ b/po/fr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-02-02 23:26+0100\n" -"PO-Revision-Date: 2008-02-02 23:28+0100\n" +"POT-Creation-Date: 2008-02-03 13:17+0100\n" +"PO-Revision-Date: 2008-02-03 13:19+0100\n" "Last-Translator: FlashCode \n" "Language-Team: weechat-dev \n" "MIME-Version: 1.0\n" @@ -2513,29 +2513,33 @@ msgid "list, add or remove servers" msgstr "liste, ajoute ou retire des serveurs" msgid "" -"[list [servername]] | [listfull [servername]] | [add servername hostname [-" -"port port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks " -"nick1,nick2,nick3,...] [-username username] [-realname realname] [-command " -"command] [-autojoin channel[,channel]] ] | [copy servername newservername] | " -"[rename servername newservername] | [keep servername] | [del servername]" -msgstr "[list [nom_serveur]] | [listfull [nom_serveur]] | [add nom_serveur nom/IP [-port port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd mot_de_passe] [-nicks pseudo1,pseudo2,pseudo3,...] [-username nom_utilisateur] [-realname nom_réel] [-command commande] [-autojoin canal[,canal]] ] | [copy nom_serveur nouveau_nom_serveur] | [rename nom_serveur nouveau_nom_serveur] | [keep nom_serveur] | [del nom_serveur]" +"[list [servername]] | [listfull [servername]] | [add servername hostname[/" +"port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1," +"nick2,...] [-username username] [-realname realname] [-command command] [-" +"autojoin channel[,channel]] ] | [copy servername newservername] | [rename " +"servername newservername] | [keep servername] | [del servername]" +msgstr "" +"[list [nom_serveur]] | [listfull [nom_serveur]] | [add nom_serveur nom[/" +"port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd mot_de_passe] [-nicks " +"pseudo1,pseudo2,...] [-username nom_utilisateur] [-realname nom_réel] [-" +"command commande] [-autojoin canal[,canal]] ] | [copy nom_serveur " +"nouveau_nom_serveur] | [rename nom_serveur nouveau_nom_serveur] | [keep " +"nom_serveur] | [del nom_serveur]" msgid "" " list: list servers (no parameter implies this list)\n" " listfull: list servers with detailed info for each server\n" " add: create a new server\n" "servername: server name, for internal and display use\n" -" hostname: name or IP address of server\n" -" port: port for server (integer, default is 6667)\n" +" hostname: name or IP address of server, with optional port (default: " +"6667)\n" " temp: create temporary server (not saved in config file)\n" " auto: automatically connect to server when WeeChat starts\n" " noauto: do not connect to server when WeeChat starts (default)\n" " ipv6: use IPv6 protocol\n" " ssl: use SSL protocol\n" " password: password for server\n" -" nick1: first nick for server\n" -" nick2: alternate nick for server\n" -" nick3: second alternate nick for server\n" +"nick1,2,..: nicknames for server\n" " username: user name\n" " realname: real name of user\n" " copy: duplicate a server\n" @@ -2550,8 +2554,8 @@ msgstr "" " listfull: afficher les serveurs avec de l'info détaillée pour chaque\n" " add: créer un nouveau serveur\n" " nom_serveur: nom du serveur, pour usage interne et affichage\n" -" nom/IP: nom ou adresse IP du serveur\n" -" port: port pour le serveur (nombre entier, 6667 par défaut)\n" +" nom: nom ou adresse IP du serveur avec port en option (defaut: " +"6667)\n" " temp: créer un serveur temporaire (non sauvegardé dans le fichier " "de configuration)\n" " auto: se connecter automatiquement au serveur quand WeeChat " @@ -2561,9 +2565,7 @@ msgstr "" " ipv6: utiliser le protocole IPv6\n" " ssl: utiliser le protocole SSL\n" " mot_de_passe: mot de passe pour le serveur\n" -" pseudo1: premier pseudo pour le serveur\n" -" pseudo2: pseudo alternatif pour le serveur\n" -" pseudo3: second pseudo alternatif pour le serveur\n" +" pseudo1,2,...: pseudos pour le serveur\n" "nom_utilisateur: nom d'utilisateur\n" " nom_réel: nom réel de l'utilisateur\n" " copy: dupliquer un serveur\n" @@ -2944,11 +2946,8 @@ msgstr "reconnexion automatique au serveur après une déconnexion" msgid "delay (in seconds) before trying again to reconnect to server" msgstr "délai (en secondes) avant de tenter une reconnexion au serveur" -msgid "IP address or hostname of IRC server" -msgstr "adresse IP ou nom du serveur IRC" - -msgid "port for connecting to server" -msgstr "port pour se connecter au serveur" +msgid "list of IP/port or hostname/port for server (separated by comma)" +msgstr "liste d'IP/port ou nom/port pour le serveur (séparés par des virgules)" msgid "use IPv6 protocol for server communication" msgstr "utiliser le protocole IPv6 pour la communication avec le serveur" @@ -3811,21 +3810,28 @@ msgstr "%s%s[%s%s%s] %s%s%s banni" msgid "" "%s%s: all declared nicknames are already in use or invalid, closing " "connection with server" -msgstr "%s%s: tous les pseudos déclarés sont déjà en cours d'utilisation ou invalides, fermeture de la connexion avec le serveur" +msgstr "" +"%s%s: tous les pseudos déclarés sont déjà en cours d'utilisation ou " +"invalides, fermeture de la connexion avec le serveur" #, c-format msgid "%s%s: nickname \"%s\" is invalid, trying nickname #%d (\"%s\")" -msgstr "%s%s: le pseudo \"%s\" est invalide, essai avec le pseudo n°%d (\"%s\")" +msgstr "" +"%s%s: le pseudo \"%s\" est invalide, essai avec le pseudo n°%d (\"%s\")" #, c-format msgid "" "%s%s: all declared nicknames are already in use, closing connection with " "server" -msgstr "%s%s: tous les pseudos déclarés sont déjà en cours d'utilisation, fermeture de la connexion avec le serveur" +msgstr "" +"%s%s: tous les pseudos déclarés sont déjà en cours d'utilisation, fermeture " +"de la connexion avec le serveur" #, c-format msgid "%s%s: nickname \"%s\" is already in use, trying nickname #%d (\"%s\")" -msgstr "%s%s: le pseudo \"%s\" est déjà en cours d'utilisation, essai avec le pseudo n°%d (\"%s\")" +msgstr "" +"%s%s: le pseudo \"%s\" est déjà en cours d'utilisation, essai avec le pseudo " +"n°%d (\"%s\")" #, c-format msgid "%s%s: error when allocating new server" @@ -3880,6 +3886,10 @@ msgstr "%s%s: le lag est élevé, déconnexion du serveur..." msgid "%s%s: reconnecting to server in %d %s" msgstr "%s%s: reconnexion au serveur dans %d %s" +#, c-format +msgid "%s%s: switching address to %s/%d" +msgstr "%s%s: bascule vers l'adresse %s/%d" + #, c-format msgid "%s%s: GnuTLS handshake failed" msgstr "%s%s: la poignée de main de GnuTLS a échoué" @@ -3928,20 +3938,20 @@ msgstr "" "avec le support GnuTLS" #, c-format -msgid "%s%s: connecting to server %s:%d%s%s via %s proxy %s:%d%s..." -msgstr "%s%s: connexion au serveur %s:%d%s%s via le proxy %s %s:%d%s..." +msgid "%s%s: connecting to server %s/%d%s%s via %s proxy %s/%d%s..." +msgstr "%s%s: connexion au serveur %s/%d%s%s via le proxy %s %s/%d%s..." #, c-format -msgid "Connecting to server %s:%d%s%s via %s proxy %s:%d%s..." -msgstr "Connexion au serveur %s:%d%s%s via le proxy %s %s:%d%s..." +msgid "Connecting to server %s/%d%s%s via %s proxy %s/%d%s..." +msgstr "Connexion au serveur %s/%d%s%s via le proxy %s %s/%d%s..." #, c-format -msgid "%s%s: connecting to server %s:%d%s%s..." -msgstr "%s%s: connexion au serveur %s:%d%s%s..." +msgid "%s%s: connecting to server %s/%d%s%s..." +msgstr "%s%s: connexion au serveur %s/%d%s%s..." #, c-format -msgid "%s: connecting to server %s:%d%s%s..." -msgstr "%s: connexion au serveur %s:%d%s%s..." +msgid "%s: connecting to server %s/%d%s%s..." +msgstr "%s: connexion au serveur %s/%d%s%s..." #, c-format msgid "%s%s: GnuTLS init error" @@ -4258,6 +4268,12 @@ msgstr "" msgid "%s%s: wrong arguments for function \"%s\"" msgstr "%s%s: paramètres invalides pour la fonction \"%s\"" +#~ msgid "IP address or hostname of IRC server" +#~ msgstr "adresse IP ou nom du serveur IRC" + +#~ msgid "port for connecting to server" +#~ msgstr "port pour se connecter au serveur" + #~ msgid "" #~ "alternate nickname to use on IRC server (if nickname is already used)" #~ msgstr "" diff --git a/po/hu.po b/po/hu.po index bb8b7e9f5..21779ce3b 100644 --- a/po/hu.po +++ b/po/hu.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-02-02 23:26+0100\n" +"POT-Creation-Date: 2008-02-03 13:17+0100\n" "PO-Revision-Date: 2007-10-10 18:07+0200\n" "Last-Translator: Andras Voroskoi \n" "Language-Team: weechat-dev \n" @@ -2609,11 +2609,11 @@ msgstr "szerverek listázása, hozzáadása vagy eltávolítása" #, fuzzy msgid "" -"[list [servername]] | [listfull [servername]] | [add servername hostname [-" -"port port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks " -"nick1,nick2,nick3,...] [-username username] [-realname realname] [-command " -"command] [-autojoin channel[,channel]] ] | [copy servername newservername] | " -"[rename servername newservername] | [keep servername] | [del servername]" +"[list [servername]] | [listfull [servername]] | [add servername hostname[/" +"port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1," +"nick2,...] [-username username] [-realname realname] [-command command] [-" +"autojoin channel[,channel]] ] | [copy servername newservername] | [rename " +"servername newservername] | [keep servername] | [del servername]" msgstr "" "[list [szervernév]] | [listfull [szervernév]] | [add szervernév gépnév [-" "port port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd jelszó] [-nicks " @@ -2621,22 +2621,21 @@ msgstr "" "parancs] [-autojoin szoba[,szoba]] ] | [copy szervernév újszervernév] | " "[rename szervernév újszervernév] | [keep szervernév] | [del szervernév]" +#, fuzzy msgid "" " list: list servers (no parameter implies this list)\n" " listfull: list servers with detailed info for each server\n" " add: create a new server\n" "servername: server name, for internal and display use\n" -" hostname: name or IP address of server\n" -" port: port for server (integer, default is 6667)\n" +" hostname: name or IP address of server, with optional port (default: " +"6667)\n" " temp: create temporary server (not saved in config file)\n" " auto: automatically connect to server when WeeChat starts\n" " noauto: do not connect to server when WeeChat starts (default)\n" " ipv6: use IPv6 protocol\n" " ssl: use SSL protocol\n" " password: password for server\n" -" nick1: first nick for server\n" -" nick2: alternate nick for server\n" -" nick3: second alternate nick for server\n" +"nick1,2,..: nicknames for server\n" " username: user name\n" " realname: real name of user\n" " copy: duplicate a server\n" @@ -3027,11 +3026,9 @@ msgstr "automatikus újracsatlakozás a szerverhez, ha lekapcsolódik" msgid "delay (in seconds) before trying again to reconnect to server" msgstr "két újracsatlakozási próba közti szünet (másodpercben)" -msgid "IP address or hostname of IRC server" -msgstr "IRC szerver IP-címe vagy hosztneve" - -msgid "port for connecting to server" -msgstr "szerverhez csatlakozás portja" +#, fuzzy +msgid "list of IP/port or hostname/port for server (separated by comma)" +msgstr "felhasználónév az IRC szerveren" msgid "use IPv6 protocol for server communication" msgstr "IPv6 protokoll használata a kapcsolathoz" @@ -3966,6 +3963,10 @@ msgstr "%s túl nagy a késés(lag), lecsatlakozás a szerverről...\n" msgid "%s%s: reconnecting to server in %d %s" msgstr "%s: Újracsatlakozás a szerverhez %d másodperc múlva\n" +#, fuzzy, c-format +msgid "%s%s: switching address to %s/%d" +msgstr "%s IP-cím nem található\n" + #, fuzzy, c-format msgid "%s%s: GnuTLS handshake failed" msgstr "%s gnutls kézfogás sikertelen\n" @@ -4014,23 +4015,23 @@ msgstr "" "támogatás nélkül lett fordítva\n" #, fuzzy, c-format -msgid "%s%s: connecting to server %s:%d%s%s via %s proxy %s:%d%s..." +msgid "%s%s: connecting to server %s/%d%s%s via %s proxy %s/%d%s..." msgstr "" "%s: csatlakozás a(z) %s:%d%s%s szerverhez %s proxy kiszolgálón keresztül: %s:" "%d%s...\n" #, fuzzy, c-format -msgid "Connecting to server %s:%d%s%s via %s proxy %s:%d%s..." +msgid "Connecting to server %s/%d%s%s via %s proxy %s/%d%s..." msgstr "" "Csatlakozás a(z) %s:%d%s%s szerverhez %s proxy kiszolgálón keresztül: %s:%d%" "s...\n" #, fuzzy, c-format -msgid "%s%s: connecting to server %s:%d%s%s..." +msgid "%s%s: connecting to server %s/%d%s%s..." msgstr "%s: csatlakozás a(z) %s:%d%s%s szerverhez...\n" #, fuzzy, c-format -msgid "%s: connecting to server %s:%d%s%s..." +msgid "%s: connecting to server %s/%d%s%s..." msgstr "%s: csatlakozás a(z) %s:%d%s%s szerverhez...\n" #, fuzzy, c-format @@ -4336,6 +4337,12 @@ msgstr "" msgid "%s%s: wrong arguments for function \"%s\"" msgstr "%s rossz argumentum a \"%s\" parancsnak\n" +#~ msgid "IP address or hostname of IRC server" +#~ msgstr "IRC szerver IP-címe vagy hosztneve" + +#~ msgid "port for connecting to server" +#~ msgstr "szerverhez csatlakozás portja" + #~ msgid "" #~ "alternate nickname to use on IRC server (if nickname is already used)" #~ msgstr "alternatív név az IRC szerveren (ha a név már foglalt)" diff --git a/po/ru.po b/po/ru.po index f1084f50a..15f279605 100644 --- a/po/ru.po +++ b/po/ru.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-02-02 23:26+0100\n" +"POT-Creation-Date: 2008-02-03 13:17+0100\n" "PO-Revision-Date: 2007-09-06 12:44+0200\n" "Last-Translator: Pavel Shevchuk \n" "Language-Team: weechat-dev \n" @@ -2607,11 +2607,11 @@ msgstr "перечислить, добавить или удалить серв #, fuzzy msgid "" -"[list [servername]] | [listfull [servername]] | [add servername hostname [-" -"port port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks " -"nick1,nick2,nick3,...] [-username username] [-realname realname] [-command " -"command] [-autojoin channel[,channel]] ] | [copy servername newservername] | " -"[rename servername newservername] | [keep servername] | [del servername]" +"[list [servername]] | [listfull [servername]] | [add servername hostname[/" +"port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1," +"nick2,...] [-username username] [-realname realname] [-command command] [-" +"autojoin channel[,channel]] ] | [copy servername newservername] | [rename " +"servername newservername] | [keep servername] | [del servername]" msgstr "" "[list [сервер]] | [listfull [сервер]] | [add сервер адрес [-port порт] [-" "temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd пароль] [-nicks ник1 ник2 ник3] " @@ -2619,22 +2619,21 @@ msgstr "" "autojoin канал[,канал]] ] | [copy сервер новый_сервер] | [rename сервер " "новое_имя] | [keep сервер] | [del сервер]" +#, fuzzy msgid "" " list: list servers (no parameter implies this list)\n" " listfull: list servers with detailed info for each server\n" " add: create a new server\n" "servername: server name, for internal and display use\n" -" hostname: name or IP address of server\n" -" port: port for server (integer, default is 6667)\n" +" hostname: name or IP address of server, with optional port (default: " +"6667)\n" " temp: create temporary server (not saved in config file)\n" " auto: automatically connect to server when WeeChat starts\n" " noauto: do not connect to server when WeeChat starts (default)\n" " ipv6: use IPv6 protocol\n" " ssl: use SSL protocol\n" " password: password for server\n" -" nick1: first nick for server\n" -" nick2: alternate nick for server\n" -" nick3: second alternate nick for server\n" +"nick1,2,..: nicknames for server\n" " username: user name\n" " realname: real name of user\n" " copy: duplicate a server\n" @@ -3022,11 +3021,9 @@ msgstr "автоматически переподключаться к серв msgid "delay (in seconds) before trying again to reconnect to server" msgstr "задержка (в секундах) перед повторным соединением с сервером" -msgid "IP address or hostname of IRC server" -msgstr "IP адрес или хост IRC сервера" - -msgid "port for connecting to server" -msgstr "порт, используемый при соединении с сервером" +#, fuzzy +msgid "list of IP/port or hostname/port for server (separated by comma)" +msgstr "ник, используемый на IRC сервере" msgid "use IPv6 protocol for server communication" msgstr "использовать IPv6 при связи с сервером" @@ -3952,6 +3949,10 @@ msgstr "%s задержка слишком высокая, отключаюсь msgid "%s%s: reconnecting to server in %d %s" msgstr "%s: Повторное подключение к серверу через %d секунд\n" +#, fuzzy, c-format +msgid "%s%s: switching address to %s/%d" +msgstr "%s IP адрес не найден\n" + #, fuzzy, c-format msgid "%s%s: GnuTLS handshake failed" msgstr "%s инициализация gnutls не удалось\n" @@ -4000,19 +4001,19 @@ msgstr "" "поддержки GNUtls\n" #, fuzzy, c-format -msgid "%s%s: connecting to server %s:%d%s%s via %s proxy %s:%d%s..." +msgid "%s%s: connecting to server %s/%d%s%s via %s proxy %s/%d%s..." msgstr "%s: подключение к серверу %s:%d%s%s через %s proxy %s:%d%s...\n" #, fuzzy, c-format -msgid "Connecting to server %s:%d%s%s via %s proxy %s:%d%s..." +msgid "Connecting to server %s/%d%s%s via %s proxy %s/%d%s..." msgstr "Подключаюсь к серверу %s:%d%s%s через %s proxy %s:%d%s...\n" #, fuzzy, c-format -msgid "%s%s: connecting to server %s:%d%s%s..." +msgid "%s%s: connecting to server %s/%d%s%s..." msgstr "%s: поключаюсь к серверу %s:%d%s%s...\n" #, fuzzy, c-format -msgid "%s: connecting to server %s:%d%s%s..." +msgid "%s: connecting to server %s/%d%s%s..." msgstr "%s: поключаюсь к серверу %s:%d%s%s...\n" #, fuzzy, c-format @@ -4318,6 +4319,12 @@ msgstr "" msgid "%s%s: wrong arguments for function \"%s\"" msgstr "%s некорректные аргументы команды \"%s\"\n" +#~ msgid "IP address or hostname of IRC server" +#~ msgstr "IP адрес или хост IRC сервера" + +#~ msgid "port for connecting to server" +#~ msgstr "порт, используемый при соединении с сервером" + #~ msgid "" #~ "alternate nickname to use on IRC server (if nickname is already used)" #~ msgstr "альтернативный ник, используемый на IRC сервере" diff --git a/po/weechat.pot b/po/weechat.pot index 2f62a6467..bb0d5a204 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: 2008-02-02 23:26+0100\n" +"POT-Creation-Date: 2008-02-03 13:17+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2186,11 +2186,11 @@ msgid "list, add or remove servers" msgstr "" msgid "" -"[list [servername]] | [listfull [servername]] | [add servername hostname [-" -"port port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks " -"nick1,nick2,nick3,...] [-username username] [-realname realname] [-command " -"command] [-autojoin channel[,channel]] ] | [copy servername newservername] | " -"[rename servername newservername] | [keep servername] | [del servername]" +"[list [servername]] | [listfull [servername]] | [add servername hostname[/" +"port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1," +"nick2,...] [-username username] [-realname realname] [-command command] [-" +"autojoin channel[,channel]] ] | [copy servername newservername] | [rename " +"servername newservername] | [keep servername] | [del servername]" msgstr "" msgid "" @@ -2198,17 +2198,15 @@ msgid "" " listfull: list servers with detailed info for each server\n" " add: create a new server\n" "servername: server name, for internal and display use\n" -" hostname: name or IP address of server\n" -" port: port for server (integer, default is 6667)\n" +" hostname: name or IP address of server, with optional port (default: " +"6667)\n" " temp: create temporary server (not saved in config file)\n" " auto: automatically connect to server when WeeChat starts\n" " noauto: do not connect to server when WeeChat starts (default)\n" " ipv6: use IPv6 protocol\n" " ssl: use SSL protocol\n" " password: password for server\n" -" nick1: first nick for server\n" -" nick2: alternate nick for server\n" -" nick3: second alternate nick for server\n" +"nick1,2,..: nicknames for server\n" " username: user name\n" " realname: real name of user\n" " copy: duplicate a server\n" @@ -2523,10 +2521,7 @@ msgstr "" msgid "delay (in seconds) before trying again to reconnect to server" msgstr "" -msgid "IP address or hostname of IRC server" -msgstr "" - -msgid "port for connecting to server" +msgid "list of IP/port or hostname/port for server (separated by comma)" msgstr "" msgid "use IPv6 protocol for server communication" @@ -3428,6 +3423,10 @@ msgstr "" msgid "%s%s: reconnecting to server in %d %s" msgstr "" +#, c-format +msgid "%s%s: switching address to %s/%d" +msgstr "" + #, c-format msgid "%s%s: GnuTLS handshake failed" msgstr "" @@ -3472,19 +3471,19 @@ msgid "" msgstr "" #, c-format -msgid "%s%s: connecting to server %s:%d%s%s via %s proxy %s:%d%s..." +msgid "%s%s: connecting to server %s/%d%s%s via %s proxy %s/%d%s..." msgstr "" #, c-format -msgid "Connecting to server %s:%d%s%s via %s proxy %s:%d%s..." +msgid "Connecting to server %s/%d%s%s via %s proxy %s/%d%s..." msgstr "" #, c-format -msgid "%s%s: connecting to server %s:%d%s%s..." +msgid "%s%s: connecting to server %s/%d%s%s..." msgstr "" #, c-format -msgid "%s: connecting to server %s:%d%s%s..." +msgid "%s: connecting to server %s/%d%s%s..." msgstr "" #, c-format diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c index 229a64ff2..530ad07d9 100644 --- a/src/plugins/irc/irc-command.c +++ b/src/plugins/irc/irc-command.c @@ -603,8 +603,7 @@ irc_command_connect (void *data, struct t_gui_buffer *buffer, int argc, { irc_server_init (&server_tmp); server_tmp.name = strdup (argv[i]); - server_tmp.address = strdup (argv[i]); - server_tmp.port = port; + server_tmp.addresses = strdup (argv[i]); server_tmp.ipv6 = ipv6; server_tmp.ssl = ssl; ptr_server = irc_server_new (server_tmp.name, @@ -612,8 +611,7 @@ irc_command_connect (void *data, struct t_gui_buffer *buffer, int argc, server_tmp.autoreconnect, server_tmp.autoreconnect_delay, 1, /* temp server */ - server_tmp.address, - server_tmp.port, + server_tmp.addresses, server_tmp.ipv6, server_tmp.ssl, server_tmp.password, @@ -2499,8 +2497,7 @@ irc_command_server (void *data, struct t_gui_buffer *buffer, int argc, { int i, detailed_list, one_server_found; struct t_irc_server server_tmp, *ptr_server, *server_found, *new_server; - char *server_name, *error; - long number; + char *server_name; /* make C compiler happy */ (void) data; @@ -2587,8 +2584,7 @@ irc_command_server (void *data, struct t_gui_buffer *buffer, int argc, irc_server_init (&server_tmp); server_tmp.name = strdup (argv[2]); - server_tmp.address = strdup (argv[3]); - server_tmp.port = IRC_SERVER_DEFAULT_PORT; + server_tmp.addresses = strdup (argv[3]); /* parse arguments */ for (i = 4; i < argc; i++) @@ -2605,23 +2601,6 @@ irc_command_server (void *data, struct t_gui_buffer *buffer, int argc, server_tmp.ipv6 = 1; if (weechat_strcasecmp (argv[i], "-ssl") == 0) server_tmp.ssl = 1; - if (weechat_strcasecmp (argv[i], "-port") == 0) - { - if (i == (argc - 1)) - { - weechat_printf (NULL, - _("%s%s: missing argument for " - "\"%s\" option"), - weechat_prefix ("error"), "irc", - "-port"); - irc_server_free_data (&server_tmp); - return WEECHAT_RC_ERROR; - } - error = NULL; - number = strtol (argv[++i], &error, 10); - if (error && (error[0] == '\0')) - server_tmp.port = number; - } if (weechat_strcasecmp (argv[i], "-pwd") == 0) { if (i == (argc - 1)) @@ -2715,8 +2694,7 @@ irc_command_server (void *data, struct t_gui_buffer *buffer, int argc, server_tmp.autoreconnect, server_tmp.autoreconnect_delay, server_tmp.temp_server, - server_tmp.address, - server_tmp.port, + server_tmp.addresses, server_tmp.ipv6, server_tmp.ssl, server_tmp.password, @@ -3846,15 +3824,14 @@ irc_command_init () weechat_hook_command ("server", N_("list, add or remove servers"), N_("[list [servername]] | [listfull [servername]] | " - "[add servername hostname [-port port] [-temp] " + "[add servername hostname[/port] [-temp] " "[-auto | -noauto] [-ipv6] [-ssl] [-pwd password] " - "[-nicks nick1,nick2,nick3,...] " - "[-username username] [-realname realname] " - "[-command command] [-autojoin " - "channel[,channel]] ] | [copy servername " - "newservername] | [rename servername " - "newservername] | [keep servername] | [del " - "servername]"), + "[-nicks nick1,nick2,...] [-username username] " + "[-realname realname] [-command command] " + "[-autojoin channel[,channel]] ] | " + "[copy servername newservername] | " + "[rename servername newservername] | " + "[keep servername] | [del servername]"), N_(" list: list servers (no parameter implies " "this list)\n" " listfull: list servers with detailed info for " @@ -3862,9 +3839,8 @@ irc_command_init () " add: create a new server\n" "servername: server name, for internal and " "display use\n" - " hostname: name or IP address of server\n" - " port: port for server (integer, default " - "is 6667)\n" + " hostname: name or IP address of server, with " + "optional port (default: 6667)\n" " temp: create temporary server (not saved " "in config file)\n" " auto: automatically connect to server " @@ -3874,9 +3850,7 @@ irc_command_init () " ipv6: use IPv6 protocol\n" " ssl: use SSL protocol\n" " password: password for server\n" - " nick1: first nick for server\n" - " nick2: alternate nick for server\n" - " nick3: second alternate nick for server\n" + "nick1,2,..: nicknames for server\n" " username: user name\n" " realname: real name of user\n" " copy: duplicate a server\n" diff --git a/src/plugins/irc/irc-config.c b/src/plugins/irc/irc-config.c index c94683453..dcf4e302a 100644 --- a/src/plugins/irc/irc-config.c +++ b/src/plugins/irc/irc-config.c @@ -89,8 +89,7 @@ struct t_config_option *irc_config_server_name; struct t_config_option *irc_config_server_autoconnect; struct t_config_option *irc_config_server_autoreconnect; struct t_config_option *irc_config_server_autoreconnect_delay; -struct t_config_option *irc_config_server_address; -struct t_config_option *irc_config_server_port; +struct t_config_option *irc_config_server_addresses; struct t_config_option *irc_config_server_ipv6; struct t_config_option *irc_config_server_ssl; struct t_config_option *irc_config_server_password; @@ -361,8 +360,7 @@ irc_config_write_servers (void *data, struct t_config_file *config_file, (ptr_server->autoreconnect) ? "on" : "off"); weechat_config_write_line (config_file, "server_autoreconnect_delay", "%d", ptr_server->autoreconnect_delay); - weechat_config_write_line (config_file, "server_address", "\"%s\"", ptr_server->address); - weechat_config_write_line (config_file, "server_port", "%d", ptr_server->port); + weechat_config_write_line (config_file, "server_addresses", "\"%s\"", ptr_server->addresses); weechat_config_write_line (config_file, "server_ipv6", "%s", (ptr_server->ipv6) ? "on" : "off"); weechat_config_write_line (config_file, "server_ssl", "%s", @@ -411,8 +409,7 @@ irc_config_write_server_default (void *data, struct t_config_file *config_file, weechat_config_write_line (config_file, "server_autoconnect", "%s", "off"); weechat_config_write_line (config_file, "server_autoreconnect", "%s", "on"); weechat_config_write_line (config_file, "server_autoreconnect_delay", "%s", "30"); - weechat_config_write_line (config_file, "server_address", "%s", "\"irc.freenode.net\""); - weechat_config_write_line (config_file, "server_port", "%s", "6667"); + weechat_config_write_line (config_file, "server_addresses", "%s", "\"irc.freenode.net/6667\""); weechat_config_write_line (config_file, "server_ipv6", "%s", "off"); weechat_config_write_line (config_file, "server_ssl", "%s", "off"); weechat_config_write_line (config_file, "server_password", "%s", "\"\""); @@ -421,7 +418,9 @@ irc_config_write_server_default (void *data, struct t_config_file *config_file, if ((my_passwd = getpwuid (geteuid ())) != NULL) { weechat_config_write_line (config_file, - "server_nicks", "\"%s,%s1,%s2\"", + "server_nicks", "\"%s,%s1,%s2,%s3,%s4\"", + my_passwd->pw_name, + my_passwd->pw_name, my_passwd->pw_name, my_passwd->pw_name, my_passwd->pw_name); @@ -734,16 +733,11 @@ irc_config_init () "server_autoreconnect_delay", "integer", N_("delay (in seconds) before trying again to reconnect to server"), NULL, 0, 65535, "30", NULL, NULL); - irc_config_server_address = weechat_config_new_option ( + irc_config_server_addresses = weechat_config_new_option ( irc_config_file, ptr_section, - "server_address", "string", - N_("IP address or hostname of IRC server"), + "server_addresses", "string", + N_("list of IP/port or hostname/port for server (separated by comma)"), NULL, 0, 0, "", NULL, NULL); - irc_config_server_port = weechat_config_new_option ( - irc_config_file, ptr_section, - "server_port", "integer", - N_("port for connecting to server"), - NULL, 0, 65535, "6667", NULL, NULL); irc_config_server_ipv6 = weechat_config_new_option ( irc_config_file, ptr_section, "server_ipv6", "boolean", diff --git a/src/plugins/irc/irc-display.c b/src/plugins/irc/irc-display.c index 5cf3fe41b..839f9022a 100644 --- a/src/plugins/irc/irc-display.c +++ b/src/plugins/irc/irc-display.c @@ -357,10 +357,8 @@ irc_display_server (struct t_irc_server *server, int with_detail) weechat_printf (NULL, " server_autoreconnect_delay : %d %s", server->autoreconnect_delay, NG_("second", "seconds", server->autoreconnect_delay)); - weechat_printf (NULL, " server_address . . . . . . : %s", - server->address); - weechat_printf (NULL, " server_port . . . . . . . : %d", - server->port); + weechat_printf (NULL, " server_addresses . . . . . : %s", + server->addresses); weechat_printf (NULL, " server_ipv6 . . . . . . . : %s", (server->ipv6) ? _("on") : _("off")); weechat_printf (NULL, " server_ssl . . . . . . . . : %s", diff --git a/src/plugins/irc/irc-server.c b/src/plugins/irc/irc-server.c index bc5ce98f0..5249dfe8f 100644 --- a/src/plugins/irc/irc-server.c +++ b/src/plugins/irc/irc-server.c @@ -86,14 +86,11 @@ irc_server_init (struct t_irc_server *server) server->autoreconnect = 1; server->autoreconnect_delay = 30; server->temp_server = 0; - server->address = NULL; - server->port = -1; + server->addresses = NULL; server->ipv6 = 0; server->ssl = 0; server->password = NULL; server->nicks = NULL; - server->nicks_count = 0; - server->nicks_array = NULL; server->username = NULL; server->realname = NULL; server->hostname = NULL; @@ -105,6 +102,10 @@ irc_server_init (struct t_irc_server *server) /* internal vars */ server->reloaded_from_config = 0; + server->addresses_count = 0; + server->addresses_array = NULL; + server->ports_array = NULL; + server->current_address = 0; server->child_pid = 0; server->child_read = -1; server->child_write = -1; @@ -113,6 +114,8 @@ irc_server_init (struct t_irc_server *server) server->is_connected = 0; server->ssl_connected = 0; server->unterminated_message = NULL; + server->nicks_count = 0; + server->nicks_array = NULL; server->nick = NULL; server->nick_modes = NULL; server->prefix = NULL; @@ -264,6 +267,94 @@ irc_server_init_with_url (struct t_irc_server *server, char *irc_url) } */ +/* + * irc_server_set_addresses: set addresses for server + */ + +void +irc_server_set_addresses (struct t_irc_server *server, char *addresses) +{ + int i; + char *pos, *error; + long number; + + /* free data */ + if (server->addresses) + { + free (server->addresses); + server->addresses = NULL; + } + server->addresses_count = 0; + if (server->addresses_array) + { + weechat_string_free_exploded (server->addresses_array); + server->addresses_array = NULL; + } + if (server->ports_array) + { + free (server->ports_array); + server->ports_array = NULL; + } + + /* set new address */ + server->addresses = strdup (addresses); + if (server->addresses) + { + server->addresses_array = weechat_string_explode (server->addresses, + ",", 0, 0, + &server->addresses_count); + server->ports_array = (int *)malloc (server->addresses_count * + sizeof (int *)); + for (i = 0; i < server->addresses_count; i++) + { + pos = strchr (server->addresses_array[i], '/'); + if (pos) + { + pos[0] = 0; + pos++; + error = NULL; + number = strtol (pos, &error, 10); + server->ports_array[i] = (error && (error[0] == '\0')) ? + number : IRC_SERVER_DEFAULT_PORT; + } + else + { + server->ports_array[i] = IRC_SERVER_DEFAULT_PORT; + } + } + } +} + +/* + * irc_server_set_nicks: set nicks for server + */ + +void +irc_server_set_nicks (struct t_irc_server *server, char *nicks) +{ + /* free data */ + if (server->nicks) + { + free (server->nicks); + server->nicks = NULL; + } + server->nicks_count = 0; + if (server->nicks_array) + { + weechat_string_free_exploded (server->nicks_array); + server->nicks_array = NULL; + } + + /* set new nicks */ + server->nicks = strdup ((nicks) ? nicks : IRC_SERVER_DEFAULT_NICKS); + if (server->nicks) + { + server->nicks_array = weechat_string_explode (server->nicks, + ",", 0, 0, + &server->nicks_count); + } +} + /* * irc_server_init_with_config_options: init a server with config options * (called when reading config file) @@ -301,112 +392,150 @@ irc_server_init_with_config_options (struct t_irc_server *server, } else ptr_server = server; - + + /* server internal name */ if (ptr_server->name) free (ptr_server->name); ptr_server->name = strdup (weechat_config_string (ptr_option)); + /* auto-connect */ ptr_option = weechat_config_search_option (NULL, section, "server_autoconnect"); if (ptr_option) ptr_server->autoconnect = weechat_config_integer (ptr_option); - + + /* auto-reconnect */ ptr_option = weechat_config_search_option (NULL, section, "server_autoreconnect"); if (ptr_option) ptr_server->autoreconnect = weechat_config_integer (ptr_option); - + + /* auto-reconnect delay */ ptr_option = weechat_config_search_option (NULL, section, "server_autoreconnect_delay"); if (ptr_option) ptr_server->autoreconnect_delay = weechat_config_integer (ptr_option); - - if (ptr_server->address) - free (ptr_server->address); - ptr_server->address = NULL; - ptr_option = weechat_config_search_option (NULL, section, "server_address"); + + /* addresses */ + if (ptr_server->addresses) + { + free (ptr_server->addresses); + ptr_server->addresses = NULL; + } + ptr_server->addresses_count = 0; + if (ptr_server->addresses_array) + { + weechat_string_free_exploded (ptr_server->addresses_array); + ptr_server->addresses_array = NULL; + } + if (ptr_server->ports_array) + { + free (ptr_server->ports_array); + ptr_server->ports_array = NULL; + } + ptr_option = weechat_config_search_option (NULL, section, "server_addresses"); if (ptr_option) - ptr_server->address = strdup (weechat_config_string (ptr_option)); - - ptr_option = weechat_config_search_option (NULL, section, "server_port"); - if (ptr_option) - ptr_server->port = weechat_config_integer (ptr_option); - + irc_server_set_addresses (ptr_server, weechat_config_string (ptr_option)); + + /* ipv6 */ ptr_option = weechat_config_search_option (NULL, section, "server_ipv6"); if (ptr_option) ptr_server->ipv6 = weechat_config_integer (ptr_option); - + + /* SSL */ ptr_option = weechat_config_search_option (NULL, section, "server_ssl"); if (ptr_option) ptr_server->ssl = weechat_config_integer (ptr_option); - + + /* password */ if (ptr_server->password) + { free (ptr_server->password); - ptr_server->password = NULL; + ptr_server->password = NULL; + } ptr_option = weechat_config_search_option (NULL, section, "server_password"); if (ptr_option) ptr_server->password = strdup (weechat_config_string (ptr_option)); + /* nicks */ if (ptr_server->nicks) { free (ptr_server->nicks); ptr_server->nicks = NULL; + } + ptr_server->nicks_count = 0; + if (ptr_server->nicks_array) + { weechat_string_free_exploded (ptr_server->nicks_array); ptr_server->nicks_array = NULL; } - ptr_server->nicks_count = 0; ptr_option = weechat_config_search_option (NULL, section, "server_nicks"); if (ptr_option) - { - ptr_server->nicks = strdup (weechat_config_string (ptr_option)); - ptr_server->nicks_array = weechat_string_explode (weechat_config_string (ptr_option), - ",", 0, 0, - &ptr_server->nicks_count); - } + irc_server_set_nicks (ptr_server, weechat_config_string (ptr_option)); + /* username */ if (ptr_server->username) + { free (ptr_server->username); - ptr_server->username = NULL; + ptr_server->username = NULL; + } ptr_option = weechat_config_search_option (NULL, section, "server_username"); if (ptr_option) ptr_server->username = strdup (weechat_config_string (ptr_option)); + /* realname */ if (ptr_server->realname) + { free (ptr_server->realname); - ptr_server->realname = NULL; + ptr_server->realname = NULL; + } ptr_option = weechat_config_search_option (NULL, section, "server_realname"); if (ptr_option) ptr_server->realname = strdup (weechat_config_string (ptr_option)); + /* hostname */ if (ptr_server->hostname) + { free (ptr_server->hostname); - ptr_server->hostname = NULL; + ptr_server->hostname = NULL; + } ptr_option = weechat_config_search_option (NULL, section, "server_hostname"); if (ptr_option) ptr_server->hostname = strdup (weechat_config_string (ptr_option)); + /* command */ if (ptr_server->command) + { free (ptr_server->command); - ptr_server->command = NULL; + ptr_server->command = NULL; + } ptr_option = weechat_config_search_option (NULL, section, "server_command"); if (ptr_option) ptr_server->command = strdup (weechat_config_string (ptr_option)); - + + /* command delay */ ptr_option = weechat_config_search_option (NULL, section, "server_command_delay"); if (ptr_option) ptr_server->command_delay = weechat_config_integer (ptr_option); - + + /* auto-join */ if (ptr_server->autojoin) + { free (ptr_server->autojoin); - ptr_server->autojoin = NULL; + ptr_server->autojoin = NULL; + } ptr_option = weechat_config_search_option (NULL, section, "server_autojoin"); if (ptr_option) ptr_server->autojoin = strdup (weechat_config_string (ptr_option)); - + + /* auto-rejoin */ ptr_option = weechat_config_search_option (NULL, section, "server_autorejoin"); if (ptr_option) ptr_server->autorejoin = weechat_config_integer (ptr_option); - + + /* notify_levels */ if (ptr_server->notify_levels) + { free (ptr_server->notify_levels); - ptr_server->notify_levels = NULL; + ptr_server->notify_levels = NULL; + } ptr_option = weechat_config_search_option (NULL, section, "server_notify_levels"); if (ptr_option) ptr_server->notify_levels = strdup (weechat_config_string (ptr_option)); @@ -531,8 +660,12 @@ irc_server_free_data (struct t_irc_server *server) /* free data */ if (server->name) free (server->name); - if (server->address) - free (server->address); + if (server->addresses) + free (server->addresses); + if (server->addresses_array) + weechat_string_free_exploded (server->addresses_array); + if (server->ports_array) + free (server->ports_array); if (server->password) free (server->password); if (server->nicks) @@ -620,24 +753,24 @@ irc_server_free_all () struct t_irc_server * irc_server_new (char *name, int autoconnect, int autoreconnect, - int autoreconnect_delay, int temp_server, char *address, - int port, int ipv6, int ssl, char *password, - char *nicks, char *username, char *realname, char *hostname, + int autoreconnect_delay, int temp_server, char *addresses, + int ipv6, int ssl, char *password, char *nicks, + char *username, char *realname, char *hostname, char *command, int command_delay, char *autojoin, int autorejoin, char *notify_levels) { struct t_irc_server *new_server; - if (!name || !address || (port < 0)) + if (!name || !addresses) return NULL; if (irc_debug) { - weechat_log_printf ("Creating new server (name:%s, address:%s, " - "port:%d, pwd:%s, nicks:%s, username:%s, " - "realname:%s, hostname: %s, command:%s, " - "autojoin:%s, autorejoin:%s, notify_levels:%s)", - name, address, port, (password) ? password : "", + weechat_log_printf ("Creating new server (name:%s, addresses:%s, " + "pwd:%s, nicks:%s, username:%s, realname:%s, " + "hostname: %s, command:%s, autojoin:%s, " + "autorejoin:%s, notify_levels:%s)", + name, addresses, (password) ? password : "", (nicks) ? nicks : "", (username) ? username : "", (realname) ? realname : "", (hostname) ? hostname : "", @@ -654,17 +787,12 @@ irc_server_new (char *name, int autoconnect, int autoreconnect, new_server->autoreconnect = autoreconnect; new_server->autoreconnect_delay = autoreconnect_delay; new_server->temp_server = temp_server; - new_server->address = strdup (address); - new_server->port = port; + irc_server_set_addresses (new_server, addresses); new_server->ipv6 = ipv6; new_server->ssl = ssl; new_server->password = (password) ? strdup (password) : strdup (""); - new_server->nicks = (nicks) ? - strdup (nicks) : strdup (IRC_SERVER_DEFAULT_NICKS); - new_server->nicks_array = weechat_string_explode ((nicks) ? - nicks : IRC_SERVER_DEFAULT_NICKS, - ",", 0, 0, - &new_server->nicks_count); + irc_server_set_nicks (new_server, + (nicks) ? nicks : IRC_SERVER_DEFAULT_NICKS); new_server->username = (username) ? strdup (username) : strdup ("weechat"); new_server->realname = @@ -705,8 +833,7 @@ irc_server_duplicate (struct t_irc_server *server, char *new_name) server->autoreconnect, server->autoreconnect_delay, server->temp_server, - server->address, - server->port, + server->addresses, server->ipv6, server->ssl, server->password, @@ -1413,14 +1540,15 @@ irc_server_recv_cb (void *arg_server) */ void -irc_server_timer_cb (void *empty) +irc_server_timer_cb (void *data) { struct t_irc_server *ptr_server; time_t new_time; static struct timeval tv; int diff; - (void) empty; + /* make C compiler happy */ + (void) data; new_time = time (NULL); @@ -1443,7 +1571,8 @@ irc_server_timer_cb (void *empty) if ((ptr_server->lag_check_time.tv_sec == 0) && (new_time >= ptr_server->lag_next_check)) { - irc_server_sendf (ptr_server, "PING %s", ptr_server->address); + irc_server_sendf (ptr_server, "PING %s", + ptr_server->addresses_array[ptr_server->current_address]); gettimeofday (&(ptr_server->lag_check_time), NULL); } @@ -1569,6 +1698,7 @@ irc_server_close_connection (struct t_irc_server *server) void irc_server_reconnect_schedule (struct t_irc_server *server) { + server->current_address = 0; if (server->autoreconnect) { server->reconnect_start = time (NULL); @@ -1598,8 +1728,34 @@ irc_server_login (struct t_irc_server *server) irc_server_sendf (server, "NICK %s\n" "USER %s %s %s :%s", - server->nick, server->username, server->username, - server->address, server->realname); + server->nick, + server->username, + server->username, + server->addresses_array[server->current_address], + server->realname); +} + +/* + * irc_server_switch_address: switch address and try another + * (called if connection failed with an address/port) + */ + +void +irc_server_switch_address (struct t_irc_server *server) +{ + if ((server->addresses_count > 1) + && (server->current_address < server->addresses_count - 1)) + { + server->current_address++; + weechat_printf (server->buffer, + _("%s%s: switching address to %s/%d"), + weechat_prefix ("info"), "irc", + server->addresses_array[server->current_address], + server->ports_array[server->current_address]); + irc_server_connect (server, 0); + } + else + irc_server_reconnect_schedule (server); } /* @@ -1637,7 +1793,7 @@ irc_server_child_read (void *arg_server) _("%s%s: GnuTLS handshake failed"), weechat_prefix ("error"), "irc"); irc_server_close_connection (server); - irc_server_reconnect_schedule (server); + irc_server_switch_address (server); return WEECHAT_RC_OK; } } @@ -1658,9 +1814,9 @@ irc_server_child_read (void *arg_server) _("%s%s: proxy address \"%s\" not found") : _("%s%s: address \"%s\" not found"), weechat_prefix ("error"), "irc", - server->address); + server->addresses_array[server->current_address]); irc_server_close_connection (server); - irc_server_reconnect_schedule (server); + irc_server_switch_address (server); break; /* IP address not found */ case '2': @@ -1670,7 +1826,7 @@ irc_server_child_read (void *arg_server) _("%s%s: IP address not found"), weechat_prefix ("error"), "irc"); irc_server_close_connection (server); - irc_server_reconnect_schedule (server); + irc_server_switch_address (server); break; /* connection refused */ case '3': @@ -1680,7 +1836,7 @@ irc_server_child_read (void *arg_server) _("%s%s: connection refused"), weechat_prefix ("error"), "irc"); irc_server_close_connection (server); - irc_server_reconnect_schedule (server); + irc_server_switch_address (server); break; /* proxy fails to connect to server */ case '4': @@ -1690,7 +1846,7 @@ irc_server_child_read (void *arg_server) "(check username/password if used)"), weechat_prefix ("error"), "irc"); irc_server_close_connection (server); - irc_server_reconnect_schedule (server); + irc_server_switch_address (server); break; /* fails to set local hostname/IP */ case '5': @@ -2146,7 +2302,10 @@ irc_server_child (struct t_irc_server *server) return 0; } - if (irc_server_pass_proxy (server->sock, server->address, server->port, server->username)) + if (irc_server_pass_proxy (server->sock, + server->addresses_array[server->current_address], + server->ports_array[server->current_address], + server->username)) { write (server->child_write, "4", 1); freeaddrinfo (res); @@ -2184,7 +2343,8 @@ irc_server_child (struct t_irc_server *server) memset (&hints, 0, sizeof(hints)); hints.ai_family = (server->ipv6) ? AF_INET6 : AF_INET; hints.ai_socktype = SOCK_STREAM; - rc = getaddrinfo (server->address, NULL, &hints, &res); + rc = getaddrinfo (server->addresses_array[server->current_address], + NULL, &hints, &res); if ((rc != 0) || !res) { write (server->child_write, "1", 1); @@ -2205,9 +2365,11 @@ irc_server_child (struct t_irc_server *server) /* connect to server */ if (server->ipv6) - ((struct sockaddr_in6 *)(res->ai_addr))->sin6_port = htons (server->port); + ((struct sockaddr_in6 *)(res->ai_addr))->sin6_port = + htons (server->ports_array[server->current_address]); else - ((struct sockaddr_in *)(res->ai_addr))->sin_port = htons (server->port); + ((struct sockaddr_in *)(res->ai_addr))->sin_port = + htons (server->ports_array[server->current_address]); if (connect (server->sock, res->ai_addr, res->ai_addrlen) != 0) { @@ -2280,18 +2442,20 @@ irc_server_connect (struct t_irc_server *server, int disable_autojoin) if (config_proxy_use) { weechat_printf (server->buffer, - _("%s%s: connecting to server %s:%d%s%s via %s " - "proxy %s:%d%s..."), + _("%s%s: connecting to server %s/%d%s%s via %s " + "proxy %s/%d%s..."), weechat_prefix ("info"), "irc", - server->address, server->port, + server->addresses_array[server->current_address], + server->ports_array[server->current_address], (server->ipv6) ? " (IPv6)" : "", (server->ssl) ? " (SSL)" : "", config_proxy_type, config_proxy_address, config_proxy_port, (config_proxy_ipv6) ? " (IPv6)" : ""); - weechat_log_printf (_("Connecting to server %s:%d%s%s via %s proxy " - "%s:%d%s..."), - server->address, server->port, + weechat_log_printf (_("Connecting to server %s/%d%s%s via %s proxy " + "%s/%d%s..."), + server->addresses_array[server->current_address], + server->ports_array[server->current_address], (server->ipv6) ? " (IPv6)" : "", (server->ssl) ? " (SSL)" : "", config_proxy_type, @@ -2301,14 +2465,16 @@ irc_server_connect (struct t_irc_server *server, int disable_autojoin) else { weechat_printf (server->buffer, - _("%s%s: connecting to server %s:%d%s%s..."), + _("%s%s: connecting to server %s/%d%s%s..."), weechat_prefix ("info"), "irc", - server->address, server->port, + server->addresses_array[server->current_address], + server->ports_array[server->current_address], (server->ipv6) ? " (IPv6)" : "", (server->ssl) ? " (SSL)" : ""); - weechat_log_printf (_("%s: connecting to server %s:%d%s%s..."), + weechat_log_printf (_("%s: connecting to server %s/%d%s%s..."), "irc", - server->address, server->port, + server->addresses_array[server->current_address], + server->ports_array[server->current_address], (server->ipv6) ? " (IPv6)" : "", (server->ssl) ? " (SSL)" : ""); } @@ -2429,6 +2595,7 @@ irc_server_reconnect (struct t_irc_server *server) _("%s%s: reconnecting to server..."), weechat_prefix ("info"), "irc"); server->reconnect_start = 0; + server->current_address = 0; if (irc_server_connect (server, 0)) server->reconnect_join = 1; @@ -2472,12 +2639,9 @@ irc_server_disconnect (struct t_irc_server *server, int reconnect) for (ptr_channel = server->channels; ptr_channel; ptr_channel = ptr_channel->next_channel) { - //irc_nick_free_all (ptr_channel); weechat_printf (ptr_channel->buffer, _("%s%s: disconnected from server"), weechat_prefix ("info"), "irc"); - //gui_nicklist_draw (ptr_channel->buffer, 1, 1); - //gui_status_draw (ptr_channel->buffer, 1); } } @@ -2488,6 +2652,7 @@ irc_server_disconnect (struct t_irc_server *server, int reconnect) _("%s%s: disconnected from server"), weechat_prefix ("info"), "irc"); + server->current_address = 0; if (server->nick_modes) { free (server->nick_modes); @@ -2530,8 +2695,11 @@ irc_server_disconnect_all () { struct t_irc_server *ptr_server; - for (ptr_server = irc_servers; ptr_server; ptr_server = ptr_server->next_server) + for (ptr_server = irc_servers; ptr_server; + ptr_server = ptr_server->next_server) + { irc_server_disconnect (ptr_server, 0); + } } /* @@ -2815,16 +2983,13 @@ irc_server_print_log () weechat_log_printf (" autoreconnect . . . : %d", ptr_server->autoreconnect); weechat_log_printf (" autoreconnect_delay : %d", ptr_server->autoreconnect_delay); weechat_log_printf (" temp_server . . . . : %d", ptr_server->temp_server); - weechat_log_printf (" address . . . . . . : '%s'", ptr_server->address); - weechat_log_printf (" port. . . . . . . . : %d", ptr_server->port); + weechat_log_printf (" addresses . . . . . : '%s'", ptr_server->addresses); weechat_log_printf (" ipv6. . . . . . . . : %d", ptr_server->ipv6); weechat_log_printf (" ssl . . . . . . . . : %d", ptr_server->ssl); weechat_log_printf (" password. . . . . . : '%s'", (ptr_server->password && ptr_server->password[0]) ? "(hidden)" : ptr_server->password); weechat_log_printf (" nicks . . . . . . . : '%s'", ptr_server->nicks); - weechat_log_printf (" nicks_count . . . . : %d", ptr_server->nicks_count); - weechat_log_printf (" nicks_array . . . . : 0x%x", ptr_server->nicks_array); weechat_log_printf (" username. . . . . . : '%s'", ptr_server->username); weechat_log_printf (" realname. . . . . . : '%s'", ptr_server->realname); weechat_log_printf (" command . . . . . . : '%s'", @@ -2835,6 +3000,9 @@ irc_server_print_log () weechat_log_printf (" autorejoin. . . . . : %d", ptr_server->autorejoin); weechat_log_printf (" notify_levels . . . : %s", ptr_server->notify_levels); weechat_log_printf (" reloaded_from_config: %d", ptr_server->reloaded_from_config); + weechat_log_printf (" addresses_count . . : %d", ptr_server->addresses_count); + weechat_log_printf (" addresses_array . . : 0x%x", ptr_server->addresses_array); + weechat_log_printf (" ports_array . . . . : 0x%x", ptr_server->ports_array); weechat_log_printf (" child_pid . . . . . : %d", ptr_server->child_pid); weechat_log_printf (" child_read . . . . : %d", ptr_server->child_read); weechat_log_printf (" child_write . . . . : %d", ptr_server->child_write); @@ -2843,6 +3011,8 @@ irc_server_print_log () weechat_log_printf (" is_connected. . . . : %d", ptr_server->is_connected); weechat_log_printf (" ssl_connected . . . : %d", ptr_server->ssl_connected); weechat_log_printf (" unterminated_message: '%s'", ptr_server->unterminated_message); + weechat_log_printf (" nicks_count . . . . : %d", ptr_server->nicks_count); + weechat_log_printf (" nicks_array . . . . : 0x%x", ptr_server->nicks_array); weechat_log_printf (" nick. . . . . . . . : '%s'", ptr_server->nick); weechat_log_printf (" nick_modes. . . . . : '%s'", ptr_server->nick_modes); weechat_log_printf (" prefix. . . . . . . : '%s'", ptr_server->prefix); diff --git a/src/plugins/irc/irc-server.h b/src/plugins/irc/irc-server.h index 627acfbc9..10f331711 100644 --- a/src/plugins/irc/irc-server.h +++ b/src/plugins/irc/irc-server.h @@ -32,7 +32,8 @@ #define IRC_SERVER_DEFAULT_PORT 6667 #define IRC_SERVER_DEFAULT_PREFIXES_LIST "@%+~&!-" -#define IRC_SERVER_DEFAULT_NICKS "weechat1,weechat2,weechat3" +#define IRC_SERVER_DEFAULT_NICKS "weechat1,weechat2,weechat3," \ + "weechat4,weechat5" #define irc_server_sendf_queued(server, fmt, argz...) \ if (server) \ @@ -61,14 +62,11 @@ struct t_irc_server int autoreconnect; /* = 1 if auto reco when disconnected */ int autoreconnect_delay; /* delay before trying again reconnect */ int temp_server; /* server is temporary (not saved!) */ - char *address; /* address of server (IP or name) */ - int port; /* port for server (6667 by default) */ + char *addresses; /* server addresses (IP/name with port) */ int ipv6; /* use IPv6 protocol */ int ssl; /* SSL protocol */ char *password; /* password for server */ char *nicks; /* nicknames as one string */ - int nicks_count; /* number of nicknames */ - char **nicks_array; /* exploded nicknames */ char *username; /* user name */ char *realname; /* real name */ char *hostname; /* custom hostname */ @@ -80,6 +78,10 @@ struct t_irc_server /* internal vars */ int reloaded_from_config; /* 1 if reloaded from config file */ + int addresses_count; /* number of addresses */ + char **addresses_array; /* exploded addresses */ + int *ports_array; /* ports for addresses */ + int current_address; /* current address index in array */ pid_t child_pid; /* pid of child process (connecting) */ int child_read; /* to read into child pipe */ int child_write; /* to write into child pipe */ @@ -91,6 +93,8 @@ struct t_irc_server gnutls_session gnutls_sess; /* gnutls session (only if SSL is used) */ #endif char *unterminated_message; /* beginning of a message in input buf */ + int nicks_count; /* number of nicknames */ + char **nicks_array; /* exploded nicknames */ char *nick; /* current nickname */ char *nick_modes; /* nick modes */ char *prefix; /* nick prefix allowed (from msg 005) */ @@ -146,8 +150,8 @@ extern void irc_server_free_all (); extern struct t_irc_server *irc_server_new (char *name, int autoconnect, int autoreconnect, int autoreconnect_delay, - int temp_server, char *address, - int port, int ipv6, int ssl, + int temp_server, char *addresses, + int ipv6, int ssl, char *password, char *nicks, char *username, char *realname, char *hostname, char *command,