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 \n" "Language-Team: weechat-dev \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 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 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:351 -msgid ") from " -msgstr ") de " +#: 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:356 -msgid ": ok!\n" -msgstr ": ok!\n" +#: 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:382 +#: 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: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 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 \n" "Language-Team: LANGUAGE \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:351 -msgid ") from " +#: src/irc/irc-dcc.c:415 +#, c-format +msgid "%s cannot access file \"%s\"\n" msgstr "" -#: src/irc/irc-dcc.c:356 -msgid ": ok!\n" +#: src/irc/irc-dcc.c:434 +#, c-format +msgid "%s cannot create socket for DCC\n" msgstr "" -#: src/irc/irc-dcc.c:382 +#: 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: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 -msgid "automatically rename dcc files if already exists" -msgstr "" - -#: src/common/weeconfig.c:566 -msgid "rename incoming files if already exists (add '.1', '.2', ...)" -msgstr "" - -#: src/common/weeconfig.c:569 -msgid "automatically resume aborted transfers" +#: 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:571 +msgid "rename incoming files if already exists (add '.1', '.2', ...)" +msgstr "" + +#: src/common/weeconfig.c:574 +msgid "automatically resume aborted transfers" +msgstr "" + +#: 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 #include #include +#include #include #include #include @@ -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); @@ -298,6 +357,151 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic return new_dcc; } +/* + * 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 */ @@ -305,61 +509,147 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic 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_ACTIVE) + if (ptr_dcc->status == DCC_CONNECTING) { - if (ptr_dcc->type == DCC_FILE_RECV) + if (ptr_dcc->type == DCC_FILE_SEND) { - num = recv (ptr_dcc->sock, buffer, sizeof (buffer), 0); - if (num != -1) + 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 (num == 0) + if (FD_ISSET (ptr_dcc->sock, &read_fd)) { - dcc_close (ptr_dcc, DCC_FAILED); - dcc_redraw (1); - } - else - { - if (write (ptr_dcc->file, buffer, num) == -1) + 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->pos += (unsigned long) num; - pos = htonl (ptr_dcc->pos); - send (ptr_dcc->sock, (char *) &pos, 4, 0); - if (ptr_dcc->pos >= ptr_dcc->size) + 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_read = recv (ptr_dcc->sock, buffer, sizeof (buffer), 0); + if (num_read != -1) + { + 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 (num_read == 0) + { + dcc_close (ptr_dcc, DCC_FAILED); + dcc_redraw (1); + return; + } + 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 \n" "Language-Team: weechat-dev \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 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 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:351 -msgid ") from " -msgstr ") de " +#: 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:356 -msgid ": ok!\n" -msgstr ": ok!\n" +#: 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:382 +#: 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: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 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 \n" "Language-Team: LANGUAGE \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:351 -msgid ") from " +#: src/irc/irc-dcc.c:415 +#, c-format +msgid "%s cannot access file \"%s\"\n" msgstr "" -#: src/irc/irc-dcc.c:356 -msgid ": ok!\n" +#: src/irc/irc-dcc.c:434 +#, c-format +msgid "%s cannot create socket for DCC\n" msgstr "" -#: src/irc/irc-dcc.c:382 +#: 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: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 -msgid "automatically rename dcc files if already exists" -msgstr "" - -#: src/common/weeconfig.c:566 -msgid "rename incoming files if already exists (add '.1', '.2', ...)" -msgstr "" - -#: src/common/weeconfig.c:569 -msgid "automatically resume aborted transfers" +#: 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:571 +msgid "rename incoming files if already exists (add '.1', '.2', ...)" +msgstr "" + +#: src/common/weeconfig.c:574 +msgid "automatically resume aborted transfers" +msgstr "" + +#: 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 #include #include +#include #include #include #include @@ -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); @@ -298,6 +357,151 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic return new_dcc; } +/* + * 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 */ @@ -305,61 +509,147 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic 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_ACTIVE) + if (ptr_dcc->status == DCC_CONNECTING) { - if (ptr_dcc->type == DCC_FILE_RECV) + if (ptr_dcc->type == DCC_FILE_SEND) { - num = recv (ptr_dcc->sock, buffer, sizeof (buffer), 0); - if (num != -1) + 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 (num == 0) + if (FD_ISSET (ptr_dcc->sock, &read_fd)) { - dcc_close (ptr_dcc, DCC_FAILED); - dcc_redraw (1); - } - else - { - if (write (ptr_dcc->file, buffer, num) == -1) + 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->pos += (unsigned long) num; - pos = htonl (ptr_dcc->pos); - send (ptr_dcc->sock, (char *) &pos, 4, 0); - if (ptr_dcc->pos >= ptr_dcc->size) + 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_read = recv (ptr_dcc->sock, buffer, sizeof (buffer), 0); + if (num_read != -1) + { + 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 (num_read == 0) + { + dcc_close (ptr_dcc, DCC_FAILED); + dcc_redraw (1); + return; + } + 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) */