1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-08 18:53:12 +02:00

Connection to IRC server is now made by child process (non blocking)

This commit is contained in:
Sebastien Helleu
2005-02-20 13:37:47 +00:00
parent e3088336ab
commit 73f6606771
18 changed files with 1106 additions and 782 deletions
+1
View File
@@ -6,6 +6,7 @@ ChangeLog - 2005-02-20
Version 0.1.1 (under dev!):
* added DCC send
* connection to IRC server is now made by child process (non blocking)
* added support for UnrealIrcd ("~" for chan owner, "&" for chan admin)
* on server buffer, only server messages are logged
* improved /help command output
+4 -3
View File
@@ -1,7 +1,7 @@
WeeChat - Wee Enhanced Environment for Chat
===========================================
TODO - 2005-02-12
TODO - 2005-02-20
Legend:
# done
@@ -19,7 +19,7 @@ v0.1.1:
- *BSD version
* IRC protocol:
+ "/dcc" command (for chat and sending/receiving files)
# "/dcc send" command
- customizable CTCP version reply
* Interface:
@@ -27,13 +27,14 @@ v0.1.1:
+ internationalization (traduce WeeChat in many languages)
* TCP/IP communication:
- connect to server with child process (background)
# connect to server with child process (background)
Future versions:
---------------
* IRC protocol:
- "/dcc chat" command (and incoming DCC chats)
- complete "/list" command: add regexp search, display only channels that
match regexp
- "/ignore" and "/unignore" commands: hide all that is write by a given
+138 -122
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.1.1-cvs\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2005-02-20 01:03+0100\n"
"POT-Creation-Date: 2005-02-20 14:34+0100\n"
"PO-Revision-Date: 2005-02-12 12:00+0100\n"
"Last-Translator: FlashCode <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -20,107 +20,107 @@ msgstr ""
msgid "%s cannot allocate new nick\n"
msgstr "%s ompossible d'allouer un nouveau pseudo\n"
#: src/irc/irc-server.c:139 src/common/weeconfig.c:1471
#: src/irc/irc-server.c:146 src/common/weeconfig.c:1471
msgid "Unable to get user's name"
msgstr "Impossible de déterminer le nom d'utilisateur"
#: src/irc/irc-server.c:204
#: src/irc/irc-server.c:211
#, c-format
msgid "%s cannot allocate new server\n"
msgstr "%s impossible d'allouer un nouveau serveur\n"
#: src/irc/irc-server.c:405
#: src/irc/irc-server.c:412
#, c-format
msgid "%s error sending data to IRC server\n"
msgstr "%s erreur d'envoi de données au serveur IRC\n"
#: src/irc/irc-server.c:425 src/irc/irc-server.c:438 src/irc/irc-server.c:504
#: src/irc/irc-server.c:432 src/irc/irc-server.c:445 src/irc/irc-server.c:511
#, c-format
msgid "%s not enough memory for received IRC message\n"
msgstr "%s mémoire insuffisante pour un message IRC reçu\n"
#: src/irc/irc-server.c:513
#: src/irc/irc-server.c:520
#, c-format
msgid "%s unable to explode received buffer\n"
msgstr "%s impossible d'exploser le tampon de réception\n"
#: src/irc/irc-server.c:587
#: src/irc/irc-server.c:594
#, c-format
msgid "%s Command '%s' failed!\n"
msgstr "%s La commande '%s' a échoué !\n"
#: src/irc/irc-server.c:592
#: src/irc/irc-server.c:599
#, c-format
msgid "%s No command to execute!\n"
msgstr "%s Pas de commande à exécuter !\n"
#: src/irc/irc-server.c:597
#: src/irc/irc-server.c:604
#, c-format
msgid "%s Unknown command: cmd=%s, args=%s\n"
msgstr "%s Commande inconnue: cmd=%s, params=%s\n"
#: src/irc/irc-server.c:639
#: src/irc/irc-server.c:646
#, c-format
msgid "%s cannot read data from socket, disconnecting from server...\n"
msgstr ""
"%s impossible de lire des données sur la socket, déconnexion du serveur...\n"
#: src/irc/irc-server.c:661
#, c-format
msgid "%s: connecting to %s:%d...\n"
msgstr "%s: connexion à %s:%d...\n"
#: src/irc/irc-server.c:663
#, c-format
msgid "connecting to server %s:%d...\n"
msgstr "connexion au serveur %s:%d...\n"
#: src/irc/irc-server.c:672
#, c-format
msgid "%s cannot create pipe\n"
msgstr "%s impossible de créer le pipe\n"
#: src/irc/irc-server.c:688
#, c-format
msgid "%s cannot set socket option \"SO_REUSEADDR\"\n"
msgstr "%s impossible de paramétrer l'option socket \"SO_REUSEADDR\"\n"
#: src/irc/irc-server.c:698
#, c-format
msgid "%s cannot set socket option \"SO_KEEPALIVE\"\n"
msgstr "%s impossible de paramétrer l'option socket \"SO_KEEPALIVE\"\n"
#: src/irc/irc-server.c:708
#, c-format
msgid "%s address \"%s\" not found\n"
msgstr "%s adresse \"%s\" introuvable\n"
#: src/irc/irc-server.c:733
#, c-format
msgid "%s IP address not found\n"
msgstr "%s adresse IP introuvable\n"
#: src/irc/irc-server.c:744
#, c-format
msgid "%s: server IP is: %s\n"
msgstr "%s: l'adresse IP du serveur est : %s\n"
#: src/irc/irc-server.c:751
#, c-format
msgid "%s cannot connect to irc server\n"
msgstr "%s connexion au serveur irc impossible\n"
#: src/irc/irc-server.c:770
#, c-format
msgid "%s: Reconnecting to server...\n"
msgstr "%s: Reconnexion au serveur...\n"
#: src/irc/irc-server.c:783 src/irc/irc-server.c:860
#: src/irc/irc-server.c:718
#, c-format
msgid "%s: Reconnecting to server in %d seconds\n"
msgstr "%s: Reconnexion au serveur dans %d secondes\n"
#: src/irc/irc-server.c:827
#: src/irc/irc-server.c:749
#, c-format
msgid "%s address \"%s\" not found\n"
msgstr "%s adresse \"%s\" introuvable\n"
#: src/irc/irc-server.c:758
#, c-format
msgid "%s IP address not found\n"
msgstr "%s adresse IP introuvable\n"
#: src/irc/irc-server.c:766
#, c-format
msgid "%s connection refused\n"
msgstr "%s connexion refusée\n"
#: src/irc/irc-server.c:832
#, c-format
msgid "%s: connecting to %s:%d...\n"
msgstr "%s: connexion à %s:%d...\n"
#: src/irc/irc-server.c:834
#, c-format
msgid "connecting to server %s:%d...\n"
msgstr "connexion au serveur %s:%d...\n"
#: src/irc/irc-server.c:845
#, c-format
msgid "%s cannot create pipe\n"
msgstr "%s impossible de créer le pipe\n"
#: src/irc/irc-server.c:857
#, c-format
msgid "%s cannot create socket\n"
msgstr "%s impossible de créer la socket\n"
#: src/irc/irc-server.c:869
#, c-format
msgid "%s cannot set socket option \"SO_REUSEADDR\"\n"
msgstr "%s impossible de paramétrer l'option socket \"SO_REUSEADDR\"\n"
#: src/irc/irc-server.c:880
#, c-format
msgid "%s cannot set socket option \"SO_KEEPALIVE\"\n"
msgstr "%s impossible de paramétrer l'option socket \"SO_KEEPALIVE\"\n"
#: src/irc/irc-server.c:911
#, c-format
msgid "%s: Reconnecting to server...\n"
msgstr "%s: Reconnexion au serveur...\n"
#: src/irc/irc-server.c:960 src/irc/irc-server.c:965
msgid "Disconnected from server!\n"
msgstr "Déconnecté du serveur !\n"
@@ -1204,7 +1204,7 @@ msgid "%s: using local hostname \"%s\"\n"
msgstr "%s: utilisation du nom de machine local \"%s\"\n"
#: src/irc/irc-send.c:267 src/irc/irc-send.c:278 src/irc/irc-send.c:748
#: src/irc/irc-send.c:822 src/common/command.c:1355
#: src/irc/irc-send.c:822 src/common/command.c:1365
#, c-format
msgid "%s wrong argument count for \"%s\" command\n"
msgstr "%s nombre de paramètres erroné pour la commande \"%s\"\n"
@@ -1948,8 +1948,8 @@ msgid "connect to a server"
msgstr "se connecter à un serveur"
#: src/common/command.c:61 src/common/command.c:65
msgid "servername"
msgstr "nom_serveur"
msgid "[servername]"
msgstr "[nom_serveur]"
#: src/common/command.c:62
msgid "servername: server name to connect"
@@ -2119,10 +2119,10 @@ msgstr ""
"%s nombre de paramètres incorrect pour la commande %s \"%s\" (attendu: entre "
"%d et %d paramètre%s)\n"
#: src/common/command.c:509
#: src/common/command.c:509 src/common/command.c:579
#, c-format
msgid "%s %s command \"%s\" failed\n"
msgstr "%s %s la commande \"%s\" a échoué\n"
msgid "%s command \"%s\" failed\n"
msgstr "%s la commande \"%s\" a échoué\n"
#: src/common/command.c:537
#, c-format
@@ -2145,11 +2145,6 @@ msgstr ""
msgid "%s command \"%s\" needs a server connection!\n"
msgstr "%s la commande \"%s\" nécessite une connexion au serveur !\n"
#: src/common/command.c:579
#, c-format
msgid "%s IRC command \"%s\" failed\n"
msgstr "%s la commande IRC \"%s\" a échoué\n"
#: src/common/command.c:628
#, c-format
msgid "%s unknown command \"%s\" (type /help for help)\n"
@@ -2239,78 +2234,82 @@ msgstr "%s buffer \"%s\" non trouv
msgid "unknown parameter \"%s\" for \"%s\" command\n"
msgstr "paramètre inconnu \"%s\" pour la commande \"%s\"\n"
#: src/common/command.c:1070
#: src/common/command.c:1073
#, c-format
msgid "%s already connected to server \"%s\"!\n"
msgstr "%s déjà connecté au serveur \"%s\" !\n"
#: src/common/command.c:1090 src/common/command.c:1133
#: src/common/command.c:1783
#: src/common/command.c:1081
#, c-format
msgid "%s server \"%s\" not found\n"
msgstr "%s serveur \"%s\" non trouvé\n"
msgid "%s currently connecting to server \"%s\"!\n"
msgstr "%s une connexion vers le serveur \"%s\" est en cours !\n"
#: src/common/command.c:1116
#: src/common/command.c:1099 src/common/command.c:1144
#, c-format
msgid "%s server not found\n"
msgstr "%s serveur non trouvé\n"
#: src/common/command.c:1128
#, c-format
msgid "%s not connected to server \"%s\"!\n"
msgstr "%s non connecté au serveur \"%s\" !\n"
#: src/common/command.c:1124
#: src/common/command.c:1136
msgid "Auto-reconnection is cancelled\n"
msgstr "La reconnexion automatique est annulée\n"
#: src/common/command.c:1153
#: src/common/command.c:1163
#, c-format
msgid "%s internal commands:\n"
msgstr "Commandes internes %s :\n"
#: src/common/command.c:1164
#: src/common/command.c:1174
msgid "IRC commands:\n"
msgstr "Commandes IRC :\n"
#: src/common/command.c:1224
#: src/common/command.c:1234
#, c-format
msgid "No help available, \"%s\" is an unknown command\n"
msgstr "Pas d'aide disponible, la commande \"%s\" est inconnue\n"
#: src/common/command.c:1249
#: src/common/command.c:1259
msgid "Registered Perl scripts:\n"
msgstr "Scripts Perl enregistrés :\n"
#: src/common/command.c:1266 src/common/command.c:1288
#: src/common/command.c:1310
#: src/common/command.c:1276 src/common/command.c:1298
#: src/common/command.c:1320
msgid " (none)\n"
msgstr " (aucun)\n"
#: src/common/command.c:1271
#: src/common/command.c:1281
msgid "Perl message handlers:\n"
msgstr "Fonctions Perl pour messages :\n"
#: src/common/command.c:1280
#: src/common/command.c:1290
#, c-format
msgid " IRC(%s) => Perl(%s)\n"
msgstr " IRC(%s) => Perl(%s)\n"
#: src/common/command.c:1293
#: src/common/command.c:1303
msgid "Perl command handlers:\n"
msgstr "Commandes Perl :\n"
#: src/common/command.c:1302
#: src/common/command.c:1312
#, c-format
msgid " Command /%s => Perl(%s)\n"
msgstr " Commande /%s => Perl(%s)\n"
#: src/common/command.c:1322
#: src/common/command.c:1332
msgid "Perl scripts unloaded\n"
msgstr "Scripts Perl déchargés\n"
#: src/common/command.c:1348 src/common/command.c:2054
#: src/common/command.c:2066
#: src/common/command.c:1358 src/common/command.c:2063
#: src/common/command.c:2075
#, c-format
msgid "%s unknown option for \"%s\" command\n"
msgstr "%s option inconnue pour la commande \"%s\"\n"
#: src/common/command.c:1361
#: src/common/command.c:1371
msgid ""
"WeeChat was build without Perl support.\n"
"Please rebuild WeeChat with \"--enable-perl\" option for ./configure script\n"
@@ -2319,31 +2318,31 @@ msgstr ""
"Merci de reconstruire WeeChat avec l'option \"--enable-perl\" pour le "
"script ./configure\n"
#: src/common/command.c:1415
#: src/common/command.c:1425
msgid "No server.\n"
msgstr "Pas de serveur.\n"
#: src/common/command.c:1426
#: src/common/command.c:1436
#, c-format
msgid "Server '%s' not found.\n"
msgstr "Serveur '%s' non trouvé.\n"
#: src/common/command.c:1438
#: src/common/command.c:1448
#, c-format
msgid "%s missing servername for \"%s\" command\n"
msgstr "%s il manque le nom du serveur pour la commande \"%s\"\n"
#: src/common/command.c:1446
#: src/common/command.c:1456
#, c-format
msgid "%s too much arguments for \"%s\" command, ignoring arguments\n"
msgstr "%s trop de paramètres pour la commande \"%s\", paramètres ignorés\n"
#: src/common/command.c:1465
#: src/common/command.c:1475
#, c-format
msgid "%s server \"%s\" not found for \"%s\" command\n"
msgstr "%s le serveur \"%s\" n'existe pas pour la commande \"%s\"\n"
#: src/common/command.c:1473
#: src/common/command.c:1483
#, c-format
msgid ""
"%s you can not delete server \"%s\" because you are connected to. Try /"
@@ -2352,101 +2351,106 @@ msgstr ""
"%s vous ne pouvez pas supprimer le server \"%s\" car vous êtes connecté "
"dessus. Essayez /disconnect %s avant.\n"
#: src/common/command.c:1489 src/common/command.c:1630
#: src/common/command.c:1499 src/common/command.c:1640
msgid "Server"
msgstr "Serveur"
#: src/common/command.c:1492
#: src/common/command.c:1502
msgid "has been deleted\n"
msgstr "a été supprimé\n"
#: src/common/command.c:1507
#: src/common/command.c:1517
#, c-format
msgid "%s missing parameters for \"%s\" command\n"
msgstr "%s paramètres manquants pour la commande \"%s\"\n"
#: src/common/command.c:1517
#: src/common/command.c:1527
#, c-format
msgid "%s server \"%s\" already exists, can't create it!\n"
msgstr "%s le serveur \"%s\" existe déjà, impossible de le créer !\n"
#: src/common/command.c:1542 src/common/command.c:1570
#: src/common/command.c:1583 src/common/command.c:1609
#: src/common/command.c:1552 src/common/command.c:1580
#: src/common/command.c:1593 src/common/command.c:1619
#, c-format
msgid "%s missing password for \"%s\" parameter\n"
msgstr "%s mot de passe manquant pour le paramètre \"%s\"\n"
#: src/common/command.c:1555
#: src/common/command.c:1565
#, c-format
msgid "%s missing nick(s) for \"%s\" parameter\n"
msgstr "%s pseudo(s) manquant(s) pour le paramètre \"%s\"\n"
#: src/common/command.c:1596
#: src/common/command.c:1606
#, c-format
msgid "%s missing command for \"%s\" parameter\n"
msgstr "%s commande manquante pour le paramètre \"%s\"\n"
#: src/common/command.c:1633
#: src/common/command.c:1643
msgid "created\n"
msgstr "créé\n"
#: src/common/command.c:1639
#: src/common/command.c:1649
#, c-format
msgid "%s unable to create server\n"
msgstr "%s impossible de créer le serveur\n"
#: src/common/command.c:1696
#: src/common/command.c:1705
msgid "(unknown)"
msgstr "(inconnu)"
#: src/common/command.c:1719
#: src/common/command.c:1728
msgid "(password hidden) "
msgstr "(mot de passe caché)"
#: src/common/command.c:1815 src/common/command.c:1862
#: src/common/command.c:1792
#, c-format
msgid "%s server \"%s\" not found\n"
msgstr "%s serveur \"%s\" non trouvé\n"
#: src/common/command.c:1824 src/common/command.c:1871
#, c-format
msgid "%s config option \"%s\" not found\n"
msgstr "%s option de configuration \"%s\" non trouvée\n"
#: src/common/command.c:1820 src/common/command.c:1854
#: src/common/command.c:1829 src/common/command.c:1863
#, c-format
msgid "%s incorrect value for option \"%s\"\n"
msgstr "%s valeur incorrecte pour l'option \"%s\"\n"
#: src/common/command.c:1836
#: src/common/command.c:1845
#, c-format
msgid "%s option \"%s\" can not be changed while WeeChat is running\n"
msgstr "%s l'option \"%s\" ne peut pas être changée lorsque WeeChat tourne\n"
#: src/common/command.c:1938
#: src/common/command.c:1947
#, c-format
msgid "No config option found with \"%s\"\n"
msgstr "Aucune option de configuration trouvée avec \"%s\"\n"
#: src/common/command.c:1941
#: src/common/command.c:1950
msgid "No config option found\n"
msgstr "Aucune option de configuration trouvée\n"
#: src/common/command.c:1948
#: src/common/command.c:1957
#, c-format
msgid "config option(s) found with \"%s\"\n"
msgstr "option(s) de configuration trouvée(s) avec \"%s\"\n"
#: src/common/command.c:1951
#: src/common/command.c:1960
msgid "config option(s) found\n"
msgstr "option(s) de configuration trouvée(s)\n"
#: src/common/command.c:1971
#: src/common/command.c:1980
#, c-format
msgid "%s alias or command \"%s\" not found\n"
msgstr "%s alias ou commande \"%s\" non trouvé\n"
#: src/common/command.c:1981
#: src/common/command.c:1990
#, c-format
msgid "Alias \"%s\" removed\n"
msgstr "Alias \"%s\" supprimé\n"
#: src/common/command.c:2001
#: src/common/command.c:2010
msgid "Opened windows:\n"
msgstr "Fenêtres ouvertes:\n"
@@ -3477,5 +3481,17 @@ msgstr ""
msgid "saving config to disk\n"
msgstr "sauvegarde de la configuration sur disque\n"
#~ msgid "servername"
#~ msgstr "nom_serveur"
#~ msgid "%s cannot connect to irc server\n"
#~ msgstr "%s connexion au serveur irc impossible\n"
#~ msgid "%s: server IP is: %s\n"
#~ msgstr "%s: l'adresse IP du serveur est : %s\n"
#~ msgid "%s IRC command \"%s\" failed\n"
#~ msgstr "%s la commande IRC \"%s\" a échoué\n"
#~ msgid ") from "
#~ msgstr ") de "
+126 -122
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2005-02-20 01:03+0100\n"
"POT-Creation-Date: 2005-02-20 14:34+0100\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"
@@ -20,106 +20,106 @@ msgstr ""
msgid "%s cannot allocate new nick\n"
msgstr ""
#: src/irc/irc-server.c:139 src/common/weeconfig.c:1471
#: src/irc/irc-server.c:146 src/common/weeconfig.c:1471
msgid "Unable to get user's name"
msgstr ""
#: src/irc/irc-server.c:204
#: src/irc/irc-server.c:211
#, c-format
msgid "%s cannot allocate new server\n"
msgstr ""
#: src/irc/irc-server.c:405
#: src/irc/irc-server.c:412
#, c-format
msgid "%s error sending data to IRC server\n"
msgstr ""
#: src/irc/irc-server.c:425 src/irc/irc-server.c:438 src/irc/irc-server.c:504
#: src/irc/irc-server.c:432 src/irc/irc-server.c:445 src/irc/irc-server.c:511
#, c-format
msgid "%s not enough memory for received IRC message\n"
msgstr ""
#: src/irc/irc-server.c:513
#: src/irc/irc-server.c:520
#, c-format
msgid "%s unable to explode received buffer\n"
msgstr ""
#: src/irc/irc-server.c:587
#: src/irc/irc-server.c:594
#, c-format
msgid "%s Command '%s' failed!\n"
msgstr ""
#: src/irc/irc-server.c:592
#: src/irc/irc-server.c:599
#, c-format
msgid "%s No command to execute!\n"
msgstr ""
#: src/irc/irc-server.c:597
#: src/irc/irc-server.c:604
#, c-format
msgid "%s Unknown command: cmd=%s, args=%s\n"
msgstr ""
#: src/irc/irc-server.c:639
#: src/irc/irc-server.c:646
#, c-format
msgid "%s cannot read data from socket, disconnecting from server...\n"
msgstr ""
#: src/irc/irc-server.c:661
#, c-format
msgid "%s: connecting to %s:%d...\n"
msgstr ""
#: src/irc/irc-server.c:663
#, c-format
msgid "connecting to server %s:%d...\n"
msgstr ""
#: src/irc/irc-server.c:672
#, c-format
msgid "%s cannot create pipe\n"
msgstr ""
#: src/irc/irc-server.c:688
#, c-format
msgid "%s cannot set socket option \"SO_REUSEADDR\"\n"
msgstr ""
#: src/irc/irc-server.c:698
#, c-format
msgid "%s cannot set socket option \"SO_KEEPALIVE\"\n"
msgstr ""
#: src/irc/irc-server.c:708
#, c-format
msgid "%s address \"%s\" not found\n"
msgstr ""
#: src/irc/irc-server.c:733
#, c-format
msgid "%s IP address not found\n"
msgstr ""
#: src/irc/irc-server.c:744
#, c-format
msgid "%s: server IP is: %s\n"
msgstr ""
#: src/irc/irc-server.c:751
#, c-format
msgid "%s cannot connect to irc server\n"
msgstr ""
#: src/irc/irc-server.c:770
#, c-format
msgid "%s: Reconnecting to server...\n"
msgstr ""
#: src/irc/irc-server.c:783 src/irc/irc-server.c:860
#: src/irc/irc-server.c:718
#, c-format
msgid "%s: Reconnecting to server in %d seconds\n"
msgstr ""
#: src/irc/irc-server.c:827
#: src/irc/irc-server.c:749
#, c-format
msgid "%s address \"%s\" not found\n"
msgstr ""
#: src/irc/irc-server.c:758
#, c-format
msgid "%s IP address not found\n"
msgstr ""
#: src/irc/irc-server.c:766
#, c-format
msgid "%s connection refused\n"
msgstr ""
#: src/irc/irc-server.c:832
#, c-format
msgid "%s: connecting to %s:%d...\n"
msgstr ""
#: src/irc/irc-server.c:834
#, c-format
msgid "connecting to server %s:%d...\n"
msgstr ""
#: src/irc/irc-server.c:845
#, c-format
msgid "%s cannot create pipe\n"
msgstr ""
#: src/irc/irc-server.c:857
#, c-format
msgid "%s cannot create socket\n"
msgstr ""
#: src/irc/irc-server.c:869
#, c-format
msgid "%s cannot set socket option \"SO_REUSEADDR\"\n"
msgstr ""
#: src/irc/irc-server.c:880
#, c-format
msgid "%s cannot set socket option \"SO_KEEPALIVE\"\n"
msgstr ""
#: src/irc/irc-server.c:911
#, c-format
msgid "%s: Reconnecting to server...\n"
msgstr ""
#: src/irc/irc-server.c:960 src/irc/irc-server.c:965
msgid "Disconnected from server!\n"
msgstr ""
@@ -1110,7 +1110,7 @@ msgid "%s: using local hostname \"%s\"\n"
msgstr ""
#: src/irc/irc-send.c:267 src/irc/irc-send.c:278 src/irc/irc-send.c:748
#: src/irc/irc-send.c:822 src/common/command.c:1355
#: src/irc/irc-send.c:822 src/common/command.c:1365
#, c-format
msgid "%s wrong argument count for \"%s\" command\n"
msgstr ""
@@ -1822,7 +1822,7 @@ msgid "connect to a server"
msgstr ""
#: src/common/command.c:61 src/common/command.c:65
msgid "servername"
msgid "[servername]"
msgstr ""
#: src/common/command.c:62
@@ -1968,9 +1968,9 @@ msgid ""
"arg%s)\n"
msgstr ""
#: src/common/command.c:509
#: src/common/command.c:509 src/common/command.c:579
#, c-format
msgid "%s %s command \"%s\" failed\n"
msgid "%s command \"%s\" failed\n"
msgstr ""
#: src/common/command.c:537
@@ -1990,11 +1990,6 @@ msgstr ""
msgid "%s command \"%s\" needs a server connection!\n"
msgstr ""
#: src/common/command.c:579
#, c-format
msgid "%s IRC command \"%s\" failed\n"
msgstr ""
#: src/common/command.c:628
#, c-format
msgid "%s unknown command \"%s\" (type /help for help)\n"
@@ -2082,209 +2077,218 @@ msgstr ""
msgid "unknown parameter \"%s\" for \"%s\" command\n"
msgstr ""
#: src/common/command.c:1070
#: src/common/command.c:1073
#, c-format
msgid "%s already connected to server \"%s\"!\n"
msgstr ""
#: src/common/command.c:1090 src/common/command.c:1133
#: src/common/command.c:1783
#: src/common/command.c:1081
#, c-format
msgid "%s server \"%s\" not found\n"
msgid "%s currently connecting to server \"%s\"!\n"
msgstr ""
#: src/common/command.c:1116
#: src/common/command.c:1099 src/common/command.c:1144
#, c-format
msgid "%s server not found\n"
msgstr ""
#: src/common/command.c:1128
#, c-format
msgid "%s not connected to server \"%s\"!\n"
msgstr ""
#: src/common/command.c:1124
#: src/common/command.c:1136
msgid "Auto-reconnection is cancelled\n"
msgstr ""
#: src/common/command.c:1153
#: src/common/command.c:1163
#, c-format
msgid "%s internal commands:\n"
msgstr ""
#: src/common/command.c:1164
#: src/common/command.c:1174
msgid "IRC commands:\n"
msgstr ""
#: src/common/command.c:1224
#: src/common/command.c:1234
#, c-format
msgid "No help available, \"%s\" is an unknown command\n"
msgstr ""
#: src/common/command.c:1249
#: src/common/command.c:1259
msgid "Registered Perl scripts:\n"
msgstr ""
#: src/common/command.c:1266 src/common/command.c:1288
#: src/common/command.c:1310
#: src/common/command.c:1276 src/common/command.c:1298
#: src/common/command.c:1320
msgid " (none)\n"
msgstr ""
#: src/common/command.c:1271
#: src/common/command.c:1281
msgid "Perl message handlers:\n"
msgstr ""
#: src/common/command.c:1280
#: src/common/command.c:1290
#, c-format
msgid " IRC(%s) => Perl(%s)\n"
msgstr ""
#: src/common/command.c:1293
#: src/common/command.c:1303
msgid "Perl command handlers:\n"
msgstr ""
#: src/common/command.c:1302
#: src/common/command.c:1312
#, c-format
msgid " Command /%s => Perl(%s)\n"
msgstr ""
#: src/common/command.c:1322
#: src/common/command.c:1332
msgid "Perl scripts unloaded\n"
msgstr ""
#: src/common/command.c:1348 src/common/command.c:2054
#: src/common/command.c:2066
#: src/common/command.c:1358 src/common/command.c:2063
#: src/common/command.c:2075
#, c-format
msgid "%s unknown option for \"%s\" command\n"
msgstr ""
#: src/common/command.c:1361
#: src/common/command.c:1371
msgid ""
"WeeChat was build without Perl support.\n"
"Please rebuild WeeChat with \"--enable-perl\" option for ./configure script\n"
msgstr ""
#: src/common/command.c:1415
#: src/common/command.c:1425
msgid "No server.\n"
msgstr ""
#: src/common/command.c:1426
#: src/common/command.c:1436
#, c-format
msgid "Server '%s' not found.\n"
msgstr ""
#: src/common/command.c:1438
#: src/common/command.c:1448
#, c-format
msgid "%s missing servername for \"%s\" command\n"
msgstr ""
#: src/common/command.c:1446
#: src/common/command.c:1456
#, c-format
msgid "%s too much arguments for \"%s\" command, ignoring arguments\n"
msgstr ""
#: src/common/command.c:1465
#: src/common/command.c:1475
#, c-format
msgid "%s server \"%s\" not found for \"%s\" command\n"
msgstr ""
#: src/common/command.c:1473
#: src/common/command.c:1483
#, c-format
msgid ""
"%s you can not delete server \"%s\" because you are connected to. Try /"
"disconnect %s before.\n"
msgstr ""
#: src/common/command.c:1489 src/common/command.c:1630
#: src/common/command.c:1499 src/common/command.c:1640
msgid "Server"
msgstr ""
#: src/common/command.c:1492
#: src/common/command.c:1502
msgid "has been deleted\n"
msgstr ""
#: src/common/command.c:1507
#, c-format
msgid "%s missing parameters for \"%s\" command\n"
msgstr ""
#: src/common/command.c:1517
#, c-format
msgid "%s missing parameters for \"%s\" command\n"
msgstr ""
#: src/common/command.c:1527
#, c-format
msgid "%s server \"%s\" already exists, can't create it!\n"
msgstr ""
#: src/common/command.c:1542 src/common/command.c:1570
#: src/common/command.c:1583 src/common/command.c:1609
#: src/common/command.c:1552 src/common/command.c:1580
#: src/common/command.c:1593 src/common/command.c:1619
#, c-format
msgid "%s missing password for \"%s\" parameter\n"
msgstr ""
#: src/common/command.c:1555
#: src/common/command.c:1565
#, c-format
msgid "%s missing nick(s) for \"%s\" parameter\n"
msgstr ""
#: src/common/command.c:1596
#: src/common/command.c:1606
#, c-format
msgid "%s missing command for \"%s\" parameter\n"
msgstr ""
#: src/common/command.c:1633
#: src/common/command.c:1643
msgid "created\n"
msgstr ""
#: src/common/command.c:1639
#: src/common/command.c:1649
#, c-format
msgid "%s unable to create server\n"
msgstr ""
#: src/common/command.c:1696
#: src/common/command.c:1705
msgid "(unknown)"
msgstr ""
#: src/common/command.c:1719
#: src/common/command.c:1728
msgid "(password hidden) "
msgstr ""
#: src/common/command.c:1815 src/common/command.c:1862
#: src/common/command.c:1792
#, c-format
msgid "%s server \"%s\" not found\n"
msgstr ""
#: src/common/command.c:1824 src/common/command.c:1871
#, c-format
msgid "%s config option \"%s\" not found\n"
msgstr ""
#: src/common/command.c:1820 src/common/command.c:1854
#: src/common/command.c:1829 src/common/command.c:1863
#, c-format
msgid "%s incorrect value for option \"%s\"\n"
msgstr ""
#: src/common/command.c:1836
#: src/common/command.c:1845
#, c-format
msgid "%s option \"%s\" can not be changed while WeeChat is running\n"
msgstr ""
#: src/common/command.c:1938
#: src/common/command.c:1947
#, c-format
msgid "No config option found with \"%s\"\n"
msgstr ""
#: src/common/command.c:1941
#: src/common/command.c:1950
msgid "No config option found\n"
msgstr ""
#: src/common/command.c:1948
#: src/common/command.c:1957
#, c-format
msgid "config option(s) found with \"%s\"\n"
msgstr ""
#: src/common/command.c:1951
#: src/common/command.c:1960
msgid "config option(s) found\n"
msgstr ""
#: src/common/command.c:1971
#: src/common/command.c:1980
#, c-format
msgid "%s alias or command \"%s\" not found\n"
msgstr ""
#: src/common/command.c:1981
#: src/common/command.c:1990
#, c-format
msgid "Alias \"%s\" removed\n"
msgstr ""
#: src/common/command.c:2001
#: src/common/command.c:2010
msgid "Opened windows:\n"
msgstr ""
+28 -19
View File
@@ -58,13 +58,13 @@ t_weechat_command weechat_commands[] =
N_("-all: clear all windows"),
0, 1, weechat_cmd_clear, NULL },
{ "connect", N_("connect to a server"),
N_("servername"),
N_("[servername]"),
N_("servername: server name to connect"),
1, 1, weechat_cmd_connect, NULL },
0, 1, weechat_cmd_connect, NULL },
{ "disconnect", N_("disconnect from a server"),
N_("servername"),
N_("[servername]"),
N_("servername: server name to disconnect"),
1, 1, weechat_cmd_disconnect, NULL },
0, 1, weechat_cmd_disconnect, NULL },
{ "help", N_("display help about commands"),
N_("[command]"), N_("command: name of a WeeChat or IRC command"),
0, 1, weechat_cmd_help, NULL },
@@ -506,8 +506,8 @@ exec_weechat_command (t_irc_server *server, char *string)
{
irc_display_prefix (NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s %s command \"%s\" failed\n"),
WEECHAT_ERROR, PACKAGE_NAME, command + 1);
_("%s command \"%s\" failed\n"),
WEECHAT_ERROR, command + 1);
}
}
if (argv)
@@ -576,7 +576,7 @@ exec_weechat_command (t_irc_server *server, char *string)
{
irc_display_prefix (NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s IRC command \"%s\" failed\n"),
_("%s command \"%s\" failed\n"),
WEECHAT_ERROR, command + 1);
}
}
@@ -1060,7 +1060,10 @@ weechat_cmd_connect (int argc, char **argv)
/* make gcc happy */
(void) argc;
ptr_server = server_search (argv[0]);
if (argc == 1)
ptr_server = server_search (argv[0]);
else
ptr_server = SERVER(gui_current_window->buffer);
if (ptr_server)
{
if (ptr_server->is_connected)
@@ -1071,6 +1074,14 @@ weechat_cmd_connect (int argc, char **argv)
WEECHAT_ERROR, argv[0]);
return -1;
}
if (ptr_server->child_pid > 0)
{
irc_display_prefix (NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s currently connecting to server \"%s\"!\n"),
WEECHAT_ERROR, argv[0]);
return -1;
}
if (!ptr_server->buffer)
{
if (!gui_buffer_new (gui_current_window, ptr_server, NULL, 0, 1))
@@ -1080,15 +1091,12 @@ weechat_cmd_connect (int argc, char **argv)
{
ptr_server->reconnect_start = 0;
ptr_server->reconnect_join = (ptr_server->channels) ? 1 : 0;
irc_login (ptr_server);
}
}
else
{
irc_display_prefix (NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s server \"%s\" not found\n"),
WEECHAT_ERROR, argv[0]);
gui_printf (NULL, _("%s server not found\n"), WEECHAT_ERROR);
return -1;
}
return 0;
@@ -1106,10 +1114,14 @@ weechat_cmd_disconnect (int argc, char **argv)
/* make gcc happy */
(void) argc;
ptr_server = server_search (argv[0]);
if (argc == 1)
ptr_server = server_search (argv[0]);
else
ptr_server = SERVER(gui_current_window->buffer);
if (ptr_server)
{
if ((!ptr_server->is_connected) && (ptr_server->reconnect_start == 0))
if ((!ptr_server->is_connected) && (ptr_server->child_pid == 0)
&& (ptr_server->reconnect_start == 0))
{
irc_display_prefix (ptr_server->buffer, PREFIX_ERROR);
gui_printf (ptr_server->buffer,
@@ -1129,9 +1141,7 @@ weechat_cmd_disconnect (int argc, char **argv)
else
{
irc_display_prefix (NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s server \"%s\" not found\n"),
WEECHAT_ERROR, argv[0]);
gui_printf (NULL, _("%s server not found\n"), WEECHAT_ERROR);
return -1;
}
return 0;
@@ -1645,8 +1655,7 @@ weechat_cmd_server (int argc, char **argv)
if (new_server->autoconnect)
{
(void) gui_buffer_new (gui_current_window, new_server, NULL, 0, 1);
if (server_connect (new_server))
irc_login (new_server);
server_connect (new_server);
}
server_destroy (&server);
+18 -5
View File
@@ -768,8 +768,13 @@ gui_main_loop ()
}
}
if (ptr_server->sock4 >= 0)
FD_SET (ptr_server->sock4, &read_fd);
if (!ptr_server->is_connected && (ptr_server->child_pid > 0))
FD_SET (ptr_server->child_read, &read_fd);
else
{
if (ptr_server->sock4 >= 0)
FD_SET (ptr_server->sock4, &read_fd);
}
}
}
if (select (FD_SETSIZE, &read_fd, NULL, NULL, &timeout) > 0)
@@ -783,9 +788,17 @@ gui_main_loop ()
for (ptr_server = irc_servers; ptr_server;
ptr_server = ptr_server->next_server)
{
if ((ptr_server->sock4 >= 0) &&
(FD_ISSET (ptr_server->sock4, &read_fd)))
server_recv (ptr_server);
if (!ptr_server->is_connected && (ptr_server->child_pid > 0))
{
if (FD_ISSET (ptr_server->child_read, &read_fd))
server_child_read (ptr_server);
}
else
{
if ((ptr_server->sock4 >= 0) &&
(FD_ISSET (ptr_server->sock4, &read_fd)))
server_recv (ptr_server);
}
}
}
}
+1 -1
View File
@@ -1600,7 +1600,7 @@ irc_cmd_recv_004 (t_irc_server *server, char *host, char *arguments)
}
/* auto-join after disconnection (only rejoins opened channels) */
if (server->reconnect_join)
if (server->reconnect_join && server->channels)
{
for (ptr_channel = server->channels; ptr_channel;
ptr_channel = ptr_channel->next_channel)
+230 -115
View File
@@ -27,12 +27,14 @@
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <signal.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <pwd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
@@ -57,6 +59,7 @@ int check_away = 0;
void
server_init (t_irc_server *server)
{
/* user choices */
server->name = NULL;
server->autoconnect = 0;
server->autoreconnect = 1;
@@ -73,14 +76,18 @@ server_init (t_irc_server *server)
server->command = NULL;
server->command_delay = 1;
server->autojoin = NULL;
server->autorejoin = 0;
/* internal vars */
server->child_pid = 0;
server->child_read = -1;
server->child_write = -1;
server->sock4 = -1;
server->is_connected = 0;
server->unterminated_message = NULL;
server->nick = NULL;
server->is_connected = 0;
server->reconnect_start = 0;
server->reconnect_join = 0;
server->sock4 = -1;
server->server_read = -1;
server->server_write = -1;
server->is_away = 0;
server->away_time = 0;
server->lag = 0;
@@ -642,6 +649,174 @@ server_recv (t_irc_server *server)
}
}
/*
* server_kill_child: kill child process and close pipe
*/
void
server_kill_child (t_irc_server *server)
{
/* kill process */
if (server->child_pid > 0)
{
kill (server->child_pid, SIGKILL);
waitpid (server->child_pid, NULL, 0);
server->child_pid = 0;
}
/* close pipe used with child */
if (server->child_read != -1)
{
close (server->child_read);
server->child_read = -1;
}
if (server->child_write != -1)
{
close (server->child_write);
server->child_write = -1;
}
}
/*
* server_close_connection: close server connection (kill child, close socket/pipes)
*/
void
server_close_connection (t_irc_server *server)
{
server_kill_child (server);
/* close network socket */
if (server->sock4 != -1)
{
close (server->sock4);
server->sock4 = -1;
}
/* free any pending message */
if (server->unterminated_message)
{
free (server->unterminated_message);
server->unterminated_message = NULL;
}
/* server is now disconnected */
server->is_connected = 0;
}
/*
* server_reconnect_schedule: schedule reconnect for a server
*/
void
server_reconnect_schedule (t_irc_server *server)
{
if (server->autoreconnect)
{
server->reconnect_start = time (NULL);
irc_display_prefix (server->buffer, PREFIX_INFO);
gui_printf (server->buffer, _("%s: Reconnecting to server in %d seconds\n"),
PACKAGE_NAME, server->autoreconnect_delay);
}
else
server->reconnect_start = 0;
}
/*
* server_child_read: read connection progress from child process
*/
void
server_child_read (t_irc_server *server)
{
char buffer[1];
int num_read;
num_read = read (server->child_read, buffer, sizeof (buffer));
if (num_read != -1)
{
switch (buffer[0])
{
/* connection OK */
case '0':
server_kill_child (server);
irc_login (server);
break;
/* adress not found */
case '1':
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s address \"%s\" not found\n"),
WEECHAT_ERROR, server->address);
server_close_connection (server);
server_reconnect_schedule (server);
break;
/* IP address not found */
case '2':
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s IP address not found\n"), WEECHAT_ERROR);
server_close_connection (server);
server_reconnect_schedule (server);
break;
/* connection refused */
case '3':
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s connection refused\n"), WEECHAT_ERROR);
server_close_connection (server);
server_reconnect_schedule (server);
break;
}
}
}
/*
* server_child: child process trying to connect to server
*/
int
server_child (t_irc_server *server)
{
struct hostent *ip4_hostent;
struct sockaddr_in addr;
char *ip_address;
int error;
/* bind to hostname */
ip4_hostent = gethostbyname (server->address);
if (!ip4_hostent)
{
write (server->child_write, "1", 1);
return 0;
}
memset (&addr, 0, sizeof (addr));
memcpy (&addr.sin_addr, ip4_hostent->h_addr, ip4_hostent->h_length);
addr.sin_port = htons (server->port);
addr.sin_family = AF_INET;
/* find IP address */
ip_address = inet_ntoa (addr.sin_addr);
if (!ip_address)
{
write (server->child_write, "2", 1);
return 0;
}
/* connect to server */
error = connect (server->sock4, (struct sockaddr *) &addr, sizeof (addr));
if (error != 0)
{
write (server->child_write, "3", 1);
return 0;
}
/* connection OK */
write (server->child_write, "0", 1);
return 0;
}
/*
* server_connect: connect to an IRC server
*/
@@ -649,12 +824,8 @@ server_recv (t_irc_server *server)
int
server_connect (t_irc_server *server)
{
int set;
struct hostent *ip4_hostent;
struct sockaddr_in addr;
char *ip_address;
int error;
int server_pipe[2];
int child_pipe[2], set;
pid_t pid;
irc_display_prefix (server->buffer, PREFIX_INFO);
gui_printf (server->buffer,
@@ -662,100 +833,70 @@ server_connect (t_irc_server *server)
PACKAGE_NAME, server->address, server->port);
wee_log_printf (_("connecting to server %s:%d...\n"),
server->address, server->port);
server->is_connected = 0;
/* create pipe */
if (pipe (server_pipe) < 0)
/* close any opened connection and kill child process if running */
server_close_connection (server);
/* create pipe for child process */
if (pipe (child_pipe) < 0)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s cannot create pipe\n"), WEECHAT_ERROR);
server_free (server);
return 0;
}
server->server_read = server_pipe[0];
server->server_write = server_pipe[1];
server->child_read = child_pipe[0];
server->child_write = child_pipe[1];
/* create socket and set options */
server->sock4 = socket (AF_INET, SOCK_STREAM, 0);
if (server->sock4 == -1)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s cannot create socket\n"), WEECHAT_ERROR);
server_close_connection (server);
return 0;
}
/* set SO_REUSEADDR option for socket */
set = 1;
if (setsockopt
(server->sock4, SOL_SOCKET, SO_REUSEADDR, (char *) &set,
sizeof (set)) == -1)
if (setsockopt (server->sock4, SOL_SOCKET, SO_REUSEADDR,
(void *) &set, sizeof (set)) == -1)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s cannot set socket option \"SO_REUSEADDR\"\n"),
WEECHAT_ERROR);
WEECHAT_WARNING);
}
/* set SO_KEEPALIVE option for socket */
set = 1;
if (setsockopt
(server->sock4, SOL_SOCKET, SO_KEEPALIVE, (char *) &set,
sizeof (set)) == -1)
if (setsockopt (server->sock4, SOL_SOCKET, SO_KEEPALIVE,
(void *) &set, sizeof (set)) == -1)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s cannot set socket option \"SO_KEEPALIVE\"\n"),
WEECHAT_ERROR);
WEECHAT_WARNING);
}
/* bind to hostname */
ip4_hostent = gethostbyname (server->address);
if (!ip4_hostent)
switch (pid = fork ())
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s address \"%s\" not found\n"),
WEECHAT_ERROR, server->address);
close (server->server_read);
close (server->server_write);
close (server->sock4);
server->sock4 = -1;
return 0;
}
memset (&addr, 0, sizeof (addr));
memcpy (&addr.sin_addr, ip4_hostent->h_addr, ip4_hostent->h_length);
addr.sin_port = htons (server->port);
addr.sin_family = AF_INET;
/*error = bind(server->sock4, (struct sockaddr *)(&addr), sizeof(addr));
if (error != 0)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s can't bind to hostname\n"), WEECHAT_ERROR);
return 0;
}*/
ip_address = inet_ntoa (addr.sin_addr);
if (!ip_address)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s IP address not found\n"), WEECHAT_ERROR);
close (server->server_read);
close (server->server_write);
close (server->sock4);
server->sock4 = -1;
return 0;
}
/* connection to server */
irc_display_prefix (server->buffer, PREFIX_INFO);
gui_printf (server->buffer,
_("%s: server IP is: %s\n"), PACKAGE_NAME, ip_address);
error = connect (server->sock4, (struct sockaddr *) &addr, sizeof (addr));
if (error != 0)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s cannot connect to irc server\n"), WEECHAT_ERROR);
close (server->server_read);
close (server->server_write);
close (server->sock4);
server->sock4 = -1;
return 0;
/* fork failed */
case -1:
server_close_connection (server);
return 0;
/* child process */
case 0:
setuid (getuid ());
server_child (server);
_exit (EXIT_SUCCESS);
}
/* parent process go on here */
server->child_pid = pid;
return 1;
}
@@ -772,17 +913,9 @@ server_reconnect (t_irc_server *server)
server->reconnect_start = 0;
if (server_connect (server))
{
server->reconnect_join = 1;
irc_login (server);
}
else
{
server->reconnect_start = time (NULL);
irc_display_prefix (server->buffer, PREFIX_INFO);
gui_printf (server->buffer, _("%s: Reconnecting to server in %d seconds\n"),
PACKAGE_NAME, server->autoreconnect_delay);
}
server_reconnect_schedule (server);
}
/*
@@ -801,8 +934,8 @@ server_auto_connect (int command_line)
|| ((!command_line) && (ptr_server->autoconnect)) )
{
(void) gui_buffer_new (gui_current_window, ptr_server, NULL, 0, 1);
if (server_connect (ptr_server))
irc_login (ptr_server);
gui_redraw_buffer (gui_current_window->buffer);
server_connect (ptr_server);
}
}
}
@@ -828,24 +961,11 @@ server_disconnect (t_irc_server *server, int reconnect)
}
}
/* close communication with server */
if (server->server_read >= 0)
close (server->server_read);
server->server_read = -1;
irc_display_prefix (server->buffer, PREFIX_INFO);
gui_printf (server->buffer, _("Disconnected from server!\n"));
if (server->server_write >= 0)
close (server->server_write);
server->server_write = -1;
server_close_connection (server);
if (server->sock4 >= 0)
close (server->sock4);
server->sock4 = -1;
if (server->unterminated_message)
free (server->unterminated_message);
server->unterminated_message = NULL;
server->is_connected = 0;
server->is_away = 0;
server->away_time = 0;
server->lag = 0;
@@ -854,12 +974,7 @@ server_disconnect (t_irc_server *server, int reconnect)
server->lag_next_check = time (NULL) + cfg_irc_lag_check;
if ((reconnect) && (server->autoreconnect))
{
server->reconnect_start = time (NULL);
irc_display_prefix (server->buffer, PREFIX_INFO);
gui_printf (server->buffer, _("%s: Reconnecting to server in %d seconds\n"),
PACKAGE_NAME, server->autoreconnect_delay);
}
server_reconnect_schedule (server);
else
server->reconnect_start = 0;
+7 -4
View File
@@ -23,6 +23,7 @@
#include <time.h>
#include <sys/time.h>
#include <sys/types.h>
#include "../gui/gui.h"
/* prefixes for chat window */
@@ -138,14 +139,15 @@ struct t_irc_server
int autorejoin; /* auto rejoin channels when kicked */
/* internal vars */
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 */
int sock4; /* socket for server */
int is_connected; /* 1 if WeeChat is connected to server */
char *unterminated_message; /* beginning of a message in input buf */
char *nick; /* current nickname */
int is_connected; /* 1 if WeeChat is connected to server */
time_t reconnect_start; /* this time + delay = reconnect time */
int reconnect_join; /* 1 if channels opened to rejoin */
int sock4; /* socket for server */
int server_read; /* pipe for reading server data */
int server_write; /* pipe for sending data to server */
int is_away; /* 1 is user is marker as away */
time_t away_time; /* time() when user marking as away */
int lag; /* lag (in milliseconds) */
@@ -235,6 +237,7 @@ extern t_irc_server *server_new (char *, int, int, int, int, char *, int, char *
extern int server_send (t_irc_server *, char *, int);
extern void server_sendf (t_irc_server *, char *, ...);
extern void server_recv (t_irc_server *);
extern void server_child_read (t_irc_server *);
extern int server_connect (t_irc_server *);
extern void server_reconnect (t_irc_server *);
extern void server_auto_connect (int);
+1
View File
@@ -6,6 +6,7 @@ ChangeLog - 2005-02-20
Version 0.1.1 (under dev!):
* added DCC send
* connection to IRC server is now made by child process (non blocking)
* added support for UnrealIrcd ("~" for chan owner, "&" for chan admin)
* on server buffer, only server messages are logged
* improved /help command output
+4 -3
View File
@@ -1,7 +1,7 @@
WeeChat - Wee Enhanced Environment for Chat
===========================================
TODO - 2005-02-12
TODO - 2005-02-20
Legend:
# done
@@ -19,7 +19,7 @@ v0.1.1:
- *BSD version
* IRC protocol:
+ "/dcc" command (for chat and sending/receiving files)
# "/dcc send" command
- customizable CTCP version reply
* Interface:
@@ -27,13 +27,14 @@ v0.1.1:
+ internationalization (traduce WeeChat in many languages)
* TCP/IP communication:
- connect to server with child process (background)
# connect to server with child process (background)
Future versions:
---------------
* IRC protocol:
- "/dcc chat" command (and incoming DCC chats)
- complete "/list" command: add regexp search, display only channels that
match regexp
- "/ignore" and "/unignore" commands: hide all that is write by a given
+138 -122
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.1.1-cvs\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2005-02-20 01:03+0100\n"
"POT-Creation-Date: 2005-02-20 14:34+0100\n"
"PO-Revision-Date: 2005-02-12 12:00+0100\n"
"Last-Translator: FlashCode <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -20,107 +20,107 @@ msgstr ""
msgid "%s cannot allocate new nick\n"
msgstr "%s ompossible d'allouer un nouveau pseudo\n"
#: src/irc/irc-server.c:139 src/common/weeconfig.c:1471
#: src/irc/irc-server.c:146 src/common/weeconfig.c:1471
msgid "Unable to get user's name"
msgstr "Impossible de déterminer le nom d'utilisateur"
#: src/irc/irc-server.c:204
#: src/irc/irc-server.c:211
#, c-format
msgid "%s cannot allocate new server\n"
msgstr "%s impossible d'allouer un nouveau serveur\n"
#: src/irc/irc-server.c:405
#: src/irc/irc-server.c:412
#, c-format
msgid "%s error sending data to IRC server\n"
msgstr "%s erreur d'envoi de données au serveur IRC\n"
#: src/irc/irc-server.c:425 src/irc/irc-server.c:438 src/irc/irc-server.c:504
#: src/irc/irc-server.c:432 src/irc/irc-server.c:445 src/irc/irc-server.c:511
#, c-format
msgid "%s not enough memory for received IRC message\n"
msgstr "%s mémoire insuffisante pour un message IRC reçu\n"
#: src/irc/irc-server.c:513
#: src/irc/irc-server.c:520
#, c-format
msgid "%s unable to explode received buffer\n"
msgstr "%s impossible d'exploser le tampon de réception\n"
#: src/irc/irc-server.c:587
#: src/irc/irc-server.c:594
#, c-format
msgid "%s Command '%s' failed!\n"
msgstr "%s La commande '%s' a échoué !\n"
#: src/irc/irc-server.c:592
#: src/irc/irc-server.c:599
#, c-format
msgid "%s No command to execute!\n"
msgstr "%s Pas de commande à exécuter !\n"
#: src/irc/irc-server.c:597
#: src/irc/irc-server.c:604
#, c-format
msgid "%s Unknown command: cmd=%s, args=%s\n"
msgstr "%s Commande inconnue: cmd=%s, params=%s\n"
#: src/irc/irc-server.c:639
#: src/irc/irc-server.c:646
#, c-format
msgid "%s cannot read data from socket, disconnecting from server...\n"
msgstr ""
"%s impossible de lire des données sur la socket, déconnexion du serveur...\n"
#: src/irc/irc-server.c:661
#, c-format
msgid "%s: connecting to %s:%d...\n"
msgstr "%s: connexion à %s:%d...\n"
#: src/irc/irc-server.c:663
#, c-format
msgid "connecting to server %s:%d...\n"
msgstr "connexion au serveur %s:%d...\n"
#: src/irc/irc-server.c:672
#, c-format
msgid "%s cannot create pipe\n"
msgstr "%s impossible de créer le pipe\n"
#: src/irc/irc-server.c:688
#, c-format
msgid "%s cannot set socket option \"SO_REUSEADDR\"\n"
msgstr "%s impossible de paramétrer l'option socket \"SO_REUSEADDR\"\n"
#: src/irc/irc-server.c:698
#, c-format
msgid "%s cannot set socket option \"SO_KEEPALIVE\"\n"
msgstr "%s impossible de paramétrer l'option socket \"SO_KEEPALIVE\"\n"
#: src/irc/irc-server.c:708
#, c-format
msgid "%s address \"%s\" not found\n"
msgstr "%s adresse \"%s\" introuvable\n"
#: src/irc/irc-server.c:733
#, c-format
msgid "%s IP address not found\n"
msgstr "%s adresse IP introuvable\n"
#: src/irc/irc-server.c:744
#, c-format
msgid "%s: server IP is: %s\n"
msgstr "%s: l'adresse IP du serveur est : %s\n"
#: src/irc/irc-server.c:751
#, c-format
msgid "%s cannot connect to irc server\n"
msgstr "%s connexion au serveur irc impossible\n"
#: src/irc/irc-server.c:770
#, c-format
msgid "%s: Reconnecting to server...\n"
msgstr "%s: Reconnexion au serveur...\n"
#: src/irc/irc-server.c:783 src/irc/irc-server.c:860
#: src/irc/irc-server.c:718
#, c-format
msgid "%s: Reconnecting to server in %d seconds\n"
msgstr "%s: Reconnexion au serveur dans %d secondes\n"
#: src/irc/irc-server.c:827
#: src/irc/irc-server.c:749
#, c-format
msgid "%s address \"%s\" not found\n"
msgstr "%s adresse \"%s\" introuvable\n"
#: src/irc/irc-server.c:758
#, c-format
msgid "%s IP address not found\n"
msgstr "%s adresse IP introuvable\n"
#: src/irc/irc-server.c:766
#, c-format
msgid "%s connection refused\n"
msgstr "%s connexion refusée\n"
#: src/irc/irc-server.c:832
#, c-format
msgid "%s: connecting to %s:%d...\n"
msgstr "%s: connexion à %s:%d...\n"
#: src/irc/irc-server.c:834
#, c-format
msgid "connecting to server %s:%d...\n"
msgstr "connexion au serveur %s:%d...\n"
#: src/irc/irc-server.c:845
#, c-format
msgid "%s cannot create pipe\n"
msgstr "%s impossible de créer le pipe\n"
#: src/irc/irc-server.c:857
#, c-format
msgid "%s cannot create socket\n"
msgstr "%s impossible de créer la socket\n"
#: src/irc/irc-server.c:869
#, c-format
msgid "%s cannot set socket option \"SO_REUSEADDR\"\n"
msgstr "%s impossible de paramétrer l'option socket \"SO_REUSEADDR\"\n"
#: src/irc/irc-server.c:880
#, c-format
msgid "%s cannot set socket option \"SO_KEEPALIVE\"\n"
msgstr "%s impossible de paramétrer l'option socket \"SO_KEEPALIVE\"\n"
#: src/irc/irc-server.c:911
#, c-format
msgid "%s: Reconnecting to server...\n"
msgstr "%s: Reconnexion au serveur...\n"
#: src/irc/irc-server.c:960 src/irc/irc-server.c:965
msgid "Disconnected from server!\n"
msgstr "Déconnecté du serveur !\n"
@@ -1204,7 +1204,7 @@ msgid "%s: using local hostname \"%s\"\n"
msgstr "%s: utilisation du nom de machine local \"%s\"\n"
#: src/irc/irc-send.c:267 src/irc/irc-send.c:278 src/irc/irc-send.c:748
#: src/irc/irc-send.c:822 src/common/command.c:1355
#: src/irc/irc-send.c:822 src/common/command.c:1365
#, c-format
msgid "%s wrong argument count for \"%s\" command\n"
msgstr "%s nombre de paramètres erroné pour la commande \"%s\"\n"
@@ -1948,8 +1948,8 @@ msgid "connect to a server"
msgstr "se connecter à un serveur"
#: src/common/command.c:61 src/common/command.c:65
msgid "servername"
msgstr "nom_serveur"
msgid "[servername]"
msgstr "[nom_serveur]"
#: src/common/command.c:62
msgid "servername: server name to connect"
@@ -2119,10 +2119,10 @@ msgstr ""
"%s nombre de paramètres incorrect pour la commande %s \"%s\" (attendu: entre "
"%d et %d paramètre%s)\n"
#: src/common/command.c:509
#: src/common/command.c:509 src/common/command.c:579
#, c-format
msgid "%s %s command \"%s\" failed\n"
msgstr "%s %s la commande \"%s\" a échoué\n"
msgid "%s command \"%s\" failed\n"
msgstr "%s la commande \"%s\" a échoué\n"
#: src/common/command.c:537
#, c-format
@@ -2145,11 +2145,6 @@ msgstr ""
msgid "%s command \"%s\" needs a server connection!\n"
msgstr "%s la commande \"%s\" nécessite une connexion au serveur !\n"
#: src/common/command.c:579
#, c-format
msgid "%s IRC command \"%s\" failed\n"
msgstr "%s la commande IRC \"%s\" a échoué\n"
#: src/common/command.c:628
#, c-format
msgid "%s unknown command \"%s\" (type /help for help)\n"
@@ -2239,78 +2234,82 @@ msgstr "%s buffer \"%s\" non trouv
msgid "unknown parameter \"%s\" for \"%s\" command\n"
msgstr "paramètre inconnu \"%s\" pour la commande \"%s\"\n"
#: src/common/command.c:1070
#: src/common/command.c:1073
#, c-format
msgid "%s already connected to server \"%s\"!\n"
msgstr "%s déjà connecté au serveur \"%s\" !\n"
#: src/common/command.c:1090 src/common/command.c:1133
#: src/common/command.c:1783
#: src/common/command.c:1081
#, c-format
msgid "%s server \"%s\" not found\n"
msgstr "%s serveur \"%s\" non trouvé\n"
msgid "%s currently connecting to server \"%s\"!\n"
msgstr "%s une connexion vers le serveur \"%s\" est en cours !\n"
#: src/common/command.c:1116
#: src/common/command.c:1099 src/common/command.c:1144
#, c-format
msgid "%s server not found\n"
msgstr "%s serveur non trouvé\n"
#: src/common/command.c:1128
#, c-format
msgid "%s not connected to server \"%s\"!\n"
msgstr "%s non connecté au serveur \"%s\" !\n"
#: src/common/command.c:1124
#: src/common/command.c:1136
msgid "Auto-reconnection is cancelled\n"
msgstr "La reconnexion automatique est annulée\n"
#: src/common/command.c:1153
#: src/common/command.c:1163
#, c-format
msgid "%s internal commands:\n"
msgstr "Commandes internes %s :\n"
#: src/common/command.c:1164
#: src/common/command.c:1174
msgid "IRC commands:\n"
msgstr "Commandes IRC :\n"
#: src/common/command.c:1224
#: src/common/command.c:1234
#, c-format
msgid "No help available, \"%s\" is an unknown command\n"
msgstr "Pas d'aide disponible, la commande \"%s\" est inconnue\n"
#: src/common/command.c:1249
#: src/common/command.c:1259
msgid "Registered Perl scripts:\n"
msgstr "Scripts Perl enregistrés :\n"
#: src/common/command.c:1266 src/common/command.c:1288
#: src/common/command.c:1310
#: src/common/command.c:1276 src/common/command.c:1298
#: src/common/command.c:1320
msgid " (none)\n"
msgstr " (aucun)\n"
#: src/common/command.c:1271
#: src/common/command.c:1281
msgid "Perl message handlers:\n"
msgstr "Fonctions Perl pour messages :\n"
#: src/common/command.c:1280
#: src/common/command.c:1290
#, c-format
msgid " IRC(%s) => Perl(%s)\n"
msgstr " IRC(%s) => Perl(%s)\n"
#: src/common/command.c:1293
#: src/common/command.c:1303
msgid "Perl command handlers:\n"
msgstr "Commandes Perl :\n"
#: src/common/command.c:1302
#: src/common/command.c:1312
#, c-format
msgid " Command /%s => Perl(%s)\n"
msgstr " Commande /%s => Perl(%s)\n"
#: src/common/command.c:1322
#: src/common/command.c:1332
msgid "Perl scripts unloaded\n"
msgstr "Scripts Perl déchargés\n"
#: src/common/command.c:1348 src/common/command.c:2054
#: src/common/command.c:2066
#: src/common/command.c:1358 src/common/command.c:2063
#: src/common/command.c:2075
#, c-format
msgid "%s unknown option for \"%s\" command\n"
msgstr "%s option inconnue pour la commande \"%s\"\n"
#: src/common/command.c:1361
#: src/common/command.c:1371
msgid ""
"WeeChat was build without Perl support.\n"
"Please rebuild WeeChat with \"--enable-perl\" option for ./configure script\n"
@@ -2319,31 +2318,31 @@ msgstr ""
"Merci de reconstruire WeeChat avec l'option \"--enable-perl\" pour le "
"script ./configure\n"
#: src/common/command.c:1415
#: src/common/command.c:1425
msgid "No server.\n"
msgstr "Pas de serveur.\n"
#: src/common/command.c:1426
#: src/common/command.c:1436
#, c-format
msgid "Server '%s' not found.\n"
msgstr "Serveur '%s' non trouvé.\n"
#: src/common/command.c:1438
#: src/common/command.c:1448
#, c-format
msgid "%s missing servername for \"%s\" command\n"
msgstr "%s il manque le nom du serveur pour la commande \"%s\"\n"
#: src/common/command.c:1446
#: src/common/command.c:1456
#, c-format
msgid "%s too much arguments for \"%s\" command, ignoring arguments\n"
msgstr "%s trop de paramètres pour la commande \"%s\", paramètres ignorés\n"
#: src/common/command.c:1465
#: src/common/command.c:1475
#, c-format
msgid "%s server \"%s\" not found for \"%s\" command\n"
msgstr "%s le serveur \"%s\" n'existe pas pour la commande \"%s\"\n"
#: src/common/command.c:1473
#: src/common/command.c:1483
#, c-format
msgid ""
"%s you can not delete server \"%s\" because you are connected to. Try /"
@@ -2352,101 +2351,106 @@ msgstr ""
"%s vous ne pouvez pas supprimer le server \"%s\" car vous êtes connecté "
"dessus. Essayez /disconnect %s avant.\n"
#: src/common/command.c:1489 src/common/command.c:1630
#: src/common/command.c:1499 src/common/command.c:1640
msgid "Server"
msgstr "Serveur"
#: src/common/command.c:1492
#: src/common/command.c:1502
msgid "has been deleted\n"
msgstr "a été supprimé\n"
#: src/common/command.c:1507
#: src/common/command.c:1517
#, c-format
msgid "%s missing parameters for \"%s\" command\n"
msgstr "%s paramètres manquants pour la commande \"%s\"\n"
#: src/common/command.c:1517
#: src/common/command.c:1527
#, c-format
msgid "%s server \"%s\" already exists, can't create it!\n"
msgstr "%s le serveur \"%s\" existe déjà, impossible de le créer !\n"
#: src/common/command.c:1542 src/common/command.c:1570
#: src/common/command.c:1583 src/common/command.c:1609
#: src/common/command.c:1552 src/common/command.c:1580
#: src/common/command.c:1593 src/common/command.c:1619
#, c-format
msgid "%s missing password for \"%s\" parameter\n"
msgstr "%s mot de passe manquant pour le paramètre \"%s\"\n"
#: src/common/command.c:1555
#: src/common/command.c:1565
#, c-format
msgid "%s missing nick(s) for \"%s\" parameter\n"
msgstr "%s pseudo(s) manquant(s) pour le paramètre \"%s\"\n"
#: src/common/command.c:1596
#: src/common/command.c:1606
#, c-format
msgid "%s missing command for \"%s\" parameter\n"
msgstr "%s commande manquante pour le paramètre \"%s\"\n"
#: src/common/command.c:1633
#: src/common/command.c:1643
msgid "created\n"
msgstr "créé\n"
#: src/common/command.c:1639
#: src/common/command.c:1649
#, c-format
msgid "%s unable to create server\n"
msgstr "%s impossible de créer le serveur\n"
#: src/common/command.c:1696
#: src/common/command.c:1705
msgid "(unknown)"
msgstr "(inconnu)"
#: src/common/command.c:1719
#: src/common/command.c:1728
msgid "(password hidden) "
msgstr "(mot de passe caché)"
#: src/common/command.c:1815 src/common/command.c:1862
#: src/common/command.c:1792
#, c-format
msgid "%s server \"%s\" not found\n"
msgstr "%s serveur \"%s\" non trouvé\n"
#: src/common/command.c:1824 src/common/command.c:1871
#, c-format
msgid "%s config option \"%s\" not found\n"
msgstr "%s option de configuration \"%s\" non trouvée\n"
#: src/common/command.c:1820 src/common/command.c:1854
#: src/common/command.c:1829 src/common/command.c:1863
#, c-format
msgid "%s incorrect value for option \"%s\"\n"
msgstr "%s valeur incorrecte pour l'option \"%s\"\n"
#: src/common/command.c:1836
#: src/common/command.c:1845
#, c-format
msgid "%s option \"%s\" can not be changed while WeeChat is running\n"
msgstr "%s l'option \"%s\" ne peut pas être changée lorsque WeeChat tourne\n"
#: src/common/command.c:1938
#: src/common/command.c:1947
#, c-format
msgid "No config option found with \"%s\"\n"
msgstr "Aucune option de configuration trouvée avec \"%s\"\n"
#: src/common/command.c:1941
#: src/common/command.c:1950
msgid "No config option found\n"
msgstr "Aucune option de configuration trouvée\n"
#: src/common/command.c:1948
#: src/common/command.c:1957
#, c-format
msgid "config option(s) found with \"%s\"\n"
msgstr "option(s) de configuration trouvée(s) avec \"%s\"\n"
#: src/common/command.c:1951
#: src/common/command.c:1960
msgid "config option(s) found\n"
msgstr "option(s) de configuration trouvée(s)\n"
#: src/common/command.c:1971
#: src/common/command.c:1980
#, c-format
msgid "%s alias or command \"%s\" not found\n"
msgstr "%s alias ou commande \"%s\" non trouvé\n"
#: src/common/command.c:1981
#: src/common/command.c:1990
#, c-format
msgid "Alias \"%s\" removed\n"
msgstr "Alias \"%s\" supprimé\n"
#: src/common/command.c:2001
#: src/common/command.c:2010
msgid "Opened windows:\n"
msgstr "Fenêtres ouvertes:\n"
@@ -3477,5 +3481,17 @@ msgstr ""
msgid "saving config to disk\n"
msgstr "sauvegarde de la configuration sur disque\n"
#~ msgid "servername"
#~ msgstr "nom_serveur"
#~ msgid "%s cannot connect to irc server\n"
#~ msgstr "%s connexion au serveur irc impossible\n"
#~ msgid "%s: server IP is: %s\n"
#~ msgstr "%s: l'adresse IP du serveur est : %s\n"
#~ msgid "%s IRC command \"%s\" failed\n"
#~ msgstr "%s la commande IRC \"%s\" a échoué\n"
#~ msgid ") from "
#~ msgstr ") de "
+126 -122
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2005-02-20 01:03+0100\n"
"POT-Creation-Date: 2005-02-20 14:34+0100\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"
@@ -20,106 +20,106 @@ msgstr ""
msgid "%s cannot allocate new nick\n"
msgstr ""
#: src/irc/irc-server.c:139 src/common/weeconfig.c:1471
#: src/irc/irc-server.c:146 src/common/weeconfig.c:1471
msgid "Unable to get user's name"
msgstr ""
#: src/irc/irc-server.c:204
#: src/irc/irc-server.c:211
#, c-format
msgid "%s cannot allocate new server\n"
msgstr ""
#: src/irc/irc-server.c:405
#: src/irc/irc-server.c:412
#, c-format
msgid "%s error sending data to IRC server\n"
msgstr ""
#: src/irc/irc-server.c:425 src/irc/irc-server.c:438 src/irc/irc-server.c:504
#: src/irc/irc-server.c:432 src/irc/irc-server.c:445 src/irc/irc-server.c:511
#, c-format
msgid "%s not enough memory for received IRC message\n"
msgstr ""
#: src/irc/irc-server.c:513
#: src/irc/irc-server.c:520
#, c-format
msgid "%s unable to explode received buffer\n"
msgstr ""
#: src/irc/irc-server.c:587
#: src/irc/irc-server.c:594
#, c-format
msgid "%s Command '%s' failed!\n"
msgstr ""
#: src/irc/irc-server.c:592
#: src/irc/irc-server.c:599
#, c-format
msgid "%s No command to execute!\n"
msgstr ""
#: src/irc/irc-server.c:597
#: src/irc/irc-server.c:604
#, c-format
msgid "%s Unknown command: cmd=%s, args=%s\n"
msgstr ""
#: src/irc/irc-server.c:639
#: src/irc/irc-server.c:646
#, c-format
msgid "%s cannot read data from socket, disconnecting from server...\n"
msgstr ""
#: src/irc/irc-server.c:661
#, c-format
msgid "%s: connecting to %s:%d...\n"
msgstr ""
#: src/irc/irc-server.c:663
#, c-format
msgid "connecting to server %s:%d...\n"
msgstr ""
#: src/irc/irc-server.c:672
#, c-format
msgid "%s cannot create pipe\n"
msgstr ""
#: src/irc/irc-server.c:688
#, c-format
msgid "%s cannot set socket option \"SO_REUSEADDR\"\n"
msgstr ""
#: src/irc/irc-server.c:698
#, c-format
msgid "%s cannot set socket option \"SO_KEEPALIVE\"\n"
msgstr ""
#: src/irc/irc-server.c:708
#, c-format
msgid "%s address \"%s\" not found\n"
msgstr ""
#: src/irc/irc-server.c:733
#, c-format
msgid "%s IP address not found\n"
msgstr ""
#: src/irc/irc-server.c:744
#, c-format
msgid "%s: server IP is: %s\n"
msgstr ""
#: src/irc/irc-server.c:751
#, c-format
msgid "%s cannot connect to irc server\n"
msgstr ""
#: src/irc/irc-server.c:770
#, c-format
msgid "%s: Reconnecting to server...\n"
msgstr ""
#: src/irc/irc-server.c:783 src/irc/irc-server.c:860
#: src/irc/irc-server.c:718
#, c-format
msgid "%s: Reconnecting to server in %d seconds\n"
msgstr ""
#: src/irc/irc-server.c:827
#: src/irc/irc-server.c:749
#, c-format
msgid "%s address \"%s\" not found\n"
msgstr ""
#: src/irc/irc-server.c:758
#, c-format
msgid "%s IP address not found\n"
msgstr ""
#: src/irc/irc-server.c:766
#, c-format
msgid "%s connection refused\n"
msgstr ""
#: src/irc/irc-server.c:832
#, c-format
msgid "%s: connecting to %s:%d...\n"
msgstr ""
#: src/irc/irc-server.c:834
#, c-format
msgid "connecting to server %s:%d...\n"
msgstr ""
#: src/irc/irc-server.c:845
#, c-format
msgid "%s cannot create pipe\n"
msgstr ""
#: src/irc/irc-server.c:857
#, c-format
msgid "%s cannot create socket\n"
msgstr ""
#: src/irc/irc-server.c:869
#, c-format
msgid "%s cannot set socket option \"SO_REUSEADDR\"\n"
msgstr ""
#: src/irc/irc-server.c:880
#, c-format
msgid "%s cannot set socket option \"SO_KEEPALIVE\"\n"
msgstr ""
#: src/irc/irc-server.c:911
#, c-format
msgid "%s: Reconnecting to server...\n"
msgstr ""
#: src/irc/irc-server.c:960 src/irc/irc-server.c:965
msgid "Disconnected from server!\n"
msgstr ""
@@ -1110,7 +1110,7 @@ msgid "%s: using local hostname \"%s\"\n"
msgstr ""
#: src/irc/irc-send.c:267 src/irc/irc-send.c:278 src/irc/irc-send.c:748
#: src/irc/irc-send.c:822 src/common/command.c:1355
#: src/irc/irc-send.c:822 src/common/command.c:1365
#, c-format
msgid "%s wrong argument count for \"%s\" command\n"
msgstr ""
@@ -1822,7 +1822,7 @@ msgid "connect to a server"
msgstr ""
#: src/common/command.c:61 src/common/command.c:65
msgid "servername"
msgid "[servername]"
msgstr ""
#: src/common/command.c:62
@@ -1968,9 +1968,9 @@ msgid ""
"arg%s)\n"
msgstr ""
#: src/common/command.c:509
#: src/common/command.c:509 src/common/command.c:579
#, c-format
msgid "%s %s command \"%s\" failed\n"
msgid "%s command \"%s\" failed\n"
msgstr ""
#: src/common/command.c:537
@@ -1990,11 +1990,6 @@ msgstr ""
msgid "%s command \"%s\" needs a server connection!\n"
msgstr ""
#: src/common/command.c:579
#, c-format
msgid "%s IRC command \"%s\" failed\n"
msgstr ""
#: src/common/command.c:628
#, c-format
msgid "%s unknown command \"%s\" (type /help for help)\n"
@@ -2082,209 +2077,218 @@ msgstr ""
msgid "unknown parameter \"%s\" for \"%s\" command\n"
msgstr ""
#: src/common/command.c:1070
#: src/common/command.c:1073
#, c-format
msgid "%s already connected to server \"%s\"!\n"
msgstr ""
#: src/common/command.c:1090 src/common/command.c:1133
#: src/common/command.c:1783
#: src/common/command.c:1081
#, c-format
msgid "%s server \"%s\" not found\n"
msgid "%s currently connecting to server \"%s\"!\n"
msgstr ""
#: src/common/command.c:1116
#: src/common/command.c:1099 src/common/command.c:1144
#, c-format
msgid "%s server not found\n"
msgstr ""
#: src/common/command.c:1128
#, c-format
msgid "%s not connected to server \"%s\"!\n"
msgstr ""
#: src/common/command.c:1124
#: src/common/command.c:1136
msgid "Auto-reconnection is cancelled\n"
msgstr ""
#: src/common/command.c:1153
#: src/common/command.c:1163
#, c-format
msgid "%s internal commands:\n"
msgstr ""
#: src/common/command.c:1164
#: src/common/command.c:1174
msgid "IRC commands:\n"
msgstr ""
#: src/common/command.c:1224
#: src/common/command.c:1234
#, c-format
msgid "No help available, \"%s\" is an unknown command\n"
msgstr ""
#: src/common/command.c:1249
#: src/common/command.c:1259
msgid "Registered Perl scripts:\n"
msgstr ""
#: src/common/command.c:1266 src/common/command.c:1288
#: src/common/command.c:1310
#: src/common/command.c:1276 src/common/command.c:1298
#: src/common/command.c:1320
msgid " (none)\n"
msgstr ""
#: src/common/command.c:1271
#: src/common/command.c:1281
msgid "Perl message handlers:\n"
msgstr ""
#: src/common/command.c:1280
#: src/common/command.c:1290
#, c-format
msgid " IRC(%s) => Perl(%s)\n"
msgstr ""
#: src/common/command.c:1293
#: src/common/command.c:1303
msgid "Perl command handlers:\n"
msgstr ""
#: src/common/command.c:1302
#: src/common/command.c:1312
#, c-format
msgid " Command /%s => Perl(%s)\n"
msgstr ""
#: src/common/command.c:1322
#: src/common/command.c:1332
msgid "Perl scripts unloaded\n"
msgstr ""
#: src/common/command.c:1348 src/common/command.c:2054
#: src/common/command.c:2066
#: src/common/command.c:1358 src/common/command.c:2063
#: src/common/command.c:2075
#, c-format
msgid "%s unknown option for \"%s\" command\n"
msgstr ""
#: src/common/command.c:1361
#: src/common/command.c:1371
msgid ""
"WeeChat was build without Perl support.\n"
"Please rebuild WeeChat with \"--enable-perl\" option for ./configure script\n"
msgstr ""
#: src/common/command.c:1415
#: src/common/command.c:1425
msgid "No server.\n"
msgstr ""
#: src/common/command.c:1426
#: src/common/command.c:1436
#, c-format
msgid "Server '%s' not found.\n"
msgstr ""
#: src/common/command.c:1438
#: src/common/command.c:1448
#, c-format
msgid "%s missing servername for \"%s\" command\n"
msgstr ""
#: src/common/command.c:1446
#: src/common/command.c:1456
#, c-format
msgid "%s too much arguments for \"%s\" command, ignoring arguments\n"
msgstr ""
#: src/common/command.c:1465
#: src/common/command.c:1475
#, c-format
msgid "%s server \"%s\" not found for \"%s\" command\n"
msgstr ""
#: src/common/command.c:1473
#: src/common/command.c:1483
#, c-format
msgid ""
"%s you can not delete server \"%s\" because you are connected to. Try /"
"disconnect %s before.\n"
msgstr ""
#: src/common/command.c:1489 src/common/command.c:1630
#: src/common/command.c:1499 src/common/command.c:1640
msgid "Server"
msgstr ""
#: src/common/command.c:1492
#: src/common/command.c:1502
msgid "has been deleted\n"
msgstr ""
#: src/common/command.c:1507
#, c-format
msgid "%s missing parameters for \"%s\" command\n"
msgstr ""
#: src/common/command.c:1517
#, c-format
msgid "%s missing parameters for \"%s\" command\n"
msgstr ""
#: src/common/command.c:1527
#, c-format
msgid "%s server \"%s\" already exists, can't create it!\n"
msgstr ""
#: src/common/command.c:1542 src/common/command.c:1570
#: src/common/command.c:1583 src/common/command.c:1609
#: src/common/command.c:1552 src/common/command.c:1580
#: src/common/command.c:1593 src/common/command.c:1619
#, c-format
msgid "%s missing password for \"%s\" parameter\n"
msgstr ""
#: src/common/command.c:1555
#: src/common/command.c:1565
#, c-format
msgid "%s missing nick(s) for \"%s\" parameter\n"
msgstr ""
#: src/common/command.c:1596
#: src/common/command.c:1606
#, c-format
msgid "%s missing command for \"%s\" parameter\n"
msgstr ""
#: src/common/command.c:1633
#: src/common/command.c:1643
msgid "created\n"
msgstr ""
#: src/common/command.c:1639
#: src/common/command.c:1649
#, c-format
msgid "%s unable to create server\n"
msgstr ""
#: src/common/command.c:1696
#: src/common/command.c:1705
msgid "(unknown)"
msgstr ""
#: src/common/command.c:1719
#: src/common/command.c:1728
msgid "(password hidden) "
msgstr ""
#: src/common/command.c:1815 src/common/command.c:1862
#: src/common/command.c:1792
#, c-format
msgid "%s server \"%s\" not found\n"
msgstr ""
#: src/common/command.c:1824 src/common/command.c:1871
#, c-format
msgid "%s config option \"%s\" not found\n"
msgstr ""
#: src/common/command.c:1820 src/common/command.c:1854
#: src/common/command.c:1829 src/common/command.c:1863
#, c-format
msgid "%s incorrect value for option \"%s\"\n"
msgstr ""
#: src/common/command.c:1836
#: src/common/command.c:1845
#, c-format
msgid "%s option \"%s\" can not be changed while WeeChat is running\n"
msgstr ""
#: src/common/command.c:1938
#: src/common/command.c:1947
#, c-format
msgid "No config option found with \"%s\"\n"
msgstr ""
#: src/common/command.c:1941
#: src/common/command.c:1950
msgid "No config option found\n"
msgstr ""
#: src/common/command.c:1948
#: src/common/command.c:1957
#, c-format
msgid "config option(s) found with \"%s\"\n"
msgstr ""
#: src/common/command.c:1951
#: src/common/command.c:1960
msgid "config option(s) found\n"
msgstr ""
#: src/common/command.c:1971
#: src/common/command.c:1980
#, c-format
msgid "%s alias or command \"%s\" not found\n"
msgstr ""
#: src/common/command.c:1981
#: src/common/command.c:1990
#, c-format
msgid "Alias \"%s\" removed\n"
msgstr ""
#: src/common/command.c:2001
#: src/common/command.c:2010
msgid "Opened windows:\n"
msgstr ""
+28 -19
View File
@@ -58,13 +58,13 @@ t_weechat_command weechat_commands[] =
N_("-all: clear all windows"),
0, 1, weechat_cmd_clear, NULL },
{ "connect", N_("connect to a server"),
N_("servername"),
N_("[servername]"),
N_("servername: server name to connect"),
1, 1, weechat_cmd_connect, NULL },
0, 1, weechat_cmd_connect, NULL },
{ "disconnect", N_("disconnect from a server"),
N_("servername"),
N_("[servername]"),
N_("servername: server name to disconnect"),
1, 1, weechat_cmd_disconnect, NULL },
0, 1, weechat_cmd_disconnect, NULL },
{ "help", N_("display help about commands"),
N_("[command]"), N_("command: name of a WeeChat or IRC command"),
0, 1, weechat_cmd_help, NULL },
@@ -506,8 +506,8 @@ exec_weechat_command (t_irc_server *server, char *string)
{
irc_display_prefix (NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s %s command \"%s\" failed\n"),
WEECHAT_ERROR, PACKAGE_NAME, command + 1);
_("%s command \"%s\" failed\n"),
WEECHAT_ERROR, command + 1);
}
}
if (argv)
@@ -576,7 +576,7 @@ exec_weechat_command (t_irc_server *server, char *string)
{
irc_display_prefix (NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s IRC command \"%s\" failed\n"),
_("%s command \"%s\" failed\n"),
WEECHAT_ERROR, command + 1);
}
}
@@ -1060,7 +1060,10 @@ weechat_cmd_connect (int argc, char **argv)
/* make gcc happy */
(void) argc;
ptr_server = server_search (argv[0]);
if (argc == 1)
ptr_server = server_search (argv[0]);
else
ptr_server = SERVER(gui_current_window->buffer);
if (ptr_server)
{
if (ptr_server->is_connected)
@@ -1071,6 +1074,14 @@ weechat_cmd_connect (int argc, char **argv)
WEECHAT_ERROR, argv[0]);
return -1;
}
if (ptr_server->child_pid > 0)
{
irc_display_prefix (NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s currently connecting to server \"%s\"!\n"),
WEECHAT_ERROR, argv[0]);
return -1;
}
if (!ptr_server->buffer)
{
if (!gui_buffer_new (gui_current_window, ptr_server, NULL, 0, 1))
@@ -1080,15 +1091,12 @@ weechat_cmd_connect (int argc, char **argv)
{
ptr_server->reconnect_start = 0;
ptr_server->reconnect_join = (ptr_server->channels) ? 1 : 0;
irc_login (ptr_server);
}
}
else
{
irc_display_prefix (NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s server \"%s\" not found\n"),
WEECHAT_ERROR, argv[0]);
gui_printf (NULL, _("%s server not found\n"), WEECHAT_ERROR);
return -1;
}
return 0;
@@ -1106,10 +1114,14 @@ weechat_cmd_disconnect (int argc, char **argv)
/* make gcc happy */
(void) argc;
ptr_server = server_search (argv[0]);
if (argc == 1)
ptr_server = server_search (argv[0]);
else
ptr_server = SERVER(gui_current_window->buffer);
if (ptr_server)
{
if ((!ptr_server->is_connected) && (ptr_server->reconnect_start == 0))
if ((!ptr_server->is_connected) && (ptr_server->child_pid == 0)
&& (ptr_server->reconnect_start == 0))
{
irc_display_prefix (ptr_server->buffer, PREFIX_ERROR);
gui_printf (ptr_server->buffer,
@@ -1129,9 +1141,7 @@ weechat_cmd_disconnect (int argc, char **argv)
else
{
irc_display_prefix (NULL, PREFIX_ERROR);
gui_printf (NULL,
_("%s server \"%s\" not found\n"),
WEECHAT_ERROR, argv[0]);
gui_printf (NULL, _("%s server not found\n"), WEECHAT_ERROR);
return -1;
}
return 0;
@@ -1645,8 +1655,7 @@ weechat_cmd_server (int argc, char **argv)
if (new_server->autoconnect)
{
(void) gui_buffer_new (gui_current_window, new_server, NULL, 0, 1);
if (server_connect (new_server))
irc_login (new_server);
server_connect (new_server);
}
server_destroy (&server);
+18 -5
View File
@@ -768,8 +768,13 @@ gui_main_loop ()
}
}
if (ptr_server->sock4 >= 0)
FD_SET (ptr_server->sock4, &read_fd);
if (!ptr_server->is_connected && (ptr_server->child_pid > 0))
FD_SET (ptr_server->child_read, &read_fd);
else
{
if (ptr_server->sock4 >= 0)
FD_SET (ptr_server->sock4, &read_fd);
}
}
}
if (select (FD_SETSIZE, &read_fd, NULL, NULL, &timeout) > 0)
@@ -783,9 +788,17 @@ gui_main_loop ()
for (ptr_server = irc_servers; ptr_server;
ptr_server = ptr_server->next_server)
{
if ((ptr_server->sock4 >= 0) &&
(FD_ISSET (ptr_server->sock4, &read_fd)))
server_recv (ptr_server);
if (!ptr_server->is_connected && (ptr_server->child_pid > 0))
{
if (FD_ISSET (ptr_server->child_read, &read_fd))
server_child_read (ptr_server);
}
else
{
if ((ptr_server->sock4 >= 0) &&
(FD_ISSET (ptr_server->sock4, &read_fd)))
server_recv (ptr_server);
}
}
}
}
+1 -1
View File
@@ -1600,7 +1600,7 @@ irc_cmd_recv_004 (t_irc_server *server, char *host, char *arguments)
}
/* auto-join after disconnection (only rejoins opened channels) */
if (server->reconnect_join)
if (server->reconnect_join && server->channels)
{
for (ptr_channel = server->channels; ptr_channel;
ptr_channel = ptr_channel->next_channel)
+230 -115
View File
@@ -27,12 +27,14 @@
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <signal.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <pwd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
@@ -57,6 +59,7 @@ int check_away = 0;
void
server_init (t_irc_server *server)
{
/* user choices */
server->name = NULL;
server->autoconnect = 0;
server->autoreconnect = 1;
@@ -73,14 +76,18 @@ server_init (t_irc_server *server)
server->command = NULL;
server->command_delay = 1;
server->autojoin = NULL;
server->autorejoin = 0;
/* internal vars */
server->child_pid = 0;
server->child_read = -1;
server->child_write = -1;
server->sock4 = -1;
server->is_connected = 0;
server->unterminated_message = NULL;
server->nick = NULL;
server->is_connected = 0;
server->reconnect_start = 0;
server->reconnect_join = 0;
server->sock4 = -1;
server->server_read = -1;
server->server_write = -1;
server->is_away = 0;
server->away_time = 0;
server->lag = 0;
@@ -642,6 +649,174 @@ server_recv (t_irc_server *server)
}
}
/*
* server_kill_child: kill child process and close pipe
*/
void
server_kill_child (t_irc_server *server)
{
/* kill process */
if (server->child_pid > 0)
{
kill (server->child_pid, SIGKILL);
waitpid (server->child_pid, NULL, 0);
server->child_pid = 0;
}
/* close pipe used with child */
if (server->child_read != -1)
{
close (server->child_read);
server->child_read = -1;
}
if (server->child_write != -1)
{
close (server->child_write);
server->child_write = -1;
}
}
/*
* server_close_connection: close server connection (kill child, close socket/pipes)
*/
void
server_close_connection (t_irc_server *server)
{
server_kill_child (server);
/* close network socket */
if (server->sock4 != -1)
{
close (server->sock4);
server->sock4 = -1;
}
/* free any pending message */
if (server->unterminated_message)
{
free (server->unterminated_message);
server->unterminated_message = NULL;
}
/* server is now disconnected */
server->is_connected = 0;
}
/*
* server_reconnect_schedule: schedule reconnect for a server
*/
void
server_reconnect_schedule (t_irc_server *server)
{
if (server->autoreconnect)
{
server->reconnect_start = time (NULL);
irc_display_prefix (server->buffer, PREFIX_INFO);
gui_printf (server->buffer, _("%s: Reconnecting to server in %d seconds\n"),
PACKAGE_NAME, server->autoreconnect_delay);
}
else
server->reconnect_start = 0;
}
/*
* server_child_read: read connection progress from child process
*/
void
server_child_read (t_irc_server *server)
{
char buffer[1];
int num_read;
num_read = read (server->child_read, buffer, sizeof (buffer));
if (num_read != -1)
{
switch (buffer[0])
{
/* connection OK */
case '0':
server_kill_child (server);
irc_login (server);
break;
/* adress not found */
case '1':
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s address \"%s\" not found\n"),
WEECHAT_ERROR, server->address);
server_close_connection (server);
server_reconnect_schedule (server);
break;
/* IP address not found */
case '2':
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s IP address not found\n"), WEECHAT_ERROR);
server_close_connection (server);
server_reconnect_schedule (server);
break;
/* connection refused */
case '3':
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s connection refused\n"), WEECHAT_ERROR);
server_close_connection (server);
server_reconnect_schedule (server);
break;
}
}
}
/*
* server_child: child process trying to connect to server
*/
int
server_child (t_irc_server *server)
{
struct hostent *ip4_hostent;
struct sockaddr_in addr;
char *ip_address;
int error;
/* bind to hostname */
ip4_hostent = gethostbyname (server->address);
if (!ip4_hostent)
{
write (server->child_write, "1", 1);
return 0;
}
memset (&addr, 0, sizeof (addr));
memcpy (&addr.sin_addr, ip4_hostent->h_addr, ip4_hostent->h_length);
addr.sin_port = htons (server->port);
addr.sin_family = AF_INET;
/* find IP address */
ip_address = inet_ntoa (addr.sin_addr);
if (!ip_address)
{
write (server->child_write, "2", 1);
return 0;
}
/* connect to server */
error = connect (server->sock4, (struct sockaddr *) &addr, sizeof (addr));
if (error != 0)
{
write (server->child_write, "3", 1);
return 0;
}
/* connection OK */
write (server->child_write, "0", 1);
return 0;
}
/*
* server_connect: connect to an IRC server
*/
@@ -649,12 +824,8 @@ server_recv (t_irc_server *server)
int
server_connect (t_irc_server *server)
{
int set;
struct hostent *ip4_hostent;
struct sockaddr_in addr;
char *ip_address;
int error;
int server_pipe[2];
int child_pipe[2], set;
pid_t pid;
irc_display_prefix (server->buffer, PREFIX_INFO);
gui_printf (server->buffer,
@@ -662,100 +833,70 @@ server_connect (t_irc_server *server)
PACKAGE_NAME, server->address, server->port);
wee_log_printf (_("connecting to server %s:%d...\n"),
server->address, server->port);
server->is_connected = 0;
/* create pipe */
if (pipe (server_pipe) < 0)
/* close any opened connection and kill child process if running */
server_close_connection (server);
/* create pipe for child process */
if (pipe (child_pipe) < 0)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s cannot create pipe\n"), WEECHAT_ERROR);
server_free (server);
return 0;
}
server->server_read = server_pipe[0];
server->server_write = server_pipe[1];
server->child_read = child_pipe[0];
server->child_write = child_pipe[1];
/* create socket and set options */
server->sock4 = socket (AF_INET, SOCK_STREAM, 0);
if (server->sock4 == -1)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s cannot create socket\n"), WEECHAT_ERROR);
server_close_connection (server);
return 0;
}
/* set SO_REUSEADDR option for socket */
set = 1;
if (setsockopt
(server->sock4, SOL_SOCKET, SO_REUSEADDR, (char *) &set,
sizeof (set)) == -1)
if (setsockopt (server->sock4, SOL_SOCKET, SO_REUSEADDR,
(void *) &set, sizeof (set)) == -1)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s cannot set socket option \"SO_REUSEADDR\"\n"),
WEECHAT_ERROR);
WEECHAT_WARNING);
}
/* set SO_KEEPALIVE option for socket */
set = 1;
if (setsockopt
(server->sock4, SOL_SOCKET, SO_KEEPALIVE, (char *) &set,
sizeof (set)) == -1)
if (setsockopt (server->sock4, SOL_SOCKET, SO_KEEPALIVE,
(void *) &set, sizeof (set)) == -1)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s cannot set socket option \"SO_KEEPALIVE\"\n"),
WEECHAT_ERROR);
WEECHAT_WARNING);
}
/* bind to hostname */
ip4_hostent = gethostbyname (server->address);
if (!ip4_hostent)
switch (pid = fork ())
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s address \"%s\" not found\n"),
WEECHAT_ERROR, server->address);
close (server->server_read);
close (server->server_write);
close (server->sock4);
server->sock4 = -1;
return 0;
}
memset (&addr, 0, sizeof (addr));
memcpy (&addr.sin_addr, ip4_hostent->h_addr, ip4_hostent->h_length);
addr.sin_port = htons (server->port);
addr.sin_family = AF_INET;
/*error = bind(server->sock4, (struct sockaddr *)(&addr), sizeof(addr));
if (error != 0)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s can't bind to hostname\n"), WEECHAT_ERROR);
return 0;
}*/
ip_address = inet_ntoa (addr.sin_addr);
if (!ip_address)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s IP address not found\n"), WEECHAT_ERROR);
close (server->server_read);
close (server->server_write);
close (server->sock4);
server->sock4 = -1;
return 0;
}
/* connection to server */
irc_display_prefix (server->buffer, PREFIX_INFO);
gui_printf (server->buffer,
_("%s: server IP is: %s\n"), PACKAGE_NAME, ip_address);
error = connect (server->sock4, (struct sockaddr *) &addr, sizeof (addr));
if (error != 0)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
gui_printf (server->buffer,
_("%s cannot connect to irc server\n"), WEECHAT_ERROR);
close (server->server_read);
close (server->server_write);
close (server->sock4);
server->sock4 = -1;
return 0;
/* fork failed */
case -1:
server_close_connection (server);
return 0;
/* child process */
case 0:
setuid (getuid ());
server_child (server);
_exit (EXIT_SUCCESS);
}
/* parent process go on here */
server->child_pid = pid;
return 1;
}
@@ -772,17 +913,9 @@ server_reconnect (t_irc_server *server)
server->reconnect_start = 0;
if (server_connect (server))
{
server->reconnect_join = 1;
irc_login (server);
}
else
{
server->reconnect_start = time (NULL);
irc_display_prefix (server->buffer, PREFIX_INFO);
gui_printf (server->buffer, _("%s: Reconnecting to server in %d seconds\n"),
PACKAGE_NAME, server->autoreconnect_delay);
}
server_reconnect_schedule (server);
}
/*
@@ -801,8 +934,8 @@ server_auto_connect (int command_line)
|| ((!command_line) && (ptr_server->autoconnect)) )
{
(void) gui_buffer_new (gui_current_window, ptr_server, NULL, 0, 1);
if (server_connect (ptr_server))
irc_login (ptr_server);
gui_redraw_buffer (gui_current_window->buffer);
server_connect (ptr_server);
}
}
}
@@ -828,24 +961,11 @@ server_disconnect (t_irc_server *server, int reconnect)
}
}
/* close communication with server */
if (server->server_read >= 0)
close (server->server_read);
server->server_read = -1;
irc_display_prefix (server->buffer, PREFIX_INFO);
gui_printf (server->buffer, _("Disconnected from server!\n"));
if (server->server_write >= 0)
close (server->server_write);
server->server_write = -1;
server_close_connection (server);
if (server->sock4 >= 0)
close (server->sock4);
server->sock4 = -1;
if (server->unterminated_message)
free (server->unterminated_message);
server->unterminated_message = NULL;
server->is_connected = 0;
server->is_away = 0;
server->away_time = 0;
server->lag = 0;
@@ -854,12 +974,7 @@ server_disconnect (t_irc_server *server, int reconnect)
server->lag_next_check = time (NULL) + cfg_irc_lag_check;
if ((reconnect) && (server->autoreconnect))
{
server->reconnect_start = time (NULL);
irc_display_prefix (server->buffer, PREFIX_INFO);
gui_printf (server->buffer, _("%s: Reconnecting to server in %d seconds\n"),
PACKAGE_NAME, server->autoreconnect_delay);
}
server_reconnect_schedule (server);
else
server->reconnect_start = 0;
+7 -4
View File
@@ -23,6 +23,7 @@
#include <time.h>
#include <sys/time.h>
#include <sys/types.h>
#include "../gui/gui.h"
/* prefixes for chat window */
@@ -138,14 +139,15 @@ struct t_irc_server
int autorejoin; /* auto rejoin channels when kicked */
/* internal vars */
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 */
int sock4; /* socket for server */
int is_connected; /* 1 if WeeChat is connected to server */
char *unterminated_message; /* beginning of a message in input buf */
char *nick; /* current nickname */
int is_connected; /* 1 if WeeChat is connected to server */
time_t reconnect_start; /* this time + delay = reconnect time */
int reconnect_join; /* 1 if channels opened to rejoin */
int sock4; /* socket for server */
int server_read; /* pipe for reading server data */
int server_write; /* pipe for sending data to server */
int is_away; /* 1 is user is marker as away */
time_t away_time; /* time() when user marking as away */
int lag; /* lag (in milliseconds) */
@@ -235,6 +237,7 @@ extern t_irc_server *server_new (char *, int, int, int, int, char *, int, char *
extern int server_send (t_irc_server *, char *, int);
extern void server_sendf (t_irc_server *, char *, ...);
extern void server_recv (t_irc_server *);
extern void server_child_read (t_irc_server *);
extern int server_connect (t_irc_server *);
extern void server_reconnect (t_irc_server *);
extern void server_auto_connect (int);