summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Helleu <flashcode@flashtux.org>2005-02-20 00:08:22 +0000
committerSebastien Helleu <flashcode@flashtux.org>2005-02-20 00:08:22 +0000
commit3e816667526bebf7366e56ca9661c57b20dcb535 (patch)
tree61517cfef86ff23d72b190adc5a0c1bf240936b8
parent6d0be7db4b417663ddc40c77978a354415dc82d7 (diff)
downloadweechat-3e816667526bebf7366e56ca9661c57b20dcb535.zip
Added DCC send
-rw-r--r--ChangeLog3
-rw-r--r--po/fr.po499
-rw-r--r--po/weechat.pot480
-rw-r--r--src/common/weechat.h4
-rw-r--r--src/common/weeconfig.c9
-rw-r--r--src/common/weeconfig.h1
-rw-r--r--src/gui/curses/gui-display.c48
-rw-r--r--src/gui/curses/gui-input.c49
-rw-r--r--src/irc/irc-commands.c2
-rw-r--r--src/irc/irc-dcc.c468
-rw-r--r--src/irc/irc-recv.c183
-rw-r--r--src/irc/irc-send.c148
-rw-r--r--src/irc/irc-server.c5
-rw-r--r--src/irc/irc.h23
-rw-r--r--weechat/ChangeLog3
-rw-r--r--weechat/po/fr.po499
-rw-r--r--weechat/po/weechat.pot480
-rw-r--r--weechat/src/common/weechat.h4
-rw-r--r--weechat/src/common/weeconfig.c9
-rw-r--r--weechat/src/common/weeconfig.h1
-rw-r--r--weechat/src/gui/curses/gui-display.c48
-rw-r--r--weechat/src/gui/curses/gui-input.c49
-rw-r--r--weechat/src/irc/irc-commands.c2
-rw-r--r--weechat/src/irc/irc-dcc.c468
-rw-r--r--weechat/src/irc/irc-recv.c183
-rw-r--r--weechat/src/irc/irc-send.c148
-rw-r--r--weechat/src/irc/irc-server.c5
-rw-r--r--weechat/src/irc/irc.h23
28 files changed, 2358 insertions, 1486 deletions
diff --git a/ChangeLog b/ChangeLog
index e2ac55be5..afd889b3b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,10 +1,11 @@
WeeChat - Wee Enhanced Environment for Chat
===========================================
-ChangeLog - 2005-02-17
+ChangeLog - 2005-02-20
Version 0.1.1 (under dev!):
+ * added DCC send
* added support for UnrealIrcd ("~" for chan owner, "&" for chan admin)
* on server buffer, only server messages are logged
* improved /help command output
diff --git a/po/fr.po b/po/fr.po
index 86b1ad3ac..d7ca17f05 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -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-17 23:45+0100\n"
+"POT-Creation-Date: 2005-02-20 01:03+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,7 +20,7 @@ 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:1466
+#: src/irc/irc-server.c:139 src/common/weeconfig.c:1471
msgid "Unable to get user's name"
msgstr "Impossible de déterminer le nom d'utilisateur"
@@ -44,83 +44,83 @@ msgstr "%s mémoire insuffisante pour un message IRC reçu\n"
msgid "%s unable to explode received buffer\n"
msgstr "%s impossible d'exploser le tampon de réception\n"
-#: src/irc/irc-server.c:588
+#: src/irc/irc-server.c:587
#, c-format
msgid "%s Command '%s' failed!\n"
msgstr "%s La commande '%s' a échoué !\n"
-#: src/irc/irc-server.c:593
+#: src/irc/irc-server.c:592
#, c-format
msgid "%s No command to execute!\n"
msgstr "%s Pas de commande à exécuter !\n"
-#: src/irc/irc-server.c:598
+#: src/irc/irc-server.c:597
#, 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:640
+#: src/irc/irc-server.c:639
#, 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:662
+#: 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:664
+#: 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:673
+#: 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:689
+#: 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:699
+#: 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:709
+#: 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:734
+#: 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:745
+#: 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:752
+#: 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:771
+#: 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:784 src/irc/irc-server.c:861
+#: src/irc/irc-server.c:783 src/irc/irc-server.c:860
#, 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:828
+#: src/irc/irc-server.c:827
msgid "Disconnected from server!\n"
msgstr "Déconnecté du serveur !\n"
@@ -1194,7 +1194,7 @@ msgstr " (serveur temporaire, ne sera pas sauvé)"
msgid "(hidden)"
msgstr "(caché)"
-#: src/irc/irc-send.c:58 src/irc/irc-recv.c:3115
+#: src/irc/irc-send.c:58 src/irc/irc-recv.c:3116
msgid "unknown"
msgstr "inconnu"
@@ -1203,42 +1203,43 @@ msgstr "inconnu"
msgid "%s: using local hostname \"%s\"\n"
msgstr "%s: utilisation du nom de machine local \"%s\"\n"
-#: src/irc/irc-send.c:262
+#: 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
+#, c-format
+msgid "%s wrong argument count for \"%s\" command\n"
+msgstr "%s nombre de paramètres erroné pour la commande \"%s\"\n"
+
+#: src/irc/irc-send.c:292
msgid "This command is not developed!\n"
msgstr "Cette commande n'est pas développée !\n"
-#: src/irc/irc-send.c:287 src/irc/irc-send.c:313 src/irc/irc-send.c:414
-#: src/irc/irc-send.c:739 src/irc/irc-send.c:818 src/irc/irc-send.c:1319
+#: src/irc/irc-send.c:319 src/irc/irc-send.c:345 src/irc/irc-send.c:446
+#: src/irc/irc-send.c:770 src/irc/irc-send.c:849 src/irc/irc-send.c:1349
#, c-format
msgid "%s \"%s\" command can only be executed in a channel window\n"
msgstr ""
"%s la commande \"%s\" peut seulement être exécutée dans une fenêtre de "
"canal\n"
-#: src/irc/irc-send.c:524 src/irc/irc-send.c:591 src/irc/irc-send.c:866
-#: src/irc/irc-send.c:880 src/irc/irc-send.c:1213
+#: src/irc/irc-send.c:556 src/irc/irc-send.c:623 src/irc/irc-send.c:897
+#: src/irc/irc-send.c:911 src/irc/irc-send.c:1243
#, c-format
msgid "%s \"%s\" command can not be executed on a server window\n"
msgstr ""
"%s la commande \"%s\" ne peut pas être exécutée dans une fenêtre serveur\n"
-#: src/irc/irc-send.c:609 src/irc/irc-send.c:634 src/irc/irc-recv.c:264
+#: src/irc/irc-send.c:641 src/irc/irc-send.c:666 src/irc/irc-recv.c:264
#: src/irc/irc-recv.c:1089
#, c-format
msgid "%s nick not found for \"%s\" command\n"
msgstr "%s utilisateur non trouvé pour la commande \"%s\"\n"
-#: src/irc/irc-send.c:686 src/irc/irc-send.c:964 src/irc/irc-recv.c:1255
+#: src/irc/irc-send.c:718 src/irc/irc-send.c:995 src/irc/irc-recv.c:1256
#, c-format
msgid "%s cannot create new private window \"%s\"\n"
msgstr "%s impossible de créer la fenêtre privée \"%s\"\n"
-#: src/irc/irc-send.c:717 src/irc/irc-send.c:791 src/common/command.c:1355
-#, c-format
-msgid "%s wrong argument count for \"%s\" command\n"
-msgstr "%s nombre de paramètres erroné pour la commande \"%s\"\n"
-
-#: src/irc/irc-send.c:1291
+#: src/irc/irc-send.c:1321
#, c-format
msgid "%s, compiled on %s %s\n"
msgstr "%s, compilé le %s %s\n"
@@ -1253,7 +1254,7 @@ msgid " has joined "
msgstr " a rejoint "
#: src/irc/irc-recv.c:231 src/irc/irc-recv.c:599 src/irc/irc-recv.c:925
-#: src/irc/irc-recv.c:1099 src/irc/irc-recv.c:2562 src/irc/irc-recv.c:2629
+#: src/irc/irc-recv.c:1099 src/irc/irc-recv.c:2563 src/irc/irc-recv.c:2630
#, c-format
msgid "%s channel not found for \"%s\" command\n"
msgstr "%s canal non trouvé pour la commande \"%s\"\n"
@@ -1355,7 +1356,7 @@ msgid "removes voice from"
msgstr "supprime la voix de"
#: src/irc/irc-recv.c:554 src/irc/irc-recv.c:639 src/irc/irc-recv.c:999
-#: src/irc/irc-recv.c:1351
+#: src/irc/irc-recv.c:1352
#, c-format
msgid "%s \"%s\" command received without host\n"
msgstr "%s commande \"%s\" reçue sans host\n"
@@ -1404,7 +1405,7 @@ msgstr "%s commande \"%s\" reçue sans host ou canal\n"
msgid " has left "
msgstr " a quitté "
-#: src/irc/irc-recv.c:1048 src/irc/irc-recv.c:1281
+#: src/irc/irc-recv.c:1048 src/irc/irc-recv.c:1282
#, c-format
msgid "On %s: * %s %s"
msgstr "Sur %s: * %s %s"
@@ -1427,193 +1428,193 @@ msgid "from"
msgstr "de"
#: src/irc/irc-recv.c:1184 src/irc/irc-recv.c:1199 src/irc/irc-recv.c:1215
-#: src/irc/irc-recv.c:1231 src/irc/irc-recv.c:1327 src/irc/irc-recv.c:2866
-#: src/irc/irc-recv.c:2923
+#: src/irc/irc-recv.c:1231 src/irc/irc-recv.c:1328 src/irc/irc-recv.c:2867
+#: src/irc/irc-recv.c:2924
#, c-format
msgid "%s cannot parse \"%s\" command\n"
msgstr "%s impossible d'analyser la commande \"%s\"\n"
-#: src/irc/irc-recv.c:1307
+#: src/irc/irc-recv.c:1308
#, c-format
msgid "Private %s> %s"
msgstr "Prive %s> %s"
-#: src/irc/irc-recv.c:1383
+#: src/irc/irc-recv.c:1384
msgid "has quit"
msgstr "a quitté"
-#: src/irc/irc-recv.c:1504
+#: src/irc/irc-recv.c:1505
#, c-format
msgid "%s \"%s\" command received without channel\n"
msgstr "%s commande \"%s\" reçue sans canal\n"
-#: src/irc/irc-recv.c:1532
+#: src/irc/irc-recv.c:1533
msgid " has changed topic for "
msgstr " a changé le titre pour "
-#: src/irc/irc-recv.c:1537
+#: src/irc/irc-recv.c:1538
#, c-format
msgid " to: \"%s\"\n"
msgstr " en: \"%s\"\n"
-#: src/irc/irc-recv.c:1543
+#: src/irc/irc-recv.c:1544
msgid " has unset topic for "
msgstr " a retiré le titre pour "
-#: src/irc/irc-recv.c:1654
+#: src/irc/irc-recv.c:1655
#, c-format
msgid " is away: %s\n"
msgstr " est absent: %s\n"
-#: src/irc/irc-recv.c:1728
+#: src/irc/irc-recv.c:1729
msgid "Users online: "
msgstr "Utilisateurs en ligne: "
-#: src/irc/irc-recv.c:2133
+#: src/irc/irc-recv.c:2134
msgid "idle: "
msgstr "inactivité: "
-#: src/irc/irc-recv.c:2141
+#: src/irc/irc-recv.c:2142
msgid "days"
msgstr "jours"
-#: src/irc/irc-recv.c:2141
+#: src/irc/irc-recv.c:2142
msgid "day"
msgstr "jour"
-#: src/irc/irc-recv.c:2151
+#: src/irc/irc-recv.c:2152
msgid "hours"
msgstr "heures"
-#: src/irc/irc-recv.c:2151
+#: src/irc/irc-recv.c:2152
msgid "hour"
msgstr "heure"
-#: src/irc/irc-recv.c:2157
+#: src/irc/irc-recv.c:2158
msgid "minutes"
msgstr "minutes"
-#: src/irc/irc-recv.c:2157
+#: src/irc/irc-recv.c:2158
msgid "minute"
msgstr "minute"
-#: src/irc/irc-recv.c:2163
+#: src/irc/irc-recv.c:2164
msgid "seconds"
msgstr "secondes"
-#: src/irc/irc-recv.c:2163
+#: src/irc/irc-recv.c:2164
msgid "second"
msgstr "seconde"
-#: src/irc/irc-recv.c:2168
+#: src/irc/irc-recv.c:2169
msgid "signon at: "
msgstr "signé le: "
-#: src/irc/irc-recv.c:2256
+#: src/irc/irc-recv.c:2257
msgid "Channels: "
msgstr "Canaux: "
-#: src/irc/irc-recv.c:2508
+#: src/irc/irc-recv.c:2509
msgid "No topic set for "
msgstr "Pas de titre défini pour "
-#: src/irc/irc-recv.c:2550
+#: src/irc/irc-recv.c:2551
msgid "Topic for "
msgstr "Le titre pour "
-#: src/irc/irc-recv.c:2554
+#: src/irc/irc-recv.c:2555
#, c-format
msgid " is: \"%s\"\n"
msgstr " est: \"%s\"\n"
-#: src/irc/irc-recv.c:2572 src/irc/irc-recv.c:2656
+#: src/irc/irc-recv.c:2573 src/irc/irc-recv.c:2657
#, c-format
msgid "%s cannot identify channel for \"%s\" command\n"
msgstr "%s impossible de déterminer le canal pour la commande \"%s\"\n"
-#: src/irc/irc-recv.c:2618
+#: src/irc/irc-recv.c:2619
msgid "Topic set by "
msgstr "Titre défini par "
-#: src/irc/irc-recv.c:2638
+#: src/irc/irc-recv.c:2639
#, c-format
msgid "%s cannot identify date/time for \"%s\" command\n"
msgstr "%s impossible d'identifier la date/heure pour la commande \"%s\"\n"
-#: src/irc/irc-recv.c:2647
+#: src/irc/irc-recv.c:2648
#, c-format
msgid "%s cannot identify nickname for \"%s\" command\n"
msgstr ""
"%s impossible de déterminer le nom d'utilisateur pour la commande \"%s\"\n"
-#: src/irc/irc-recv.c:2789
+#: src/irc/irc-recv.c:2790
msgid " on "
msgstr " sur "
-#: src/irc/irc-recv.c:2912
+#: src/irc/irc-recv.c:2913
#, c-format
msgid "%s cannot create nick \"%s\" for channel \"%s\"\n"
msgstr "%s impossible de créer l'utilisateur \"%s\" pour le canal \"%s\"\n"
-#: src/irc/irc-recv.c:2967
+#: src/irc/irc-recv.c:2968
msgid "Nicks "
msgstr "Utilisateurs "
-#: src/irc/irc-recv.c:2987
+#: src/irc/irc-recv.c:2988
msgid "Channel "
msgstr "Canal "
-#: src/irc/irc-recv.c:2998
+#: src/irc/irc-recv.c:2999
msgid "nicks"
msgstr "utilisateurs"
-#: src/irc/irc-recv.c:2998
+#: src/irc/irc-recv.c:2999
msgid "nick"
msgstr "utilisateur"
-#: src/irc/irc-recv.c:3006
+#: src/irc/irc-recv.c:3007
msgid "ops"
msgstr "ops"
-#: src/irc/irc-recv.c:3006
+#: src/irc/irc-recv.c:3007
msgid "op"
msgstr "op"
-#: src/irc/irc-recv.c:3015
+#: src/irc/irc-recv.c:3016
msgid "halfops"
msgstr "halfops"
-#: src/irc/irc-recv.c:3015
+#: src/irc/irc-recv.c:3016
msgid "halfop"
msgstr "halfop"
-#: src/irc/irc-recv.c:3024
+#: src/irc/irc-recv.c:3025
msgid "voices"
msgstr "voices"
-#: src/irc/irc-recv.c:3024
+#: src/irc/irc-recv.c:3025
msgid "voice"
msgstr "voice"
-#: src/irc/irc-recv.c:3033
+#: src/irc/irc-recv.c:3034
msgid "normal"
msgstr "normal"
-#: src/irc/irc-recv.c:3069
+#: src/irc/irc-recv.c:3070
#, c-format
msgid "%s: nickname \"%s\" is already in use, trying 2nd nickname \"%s\"\n"
msgstr ""
"%s: l'utilisateur \"%s\" est déjà en cours d'utilisation, essai avec le 2nd "
"nom d'utilisateur \"%s\"\n"
-#: src/irc/irc-recv.c:3081
+#: src/irc/irc-recv.c:3082
#, c-format
msgid "%s: nickname \"%s\" is already in use, trying 3rd nickname \"%s\"\n"
msgstr ""
"%s: l'utilisateur \"%s\" est déjà en cours d'utilisation, essai du 3ème nom "
"d'utilisateur \"%s\"\n"
-#: src/irc/irc-recv.c:3093
+#: src/irc/irc-recv.c:3094
#, c-format
msgid ""
"%s: all declared nicknames are already in use, closing connection with "
@@ -1622,67 +1623,109 @@ msgstr ""
"%s: tous les noms d'utilisateurs déclarés sont déjà en cours d'utilisation, "
"fermeture de la connexion avec le serveur !\n"
-#: src/irc/irc-recv.c:3103
+#: src/irc/irc-recv.c:3104
#, c-format
msgid "%s: nickname \"%s\" is already in use, trying 1st nickname \"%s\"\n"
msgstr ""
"%s: l'utilisateur \"%s\" est déjà en cours d'utilisation, essai avec le 1er "
"nom d'utilisateur \"%s\"\n"
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Waiting"
msgstr "Attente"
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Connecting"
msgstr "Connexion"
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Active"
msgstr "Actif"
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Done"
msgstr "Terminé"
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Failed"
msgstr "Echoué"
-#: src/irc/irc-dcc.c:45
+#: src/irc/irc-dcc.c:46
msgid "Aborted"
msgstr "Interrompu"
-#: src/irc/irc-dcc.c:235
+#: src/irc/irc-dcc.c:149
+msgid "DCC: file "
+msgstr "DCC: fichier "
+
+#: src/irc/irc-dcc.c:154 src/irc/irc-dcc.c:334
+msgid " (local filename: "
+msgstr " (nom local: "
+
+#: src/irc/irc-dcc.c:160
+msgid ") sent to "
+msgstr ") envoyé à "
+
+#: src/irc/irc-dcc.c:162
+msgid ") received from "
+msgstr ") reçu de "
+
+#: src/irc/irc-dcc.c:167
+msgid ": ok!\n"
+msgstr ": ok!\n"
+
+#: src/irc/irc-dcc.c:278
#, c-format
msgid "%s not enough memory for new DCC\n"
msgstr "%s pas assez de mémoire pour un nouveau DCC\n"
-#: src/irc/irc-dcc.c:263
+#: src/irc/irc-dcc.c:308
msgid "Incoming DCC file from "
msgstr "Réception fichier DCC de "
-#: src/irc/irc-dcc.c:288
+#: src/irc/irc-dcc.c:319 src/irc/irc-dcc.c:338
msgid " bytes\n"
msgstr " octets\n"
-#: src/irc/irc-dcc.c:341
-msgid "DCC: file "
-msgstr "DCC: fichier "
+#: src/irc/irc-dcc.c:325
+msgid "Sending DCC file to "
+msgstr "Envoi fichier DCC à "
-#: src/irc/irc-dcc.c:346
-msgid " (local filename: "
-msgstr " (nom local: "
+#: src/irc/irc-dcc.c:393
+#, c-format
+msgid "%s not enough memory for DCC SEND\n"
+msgstr "%s pas assez de mémoire pour le DCC SEND\n"
+
+#: src/irc/irc-dcc.c:415
+#, c-format
+msgid "%s cannot access file \"%s\"\n"
+msgstr "%s impossible d'accéder au fichier \"%s\"\n"
-#: src/irc/irc-dcc.c:351
-msgid ") from "
-msgstr ") de "
+#: src/irc/irc-dcc.c:434
+#, c-format
+msgid "%s cannot create socket for DCC\n"
+msgstr "%s impossible de créer la socket pour le DCC\n"
-#: src/irc/irc-dcc.c:356
-msgid ": ok!\n"
-msgstr ": ok!\n"
+#: src/irc/irc-dcc.c:446
+#, c-format
+msgid "%s cannot find port for DCC\n"
+msgstr "%s impossible de trouver le port pour le DCC\n"
+
+#: src/irc/irc-dcc.c:484
+#, c-format
+msgid "%s cannot send DCC\n"
+msgstr "%s impossible d'envoyer le DCC\n"
+
+#: src/irc/irc-dcc.c:599
+#, c-format
+msgid ""
+"%s DCC failed because blocksize is too big. Check value of \"dcc_blocksize\" "
+"option, max is %d.\n"
+msgstr ""
+"%s le DCC a échoué car la taille de bloc est trop grande. Vérifiez la valeur "
+"de l'option \"dcc_blocksize\", le maximum est %d.\n"
-#: src/irc/irc-dcc.c:382
+#: src/irc/irc-dcc.c:672
#, c-format
msgid "aborting active DCC: \"%s\" from %s\n"
msgstr "abandon du DCC actif: \"%s\" de %s\n"
@@ -1761,68 +1804,69 @@ msgstr ""
"%s impossible d'ajouter la fonction pour le message \"%s\" (mémoire "
"insuffisante)\n"
-#: src/gui/curses/gui-input.c:740
+#: src/gui/curses/gui-input.c:763
#, c-format
msgid "%s lag is high, disconnecting from server...\n"
msgstr "%s le lag est élevé, déconnexion du serveur...\n"
-#: src/gui/curses/gui-display.c:601
+#: src/gui/curses/gui-display.c:600
msgid "bytes"
msgstr "octets"
-#: src/gui/curses/gui-display.c:601
+#: src/gui/curses/gui-display.c:600
msgid "Kb"
msgstr "Ko"
-#: src/gui/curses/gui-display.c:601
+#: src/gui/curses/gui-display.c:600
msgid "Mb"
msgstr "Mo"
-#: src/gui/curses/gui-display.c:601
+#: src/gui/curses/gui-display.c:600
msgid "Gb"
msgstr "Go"
-#: src/gui/curses/gui-display.c:971
+#: src/gui/curses/gui-display.c:969
msgid "(away)"
msgstr "(absent)"
-#: src/gui/curses/gui-display.c:1056
+#: src/gui/curses/gui-display.c:1054
#, c-format
msgid "%d:[not connected] "
msgstr "%d:[non connecté] "
-#: src/gui/curses/gui-display.c:1073
+#: src/gui/curses/gui-display.c:1071
msgid "Act: "
msgstr "Act: "
-#: src/gui/curses/gui-display.c:1122
+#: src/gui/curses/gui-display.c:1120
#, c-format
msgid "Lag: %.1f"
msgstr "Lag: %.1f"
-#: src/gui/curses/gui-display.c:1137
+#: src/gui/curses/gui-display.c:1135
msgid "-MORE-"
msgstr "-PLUS-"
-#: src/gui/curses/gui-display.c:1313
+#: src/gui/curses/gui-display.c:1310
msgid " [A] Accept"
msgstr " [A] Accepter"
-#: src/gui/curses/gui-display.c:1314 src/gui/curses/gui-display.c:1320
-#: src/gui/curses/gui-display.c:1327
+#: src/gui/curses/gui-display.c:1311 src/gui/curses/gui-display.c:1315
msgid " [C] Cancel"
msgstr " [C] Annuler"
-#: src/gui/curses/gui-display.c:1315 src/gui/curses/gui-display.c:1321
-#: src/gui/curses/gui-display.c:1328 src/gui/curses/gui-display.c:1335
-#: src/gui/curses/gui-display.c:1340
-msgid " [Q] Close DCC view"
-msgstr " [Q] Fermer la vue DCC"
-
-#: src/gui/curses/gui-display.c:1334
+#: src/gui/curses/gui-display.c:1320
msgid " [R] Remove"
msgstr " [R] Retirer"
+#: src/gui/curses/gui-display.c:1324
+msgid " [P] Purge old DCC"
+msgstr " [P] Purger anciens DCC"
+
+#: src/gui/curses/gui-display.c:1325
+msgid " [Q] Close DCC view"
+msgstr " [Q] Fermer la vue DCC"
+
#: src/gui/gtk/gui-display.c:657
msgid "server"
msgstr "serveur"
@@ -2406,7 +2450,7 @@ msgstr "Alias \"%s\" supprimé\n"
msgid "Opened windows:\n"
msgstr "Fenêtres ouvertes:\n"
-#: src/common/weechat.c:184
+#: src/common/weechat.c:195
#, c-format
msgid ""
"WeeChat configuration options (~/.weechat/weechat.rc):\n"
@@ -2415,47 +2459,47 @@ msgstr ""
"Options de configuration de WeeChat (~/.weechat/weechat.rc):\n"
"\n"
-#: src/common/weechat.c:197
+#: src/common/weechat.c:208
#, c-format
msgid " . type boolean (values: 'on' or 'off')\n"
msgstr " . type booléen (valeurs: 'on' ou 'off')\n"
-#: src/common/weechat.c:198 src/common/weechat.c:221 src/common/weechat.c:227
-#: src/common/weechat.c:233
+#: src/common/weechat.c:209 src/common/weechat.c:232 src/common/weechat.c:238
+#: src/common/weechat.c:244
#, c-format
msgid " . default value: '%s'\n"
msgstr " . valeur par défaut: '%s'\n"
-#: src/common/weechat.c:203
+#: src/common/weechat.c:214
#, c-format
msgid " . type integer (values: between %d and %d)\n"
msgstr " . type entier (valeurs: entre %d et %d)\n"
-#: src/common/weechat.c:206
+#: src/common/weechat.c:217
#, c-format
msgid " . default value: %d\n"
msgstr " . valeur par défaut: %d\n"
-#: src/common/weechat.c:210
+#: src/common/weechat.c:221
#, c-format
msgid " . type string (values: "
msgstr " . type chaîne (valeurs: "
-#: src/common/weechat.c:223 src/common/weechat.c:229 src/common/weechat.c:235
+#: src/common/weechat.c:234 src/common/weechat.c:240 src/common/weechat.c:246
msgid "empty"
msgstr "vide"
-#: src/common/weechat.c:226
+#: src/common/weechat.c:237
#, c-format
msgid " . type color (Curses or Gtk color, look at WeeChat doc)\n"
msgstr " . type couleur (couleur Curses ou Gtk, voir la doc WeeChat)\n"
-#: src/common/weechat.c:232
+#: src/common/weechat.c:243
#, c-format
msgid " . type string (any string)\n"
msgstr " . type chaîne (toute chaîne)\n"
-#: src/common/weechat.c:238
+#: src/common/weechat.c:249
#, c-format
msgid ""
" . description: %s\n"
@@ -2464,7 +2508,7 @@ msgstr ""
" . description: %s\n"
"\n"
-#: src/common/weechat.c:244
+#: src/common/weechat.c:255
#, c-format
msgid ""
"Moreover, you can define aliases in [alias] section, by adding lines like:\n"
@@ -2472,7 +2516,7 @@ msgstr ""
"De plus, vous pouvez définir des alias dans la section [alias], en ajoutant "
"des lignes comme :\n"
-#: src/common/weechat.c:246
+#: src/common/weechat.c:257
#, c-format
msgid ""
"where 'j' is alias name, and 'join' associated command.\n"
@@ -2481,57 +2525,57 @@ msgstr ""
"où 'j' est le nom de l'alias, et 'join' la commande associée.\n"
"\n"
-#: src/common/weechat.c:292
+#: src/common/weechat.c:303
#, c-format
msgid "%s invalid syntax for IRC server ('%s'), ignored\n"
msgstr "%s syntaxe invalide pour le serveur IRC ('%s'), ignoré\n"
-#: src/common/weechat.c:304
+#: src/common/weechat.c:315
#, c-format
msgid "%s unable to create server ('%s'), ignored\n"
msgstr "%s impossible de créer le serveur ('%s'), ignoré\n"
-#: src/common/weechat.c:313
+#: src/common/weechat.c:324
#, c-format
msgid "%s unknown parameter '%s', ignored\n"
msgstr "%s paramètre inconnu '%s', ignoré\n"
-#: src/common/weechat.c:333
+#: src/common/weechat.c:344
#, c-format
msgid "%s cannot create directory \"%s\"\n"
msgstr "%s impossible de créer le répertoire \"%s\"\n"
-#: src/common/weechat.c:359
+#: src/common/weechat.c:370
#, c-format
msgid "%s unable to get HOME directory\n"
msgstr "%s impossible de lire le répertoire personnel\n"
-#: src/common/weechat.c:368
+#: src/common/weechat.c:379
#, c-format
msgid "%s not enough memory for home directory\n"
msgstr "%s pas assez de mémoire pour le répertoire personnel\n"
-#: src/common/weechat.c:378
+#: src/common/weechat.c:389
#, c-format
msgid "%s unable to create ~/.weechat directory\n"
msgstr "%s impossible de créer le répertoire ~/.weechat\n"
-#: src/common/weechat.c:430
+#: src/common/weechat.c:441
#, c-format
msgid "%s unable to create ~/.weechat/logs directory\n"
msgstr "%s impossible de créer le répertoire ~/.weechat/logs\n"
-#: src/common/weechat.c:466
+#: src/common/weechat.c:477
#, c-format
msgid "%s unable to create/append to log file (~/.weechat/%s)"
msgstr "%s impossible de créer/ajouter dans le fichier de log (~/.weechat/%s)"
-#: src/common/weechat.c:489
+#: src/common/weechat.c:500
#, c-format
msgid "%sWelcome to "
msgstr "%sBienvenue dans "
-#: src/common/weechat.c:502
+#: src/common/weechat.c:513
msgid "compiled on"
msgstr "compilé le"
@@ -2552,12 +2596,12 @@ msgid "**** End of log "
msgstr "**** Fin du log "
#: src/common/weechat.h:50
-msgid " Error:"
-msgstr " Erreur:"
+msgid "WeeChat Error:"
+msgstr "Erreur WeeChat:"
#: src/common/weechat.h:51
-msgid " Warning:"
-msgstr " Attention:"
+msgid "WeeChat Warning:"
+msgstr "Avertissement WeeChat:"
#: src/common/weeconfig.c:86 src/common/weeconfig.c:87
msgid "set title for window (terminal for Curses GUI) with name & version"
@@ -3078,190 +3122,194 @@ msgid "disconnect after important lag (in minutes, 0 = never disconnect)"
msgstr ""
"déconnexion après un lag important (en minutes, 0 = ne jamais se déconnecter)"
-#: src/common/weeconfig.c:541
+#: src/common/weeconfig.c:542
msgid "automatically accept dcc files"
msgstr "accepte automatiquement les fichiers dcc"
-#: src/common/weeconfig.c:542
+#: src/common/weeconfig.c:543
msgid "automatically accept incoming dcc files"
msgstr "accepte automatiquement les fichiers dcc entrants"
-#: src/common/weeconfig.c:545
+#: src/common/weeconfig.c:546
msgid "automatically accept dcc chats"
msgstr "accepte automatiquement les demandes de discussion dcc"
-#: src/common/weeconfig.c:546
+#: src/common/weeconfig.c:547
msgid "automatically accept dcc chats (use carefully!)"
msgstr ""
"accepte automatiquement les demandes de discussion dcc (à utiliser avec "
"précaution !)"
-#: src/common/weeconfig.c:549
+#: src/common/weeconfig.c:550
msgid "timeout for dcc request"
msgstr "délai d'attente pour les requêtes dcc"
-#: src/common/weeconfig.c:550
+#: src/common/weeconfig.c:551
msgid "timeout for dcc request (in seconds)"
msgstr "délai d'attente pour les requêtes dcc (en secondes)"
-#: src/common/weeconfig.c:553
+#: src/common/weeconfig.c:554
msgid "block size for dcc packets"
msgstr "taille de bloc pour les paquets dcc"
-#: src/common/weeconfig.c:554
+#: src/common/weeconfig.c:555
msgid "block size for dcc packets in bytes (default: 1024)"
msgstr "taille de bloc pour les paquets dcc en octets (défaut: 1024)"
-#: src/common/weeconfig.c:557
+#: src/common/weeconfig.c:558
msgid "path for incoming files with dcc"
msgstr "chemin les fichiers reçus par dcc"
-#: src/common/weeconfig.c:558
+#: src/common/weeconfig.c:559
msgid "path for writing incoming files with dcc (default: user home)"
msgstr ""
"chemin pour écrire les fichiers reçus par dcc (par défaut: répertoire de "
"l'utilisateur)"
-#: src/common/weeconfig.c:561
+#: src/common/weeconfig.c:562
msgid "default path for sending files with dcc"
msgstr "chemin par défaut pour envoyer les fichiers par dcc"
-#: src/common/weeconfig.c:562
+#: src/common/weeconfig.c:563
msgid ""
"path for reading files when sending thru dcc (when no path is specified)"
msgstr ""
"chemin pour lire les fichiers lorsqu'ils sont envoyés par dcc (quand aucun "
"chemin n'est spécifié)"
-#: src/common/weeconfig.c:565
+#: src/common/weeconfig.c:566 src/common/weeconfig.c:567
+msgid "convert spaces to underscores when sending files"
+msgstr "convertir les espaces en underscores lors d'envoi de fichiers"
+
+#: src/common/weeconfig.c:570
msgid "automatically rename dcc files if already exists"
msgstr "renomme automatiquement les fichiers dcc s'ils existent déjà"
-#: src/common/weeconfig.c:566
+#: src/common/weeconfig.c:571
msgid "rename incoming files if already exists (add '.1', '.2', ...)"
msgstr ""
"renommer les fichiers reçus s'ils existent déjà (ajoute '.1', '.2', ...)"
-#: src/common/weeconfig.c:569
+#: src/common/weeconfig.c:574
msgid "automatically resume aborted transfers"
msgstr "continuer automatiquement les transferts non terminés"
-#: src/common/weeconfig.c:570
+#: src/common/weeconfig.c:575
msgid ""
"automatically resume dcc transfer if connection with remote host is loosed"
msgstr ""
"continuer automatiquement les transferts dcc si la connexion avec la machine "
"distante a été perdue"
-#: src/common/weeconfig.c:584
+#: src/common/weeconfig.c:589
msgid "use proxy"
msgstr "utiliser un proxy"
-#: src/common/weeconfig.c:585
+#: src/common/weeconfig.c:590
msgid "use a proxy server to connect to irc server"
msgstr "utiliser un proxy pour se connecter au serveur irc"
-#: src/common/weeconfig.c:588
+#: src/common/weeconfig.c:593
msgid "proxy address"
msgstr "adresse du proxy"
-#: src/common/weeconfig.c:589
+#: src/common/weeconfig.c:594
msgid "proxy server address (IP or hostname)"
msgstr "adresse du serveur proxy (IP ou nom)"
-#: src/common/weeconfig.c:592
+#: src/common/weeconfig.c:597
msgid "port for proxy"
msgstr "port pour le proxy"
-#: src/common/weeconfig.c:593
+#: src/common/weeconfig.c:598
msgid "port for connecting to proxy server"
msgstr "port pour se connecter au serveur proxy"
-#: src/common/weeconfig.c:596
+#: src/common/weeconfig.c:601
msgid "proxy password"
msgstr "mot de passe pour le proxy"
-#: src/common/weeconfig.c:597
+#: src/common/weeconfig.c:602
msgid "password for proxy server"
msgstr "mot de passe pour le serveur proxy"
-#: src/common/weeconfig.c:608
+#: src/common/weeconfig.c:613
msgid "server name"
msgstr "nom du serveur"
-#: src/common/weeconfig.c:609
+#: src/common/weeconfig.c:614
msgid "name associated to IRC server (for display only)"
msgstr "nom associé au serveur IRC (pour affichage seulement)"
-#: src/common/weeconfig.c:612
+#: src/common/weeconfig.c:617
msgid "automatically connect to server"
msgstr "connexion automatique au serveur"
-#: src/common/weeconfig.c:613
+#: src/common/weeconfig.c:618
msgid "automatically connect to server when WeeChat is starting"
msgstr "connexion automatique au serveur quand WeeChat démarre"
-#: src/common/weeconfig.c:616
+#: src/common/weeconfig.c:621
msgid "automatically reconnect to server"
msgstr "reconnexion automatique au serveur"
-#: src/common/weeconfig.c:617
+#: src/common/weeconfig.c:622
msgid "automatically reconnect to server when disconnected"
msgstr "reconnexion automatique au serveur après une déconnexion"
-#: src/common/weeconfig.c:620
+#: src/common/weeconfig.c:625
msgid "delay before trying again to reconnect"
msgstr "délai avant de tenter une reconnexion"
-#: src/common/weeconfig.c:621
+#: src/common/weeconfig.c:626
msgid "delay (in deconds) before trying again to reconnect to server"
msgstr "délai (en secondes) avant de tenter une reconnexion au serveur"
-#: src/common/weeconfig.c:624
+#: src/common/weeconfig.c:629
msgid "server address or hostname"
msgstr "adresse ou nom du serveur"
-#: src/common/weeconfig.c:625
+#: src/common/weeconfig.c:630
msgid "IP address or hostname of IRC server"
msgstr "adresse IP ou nom du serveur IRC"
-#: src/common/weeconfig.c:628
+#: src/common/weeconfig.c:633
msgid "port for IRC server"
msgstr "port pour le serveur IRC"
-#: src/common/weeconfig.c:629
+#: src/common/weeconfig.c:634
msgid "port for connecting to server"
msgstr "port pour se connecter au serveur"
-#: src/common/weeconfig.c:632
+#: src/common/weeconfig.c:637
msgid "server password"
msgstr "mot de passe pour le serveur"
-#: src/common/weeconfig.c:633
+#: src/common/weeconfig.c:638
msgid "password for IRC server"
msgstr "mot de passe pour le serveur IRC"
-#: src/common/weeconfig.c:636
+#: src/common/weeconfig.c:641
msgid "nickname for server"
msgstr "pseudo pour le serveur"
-#: src/common/weeconfig.c:637
+#: src/common/weeconfig.c:642
msgid "nickname to use on IRC server"
msgstr "pseudo à utiliser sur le serveur IRC"
-#: src/common/weeconfig.c:640
+#: src/common/weeconfig.c:645
msgid "alternate nickname for server"
msgstr "pseudo alternatif pour le serveur"
-#: src/common/weeconfig.c:641
+#: src/common/weeconfig.c:646
msgid "alternate nickname to use on IRC server (if nickname is already used)"
msgstr "pseudo alternatif pour le serveur IRC (si le pseudo est déjà utilisé)"
-#: src/common/weeconfig.c:644
+#: src/common/weeconfig.c:649
msgid "2nd alternate nickname for server"
msgstr "2nd pseudo alternatif pour le serveur"
-#: src/common/weeconfig.c:645
+#: src/common/weeconfig.c:650
msgid ""
"2nd alternate nickname to use on IRC server (if alternate nickname is "
"already used)"
@@ -3269,31 +3317,31 @@ msgstr ""
"2nd pseudo alternatif pour le serveur IRC (si le pseudo alternatif est déjà "
"utilisé)"
-#: src/common/weeconfig.c:648
+#: src/common/weeconfig.c:653
msgid "user name for server"
msgstr "nom d'utilisateur pour le serveur"
-#: src/common/weeconfig.c:649
+#: src/common/weeconfig.c:654
msgid "user name to use on IRC server"
msgstr "nom d'utilisateur pour le serveur IRC"
-#: src/common/weeconfig.c:652
+#: src/common/weeconfig.c:657
msgid "real name for server"
msgstr "nom réel pour le serveur"
-#: src/common/weeconfig.c:653
+#: src/common/weeconfig.c:658
msgid "real name to use on IRC server"
msgstr "nom réel pour le serveur IRC"
-#: src/common/weeconfig.c:656 src/common/weeconfig.c:657
+#: src/common/weeconfig.c:661 src/common/weeconfig.c:662
msgid "first command to run when connected to server"
msgstr "commande à exécuter en premier lorsque connecté au serveur"
-#: src/common/weeconfig.c:660
+#: src/common/weeconfig.c:665
msgid "delay (in seconds) after command was executed"
msgstr "délai (en secondes) après exécution de la commande"
-#: src/common/weeconfig.c:661
+#: src/common/weeconfig.c:666
msgid ""
"delay (in seconds) after command was executed (example: give some time for "
"authentication)"
@@ -3301,76 +3349,76 @@ msgstr ""
"délai (en secondes) après exécution de la commande (exemple: donner du temps "
"pour l'authentification)"
-#: src/common/weeconfig.c:664
+#: src/common/weeconfig.c:669
msgid "list of channels to join when connected to server"
msgstr "liste des canaux à rejoindre lorsque connecté au serveur"
-#: src/common/weeconfig.c:665
+#: src/common/weeconfig.c:670
msgid "comma separated list of channels to join when connected to server"
msgstr ""
"liste des canaux (séparés par des virgules) à rejoindre lorsque connecté au "
"serveur"
-#: src/common/weeconfig.c:668 src/common/weeconfig.c:669
+#: src/common/weeconfig.c:673 src/common/weeconfig.c:674
msgid "automatically rejoin channels when kicked"
msgstr "rejoindre automatiquement les canaux quand mis dehors"
-#: src/common/weeconfig.c:1017
+#: src/common/weeconfig.c:1022
#, c-format
msgid "%s %s, line %d: new server, but previous was incomplete\n"
msgstr "%s %s, ligne %d: nouveau serveur, mais le précédent était incomplet\n"
-#: src/common/weeconfig.c:1026
+#: src/common/weeconfig.c:1031
#, c-format
msgid "%s %s, line %d: server '%s' already exists\n"
msgstr "%s %s, ligne %d: le serveur '%s' existe déjà\n"
-#: src/common/weeconfig.c:1040
+#: src/common/weeconfig.c:1045
#, c-format
msgid "%s %s, line %d: unable to create server\n"
msgstr "%s %s, ligne %d: impossible de créer le serveur\n"
-#: src/common/weeconfig.c:1079
+#: src/common/weeconfig.c:1084
#, c-format
msgid "%s unable to assign default int with string (\"%s\")\n"
msgstr "%s impossible d'assigner la valeur entière avec la chaîne (\"%s\")\n"
-#: src/common/weeconfig.c:1090
+#: src/common/weeconfig.c:1095
#, c-format
msgid "%s unable to assign default color (\"%s\")\n"
msgstr "%s impossible d'assigner la couleur par défaut (\"%s\")\n"
-#: src/common/weeconfig.c:1129
+#: src/common/weeconfig.c:1134
#, c-format
msgid "%s config file \"%s\" not found.\n"
msgstr "%s fichier de configuration \"%s\" non trouvé.\n"
-#: src/common/weeconfig.c:1161
+#: src/common/weeconfig.c:1166
#, c-format
msgid "%s %s, line %d: invalid syntax, missing \"]\"\n"
msgstr "%s %s, ligne %d: syntaxe invalide, il manque \"]\"\n"
-#: src/common/weeconfig.c:1178
+#: src/common/weeconfig.c:1183
#, c-format
msgid "%s %s, line %d: unknown section identifier (\"%s\")\n"
msgstr "%s %s, ligne %d: section inconnue (\"%s\")\n"
-#: src/common/weeconfig.c:1196
+#: src/common/weeconfig.c:1201
#, c-format
msgid "%s %s, line %d: invalid section for option, line is ignored\n"
msgstr "%s %s, ligne %d: section invalide pour l'option, ligne ignorée\n"
-#: src/common/weeconfig.c:1204
+#: src/common/weeconfig.c:1209
#, c-format
msgid "%s %s, line %d: invalid syntax, missing \"=\"\n"
msgstr "%s %s, ligne %d: syntaxe invalide, il manque \"=\"\n"
-#: src/common/weeconfig.c:1238
+#: src/common/weeconfig.c:1243
#, c-format
msgid "%s %s, line %d: invalid option \"%s\"\n"
msgstr "%s %s, ligne %d: option \"%s\" invalide\n"
-#: src/common/weeconfig.c:1249
+#: src/common/weeconfig.c:1254
#, c-format
msgid ""
"%s %s, line %d: invalid value foroption '%s'\n"
@@ -3379,7 +3427,7 @@ msgstr ""
"%s %s, ligne %d: valeur invalide pour l'option '%s'\n"
"Attendu: valeur booléenne: 'off' ou 'on'\n"
-#: src/common/weeconfig.c:1258
+#: src/common/weeconfig.c:1263
#, c-format
msgid ""
"%s %s, line %d: invalid value for option '%s'\n"
@@ -3388,7 +3436,7 @@ msgstr ""
"%s %s, ligne %d: valeur invalide pour l'option '%s'\n"
"Attendu: entier compris entre %d et %d\n"
-#: src/common/weeconfig.c:1269
+#: src/common/weeconfig.c:1274
#, c-format
msgid ""
"%s %s, line %d: invalid value for option '%s'\n"
@@ -3397,26 +3445,26 @@ msgstr ""
"%s %s, ligne %d: valeur invalide pour l'option '%s'\n"
"Attendu: une de ces chaînes: "
-#: src/common/weeconfig.c:1285
+#: src/common/weeconfig.c:1290
#, c-format
msgid "%s %s, line %d: invalid color name for option '%s'\n"
msgstr "%s %s, ligne %d: nom de couleur invalide pour l'option '%s'\n"
-#: src/common/weeconfig.c:1345 src/common/weeconfig.c:1518
+#: src/common/weeconfig.c:1350 src/common/weeconfig.c:1523
#, c-format
msgid "%s cannot create file \"%s\"\n"
msgstr "%s impossible de créer le fichier \"%s\"\n"
-#: src/common/weeconfig.c:1351
+#: src/common/weeconfig.c:1356
#, c-format
msgid "%s: creating default config file...\n"
msgstr "%s: création du fichier de configuration par défaut...\n"
-#: src/common/weeconfig.c:1352
+#: src/common/weeconfig.c:1357
msgid "creating default config file\n"
msgstr "création du fichier de configuration par défaut\n"
-#: src/common/weeconfig.c:1355 src/common/weeconfig.c:1527
+#: src/common/weeconfig.c:1360 src/common/weeconfig.c:1532
#, c-format
msgid ""
"#\n"
@@ -3425,6 +3473,9 @@ msgstr ""
"#\n"
"# %s: fichier de configuration, créé par %s v%s le %s#\n"
-#: src/common/weeconfig.c:1524
+#: src/common/weeconfig.c:1529
msgid "saving config to disk\n"
msgstr "sauvegarde de la configuration sur disque\n"
+
+#~ msgid ") from "
+#~ msgstr ") de "
diff --git a/po/weechat.pot b/po/weechat.pot
index 8eb28b816..4c45d7210 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: 2005-02-17 23:45+0100\n"
+"POT-Creation-Date: 2005-02-20 01:03+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,7 +20,7 @@ msgstr ""
msgid "%s cannot allocate new nick\n"
msgstr ""
-#: src/irc/irc-server.c:139 src/common/weeconfig.c:1466
+#: src/irc/irc-server.c:139 src/common/weeconfig.c:1471
msgid "Unable to get user's name"
msgstr ""
@@ -44,82 +44,82 @@ msgstr ""
msgid "%s unable to explode received buffer\n"
msgstr ""
-#: src/irc/irc-server.c:588
+#: src/irc/irc-server.c:587
#, c-format
msgid "%s Command '%s' failed!\n"
msgstr ""
-#: src/irc/irc-server.c:593
+#: src/irc/irc-server.c:592
#, c-format
msgid "%s No command to execute!\n"
msgstr ""
-#: src/irc/irc-server.c:598
+#: src/irc/irc-server.c:597
#, c-format
msgid "%s Unknown command: cmd=%s, args=%s\n"
msgstr ""
-#: src/irc/irc-server.c:640
+#: src/irc/irc-server.c:639
#, c-format
msgid "%s cannot read data from socket, disconnecting from server...\n"
msgstr ""
-#: src/irc/irc-server.c:662
+#: src/irc/irc-server.c:661
#, c-format
msgid "%s: connecting to %s:%d...\n"
msgstr ""
-#: src/irc/irc-server.c:664
+#: src/irc/irc-server.c:663
#, c-format
msgid "connecting to server %s:%d...\n"
msgstr ""
-#: src/irc/irc-server.c:673
+#: src/irc/irc-server.c:672
#, c-format
msgid "%s cannot create pipe\n"
msgstr ""
-#: src/irc/irc-server.c:689
+#: src/irc/irc-server.c:688
#, c-format
msgid "%s cannot set socket option \"SO_REUSEADDR\"\n"
msgstr ""
-#: src/irc/irc-server.c:699
+#: src/irc/irc-server.c:698
#, c-format
msgid "%s cannot set socket option \"SO_KEEPALIVE\"\n"
msgstr ""
-#: src/irc/irc-server.c:709
+#: src/irc/irc-server.c:708
#, c-format
msgid "%s address \"%s\" not found\n"
msgstr ""
-#: src/irc/irc-server.c:734
+#: src/irc/irc-server.c:733
#, c-format
msgid "%s IP address not found\n"
msgstr ""
-#: src/irc/irc-server.c:745
+#: src/irc/irc-server.c:744
#, c-format
msgid "%s: server IP is: %s\n"
msgstr ""
-#: src/irc/irc-server.c:752
+#: src/irc/irc-server.c:751
#, c-format
msgid "%s cannot connect to irc server\n"
msgstr ""
-#: src/irc/irc-server.c:771
+#: src/irc/irc-server.c:770
#, c-format
msgid "%s: Reconnecting to server...\n"
msgstr ""
-#: src/irc/irc-server.c:784 src/irc/irc-server.c:861
+#: src/irc/irc-server.c:783 src/irc/irc-server.c:860
#, c-format
msgid "%s: Reconnecting to server in %d seconds\n"
msgstr ""
-#: src/irc/irc-server.c:828
+#: src/irc/irc-server.c:827
msgid "Disconnected from server!\n"
msgstr ""
@@ -1100,7 +1100,7 @@ msgstr ""
msgid "(hidden)"
msgstr ""
-#: src/irc/irc-send.c:58 src/irc/irc-recv.c:3115
+#: src/irc/irc-send.c:58 src/irc/irc-recv.c:3116
msgid "unknown"
msgstr ""
@@ -1109,39 +1109,40 @@ msgstr ""
msgid "%s: using local hostname \"%s\"\n"
msgstr ""
-#: src/irc/irc-send.c:262
+#: 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
+#, c-format
+msgid "%s wrong argument count for \"%s\" command\n"
+msgstr ""
+
+#: src/irc/irc-send.c:292
msgid "This command is not developed!\n"
msgstr ""
-#: src/irc/irc-send.c:287 src/irc/irc-send.c:313 src/irc/irc-send.c:414
-#: src/irc/irc-send.c:739 src/irc/irc-send.c:818 src/irc/irc-send.c:1319
+#: src/irc/irc-send.c:319 src/irc/irc-send.c:345 src/irc/irc-send.c:446
+#: src/irc/irc-send.c:770 src/irc/irc-send.c:849 src/irc/irc-send.c:1349
#, c-format
msgid "%s \"%s\" command can only be executed in a channel window\n"
msgstr ""
-#: src/irc/irc-send.c:524 src/irc/irc-send.c:591 src/irc/irc-send.c:866
-#: src/irc/irc-send.c:880 src/irc/irc-send.c:1213
+#: src/irc/irc-send.c:556 src/irc/irc-send.c:623 src/irc/irc-send.c:897
+#: src/irc/irc-send.c:911 src/irc/irc-send.c:1243
#, c-format
msgid "%s \"%s\" command can not be executed on a server window\n"
msgstr ""
-#: src/irc/irc-send.c:609 src/irc/irc-send.c:634 src/irc/irc-recv.c:264
+#: src/irc/irc-send.c:641 src/irc/irc-send.c:666 src/irc/irc-recv.c:264
#: src/irc/irc-recv.c:1089
#, c-format
msgid "%s nick not found for \"%s\" command\n"
msgstr ""
-#: src/irc/irc-send.c:686 src/irc/irc-send.c:964 src/irc/irc-recv.c:1255
+#: src/irc/irc-send.c:718 src/irc/irc-send.c:995 src/irc/irc-recv.c:1256
#, c-format
msgid "%s cannot create new private window \"%s\"\n"
msgstr ""
-#: src/irc/irc-send.c:717 src/irc/irc-send.c:791 src/common/command.c:1355
-#, c-format
-msgid "%s wrong argument count for \"%s\" command\n"
-msgstr ""
-
-#: src/irc/irc-send.c:1291
+#: src/irc/irc-send.c:1321
#, c-format
msgid "%s, compiled on %s %s\n"
msgstr ""
@@ -1156,7 +1157,7 @@ msgid " has joined "
msgstr ""
#: src/irc/irc-recv.c:231 src/irc/irc-recv.c:599 src/irc/irc-recv.c:925
-#: src/irc/irc-recv.c:1099 src/irc/irc-recv.c:2562 src/irc/irc-recv.c:2629
+#: src/irc/irc-recv.c:1099 src/irc/irc-recv.c:2563 src/irc/irc-recv.c:2630
#, c-format
msgid "%s channel not found for \"%s\" command\n"
msgstr ""
@@ -1258,7 +1259,7 @@ msgid "removes voice from"
msgstr ""
#: src/irc/irc-recv.c:554 src/irc/irc-recv.c:639 src/irc/irc-recv.c:999
-#: src/irc/irc-recv.c:1351
+#: src/irc/irc-recv.c:1352
#, c-format
msgid "%s \"%s\" command received without host\n"
msgstr ""
@@ -1307,7 +1308,7 @@ msgstr ""
msgid " has left "
msgstr ""
-#: src/irc/irc-recv.c:1048 src/irc/irc-recv.c:1281
+#: src/irc/irc-recv.c:1048 src/irc/irc-recv.c:1282
#, c-format
msgid "On %s: * %s %s"
msgstr ""
@@ -1330,253 +1331,293 @@ msgid "from"
msgstr ""
#: src/irc/irc-recv.c:1184 src/irc/irc-recv.c:1199 src/irc/irc-recv.c:1215
-#: src/irc/irc-recv.c:1231 src/irc/irc-recv.c:1327 src/irc/irc-recv.c:2866
-#: src/irc/irc-recv.c:2923
+#: src/irc/irc-recv.c:1231 src/irc/irc-recv.c:1328 src/irc/irc-recv.c:2867
+#: src/irc/irc-recv.c:2924
#, c-format
msgid "%s cannot parse \"%s\" command\n"
msgstr ""
-#: src/irc/irc-recv.c:1307
+#: src/irc/irc-recv.c:1308
#, c-format
msgid "Private %s> %s"
msgstr ""
-#: src/irc/irc-recv.c:1383
+#: src/irc/irc-recv.c:1384
msgid "has quit"
msgstr ""
-#: src/irc/irc-recv.c:1504
+#: src/irc/irc-recv.c:1505
#, c-format
msgid "%s \"%s\" command received without channel\n"
msgstr ""
-#: src/irc/irc-recv.c:1532
+#: src/irc/irc-recv.c:1533
msgid " has changed topic for "
msgstr ""
-#: src/irc/irc-recv.c:1537
+#: src/irc/irc-recv.c:1538
#, c-format
msgid " to: \"%s\"\n"
msgstr ""
-#: src/irc/irc-recv.c:1543
+#: src/irc/irc-recv.c:1544
msgid " has unset topic for "
msgstr ""
-#: src/irc/irc-recv.c:1654
+#: src/irc/irc-recv.c:1655
#, c-format
msgid " is away: %s\n"
msgstr ""
-#: src/irc/irc-recv.c:1728
+#: src/irc/irc-recv.c:1729
msgid "Users online: "
msgstr ""
-#: src/irc/irc-recv.c:2133
+#: src/irc/irc-recv.c:2134
msgid "idle: "
msgstr ""
-#: src/irc/irc-recv.c:2141
+#: src/irc/irc-recv.c:2142
msgid "days"
msgstr ""
-#: src/irc/irc-recv.c:2141
+#: src/irc/irc-recv.c:2142
msgid "day"
msgstr ""
-#: src/irc/irc-recv.c:2151
+#: src/irc/irc-recv.c:2152
msgid "hours"
msgstr ""
-#: src/irc/irc-recv.c:2151
+#: src/irc/irc-recv.c:2152
msgid "hour"
msgstr ""
-#: src/irc/irc-recv.c:2157
+#: src/irc/irc-recv.c:2158
msgid "minutes"
msgstr ""
-#: src/irc/irc-recv.c:2157
+#: src/irc/irc-recv.c:2158
msgid "minute"
msgstr ""
-#: src/irc/irc-recv.c:2163
+#: src/irc/irc-recv.c:2164
msgid "seconds"
msgstr ""
-#: src/irc/irc-recv.c:2163
+#: src/irc/irc-recv.c:2164
msgid "second"
msgstr ""
-#: src/irc/irc-recv.c:2168
+#: src/irc/irc-recv.c:2169
msgid "signon at: "
msgstr ""
-#: src/irc/irc-recv.c:2256
+#: src/irc/irc-recv.c:2257
msgid "Channels: "
msgstr ""
-#: src/irc/irc-recv.c:2508
+#: src/irc/irc-recv.c:2509
msgid "No topic set for "
msgstr ""
-#: src/irc/irc-recv.c:2550
+#: src/irc/irc-recv.c:2551
msgid "Topic for "
msgstr ""
-#: src/irc/irc-recv.c:2554
+#: src/irc/irc-recv.c:2555
#, c-format
msgid " is: \"%s\"\n"
msgstr ""
-#: src/irc/irc-recv.c:2572 src/irc/irc-recv.c:2656
+#: src/irc/irc-recv.c:2573 src/irc/irc-recv.c:2657
#, c-format
msgid "%s cannot identify channel for \"%s\" command\n"
msgstr ""
-#: src/irc/irc-recv.c:2618
+#: src/irc/irc-recv.c:2619
msgid "Topic set by "
msgstr ""
-#: src/irc/irc-recv.c:2638
+#: src/irc/irc-recv.c:2639
#, c-format
msgid "%s cannot identify date/time for \"%s\" command\n"
msgstr ""
-#: src/irc/irc-recv.c:2647
+#: src/irc/irc-recv.c:2648
#, c-format
msgid "%s cannot identify nickname for \"%s\" command\n"
msgstr ""
-#: src/irc/irc-recv.c:2789
+#: src/irc/irc-recv.c:2790
msgid " on "
msgstr ""
-#: src/irc/irc-recv.c:2912
+#: src/irc/irc-recv.c:2913
#, c-format
msgid "%s cannot create nick \"%s\" for channel \"%s\"\n"
msgstr ""
-#: src/irc/irc-recv.c:2967
+#: src/irc/irc-recv.c:2968
msgid "Nicks "
msgstr ""
-#: src/irc/irc-recv.c:2987
+#: src/irc/irc-recv.c:2988
msgid "Channel "
msgstr ""
-#: src/irc/irc-recv.c:2998
+#: src/irc/irc-recv.c:2999
msgid "nicks"
msgstr ""
-#: src/irc/irc-recv.c:2998
+#: src/irc/irc-recv.c:2999
msgid "nick"
msgstr ""
-#: src/irc/irc-recv.c:3006
+#: src/irc/irc-recv.c:3007
msgid "ops"
msgstr ""
-#: src/irc/irc-recv.c:3006
+#: src/irc/irc-recv.c:3007
msgid "op"
msgstr ""
-#: src/irc/irc-recv.c:3015
+#: src/irc/irc-recv.c:3016
msgid "halfops"
msgstr ""
-#: src/irc/irc-recv.c:3015
+#: src/irc/irc-recv.c:3016
msgid "halfop"
msgstr ""
-#: src/irc/irc-recv.c:3024
+#: src/irc/irc-recv.c:3025
msgid "voices"
msgstr ""
-#: src/irc/irc-recv.c:3024
+#: src/irc/irc-recv.c:3025
msgid "voice"
msgstr ""
-#: src/irc/irc-recv.c:3033
+#: src/irc/irc-recv.c:3034
msgid "normal"
msgstr ""
-#: src/irc/irc-recv.c:3069
+#: src/irc/irc-recv.c:3070
#, c-format
msgid "%s: nickname \"%s\" is already in use, trying 2nd nickname \"%s\"\n"
msgstr ""
-#: src/irc/irc-recv.c:3081
+#: src/irc/irc-recv.c:3082
#, c-format
msgid "%s: nickname \"%s\" is already in use, trying 3rd nickname \"%s\"\n"
msgstr ""
-#: src/irc/irc-recv.c:3093
+#: src/irc/irc-recv.c:3094
#, c-format
msgid ""
"%s: all declared nicknames are already in use, closing connection with "
"server!\n"
msgstr ""
-#: src/irc/irc-recv.c:3103
+#: src/irc/irc-recv.c:3104
#, c-format
msgid "%s: nickname \"%s\" is already in use, trying 1st nickname \"%s\"\n"
msgstr ""
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Waiting"
msgstr ""
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Connecting"
msgstr ""
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Active"
msgstr ""
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Done"
msgstr ""
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Failed"
msgstr ""
-#: src/irc/irc-dcc.c:45
+#: src/irc/irc-dcc.c:46
msgid "Aborted"
msgstr ""
-#: src/irc/irc-dcc.c:235
+#: src/irc/irc-dcc.c:149
+msgid "DCC: file "
+msgstr ""
+
+#: src/irc/irc-dcc.c:154 src/irc/irc-dcc.c:334
+msgid " (local filename: "
+msgstr ""
+
+#: src/irc/irc-dcc.c:160
+msgid ") sent to "
+msgstr ""
+
+#: src/irc/irc-dcc.c:162
+msgid ") received from "
+msgstr ""
+
+#: src/irc/irc-dcc.c:167
+msgid ": ok!\n"
+msgstr ""
+
+#: src/irc/irc-dcc.c:278
#, c-format
msgid "%s not enough memory for new DCC\n"
msgstr ""
-#: src/irc/irc-dcc.c:263
+#: src/irc/irc-dcc.c:308
msgid "Incoming DCC file from "
msgstr ""
-#: src/irc/irc-dcc.c:288
+#: src/irc/irc-dcc.c:319 src/irc/irc-dcc.c:338
msgid " bytes\n"
msgstr ""
-#: src/irc/irc-dcc.c:341
-msgid "DCC: file "
+#: src/irc/irc-dcc.c:325
+msgid "Sending DCC file to "
msgstr ""
-#: src/irc/irc-dcc.c:346
-msgid " (local filename: "
+#: src/irc/irc-dcc.c:393
+#, c-format
+msgid "%s not enough memory for DCC SEND\n"
+msgstr ""
+
+#: src/irc/irc-dcc.c:415
+#, c-format
+msgid "%s cannot access file \"%s\"\n"
msgstr ""
-#: src/irc/irc-dcc.c:351
-msgid ") from "
+#: src/irc/irc-dcc.c:434
+#, c-format
+msgid "%s cannot create socket for DCC\n"
msgstr ""
-#: src/irc/irc-dcc.c:356
-msgid ": ok!\n"
+#: src/irc/irc-dcc.c:446
+#, c-format
+msgid "%s cannot find port for DCC\n"
+msgstr ""
+
+#: src/irc/irc-dcc.c:484
+#, c-format
+msgid "%s cannot send DCC\n"
+msgstr ""
+
+#: src/irc/irc-dcc.c:599
+#, c-format
+msgid ""
+"%s DCC failed because blocksize is too big. Check value of \"dcc_blocksize\" "
+"option, max is %d.\n"
msgstr ""
-#: src/irc/irc-dcc.c:382
+#: src/irc/irc-dcc.c:672
#, c-format
msgid "aborting active DCC: \"%s\" from %s\n"
msgstr ""
@@ -1649,66 +1690,67 @@ msgstr ""
msgid "%s unable to add handler for \"%s\" message (not enough memory)\n"
msgstr ""
-#: src/gui/curses/gui-input.c:740
+#: src/gui/curses/gui-input.c:763
#, c-format
msgid "%s lag is high, disconnecting from server...\n"
msgstr ""
-#: src/gui/curses/gui-display.c:601
+#: src/gui/curses/gui-display.c:600
msgid "bytes"
msgstr ""
-#: src/gui/curses/gui-display.c:601
+#: src/gui/curses/gui-display.c:600
msgid "Kb"
msgstr ""
-#: src/gui/curses/gui-display.c:601
+#: src/gui/curses/gui-display.c:600
msgid "Mb"
msgstr ""
-#: src/gui/curses/gui-display.c:601
+#: src/gui/curses/gui-display.c:600
msgid "Gb"
msgstr ""
-#: src/gui/curses/gui-display.c:971
+#: src/gui/curses/gui-display.c:969
msgid "(away)"
msgstr ""
-#: src/gui/curses/gui-display.c:1056
+#: src/gui/curses/gui-display.c:1054
#, c-format
msgid "%d:[not connected] "
msgstr ""
-#: src/gui/curses/gui-display.c:1073
+#: src/gui/curses/gui-display.c:1071
msgid "Act: "
msgstr ""
-#: src/gui/curses/gui-display.c:1122
+#: src/gui/curses/gui-display.c:1120
#, c-format
msgid "Lag: %.1f"
msgstr ""
-#: src/gui/curses/gui-display.c:1137
+#: src/gui/curses/gui-display.c:1135
msgid "-MORE-"
msgstr ""
-#: src/gui/curses/gui-display.c:1313
+#: src/gui/curses/gui-display.c:1310
msgid " [A] Accept"
msgstr ""
-#: src/gui/curses/gui-display.c:1314 src/gui/curses/gui-display.c:1320
-#: src/gui/curses/gui-display.c:1327
+#: src/gui/curses/gui-display.c:1311 src/gui/curses/gui-display.c:1315
msgid " [C] Cancel"
msgstr ""
-#: src/gui/curses/gui-display.c:1315 src/gui/curses/gui-display.c:1321
-#: src/gui/curses/gui-display.c:1328 src/gui/curses/gui-display.c:1335
-#: src/gui/curses/gui-display.c:1340
-msgid " [Q] Close DCC view"
+#: src/gui/curses/gui-display.c:1320
+msgid " [R] Remove"
msgstr ""
-#: src/gui/curses/gui-display.c:1334
-msgid " [R] Remove"
+#: src/gui/curses/gui-display.c:1324
+msgid " [P] Purge old DCC"
+msgstr ""
+
+#: src/gui/curses/gui-display.c:1325
+msgid " [Q] Close DCC view"
msgstr ""
#: src/gui/gtk/gui-display.c:657
@@ -2246,124 +2288,124 @@ msgstr ""
msgid "Opened windows:\n"
msgstr ""
-#: src/common/weechat.c:184
+#: src/common/weechat.c:195
#, c-format
msgid ""
"WeeChat configuration options (~/.weechat/weechat.rc):\n"
"\n"
msgstr ""
-#: src/common/weechat.c:197
+#: src/common/weechat.c:208
#, c-format
msgid " . type boolean (values: 'on' or 'off')\n"
msgstr ""
-#: src/common/weechat.c:198 src/common/weechat.c:221 src/common/weechat.c:227
-#: src/common/weechat.c:233
+#: src/common/weechat.c:209 src/common/weechat.c:232 src/common/weechat.c:238
+#: src/common/weechat.c:244
#, c-format
msgid " . default value: '%s'\n"
msgstr ""
-#: src/common/weechat.c:203
+#: src/common/weechat.c:214
#, c-format
msgid " . type integer (values: between %d and %d)\n"
msgstr ""
-#: src/common/weechat.c:206
+#: src/common/weechat.c:217
#, c-format
msgid " . default value: %d\n"
msgstr ""
-#: src/common/weechat.c:210
+#: src/common/weechat.c:221
#, c-format
msgid " . type string (values: "
msgstr ""
-#: src/common/weechat.c:223 src/common/weechat.c:229 src/common/weechat.c:235
+#: src/common/weechat.c:234 src/common/weechat.c:240 src/common/weechat.c:246
msgid "empty"
msgstr ""
-#: src/common/weechat.c:226
+#: src/common/weechat.c:237
#, c-format
msgid " . type color (Curses or Gtk color, look at WeeChat doc)\n"
msgstr ""
-#: src/common/weechat.c:232
+#: src/common/weechat.c:243
#, c-format
msgid " . type string (any string)\n"
msgstr ""
-#: src/common/weechat.c:238
+#: src/common/weechat.c:249
#, c-format
msgid ""
" . description: %s\n"
"\n"
msgstr ""
-#: src/common/weechat.c:244
+#: src/common/weechat.c:255
#, c-format
msgid ""
"Moreover, you can define aliases in [alias] section, by adding lines like:\n"
msgstr ""
-#: src/common/weechat.c:246
+#: src/common/weechat.c:257
#, c-format
msgid ""
"where 'j' is alias name, and 'join' associated command.\n"
"\n"
msgstr ""
-#: src/common/weechat.c:292
+#: src/common/weechat.c:303
#, c-format
msgid "%s invalid syntax for IRC server ('%s'), ignored\n"
msgstr ""
-#: src/common/weechat.c:304
+#: src/common/weechat.c:315
#, c-format
msgid "%s unable to create server ('%s'), ignored\n"
msgstr ""
-#: src/common/weechat.c:313
+#: src/common/weechat.c:324
#, c-format
msgid "%s unknown parameter '%s', ignored\n"
msgstr ""
-#: src/common/weechat.c:333
+#: src/common/weechat.c:344
#, c-format
msgid "%s cannot create directory \"%s\"\n"
msgstr ""
-#: src/common/weechat.c:359
+#: src/common/weechat.c:370
#, c-format
msgid "%s unable to get HOME directory\n"
msgstr ""
-#: src/common/weechat.c:368
+#: src/common/weechat.c:379
#, c-format
msgid "%s not enough memory for home directory\n"
msgstr ""
-#: src/common/weechat.c:378
+#: src/common/weechat.c:389
#, c-format
msgid "%s unable to create ~/.weechat directory\n"
msgstr ""
-#: src/common/weechat.c:430
+#: src/common/weechat.c:441
#, c-format
msgid "%s unable to create ~/.weechat/logs directory\n"
msgstr ""
-#: src/common/weechat.c:466
+#: src/common/weechat.c:477
#, c-format
msgid "%s unable to create/append to log file (~/.weechat/%s)"
msgstr ""
-#: src/common/weechat.c:489
+#: src/common/weechat.c:500
#, c-format
msgid "%sWelcome to "
msgstr ""
-#: src/common/weechat.c:502
+#: src/common/weechat.c:513
msgid "compiled on"
msgstr ""
@@ -2384,11 +2426,11 @@ msgid "**** End of log "
msgstr ""
#: src/common/weechat.h:50
-msgid " Error:"
+msgid "WeeChat Error:"
msgstr ""
#: src/common/weechat.h:51
-msgid " Warning:"
+msgid "WeeChat Warning:"
msgstr ""
#: src/common/weeconfig.c:86 src/common/weeconfig.c:87
@@ -2874,330 +2916,334 @@ msgstr ""
msgid "disconnect after important lag (in minutes, 0 = never disconnect)"
msgstr ""
-#: src/common/weeconfig.c:541
+#: src/common/weeconfig.c:542
msgid "automatically accept dcc files"
msgstr ""
-#: src/common/weeconfig.c:542
+#: src/common/weeconfig.c:543
msgid "automatically accept incoming dcc files"
msgstr ""
-#: src/common/weeconfig.c:545
+#: src/common/weeconfig.c:546
msgid "automatically accept dcc chats"
msgstr ""
-#: src/common/weeconfig.c:546
+#: src/common/weeconfig.c:547
msgid "automatically accept dcc chats (use carefully!)"
msgstr ""
-#: src/common/weeconfig.c:549
+#: src/common/weeconfig.c:550
msgid "timeout for dcc request"
msgstr ""
-#: src/common/weeconfig.c:550
+#: src/common/weeconfig.c:551
msgid "timeout for dcc request (in seconds)"
msgstr ""
-#: src/common/weeconfig.c:553
+#: src/common/weeconfig.c:554
msgid "block size for dcc packets"
msgstr ""
-#: src/common/weeconfig.c:554
+#: src/common/weeconfig.c:555
msgid "block size for dcc packets in bytes (default: 1024)"
msgstr ""
-#: src/common/weeconfig.c:557
+#: src/common/weeconfig.c:558
msgid "path for incoming files with dcc"
msgstr ""
-#: src/common/weeconfig.c:558
+#: src/common/weeconfig.c:559
msgid "path for writing incoming files with dcc (default: user home)"
msgstr ""
-#: src/common/weeconfig.c:561
+#: src/common/weeconfig.c:562
msgid "default path for sending files with dcc"
msgstr ""
-#: src/common/weeconfig.c:562
+#: src/common/weeconfig.c:563
msgid ""
"path for reading files when sending thru dcc (when no path is specified)"
msgstr ""
-#: src/common/weeconfig.c:565
+#: src/common/weeconfig.c:566 src/common/weeconfig.c:567
+msgid "convert spaces to underscores when sending files"
+msgstr ""
+
+#: src/common/weeconfig.c:570
msgid "automatically rename dcc files if already exists"
msgstr ""
-#: src/common/weeconfig.c:566
+#: src/common/weeconfig.c:571
msgid "rename incoming files if already exists (add '.1', '.2', ...)"
msgstr ""
-#: src/common/weeconfig.c:569
+#: src/common/weeconfig.c:574
msgid "automatically resume aborted transfers"
msgstr ""
-#: src/common/weeconfig.c:570
+#: src/common/weeconfig.c:575
msgid ""
"automatically resume dcc transfer if connection with remote host is loosed"
msgstr ""
-#: src/common/weeconfig.c:584
+#: src/common/weeconfig.c:589
msgid "use proxy"
msgstr ""
-#: src/common/weeconfig.c:585
+#: src/common/weeconfig.c:590
msgid "use a proxy server to connect to irc server"
msgstr ""
-#: src/common/weeconfig.c:588
+#: src/common/weeconfig.c:593
msgid "proxy address"
msgstr ""
-#: src/common/weeconfig.c:589
+#: src/common/weeconfig.c:594
msgid "proxy server address (IP or hostname)"
msgstr ""
-#: src/common/weeconfig.c:592
+#: src/common/weeconfig.c:597
msgid "port for proxy"
msgstr ""
-#: src/common/weeconfig.c:593
+#: src/common/weeconfig.c:598
msgid "port for connecting to proxy server"
msgstr ""
-#: src/common/weeconfig.c:596
+#: src/common/weeconfig.c:601
msgid "proxy password"
msgstr ""
-#: src/common/weeconfig.c:597
+#: src/common/weeconfig.c:602
msgid "password for proxy server"
msgstr ""
-#: src/common/weeconfig.c:608
+#: src/common/weeconfig.c:613
msgid "server name"
msgstr ""
-#: src/common/weeconfig.c:609
+#: src/common/weeconfig.c:614
msgid "name associated to IRC server (for display only)"
msgstr ""
-#: src/common/weeconfig.c:612
+#: src/common/weeconfig.c:617
msgid "automatically connect to server"
msgstr ""
-#: src/common/weeconfig.c:613
+#: src/common/weeconfig.c:618
msgid "automatically connect to server when WeeChat is starting"
msgstr ""
-#: src/common/weeconfig.c:616
+#: src/common/weeconfig.c:621
msgid "automatically reconnect to server"
msgstr ""
-#: src/common/weeconfig.c:617
+#: src/common/weeconfig.c:622
msgid "automatically reconnect to server when disconnected"
msgstr ""
-#: src/common/weeconfig.c:620
+#: src/common/weeconfig.c:625
msgid "delay before trying again to reconnect"
msgstr ""
-#: src/common/weeconfig.c:621
+#: src/common/weeconfig.c:626
msgid "delay (in deconds) before trying again to reconnect to server"
msgstr ""
-#: src/common/weeconfig.c:624
+#: src/common/weeconfig.c:629
msgid "server address or hostname"
msgstr ""
-#: src/common/weeconfig.c:625
+#: src/common/weeconfig.c:630
msgid "IP address or hostname of IRC server"
msgstr ""
-#: src/common/weeconfig.c:628
+#: src/common/weeconfig.c:633
msgid "port for IRC server"
msgstr ""
-#: src/common/weeconfig.c:629
+#: src/common/weeconfig.c:634
msgid "port for connecting to server"
msgstr ""
-#: src/common/weeconfig.c:632
+#: src/common/weeconfig.c:637
msgid "server password"
msgstr ""
-#: src/common/weeconfig.c:633
+#: src/common/weeconfig.c:638
msgid "password for IRC server"
msgstr ""
-#: src/common/weeconfig.c:636
+#: src/common/weeconfig.c:641
msgid "nickname for server"
msgstr ""
-#: src/common/weeconfig.c:637
+#: src/common/weeconfig.c:642
msgid "nickname to use on IRC server"
msgstr ""
-#: src/common/weeconfig.c:640
+#: src/common/weeconfig.c:645
msgid "alternate nickname for server"
msgstr ""
-#: src/common/weeconfig.c:641
+#: src/common/weeconfig.c:646
msgid "alternate nickname to use on IRC server (if nickname is already used)"
msgstr ""
-#: src/common/weeconfig.c:644
+#: src/common/weeconfig.c:649
msgid "2nd alternate nickname for server"
msgstr ""
-#: src/common/weeconfig.c:645
+#: src/common/weeconfig.c:650
msgid ""
"2nd alternate nickname to use on IRC server (if alternate nickname is "
"already used)"
msgstr ""
-#: src/common/weeconfig.c:648
+#: src/common/weeconfig.c:653
msgid "user name for server"
msgstr ""
-#: src/common/weeconfig.c:649
+#: src/common/weeconfig.c:654
msgid "user name to use on IRC server"
msgstr ""
-#: src/common/weeconfig.c:652
+#: src/common/weeconfig.c:657
msgid "real name for server"
msgstr ""
-#: src/common/weeconfig.c:653
+#: src/common/weeconfig.c:658
msgid "real name to use on IRC server"
msgstr ""
-#: src/common/weeconfig.c:656 src/common/weeconfig.c:657
+#: src/common/weeconfig.c:661 src/common/weeconfig.c:662
msgid "first command to run when connected to server"
msgstr ""
-#: src/common/weeconfig.c:660
+#: src/common/weeconfig.c:665
msgid "delay (in seconds) after command was executed"
msgstr ""
-#: src/common/weeconfig.c:661
+#: src/common/weeconfig.c:666
msgid ""
"delay (in seconds) after command was executed (example: give some time for "
"authentication)"
msgstr ""
-#: src/common/weeconfig.c:664
+#: src/common/weeconfig.c:669
msgid "list of channels to join when connected to server"
msgstr ""
-#: src/common/weeconfig.c:665
+#: src/common/weeconfig.c:670
msgid "comma separated list of channels to join when connected to server"
msgstr ""
-#: src/common/weeconfig.c:668 src/common/weeconfig.c:669
+#: src/common/weeconfig.c:673 src/common/weeconfig.c:674
msgid "automatically rejoin channels when kicked"
msgstr ""
-#: src/common/weeconfig.c:1017
+#: src/common/weeconfig.c:1022
#, c-format
msgid "%s %s, line %d: new server, but previous was incomplete\n"
msgstr ""
-#: src/common/weeconfig.c:1026
+#: src/common/weeconfig.c:1031
#, c-format
msgid "%s %s, line %d: server '%s' already exists\n"
msgstr ""
-#: src/common/weeconfig.c:1040
+#: src/common/weeconfig.c:1045
#, c-format
msgid "%s %s, line %d: unable to create server\n"
msgstr ""
-#: src/common/weeconfig.c:1079
+#: src/common/weeconfig.c:1084
#, c-format
msgid "%s unable to assign default int with string (\"%s\")\n"
msgstr ""
-#: src/common/weeconfig.c:1090
+#: src/common/weeconfig.c:1095
#, c-format
msgid "%s unable to assign default color (\"%s\")\n"
msgstr ""
-#: src/common/weeconfig.c:1129
+#: src/common/weeconfig.c:1134
#, c-format
msgid "%s config file \"%s\" not found.\n"
msgstr ""
-#: src/common/weeconfig.c:1161
+#: src/common/weeconfig.c:1166
#, c-format
msgid "%s %s, line %d: invalid syntax, missing \"]\"\n"
msgstr ""
-#: src/common/weeconfig.c:1178
+#: src/common/weeconfig.c:1183
#, c-format
msgid "%s %s, line %d: unknown section identifier (\"%s\")\n"
msgstr ""
-#: src/common/weeconfig.c:1196
+#: src/common/weeconfig.c:1201
#, c-format
msgid "%s %s, line %d: invalid section for option, line is ignored\n"
msgstr ""
-#: src/common/weeconfig.c:1204
+#: src/common/weeconfig.c:1209
#, c-format
msgid "%s %s, line %d: invalid syntax, missing \"=\"\n"
msgstr ""
-#: src/common/weeconfig.c:1238
+#: src/common/weeconfig.c:1243
#, c-format
msgid "%s %s, line %d: invalid option \"%s\"\n"
msgstr ""
-#: src/common/weeconfig.c:1249
+#: src/common/weeconfig.c:1254
#, c-format
msgid ""
"%s %s, line %d: invalid value foroption '%s'\n"
"Expected: boolean value: 'off' or 'on'\n"
msgstr ""
-#: src/common/weeconfig.c:1258
+#: src/common/weeconfig.c:1263
#, c-format
msgid ""
"%s %s, line %d: invalid value for option '%s'\n"
"Expected: integer between %d and %d\n"
msgstr ""
-#: src/common/weeconfig.c:1269
+#: src/common/weeconfig.c:1274
#, c-format
msgid ""
"%s %s, line %d: invalid value for option '%s'\n"
"Expected: one of these strings: "
msgstr ""
-#: src/common/weeconfig.c:1285
+#: src/common/weeconfig.c:1290
#, c-format
msgid "%s %s, line %d: invalid color name for option '%s'\n"
msgstr ""
-#: src/common/weeconfig.c:1345 src/common/weeconfig.c:1518
+#: src/common/weeconfig.c:1350 src/common/weeconfig.c:1523
#, c-format
msgid "%s cannot create file \"%s\"\n"
msgstr ""
-#: src/common/weeconfig.c:1351
+#: src/common/weeconfig.c:1356
#, c-format
msgid "%s: creating default config file...\n"
msgstr ""
-#: src/common/weeconfig.c:1352
+#: src/common/weeconfig.c:1357
msgid "creating default config file\n"
msgstr ""
-#: src/common/weeconfig.c:1355 src/common/weeconfig.c:1527
+#: src/common/weeconfig.c:1360 src/common/weeconfig.c:1532
#, c-format
msgid ""
"#\n"
"# %s configuration file, created by %s v%s on %s#\n"
msgstr ""
-#: src/common/weeconfig.c:1524
+#: src/common/weeconfig.c:1529
msgid "saving config to disk\n"
msgstr ""
diff --git a/src/common/weechat.h b/src/common/weechat.h
index 16504a3d3..34f72dc4b 100644
--- a/src/common/weechat.h
+++ b/src/common/weechat.h
@@ -47,8 +47,8 @@
#define WEECHAT_COPYRIGHT_DATE "(c) 2003-2005"
#define WEECHAT_WEBSITE "http://weechat.flashtux.org"
-#define WEECHAT_ERROR _(PACKAGE_NAME " Error:")
-#define WEECHAT_WARNING _(PACKAGE_NAME " Warning:")
+#define WEECHAT_ERROR _("WeeChat Error:")
+#define WEECHAT_WARNING _("WeeChat Warning:")
/* log file */
diff --git a/src/common/weeconfig.c b/src/common/weeconfig.c
index a9d14c674..643f7f123 100644
--- a/src/common/weeconfig.c
+++ b/src/common/weeconfig.c
@@ -534,6 +534,7 @@ int cfg_dcc_timeout;
int cfg_dcc_blocksize;
char *cfg_dcc_download_path;
char *cfg_dcc_upload_path;
+int cfg_dcc_convert_spaces;
int cfg_dcc_auto_rename;
int cfg_dcc_auto_resume;
@@ -544,7 +545,7 @@ t_config_option weechat_options_dcc[] =
NULL, NULL, &cfg_dcc_auto_accept_files, NULL, config_change_noop },
{ "dcc_auto_accept_chats", N_("automatically accept dcc chats"),
N_("automatically accept dcc chats (use carefully!)"),
- OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE,
+ OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_FALSE,
NULL, NULL, &cfg_dcc_auto_accept_chats, NULL, config_change_noop },
{ "dcc_timeout", N_("timeout for dcc request"),
N_("timeout for dcc request (in seconds)"),
@@ -552,7 +553,7 @@ t_config_option weechat_options_dcc[] =
NULL, NULL, &cfg_dcc_timeout, NULL, config_change_noop },
{ "dcc_blocksize", N_("block size for dcc packets"),
N_("block size for dcc packets in bytes (default: 1024)"),
- OPTION_TYPE_INT, 1024, 102400, 1024,
+ OPTION_TYPE_INT, 1024, 102400, 65536,
NULL, NULL, &cfg_dcc_blocksize, NULL, config_change_noop },
{ "dcc_download_path", N_("path for incoming files with dcc"),
N_("path for writing incoming files with dcc (default: user home)"),
@@ -562,6 +563,10 @@ t_config_option weechat_options_dcc[] =
N_("path for reading files when sending thru dcc (when no path is specified)"),
OPTION_TYPE_STRING, 0, 0, 0, "~",
NULL, NULL, &cfg_dcc_upload_path, config_change_noop },
+ { "dcc_convert_spaces", N_("convert spaces to underscores when sending files"),
+ N_("convert spaces to underscores when sending files"),
+ OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE,
+ NULL, NULL, &cfg_dcc_convert_spaces, NULL, config_change_noop },
{ "dcc_auto_rename", N_("automatically rename dcc files if already exists"),
N_("rename incoming files if already exists (add '.1', '.2', ...)"),
OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE,
diff --git a/src/common/weeconfig.h b/src/common/weeconfig.h
index f69d010af..369639101 100644
--- a/src/common/weeconfig.h
+++ b/src/common/weeconfig.h
@@ -170,6 +170,7 @@ extern int cfg_dcc_timeout;
extern int cfg_dcc_blocksize;
extern char *cfg_dcc_download_path;
extern char *cfg_dcc_upload_path;
+extern int cfg_dcc_convert_spaces;
extern int cfg_dcc_auto_rename;
extern int cfg_dcc_auto_resume;
diff --git a/src/gui/curses/gui-display.c b/src/gui/curses/gui-display.c
index 6fa24e0aa..346335e19 100644
--- a/src/gui/curses/gui-display.c
+++ b/src/gui/curses/gui-display.c
@@ -365,7 +365,6 @@ gui_draw_buffer_title (t_gui_buffer *buffer, int erase)
{
if (!buffer->dcc)
{
- /* TODO: change this copyright as title? */
mvwprintw (ptr_win->win_title, 0, 0,
format,
PACKAGE_STRING " " WEECHAT_COPYRIGHT_DATE " - "
@@ -595,7 +594,7 @@ gui_draw_buffer_chat (t_gui_buffer *buffer, int erase)
{
t_gui_window *ptr_win;
t_gui_line *ptr_line;
- t_dcc *dcc_first, *dcc_selected, *ptr_dcc;
+ t_irc_dcc *dcc_first, *dcc_selected, *ptr_dcc;
char format_empty[32];
int i, j, lines_used, num_bars;
char *unit_name[] = { N_("bytes"), N_("Kb"), N_("Mb"), N_("Gb") };
@@ -627,8 +626,8 @@ gui_draw_buffer_chat (t_gui_buffer *buffer, int erase)
if (buffer->dcc)
{
i = 0;
- dcc_first = (ptr_win->dcc_first) ? (t_dcc *) ptr_win->dcc_first : dcc_list;
- dcc_selected = (ptr_win->dcc_selected) ? (t_dcc *) ptr_win->dcc_selected : dcc_list;
+ dcc_first = (ptr_win->dcc_first) ? (t_irc_dcc *) ptr_win->dcc_first : dcc_list;
+ dcc_selected = (ptr_win->dcc_selected) ? (t_irc_dcc *) ptr_win->dcc_selected : dcc_list;
for (ptr_dcc = dcc_first; ptr_dcc; ptr_dcc = ptr_dcc->next_dcc)
{
if (i >= ptr_win->win_chat_height - 1)
@@ -640,7 +639,7 @@ gui_draw_buffer_chat (t_gui_buffer *buffer, int erase)
(ptr_dcc == dcc_selected) ?
COLOR_DCC_SELECTED : COLOR_WIN_CHAT);
mvwprintw (ptr_win->win_chat, i, 0, "%s %-16s %s",
- (ptr_dcc == dcc_selected) ? ">>" : " ",
+ (ptr_dcc == dcc_selected) ? "**" : " ",
ptr_dcc->nick, ptr_dcc->filename);
if (ptr_dcc->filename_suffix > 0)
wprintw (ptr_win->win_chat, " (.%d)",
@@ -649,9 +648,8 @@ gui_draw_buffer_chat (t_gui_buffer *buffer, int erase)
(ptr_dcc == dcc_selected) ?
COLOR_DCC_SELECTED : COLOR_WIN_CHAT);
mvwprintw (ptr_win->win_chat, i + 1, 0, "%s %s ",
- (ptr_dcc == dcc_selected) ? ">>" : " ",
- (ptr_dcc->type == DCC_FILE_RECV) ?
- "--->" : "<---");
+ (ptr_dcc == dcc_selected) ? "**" : " ",
+ (ptr_dcc->type == DCC_FILE_RECV) ? "-->>" : "<<--");
gui_window_set_color (ptr_win->win_chat,
COLOR_DCC_WAITING + ptr_dcc->status);
wprintw (ptr_win->win_chat, "%-10s",
@@ -1231,7 +1229,7 @@ gui_draw_buffer_input (t_gui_buffer *buffer, int erase)
char format[32];
char *ptr_nickname;
int input_width;
- t_dcc *dcc_selected;
+ t_irc_dcc *dcc_selected;
if (!gui_ok)
return;
@@ -1300,7 +1298,8 @@ gui_draw_buffer_input (t_gui_buffer *buffer, int erase)
{
if (buffer->dcc)
{
- dcc_selected = (ptr_win->dcc_selected) ? (t_dcc *) ptr_win->dcc_selected : dcc_list;
+ dcc_selected = (ptr_win->dcc_selected) ? (t_irc_dcc *) ptr_win->dcc_selected : dcc_list;
+ wmove (ptr_win->win_input, 0, 0);
if (dcc_selected)
{
switch (dcc_selected->status)
@@ -1308,36 +1307,22 @@ gui_draw_buffer_input (t_gui_buffer *buffer, int erase)
case DCC_WAITING:
if ((dcc_selected->type == DCC_CHAT_RECV)
|| (dcc_selected->type == DCC_FILE_RECV))
- {
- mvwprintw (ptr_win->win_input, 0, 0,
- _(" [A] Accept"));
- wprintw (ptr_win->win_input, _(" [C] Cancel"));
- wprintw (ptr_win->win_input, _(" [Q] Close DCC view"));
- }
- else
- {
- mvwprintw (ptr_win->win_input, 0, 0,
- _(" [C] Cancel"));
- wprintw (ptr_win->win_input, _(" [Q] Close DCC view"));
- }
+ wprintw (ptr_win->win_input, _(" [A] Accept"));
+ wprintw (ptr_win->win_input, _(" [C] Cancel"));
break;
case DCC_CONNECTING:
case DCC_ACTIVE:
- mvwprintw (ptr_win->win_input, 0, 0,
- _(" [C] Cancel"));
- wprintw (ptr_win->win_input, _(" [Q] Close DCC view"));
+ wprintw (ptr_win->win_input, _(" [C] Cancel"));
break;
case DCC_DONE:
case DCC_FAILED:
case DCC_ABORTED:
- mvwprintw (ptr_win->win_input, 0, 0,
- _(" [R] Remove"));
- wprintw (ptr_win->win_input, _(" [Q] Close DCC view"));
+ wprintw (ptr_win->win_input, _(" [R] Remove"));
break;
}
}
- else
- mvwprintw (ptr_win->win_input, 0, 0, _(" [Q] Close DCC view"));
+ wprintw (ptr_win->win_input, _(" [P] Purge old DCC"));
+ wprintw (ptr_win->win_input, _(" [Q] Close DCC view"));
wclrtoeol (ptr_win->win_input);
if (ptr_win == gui_current_window)
move (ptr_win->win_y + ptr_win->win_height - 1,
@@ -2290,6 +2275,9 @@ gui_printf_color_type (t_gui_buffer *buffer, int type, int color, char *message,
buffer = SERVER(gui_current_window->buffer)->buffer;
else
buffer = gui_current_window->buffer;
+
+ if (buffer->dcc)
+ buffer = gui_buffers;
}
if (buffer == NULL)
diff --git a/src/gui/curses/gui-input.c b/src/gui/curses/gui-input.c
index ab300f047..1ca34b5b6 100644
--- a/src/gui/curses/gui-input.c
+++ b/src/gui/curses/gui-input.c
@@ -52,8 +52,9 @@ gui_read_keyb ()
int key, i;
t_gui_buffer *ptr_buffer;
t_irc_server *ptr_server;
+ t_irc_dcc *ptr_dcc;
char new_char[3], *decoded_string;
- t_dcc *dcc_selected;
+ t_irc_dcc *dcc_selected;
key = getch ();
if (key != ERR)
@@ -98,14 +99,14 @@ gui_read_keyb ()
if (dcc_list)
{
if (gui_current_window->dcc_selected
- && ((t_dcc *)(gui_current_window->dcc_selected))->prev_dcc)
+ && ((t_irc_dcc *)(gui_current_window->dcc_selected))->prev_dcc)
{
if (gui_current_window->dcc_selected ==
gui_current_window->dcc_first)
gui_current_window->dcc_first =
- ((t_dcc *)(gui_current_window->dcc_first))->prev_dcc;
+ ((t_irc_dcc *)(gui_current_window->dcc_first))->prev_dcc;
gui_current_window->dcc_selected =
- ((t_dcc *)(gui_current_window->dcc_selected))->prev_dcc;
+ ((t_irc_dcc *)(gui_current_window->dcc_selected))->prev_dcc;
gui_draw_buffer_chat (gui_current_window->buffer, 1);
gui_draw_buffer_input (gui_current_window->buffer, 1);
}
@@ -144,7 +145,7 @@ gui_read_keyb ()
if (dcc_list)
{
if (!gui_current_window->dcc_selected
- || ((t_dcc *)(gui_current_window->dcc_selected))->next_dcc)
+ || ((t_irc_dcc *)(gui_current_window->dcc_selected))->next_dcc)
{
if (gui_current_window->dcc_last_displayed
&& (gui_current_window->dcc_selected ==
@@ -152,14 +153,14 @@ gui_read_keyb ()
{
if (gui_current_window->dcc_first)
gui_current_window->dcc_first =
- ((t_dcc *)(gui_current_window->dcc_first))->next_dcc;
+ ((t_irc_dcc *)(gui_current_window->dcc_first))->next_dcc;
else
gui_current_window->dcc_first =
dcc_list->next_dcc;
}
if (gui_current_window->dcc_selected)
gui_current_window->dcc_selected =
- ((t_dcc *)(gui_current_window->dcc_selected))->next_dcc;
+ ((t_irc_dcc *)(gui_current_window->dcc_selected))->next_dcc;
else
gui_current_window->dcc_selected =
dcc_list->next_dcc;
@@ -558,7 +559,7 @@ gui_read_keyb ()
if (gui_current_window->buffer->dcc)
{
dcc_selected = (gui_current_window->dcc_selected) ?
- (t_dcc *) gui_current_window->dcc_selected : dcc_list;
+ (t_irc_dcc *) gui_current_window->dcc_selected : dcc_list;
switch (key)
{
/* accept DCC */
@@ -584,10 +585,30 @@ gui_read_keyb ()
gui_redraw_buffer (gui_current_window->buffer);
}
break;
+ /* purge old DCC */
+ case 'p':
+ case 'P':
+ gui_current_window->dcc_selected = NULL;
+ for (ptr_dcc = dcc_list; ptr_dcc; ptr_dcc = ptr_dcc->next_dcc)
+ {
+ if ((dcc_selected->status == DCC_DONE)
+ || (dcc_selected->status == DCC_FAILED)
+ || (dcc_selected->status == DCC_ABORTED))
+ dcc_free (ptr_dcc);
+ }
+ gui_redraw_buffer (gui_current_window->buffer);
+ break;
/* close DCC window */
case 'q':
case 'Q':
- gui_buffer_free (gui_current_window->buffer, 1);
+ if (buffer_before_dcc)
+ {
+ gui_buffer_free (gui_current_window->buffer, 1);
+ gui_switch_to_buffer (gui_current_window,
+ buffer_before_dcc);
+ }
+ else
+ gui_buffer_free (gui_current_window->buffer, 1);
gui_redraw_buffer (gui_current_window->buffer);
break;
/* remove from DCC list */
@@ -595,7 +616,8 @@ gui_read_keyb ()
case 'R':
if (dcc_selected
&& (((dcc_selected->type == DCC_CHAT_RECV)
- || (dcc_selected->type == DCC_FILE_RECV))
+ || (dcc_selected->type == DCC_FILE_RECV)
+ || (dcc_selected->type == DCC_FILE_SEND))
&& ((dcc_selected->status == DCC_DONE)
|| (dcc_selected->status == DCC_FAILED)
|| (dcc_selected->status == DCC_ABORTED))))
@@ -703,10 +725,11 @@ gui_main_loop ()
}
}
- timeout.tv_sec = 0;
- timeout.tv_usec = 10000;
FD_ZERO (&read_fd);
FD_SET (STDIN_FILENO, &read_fd);
+ timeout.tv_sec = 0;
+ timeout.tv_usec = 10000;
+
for (ptr_server = irc_servers; ptr_server;
ptr_server = ptr_server->next_server)
{
@@ -749,7 +772,7 @@ gui_main_loop ()
FD_SET (ptr_server->sock4, &read_fd);
}
}
- if (select (FD_SETSIZE, &read_fd, NULL, NULL, &timeout))
+ if (select (FD_SETSIZE, &read_fd, NULL, NULL, &timeout) > 0)
{
if (FD_ISSET (STDIN_FILENO, &read_fd))
{
diff --git a/src/irc/irc-commands.c b/src/irc/irc-commands.c
index 1cbff48bb..f6bd3de77 100644
--- a/src/irc/irc-commands.c
+++ b/src/irc/irc-commands.c
@@ -49,7 +49,7 @@ t_irc_command irc_commands[] =
N_("action: 'send' (file) or 'chat'\n"
"nickname: nickname to send file or chat\n"
"file: filename (on local host)"),
- 2, 3, 1, NULL, irc_cmd_send_dcc, NULL },
+ 2, MAX_ARGS, 1, NULL, irc_cmd_send_dcc, NULL },
{ "deop", N_("removes channel operator status from nickname(s)"),
N_("nickname [nickname]"), "",
1, MAX_ARGS, 1, irc_cmd_send_deop, NULL, NULL },
diff --git a/src/irc/irc-dcc.c b/src/irc/irc-dcc.c
index 565e28128..2d51c7e1a 100644
--- a/src/irc/irc-dcc.c
+++ b/src/irc/irc-dcc.c
@@ -28,6 +28,7 @@
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
+#include <sys/stat.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
@@ -39,7 +40,7 @@
#include "../gui/gui.h"
-t_dcc *dcc_list = NULL; /* DCC files & chat list */
+t_irc_dcc *dcc_list = NULL; /* DCC files & chat list */
char *dcc_status_string[] = /* strings for DCC status */
{ N_("Waiting"), N_("Connecting"), N_("Active"), N_("Done"), N_("Failed"),
N_("Aborted") };
@@ -64,31 +65,42 @@ dcc_redraw (int highlight)
* dcc_connect: connect to another host
*/
-void
-dcc_connect (t_dcc *ptr_dcc)
+int
+dcc_connect (t_irc_dcc *ptr_dcc)
{
struct sockaddr_in addr;
ptr_dcc->status = DCC_CONNECTING;
- ptr_dcc->sock = socket (AF_INET, SOCK_STREAM, 0);
if (ptr_dcc->sock == -1)
- return;
- memset (&addr, 0, sizeof (addr));
- addr.sin_port = htons (ptr_dcc->port);
- addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = htonl (ptr_dcc->addr);
- fcntl (ptr_dcc->sock, F_SETFL, O_NONBLOCK);
- connect (ptr_dcc->sock, (struct sockaddr *) &addr, sizeof (addr));
-}
-
-/*
- * dcc_send: send DCC request (file or chat)
- */
-
-void
-dcc_send ()
-{
+ {
+ ptr_dcc->sock = socket (AF_INET, SOCK_STREAM, 0);
+ if (ptr_dcc->sock == -1)
+ return 0;
+ }
+ if (fcntl (ptr_dcc->sock, F_SETFL, O_NONBLOCK) == -1)
+ return 0;
+
+ /* for DCC SEND, listen to socket for a connection */
+ if (ptr_dcc->type == DCC_FILE_SEND)
+ {
+ if (listen (ptr_dcc->sock, 1) == -1)
+ return 0;
+ if (fcntl (ptr_dcc->sock, F_SETFL, 0) == -1)
+ return 0;
+ }
+
+ /* for DCC RECV, connect to listening host */
+ if (ptr_dcc->type == DCC_FILE_RECV)
+ {
+ memset (&addr, 0, sizeof (addr));
+ addr.sin_port = htons (ptr_dcc->port);
+ addr.sin_family = AF_INET;
+ addr.sin_addr.s_addr = htonl (ptr_dcc->addr);
+ connect (ptr_dcc->sock, (struct sockaddr *) &addr, sizeof (addr));
+ }
+
+ return 1;
}
/*
@@ -96,9 +108,9 @@ dcc_send ()
*/
void
-dcc_free (t_dcc *ptr_dcc)
+dcc_free (t_irc_dcc *ptr_dcc)
{
- t_dcc *new_dcc_list;
+ t_irc_dcc *new_dcc_list;
if (ptr_dcc->prev_dcc)
{
@@ -125,9 +137,37 @@ dcc_free (t_dcc *ptr_dcc)
*/
void
-dcc_close (t_dcc *ptr_dcc, int status)
+dcc_close (t_irc_dcc *ptr_dcc, int status)
{
ptr_dcc->status = status;
+
+ if (status == DCC_DONE)
+ {
+ if ((ptr_dcc->type == DCC_FILE_SEND) || (ptr_dcc->type == DCC_FILE_RECV))
+ {
+ irc_display_prefix (ptr_dcc->server->buffer, PREFIX_INFO);
+ gui_printf (ptr_dcc->server->buffer, _("DCC: file "));
+ gui_printf_color (ptr_dcc->server->buffer,
+ COLOR_WIN_CHAT_CHANNEL,
+ "%s",
+ ptr_dcc->filename);
+ gui_printf (ptr_dcc->server->buffer, _(" (local filename: "));
+ gui_printf_color (ptr_dcc->server->buffer,
+ COLOR_WIN_CHAT_CHANNEL,
+ "%s",
+ ptr_dcc->local_filename);
+ if (ptr_dcc->type == DCC_FILE_SEND)
+ gui_printf (ptr_dcc->server->buffer, _(") sent to "));
+ else
+ gui_printf (ptr_dcc->server->buffer, _(") received from "));
+ gui_printf_color (ptr_dcc->server->buffer,
+ COLOR_WIN_CHAT_NICK,
+ "%s",
+ ptr_dcc->nick);
+ gui_printf (ptr_dcc->server->buffer, _(": ok!\n"));
+ }
+ }
+
if (ptr_dcc->sock != -1)
{
close (ptr_dcc->sock);
@@ -145,13 +185,15 @@ dcc_close (t_dcc *ptr_dcc, int status)
*/
void
-dcc_accept (t_dcc *ptr_dcc)
+dcc_accept (t_irc_dcc *ptr_dcc)
{
char *ptr_home, *filename2;
- dcc_connect (ptr_dcc);
- if (ptr_dcc->sock == -1)
- ptr_dcc->status = DCC_FAILED;
+ if (!dcc_connect (ptr_dcc))
+ {
+ dcc_close (ptr_dcc, DCC_FAILED);
+ dcc_redraw (1);
+ }
else
{
ptr_dcc->status = DCC_ACTIVE;
@@ -164,7 +206,7 @@ dcc_accept (t_dcc *ptr_dcc)
4);
if (!ptr_dcc->local_filename)
{
- ptr_dcc->status = DCC_FAILED;
+ dcc_close (ptr_dcc, DCC_FAILED);
dcc_redraw (1);
return;
}
@@ -187,7 +229,7 @@ dcc_accept (t_dcc *ptr_dcc)
/* if auto rename is not set, then abort DCC */
if (!cfg_dcc_auto_rename)
{
- ptr_dcc->status = DCC_FAILED;
+ dcc_close (ptr_dcc, DCC_FAILED);
dcc_redraw (1);
return;
}
@@ -195,7 +237,7 @@ dcc_accept (t_dcc *ptr_dcc)
filename2 = (char *) malloc (strlen (ptr_dcc->local_filename) + 16);
if (!filename2)
{
- ptr_dcc->status = DCC_FAILED;
+ dcc_close (ptr_dcc, DCC_FAILED);
dcc_redraw (1);
return;
}
@@ -214,7 +256,7 @@ dcc_accept (t_dcc *ptr_dcc)
free (filename2);
}
ptr_dcc->file = open (ptr_dcc->local_filename,
- O_CREAT | O_TRUNC | O_WRONLY,
+ O_CREAT | O_TRUNC | O_WRONLY | O_NONBLOCK,
0644);
}
dcc_redraw (1);
@@ -224,15 +266,17 @@ dcc_accept (t_dcc *ptr_dcc)
* dcc_add: add a DCC file to queue
*/
-t_dcc *
-dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nick, char *filename,
- unsigned int size)
+t_irc_dcc *
+dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nick,
+ int sock, char *filename, char *local_filename, unsigned long size)
{
- t_dcc *new_dcc;
+ t_irc_dcc *new_dcc;
- if ((new_dcc = (t_dcc *) malloc (sizeof (t_dcc))) == NULL)
+ if ((new_dcc = (t_irc_dcc *) malloc (sizeof (t_irc_dcc))) == NULL)
{
- gui_printf (NULL, _("%s not enough memory for new DCC\n"), WEECHAT_ERROR);
+ gui_printf_nolog (server->buffer,
+ _("%s not enough memory for new DCC\n"),
+ WEECHAT_ERROR);
return NULL;
}
new_dcc->server = server;
@@ -241,13 +285,14 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic
new_dcc->addr = addr;
new_dcc->port = port;
new_dcc->nick = strdup (nick);
- new_dcc->sock = -1;
+ new_dcc->sock = sock;
new_dcc->file = -1;
new_dcc->filename = strdup (filename);
- new_dcc->local_filename = NULL;
+ new_dcc->local_filename = (local_filename) ? strdup (local_filename) : NULL;
new_dcc->filename_suffix = -1;
new_dcc->size = size;
new_dcc->pos = 0;
+ new_dcc->ack = 0;
new_dcc->prev_dcc = NULL;
new_dcc->next_dcc = dcc_list;
if (dcc_list)
@@ -261,33 +306,47 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic
{
irc_display_prefix (server->buffer, PREFIX_INFO);
gui_printf (server->buffer, _("Incoming DCC file from "));
- gui_printf_color (server->buffer,
- COLOR_WIN_CHAT_NICK,
- "%s",
- nick);
- gui_printf_color (server->buffer,
- COLOR_WIN_CHAT_DARK,
- " (");
- gui_printf_color (server->buffer,
- COLOR_WIN_CHAT_HOST,
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_NICK, "%s", nick);
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_DARK, " (");
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_HOST,
"%d.%d.%d.%d",
addr >> 24, (addr >> 16) & 0xff, (addr >> 8) & 0xff, addr & 0xff);
- gui_printf_color (server->buffer,
- COLOR_WIN_CHAT_DARK,
- ")");
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_DARK, ")");
gui_printf (server->buffer, ": ");
- gui_printf_color (server->buffer,
- COLOR_WIN_CHAT_CHANNEL,
- "%s",
- filename);
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_CHANNEL, "%s", filename);
gui_printf (server->buffer, ", ");
- gui_printf_color (server->buffer,
- COLOR_WIN_CHAT_CHANNEL,
- "%lu",
- size);
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_CHANNEL, "%lu", size);
gui_printf (server->buffer, _(" bytes\n"));
}
+ if (type == DCC_FILE_SEND)
+ {
+ irc_display_prefix (server->buffer, PREFIX_INFO);
+ gui_printf (server->buffer, _("Sending DCC file to "));
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_NICK, "%s", nick);
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_DARK, " (");
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_HOST,
+ "%d.%d.%d.%d",
+ addr >> 24, (addr >> 16) & 0xff, (addr >> 8) & 0xff, addr & 0xff);
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_DARK, ")");
+ gui_printf (server->buffer, ": ");
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_CHANNEL, "%s", filename);
+ gui_printf (server->buffer, _(" (local filename: "));
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_CHANNEL, "%s", local_filename);
+ gui_printf (server->buffer, "), ");
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_CHANNEL, "%lu", size);
+ gui_printf (server->buffer, _(" bytes\n"));
+ }
+
+ if (type == DCC_FILE_SEND)
+ {
+ if (!dcc_connect (new_dcc))
+ {
+ dcc_close (new_dcc, DCC_FAILED);
+ return NULL;
+ }
+ }
+
if ( ( (type == DCC_CHAT_RECV) && (cfg_dcc_auto_accept_chats) )
|| ( (type == DCC_FILE_RECV) && (cfg_dcc_auto_accept_files) ) )
dcc_accept (new_dcc);
@@ -299,67 +358,298 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic
}
/*
+ * dcc_send: send DCC request (file or chat)
+ */
+
+void
+dcc_send (t_irc_server *server, char *nick, char *filename)
+{
+ char *ptr_home, *filename2, *short_filename, *pos;
+ int spaces;
+ struct stat st;
+ int sock, port;
+ struct sockaddr_in addr;
+ socklen_t length;
+ unsigned long local_addr;
+
+ /* add home if filename not beginning with '/' (not for Win32) */
+ #ifdef _WIN32
+ filename2 = strdup (filename);
+ #else
+ if (filename[0] == '/')
+ filename2 = strdup (filename);
+ else
+ {
+ ptr_home = getenv ("HOME");
+ filename2 = (char *) malloc (strlen (cfg_dcc_upload_path) +
+ strlen (filename) +
+ ((cfg_dcc_upload_path[0] == '~') ?
+ strlen (ptr_home) : 0) +
+ 4);
+ if (!filename2)
+ {
+ irc_display_prefix (server->buffer, PREFIX_ERROR);
+ gui_printf_nolog (server->buffer,
+ _("%s not enough memory for DCC SEND\n"),
+ WEECHAT_ERROR);
+ return;
+ }
+ if (cfg_dcc_upload_path[0] == '~')
+ {
+ strcpy (filename2, ptr_home);
+ strcat (filename2, cfg_dcc_upload_path + 1);
+ }
+ else
+ strcpy (filename2, cfg_dcc_upload_path);
+ if (filename2[strlen (filename2) - 1] != DIR_SEPARATOR_CHAR)
+ strcat (filename2, DIR_SEPARATOR);
+ strcat (filename2, filename);
+ }
+ #endif
+
+ /* check if file exists */
+ if (stat (filename2, &st) == -1)
+ {
+ irc_display_prefix (server->buffer, PREFIX_ERROR);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot access file \"%s\"\n"),
+ WEECHAT_ERROR, filename2);
+ free (filename2);
+ return;
+ }
+
+ /* get local IP address */
+ memset (&addr, 0, sizeof (struct sockaddr_in));
+ length = sizeof (addr);
+ getsockname (server->sock4, (struct sockaddr *) &addr, &length);
+ addr.sin_family = AF_INET;
+ local_addr = ntohl (addr.sin_addr.s_addr);
+
+ /* open socket for DCC */
+ sock = socket (AF_INET, SOCK_STREAM, 0);
+ if (sock == -1)
+ {
+ irc_display_prefix (server->buffer, PREFIX_ERROR);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot create socket for DCC\n"),
+ WEECHAT_ERROR);
+ free (filename2);
+ return;
+ }
+
+ /* find port automatically */
+ addr.sin_port = 0;
+ if (bind (sock, (struct sockaddr *) &addr, sizeof (addr)) == -1)
+ {
+ irc_display_prefix (server->buffer, PREFIX_ERROR);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot find port for DCC\n"),
+ WEECHAT_ERROR);
+ close (sock);
+ free (filename2);
+ return;
+ }
+ length = sizeof (addr);
+ getsockname (sock, (struct sockaddr *) &addr, &length);
+ port = ntohs (addr.sin_port);
+
+ /* extract short filename (without path) */
+ pos = strrchr (filename2, DIR_SEPARATOR_CHAR);
+ if (pos)
+ short_filename = strdup (pos + 1);
+ else
+ short_filename = strdup (filename2);
+
+ /* convert spaces to underscore if asked and needed */
+ pos = short_filename;
+ spaces = 0;
+ while (pos[0])
+ {
+ if (pos[0] == ' ')
+ {
+ if (cfg_dcc_convert_spaces)
+ pos[0] = '_';
+ else
+ spaces = 1;
+ }
+ pos++;
+ }
+
+ /* add DCC entry and listen to socket */
+ if (!dcc_add (server, DCC_FILE_SEND, local_addr, port, nick, sock,
+ short_filename, filename2, st.st_size))
+ {
+ irc_display_prefix (server->buffer, PREFIX_ERROR);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot send DCC\n"),
+ WEECHAT_ERROR);
+ close (sock);
+ free (short_filename);
+ free (filename2);
+ return;
+ }
+
+ /* send DCC request to nick */
+ server_sendf (server,
+ (spaces) ?
+ "PRIVMSG %s :\01DCC SEND \"%s\" %lu %d %u\01\r\n" :
+ "PRIVMSG %s :\01DCC SEND %s %lu %d %u\01\r\n",
+ nick, short_filename, local_addr, port,
+ (unsigned long) st.st_size);
+
+ free (short_filename);
+ free (filename2);
+}
+
+
+/*
* dcc_handle: receive/send data for each active DCC
*/
void
dcc_handle ()
{
- t_dcc *ptr_dcc;
- int num;
- char buffer[8192];
+ t_irc_dcc *ptr_dcc;
+ int num_read, num_sent;
+ static char buffer[102400];
uint32_t pos;
+ fd_set read_fd;
+ static struct timeval timeout;
+ int sock;
+ struct sockaddr_in addr;
+ socklen_t length;
for (ptr_dcc = dcc_list; ptr_dcc; ptr_dcc = ptr_dcc->next_dcc)
{
+ if (ptr_dcc->status == DCC_CONNECTING)
+ {
+ if (ptr_dcc->type == DCC_FILE_SEND)
+ {
+ FD_ZERO (&read_fd);
+ FD_SET (ptr_dcc->sock, &read_fd);
+ timeout.tv_sec = 0;
+ timeout.tv_usec = 0;
+
+ /* something to read on socket? */
+ if (select (FD_SETSIZE, &read_fd, NULL, NULL, &timeout) > 0)
+ {
+ if (FD_ISSET (ptr_dcc->sock, &read_fd))
+ {
+ length = sizeof (addr);
+ sock = accept (ptr_dcc->sock, (struct sockaddr *) &addr, &length);
+ close (ptr_dcc->sock);
+ ptr_dcc->sock = -1;
+ if (sock < 0)
+ {
+ dcc_close (ptr_dcc, DCC_FAILED);
+ dcc_redraw (1);
+ return;
+ }
+ ptr_dcc->sock = sock;
+ if (fcntl (ptr_dcc->sock, F_SETFL, O_NONBLOCK) == -1)
+ {
+ dcc_close (ptr_dcc, DCC_FAILED);
+ dcc_redraw (1);
+ return;
+ }
+ ptr_dcc->addr = ntohl (addr.sin_addr.s_addr);
+ ptr_dcc->status = DCC_ACTIVE;
+ ptr_dcc->file = open (ptr_dcc->local_filename, O_RDONLY | O_NONBLOCK, 0644);
+ }
+ }
+ }
+ }
+
if (ptr_dcc->status == DCC_ACTIVE)
{
if (ptr_dcc->type == DCC_FILE_RECV)
{
- num = recv (ptr_dcc->sock, buffer, sizeof (buffer), 0);
- if (num != -1)
+ num_read = recv (ptr_dcc->sock, buffer, sizeof (buffer), 0);
+ if (num_read != -1)
{
- if (num == 0)
+ if (num_read == 0)
{
dcc_close (ptr_dcc, DCC_FAILED);
dcc_redraw (1);
+ return;
+ }
+
+ if (write (ptr_dcc->file, buffer, num_read) == -1)
+ {
+ dcc_close (ptr_dcc, DCC_FAILED);
+ dcc_redraw (1);
+ return;
+ }
+ ptr_dcc->pos += (unsigned long) num_read;
+ pos = htonl (ptr_dcc->pos);
+ send (ptr_dcc->sock, (char *) &pos, 4, 0);
+ if (ptr_dcc->pos >= ptr_dcc->size)
+ {
+ dcc_close (ptr_dcc, DCC_DONE);
+ dcc_redraw (1);
}
else
+ dcc_redraw (0);
+ }
+ }
+ if (ptr_dcc->type == DCC_FILE_SEND)
+ {
+ if (cfg_dcc_blocksize > (int) sizeof (buffer))
+ {
+ gui_printf (NULL, _("%s DCC failed because blocksize is too "
+ "big. Check value of \"dcc_blocksize\" option, "
+ "max is %d.\n"),
+ sizeof (buffer));
+ dcc_close (ptr_dcc, DCC_FAILED);
+ dcc_redraw (1);
+ return;
+ }
+ if (ptr_dcc->pos > ptr_dcc->ack)
+ {
+ /* we should receive ACK for packets sent previously */
+ num_read = recv (ptr_dcc->sock, (char *) &pos, 4, MSG_PEEK);
+ if (num_read != -1)
{
- if (write (ptr_dcc->file, buffer, num) == -1)
+ if (num_read == 0)
{
dcc_close (ptr_dcc, DCC_FAILED);
dcc_redraw (1);
return;
}
- ptr_dcc->pos += (unsigned long) num;
- pos = htonl (ptr_dcc->pos);
- send (ptr_dcc->sock, (char *) &pos, 4, 0);
- if (ptr_dcc->pos >= ptr_dcc->size)
+ if (num_read < 4)
+ return;
+ recv (ptr_dcc->sock, (char *) &pos, 4, 0);
+ ptr_dcc->ack = ntohl (pos);
+
+ if ((ptr_dcc->pos >= ptr_dcc->size)
+ && (ptr_dcc->ack >= ptr_dcc->size))
{
- irc_display_prefix (ptr_dcc->server->buffer, PREFIX_INFO);
- gui_printf (ptr_dcc->server->buffer, _("DCC: file "));
- gui_printf_color (ptr_dcc->server->buffer,
- COLOR_WIN_CHAT_CHANNEL,
- "%s",
- ptr_dcc->filename);
- gui_printf (ptr_dcc->server->buffer, _(" (local filename: "));
- gui_printf_color (ptr_dcc->server->buffer,
- COLOR_WIN_CHAT_CHANNEL,
- "%s",
- ptr_dcc->local_filename);
- gui_printf (ptr_dcc->server->buffer, _(") from "));
- gui_printf_color (ptr_dcc->server->buffer,
- COLOR_WIN_CHAT_NICK,
- "%s",
- ptr_dcc->nick);
- gui_printf (ptr_dcc->server->buffer, _(": ok!\n"));
dcc_close (ptr_dcc, DCC_DONE);
dcc_redraw (1);
+ return;
}
- dcc_redraw (0);
}
}
+ if (ptr_dcc->pos <= ptr_dcc->ack)
+ {
+ lseek (ptr_dcc->file, ptr_dcc->pos, SEEK_SET);
+ num_read = read (ptr_dcc->file, buffer, cfg_dcc_blocksize);
+ if (num_read < 1)
+ {
+ dcc_close (ptr_dcc, DCC_FAILED);
+ dcc_redraw (1);
+ return;
+ }
+ num_sent = send (ptr_dcc->sock, buffer, num_read, 0);
+ if (num_sent < 0)
+ {
+ dcc_close (ptr_dcc, DCC_FAILED);
+ dcc_redraw (1);
+ return;
+ }
+ ptr_dcc->pos += (unsigned long) num_sent;
+ dcc_redraw (0);
+ }
}
}
}
@@ -372,7 +662,7 @@ dcc_handle ()
void
dcc_end ()
{
- t_dcc *ptr_dcc;
+ t_irc_dcc *ptr_dcc;
for (ptr_dcc = dcc_list; ptr_dcc; ptr_dcc = ptr_dcc->next_dcc)
{
diff --git a/src/irc/irc-recv.c b/src/irc/irc-recv.c
index 09feddf7e..8e83dee93 100644
--- a/src/irc/irc-recv.c
+++ b/src/irc/irc-recv.c
@@ -160,9 +160,9 @@ irc_cmd_recv_join (t_irc_server *server, char *host, char *arguments)
if (!ptr_channel)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot create new channel \"%s\"\n"),
- WEECHAT_ERROR, arguments);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot create new channel \"%s\"\n"),
+ WEECHAT_ERROR, arguments);
return -1;
}
}
@@ -227,9 +227,9 @@ irc_cmd_recv_kick (t_irc_server *server, char *host, char *arguments)
if (!ptr_channel)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s channel not found for \"%s\" command\n"),
- WEECHAT_ERROR, "kick");
+ gui_printf_nolog (server->buffer,
+ _("%s channel not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "kick");
return -1;
}
@@ -260,9 +260,9 @@ irc_cmd_recv_kick (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s nick not found for \"%s\" command\n"),
- WEECHAT_ERROR, "kick");
+ gui_printf_nolog (server->buffer,
+ _("%s nick not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "kick");
return -1;
}
if (strcmp (pos_nick, server->nick) == 0)
@@ -550,9 +550,9 @@ irc_cmd_recv_mode (t_irc_server *server, char *host, char *arguments)
if (host == NULL)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command received without host\n"),
- WEECHAT_ERROR, "mode");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command received without host\n"),
+ WEECHAT_ERROR, "mode");
return -1;
}
@@ -565,9 +565,9 @@ irc_cmd_recv_mode (t_irc_server *server, char *host, char *arguments)
if (!pos)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command received without channel or nickname\n"),
- WEECHAT_ERROR, "mode");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command received without channel or nickname\n"),
+ WEECHAT_ERROR, "mode");
return -1;
}
pos[0] = '\0';
@@ -595,9 +595,9 @@ irc_cmd_recv_mode (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s channel not found for \"%s\" command\n"),
- WEECHAT_ERROR, "mode");
+ gui_printf_nolog (server->buffer,
+ _("%s channel not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "mode");
return -1;
}
}
@@ -635,9 +635,9 @@ irc_cmd_recv_nick (t_irc_server *server, char *host, char *arguments)
if (host == NULL)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command received without host\n"),
- WEECHAT_ERROR, "nick");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command received without host\n"),
+ WEECHAT_ERROR, "nick");
return -1;
}
@@ -753,9 +753,9 @@ irc_cmd_recv_notice (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s nickname not found for \"%s\" command\n"),
- WEECHAT_ERROR, "notice");
+ gui_printf_nolog (server->buffer,
+ _("%s nickname not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "notice");
return -1;
}
if (strncmp (pos, "\01VERSION", 8) == 0)
@@ -846,9 +846,9 @@ irc_cmd_recv_part (t_irc_server *server, char *host, char *arguments)
if (!host || !arguments)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command received without host or channel\n"),
- WEECHAT_ERROR, "part");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command received without host or channel\n"),
+ WEECHAT_ERROR, "part");
return -1;
}
@@ -921,9 +921,9 @@ irc_cmd_recv_part (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s channel not found for \"%s\" command\n"),
- WEECHAT_ERROR, "part");
+ gui_printf_nolog (server->buffer,
+ _("%s channel not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "part");
return -1;
}
@@ -995,9 +995,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
if (host == NULL)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command received without host\n"),
- WEECHAT_ERROR, "privmsg");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command received without host\n"),
+ WEECHAT_ERROR, "privmsg");
return -1;
}
@@ -1085,9 +1085,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s nick not found for \"%s\" command\n"),
- WEECHAT_ERROR, "privmsg");
+ gui_printf_nolog (server->buffer,
+ _("%s nick not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "privmsg");
return -1;
}
}
@@ -1095,9 +1095,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s channel not found for \"%s\" command\n"),
- WEECHAT_ERROR, "privmsg");
+ gui_printf_nolog (server->buffer,
+ _("%s channel not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "privmsg");
return -1;
}
}
@@ -1180,9 +1180,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
if (!pos2)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot parse \"%s\" command\n"),
- WEECHAT_ERROR, "privmsg");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot parse \"%s\" command\n"),
+ WEECHAT_ERROR, "privmsg");
return -1;
}
pos2[0] = '\0';
@@ -1195,9 +1195,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
if (!pos_size)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot parse \"%s\" command\n"),
- WEECHAT_ERROR, "privmsg");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot parse \"%s\" command\n"),
+ WEECHAT_ERROR, "privmsg");
return -1;
}
pos2 = pos_size;
@@ -1211,9 +1211,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
if (!pos_port)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot parse \"%s\" command\n"),
- WEECHAT_ERROR, "privmsg");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot parse \"%s\" command\n"),
+ WEECHAT_ERROR, "privmsg");
return -1;
}
pos2 = pos_port;
@@ -1227,9 +1227,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
if (!pos_addr)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot parse \"%s\" command\n"),
- WEECHAT_ERROR, "privmsg");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot parse \"%s\" command\n"),
+ WEECHAT_ERROR, "privmsg");
return -1;
}
pos2 = pos_addr;
@@ -1239,7 +1239,8 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
pos2[1] = '\0';
dcc_add (server, DCC_FILE_RECV, (unsigned long) atol (pos_addr),
- atoi (pos_port), host, pos_file, (unsigned int) atoi (pos_size));
+ atoi (pos_port), host, -1, pos_file, NULL,
+ (unsigned long) atol (pos_size));
return 0;
}
@@ -1251,9 +1252,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
if (!ptr_channel)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot create new private window \"%s\"\n"),
- WEECHAT_ERROR, host);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot create new private window \"%s\"\n"),
+ WEECHAT_ERROR, host);
return -1;
}
}
@@ -1323,9 +1324,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot parse \"%s\" command\n"),
- WEECHAT_ERROR, "privmsg");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot parse \"%s\" command\n"),
+ WEECHAT_ERROR, "privmsg");
return -1;
}
}
@@ -1347,9 +1348,9 @@ irc_cmd_recv_quit (t_irc_server *server, char *host, char *arguments)
if (host == NULL)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command received without host\n"),
- WEECHAT_ERROR, "quit");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command received without host\n"),
+ WEECHAT_ERROR, "quit");
return -1;
}
@@ -1500,9 +1501,9 @@ irc_cmd_recv_topic (t_irc_server *server, char *host, char *arguments)
if (!string_is_channel (arguments))
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command received without channel\n"),
- WEECHAT_ERROR, "topic");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command received without channel\n"),
+ WEECHAT_ERROR, "topic");
return -1;
}
@@ -2558,9 +2559,9 @@ irc_cmd_recv_332 (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s channel not found for \"%s\" command\n"),
- WEECHAT_ERROR, "332");
+ gui_printf_nolog (server->buffer,
+ _("%s channel not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "332");
return -1;
}
}
@@ -2568,9 +2569,9 @@ irc_cmd_recv_332 (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot identify channel for \"%s\" command\n"),
- WEECHAT_ERROR, "332");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot identify channel for \"%s\" command\n"),
+ WEECHAT_ERROR, "332");
return -1;
}
return 0;
@@ -2625,36 +2626,36 @@ irc_cmd_recv_333 (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s channel not found for \"%s\" command\n"),
- WEECHAT_ERROR, "333");
+ gui_printf_nolog (server->buffer,
+ _("%s channel not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "333");
return -1;
}
}
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot identify date/time for \"%s\" command\n"),
- WEECHAT_ERROR, "333");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot identify date/time for \"%s\" command\n"),
+ WEECHAT_ERROR, "333");
return -1;
}
}
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot identify nickname for \"%s\" command\n"),
- WEECHAT_ERROR, "333");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot identify nickname for \"%s\" command\n"),
+ WEECHAT_ERROR, "333");
return -1;
}
}
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot identify channel for \"%s\" command\n"),
- WEECHAT_ERROR, "333");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot identify channel for \"%s\" command\n"),
+ WEECHAT_ERROR, "333");
return -1;
}
return 0;
@@ -2862,9 +2863,9 @@ irc_cmd_recv_353 (t_irc_server *server, char *host, char *arguments)
if (pos[0] != ':')
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot parse \"%s\" command\n"),
- WEECHAT_ERROR, "353");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot parse \"%s\" command\n"),
+ WEECHAT_ERROR, "353");
return -1;
}
pos++;
@@ -2908,9 +2909,9 @@ irc_cmd_recv_353 (t_irc_server *server, char *host, char *arguments)
is_op, is_halfop, has_voice))
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot create nick \"%s\" for channel \"%s\"\n"),
- WEECHAT_ERROR, pos_nick, ptr_channel->name);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot create nick \"%s\" for channel \"%s\"\n"),
+ WEECHAT_ERROR, pos_nick, ptr_channel->name);
}
}
}
@@ -2919,9 +2920,9 @@ irc_cmd_recv_353 (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot parse \"%s\" command\n"),
- WEECHAT_ERROR, "353");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot parse \"%s\" command\n"),
+ WEECHAT_ERROR, "353");
return -1;
}
return 0;
diff --git a/src/irc/irc-send.c b/src/irc/irc-send.c
index 6d5deee76..87dcd822b 100644
--- a/src/irc/irc-send.c
+++ b/src/irc/irc-send.c
@@ -252,14 +252,46 @@ irc_cmd_send_ctcp (t_irc_server *server, char *arguments)
int
irc_cmd_send_dcc (t_irc_server *server, char *arguments)
{
- /* TODO: write this command! */
+ char *pos_nick, *pos_file;
- /* make gcc happy */
- (void) server;
- (void) arguments;
+ /* TODO: develop DCC CHAT */
- irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer, _("This command is not developed!\n"));
+ /* DCC SEND file */
+ if (strncasecmp (arguments, "send", 4) == 0)
+ {
+ pos_nick = strchr (arguments, ' ');
+ if (!pos_nick)
+ {
+ irc_display_prefix (server->buffer, PREFIX_ERROR);
+ gui_printf_nolog (server->buffer,
+ _("%s wrong argument count for \"%s\" command\n"),
+ WEECHAT_ERROR, "dcc send");
+ return -1;
+ }
+ while (pos_nick[0] == ' ')
+ pos_nick++;
+ pos_file = strchr (pos_nick, ' ');
+ if (!pos_file)
+ {
+ irc_display_prefix (server->buffer, PREFIX_ERROR);
+ gui_printf_nolog (server->buffer,
+ _("%s wrong argument count for \"%s\" command\n"),
+ WEECHAT_ERROR, "dcc send");
+ return -1;
+ }
+ pos_file[0] = '\0';
+ pos_file++;
+ while (pos_file[0] == ' ')
+ pos_file++;
+
+ dcc_send (server, pos_nick, pos_file);
+ }
+ else if (strncasecmp (arguments, "chat", 4) == 0)
+ {
+ irc_display_prefix (server->buffer, PREFIX_ERROR);
+ gui_printf_nolog (server->buffer, _("This command is not developed!\n"));
+ return 0;
+ }
return 0;
}
@@ -283,9 +315,9 @@ irc_cmd_send_deop (t_irc_server *server, int argc, char **argv)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can only be executed in a channel window\n"),
- WEECHAT_ERROR, "deop");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can only be executed in a channel window\n"),
+ WEECHAT_ERROR, "deop");
}
return 0;
}
@@ -309,9 +341,9 @@ irc_cmd_send_devoice (t_irc_server *server, int argc, char **argv)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can only be executed in a channel window\n"),
- WEECHAT_ERROR, "devoice");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can only be executed in a channel window\n"),
+ WEECHAT_ERROR, "devoice");
return -1;
}
return 0;
@@ -410,9 +442,9 @@ irc_cmd_send_kick (t_irc_server *server, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can only be executed in a channel window\n"),
- WEECHAT_ERROR, "kick");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can only be executed in a channel window\n"),
+ WEECHAT_ERROR, "kick");
return -1;
}
}
@@ -520,9 +552,9 @@ irc_cmd_send_me (t_irc_server *server, char *arguments)
if (BUFFER_IS_SERVER(gui_current_window->buffer))
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can not be executed on a server window\n"),
- WEECHAT_ERROR, "me");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can not be executed on a server window\n"),
+ WEECHAT_ERROR, "me");
return -1;
}
irc_send_me (server, CHANNEL(gui_current_window->buffer), arguments);
@@ -587,9 +619,9 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
if (BUFFER_IS_SERVER(gui_current_window->buffer))
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can not be executed on a server window\n"),
- WEECHAT_ERROR, "msg *");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can not be executed on a server window\n"),
+ WEECHAT_ERROR, "msg *");
return -1;
}
ptr_channel = CHANNEL(gui_current_window->buffer);
@@ -605,9 +637,9 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s nick not found for \"%s\" command\n"),
- WEECHAT_ERROR, "msg");
+ gui_printf_nolog (server->buffer,
+ _("%s nick not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "msg");
}
server_sendf (server, "PRIVMSG %s :%s\r\n", ptr_channel->name, pos);
}
@@ -630,9 +662,9 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s nick not found for \"%s\" command\n"),
- WEECHAT_ERROR, "msg");
+ gui_printf_nolog (server->buffer,
+ _("%s nick not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "msg");
}
}
server_sendf (server, "PRIVMSG %s :%s\r\n", arguments, pos);
@@ -682,10 +714,9 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
if (!ptr_channel)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot create new private window \"%s\"\n"),
- WEECHAT_ERROR,
- arguments);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot create new private window \"%s\"\n"),
+ WEECHAT_ERROR, arguments);
return -1;
}
gui_draw_buffer_title (ptr_channel->buffer, 1);
@@ -713,9 +744,9 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s wrong argument count for \"%s\" command\n"),
- WEECHAT_ERROR, "msg");
+ gui_printf_nolog (server->buffer,
+ _("%s wrong argument count for \"%s\" command\n"),
+ WEECHAT_ERROR, "msg");
return -1;
}
return 0;
@@ -735,9 +766,9 @@ irc_cmd_send_names (t_irc_server *server, char *arguments)
if (!BUFFER_IS_CHANNEL(gui_current_window->buffer))
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can only be executed in a channel window\n"),
- WEECHAT_ERROR, "names");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can only be executed in a channel window\n"),
+ WEECHAT_ERROR, "names");
return -1;
}
else
@@ -787,9 +818,9 @@ irc_cmd_send_notice (t_irc_server *server, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s wrong argument count for \"%s\" command\n"),
- WEECHAT_ERROR, "notice");
+ gui_printf_nolog (server->buffer,
+ _("%s wrong argument count for \"%s\" command\n"),
+ WEECHAT_ERROR, "notice");
return -1;
}
return 0;
@@ -814,9 +845,9 @@ irc_cmd_send_op (t_irc_server *server, int argc, char **argv)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can only be executed in a channel window\n"),
- WEECHAT_ERROR, "op");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can only be executed in a channel window\n"),
+ WEECHAT_ERROR, "op");
return -1;
}
return 0;
@@ -862,9 +893,9 @@ irc_cmd_send_part (t_irc_server *server, char *arguments)
if (BUFFER_IS_SERVER(gui_current_window->buffer))
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can not be executed on a server window\n"),
- WEECHAT_ERROR, "part");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can not be executed on a server window\n"),
+ WEECHAT_ERROR, "part");
return -1;
}
channel_name = CHANNEL(gui_current_window->buffer)->name;
@@ -876,9 +907,9 @@ irc_cmd_send_part (t_irc_server *server, char *arguments)
if (BUFFER_IS_SERVER(gui_current_window->buffer))
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can not be executed on a server window\n"),
- WEECHAT_ERROR, "part");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can not be executed on a server window\n"),
+ WEECHAT_ERROR, "part");
return -1;
}
if (BUFFER_IS_PRIVATE(gui_current_window->buffer))
@@ -960,10 +991,9 @@ irc_cmd_send_query (t_irc_server *server, char *arguments)
if (!ptr_channel)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot create new private window \"%s\"\n"),
- WEECHAT_ERROR,
- arguments);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot create new private window \"%s\"\n"),
+ WEECHAT_ERROR, arguments);
return -1;
}
gui_draw_buffer_title (ptr_channel->buffer, 1);
@@ -1209,9 +1239,9 @@ irc_cmd_send_topic (t_irc_server *server, char *arguments)
if (BUFFER_IS_SERVER(gui_current_window->buffer))
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can not be executed on a server window\n"),
- WEECHAT_ERROR, "topic");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can not be executed on a server window\n"),
+ WEECHAT_ERROR, "topic");
return -1;
}
channel_name = CHANNEL(gui_current_window->buffer)->name;
@@ -1315,9 +1345,9 @@ irc_cmd_send_voice (t_irc_server *server, int argc, char **argv)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can only be executed in a channel window\n"),
- WEECHAT_ERROR, "voice");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can only be executed in a channel window\n"),
+ WEECHAT_ERROR, "voice");
return -1;
}
return 0;
diff --git a/src/irc/irc-server.c b/src/irc/irc-server.c
index 781ce79a7..2edf085d2 100644
--- a/src/irc/irc-server.c
+++ b/src/irc/irc-server.c
@@ -527,8 +527,7 @@ server_msgq_flush ()
t_irc_message *next;
char *entire_line, *ptr_data, *pos, *pos2;
char *host, *command, *args;
-
- /* TODO: optimize this function, parse only a few messages (for low CPU time!) */
+
while (recv_msgq)
{
if (recv_msgq->data)
@@ -596,7 +595,7 @@ server_msgq_flush ()
irc_display_prefix (recv_msgq->server->buffer, PREFIX_ERROR);
gui_printf (recv_msgq->server->buffer,
_("%s Unknown command: cmd=%s, args=%s\n"),
- WEECHAT_ERROR, command, args);
+ WEECHAT_WARNING, command, args);
break;
}
diff --git a/src/irc/irc.h b/src/irc/irc.h
index d0aef2aac..e48ff289c 100644
--- a/src/irc/irc.h
+++ b/src/irc/irc.h
@@ -191,9 +191,9 @@ struct t_irc_message
/* DCC */
-typedef struct t_dcc t_dcc;
+typedef struct t_irc_dcc t_irc_dcc;
-struct t_dcc
+struct t_irc_dcc
{
t_irc_server *server; /* irc server */
int type; /* DCC type (send or receive) */
@@ -208,15 +208,16 @@ struct t_dcc
int filename_suffix; /* suffix (.1 for ex) if renaming file */
unsigned long size; /* file size */
unsigned long pos; /* number of bytes received/sent */
- t_dcc *prev_dcc; /* link to previous dcc file/chat */
- t_dcc *next_dcc; /* link to next dcc file/chat */
+ unsigned long ack; /* number of bytes received OK */
+ t_irc_dcc *prev_dcc; /* link to previous dcc file/chat */
+ t_irc_dcc *next_dcc; /* link to next dcc file/chat */
};
extern t_irc_command irc_commands[];
extern t_irc_server *irc_servers;
extern t_irc_message *recv_msgq, *msgq_last_msg;
extern int check_away;
-extern t_dcc *dcc_list;
+extern t_irc_dcc *dcc_list;
extern char *dcc_status_string[6];
extern char *channel_modes;
@@ -271,13 +272,13 @@ extern void nick_set_away (t_irc_channel *, t_irc_nick *, int);
/* DCC functions (irc-dcc.c) */
-extern void dcc_send ();
-extern void dcc_free (t_dcc *);
-extern void dcc_close (t_dcc *, int);
-extern void dcc_accept (t_dcc *);
-extern t_dcc *dcc_add (t_irc_server *, int, unsigned long, int, char *, char *,
- unsigned int);
+extern void dcc_free (t_irc_dcc *);
+extern void dcc_close (t_irc_dcc *, int);
+extern void dcc_accept (t_irc_dcc *);
+extern t_irc_dcc *dcc_add (t_irc_server *, int, unsigned long, int, char *, int,
+ char *, char *, unsigned long);
extern void dcc_handle ();
+extern void dcc_send (t_irc_server *, char *, char *);
extern void dcc_end ();
/* IRC display (irc-diplay.c) */
diff --git a/weechat/ChangeLog b/weechat/ChangeLog
index e2ac55be5..afd889b3b 100644
--- a/weechat/ChangeLog
+++ b/weechat/ChangeLog
@@ -1,10 +1,11 @@
WeeChat - Wee Enhanced Environment for Chat
===========================================
-ChangeLog - 2005-02-17
+ChangeLog - 2005-02-20
Version 0.1.1 (under dev!):
+ * added DCC send
* added support for UnrealIrcd ("~" for chan owner, "&" for chan admin)
* on server buffer, only server messages are logged
* improved /help command output
diff --git a/weechat/po/fr.po b/weechat/po/fr.po
index 86b1ad3ac..d7ca17f05 100644
--- a/weechat/po/fr.po
+++ b/weechat/po/fr.po
@@ -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-17 23:45+0100\n"
+"POT-Creation-Date: 2005-02-20 01:03+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,7 +20,7 @@ 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:1466
+#: src/irc/irc-server.c:139 src/common/weeconfig.c:1471
msgid "Unable to get user's name"
msgstr "Impossible de déterminer le nom d'utilisateur"
@@ -44,83 +44,83 @@ msgstr "%s mémoire insuffisante pour un message IRC reçu\n"
msgid "%s unable to explode received buffer\n"
msgstr "%s impossible d'exploser le tampon de réception\n"
-#: src/irc/irc-server.c:588
+#: src/irc/irc-server.c:587
#, c-format
msgid "%s Command '%s' failed!\n"
msgstr "%s La commande '%s' a échoué !\n"
-#: src/irc/irc-server.c:593
+#: src/irc/irc-server.c:592
#, c-format
msgid "%s No command to execute!\n"
msgstr "%s Pas de commande à exécuter !\n"
-#: src/irc/irc-server.c:598
+#: src/irc/irc-server.c:597
#, 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:640
+#: src/irc/irc-server.c:639
#, 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:662
+#: 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:664
+#: 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:673
+#: 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:689
+#: 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:699
+#: 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:709
+#: 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:734
+#: 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:745
+#: 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:752
+#: 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:771
+#: 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:784 src/irc/irc-server.c:861
+#: src/irc/irc-server.c:783 src/irc/irc-server.c:860
#, 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:828
+#: src/irc/irc-server.c:827
msgid "Disconnected from server!\n"
msgstr "Déconnecté du serveur !\n"
@@ -1194,7 +1194,7 @@ msgstr " (serveur temporaire, ne sera pas sauvé)"
msgid "(hidden)"
msgstr "(caché)"
-#: src/irc/irc-send.c:58 src/irc/irc-recv.c:3115
+#: src/irc/irc-send.c:58 src/irc/irc-recv.c:3116
msgid "unknown"
msgstr "inconnu"
@@ -1203,42 +1203,43 @@ msgstr "inconnu"
msgid "%s: using local hostname \"%s\"\n"
msgstr "%s: utilisation du nom de machine local \"%s\"\n"
-#: src/irc/irc-send.c:262
+#: 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
+#, c-format
+msgid "%s wrong argument count for \"%s\" command\n"
+msgstr "%s nombre de paramètres erroné pour la commande \"%s\"\n"
+
+#: src/irc/irc-send.c:292
msgid "This command is not developed!\n"
msgstr "Cette commande n'est pas développée !\n"
-#: src/irc/irc-send.c:287 src/irc/irc-send.c:313 src/irc/irc-send.c:414
-#: src/irc/irc-send.c:739 src/irc/irc-send.c:818 src/irc/irc-send.c:1319
+#: src/irc/irc-send.c:319 src/irc/irc-send.c:345 src/irc/irc-send.c:446
+#: src/irc/irc-send.c:770 src/irc/irc-send.c:849 src/irc/irc-send.c:1349
#, c-format
msgid "%s \"%s\" command can only be executed in a channel window\n"
msgstr ""
"%s la commande \"%s\" peut seulement être exécutée dans une fenêtre de "
"canal\n"
-#: src/irc/irc-send.c:524 src/irc/irc-send.c:591 src/irc/irc-send.c:866
-#: src/irc/irc-send.c:880 src/irc/irc-send.c:1213
+#: src/irc/irc-send.c:556 src/irc/irc-send.c:623 src/irc/irc-send.c:897
+#: src/irc/irc-send.c:911 src/irc/irc-send.c:1243
#, c-format
msgid "%s \"%s\" command can not be executed on a server window\n"
msgstr ""
"%s la commande \"%s\" ne peut pas être exécutée dans une fenêtre serveur\n"
-#: src/irc/irc-send.c:609 src/irc/irc-send.c:634 src/irc/irc-recv.c:264
+#: src/irc/irc-send.c:641 src/irc/irc-send.c:666 src/irc/irc-recv.c:264
#: src/irc/irc-recv.c:1089
#, c-format
msgid "%s nick not found for \"%s\" command\n"
msgstr "%s utilisateur non trouvé pour la commande \"%s\"\n"
-#: src/irc/irc-send.c:686 src/irc/irc-send.c:964 src/irc/irc-recv.c:1255
+#: src/irc/irc-send.c:718 src/irc/irc-send.c:995 src/irc/irc-recv.c:1256
#, c-format
msgid "%s cannot create new private window \"%s\"\n"
msgstr "%s impossible de créer la fenêtre privée \"%s\"\n"
-#: src/irc/irc-send.c:717 src/irc/irc-send.c:791 src/common/command.c:1355
-#, c-format
-msgid "%s wrong argument count for \"%s\" command\n"
-msgstr "%s nombre de paramètres erroné pour la commande \"%s\"\n"
-
-#: src/irc/irc-send.c:1291
+#: src/irc/irc-send.c:1321
#, c-format
msgid "%s, compiled on %s %s\n"
msgstr "%s, compilé le %s %s\n"
@@ -1253,7 +1254,7 @@ msgid " has joined "
msgstr " a rejoint "
#: src/irc/irc-recv.c:231 src/irc/irc-recv.c:599 src/irc/irc-recv.c:925
-#: src/irc/irc-recv.c:1099 src/irc/irc-recv.c:2562 src/irc/irc-recv.c:2629
+#: src/irc/irc-recv.c:1099 src/irc/irc-recv.c:2563 src/irc/irc-recv.c:2630
#, c-format
msgid "%s channel not found for \"%s\" command\n"
msgstr "%s canal non trouvé pour la commande \"%s\"\n"
@@ -1355,7 +1356,7 @@ msgid "removes voice from"
msgstr "supprime la voix de"
#: src/irc/irc-recv.c:554 src/irc/irc-recv.c:639 src/irc/irc-recv.c:999
-#: src/irc/irc-recv.c:1351
+#: src/irc/irc-recv.c:1352
#, c-format
msgid "%s \"%s\" command received without host\n"
msgstr "%s commande \"%s\" reçue sans host\n"
@@ -1404,7 +1405,7 @@ msgstr "%s commande \"%s\" reçue sans host ou canal\n"
msgid " has left "
msgstr " a quitté "
-#: src/irc/irc-recv.c:1048 src/irc/irc-recv.c:1281
+#: src/irc/irc-recv.c:1048 src/irc/irc-recv.c:1282
#, c-format
msgid "On %s: * %s %s"
msgstr "Sur %s: * %s %s"
@@ -1427,193 +1428,193 @@ msgid "from"
msgstr "de"
#: src/irc/irc-recv.c:1184 src/irc/irc-recv.c:1199 src/irc/irc-recv.c:1215
-#: src/irc/irc-recv.c:1231 src/irc/irc-recv.c:1327 src/irc/irc-recv.c:2866
-#: src/irc/irc-recv.c:2923
+#: src/irc/irc-recv.c:1231 src/irc/irc-recv.c:1328 src/irc/irc-recv.c:2867
+#: src/irc/irc-recv.c:2924
#, c-format
msgid "%s cannot parse \"%s\" command\n"
msgstr "%s impossible d'analyser la commande \"%s\"\n"
-#: src/irc/irc-recv.c:1307
+#: src/irc/irc-recv.c:1308
#, c-format
msgid "Private %s> %s"
msgstr "Prive %s> %s"
-#: src/irc/irc-recv.c:1383
+#: src/irc/irc-recv.c:1384
msgid "has quit"
msgstr "a quitté"
-#: src/irc/irc-recv.c:1504
+#: src/irc/irc-recv.c:1505
#, c-format
msgid "%s \"%s\" command received without channel\n"
msgstr "%s commande \"%s\" reçue sans canal\n"
-#: src/irc/irc-recv.c:1532
+#: src/irc/irc-recv.c:1533
msgid " has changed topic for "
msgstr " a changé le titre pour "
-#: src/irc/irc-recv.c:1537
+#: src/irc/irc-recv.c:1538
#, c-format
msgid " to: \"%s\"\n"
msgstr " en: \"%s\"\n"
-#: src/irc/irc-recv.c:1543
+#: src/irc/irc-recv.c:1544
msgid " has unset topic for "
msgstr " a retiré le titre pour "
-#: src/irc/irc-recv.c:1654
+#: src/irc/irc-recv.c:1655
#, c-format
msgid " is away: %s\n"
msgstr " est absent: %s\n"
-#: src/irc/irc-recv.c:1728
+#: src/irc/irc-recv.c:1729
msgid "Users online: "
msgstr "Utilisateurs en ligne: "
-#: src/irc/irc-recv.c:2133
+#: src/irc/irc-recv.c:2134
msgid "idle: "
msgstr "inactivité: "
-#: src/irc/irc-recv.c:2141
+#: src/irc/irc-recv.c:2142
msgid "days"
msgstr "jours"
-#: src/irc/irc-recv.c:2141
+#: src/irc/irc-recv.c:2142
msgid "day"
msgstr "jour"
-#: src/irc/irc-recv.c:2151
+#: src/irc/irc-recv.c:2152
msgid "hours"
msgstr "heures"
-#: src/irc/irc-recv.c:2151
+#: src/irc/irc-recv.c:2152
msgid "hour"
msgstr "heure"
-#: src/irc/irc-recv.c:2157
+#: src/irc/irc-recv.c:2158
msgid "minutes"
msgstr "minutes"
-#: src/irc/irc-recv.c:2157
+#: src/irc/irc-recv.c:2158
msgid "minute"
msgstr "minute"
-#: src/irc/irc-recv.c:2163
+#: src/irc/irc-recv.c:2164
msgid "seconds"
msgstr "secondes"
-#: src/irc/irc-recv.c:2163
+#: src/irc/irc-recv.c:2164
msgid "second"
msgstr "seconde"
-#: src/irc/irc-recv.c:2168
+#: src/irc/irc-recv.c:2169
msgid "signon at: "
msgstr "signé le: "
-#: src/irc/irc-recv.c:2256
+#: src/irc/irc-recv.c:2257
msgid "Channels: "
msgstr "Canaux: "
-#: src/irc/irc-recv.c:2508
+#: src/irc/irc-recv.c:2509
msgid "No topic set for "
msgstr "Pas de titre défini pour "
-#: src/irc/irc-recv.c:2550
+#: src/irc/irc-recv.c:2551
msgid "Topic for "
msgstr "Le titre pour "
-#: src/irc/irc-recv.c:2554
+#: src/irc/irc-recv.c:2555
#, c-format
msgid " is: \"%s\"\n"
msgstr " est: \"%s\"\n"
-#: src/irc/irc-recv.c:2572 src/irc/irc-recv.c:2656
+#: src/irc/irc-recv.c:2573 src/irc/irc-recv.c:2657
#, c-format
msgid "%s cannot identify channel for \"%s\" command\n"
msgstr "%s impossible de déterminer le canal pour la commande \"%s\"\n"
-#: src/irc/irc-recv.c:2618
+#: src/irc/irc-recv.c:2619
msgid "Topic set by "
msgstr "Titre défini par "
-#: src/irc/irc-recv.c:2638
+#: src/irc/irc-recv.c:2639
#, c-format
msgid "%s cannot identify date/time for \"%s\" command\n"
msgstr "%s impossible d'identifier la date/heure pour la commande \"%s\"\n"
-#: src/irc/irc-recv.c:2647
+#: src/irc/irc-recv.c:2648
#, c-format
msgid "%s cannot identify nickname for \"%s\" command\n"
msgstr ""
"%s impossible de déterminer le nom d'utilisateur pour la commande \"%s\"\n"
-#: src/irc/irc-recv.c:2789
+#: src/irc/irc-recv.c:2790
msgid " on "
msgstr " sur "
-#: src/irc/irc-recv.c:2912
+#: src/irc/irc-recv.c:2913
#, c-format
msgid "%s cannot create nick \"%s\" for channel \"%s\"\n"
msgstr "%s impossible de créer l'utilisateur \"%s\" pour le canal \"%s\"\n"
-#: src/irc/irc-recv.c:2967
+#: src/irc/irc-recv.c:2968
msgid "Nicks "
msgstr "Utilisateurs "
-#: src/irc/irc-recv.c:2987
+#: src/irc/irc-recv.c:2988
msgid "Channel "
msgstr "Canal "
-#: src/irc/irc-recv.c:2998
+#: src/irc/irc-recv.c:2999
msgid "nicks"
msgstr "utilisateurs"
-#: src/irc/irc-recv.c:2998
+#: src/irc/irc-recv.c:2999
msgid "nick"
msgstr "utilisateur"
-#: src/irc/irc-recv.c:3006
+#: src/irc/irc-recv.c:3007
msgid "ops"
msgstr "ops"
-#: src/irc/irc-recv.c:3006
+#: src/irc/irc-recv.c:3007
msgid "op"
msgstr "op"
-#: src/irc/irc-recv.c:3015
+#: src/irc/irc-recv.c:3016
msgid "halfops"
msgstr "halfops"
-#: src/irc/irc-recv.c:3015
+#: src/irc/irc-recv.c:3016
msgid "halfop"
msgstr "halfop"
-#: src/irc/irc-recv.c:3024
+#: src/irc/irc-recv.c:3025
msgid "voices"
msgstr "voices"
-#: src/irc/irc-recv.c:3024
+#: src/irc/irc-recv.c:3025
msgid "voice"
msgstr "voice"
-#: src/irc/irc-recv.c:3033
+#: src/irc/irc-recv.c:3034
msgid "normal"
msgstr "normal"
-#: src/irc/irc-recv.c:3069
+#: src/irc/irc-recv.c:3070
#, c-format
msgid "%s: nickname \"%s\" is already in use, trying 2nd nickname \"%s\"\n"
msgstr ""
"%s: l'utilisateur \"%s\" est déjà en cours d'utilisation, essai avec le 2nd "
"nom d'utilisateur \"%s\"\n"
-#: src/irc/irc-recv.c:3081
+#: src/irc/irc-recv.c:3082
#, c-format
msgid "%s: nickname \"%s\" is already in use, trying 3rd nickname \"%s\"\n"
msgstr ""
"%s: l'utilisateur \"%s\" est déjà en cours d'utilisation, essai du 3ème nom "
"d'utilisateur \"%s\"\n"
-#: src/irc/irc-recv.c:3093
+#: src/irc/irc-recv.c:3094
#, c-format
msgid ""
"%s: all declared nicknames are already in use, closing connection with "
@@ -1622,67 +1623,109 @@ msgstr ""
"%s: tous les noms d'utilisateurs déclarés sont déjà en cours d'utilisation, "
"fermeture de la connexion avec le serveur !\n"
-#: src/irc/irc-recv.c:3103
+#: src/irc/irc-recv.c:3104
#, c-format
msgid "%s: nickname \"%s\" is already in use, trying 1st nickname \"%s\"\n"
msgstr ""
"%s: l'utilisateur \"%s\" est déjà en cours d'utilisation, essai avec le 1er "
"nom d'utilisateur \"%s\"\n"
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Waiting"
msgstr "Attente"
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Connecting"
msgstr "Connexion"
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Active"
msgstr "Actif"
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Done"
msgstr "Terminé"
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Failed"
msgstr "Echoué"
-#: src/irc/irc-dcc.c:45
+#: src/irc/irc-dcc.c:46
msgid "Aborted"
msgstr "Interrompu"
-#: src/irc/irc-dcc.c:235
+#: src/irc/irc-dcc.c:149
+msgid "DCC: file "
+msgstr "DCC: fichier "
+
+#: src/irc/irc-dcc.c:154 src/irc/irc-dcc.c:334
+msgid " (local filename: "
+msgstr " (nom local: "
+
+#: src/irc/irc-dcc.c:160
+msgid ") sent to "
+msgstr ") envoyé à "
+
+#: src/irc/irc-dcc.c:162
+msgid ") received from "
+msgstr ") reçu de "
+
+#: src/irc/irc-dcc.c:167
+msgid ": ok!\n"
+msgstr ": ok!\n"
+
+#: src/irc/irc-dcc.c:278
#, c-format
msgid "%s not enough memory for new DCC\n"
msgstr "%s pas assez de mémoire pour un nouveau DCC\n"
-#: src/irc/irc-dcc.c:263
+#: src/irc/irc-dcc.c:308
msgid "Incoming DCC file from "
msgstr "Réception fichier DCC de "
-#: src/irc/irc-dcc.c:288
+#: src/irc/irc-dcc.c:319 src/irc/irc-dcc.c:338
msgid " bytes\n"
msgstr " octets\n"
-#: src/irc/irc-dcc.c:341
-msgid "DCC: file "
-msgstr "DCC: fichier "
+#: src/irc/irc-dcc.c:325
+msgid "Sending DCC file to "
+msgstr "Envoi fichier DCC à "
-#: src/irc/irc-dcc.c:346
-msgid " (local filename: "
-msgstr " (nom local: "
+#: src/irc/irc-dcc.c:393
+#, c-format
+msgid "%s not enough memory for DCC SEND\n"
+msgstr "%s pas assez de mémoire pour le DCC SEND\n"
+
+#: src/irc/irc-dcc.c:415
+#, c-format
+msgid "%s cannot access file \"%s\"\n"
+msgstr "%s impossible d'accéder au fichier \"%s\"\n"
-#: src/irc/irc-dcc.c:351
-msgid ") from "
-msgstr ") de "
+#: src/irc/irc-dcc.c:434
+#, c-format
+msgid "%s cannot create socket for DCC\n"
+msgstr "%s impossible de créer la socket pour le DCC\n"
-#: src/irc/irc-dcc.c:356
-msgid ": ok!\n"
-msgstr ": ok!\n"
+#: src/irc/irc-dcc.c:446
+#, c-format
+msgid "%s cannot find port for DCC\n"
+msgstr "%s impossible de trouver le port pour le DCC\n"
+
+#: src/irc/irc-dcc.c:484
+#, c-format
+msgid "%s cannot send DCC\n"
+msgstr "%s impossible d'envoyer le DCC\n"
+
+#: src/irc/irc-dcc.c:599
+#, c-format
+msgid ""
+"%s DCC failed because blocksize is too big. Check value of \"dcc_blocksize\" "
+"option, max is %d.\n"
+msgstr ""
+"%s le DCC a échoué car la taille de bloc est trop grande. Vérifiez la valeur "
+"de l'option \"dcc_blocksize\", le maximum est %d.\n"
-#: src/irc/irc-dcc.c:382
+#: src/irc/irc-dcc.c:672
#, c-format
msgid "aborting active DCC: \"%s\" from %s\n"
msgstr "abandon du DCC actif: \"%s\" de %s\n"
@@ -1761,68 +1804,69 @@ msgstr ""
"%s impossible d'ajouter la fonction pour le message \"%s\" (mémoire "
"insuffisante)\n"
-#: src/gui/curses/gui-input.c:740
+#: src/gui/curses/gui-input.c:763
#, c-format
msgid "%s lag is high, disconnecting from server...\n"
msgstr "%s le lag est élevé, déconnexion du serveur...\n"
-#: src/gui/curses/gui-display.c:601
+#: src/gui/curses/gui-display.c:600
msgid "bytes"
msgstr "octets"
-#: src/gui/curses/gui-display.c:601
+#: src/gui/curses/gui-display.c:600
msgid "Kb"
msgstr "Ko"
-#: src/gui/curses/gui-display.c:601
+#: src/gui/curses/gui-display.c:600
msgid "Mb"
msgstr "Mo"
-#: src/gui/curses/gui-display.c:601
+#: src/gui/curses/gui-display.c:600
msgid "Gb"
msgstr "Go"
-#: src/gui/curses/gui-display.c:971
+#: src/gui/curses/gui-display.c:969
msgid "(away)"
msgstr "(absent)"
-#: src/gui/curses/gui-display.c:1056
+#: src/gui/curses/gui-display.c:1054
#, c-format
msgid "%d:[not connected] "
msgstr "%d:[non connecté] "
-#: src/gui/curses/gui-display.c:1073
+#: src/gui/curses/gui-display.c:1071
msgid "Act: "
msgstr "Act: "
-#: src/gui/curses/gui-display.c:1122
+#: src/gui/curses/gui-display.c:1120
#, c-format
msgid "Lag: %.1f"
msgstr "Lag: %.1f"
-#: src/gui/curses/gui-display.c:1137
+#: src/gui/curses/gui-display.c:1135
msgid "-MORE-"
msgstr "-PLUS-"
-#: src/gui/curses/gui-display.c:1313
+#: src/gui/curses/gui-display.c:1310
msgid " [A] Accept"
msgstr " [A] Accepter"
-#: src/gui/curses/gui-display.c:1314 src/gui/curses/gui-display.c:1320
-#: src/gui/curses/gui-display.c:1327
+#: src/gui/curses/gui-display.c:1311 src/gui/curses/gui-display.c:1315
msgid " [C] Cancel"
msgstr " [C] Annuler"
-#: src/gui/curses/gui-display.c:1315 src/gui/curses/gui-display.c:1321
-#: src/gui/curses/gui-display.c:1328 src/gui/curses/gui-display.c:1335
-#: src/gui/curses/gui-display.c:1340
-msgid " [Q] Close DCC view"
-msgstr " [Q] Fermer la vue DCC"
-
-#: src/gui/curses/gui-display.c:1334
+#: src/gui/curses/gui-display.c:1320
msgid " [R] Remove"
msgstr " [R] Retirer"
+#: src/gui/curses/gui-display.c:1324
+msgid " [P] Purge old DCC"
+msgstr " [P] Purger anciens DCC"
+
+#: src/gui/curses/gui-display.c:1325
+msgid " [Q] Close DCC view"
+msgstr " [Q] Fermer la vue DCC"
+
#: src/gui/gtk/gui-display.c:657
msgid "server"
msgstr "serveur"
@@ -2406,7 +2450,7 @@ msgstr "Alias \"%s\" supprimé\n"
msgid "Opened windows:\n"
msgstr "Fenêtres ouvertes:\n"
-#: src/common/weechat.c:184
+#: src/common/weechat.c:195
#, c-format
msgid ""
"WeeChat configuration options (~/.weechat/weechat.rc):\n"
@@ -2415,47 +2459,47 @@ msgstr ""
"Options de configuration de WeeChat (~/.weechat/weechat.rc):\n"
"\n"
-#: src/common/weechat.c:197
+#: src/common/weechat.c:208
#, c-format
msgid " . type boolean (values: 'on' or 'off')\n"
msgstr " . type booléen (valeurs: 'on' ou 'off')\n"
-#: src/common/weechat.c:198 src/common/weechat.c:221 src/common/weechat.c:227
-#: src/common/weechat.c:233
+#: src/common/weechat.c:209 src/common/weechat.c:232 src/common/weechat.c:238
+#: src/common/weechat.c:244
#, c-format
msgid " . default value: '%s'\n"
msgstr " . valeur par défaut: '%s'\n"
-#: src/common/weechat.c:203
+#: src/common/weechat.c:214
#, c-format
msgid " . type integer (values: between %d and %d)\n"
msgstr " . type entier (valeurs: entre %d et %d)\n"
-#: src/common/weechat.c:206
+#: src/common/weechat.c:217
#, c-format
msgid " . default value: %d\n"
msgstr " . valeur par défaut: %d\n"
-#: src/common/weechat.c:210
+#: src/common/weechat.c:221
#, c-format
msgid " . type string (values: "
msgstr " . type chaîne (valeurs: "
-#: src/common/weechat.c:223 src/common/weechat.c:229 src/common/weechat.c:235
+#: src/common/weechat.c:234 src/common/weechat.c:240 src/common/weechat.c:246
msgid "empty"
msgstr "vide"
-#: src/common/weechat.c:226
+#: src/common/weechat.c:237
#, c-format
msgid " . type color (Curses or Gtk color, look at WeeChat doc)\n"
msgstr " . type couleur (couleur Curses ou Gtk, voir la doc WeeChat)\n"
-#: src/common/weechat.c:232
+#: src/common/weechat.c:243
#, c-format
msgid " . type string (any string)\n"
msgstr " . type chaîne (toute chaîne)\n"
-#: src/common/weechat.c:238
+#: src/common/weechat.c:249
#, c-format
msgid ""
" . description: %s\n"
@@ -2464,7 +2508,7 @@ msgstr ""
" . description: %s\n"
"\n"
-#: src/common/weechat.c:244
+#: src/common/weechat.c:255
#, c-format
msgid ""
"Moreover, you can define aliases in [alias] section, by adding lines like:\n"
@@ -2472,7 +2516,7 @@ msgstr ""
"De plus, vous pouvez définir des alias dans la section [alias], en ajoutant "
"des lignes comme :\n"
-#: src/common/weechat.c:246
+#: src/common/weechat.c:257
#, c-format
msgid ""
"where 'j' is alias name, and 'join' associated command.\n"
@@ -2481,57 +2525,57 @@ msgstr ""
"où 'j' est le nom de l'alias, et 'join' la commande associée.\n"
"\n"
-#: src/common/weechat.c:292
+#: src/common/weechat.c:303
#, c-format
msgid "%s invalid syntax for IRC server ('%s'), ignored\n"
msgstr "%s syntaxe invalide pour le serveur IRC ('%s'), ignoré\n"
-#: src/common/weechat.c:304
+#: src/common/weechat.c:315
#, c-format
msgid "%s unable to create server ('%s'), ignored\n"
msgstr "%s impossible de créer le serveur ('%s'), ignoré\n"
-#: src/common/weechat.c:313
+#: src/common/weechat.c:324
#, c-format
msgid "%s unknown parameter '%s', ignored\n"
msgstr "%s paramètre inconnu '%s', ignoré\n"
-#: src/common/weechat.c:333
+#: src/common/weechat.c:344
#, c-format
msgid "%s cannot create directory \"%s\"\n"
msgstr "%s impossible de créer le répertoire \"%s\"\n"
-#: src/common/weechat.c:359
+#: src/common/weechat.c:370
#, c-format
msgid "%s unable to get HOME directory\n"
msgstr "%s impossible de lire le répertoire personnel\n"
-#: src/common/weechat.c:368
+#: src/common/weechat.c:379
#, c-format
msgid "%s not enough memory for home directory\n"
msgstr "%s pas assez de mémoire pour le répertoire personnel\n"
-#: src/common/weechat.c:378
+#: src/common/weechat.c:389
#, c-format
msgid "%s unable to create ~/.weechat directory\n"
msgstr "%s impossible de créer le répertoire ~/.weechat\n"
-#: src/common/weechat.c:430
+#: src/common/weechat.c:441
#, c-format
msgid "%s unable to create ~/.weechat/logs directory\n"
msgstr "%s impossible de créer le répertoire ~/.weechat/logs\n"
-#: src/common/weechat.c:466
+#: src/common/weechat.c:477
#, c-format
msgid "%s unable to create/append to log file (~/.weechat/%s)"
msgstr "%s impossible de créer/ajouter dans le fichier de log (~/.weechat/%s)"
-#: src/common/weechat.c:489
+#: src/common/weechat.c:500
#, c-format
msgid "%sWelcome to "
msgstr "%sBienvenue dans "
-#: src/common/weechat.c:502
+#: src/common/weechat.c:513
msgid "compiled on"
msgstr "compilé le"
@@ -2552,12 +2596,12 @@ msgid "**** End of log "
msgstr "**** Fin du log "
#: src/common/weechat.h:50
-msgid " Error:"
-msgstr " Erreur:"
+msgid "WeeChat Error:"
+msgstr "Erreur WeeChat:"
#: src/common/weechat.h:51
-msgid " Warning:"
-msgstr " Attention:"
+msgid "WeeChat Warning:"
+msgstr "Avertissement WeeChat:"
#: src/common/weeconfig.c:86 src/common/weeconfig.c:87
msgid "set title for window (terminal for Curses GUI) with name & version"
@@ -3078,190 +3122,194 @@ msgid "disconnect after important lag (in minutes, 0 = never disconnect)"
msgstr ""
"déconnexion après un lag important (en minutes, 0 = ne jamais se déconnecter)"
-#: src/common/weeconfig.c:541
+#: src/common/weeconfig.c:542
msgid "automatically accept dcc files"
msgstr "accepte automatiquement les fichiers dcc"
-#: src/common/weeconfig.c:542
+#: src/common/weeconfig.c:543
msgid "automatically accept incoming dcc files"
msgstr "accepte automatiquement les fichiers dcc entrants"
-#: src/common/weeconfig.c:545
+#: src/common/weeconfig.c:546
msgid "automatically accept dcc chats"
msgstr "accepte automatiquement les demandes de discussion dcc"
-#: src/common/weeconfig.c:546
+#: src/common/weeconfig.c:547
msgid "automatically accept dcc chats (use carefully!)"
msgstr ""
"accepte automatiquement les demandes de discussion dcc (à utiliser avec "
"précaution !)"
-#: src/common/weeconfig.c:549
+#: src/common/weeconfig.c:550
msgid "timeout for dcc request"
msgstr "délai d'attente pour les requêtes dcc"
-#: src/common/weeconfig.c:550
+#: src/common/weeconfig.c:551
msgid "timeout for dcc request (in seconds)"
msgstr "délai d'attente pour les requêtes dcc (en secondes)"
-#: src/common/weeconfig.c:553
+#: src/common/weeconfig.c:554
msgid "block size for dcc packets"
msgstr "taille de bloc pour les paquets dcc"
-#: src/common/weeconfig.c:554
+#: src/common/weeconfig.c:555
msgid "block size for dcc packets in bytes (default: 1024)"
msgstr "taille de bloc pour les paquets dcc en octets (défaut: 1024)"
-#: src/common/weeconfig.c:557
+#: src/common/weeconfig.c:558
msgid "path for incoming files with dcc"
msgstr "chemin les fichiers reçus par dcc"
-#: src/common/weeconfig.c:558
+#: src/common/weeconfig.c:559
msgid "path for writing incoming files with dcc (default: user home)"
msgstr ""
"chemin pour écrire les fichiers reçus par dcc (par défaut: répertoire de "
"l'utilisateur)"
-#: src/common/weeconfig.c:561
+#: src/common/weeconfig.c:562
msgid "default path for sending files with dcc"
msgstr "chemin par défaut pour envoyer les fichiers par dcc"
-#: src/common/weeconfig.c:562
+#: src/common/weeconfig.c:563
msgid ""
"path for reading files when sending thru dcc (when no path is specified)"
msgstr ""
"chemin pour lire les fichiers lorsqu'ils sont envoyés par dcc (quand aucun "
"chemin n'est spécifié)"
-#: src/common/weeconfig.c:565
+#: src/common/weeconfig.c:566 src/common/weeconfig.c:567
+msgid "convert spaces to underscores when sending files"
+msgstr "convertir les espaces en underscores lors d'envoi de fichiers"
+
+#: src/common/weeconfig.c:570
msgid "automatically rename dcc files if already exists"
msgstr "renomme automatiquement les fichiers dcc s'ils existent déjà"
-#: src/common/weeconfig.c:566
+#: src/common/weeconfig.c:571
msgid "rename incoming files if already exists (add '.1', '.2', ...)"
msgstr ""
"renommer les fichiers reçus s'ils existent déjà (ajoute '.1', '.2', ...)"
-#: src/common/weeconfig.c:569
+#: src/common/weeconfig.c:574
msgid "automatically resume aborted transfers"
msgstr "continuer automatiquement les transferts non terminés"
-#: src/common/weeconfig.c:570
+#: src/common/weeconfig.c:575
msgid ""
"automatically resume dcc transfer if connection with remote host is loosed"
msgstr ""
"continuer automatiquement les transferts dcc si la connexion avec la machine "
"distante a été perdue"
-#: src/common/weeconfig.c:584
+#: src/common/weeconfig.c:589
msgid "use proxy"
msgstr "utiliser un proxy"
-#: src/common/weeconfig.c:585
+#: src/common/weeconfig.c:590
msgid "use a proxy server to connect to irc server"
msgstr "utiliser un proxy pour se connecter au serveur irc"
-#: src/common/weeconfig.c:588
+#: src/common/weeconfig.c:593
msgid "proxy address"
msgstr "adresse du proxy"
-#: src/common/weeconfig.c:589
+#: src/common/weeconfig.c:594
msgid "proxy server address (IP or hostname)"
msgstr "adresse du serveur proxy (IP ou nom)"
-#: src/common/weeconfig.c:592
+#: src/common/weeconfig.c:597
msgid "port for proxy"
msgstr "port pour le proxy"
-#: src/common/weeconfig.c:593
+#: src/common/weeconfig.c:598
msgid "port for connecting to proxy server"
msgstr "port pour se connecter au serveur proxy"
-#: src/common/weeconfig.c:596
+#: src/common/weeconfig.c:601
msgid "proxy password"
msgstr "mot de passe pour le proxy"
-#: src/common/weeconfig.c:597
+#: src/common/weeconfig.c:602
msgid "password for proxy server"
msgstr "mot de passe pour le serveur proxy"
-#: src/common/weeconfig.c:608
+#: src/common/weeconfig.c:613
msgid "server name"
msgstr "nom du serveur"
-#: src/common/weeconfig.c:609
+#: src/common/weeconfig.c:614
msgid "name associated to IRC server (for display only)"
msgstr "nom associé au serveur IRC (pour affichage seulement)"
-#: src/common/weeconfig.c:612
+#: src/common/weeconfig.c:617
msgid "automatically connect to server"
msgstr "connexion automatique au serveur"
-#: src/common/weeconfig.c:613
+#: src/common/weeconfig.c:618
msgid "automatically connect to server when WeeChat is starting"
msgstr "connexion automatique au serveur quand WeeChat démarre"
-#: src/common/weeconfig.c:616
+#: src/common/weeconfig.c:621
msgid "automatically reconnect to server"
msgstr "reconnexion automatique au serveur"
-#: src/common/weeconfig.c:617
+#: src/common/weeconfig.c:622
msgid "automatically reconnect to server when disconnected"
msgstr "reconnexion automatique au serveur après une déconnexion"
-#: src/common/weeconfig.c:620
+#: src/common/weeconfig.c:625
msgid "delay before trying again to reconnect"
msgstr "délai avant de tenter une reconnexion"
-#: src/common/weeconfig.c:621
+#: src/common/weeconfig.c:626
msgid "delay (in deconds) before trying again to reconnect to server"
msgstr "délai (en secondes) avant de tenter une reconnexion au serveur"
-#: src/common/weeconfig.c:624
+#: src/common/weeconfig.c:629
msgid "server address or hostname"
msgstr "adresse ou nom du serveur"
-#: src/common/weeconfig.c:625
+#: src/common/weeconfig.c:630
msgid "IP address or hostname of IRC server"
msgstr "adresse IP ou nom du serveur IRC"
-#: src/common/weeconfig.c:628
+#: src/common/weeconfig.c:633
msgid "port for IRC server"
msgstr "port pour le serveur IRC"
-#: src/common/weeconfig.c:629
+#: src/common/weeconfig.c:634
msgid "port for connecting to server"
msgstr "port pour se connecter au serveur"
-#: src/common/weeconfig.c:632
+#: src/common/weeconfig.c:637
msgid "server password"
msgstr "mot de passe pour le serveur"
-#: src/common/weeconfig.c:633
+#: src/common/weeconfig.c:638
msgid "password for IRC server"
msgstr "mot de passe pour le serveur IRC"
-#: src/common/weeconfig.c:636
+#: src/common/weeconfig.c:641
msgid "nickname for server"
msgstr "pseudo pour le serveur"
-#: src/common/weeconfig.c:637
+#: src/common/weeconfig.c:642
msgid "nickname to use on IRC server"
msgstr "pseudo à utiliser sur le serveur IRC"
-#: src/common/weeconfig.c:640
+#: src/common/weeconfig.c:645
msgid "alternate nickname for server"
msgstr "pseudo alternatif pour le serveur"
-#: src/common/weeconfig.c:641
+#: src/common/weeconfig.c:646
msgid "alternate nickname to use on IRC server (if nickname is already used)"
msgstr "pseudo alternatif pour le serveur IRC (si le pseudo est déjà utilisé)"
-#: src/common/weeconfig.c:644
+#: src/common/weeconfig.c:649
msgid "2nd alternate nickname for server"
msgstr "2nd pseudo alternatif pour le serveur"
-#: src/common/weeconfig.c:645
+#: src/common/weeconfig.c:650
msgid ""
"2nd alternate nickname to use on IRC server (if alternate nickname is "
"already used)"
@@ -3269,31 +3317,31 @@ msgstr ""
"2nd pseudo alternatif pour le serveur IRC (si le pseudo alternatif est déjà "
"utilisé)"
-#: src/common/weeconfig.c:648
+#: src/common/weeconfig.c:653
msgid "user name for server"
msgstr "nom d'utilisateur pour le serveur"
-#: src/common/weeconfig.c:649
+#: src/common/weeconfig.c:654
msgid "user name to use on IRC server"
msgstr "nom d'utilisateur pour le serveur IRC"
-#: src/common/weeconfig.c:652
+#: src/common/weeconfig.c:657
msgid "real name for server"
msgstr "nom réel pour le serveur"
-#: src/common/weeconfig.c:653
+#: src/common/weeconfig.c:658
msgid "real name to use on IRC server"
msgstr "nom réel pour le serveur IRC"
-#: src/common/weeconfig.c:656 src/common/weeconfig.c:657
+#: src/common/weeconfig.c:661 src/common/weeconfig.c:662
msgid "first command to run when connected to server"
msgstr "commande à exécuter en premier lorsque connecté au serveur"
-#: src/common/weeconfig.c:660
+#: src/common/weeconfig.c:665
msgid "delay (in seconds) after command was executed"
msgstr "délai (en secondes) après exécution de la commande"
-#: src/common/weeconfig.c:661
+#: src/common/weeconfig.c:666
msgid ""
"delay (in seconds) after command was executed (example: give some time for "
"authentication)"
@@ -3301,76 +3349,76 @@ msgstr ""
"délai (en secondes) après exécution de la commande (exemple: donner du temps "
"pour l'authentification)"
-#: src/common/weeconfig.c:664
+#: src/common/weeconfig.c:669
msgid "list of channels to join when connected to server"
msgstr "liste des canaux à rejoindre lorsque connecté au serveur"
-#: src/common/weeconfig.c:665
+#: src/common/weeconfig.c:670
msgid "comma separated list of channels to join when connected to server"
msgstr ""
"liste des canaux (séparés par des virgules) à rejoindre lorsque connecté au "
"serveur"
-#: src/common/weeconfig.c:668 src/common/weeconfig.c:669
+#: src/common/weeconfig.c:673 src/common/weeconfig.c:674
msgid "automatically rejoin channels when kicked"
msgstr "rejoindre automatiquement les canaux quand mis dehors"
-#: src/common/weeconfig.c:1017
+#: src/common/weeconfig.c:1022
#, c-format
msgid "%s %s, line %d: new server, but previous was incomplete\n"
msgstr "%s %s, ligne %d: nouveau serveur, mais le précédent était incomplet\n"
-#: src/common/weeconfig.c:1026
+#: src/common/weeconfig.c:1031
#, c-format
msgid "%s %s, line %d: server '%s' already exists\n"
msgstr "%s %s, ligne %d: le serveur '%s' existe déjà\n"
-#: src/common/weeconfig.c:1040
+#: src/common/weeconfig.c:1045
#, c-format
msgid "%s %s, line %d: unable to create server\n"
msgstr "%s %s, ligne %d: impossible de créer le serveur\n"
-#: src/common/weeconfig.c:1079
+#: src/common/weeconfig.c:1084
#, c-format
msgid "%s unable to assign default int with string (\"%s\")\n"
msgstr "%s impossible d'assigner la valeur entière avec la chaîne (\"%s\")\n"
-#: src/common/weeconfig.c:1090
+#: src/common/weeconfig.c:1095
#, c-format
msgid "%s unable to assign default color (\"%s\")\n"
msgstr "%s impossible d'assigner la couleur par défaut (\"%s\")\n"
-#: src/common/weeconfig.c:1129
+#: src/common/weeconfig.c:1134
#, c-format
msgid "%s config file \"%s\" not found.\n"
msgstr "%s fichier de configuration \"%s\" non trouvé.\n"
-#: src/common/weeconfig.c:1161
+#: src/common/weeconfig.c:1166
#, c-format
msgid "%s %s, line %d: invalid syntax, missing \"]\"\n"
msgstr "%s %s, ligne %d: syntaxe invalide, il manque \"]\"\n"
-#: src/common/weeconfig.c:1178
+#: src/common/weeconfig.c:1183
#, c-format
msgid "%s %s, line %d: unknown section identifier (\"%s\")\n"
msgstr "%s %s, ligne %d: section inconnue (\"%s\")\n"
-#: src/common/weeconfig.c:1196
+#: src/common/weeconfig.c:1201
#, c-format
msgid "%s %s, line %d: invalid section for option, line is ignored\n"
msgstr "%s %s, ligne %d: section invalide pour l'option, ligne ignorée\n"
-#: src/common/weeconfig.c:1204
+#: src/common/weeconfig.c:1209
#, c-format
msgid "%s %s, line %d: invalid syntax, missing \"=\"\n"
msgstr "%s %s, ligne %d: syntaxe invalide, il manque \"=\"\n"
-#: src/common/weeconfig.c:1238
+#: src/common/weeconfig.c:1243
#, c-format
msgid "%s %s, line %d: invalid option \"%s\"\n"
msgstr "%s %s, ligne %d: option \"%s\" invalide\n"
-#: src/common/weeconfig.c:1249
+#: src/common/weeconfig.c:1254
#, c-format
msgid ""
"%s %s, line %d: invalid value foroption '%s'\n"
@@ -3379,7 +3427,7 @@ msgstr ""
"%s %s, ligne %d: valeur invalide pour l'option '%s'\n"
"Attendu: valeur booléenne: 'off' ou 'on'\n"
-#: src/common/weeconfig.c:1258
+#: src/common/weeconfig.c:1263
#, c-format
msgid ""
"%s %s, line %d: invalid value for option '%s'\n"
@@ -3388,7 +3436,7 @@ msgstr ""
"%s %s, ligne %d: valeur invalide pour l'option '%s'\n"
"Attendu: entier compris entre %d et %d\n"
-#: src/common/weeconfig.c:1269
+#: src/common/weeconfig.c:1274
#, c-format
msgid ""
"%s %s, line %d: invalid value for option '%s'\n"
@@ -3397,26 +3445,26 @@ msgstr ""
"%s %s, ligne %d: valeur invalide pour l'option '%s'\n"
"Attendu: une de ces chaînes: "
-#: src/common/weeconfig.c:1285
+#: src/common/weeconfig.c:1290
#, c-format
msgid "%s %s, line %d: invalid color name for option '%s'\n"
msgstr "%s %s, ligne %d: nom de couleur invalide pour l'option '%s'\n"
-#: src/common/weeconfig.c:1345 src/common/weeconfig.c:1518
+#: src/common/weeconfig.c:1350 src/common/weeconfig.c:1523
#, c-format
msgid "%s cannot create file \"%s\"\n"
msgstr "%s impossible de créer le fichier \"%s\"\n"
-#: src/common/weeconfig.c:1351
+#: src/common/weeconfig.c:1356
#, c-format
msgid "%s: creating default config file...\n"
msgstr "%s: création du fichier de configuration par défaut...\n"
-#: src/common/weeconfig.c:1352
+#: src/common/weeconfig.c:1357
msgid "creating default config file\n"
msgstr "création du fichier de configuration par défaut\n"
-#: src/common/weeconfig.c:1355 src/common/weeconfig.c:1527
+#: src/common/weeconfig.c:1360 src/common/weeconfig.c:1532
#, c-format
msgid ""
"#\n"
@@ -3425,6 +3473,9 @@ msgstr ""
"#\n"
"# %s: fichier de configuration, créé par %s v%s le %s#\n"
-#: src/common/weeconfig.c:1524
+#: src/common/weeconfig.c:1529
msgid "saving config to disk\n"
msgstr "sauvegarde de la configuration sur disque\n"
+
+#~ msgid ") from "
+#~ msgstr ") de "
diff --git a/weechat/po/weechat.pot b/weechat/po/weechat.pot
index 8eb28b816..4c45d7210 100644
--- a/weechat/po/weechat.pot
+++ b/weechat/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: 2005-02-17 23:45+0100\n"
+"POT-Creation-Date: 2005-02-20 01:03+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,7 +20,7 @@ msgstr ""
msgid "%s cannot allocate new nick\n"
msgstr ""
-#: src/irc/irc-server.c:139 src/common/weeconfig.c:1466
+#: src/irc/irc-server.c:139 src/common/weeconfig.c:1471
msgid "Unable to get user's name"
msgstr ""
@@ -44,82 +44,82 @@ msgstr ""
msgid "%s unable to explode received buffer\n"
msgstr ""
-#: src/irc/irc-server.c:588
+#: src/irc/irc-server.c:587
#, c-format
msgid "%s Command '%s' failed!\n"
msgstr ""
-#: src/irc/irc-server.c:593
+#: src/irc/irc-server.c:592
#, c-format
msgid "%s No command to execute!\n"
msgstr ""
-#: src/irc/irc-server.c:598
+#: src/irc/irc-server.c:597
#, c-format
msgid "%s Unknown command: cmd=%s, args=%s\n"
msgstr ""
-#: src/irc/irc-server.c:640
+#: src/irc/irc-server.c:639
#, c-format
msgid "%s cannot read data from socket, disconnecting from server...\n"
msgstr ""
-#: src/irc/irc-server.c:662
+#: src/irc/irc-server.c:661
#, c-format
msgid "%s: connecting to %s:%d...\n"
msgstr ""
-#: src/irc/irc-server.c:664
+#: src/irc/irc-server.c:663
#, c-format
msgid "connecting to server %s:%d...\n"
msgstr ""
-#: src/irc/irc-server.c:673
+#: src/irc/irc-server.c:672
#, c-format
msgid "%s cannot create pipe\n"
msgstr ""
-#: src/irc/irc-server.c:689
+#: src/irc/irc-server.c:688
#, c-format
msgid "%s cannot set socket option \"SO_REUSEADDR\"\n"
msgstr ""
-#: src/irc/irc-server.c:699
+#: src/irc/irc-server.c:698
#, c-format
msgid "%s cannot set socket option \"SO_KEEPALIVE\"\n"
msgstr ""
-#: src/irc/irc-server.c:709
+#: src/irc/irc-server.c:708
#, c-format
msgid "%s address \"%s\" not found\n"
msgstr ""
-#: src/irc/irc-server.c:734
+#: src/irc/irc-server.c:733
#, c-format
msgid "%s IP address not found\n"
msgstr ""
-#: src/irc/irc-server.c:745
+#: src/irc/irc-server.c:744
#, c-format
msgid "%s: server IP is: %s\n"
msgstr ""
-#: src/irc/irc-server.c:752
+#: src/irc/irc-server.c:751
#, c-format
msgid "%s cannot connect to irc server\n"
msgstr ""
-#: src/irc/irc-server.c:771
+#: src/irc/irc-server.c:770
#, c-format
msgid "%s: Reconnecting to server...\n"
msgstr ""
-#: src/irc/irc-server.c:784 src/irc/irc-server.c:861
+#: src/irc/irc-server.c:783 src/irc/irc-server.c:860
#, c-format
msgid "%s: Reconnecting to server in %d seconds\n"
msgstr ""
-#: src/irc/irc-server.c:828
+#: src/irc/irc-server.c:827
msgid "Disconnected from server!\n"
msgstr ""
@@ -1100,7 +1100,7 @@ msgstr ""
msgid "(hidden)"
msgstr ""
-#: src/irc/irc-send.c:58 src/irc/irc-recv.c:3115
+#: src/irc/irc-send.c:58 src/irc/irc-recv.c:3116
msgid "unknown"
msgstr ""
@@ -1109,39 +1109,40 @@ msgstr ""
msgid "%s: using local hostname \"%s\"\n"
msgstr ""
-#: src/irc/irc-send.c:262
+#: 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
+#, c-format
+msgid "%s wrong argument count for \"%s\" command\n"
+msgstr ""
+
+#: src/irc/irc-send.c:292
msgid "This command is not developed!\n"
msgstr ""
-#: src/irc/irc-send.c:287 src/irc/irc-send.c:313 src/irc/irc-send.c:414
-#: src/irc/irc-send.c:739 src/irc/irc-send.c:818 src/irc/irc-send.c:1319
+#: src/irc/irc-send.c:319 src/irc/irc-send.c:345 src/irc/irc-send.c:446
+#: src/irc/irc-send.c:770 src/irc/irc-send.c:849 src/irc/irc-send.c:1349
#, c-format
msgid "%s \"%s\" command can only be executed in a channel window\n"
msgstr ""
-#: src/irc/irc-send.c:524 src/irc/irc-send.c:591 src/irc/irc-send.c:866
-#: src/irc/irc-send.c:880 src/irc/irc-send.c:1213
+#: src/irc/irc-send.c:556 src/irc/irc-send.c:623 src/irc/irc-send.c:897
+#: src/irc/irc-send.c:911 src/irc/irc-send.c:1243
#, c-format
msgid "%s \"%s\" command can not be executed on a server window\n"
msgstr ""
-#: src/irc/irc-send.c:609 src/irc/irc-send.c:634 src/irc/irc-recv.c:264
+#: src/irc/irc-send.c:641 src/irc/irc-send.c:666 src/irc/irc-recv.c:264
#: src/irc/irc-recv.c:1089
#, c-format
msgid "%s nick not found for \"%s\" command\n"
msgstr ""
-#: src/irc/irc-send.c:686 src/irc/irc-send.c:964 src/irc/irc-recv.c:1255
+#: src/irc/irc-send.c:718 src/irc/irc-send.c:995 src/irc/irc-recv.c:1256
#, c-format
msgid "%s cannot create new private window \"%s\"\n"
msgstr ""
-#: src/irc/irc-send.c:717 src/irc/irc-send.c:791 src/common/command.c:1355
-#, c-format
-msgid "%s wrong argument count for \"%s\" command\n"
-msgstr ""
-
-#: src/irc/irc-send.c:1291
+#: src/irc/irc-send.c:1321
#, c-format
msgid "%s, compiled on %s %s\n"
msgstr ""
@@ -1156,7 +1157,7 @@ msgid " has joined "
msgstr ""
#: src/irc/irc-recv.c:231 src/irc/irc-recv.c:599 src/irc/irc-recv.c:925
-#: src/irc/irc-recv.c:1099 src/irc/irc-recv.c:2562 src/irc/irc-recv.c:2629
+#: src/irc/irc-recv.c:1099 src/irc/irc-recv.c:2563 src/irc/irc-recv.c:2630
#, c-format
msgid "%s channel not found for \"%s\" command\n"
msgstr ""
@@ -1258,7 +1259,7 @@ msgid "removes voice from"
msgstr ""
#: src/irc/irc-recv.c:554 src/irc/irc-recv.c:639 src/irc/irc-recv.c:999
-#: src/irc/irc-recv.c:1351
+#: src/irc/irc-recv.c:1352
#, c-format
msgid "%s \"%s\" command received without host\n"
msgstr ""
@@ -1307,7 +1308,7 @@ msgstr ""
msgid " has left "
msgstr ""
-#: src/irc/irc-recv.c:1048 src/irc/irc-recv.c:1281
+#: src/irc/irc-recv.c:1048 src/irc/irc-recv.c:1282
#, c-format
msgid "On %s: * %s %s"
msgstr ""
@@ -1330,253 +1331,293 @@ msgid "from"
msgstr ""
#: src/irc/irc-recv.c:1184 src/irc/irc-recv.c:1199 src/irc/irc-recv.c:1215
-#: src/irc/irc-recv.c:1231 src/irc/irc-recv.c:1327 src/irc/irc-recv.c:2866
-#: src/irc/irc-recv.c:2923
+#: src/irc/irc-recv.c:1231 src/irc/irc-recv.c:1328 src/irc/irc-recv.c:2867
+#: src/irc/irc-recv.c:2924
#, c-format
msgid "%s cannot parse \"%s\" command\n"
msgstr ""
-#: src/irc/irc-recv.c:1307
+#: src/irc/irc-recv.c:1308
#, c-format
msgid "Private %s> %s"
msgstr ""
-#: src/irc/irc-recv.c:1383
+#: src/irc/irc-recv.c:1384
msgid "has quit"
msgstr ""
-#: src/irc/irc-recv.c:1504
+#: src/irc/irc-recv.c:1505
#, c-format
msgid "%s \"%s\" command received without channel\n"
msgstr ""
-#: src/irc/irc-recv.c:1532
+#: src/irc/irc-recv.c:1533
msgid " has changed topic for "
msgstr ""
-#: src/irc/irc-recv.c:1537
+#: src/irc/irc-recv.c:1538
#, c-format
msgid " to: \"%s\"\n"
msgstr ""
-#: src/irc/irc-recv.c:1543
+#: src/irc/irc-recv.c:1544
msgid " has unset topic for "
msgstr ""
-#: src/irc/irc-recv.c:1654
+#: src/irc/irc-recv.c:1655
#, c-format
msgid " is away: %s\n"
msgstr ""
-#: src/irc/irc-recv.c:1728
+#: src/irc/irc-recv.c:1729
msgid "Users online: "
msgstr ""
-#: src/irc/irc-recv.c:2133
+#: src/irc/irc-recv.c:2134
msgid "idle: "
msgstr ""
-#: src/irc/irc-recv.c:2141
+#: src/irc/irc-recv.c:2142
msgid "days"
msgstr ""
-#: src/irc/irc-recv.c:2141
+#: src/irc/irc-recv.c:2142
msgid "day"
msgstr ""
-#: src/irc/irc-recv.c:2151
+#: src/irc/irc-recv.c:2152
msgid "hours"
msgstr ""
-#: src/irc/irc-recv.c:2151
+#: src/irc/irc-recv.c:2152
msgid "hour"
msgstr ""
-#: src/irc/irc-recv.c:2157
+#: src/irc/irc-recv.c:2158
msgid "minutes"
msgstr ""
-#: src/irc/irc-recv.c:2157
+#: src/irc/irc-recv.c:2158
msgid "minute"
msgstr ""
-#: src/irc/irc-recv.c:2163
+#: src/irc/irc-recv.c:2164
msgid "seconds"
msgstr ""
-#: src/irc/irc-recv.c:2163
+#: src/irc/irc-recv.c:2164
msgid "second"
msgstr ""
-#: src/irc/irc-recv.c:2168
+#: src/irc/irc-recv.c:2169
msgid "signon at: "
msgstr ""
-#: src/irc/irc-recv.c:2256
+#: src/irc/irc-recv.c:2257
msgid "Channels: "
msgstr ""
-#: src/irc/irc-recv.c:2508
+#: src/irc/irc-recv.c:2509
msgid "No topic set for "
msgstr ""
-#: src/irc/irc-recv.c:2550
+#: src/irc/irc-recv.c:2551
msgid "Topic for "
msgstr ""
-#: src/irc/irc-recv.c:2554
+#: src/irc/irc-recv.c:2555
#, c-format
msgid " is: \"%s\"\n"
msgstr ""
-#: src/irc/irc-recv.c:2572 src/irc/irc-recv.c:2656
+#: src/irc/irc-recv.c:2573 src/irc/irc-recv.c:2657
#, c-format
msgid "%s cannot identify channel for \"%s\" command\n"
msgstr ""
-#: src/irc/irc-recv.c:2618
+#: src/irc/irc-recv.c:2619
msgid "Topic set by "
msgstr ""
-#: src/irc/irc-recv.c:2638
+#: src/irc/irc-recv.c:2639
#, c-format
msgid "%s cannot identify date/time for \"%s\" command\n"
msgstr ""
-#: src/irc/irc-recv.c:2647
+#: src/irc/irc-recv.c:2648
#, c-format
msgid "%s cannot identify nickname for \"%s\" command\n"
msgstr ""
-#: src/irc/irc-recv.c:2789
+#: src/irc/irc-recv.c:2790
msgid " on "
msgstr ""
-#: src/irc/irc-recv.c:2912
+#: src/irc/irc-recv.c:2913
#, c-format
msgid "%s cannot create nick \"%s\" for channel \"%s\"\n"
msgstr ""
-#: src/irc/irc-recv.c:2967
+#: src/irc/irc-recv.c:2968
msgid "Nicks "
msgstr ""
-#: src/irc/irc-recv.c:2987
+#: src/irc/irc-recv.c:2988
msgid "Channel "
msgstr ""
-#: src/irc/irc-recv.c:2998
+#: src/irc/irc-recv.c:2999
msgid "nicks"
msgstr ""
-#: src/irc/irc-recv.c:2998
+#: src/irc/irc-recv.c:2999
msgid "nick"
msgstr ""
-#: src/irc/irc-recv.c:3006
+#: src/irc/irc-recv.c:3007
msgid "ops"
msgstr ""
-#: src/irc/irc-recv.c:3006
+#: src/irc/irc-recv.c:3007
msgid "op"
msgstr ""
-#: src/irc/irc-recv.c:3015
+#: src/irc/irc-recv.c:3016
msgid "halfops"
msgstr ""
-#: src/irc/irc-recv.c:3015
+#: src/irc/irc-recv.c:3016
msgid "halfop"
msgstr ""
-#: src/irc/irc-recv.c:3024
+#: src/irc/irc-recv.c:3025
msgid "voices"
msgstr ""
-#: src/irc/irc-recv.c:3024
+#: src/irc/irc-recv.c:3025
msgid "voice"
msgstr ""
-#: src/irc/irc-recv.c:3033
+#: src/irc/irc-recv.c:3034
msgid "normal"
msgstr ""
-#: src/irc/irc-recv.c:3069
+#: src/irc/irc-recv.c:3070
#, c-format
msgid "%s: nickname \"%s\" is already in use, trying 2nd nickname \"%s\"\n"
msgstr ""
-#: src/irc/irc-recv.c:3081
+#: src/irc/irc-recv.c:3082
#, c-format
msgid "%s: nickname \"%s\" is already in use, trying 3rd nickname \"%s\"\n"
msgstr ""
-#: src/irc/irc-recv.c:3093
+#: src/irc/irc-recv.c:3094
#, c-format
msgid ""
"%s: all declared nicknames are already in use, closing connection with "
"server!\n"
msgstr ""
-#: src/irc/irc-recv.c:3103
+#: src/irc/irc-recv.c:3104
#, c-format
msgid "%s: nickname \"%s\" is already in use, trying 1st nickname \"%s\"\n"
msgstr ""
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Waiting"
msgstr ""
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Connecting"
msgstr ""
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Active"
msgstr ""
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Done"
msgstr ""
-#: src/irc/irc-dcc.c:44
+#: src/irc/irc-dcc.c:45
msgid "Failed"
msgstr ""
-#: src/irc/irc-dcc.c:45
+#: src/irc/irc-dcc.c:46
msgid "Aborted"
msgstr ""
-#: src/irc/irc-dcc.c:235
+#: src/irc/irc-dcc.c:149
+msgid "DCC: file "
+msgstr ""
+
+#: src/irc/irc-dcc.c:154 src/irc/irc-dcc.c:334
+msgid " (local filename: "
+msgstr ""
+
+#: src/irc/irc-dcc.c:160
+msgid ") sent to "
+msgstr ""
+
+#: src/irc/irc-dcc.c:162
+msgid ") received from "
+msgstr ""
+
+#: src/irc/irc-dcc.c:167
+msgid ": ok!\n"
+msgstr ""
+
+#: src/irc/irc-dcc.c:278
#, c-format
msgid "%s not enough memory for new DCC\n"
msgstr ""
-#: src/irc/irc-dcc.c:263
+#: src/irc/irc-dcc.c:308
msgid "Incoming DCC file from "
msgstr ""
-#: src/irc/irc-dcc.c:288
+#: src/irc/irc-dcc.c:319 src/irc/irc-dcc.c:338
msgid " bytes\n"
msgstr ""
-#: src/irc/irc-dcc.c:341
-msgid "DCC: file "
+#: src/irc/irc-dcc.c:325
+msgid "Sending DCC file to "
msgstr ""
-#: src/irc/irc-dcc.c:346
-msgid " (local filename: "
+#: src/irc/irc-dcc.c:393
+#, c-format
+msgid "%s not enough memory for DCC SEND\n"
+msgstr ""
+
+#: src/irc/irc-dcc.c:415
+#, c-format
+msgid "%s cannot access file \"%s\"\n"
msgstr ""
-#: src/irc/irc-dcc.c:351
-msgid ") from "
+#: src/irc/irc-dcc.c:434
+#, c-format
+msgid "%s cannot create socket for DCC\n"
msgstr ""
-#: src/irc/irc-dcc.c:356
-msgid ": ok!\n"
+#: src/irc/irc-dcc.c:446
+#, c-format
+msgid "%s cannot find port for DCC\n"
+msgstr ""
+
+#: src/irc/irc-dcc.c:484
+#, c-format
+msgid "%s cannot send DCC\n"
+msgstr ""
+
+#: src/irc/irc-dcc.c:599
+#, c-format
+msgid ""
+"%s DCC failed because blocksize is too big. Check value of \"dcc_blocksize\" "
+"option, max is %d.\n"
msgstr ""
-#: src/irc/irc-dcc.c:382
+#: src/irc/irc-dcc.c:672
#, c-format
msgid "aborting active DCC: \"%s\" from %s\n"
msgstr ""
@@ -1649,66 +1690,67 @@ msgstr ""
msgid "%s unable to add handler for \"%s\" message (not enough memory)\n"
msgstr ""
-#: src/gui/curses/gui-input.c:740
+#: src/gui/curses/gui-input.c:763
#, c-format
msgid "%s lag is high, disconnecting from server...\n"
msgstr ""
-#: src/gui/curses/gui-display.c:601
+#: src/gui/curses/gui-display.c:600
msgid "bytes"
msgstr ""
-#: src/gui/curses/gui-display.c:601
+#: src/gui/curses/gui-display.c:600
msgid "Kb"
msgstr ""
-#: src/gui/curses/gui-display.c:601
+#: src/gui/curses/gui-display.c:600
msgid "Mb"
msgstr ""
-#: src/gui/curses/gui-display.c:601
+#: src/gui/curses/gui-display.c:600
msgid "Gb"
msgstr ""
-#: src/gui/curses/gui-display.c:971
+#: src/gui/curses/gui-display.c:969
msgid "(away)"
msgstr ""
-#: src/gui/curses/gui-display.c:1056
+#: src/gui/curses/gui-display.c:1054
#, c-format
msgid "%d:[not connected] "
msgstr ""
-#: src/gui/curses/gui-display.c:1073
+#: src/gui/curses/gui-display.c:1071
msgid "Act: "
msgstr ""
-#: src/gui/curses/gui-display.c:1122
+#: src/gui/curses/gui-display.c:1120
#, c-format
msgid "Lag: %.1f"
msgstr ""
-#: src/gui/curses/gui-display.c:1137
+#: src/gui/curses/gui-display.c:1135
msgid "-MORE-"
msgstr ""
-#: src/gui/curses/gui-display.c:1313
+#: src/gui/curses/gui-display.c:1310
msgid " [A] Accept"
msgstr ""
-#: src/gui/curses/gui-display.c:1314 src/gui/curses/gui-display.c:1320
-#: src/gui/curses/gui-display.c:1327
+#: src/gui/curses/gui-display.c:1311 src/gui/curses/gui-display.c:1315
msgid " [C] Cancel"
msgstr ""
-#: src/gui/curses/gui-display.c:1315 src/gui/curses/gui-display.c:1321
-#: src/gui/curses/gui-display.c:1328 src/gui/curses/gui-display.c:1335
-#: src/gui/curses/gui-display.c:1340
-msgid " [Q] Close DCC view"
+#: src/gui/curses/gui-display.c:1320
+msgid " [R] Remove"
msgstr ""
-#: src/gui/curses/gui-display.c:1334
-msgid " [R] Remove"
+#: src/gui/curses/gui-display.c:1324
+msgid " [P] Purge old DCC"
+msgstr ""
+
+#: src/gui/curses/gui-display.c:1325
+msgid " [Q] Close DCC view"
msgstr ""
#: src/gui/gtk/gui-display.c:657
@@ -2246,124 +2288,124 @@ msgstr ""
msgid "Opened windows:\n"
msgstr ""
-#: src/common/weechat.c:184
+#: src/common/weechat.c:195
#, c-format
msgid ""
"WeeChat configuration options (~/.weechat/weechat.rc):\n"
"\n"
msgstr ""
-#: src/common/weechat.c:197
+#: src/common/weechat.c:208
#, c-format
msgid " . type boolean (values: 'on' or 'off')\n"
msgstr ""
-#: src/common/weechat.c:198 src/common/weechat.c:221 src/common/weechat.c:227
-#: src/common/weechat.c:233
+#: src/common/weechat.c:209 src/common/weechat.c:232 src/common/weechat.c:238
+#: src/common/weechat.c:244
#, c-format
msgid " . default value: '%s'\n"
msgstr ""
-#: src/common/weechat.c:203
+#: src/common/weechat.c:214
#, c-format
msgid " . type integer (values: between %d and %d)\n"
msgstr ""
-#: src/common/weechat.c:206
+#: src/common/weechat.c:217
#, c-format
msgid " . default value: %d\n"
msgstr ""
-#: src/common/weechat.c:210
+#: src/common/weechat.c:221
#, c-format
msgid " . type string (values: "
msgstr ""
-#: src/common/weechat.c:223 src/common/weechat.c:229 src/common/weechat.c:235
+#: src/common/weechat.c:234 src/common/weechat.c:240 src/common/weechat.c:246
msgid "empty"
msgstr ""
-#: src/common/weechat.c:226
+#: src/common/weechat.c:237
#, c-format
msgid " . type color (Curses or Gtk color, look at WeeChat doc)\n"
msgstr ""
-#: src/common/weechat.c:232
+#: src/common/weechat.c:243
#, c-format
msgid " . type string (any string)\n"
msgstr ""
-#: src/common/weechat.c:238
+#: src/common/weechat.c:249
#, c-format
msgid ""
" . description: %s\n"
"\n"
msgstr ""
-#: src/common/weechat.c:244
+#: src/common/weechat.c:255
#, c-format
msgid ""
"Moreover, you can define aliases in [alias] section, by adding lines like:\n"
msgstr ""
-#: src/common/weechat.c:246
+#: src/common/weechat.c:257
#, c-format
msgid ""
"where 'j' is alias name, and 'join' associated command.\n"
"\n"
msgstr ""
-#: src/common/weechat.c:292
+#: src/common/weechat.c:303
#, c-format
msgid "%s invalid syntax for IRC server ('%s'), ignored\n"
msgstr ""
-#: src/common/weechat.c:304
+#: src/common/weechat.c:315
#, c-format
msgid "%s unable to create server ('%s'), ignored\n"
msgstr ""
-#: src/common/weechat.c:313
+#: src/common/weechat.c:324
#, c-format
msgid "%s unknown parameter '%s', ignored\n"
msgstr ""
-#: src/common/weechat.c:333
+#: src/common/weechat.c:344
#, c-format
msgid "%s cannot create directory \"%s\"\n"
msgstr ""
-#: src/common/weechat.c:359
+#: src/common/weechat.c:370
#, c-format
msgid "%s unable to get HOME directory\n"
msgstr ""
-#: src/common/weechat.c:368
+#: src/common/weechat.c:379
#, c-format
msgid "%s not enough memory for home directory\n"
msgstr ""
-#: src/common/weechat.c:378
+#: src/common/weechat.c:389
#, c-format
msgid "%s unable to create ~/.weechat directory\n"
msgstr ""
-#: src/common/weechat.c:430
+#: src/common/weechat.c:441
#, c-format
msgid "%s unable to create ~/.weechat/logs directory\n"
msgstr ""
-#: src/common/weechat.c:466
+#: src/common/weechat.c:477
#, c-format
msgid "%s unable to create/append to log file (~/.weechat/%s)"
msgstr ""
-#: src/common/weechat.c:489
+#: src/common/weechat.c:500
#, c-format
msgid "%sWelcome to "
msgstr ""
-#: src/common/weechat.c:502
+#: src/common/weechat.c:513
msgid "compiled on"
msgstr ""
@@ -2384,11 +2426,11 @@ msgid "**** End of log "
msgstr ""
#: src/common/weechat.h:50
-msgid " Error:"
+msgid "WeeChat Error:"
msgstr ""
#: src/common/weechat.h:51
-msgid " Warning:"
+msgid "WeeChat Warning:"
msgstr ""
#: src/common/weeconfig.c:86 src/common/weeconfig.c:87
@@ -2874,330 +2916,334 @@ msgstr ""
msgid "disconnect after important lag (in minutes, 0 = never disconnect)"
msgstr ""
-#: src/common/weeconfig.c:541
+#: src/common/weeconfig.c:542
msgid "automatically accept dcc files"
msgstr ""
-#: src/common/weeconfig.c:542
+#: src/common/weeconfig.c:543
msgid "automatically accept incoming dcc files"
msgstr ""
-#: src/common/weeconfig.c:545
+#: src/common/weeconfig.c:546
msgid "automatically accept dcc chats"
msgstr ""
-#: src/common/weeconfig.c:546
+#: src/common/weeconfig.c:547
msgid "automatically accept dcc chats (use carefully!)"
msgstr ""
-#: src/common/weeconfig.c:549
+#: src/common/weeconfig.c:550
msgid "timeout for dcc request"
msgstr ""
-#: src/common/weeconfig.c:550
+#: src/common/weeconfig.c:551
msgid "timeout for dcc request (in seconds)"
msgstr ""
-#: src/common/weeconfig.c:553
+#: src/common/weeconfig.c:554
msgid "block size for dcc packets"
msgstr ""
-#: src/common/weeconfig.c:554
+#: src/common/weeconfig.c:555
msgid "block size for dcc packets in bytes (default: 1024)"
msgstr ""
-#: src/common/weeconfig.c:557
+#: src/common/weeconfig.c:558
msgid "path for incoming files with dcc"
msgstr ""
-#: src/common/weeconfig.c:558
+#: src/common/weeconfig.c:559
msgid "path for writing incoming files with dcc (default: user home)"
msgstr ""
-#: src/common/weeconfig.c:561
+#: src/common/weeconfig.c:562
msgid "default path for sending files with dcc"
msgstr ""
-#: src/common/weeconfig.c:562
+#: src/common/weeconfig.c:563
msgid ""
"path for reading files when sending thru dcc (when no path is specified)"
msgstr ""
-#: src/common/weeconfig.c:565
+#: src/common/weeconfig.c:566 src/common/weeconfig.c:567
+msgid "convert spaces to underscores when sending files"
+msgstr ""
+
+#: src/common/weeconfig.c:570
msgid "automatically rename dcc files if already exists"
msgstr ""
-#: src/common/weeconfig.c:566
+#: src/common/weeconfig.c:571
msgid "rename incoming files if already exists (add '.1', '.2', ...)"
msgstr ""
-#: src/common/weeconfig.c:569
+#: src/common/weeconfig.c:574
msgid "automatically resume aborted transfers"
msgstr ""
-#: src/common/weeconfig.c:570
+#: src/common/weeconfig.c:575
msgid ""
"automatically resume dcc transfer if connection with remote host is loosed"
msgstr ""
-#: src/common/weeconfig.c:584
+#: src/common/weeconfig.c:589
msgid "use proxy"
msgstr ""
-#: src/common/weeconfig.c:585
+#: src/common/weeconfig.c:590
msgid "use a proxy server to connect to irc server"
msgstr ""
-#: src/common/weeconfig.c:588
+#: src/common/weeconfig.c:593
msgid "proxy address"
msgstr ""
-#: src/common/weeconfig.c:589
+#: src/common/weeconfig.c:594
msgid "proxy server address (IP or hostname)"
msgstr ""
-#: src/common/weeconfig.c:592
+#: src/common/weeconfig.c:597
msgid "port for proxy"
msgstr ""
-#: src/common/weeconfig.c:593
+#: src/common/weeconfig.c:598
msgid "port for connecting to proxy server"
msgstr ""
-#: src/common/weeconfig.c:596
+#: src/common/weeconfig.c:601
msgid "proxy password"
msgstr ""
-#: src/common/weeconfig.c:597
+#: src/common/weeconfig.c:602
msgid "password for proxy server"
msgstr ""
-#: src/common/weeconfig.c:608
+#: src/common/weeconfig.c:613
msgid "server name"
msgstr ""
-#: src/common/weeconfig.c:609
+#: src/common/weeconfig.c:614
msgid "name associated to IRC server (for display only)"
msgstr ""
-#: src/common/weeconfig.c:612
+#: src/common/weeconfig.c:617
msgid "automatically connect to server"
msgstr ""
-#: src/common/weeconfig.c:613
+#: src/common/weeconfig.c:618
msgid "automatically connect to server when WeeChat is starting"
msgstr ""
-#: src/common/weeconfig.c:616
+#: src/common/weeconfig.c:621
msgid "automatically reconnect to server"
msgstr ""
-#: src/common/weeconfig.c:617
+#: src/common/weeconfig.c:622
msgid "automatically reconnect to server when disconnected"
msgstr ""
-#: src/common/weeconfig.c:620
+#: src/common/weeconfig.c:625
msgid "delay before trying again to reconnect"
msgstr ""
-#: src/common/weeconfig.c:621
+#: src/common/weeconfig.c:626
msgid "delay (in deconds) before trying again to reconnect to server"
msgstr ""
-#: src/common/weeconfig.c:624
+#: src/common/weeconfig.c:629
msgid "server address or hostname"
msgstr ""
-#: src/common/weeconfig.c:625
+#: src/common/weeconfig.c:630
msgid "IP address or hostname of IRC server"
msgstr ""
-#: src/common/weeconfig.c:628
+#: src/common/weeconfig.c:633
msgid "port for IRC server"
msgstr ""
-#: src/common/weeconfig.c:629
+#: src/common/weeconfig.c:634
msgid "port for connecting to server"
msgstr ""
-#: src/common/weeconfig.c:632
+#: src/common/weeconfig.c:637
msgid "server password"
msgstr ""
-#: src/common/weeconfig.c:633
+#: src/common/weeconfig.c:638
msgid "password for IRC server"
msgstr ""
-#: src/common/weeconfig.c:636
+#: src/common/weeconfig.c:641
msgid "nickname for server"
msgstr ""
-#: src/common/weeconfig.c:637
+#: src/common/weeconfig.c:642
msgid "nickname to use on IRC server"
msgstr ""
-#: src/common/weeconfig.c:640
+#: src/common/weeconfig.c:645
msgid "alternate nickname for server"
msgstr ""
-#: src/common/weeconfig.c:641
+#: src/common/weeconfig.c:646
msgid "alternate nickname to use on IRC server (if nickname is already used)"
msgstr ""
-#: src/common/weeconfig.c:644
+#: src/common/weeconfig.c:649
msgid "2nd alternate nickname for server"
msgstr ""
-#: src/common/weeconfig.c:645
+#: src/common/weeconfig.c:650
msgid ""
"2nd alternate nickname to use on IRC server (if alternate nickname is "
"already used)"
msgstr ""
-#: src/common/weeconfig.c:648
+#: src/common/weeconfig.c:653
msgid "user name for server"
msgstr ""
-#: src/common/weeconfig.c:649
+#: src/common/weeconfig.c:654
msgid "user name to use on IRC server"
msgstr ""
-#: src/common/weeconfig.c:652
+#: src/common/weeconfig.c:657
msgid "real name for server"
msgstr ""
-#: src/common/weeconfig.c:653
+#: src/common/weeconfig.c:658
msgid "real name to use on IRC server"
msgstr ""
-#: src/common/weeconfig.c:656 src/common/weeconfig.c:657
+#: src/common/weeconfig.c:661 src/common/weeconfig.c:662
msgid "first command to run when connected to server"
msgstr ""
-#: src/common/weeconfig.c:660
+#: src/common/weeconfig.c:665
msgid "delay (in seconds) after command was executed"
msgstr ""
-#: src/common/weeconfig.c:661
+#: src/common/weeconfig.c:666
msgid ""
"delay (in seconds) after command was executed (example: give some time for "
"authentication)"
msgstr ""
-#: src/common/weeconfig.c:664
+#: src/common/weeconfig.c:669
msgid "list of channels to join when connected to server"
msgstr ""
-#: src/common/weeconfig.c:665
+#: src/common/weeconfig.c:670
msgid "comma separated list of channels to join when connected to server"
msgstr ""
-#: src/common/weeconfig.c:668 src/common/weeconfig.c:669
+#: src/common/weeconfig.c:673 src/common/weeconfig.c:674
msgid "automatically rejoin channels when kicked"
msgstr ""
-#: src/common/weeconfig.c:1017
+#: src/common/weeconfig.c:1022
#, c-format
msgid "%s %s, line %d: new server, but previous was incomplete\n"
msgstr ""
-#: src/common/weeconfig.c:1026
+#: src/common/weeconfig.c:1031
#, c-format
msgid "%s %s, line %d: server '%s' already exists\n"
msgstr ""
-#: src/common/weeconfig.c:1040
+#: src/common/weeconfig.c:1045
#, c-format
msgid "%s %s, line %d: unable to create server\n"
msgstr ""
-#: src/common/weeconfig.c:1079
+#: src/common/weeconfig.c:1084
#, c-format
msgid "%s unable to assign default int with string (\"%s\")\n"
msgstr ""
-#: src/common/weeconfig.c:1090
+#: src/common/weeconfig.c:1095
#, c-format
msgid "%s unable to assign default color (\"%s\")\n"
msgstr ""
-#: src/common/weeconfig.c:1129
+#: src/common/weeconfig.c:1134
#, c-format
msgid "%s config file \"%s\" not found.\n"
msgstr ""
-#: src/common/weeconfig.c:1161
+#: src/common/weeconfig.c:1166
#, c-format
msgid "%s %s, line %d: invalid syntax, missing \"]\"\n"
msgstr ""
-#: src/common/weeconfig.c:1178
+#: src/common/weeconfig.c:1183
#, c-format
msgid "%s %s, line %d: unknown section identifier (\"%s\")\n"
msgstr ""
-#: src/common/weeconfig.c:1196
+#: src/common/weeconfig.c:1201
#, c-format
msgid "%s %s, line %d: invalid section for option, line is ignored\n"
msgstr ""
-#: src/common/weeconfig.c:1204
+#: src/common/weeconfig.c:1209
#, c-format
msgid "%s %s, line %d: invalid syntax, missing \"=\"\n"
msgstr ""
-#: src/common/weeconfig.c:1238
+#: src/common/weeconfig.c:1243
#, c-format
msgid "%s %s, line %d: invalid option \"%s\"\n"
msgstr ""
-#: src/common/weeconfig.c:1249
+#: src/common/weeconfig.c:1254
#, c-format
msgid ""
"%s %s, line %d: invalid value foroption '%s'\n"
"Expected: boolean value: 'off' or 'on'\n"
msgstr ""
-#: src/common/weeconfig.c:1258
+#: src/common/weeconfig.c:1263
#, c-format
msgid ""
"%s %s, line %d: invalid value for option '%s'\n"
"Expected: integer between %d and %d\n"
msgstr ""
-#: src/common/weeconfig.c:1269
+#: src/common/weeconfig.c:1274
#, c-format
msgid ""
"%s %s, line %d: invalid value for option '%s'\n"
"Expected: one of these strings: "
msgstr ""
-#: src/common/weeconfig.c:1285
+#: src/common/weeconfig.c:1290
#, c-format
msgid "%s %s, line %d: invalid color name for option '%s'\n"
msgstr ""
-#: src/common/weeconfig.c:1345 src/common/weeconfig.c:1518
+#: src/common/weeconfig.c:1350 src/common/weeconfig.c:1523
#, c-format
msgid "%s cannot create file \"%s\"\n"
msgstr ""
-#: src/common/weeconfig.c:1351
+#: src/common/weeconfig.c:1356
#, c-format
msgid "%s: creating default config file...\n"
msgstr ""
-#: src/common/weeconfig.c:1352
+#: src/common/weeconfig.c:1357
msgid "creating default config file\n"
msgstr ""
-#: src/common/weeconfig.c:1355 src/common/weeconfig.c:1527
+#: src/common/weeconfig.c:1360 src/common/weeconfig.c:1532
#, c-format
msgid ""
"#\n"
"# %s configuration file, created by %s v%s on %s#\n"
msgstr ""
-#: src/common/weeconfig.c:1524
+#: src/common/weeconfig.c:1529
msgid "saving config to disk\n"
msgstr ""
diff --git a/weechat/src/common/weechat.h b/weechat/src/common/weechat.h
index 16504a3d3..34f72dc4b 100644
--- a/weechat/src/common/weechat.h
+++ b/weechat/src/common/weechat.h
@@ -47,8 +47,8 @@
#define WEECHAT_COPYRIGHT_DATE "(c) 2003-2005"
#define WEECHAT_WEBSITE "http://weechat.flashtux.org"
-#define WEECHAT_ERROR _(PACKAGE_NAME " Error:")
-#define WEECHAT_WARNING _(PACKAGE_NAME " Warning:")
+#define WEECHAT_ERROR _("WeeChat Error:")
+#define WEECHAT_WARNING _("WeeChat Warning:")
/* log file */
diff --git a/weechat/src/common/weeconfig.c b/weechat/src/common/weeconfig.c
index a9d14c674..643f7f123 100644
--- a/weechat/src/common/weeconfig.c
+++ b/weechat/src/common/weeconfig.c
@@ -534,6 +534,7 @@ int cfg_dcc_timeout;
int cfg_dcc_blocksize;
char *cfg_dcc_download_path;
char *cfg_dcc_upload_path;
+int cfg_dcc_convert_spaces;
int cfg_dcc_auto_rename;
int cfg_dcc_auto_resume;
@@ -544,7 +545,7 @@ t_config_option weechat_options_dcc[] =
NULL, NULL, &cfg_dcc_auto_accept_files, NULL, config_change_noop },
{ "dcc_auto_accept_chats", N_("automatically accept dcc chats"),
N_("automatically accept dcc chats (use carefully!)"),
- OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE,
+ OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_FALSE,
NULL, NULL, &cfg_dcc_auto_accept_chats, NULL, config_change_noop },
{ "dcc_timeout", N_("timeout for dcc request"),
N_("timeout for dcc request (in seconds)"),
@@ -552,7 +553,7 @@ t_config_option weechat_options_dcc[] =
NULL, NULL, &cfg_dcc_timeout, NULL, config_change_noop },
{ "dcc_blocksize", N_("block size for dcc packets"),
N_("block size for dcc packets in bytes (default: 1024)"),
- OPTION_TYPE_INT, 1024, 102400, 1024,
+ OPTION_TYPE_INT, 1024, 102400, 65536,
NULL, NULL, &cfg_dcc_blocksize, NULL, config_change_noop },
{ "dcc_download_path", N_("path for incoming files with dcc"),
N_("path for writing incoming files with dcc (default: user home)"),
@@ -562,6 +563,10 @@ t_config_option weechat_options_dcc[] =
N_("path for reading files when sending thru dcc (when no path is specified)"),
OPTION_TYPE_STRING, 0, 0, 0, "~",
NULL, NULL, &cfg_dcc_upload_path, config_change_noop },
+ { "dcc_convert_spaces", N_("convert spaces to underscores when sending files"),
+ N_("convert spaces to underscores when sending files"),
+ OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE,
+ NULL, NULL, &cfg_dcc_convert_spaces, NULL, config_change_noop },
{ "dcc_auto_rename", N_("automatically rename dcc files if already exists"),
N_("rename incoming files if already exists (add '.1', '.2', ...)"),
OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE,
diff --git a/weechat/src/common/weeconfig.h b/weechat/src/common/weeconfig.h
index f69d010af..369639101 100644
--- a/weechat/src/common/weeconfig.h
+++ b/weechat/src/common/weeconfig.h
@@ -170,6 +170,7 @@ extern int cfg_dcc_timeout;
extern int cfg_dcc_blocksize;
extern char *cfg_dcc_download_path;
extern char *cfg_dcc_upload_path;
+extern int cfg_dcc_convert_spaces;
extern int cfg_dcc_auto_rename;
extern int cfg_dcc_auto_resume;
diff --git a/weechat/src/gui/curses/gui-display.c b/weechat/src/gui/curses/gui-display.c
index 6fa24e0aa..346335e19 100644
--- a/weechat/src/gui/curses/gui-display.c
+++ b/weechat/src/gui/curses/gui-display.c
@@ -365,7 +365,6 @@ gui_draw_buffer_title (t_gui_buffer *buffer, int erase)
{
if (!buffer->dcc)
{
- /* TODO: change this copyright as title? */
mvwprintw (ptr_win->win_title, 0, 0,
format,
PACKAGE_STRING " " WEECHAT_COPYRIGHT_DATE " - "
@@ -595,7 +594,7 @@ gui_draw_buffer_chat (t_gui_buffer *buffer, int erase)
{
t_gui_window *ptr_win;
t_gui_line *ptr_line;
- t_dcc *dcc_first, *dcc_selected, *ptr_dcc;
+ t_irc_dcc *dcc_first, *dcc_selected, *ptr_dcc;
char format_empty[32];
int i, j, lines_used, num_bars;
char *unit_name[] = { N_("bytes"), N_("Kb"), N_("Mb"), N_("Gb") };
@@ -627,8 +626,8 @@ gui_draw_buffer_chat (t_gui_buffer *buffer, int erase)
if (buffer->dcc)
{
i = 0;
- dcc_first = (ptr_win->dcc_first) ? (t_dcc *) ptr_win->dcc_first : dcc_list;
- dcc_selected = (ptr_win->dcc_selected) ? (t_dcc *) ptr_win->dcc_selected : dcc_list;
+ dcc_first = (ptr_win->dcc_first) ? (t_irc_dcc *) ptr_win->dcc_first : dcc_list;
+ dcc_selected = (ptr_win->dcc_selected) ? (t_irc_dcc *) ptr_win->dcc_selected : dcc_list;
for (ptr_dcc = dcc_first; ptr_dcc; ptr_dcc = ptr_dcc->next_dcc)
{
if (i >= ptr_win->win_chat_height - 1)
@@ -640,7 +639,7 @@ gui_draw_buffer_chat (t_gui_buffer *buffer, int erase)
(ptr_dcc == dcc_selected) ?
COLOR_DCC_SELECTED : COLOR_WIN_CHAT);
mvwprintw (ptr_win->win_chat, i, 0, "%s %-16s %s",
- (ptr_dcc == dcc_selected) ? ">>" : " ",
+ (ptr_dcc == dcc_selected) ? "**" : " ",
ptr_dcc->nick, ptr_dcc->filename);
if (ptr_dcc->filename_suffix > 0)
wprintw (ptr_win->win_chat, " (.%d)",
@@ -649,9 +648,8 @@ gui_draw_buffer_chat (t_gui_buffer *buffer, int erase)
(ptr_dcc == dcc_selected) ?
COLOR_DCC_SELECTED : COLOR_WIN_CHAT);
mvwprintw (ptr_win->win_chat, i + 1, 0, "%s %s ",
- (ptr_dcc == dcc_selected) ? ">>" : " ",
- (ptr_dcc->type == DCC_FILE_RECV) ?
- "--->" : "<---");
+ (ptr_dcc == dcc_selected) ? "**" : " ",
+ (ptr_dcc->type == DCC_FILE_RECV) ? "-->>" : "<<--");
gui_window_set_color (ptr_win->win_chat,
COLOR_DCC_WAITING + ptr_dcc->status);
wprintw (ptr_win->win_chat, "%-10s",
@@ -1231,7 +1229,7 @@ gui_draw_buffer_input (t_gui_buffer *buffer, int erase)
char format[32];
char *ptr_nickname;
int input_width;
- t_dcc *dcc_selected;
+ t_irc_dcc *dcc_selected;
if (!gui_ok)
return;
@@ -1300,7 +1298,8 @@ gui_draw_buffer_input (t_gui_buffer *buffer, int erase)
{
if (buffer->dcc)
{
- dcc_selected = (ptr_win->dcc_selected) ? (t_dcc *) ptr_win->dcc_selected : dcc_list;
+ dcc_selected = (ptr_win->dcc_selected) ? (t_irc_dcc *) ptr_win->dcc_selected : dcc_list;
+ wmove (ptr_win->win_input, 0, 0);
if (dcc_selected)
{
switch (dcc_selected->status)
@@ -1308,36 +1307,22 @@ gui_draw_buffer_input (t_gui_buffer *buffer, int erase)
case DCC_WAITING:
if ((dcc_selected->type == DCC_CHAT_RECV)
|| (dcc_selected->type == DCC_FILE_RECV))
- {
- mvwprintw (ptr_win->win_input, 0, 0,
- _(" [A] Accept"));
- wprintw (ptr_win->win_input, _(" [C] Cancel"));
- wprintw (ptr_win->win_input, _(" [Q] Close DCC view"));
- }
- else
- {
- mvwprintw (ptr_win->win_input, 0, 0,
- _(" [C] Cancel"));
- wprintw (ptr_win->win_input, _(" [Q] Close DCC view"));
- }
+ wprintw (ptr_win->win_input, _(" [A] Accept"));
+ wprintw (ptr_win->win_input, _(" [C] Cancel"));
break;
case DCC_CONNECTING:
case DCC_ACTIVE:
- mvwprintw (ptr_win->win_input, 0, 0,
- _(" [C] Cancel"));
- wprintw (ptr_win->win_input, _(" [Q] Close DCC view"));
+ wprintw (ptr_win->win_input, _(" [C] Cancel"));
break;
case DCC_DONE:
case DCC_FAILED:
case DCC_ABORTED:
- mvwprintw (ptr_win->win_input, 0, 0,
- _(" [R] Remove"));
- wprintw (ptr_win->win_input, _(" [Q] Close DCC view"));
+ wprintw (ptr_win->win_input, _(" [R] Remove"));
break;
}
}
- else
- mvwprintw (ptr_win->win_input, 0, 0, _(" [Q] Close DCC view"));
+ wprintw (ptr_win->win_input, _(" [P] Purge old DCC"));
+ wprintw (ptr_win->win_input, _(" [Q] Close DCC view"));
wclrtoeol (ptr_win->win_input);
if (ptr_win == gui_current_window)
move (ptr_win->win_y + ptr_win->win_height - 1,
@@ -2290,6 +2275,9 @@ gui_printf_color_type (t_gui_buffer *buffer, int type, int color, char *message,
buffer = SERVER(gui_current_window->buffer)->buffer;
else
buffer = gui_current_window->buffer;
+
+ if (buffer->dcc)
+ buffer = gui_buffers;
}
if (buffer == NULL)
diff --git a/weechat/src/gui/curses/gui-input.c b/weechat/src/gui/curses/gui-input.c
index ab300f047..1ca34b5b6 100644
--- a/weechat/src/gui/curses/gui-input.c
+++ b/weechat/src/gui/curses/gui-input.c
@@ -52,8 +52,9 @@ gui_read_keyb ()
int key, i;
t_gui_buffer *ptr_buffer;
t_irc_server *ptr_server;
+ t_irc_dcc *ptr_dcc;
char new_char[3], *decoded_string;
- t_dcc *dcc_selected;
+ t_irc_dcc *dcc_selected;
key = getch ();
if (key != ERR)
@@ -98,14 +99,14 @@ gui_read_keyb ()
if (dcc_list)
{
if (gui_current_window->dcc_selected
- && ((t_dcc *)(gui_current_window->dcc_selected))->prev_dcc)
+ && ((t_irc_dcc *)(gui_current_window->dcc_selected))->prev_dcc)
{
if (gui_current_window->dcc_selected ==
gui_current_window->dcc_first)
gui_current_window->dcc_first =
- ((t_dcc *)(gui_current_window->dcc_first))->prev_dcc;
+ ((t_irc_dcc *)(gui_current_window->dcc_first))->prev_dcc;
gui_current_window->dcc_selected =
- ((t_dcc *)(gui_current_window->dcc_selected))->prev_dcc;
+ ((t_irc_dcc *)(gui_current_window->dcc_selected))->prev_dcc;
gui_draw_buffer_chat (gui_current_window->buffer, 1);
gui_draw_buffer_input (gui_current_window->buffer, 1);
}
@@ -144,7 +145,7 @@ gui_read_keyb ()
if (dcc_list)
{
if (!gui_current_window->dcc_selected
- || ((t_dcc *)(gui_current_window->dcc_selected))->next_dcc)
+ || ((t_irc_dcc *)(gui_current_window->dcc_selected))->next_dcc)
{
if (gui_current_window->dcc_last_displayed
&& (gui_current_window->dcc_selected ==
@@ -152,14 +153,14 @@ gui_read_keyb ()
{
if (gui_current_window->dcc_first)
gui_current_window->dcc_first =
- ((t_dcc *)(gui_current_window->dcc_first))->next_dcc;
+ ((t_irc_dcc *)(gui_current_window->dcc_first))->next_dcc;
else
gui_current_window->dcc_first =
dcc_list->next_dcc;
}
if (gui_current_window->dcc_selected)
gui_current_window->dcc_selected =
- ((t_dcc *)(gui_current_window->dcc_selected))->next_dcc;
+ ((t_irc_dcc *)(gui_current_window->dcc_selected))->next_dcc;
else
gui_current_window->dcc_selected =
dcc_list->next_dcc;
@@ -558,7 +559,7 @@ gui_read_keyb ()
if (gui_current_window->buffer->dcc)
{
dcc_selected = (gui_current_window->dcc_selected) ?
- (t_dcc *) gui_current_window->dcc_selected : dcc_list;
+ (t_irc_dcc *) gui_current_window->dcc_selected : dcc_list;
switch (key)
{
/* accept DCC */
@@ -584,10 +585,30 @@ gui_read_keyb ()
gui_redraw_buffer (gui_current_window->buffer);
}
break;
+ /* purge old DCC */
+ case 'p':
+ case 'P':
+ gui_current_window->dcc_selected = NULL;
+ for (ptr_dcc = dcc_list; ptr_dcc; ptr_dcc = ptr_dcc->next_dcc)
+ {
+ if ((dcc_selected->status == DCC_DONE)
+ || (dcc_selected->status == DCC_FAILED)
+ || (dcc_selected->status == DCC_ABORTED))
+ dcc_free (ptr_dcc);
+ }
+ gui_redraw_buffer (gui_current_window->buffer);
+ break;
/* close DCC window */
case 'q':
case 'Q':
- gui_buffer_free (gui_current_window->buffer, 1);
+ if (buffer_before_dcc)
+ {
+ gui_buffer_free (gui_current_window->buffer, 1);
+ gui_switch_to_buffer (gui_current_window,
+ buffer_before_dcc);
+ }
+ else
+ gui_buffer_free (gui_current_window->buffer, 1);
gui_redraw_buffer (gui_current_window->buffer);
break;
/* remove from DCC list */
@@ -595,7 +616,8 @@ gui_read_keyb ()
case 'R':
if (dcc_selected
&& (((dcc_selected->type == DCC_CHAT_RECV)
- || (dcc_selected->type == DCC_FILE_RECV))
+ || (dcc_selected->type == DCC_FILE_RECV)
+ || (dcc_selected->type == DCC_FILE_SEND))
&& ((dcc_selected->status == DCC_DONE)
|| (dcc_selected->status == DCC_FAILED)
|| (dcc_selected->status == DCC_ABORTED))))
@@ -703,10 +725,11 @@ gui_main_loop ()
}
}
- timeout.tv_sec = 0;
- timeout.tv_usec = 10000;
FD_ZERO (&read_fd);
FD_SET (STDIN_FILENO, &read_fd);
+ timeout.tv_sec = 0;
+ timeout.tv_usec = 10000;
+
for (ptr_server = irc_servers; ptr_server;
ptr_server = ptr_server->next_server)
{
@@ -749,7 +772,7 @@ gui_main_loop ()
FD_SET (ptr_server->sock4, &read_fd);
}
}
- if (select (FD_SETSIZE, &read_fd, NULL, NULL, &timeout))
+ if (select (FD_SETSIZE, &read_fd, NULL, NULL, &timeout) > 0)
{
if (FD_ISSET (STDIN_FILENO, &read_fd))
{
diff --git a/weechat/src/irc/irc-commands.c b/weechat/src/irc/irc-commands.c
index 1cbff48bb..f6bd3de77 100644
--- a/weechat/src/irc/irc-commands.c
+++ b/weechat/src/irc/irc-commands.c
@@ -49,7 +49,7 @@ t_irc_command irc_commands[] =
N_("action: 'send' (file) or 'chat'\n"
"nickname: nickname to send file or chat\n"
"file: filename (on local host)"),
- 2, 3, 1, NULL, irc_cmd_send_dcc, NULL },
+ 2, MAX_ARGS, 1, NULL, irc_cmd_send_dcc, NULL },
{ "deop", N_("removes channel operator status from nickname(s)"),
N_("nickname [nickname]"), "",
1, MAX_ARGS, 1, irc_cmd_send_deop, NULL, NULL },
diff --git a/weechat/src/irc/irc-dcc.c b/weechat/src/irc/irc-dcc.c
index 565e28128..2d51c7e1a 100644
--- a/weechat/src/irc/irc-dcc.c
+++ b/weechat/src/irc/irc-dcc.c
@@ -28,6 +28,7 @@
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
+#include <sys/stat.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
@@ -39,7 +40,7 @@
#include "../gui/gui.h"
-t_dcc *dcc_list = NULL; /* DCC files & chat list */
+t_irc_dcc *dcc_list = NULL; /* DCC files & chat list */
char *dcc_status_string[] = /* strings for DCC status */
{ N_("Waiting"), N_("Connecting"), N_("Active"), N_("Done"), N_("Failed"),
N_("Aborted") };
@@ -64,31 +65,42 @@ dcc_redraw (int highlight)
* dcc_connect: connect to another host
*/
-void
-dcc_connect (t_dcc *ptr_dcc)
+int
+dcc_connect (t_irc_dcc *ptr_dcc)
{
struct sockaddr_in addr;
ptr_dcc->status = DCC_CONNECTING;
- ptr_dcc->sock = socket (AF_INET, SOCK_STREAM, 0);
if (ptr_dcc->sock == -1)
- return;
- memset (&addr, 0, sizeof (addr));
- addr.sin_port = htons (ptr_dcc->port);
- addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = htonl (ptr_dcc->addr);
- fcntl (ptr_dcc->sock, F_SETFL, O_NONBLOCK);
- connect (ptr_dcc->sock, (struct sockaddr *) &addr, sizeof (addr));
-}
-
-/*
- * dcc_send: send DCC request (file or chat)
- */
-
-void
-dcc_send ()
-{
+ {
+ ptr_dcc->sock = socket (AF_INET, SOCK_STREAM, 0);
+ if (ptr_dcc->sock == -1)
+ return 0;
+ }
+ if (fcntl (ptr_dcc->sock, F_SETFL, O_NONBLOCK) == -1)
+ return 0;
+
+ /* for DCC SEND, listen to socket for a connection */
+ if (ptr_dcc->type == DCC_FILE_SEND)
+ {
+ if (listen (ptr_dcc->sock, 1) == -1)
+ return 0;
+ if (fcntl (ptr_dcc->sock, F_SETFL, 0) == -1)
+ return 0;
+ }
+
+ /* for DCC RECV, connect to listening host */
+ if (ptr_dcc->type == DCC_FILE_RECV)
+ {
+ memset (&addr, 0, sizeof (addr));
+ addr.sin_port = htons (ptr_dcc->port);
+ addr.sin_family = AF_INET;
+ addr.sin_addr.s_addr = htonl (ptr_dcc->addr);
+ connect (ptr_dcc->sock, (struct sockaddr *) &addr, sizeof (addr));
+ }
+
+ return 1;
}
/*
@@ -96,9 +108,9 @@ dcc_send ()
*/
void
-dcc_free (t_dcc *ptr_dcc)
+dcc_free (t_irc_dcc *ptr_dcc)
{
- t_dcc *new_dcc_list;
+ t_irc_dcc *new_dcc_list;
if (ptr_dcc->prev_dcc)
{
@@ -125,9 +137,37 @@ dcc_free (t_dcc *ptr_dcc)
*/
void
-dcc_close (t_dcc *ptr_dcc, int status)
+dcc_close (t_irc_dcc *ptr_dcc, int status)
{
ptr_dcc->status = status;
+
+ if (status == DCC_DONE)
+ {
+ if ((ptr_dcc->type == DCC_FILE_SEND) || (ptr_dcc->type == DCC_FILE_RECV))
+ {
+ irc_display_prefix (ptr_dcc->server->buffer, PREFIX_INFO);
+ gui_printf (ptr_dcc->server->buffer, _("DCC: file "));
+ gui_printf_color (ptr_dcc->server->buffer,
+ COLOR_WIN_CHAT_CHANNEL,
+ "%s",
+ ptr_dcc->filename);
+ gui_printf (ptr_dcc->server->buffer, _(" (local filename: "));
+ gui_printf_color (ptr_dcc->server->buffer,
+ COLOR_WIN_CHAT_CHANNEL,
+ "%s",
+ ptr_dcc->local_filename);
+ if (ptr_dcc->type == DCC_FILE_SEND)
+ gui_printf (ptr_dcc->server->buffer, _(") sent to "));
+ else
+ gui_printf (ptr_dcc->server->buffer, _(") received from "));
+ gui_printf_color (ptr_dcc->server->buffer,
+ COLOR_WIN_CHAT_NICK,
+ "%s",
+ ptr_dcc->nick);
+ gui_printf (ptr_dcc->server->buffer, _(": ok!\n"));
+ }
+ }
+
if (ptr_dcc->sock != -1)
{
close (ptr_dcc->sock);
@@ -145,13 +185,15 @@ dcc_close (t_dcc *ptr_dcc, int status)
*/
void
-dcc_accept (t_dcc *ptr_dcc)
+dcc_accept (t_irc_dcc *ptr_dcc)
{
char *ptr_home, *filename2;
- dcc_connect (ptr_dcc);
- if (ptr_dcc->sock == -1)
- ptr_dcc->status = DCC_FAILED;
+ if (!dcc_connect (ptr_dcc))
+ {
+ dcc_close (ptr_dcc, DCC_FAILED);
+ dcc_redraw (1);
+ }
else
{
ptr_dcc->status = DCC_ACTIVE;
@@ -164,7 +206,7 @@ dcc_accept (t_dcc *ptr_dcc)
4);
if (!ptr_dcc->local_filename)
{
- ptr_dcc->status = DCC_FAILED;
+ dcc_close (ptr_dcc, DCC_FAILED);
dcc_redraw (1);
return;
}
@@ -187,7 +229,7 @@ dcc_accept (t_dcc *ptr_dcc)
/* if auto rename is not set, then abort DCC */
if (!cfg_dcc_auto_rename)
{
- ptr_dcc->status = DCC_FAILED;
+ dcc_close (ptr_dcc, DCC_FAILED);
dcc_redraw (1);
return;
}
@@ -195,7 +237,7 @@ dcc_accept (t_dcc *ptr_dcc)
filename2 = (char *) malloc (strlen (ptr_dcc->local_filename) + 16);
if (!filename2)
{
- ptr_dcc->status = DCC_FAILED;
+ dcc_close (ptr_dcc, DCC_FAILED);
dcc_redraw (1);
return;
}
@@ -214,7 +256,7 @@ dcc_accept (t_dcc *ptr_dcc)
free (filename2);
}
ptr_dcc->file = open (ptr_dcc->local_filename,
- O_CREAT | O_TRUNC | O_WRONLY,
+ O_CREAT | O_TRUNC | O_WRONLY | O_NONBLOCK,
0644);
}
dcc_redraw (1);
@@ -224,15 +266,17 @@ dcc_accept (t_dcc *ptr_dcc)
* dcc_add: add a DCC file to queue
*/
-t_dcc *
-dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nick, char *filename,
- unsigned int size)
+t_irc_dcc *
+dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nick,
+ int sock, char *filename, char *local_filename, unsigned long size)
{
- t_dcc *new_dcc;
+ t_irc_dcc *new_dcc;
- if ((new_dcc = (t_dcc *) malloc (sizeof (t_dcc))) == NULL)
+ if ((new_dcc = (t_irc_dcc *) malloc (sizeof (t_irc_dcc))) == NULL)
{
- gui_printf (NULL, _("%s not enough memory for new DCC\n"), WEECHAT_ERROR);
+ gui_printf_nolog (server->buffer,
+ _("%s not enough memory for new DCC\n"),
+ WEECHAT_ERROR);
return NULL;
}
new_dcc->server = server;
@@ -241,13 +285,14 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic
new_dcc->addr = addr;
new_dcc->port = port;
new_dcc->nick = strdup (nick);
- new_dcc->sock = -1;
+ new_dcc->sock = sock;
new_dcc->file = -1;
new_dcc->filename = strdup (filename);
- new_dcc->local_filename = NULL;
+ new_dcc->local_filename = (local_filename) ? strdup (local_filename) : NULL;
new_dcc->filename_suffix = -1;
new_dcc->size = size;
new_dcc->pos = 0;
+ new_dcc->ack = 0;
new_dcc->prev_dcc = NULL;
new_dcc->next_dcc = dcc_list;
if (dcc_list)
@@ -261,33 +306,47 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic
{
irc_display_prefix (server->buffer, PREFIX_INFO);
gui_printf (server->buffer, _("Incoming DCC file from "));
- gui_printf_color (server->buffer,
- COLOR_WIN_CHAT_NICK,
- "%s",
- nick);
- gui_printf_color (server->buffer,
- COLOR_WIN_CHAT_DARK,
- " (");
- gui_printf_color (server->buffer,
- COLOR_WIN_CHAT_HOST,
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_NICK, "%s", nick);
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_DARK, " (");
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_HOST,
"%d.%d.%d.%d",
addr >> 24, (addr >> 16) & 0xff, (addr >> 8) & 0xff, addr & 0xff);
- gui_printf_color (server->buffer,
- COLOR_WIN_CHAT_DARK,
- ")");
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_DARK, ")");
gui_printf (server->buffer, ": ");
- gui_printf_color (server->buffer,
- COLOR_WIN_CHAT_CHANNEL,
- "%s",
- filename);
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_CHANNEL, "%s", filename);
gui_printf (server->buffer, ", ");
- gui_printf_color (server->buffer,
- COLOR_WIN_CHAT_CHANNEL,
- "%lu",
- size);
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_CHANNEL, "%lu", size);
gui_printf (server->buffer, _(" bytes\n"));
}
+ if (type == DCC_FILE_SEND)
+ {
+ irc_display_prefix (server->buffer, PREFIX_INFO);
+ gui_printf (server->buffer, _("Sending DCC file to "));
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_NICK, "%s", nick);
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_DARK, " (");
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_HOST,
+ "%d.%d.%d.%d",
+ addr >> 24, (addr >> 16) & 0xff, (addr >> 8) & 0xff, addr & 0xff);
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_DARK, ")");
+ gui_printf (server->buffer, ": ");
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_CHANNEL, "%s", filename);
+ gui_printf (server->buffer, _(" (local filename: "));
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_CHANNEL, "%s", local_filename);
+ gui_printf (server->buffer, "), ");
+ gui_printf_color (server->buffer, COLOR_WIN_CHAT_CHANNEL, "%lu", size);
+ gui_printf (server->buffer, _(" bytes\n"));
+ }
+
+ if (type == DCC_FILE_SEND)
+ {
+ if (!dcc_connect (new_dcc))
+ {
+ dcc_close (new_dcc, DCC_FAILED);
+ return NULL;
+ }
+ }
+
if ( ( (type == DCC_CHAT_RECV) && (cfg_dcc_auto_accept_chats) )
|| ( (type == DCC_FILE_RECV) && (cfg_dcc_auto_accept_files) ) )
dcc_accept (new_dcc);
@@ -299,67 +358,298 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic
}
/*
+ * dcc_send: send DCC request (file or chat)
+ */
+
+void
+dcc_send (t_irc_server *server, char *nick, char *filename)
+{
+ char *ptr_home, *filename2, *short_filename, *pos;
+ int spaces;
+ struct stat st;
+ int sock, port;
+ struct sockaddr_in addr;
+ socklen_t length;
+ unsigned long local_addr;
+
+ /* add home if filename not beginning with '/' (not for Win32) */
+ #ifdef _WIN32
+ filename2 = strdup (filename);
+ #else
+ if (filename[0] == '/')
+ filename2 = strdup (filename);
+ else
+ {
+ ptr_home = getenv ("HOME");
+ filename2 = (char *) malloc (strlen (cfg_dcc_upload_path) +
+ strlen (filename) +
+ ((cfg_dcc_upload_path[0] == '~') ?
+ strlen (ptr_home) : 0) +
+ 4);
+ if (!filename2)
+ {
+ irc_display_prefix (server->buffer, PREFIX_ERROR);
+ gui_printf_nolog (server->buffer,
+ _("%s not enough memory for DCC SEND\n"),
+ WEECHAT_ERROR);
+ return;
+ }
+ if (cfg_dcc_upload_path[0] == '~')
+ {
+ strcpy (filename2, ptr_home);
+ strcat (filename2, cfg_dcc_upload_path + 1);
+ }
+ else
+ strcpy (filename2, cfg_dcc_upload_path);
+ if (filename2[strlen (filename2) - 1] != DIR_SEPARATOR_CHAR)
+ strcat (filename2, DIR_SEPARATOR);
+ strcat (filename2, filename);
+ }
+ #endif
+
+ /* check if file exists */
+ if (stat (filename2, &st) == -1)
+ {
+ irc_display_prefix (server->buffer, PREFIX_ERROR);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot access file \"%s\"\n"),
+ WEECHAT_ERROR, filename2);
+ free (filename2);
+ return;
+ }
+
+ /* get local IP address */
+ memset (&addr, 0, sizeof (struct sockaddr_in));
+ length = sizeof (addr);
+ getsockname (server->sock4, (struct sockaddr *) &addr, &length);
+ addr.sin_family = AF_INET;
+ local_addr = ntohl (addr.sin_addr.s_addr);
+
+ /* open socket for DCC */
+ sock = socket (AF_INET, SOCK_STREAM, 0);
+ if (sock == -1)
+ {
+ irc_display_prefix (server->buffer, PREFIX_ERROR);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot create socket for DCC\n"),
+ WEECHAT_ERROR);
+ free (filename2);
+ return;
+ }
+
+ /* find port automatically */
+ addr.sin_port = 0;
+ if (bind (sock, (struct sockaddr *) &addr, sizeof (addr)) == -1)
+ {
+ irc_display_prefix (server->buffer, PREFIX_ERROR);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot find port for DCC\n"),
+ WEECHAT_ERROR);
+ close (sock);
+ free (filename2);
+ return;
+ }
+ length = sizeof (addr);
+ getsockname (sock, (struct sockaddr *) &addr, &length);
+ port = ntohs (addr.sin_port);
+
+ /* extract short filename (without path) */
+ pos = strrchr (filename2, DIR_SEPARATOR_CHAR);
+ if (pos)
+ short_filename = strdup (pos + 1);
+ else
+ short_filename = strdup (filename2);
+
+ /* convert spaces to underscore if asked and needed */
+ pos = short_filename;
+ spaces = 0;
+ while (pos[0])
+ {
+ if (pos[0] == ' ')
+ {
+ if (cfg_dcc_convert_spaces)
+ pos[0] = '_';
+ else
+ spaces = 1;
+ }
+ pos++;
+ }
+
+ /* add DCC entry and listen to socket */
+ if (!dcc_add (server, DCC_FILE_SEND, local_addr, port, nick, sock,
+ short_filename, filename2, st.st_size))
+ {
+ irc_display_prefix (server->buffer, PREFIX_ERROR);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot send DCC\n"),
+ WEECHAT_ERROR);
+ close (sock);
+ free (short_filename);
+ free (filename2);
+ return;
+ }
+
+ /* send DCC request to nick */
+ server_sendf (server,
+ (spaces) ?
+ "PRIVMSG %s :\01DCC SEND \"%s\" %lu %d %u\01\r\n" :
+ "PRIVMSG %s :\01DCC SEND %s %lu %d %u\01\r\n",
+ nick, short_filename, local_addr, port,
+ (unsigned long) st.st_size);
+
+ free (short_filename);
+ free (filename2);
+}
+
+
+/*
* dcc_handle: receive/send data for each active DCC
*/
void
dcc_handle ()
{
- t_dcc *ptr_dcc;
- int num;
- char buffer[8192];
+ t_irc_dcc *ptr_dcc;
+ int num_read, num_sent;
+ static char buffer[102400];
uint32_t pos;
+ fd_set read_fd;
+ static struct timeval timeout;
+ int sock;
+ struct sockaddr_in addr;
+ socklen_t length;
for (ptr_dcc = dcc_list; ptr_dcc; ptr_dcc = ptr_dcc->next_dcc)
{
+ if (ptr_dcc->status == DCC_CONNECTING)
+ {
+ if (ptr_dcc->type == DCC_FILE_SEND)
+ {
+ FD_ZERO (&read_fd);
+ FD_SET (ptr_dcc->sock, &read_fd);
+ timeout.tv_sec = 0;
+ timeout.tv_usec = 0;
+
+ /* something to read on socket? */
+ if (select (FD_SETSIZE, &read_fd, NULL, NULL, &timeout) > 0)
+ {
+ if (FD_ISSET (ptr_dcc->sock, &read_fd))
+ {
+ length = sizeof (addr);
+ sock = accept (ptr_dcc->sock, (struct sockaddr *) &addr, &length);
+ close (ptr_dcc->sock);
+ ptr_dcc->sock = -1;
+ if (sock < 0)
+ {
+ dcc_close (ptr_dcc, DCC_FAILED);
+ dcc_redraw (1);
+ return;
+ }
+ ptr_dcc->sock = sock;
+ if (fcntl (ptr_dcc->sock, F_SETFL, O_NONBLOCK) == -1)
+ {
+ dcc_close (ptr_dcc, DCC_FAILED);
+ dcc_redraw (1);
+ return;
+ }
+ ptr_dcc->addr = ntohl (addr.sin_addr.s_addr);
+ ptr_dcc->status = DCC_ACTIVE;
+ ptr_dcc->file = open (ptr_dcc->local_filename, O_RDONLY | O_NONBLOCK, 0644);
+ }
+ }
+ }
+ }
+
if (ptr_dcc->status == DCC_ACTIVE)
{
if (ptr_dcc->type == DCC_FILE_RECV)
{
- num = recv (ptr_dcc->sock, buffer, sizeof (buffer), 0);
- if (num != -1)
+ num_read = recv (ptr_dcc->sock, buffer, sizeof (buffer), 0);
+ if (num_read != -1)
{
- if (num == 0)
+ if (num_read == 0)
{
dcc_close (ptr_dcc, DCC_FAILED);
dcc_redraw (1);
+ return;
+ }
+
+ if (write (ptr_dcc->file, buffer, num_read) == -1)
+ {
+ dcc_close (ptr_dcc, DCC_FAILED);
+ dcc_redraw (1);
+ return;
+ }
+ ptr_dcc->pos += (unsigned long) num_read;
+ pos = htonl (ptr_dcc->pos);
+ send (ptr_dcc->sock, (char *) &pos, 4, 0);
+ if (ptr_dcc->pos >= ptr_dcc->size)
+ {
+ dcc_close (ptr_dcc, DCC_DONE);
+ dcc_redraw (1);
}
else
+ dcc_redraw (0);
+ }
+ }
+ if (ptr_dcc->type == DCC_FILE_SEND)
+ {
+ if (cfg_dcc_blocksize > (int) sizeof (buffer))
+ {
+ gui_printf (NULL, _("%s DCC failed because blocksize is too "
+ "big. Check value of \"dcc_blocksize\" option, "
+ "max is %d.\n"),
+ sizeof (buffer));
+ dcc_close (ptr_dcc, DCC_FAILED);
+ dcc_redraw (1);
+ return;
+ }
+ if (ptr_dcc->pos > ptr_dcc->ack)
+ {
+ /* we should receive ACK for packets sent previously */
+ num_read = recv (ptr_dcc->sock, (char *) &pos, 4, MSG_PEEK);
+ if (num_read != -1)
{
- if (write (ptr_dcc->file, buffer, num) == -1)
+ if (num_read == 0)
{
dcc_close (ptr_dcc, DCC_FAILED);
dcc_redraw (1);
return;
}
- ptr_dcc->pos += (unsigned long) num;
- pos = htonl (ptr_dcc->pos);
- send (ptr_dcc->sock, (char *) &pos, 4, 0);
- if (ptr_dcc->pos >= ptr_dcc->size)
+ if (num_read < 4)
+ return;
+ recv (ptr_dcc->sock, (char *) &pos, 4, 0);
+ ptr_dcc->ack = ntohl (pos);
+
+ if ((ptr_dcc->pos >= ptr_dcc->size)
+ && (ptr_dcc->ack >= ptr_dcc->size))
{
- irc_display_prefix (ptr_dcc->server->buffer, PREFIX_INFO);
- gui_printf (ptr_dcc->server->buffer, _("DCC: file "));
- gui_printf_color (ptr_dcc->server->buffer,
- COLOR_WIN_CHAT_CHANNEL,
- "%s",
- ptr_dcc->filename);
- gui_printf (ptr_dcc->server->buffer, _(" (local filename: "));
- gui_printf_color (ptr_dcc->server->buffer,
- COLOR_WIN_CHAT_CHANNEL,
- "%s",
- ptr_dcc->local_filename);
- gui_printf (ptr_dcc->server->buffer, _(") from "));
- gui_printf_color (ptr_dcc->server->buffer,
- COLOR_WIN_CHAT_NICK,
- "%s",
- ptr_dcc->nick);
- gui_printf (ptr_dcc->server->buffer, _(": ok!\n"));
dcc_close (ptr_dcc, DCC_DONE);
dcc_redraw (1);
+ return;
}
- dcc_redraw (0);
}
}
+ if (ptr_dcc->pos <= ptr_dcc->ack)
+ {
+ lseek (ptr_dcc->file, ptr_dcc->pos, SEEK_SET);
+ num_read = read (ptr_dcc->file, buffer, cfg_dcc_blocksize);
+ if (num_read < 1)
+ {
+ dcc_close (ptr_dcc, DCC_FAILED);
+ dcc_redraw (1);
+ return;
+ }
+ num_sent = send (ptr_dcc->sock, buffer, num_read, 0);
+ if (num_sent < 0)
+ {
+ dcc_close (ptr_dcc, DCC_FAILED);
+ dcc_redraw (1);
+ return;
+ }
+ ptr_dcc->pos += (unsigned long) num_sent;
+ dcc_redraw (0);
+ }
}
}
}
@@ -372,7 +662,7 @@ dcc_handle ()
void
dcc_end ()
{
- t_dcc *ptr_dcc;
+ t_irc_dcc *ptr_dcc;
for (ptr_dcc = dcc_list; ptr_dcc; ptr_dcc = ptr_dcc->next_dcc)
{
diff --git a/weechat/src/irc/irc-recv.c b/weechat/src/irc/irc-recv.c
index 09feddf7e..8e83dee93 100644
--- a/weechat/src/irc/irc-recv.c
+++ b/weechat/src/irc/irc-recv.c
@@ -160,9 +160,9 @@ irc_cmd_recv_join (t_irc_server *server, char *host, char *arguments)
if (!ptr_channel)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot create new channel \"%s\"\n"),
- WEECHAT_ERROR, arguments);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot create new channel \"%s\"\n"),
+ WEECHAT_ERROR, arguments);
return -1;
}
}
@@ -227,9 +227,9 @@ irc_cmd_recv_kick (t_irc_server *server, char *host, char *arguments)
if (!ptr_channel)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s channel not found for \"%s\" command\n"),
- WEECHAT_ERROR, "kick");
+ gui_printf_nolog (server->buffer,
+ _("%s channel not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "kick");
return -1;
}
@@ -260,9 +260,9 @@ irc_cmd_recv_kick (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s nick not found for \"%s\" command\n"),
- WEECHAT_ERROR, "kick");
+ gui_printf_nolog (server->buffer,
+ _("%s nick not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "kick");
return -1;
}
if (strcmp (pos_nick, server->nick) == 0)
@@ -550,9 +550,9 @@ irc_cmd_recv_mode (t_irc_server *server, char *host, char *arguments)
if (host == NULL)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command received without host\n"),
- WEECHAT_ERROR, "mode");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command received without host\n"),
+ WEECHAT_ERROR, "mode");
return -1;
}
@@ -565,9 +565,9 @@ irc_cmd_recv_mode (t_irc_server *server, char *host, char *arguments)
if (!pos)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command received without channel or nickname\n"),
- WEECHAT_ERROR, "mode");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command received without channel or nickname\n"),
+ WEECHAT_ERROR, "mode");
return -1;
}
pos[0] = '\0';
@@ -595,9 +595,9 @@ irc_cmd_recv_mode (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s channel not found for \"%s\" command\n"),
- WEECHAT_ERROR, "mode");
+ gui_printf_nolog (server->buffer,
+ _("%s channel not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "mode");
return -1;
}
}
@@ -635,9 +635,9 @@ irc_cmd_recv_nick (t_irc_server *server, char *host, char *arguments)
if (host == NULL)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command received without host\n"),
- WEECHAT_ERROR, "nick");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command received without host\n"),
+ WEECHAT_ERROR, "nick");
return -1;
}
@@ -753,9 +753,9 @@ irc_cmd_recv_notice (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s nickname not found for \"%s\" command\n"),
- WEECHAT_ERROR, "notice");
+ gui_printf_nolog (server->buffer,
+ _("%s nickname not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "notice");
return -1;
}
if (strncmp (pos, "\01VERSION", 8) == 0)
@@ -846,9 +846,9 @@ irc_cmd_recv_part (t_irc_server *server, char *host, char *arguments)
if (!host || !arguments)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command received without host or channel\n"),
- WEECHAT_ERROR, "part");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command received without host or channel\n"),
+ WEECHAT_ERROR, "part");
return -1;
}
@@ -921,9 +921,9 @@ irc_cmd_recv_part (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s channel not found for \"%s\" command\n"),
- WEECHAT_ERROR, "part");
+ gui_printf_nolog (server->buffer,
+ _("%s channel not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "part");
return -1;
}
@@ -995,9 +995,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
if (host == NULL)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command received without host\n"),
- WEECHAT_ERROR, "privmsg");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command received without host\n"),
+ WEECHAT_ERROR, "privmsg");
return -1;
}
@@ -1085,9 +1085,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s nick not found for \"%s\" command\n"),
- WEECHAT_ERROR, "privmsg");
+ gui_printf_nolog (server->buffer,
+ _("%s nick not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "privmsg");
return -1;
}
}
@@ -1095,9 +1095,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s channel not found for \"%s\" command\n"),
- WEECHAT_ERROR, "privmsg");
+ gui_printf_nolog (server->buffer,
+ _("%s channel not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "privmsg");
return -1;
}
}
@@ -1180,9 +1180,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
if (!pos2)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot parse \"%s\" command\n"),
- WEECHAT_ERROR, "privmsg");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot parse \"%s\" command\n"),
+ WEECHAT_ERROR, "privmsg");
return -1;
}
pos2[0] = '\0';
@@ -1195,9 +1195,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
if (!pos_size)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot parse \"%s\" command\n"),
- WEECHAT_ERROR, "privmsg");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot parse \"%s\" command\n"),
+ WEECHAT_ERROR, "privmsg");
return -1;
}
pos2 = pos_size;
@@ -1211,9 +1211,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
if (!pos_port)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot parse \"%s\" command\n"),
- WEECHAT_ERROR, "privmsg");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot parse \"%s\" command\n"),
+ WEECHAT_ERROR, "privmsg");
return -1;
}
pos2 = pos_port;
@@ -1227,9 +1227,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
if (!pos_addr)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot parse \"%s\" command\n"),
- WEECHAT_ERROR, "privmsg");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot parse \"%s\" command\n"),
+ WEECHAT_ERROR, "privmsg");
return -1;
}
pos2 = pos_addr;
@@ -1239,7 +1239,8 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
pos2[1] = '\0';
dcc_add (server, DCC_FILE_RECV, (unsigned long) atol (pos_addr),
- atoi (pos_port), host, pos_file, (unsigned int) atoi (pos_size));
+ atoi (pos_port), host, -1, pos_file, NULL,
+ (unsigned long) atol (pos_size));
return 0;
}
@@ -1251,9 +1252,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
if (!ptr_channel)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot create new private window \"%s\"\n"),
- WEECHAT_ERROR, host);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot create new private window \"%s\"\n"),
+ WEECHAT_ERROR, host);
return -1;
}
}
@@ -1323,9 +1324,9 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot parse \"%s\" command\n"),
- WEECHAT_ERROR, "privmsg");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot parse \"%s\" command\n"),
+ WEECHAT_ERROR, "privmsg");
return -1;
}
}
@@ -1347,9 +1348,9 @@ irc_cmd_recv_quit (t_irc_server *server, char *host, char *arguments)
if (host == NULL)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command received without host\n"),
- WEECHAT_ERROR, "quit");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command received without host\n"),
+ WEECHAT_ERROR, "quit");
return -1;
}
@@ -1500,9 +1501,9 @@ irc_cmd_recv_topic (t_irc_server *server, char *host, char *arguments)
if (!string_is_channel (arguments))
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command received without channel\n"),
- WEECHAT_ERROR, "topic");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command received without channel\n"),
+ WEECHAT_ERROR, "topic");
return -1;
}
@@ -2558,9 +2559,9 @@ irc_cmd_recv_332 (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s channel not found for \"%s\" command\n"),
- WEECHAT_ERROR, "332");
+ gui_printf_nolog (server->buffer,
+ _("%s channel not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "332");
return -1;
}
}
@@ -2568,9 +2569,9 @@ irc_cmd_recv_332 (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot identify channel for \"%s\" command\n"),
- WEECHAT_ERROR, "332");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot identify channel for \"%s\" command\n"),
+ WEECHAT_ERROR, "332");
return -1;
}
return 0;
@@ -2625,36 +2626,36 @@ irc_cmd_recv_333 (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s channel not found for \"%s\" command\n"),
- WEECHAT_ERROR, "333");
+ gui_printf_nolog (server->buffer,
+ _("%s channel not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "333");
return -1;
}
}
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot identify date/time for \"%s\" command\n"),
- WEECHAT_ERROR, "333");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot identify date/time for \"%s\" command\n"),
+ WEECHAT_ERROR, "333");
return -1;
}
}
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot identify nickname for \"%s\" command\n"),
- WEECHAT_ERROR, "333");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot identify nickname for \"%s\" command\n"),
+ WEECHAT_ERROR, "333");
return -1;
}
}
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot identify channel for \"%s\" command\n"),
- WEECHAT_ERROR, "333");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot identify channel for \"%s\" command\n"),
+ WEECHAT_ERROR, "333");
return -1;
}
return 0;
@@ -2862,9 +2863,9 @@ irc_cmd_recv_353 (t_irc_server *server, char *host, char *arguments)
if (pos[0] != ':')
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot parse \"%s\" command\n"),
- WEECHAT_ERROR, "353");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot parse \"%s\" command\n"),
+ WEECHAT_ERROR, "353");
return -1;
}
pos++;
@@ -2908,9 +2909,9 @@ irc_cmd_recv_353 (t_irc_server *server, char *host, char *arguments)
is_op, is_halfop, has_voice))
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot create nick \"%s\" for channel \"%s\"\n"),
- WEECHAT_ERROR, pos_nick, ptr_channel->name);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot create nick \"%s\" for channel \"%s\"\n"),
+ WEECHAT_ERROR, pos_nick, ptr_channel->name);
}
}
}
@@ -2919,9 +2920,9 @@ irc_cmd_recv_353 (t_irc_server *server, char *host, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot parse \"%s\" command\n"),
- WEECHAT_ERROR, "353");
+ gui_printf_nolog (server->buffer,
+ _("%s cannot parse \"%s\" command\n"),
+ WEECHAT_ERROR, "353");
return -1;
}
return 0;
diff --git a/weechat/src/irc/irc-send.c b/weechat/src/irc/irc-send.c
index 6d5deee76..87dcd822b 100644
--- a/weechat/src/irc/irc-send.c
+++ b/weechat/src/irc/irc-send.c
@@ -252,14 +252,46 @@ irc_cmd_send_ctcp (t_irc_server *server, char *arguments)
int
irc_cmd_send_dcc (t_irc_server *server, char *arguments)
{
- /* TODO: write this command! */
+ char *pos_nick, *pos_file;
- /* make gcc happy */
- (void) server;
- (void) arguments;
+ /* TODO: develop DCC CHAT */
- irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer, _("This command is not developed!\n"));
+ /* DCC SEND file */
+ if (strncasecmp (arguments, "send", 4) == 0)
+ {
+ pos_nick = strchr (arguments, ' ');
+ if (!pos_nick)
+ {
+ irc_display_prefix (server->buffer, PREFIX_ERROR);
+ gui_printf_nolog (server->buffer,
+ _("%s wrong argument count for \"%s\" command\n"),
+ WEECHAT_ERROR, "dcc send");
+ return -1;
+ }
+ while (pos_nick[0] == ' ')
+ pos_nick++;
+ pos_file = strchr (pos_nick, ' ');
+ if (!pos_file)
+ {
+ irc_display_prefix (server->buffer, PREFIX_ERROR);
+ gui_printf_nolog (server->buffer,
+ _("%s wrong argument count for \"%s\" command\n"),
+ WEECHAT_ERROR, "dcc send");
+ return -1;
+ }
+ pos_file[0] = '\0';
+ pos_file++;
+ while (pos_file[0] == ' ')
+ pos_file++;
+
+ dcc_send (server, pos_nick, pos_file);
+ }
+ else if (strncasecmp (arguments, "chat", 4) == 0)
+ {
+ irc_display_prefix (server->buffer, PREFIX_ERROR);
+ gui_printf_nolog (server->buffer, _("This command is not developed!\n"));
+ return 0;
+ }
return 0;
}
@@ -283,9 +315,9 @@ irc_cmd_send_deop (t_irc_server *server, int argc, char **argv)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can only be executed in a channel window\n"),
- WEECHAT_ERROR, "deop");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can only be executed in a channel window\n"),
+ WEECHAT_ERROR, "deop");
}
return 0;
}
@@ -309,9 +341,9 @@ irc_cmd_send_devoice (t_irc_server *server, int argc, char **argv)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can only be executed in a channel window\n"),
- WEECHAT_ERROR, "devoice");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can only be executed in a channel window\n"),
+ WEECHAT_ERROR, "devoice");
return -1;
}
return 0;
@@ -410,9 +442,9 @@ irc_cmd_send_kick (t_irc_server *server, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can only be executed in a channel window\n"),
- WEECHAT_ERROR, "kick");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can only be executed in a channel window\n"),
+ WEECHAT_ERROR, "kick");
return -1;
}
}
@@ -520,9 +552,9 @@ irc_cmd_send_me (t_irc_server *server, char *arguments)
if (BUFFER_IS_SERVER(gui_current_window->buffer))
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can not be executed on a server window\n"),
- WEECHAT_ERROR, "me");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can not be executed on a server window\n"),
+ WEECHAT_ERROR, "me");
return -1;
}
irc_send_me (server, CHANNEL(gui_current_window->buffer), arguments);
@@ -587,9 +619,9 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
if (BUFFER_IS_SERVER(gui_current_window->buffer))
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can not be executed on a server window\n"),
- WEECHAT_ERROR, "msg *");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can not be executed on a server window\n"),
+ WEECHAT_ERROR, "msg *");
return -1;
}
ptr_channel = CHANNEL(gui_current_window->buffer);
@@ -605,9 +637,9 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s nick not found for \"%s\" command\n"),
- WEECHAT_ERROR, "msg");
+ gui_printf_nolog (server->buffer,
+ _("%s nick not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "msg");
}
server_sendf (server, "PRIVMSG %s :%s\r\n", ptr_channel->name, pos);
}
@@ -630,9 +662,9 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s nick not found for \"%s\" command\n"),
- WEECHAT_ERROR, "msg");
+ gui_printf_nolog (server->buffer,
+ _("%s nick not found for \"%s\" command\n"),
+ WEECHAT_ERROR, "msg");
}
}
server_sendf (server, "PRIVMSG %s :%s\r\n", arguments, pos);
@@ -682,10 +714,9 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
if (!ptr_channel)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot create new private window \"%s\"\n"),
- WEECHAT_ERROR,
- arguments);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot create new private window \"%s\"\n"),
+ WEECHAT_ERROR, arguments);
return -1;
}
gui_draw_buffer_title (ptr_channel->buffer, 1);
@@ -713,9 +744,9 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s wrong argument count for \"%s\" command\n"),
- WEECHAT_ERROR, "msg");
+ gui_printf_nolog (server->buffer,
+ _("%s wrong argument count for \"%s\" command\n"),
+ WEECHAT_ERROR, "msg");
return -1;
}
return 0;
@@ -735,9 +766,9 @@ irc_cmd_send_names (t_irc_server *server, char *arguments)
if (!BUFFER_IS_CHANNEL(gui_current_window->buffer))
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can only be executed in a channel window\n"),
- WEECHAT_ERROR, "names");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can only be executed in a channel window\n"),
+ WEECHAT_ERROR, "names");
return -1;
}
else
@@ -787,9 +818,9 @@ irc_cmd_send_notice (t_irc_server *server, char *arguments)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s wrong argument count for \"%s\" command\n"),
- WEECHAT_ERROR, "notice");
+ gui_printf_nolog (server->buffer,
+ _("%s wrong argument count for \"%s\" command\n"),
+ WEECHAT_ERROR, "notice");
return -1;
}
return 0;
@@ -814,9 +845,9 @@ irc_cmd_send_op (t_irc_server *server, int argc, char **argv)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can only be executed in a channel window\n"),
- WEECHAT_ERROR, "op");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can only be executed in a channel window\n"),
+ WEECHAT_ERROR, "op");
return -1;
}
return 0;
@@ -862,9 +893,9 @@ irc_cmd_send_part (t_irc_server *server, char *arguments)
if (BUFFER_IS_SERVER(gui_current_window->buffer))
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can not be executed on a server window\n"),
- WEECHAT_ERROR, "part");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can not be executed on a server window\n"),
+ WEECHAT_ERROR, "part");
return -1;
}
channel_name = CHANNEL(gui_current_window->buffer)->name;
@@ -876,9 +907,9 @@ irc_cmd_send_part (t_irc_server *server, char *arguments)
if (BUFFER_IS_SERVER(gui_current_window->buffer))
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can not be executed on a server window\n"),
- WEECHAT_ERROR, "part");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can not be executed on a server window\n"),
+ WEECHAT_ERROR, "part");
return -1;
}
if (BUFFER_IS_PRIVATE(gui_current_window->buffer))
@@ -960,10 +991,9 @@ irc_cmd_send_query (t_irc_server *server, char *arguments)
if (!ptr_channel)
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s cannot create new private window \"%s\"\n"),
- WEECHAT_ERROR,
- arguments);
+ gui_printf_nolog (server->buffer,
+ _("%s cannot create new private window \"%s\"\n"),
+ WEECHAT_ERROR, arguments);
return -1;
}
gui_draw_buffer_title (ptr_channel->buffer, 1);
@@ -1209,9 +1239,9 @@ irc_cmd_send_topic (t_irc_server *server, char *arguments)
if (BUFFER_IS_SERVER(gui_current_window->buffer))
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can not be executed on a server window\n"),
- WEECHAT_ERROR, "topic");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can not be executed on a server window\n"),
+ WEECHAT_ERROR, "topic");
return -1;
}
channel_name = CHANNEL(gui_current_window->buffer)->name;
@@ -1315,9 +1345,9 @@ irc_cmd_send_voice (t_irc_server *server, int argc, char **argv)
else
{
irc_display_prefix (server->buffer, PREFIX_ERROR);
- gui_printf (server->buffer,
- _("%s \"%s\" command can only be executed in a channel window\n"),
- WEECHAT_ERROR, "voice");
+ gui_printf_nolog (server->buffer,
+ _("%s \"%s\" command can only be executed in a channel window\n"),
+ WEECHAT_ERROR, "voice");
return -1;
}
return 0;
diff --git a/weechat/src/irc/irc-server.c b/weechat/src/irc/irc-server.c
index 781ce79a7..2edf085d2 100644
--- a/weechat/src/irc/irc-server.c
+++ b/weechat/src/irc/irc-server.c
@@ -527,8 +527,7 @@ server_msgq_flush ()
t_irc_message *next;
char *entire_line, *ptr_data, *pos, *pos2;
char *host, *command, *args;
-
- /* TODO: optimize this function, parse only a few messages (for low CPU time!) */
+
while (recv_msgq)
{
if (recv_msgq->data)
@@ -596,7 +595,7 @@ server_msgq_flush ()
irc_display_prefix (recv_msgq->server->buffer, PREFIX_ERROR);
gui_printf (recv_msgq->server->buffer,
_("%s Unknown command: cmd=%s, args=%s\n"),
- WEECHAT_ERROR, command, args);
+ WEECHAT_WARNING, command, args);
break;
}
diff --git a/weechat/src/irc/irc.h b/weechat/src/irc/irc.h
index d0aef2aac..e48ff289c 100644
--- a/weechat/src/irc/irc.h
+++ b/weechat/src/irc/irc.h
@@ -191,9 +191,9 @@ struct t_irc_message
/* DCC */
-typedef struct t_dcc t_dcc;
+typedef struct t_irc_dcc t_irc_dcc;
-struct t_dcc
+struct t_irc_dcc
{
t_irc_server *server; /* irc server */
int type; /* DCC type (send or receive) */
@@ -208,15 +208,16 @@ struct t_dcc
int filename_suffix; /* suffix (.1 for ex) if renaming file */
unsigned long size; /* file size */
unsigned long pos; /* number of bytes received/sent */
- t_dcc *prev_dcc; /* link to previous dcc file/chat */
- t_dcc *next_dcc; /* link to next dcc file/chat */
+ unsigned long ack; /* number of bytes received OK */
+ t_irc_dcc *prev_dcc; /* link to previous dcc file/chat */
+ t_irc_dcc *next_dcc; /* link to next dcc file/chat */
};
extern t_irc_command irc_commands[];
extern t_irc_server *irc_servers;
extern t_irc_message *recv_msgq, *msgq_last_msg;
extern int check_away;
-extern t_dcc *dcc_list;
+extern t_irc_dcc *dcc_list;
extern char *dcc_status_string[6];
extern char *channel_modes;
@@ -271,13 +272,13 @@ extern void nick_set_away (t_irc_channel *, t_irc_nick *, int);
/* DCC functions (irc-dcc.c) */
-extern void dcc_send ();
-extern void dcc_free (t_dcc *);
-extern void dcc_close (t_dcc *, int);
-extern void dcc_accept (t_dcc *);
-extern t_dcc *dcc_add (t_irc_server *, int, unsigned long, int, char *, char *,
- unsigned int);
+extern void dcc_free (t_irc_dcc *);
+extern void dcc_close (t_irc_dcc *, int);
+extern void dcc_accept (t_irc_dcc *);
+extern t_irc_dcc *dcc_add (t_irc_server *, int, unsigned long, int, char *, int,
+ char *, char *, unsigned long);
extern void dcc_handle ();
+extern void dcc_send (t_irc_server *, char *, char *);
extern void dcc_end ();
/* IRC display (irc-diplay.c) */