1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-28 13:56:37 +02:00

Many improvements on IRC raw buffer

New features:
- key alt-j alt-r is reintroduced to open IRC raw buffer
- command "/server raw" opens IRC raw buffer
- new option irc.look.raw_messages, which is number of lines to keep in memory
to display when user will open raw buffer (to see last messages received before
opening raw buffer)
This commit is contained in:
Sebastien Helleu
2009-03-19 17:25:36 +01:00
parent cefb8a50f2
commit a0f6b6eda6
22 changed files with 475 additions and 199 deletions
+2
View File
@@ -131,6 +131,8 @@
./src/plugins/irc/irc-nick.h
./src/plugins/irc/irc-protocol.c
./src/plugins/irc/irc-protocol.h
./src/plugins/irc/irc-raw.c
./src/plugins/irc/irc-raw.h
./src/plugins/irc/irc-server.c
./src/plugins/irc/irc-server.h
./src/plugins/jabber/jabber-bar-item.c
+12 -6
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2009-03-17 15:38+0100\n"
"POT-Creation-Date: 2009-03-19 10:07+0100\n"
"PO-Revision-Date: 2009-01-03 00:42+0100\n"
"Last-Translator: Jiri Golembiovsky <golemj@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -3141,7 +3141,7 @@ msgid ""
"[list [servername]] | [listfull [servername]] | [add servername hostname[/"
"port] [-auto | -noauto] [-ipv6] [-ssl]] | [copy servername newservername] | "
"[rename servername newservername] | [keep servername] | [del servername] | "
"[deloutq] | [switch]"
"[deloutq] | [raw] | [switch]"
msgstr ""
"[list [jméno_serveru]] | [listfull [jméno_serveru]] | [add jméno_serveru "
"jméno_hosta [-port port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd "
@@ -3169,6 +3169,7 @@ msgid ""
" del: delete a server\n"
" deloutq: delete messages out queue for all servers (all messages WeeChat "
"is currently sending)\n"
" raw: open buffer with raw IRC data\n"
" switch: switch active server (when one buffer is used for all servers, "
"default key: alt-s on server buffer)\n"
"\n"
@@ -3535,6 +3536,11 @@ msgstr ""
"čárkami oddělený seznam tagů pro zprávy, které mohou vyprodukovat zvýraznění "
"(obvykle jakákoliv zpráva od jiného uživatele, ne zprávy serveru,...)"
msgid ""
"number of IRC raw messages to save in memory when raw buffer is closed "
"(messages will be displayed when opening raw buffer)"
msgstr ""
msgid "show remote away message only once in private"
msgstr "zobrazit vzdálený zprávu o nepřítomnosti pouze jednou v soukromém okně"
@@ -3620,10 +3626,6 @@ msgstr ""
msgid "send unknown commands to server"
msgstr "poslat neznámý příkaz na IRC server"
#, fuzzy
msgid "IRC debug messages"
msgstr "vypsat debug zprávy"
#, fuzzy, c-format
msgid "%sServer: %s%s %s[%s%s%s]%s%s"
msgstr "%sServer: %s%s %s[%s%s%s]\n"
@@ -3998,6 +4000,10 @@ msgstr ""
msgid "%s%s: \"%s\" command received without host"
msgstr "%s \"%s\" příkaz obdržen bez hosta\n"
#, fuzzy
msgid "IRC raw messages"
msgstr "vypsat debug zprávy"
#, fuzzy, c-format
msgid "%s%s: error when allocating new server"
msgstr "%s nemůžu přidělit nový server\n"
+12 -6
View File
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2009-03-17 15:38+0100\n"
"POT-Creation-Date: 2009-03-19 10:07+0100\n"
"PO-Revision-Date: 2009-01-03 00:42+0100\n"
"Last-Translator: Thomas Schuetz <i18n@internet-villa.de>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -3144,7 +3144,7 @@ msgid ""
"[list [servername]] | [listfull [servername]] | [add servername hostname[/"
"port] [-auto | -noauto] [-ipv6] [-ssl]] | [copy servername newservername] | "
"[rename servername newservername] | [keep servername] | [del servername] | "
"[deloutq] | [switch]"
"[deloutq] | [raw] | [switch]"
msgstr ""
"[Servername] | [Servername Hostname Port [-auto | -noauto] [-ipv6] [-ssl] [-"
"pwd Passwort] [-nicks Nick1 Nick2 Nick3] [-username Benutzername] [-realname "
@@ -3168,6 +3168,7 @@ msgid ""
" del: delete a server\n"
" deloutq: delete messages out queue for all servers (all messages WeeChat "
"is currently sending)\n"
" raw: open buffer with raw IRC data\n"
" switch: switch active server (when one buffer is used for all servers, "
"default key: alt-s on server buffer)\n"
"\n"
@@ -3517,6 +3518,11 @@ msgid ""
"(usually any message from another user, not server messages,..)"
msgstr ""
msgid ""
"number of IRC raw messages to save in memory when raw buffer is closed "
"(messages will be displayed when opening raw buffer)"
msgstr ""
msgid "show remote away message only once in private"
msgstr ""
"in privaten Unterhaltungen nur einmalig eine Abwesenheitsnachricht anzeigen"
@@ -3603,10 +3609,6 @@ msgstr ""
msgid "send unknown commands to server"
msgstr "sende unbekannte Befehle an den IRC-Server"
#, fuzzy
msgid "IRC debug messages"
msgstr "Debugging-Nachricht ausgeben"
#, fuzzy, c-format
msgid "%sServer: %s%s %s[%s%s%s]%s%s"
msgstr "%sServer: %s%s %s[%s%s%s]\n"
@@ -3979,6 +3981,10 @@ msgstr ""
msgid "%s%s: \"%s\" command received without host"
msgstr "%s \"%s\"-Befehl empfangen ohne Host\n"
#, fuzzy
msgid "IRC raw messages"
msgstr "Debugging-Nachricht ausgeben"
#, fuzzy, c-format
msgid "%s%s: error when allocating new server"
msgstr "%s Neuer Server konnte nicht alloziert werden\n"
+12 -6
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2009-03-17 15:38+0100\n"
"POT-Creation-Date: 2009-03-19 10:07+0100\n"
"PO-Revision-Date: 2009-01-03 00:42+0100\n"
"Last-Translator: Roberto González Cardenete <robert.glez@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -3127,7 +3127,7 @@ msgid ""
"[list [servername]] | [listfull [servername]] | [add servername hostname[/"
"port] [-auto | -noauto] [-ipv6] [-ssl]] | [copy servername newservername] | "
"[rename servername newservername] | [keep servername] | [del servername] | "
"[deloutq] | [switch]"
"[deloutq] | [raw] | [switch]"
msgstr ""
"[nombre_de_servidor] | [nombre_de_servidor nombre/IP puerto [-auto | -"
"noauto] [-ipv6] [-ssl] [-pwd contraseña] [-nicks alias1 alias2 alias3] [-"
@@ -3152,6 +3152,7 @@ msgid ""
" del: delete a server\n"
" deloutq: delete messages out queue for all servers (all messages WeeChat "
"is currently sending)\n"
" raw: open buffer with raw IRC data\n"
" switch: switch active server (when one buffer is used for all servers, "
"default key: alt-s on server buffer)\n"
"\n"
@@ -3504,6 +3505,11 @@ msgid ""
"(usually any message from another user, not server messages,..)"
msgstr ""
msgid ""
"number of IRC raw messages to save in memory when raw buffer is closed "
"(messages will be displayed when opening raw buffer)"
msgstr ""
msgid "show remote away message only once in private"
msgstr ""
"mostrar mensaje de ausencia remota únicamente una vez se está en privado"
@@ -3591,10 +3597,6 @@ msgstr ""
msgid "send unknown commands to server"
msgstr "nombre de usuario para el servidor IRC"
#, fuzzy
msgid "IRC debug messages"
msgstr "imprime mensajes de depuración"
#, fuzzy, c-format
msgid "%sServer: %s%s %s[%s%s%s]%s%s"
msgstr "%sServidor:%s%s %s[%s%s%s]\n"
@@ -3969,6 +3971,10 @@ msgstr ""
msgid "%s%s: \"%s\" command received without host"
msgstr "%s comando \"%s\" recibido sin host \n"
#, fuzzy
msgid "IRC raw messages"
msgstr "imprime mensajes de depuración"
#, fuzzy, c-format
msgid "%s%s: error when allocating new server"
msgstr "%s no ha sido posible crear un nuevo servidor\n"
+14 -7
View File
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2009-03-17 15:38+0100\n"
"PO-Revision-Date: 2009-03-17 15:38+0100\n"
"POT-Creation-Date: 2009-03-19 10:07+0100\n"
"PO-Revision-Date: 2009-03-19 10:08+0100\n"
"Last-Translator: FlashCode <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"MIME-Version: 1.0\n"
@@ -3259,12 +3259,12 @@ msgid ""
"[list [servername]] | [listfull [servername]] | [add servername hostname[/"
"port] [-auto | -noauto] [-ipv6] [-ssl]] | [copy servername newservername] | "
"[rename servername newservername] | [keep servername] | [del servername] | "
"[deloutq] | [switch]"
"[deloutq] | [raw] | [switch]"
msgstr ""
"[list [nom_serveur]] | [listfull [nom_serveur]] | [add nom_serveur nom[/"
"port] [-temp] [-auto | -noauto] [-ipv6] [-ssl]] | [copy nom_serveur "
"nouveau_nom_serveur] | [rename nom_serveur nouveau_nom_serveur] | [keep "
"nom_serveur] | [del nom_serveur] | [deloutq] | [switch]"
"nom_serveur] | [del nom_serveur] | [deloutq] | [raw] | [switch]"
msgid ""
" list: list servers (no parameter implies this list)\n"
@@ -3283,6 +3283,7 @@ msgid ""
" del: delete a server\n"
" deloutq: delete messages out queue for all servers (all messages WeeChat "
"is currently sending)\n"
" raw: open buffer with raw IRC data\n"
" switch: switch active server (when one buffer is used for all servers, "
"default key: alt-s on server buffer)\n"
"\n"
@@ -3316,6 +3317,7 @@ msgstr ""
" deloutq: supprimer la file d'attente des messages sortants pour tous les "
"serveurs (tous les messages que WeeChat est actuellement en train "
"d'envoyer)\n"
" raw: ouvre le tampon avec les données brutes IRC\n"
" switch: changer le serveur actif (quand un tampon est utilisé pour tous "
"les serveurs, touche par défaut: alt-s sur le tampon serveur)\n"
"\n"
@@ -3651,6 +3653,11 @@ msgstr ""
"par des virgules, typiquement tout message venant d'un autre utilisateur, "
"pas les messages du serveur, ...)"
msgid ""
"number of IRC raw messages to save in memory when raw buffer is closed "
"(messages will be displayed when opening raw buffer)"
msgstr "nombre de messages IRC bruts à sauvegarder en mémoire lorsque le tampon des données brutes est fermé (ces messages seront affichés lors de l'ouverture du tampon des données brutes)"
msgid "show remote away message only once in private"
msgstr "voir le message d'absence distant une seule fois en privé"
@@ -3737,9 +3744,6 @@ msgstr ""
msgid "send unknown commands to server"
msgstr "envoie les commandes inconnues au serveur"
msgid "IRC debug messages"
msgstr "Messages de debug IRC"
#, c-format
msgid "%sServer: %s%s %s[%s%s%s]%s%s"
msgstr "%sServeur: %s%s %s[%s%s%s]%s%s"
@@ -4111,6 +4115,9 @@ msgstr ""
msgid "%s%s: \"%s\" command received without host"
msgstr "%s%s: commande \"%s\" reçue sans hôte"
msgid "IRC raw messages"
msgstr "Messages bruts IRC"
#, c-format
msgid "%s%s: error when allocating new server"
msgstr "%s%s: impossible d'allouer un nouveau serveur"
+12 -6
View File
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2009-03-17 15:38+0100\n"
"POT-Creation-Date: 2009-03-19 10:07+0100\n"
"PO-Revision-Date: 2009-01-03 00:42+0100\n"
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -3161,7 +3161,7 @@ msgid ""
"[list [servername]] | [listfull [servername]] | [add servername hostname[/"
"port] [-auto | -noauto] [-ipv6] [-ssl]] | [copy servername newservername] | "
"[rename servername newservername] | [keep servername] | [del servername] | "
"[deloutq] | [switch]"
"[deloutq] | [raw] | [switch]"
msgstr ""
"[list [szervernév]] | [listfull [szervernév]] | [add szervernév gépnév [-"
"port port] [-temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd jelszó] [-nicks "
@@ -3187,6 +3187,7 @@ msgid ""
" del: delete a server\n"
" deloutq: delete messages out queue for all servers (all messages WeeChat "
"is currently sending)\n"
" raw: open buffer with raw IRC data\n"
" switch: switch active server (when one buffer is used for all servers, "
"default key: alt-s on server buffer)\n"
"\n"
@@ -3552,6 +3553,11 @@ msgid ""
"(usually any message from another user, not server messages,..)"
msgstr ""
msgid ""
"number of IRC raw messages to save in memory when raw buffer is closed "
"(messages will be displayed when opening raw buffer)"
msgstr ""
msgid "show remote away message only once in private"
msgstr "privát beszélgetésben a másik fél távollétét csak egyszer jelezze"
@@ -3631,10 +3637,6 @@ msgstr ""
msgid "send unknown commands to server"
msgstr "ismeretlen parancsok küldése az IRC szervernek"
#, fuzzy
msgid "IRC debug messages"
msgstr "hibakereső üzenetek megjelenítése"
#, fuzzy, c-format
msgid "%sServer: %s%s %s[%s%s%s]%s%s"
msgstr "%s Szerver: %s%s %s[%s%s%s]\n"
@@ -4003,6 +4005,10 @@ msgstr ""
msgid "%s%s: \"%s\" command received without host"
msgstr "%s \"%s\" parancs érkezett hoszt megadása nélkül\n"
#, fuzzy
msgid "IRC raw messages"
msgstr "hibakereső üzenetek megjelenítése"
#, fuzzy, c-format
msgid "%s%s: error when allocating new server"
msgstr "%s az új szerver lefoglalása sikertelen\n"
+12 -6
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2009-03-17 15:38+0100\n"
"POT-Creation-Date: 2009-03-19 10:07+0100\n"
"PO-Revision-Date: 2009-01-03 00:42+0100\n"
"Last-Translator: Pavel Shevchuk <stlwrt@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -3161,7 +3161,7 @@ msgid ""
"[list [servername]] | [listfull [servername]] | [add servername hostname[/"
"port] [-auto | -noauto] [-ipv6] [-ssl]] | [copy servername newservername] | "
"[rename servername newservername] | [keep servername] | [del servername] | "
"[deloutq] | [switch]"
"[deloutq] | [raw] | [switch]"
msgstr ""
"[list [сервер]] | [listfull [сервер]] | [add сервер адрес [-port порт] [-"
"temp] [-auto | -noauto] [-ipv6] [-ssl] [-pwd пароль] [-nicks ник1 ник2 ник3] "
@@ -3187,6 +3187,7 @@ msgid ""
" del: delete a server\n"
" deloutq: delete messages out queue for all servers (all messages WeeChat "
"is currently sending)\n"
" raw: open buffer with raw IRC data\n"
" switch: switch active server (when one buffer is used for all servers, "
"default key: alt-s on server buffer)\n"
"\n"
@@ -3545,6 +3546,11 @@ msgid ""
"(usually any message from another user, not server messages,..)"
msgstr ""
msgid ""
"number of IRC raw messages to save in memory when raw buffer is closed "
"(messages will be displayed when opening raw buffer)"
msgstr ""
msgid "show remote away message only once in private"
msgstr "отображать уведомление об отсутствии единожды в привате"
@@ -3624,10 +3630,6 @@ msgstr ""
msgid "send unknown commands to server"
msgstr "отсылать неизвестные команды IRC серверу"
#, fuzzy
msgid "IRC debug messages"
msgstr "выводить отладочные сообщения"
#, fuzzy, c-format
msgid "%sServer: %s%s %s[%s%s%s]%s%s"
msgstr "%sСервер: %s%s %s[%s%s%s]\n"
@@ -3995,6 +3997,10 @@ msgstr ""
msgid "%s%s: \"%s\" command received without host"
msgstr "%s \"%s\" команда получена без хоста\n"
#, fuzzy
msgid "IRC raw messages"
msgstr "выводить отладочные сообщения"
#, fuzzy, c-format
msgid "%s%s: error when allocating new server"
msgstr "%s не могу расположить новый сервер\n"
+2
View File
@@ -132,6 +132,8 @@ SET(WEECHAT_SOURCES
./src/plugins/irc/irc-nick.h
./src/plugins/irc/irc-protocol.c
./src/plugins/irc/irc-protocol.h
./src/plugins/irc/irc-raw.c
./src/plugins/irc/irc-raw.h
./src/plugins/irc/irc-server.c
./src/plugins/irc/irc-server.h
./src/plugins/jabber/jabber-bar-item.c
+11 -5
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2009-03-17 15:38+0100\n"
"POT-Creation-Date: 2009-03-19 10:07+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -2709,7 +2709,7 @@ msgid ""
"[list [servername]] | [listfull [servername]] | [add servername hostname[/"
"port] [-auto | -noauto] [-ipv6] [-ssl]] | [copy servername newservername] | "
"[rename servername newservername] | [keep servername] | [del servername] | "
"[deloutq] | [switch]"
"[deloutq] | [raw] | [switch]"
msgstr ""
msgid ""
@@ -2729,6 +2729,7 @@ msgid ""
" del: delete a server\n"
" deloutq: delete messages out queue for all servers (all messages WeeChat "
"is currently sending)\n"
" raw: open buffer with raw IRC data\n"
" switch: switch active server (when one buffer is used for all servers, "
"default key: alt-s on server buffer)\n"
"\n"
@@ -3016,6 +3017,11 @@ msgid ""
"(usually any message from another user, not server messages,..)"
msgstr ""
msgid ""
"number of IRC raw messages to save in memory when raw buffer is closed "
"(messages will be displayed when opening raw buffer)"
msgstr ""
msgid "show remote away message only once in private"
msgstr ""
@@ -3082,9 +3088,6 @@ msgstr ""
msgid "send unknown commands to server"
msgstr ""
msgid "IRC debug messages"
msgstr ""
#, c-format
msgid "%sServer: %s%s %s[%s%s%s]%s%s"
msgstr ""
@@ -3440,6 +3443,9 @@ msgstr ""
msgid "%s%s: \"%s\" command received without host"
msgstr ""
msgid "IRC raw messages"
msgstr ""
#, c-format
msgid "%s%s: error when allocating new server"
msgstr ""
+1
View File
@@ -93,6 +93,7 @@ gui_keyboard_default_bindings ()
gui_keyboard_bind (NULL, /* m-a */ "meta-a", "/input jump_smart");
gui_keyboard_bind (NULL, /* m-j,m-l */ "meta-jmeta-l", "/input jump_last_buffer");
gui_keyboard_bind (NULL, /* m-j,m-p */ "meta-jmeta-p", "/input jump_previous_buffer");
gui_keyboard_bind (NULL, /* m-j,m-r */ "meta-jmeta-r", "/server raw");
gui_keyboard_bind (NULL, /* m-h */ "meta-h", "/input hotlist_clear");
gui_keyboard_bind (NULL, /* m-k */ "meta-k", "/input grab_key");
gui_keyboard_bind (NULL, /* m-u */ "meta-u", "/input scroll_unread");
+1
View File
@@ -31,6 +31,7 @@ irc-input.c irc-input.h
irc-mode.c irc-mode.h
irc-nick.c irc-nick.h
irc-protocol.c irc-protocol.h
irc-raw.c irc-raw.h
irc-server.c irc-server.h
irc-upgrade.c irc-upgrade.h)
SET_TARGET_PROPERTIES(irc PROPERTIES PREFIX "")
+2
View File
@@ -52,6 +52,8 @@ irc_la_SOURCES = irc.c \
irc-nick.h \
irc-protocol.c \
irc-protocol.h \
irc-raw.c \
irc-raw.h \
irc-server.c \
irc-server.h \
irc-upgrade.c \
+30 -22
View File
@@ -29,6 +29,7 @@
#include "irc-channel.h"
#include "irc-command.h"
#include "irc-config.h"
#include "irc-raw.h"
#include "irc-server.h"
@@ -285,37 +286,44 @@ irc_buffer_close_cb (void *data, struct t_gui_buffer *buffer)
/* make C compiler happy */
(void) data;
if (ptr_channel)
if (buffer == irc_raw_buffer)
{
/* send PART for channel if its buffer is closed */
if ((ptr_channel->type == IRC_CHANNEL_TYPE_CHANNEL)
&& (ptr_channel->nicks))
{
irc_command_part_channel (ptr_server, ptr_channel->name, NULL);
}
irc_channel_free (ptr_server, ptr_channel);
irc_raw_buffer = NULL;
}
else
{
if (ptr_server)
if (ptr_channel)
{
/* send PART on all channels for server, then disconnect from server */
ptr_channel = ptr_server->channels;
while (ptr_channel)
/* send PART for channel if its buffer is closed */
if ((ptr_channel->type == IRC_CHANNEL_TYPE_CHANNEL)
&& (ptr_channel->nicks))
{
next_channel = ptr_channel->next_channel;
weechat_buffer_close (ptr_channel->buffer);
ptr_channel = next_channel;
irc_command_part_channel (ptr_server, ptr_channel->name, NULL);
}
irc_server_disconnect (ptr_server, 0);
ptr_server->buffer = NULL;
irc_channel_free (ptr_server, ptr_channel);
}
else
{
if (ptr_server)
{
/* send PART on all channels for server, then disconnect from server */
ptr_channel = ptr_server->channels;
while (ptr_channel)
{
next_channel = ptr_channel->next_channel;
weechat_buffer_close (ptr_channel->buffer);
ptr_channel = next_channel;
}
irc_server_disconnect (ptr_server, 0);
ptr_server->buffer = NULL;
}
}
if (irc_buffer_servers == buffer)
irc_buffer_servers = NULL;
if (ptr_server && (irc_current_server == ptr_server))
irc_current_server = NULL;
}
if (irc_buffer_servers == buffer)
irc_buffer_servers = NULL;
if (ptr_server && (irc_current_server == ptr_server))
irc_current_server = NULL;
return WEECHAT_RC_OK;
}
+6
View File
@@ -22,6 +22,12 @@
#define IRC_BUFFER_ALL_SERVERS_NAME "servers"
#define IRC_BUFFER_RAW_NAME "irc_raw"
#define IRC_BUFFER_RAW_PREFIX_RECV "-->"
#define IRC_BUFFER_RAW_PREFIX_RECV_MOD "==>"
#define IRC_BUFFER_RAW_PREFIX_SEND "<--"
#define IRC_BUFFER_RAW_PREFIX_SEND_MOD "<=="
struct t_gui_buffer;
struct t_irc_server;
struct t_irc_channel;
+11 -3
View File
@@ -41,6 +41,7 @@
#include "irc-nick.h"
#include "irc-display.h"
#include "irc-ignore.h"
#include "irc-raw.h"
/*
@@ -3106,6 +3107,12 @@ irc_command_server (void *data, struct t_gui_buffer *buffer, int argc,
IRC_PLUGIN_NAME);
return WEECHAT_RC_OK;
}
if (weechat_strcasecmp (argv[1], "raw") == 0)
{
irc_raw_open (1);
return WEECHAT_RC_OK;
}
if (weechat_strcasecmp (argv[1], "switch") == 0)
{
@@ -4058,7 +4065,7 @@ irc_command_init ()
"[copy servername newservername] | "
"[rename servername newservername] | "
"[keep servername] | [del servername] | "
"[deloutq] | [switch]"),
"[deloutq] | [raw] | [switch]"),
N_(" list: list servers (no parameter implies "
"this list)\n"
" listfull: list servers with detailed info for "
@@ -4082,6 +4089,7 @@ irc_command_init ()
" deloutq: delete messages out queue for all "
"servers (all messages WeeChat is currently "
"sending)\n"
" raw: open buffer with raw IRC data\n"
" switch: switch active server (when one "
"buffer is used for all servers, default key: "
"alt-s on server buffer)\n\n"
@@ -4096,8 +4104,8 @@ irc_command_init ()
" /server del freenode\n"
" /server deloutq\n"
" /server switch"),
"add|copy|rename|keep|del|deloutq|list|listfull|switch "
"%(irc_servers) %(irc_servers)",
"add|copy|rename|keep|del|deloutq|list|listfull|"
"raw|switch %(irc_servers) %(irc_servers)",
&irc_command_server, NULL);
weechat_hook_command ("servlist",
N_("list services currently connected to the "
+7
View File
@@ -55,6 +55,7 @@ struct t_config_option *irc_config_look_display_old_topic;
struct t_config_option *irc_config_look_hide_nickserv_pwd;
struct t_config_option *irc_config_look_highlight_tags;
struct t_config_option *irc_config_look_notice_as_pv;
struct t_config_option *irc_config_look_raw_messages;
struct t_config_option *irc_config_look_show_away_once;
struct t_config_option *irc_config_look_smart_filter;
struct t_config_option *irc_config_look_smart_filter_delay;
@@ -1098,6 +1099,12 @@ irc_config_init ()
"messages,..)"),
NULL, 0, 0, "irc_privmsg,irc_notice", NULL, 0, NULL, NULL,
&irc_config_change_look_highlight_tags, NULL, NULL, NULL);
irc_config_look_raw_messages = weechat_config_new_option (
irc_config_file, ptr_section,
"raw_messages", "integer",
N_("number of IRC raw messages to save in memory when raw data buffer "
"is closed (messages will be displayed when opening raw data buffer)"),
NULL, 0, 65535, "256", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL);
irc_config_look_show_away_once = weechat_config_new_option (
irc_config_file, ptr_section,
"show_away_once", "boolean",
+1
View File
@@ -44,6 +44,7 @@ extern struct t_config_option *irc_config_look_display_old_topic;
extern struct t_config_option *irc_config_look_hide_nickserv_pwd;
extern struct t_config_option *irc_config_look_highlight_tags;
extern struct t_config_option *irc_config_look_notice_as_pv;
extern struct t_config_option *irc_config_look_raw_messages;
extern struct t_config_option *irc_config_look_show_away_once;
extern struct t_config_option *irc_config_look_smart_filter;
extern struct t_config_option *irc_config_look_smart_filter_delay;
-108
View File
@@ -28,114 +28,6 @@
#include "irc-server.h"
struct t_gui_buffer *irc_debug_buffer = NULL;
/*
* irc_debug_buffer_close_cb: callback called when IRC debug buffer is closed
*/
int
irc_debug_buffer_close_cb (void *data, struct t_gui_buffer *buffer)
{
/* make C compiler happy */
(void) data;
(void) buffer;
irc_debug_buffer = NULL;
return WEECHAT_RC_OK;
}
/*
* irc_debug_printf: print a message on IRC debug buffer
*/
void
irc_debug_printf (struct t_irc_server *server, int send, int modified,
const char *message)
{
char *buf, *buf2;
const unsigned char *ptr_buf;
const char *hexa = "0123456789ABCDEF";
int pos_buf, pos_buf2, char_size, i;
if (!weechat_irc_plugin->debug || !message)
return;
if (!irc_debug_buffer)
{
irc_debug_buffer = weechat_buffer_search ("irc", IRC_DEBUG_BUFFER_NAME);
if (!irc_debug_buffer)
{
irc_debug_buffer = weechat_buffer_new (IRC_DEBUG_BUFFER_NAME,
NULL, NULL,
&irc_debug_buffer_close_cb, NULL);
/* failed to create buffer ? then return */
if (!irc_debug_buffer)
return;
weechat_buffer_set (irc_debug_buffer,
"title", _("IRC debug messages"));
weechat_buffer_set (irc_debug_buffer, "short_name", IRC_DEBUG_BUFFER_NAME);
weechat_buffer_set (irc_debug_buffer, "localvar_set_type", "debug");
weechat_buffer_set (irc_debug_buffer, "localvar_set_server", IRC_DEBUG_BUFFER_NAME);
weechat_buffer_set (irc_debug_buffer, "localvar_set_channel", IRC_DEBUG_BUFFER_NAME);
weechat_buffer_set (irc_debug_buffer, "localvar_set_no_log", "1");
/* disabled all highlights on this debug buffer */
weechat_buffer_set (irc_debug_buffer, "highlight_words", "-");
}
}
buf = weechat_iconv_to_internal (NULL, message);
buf2 = malloc ((strlen (buf) * 3) + 1);
if (buf2)
{
ptr_buf = (buf) ? (unsigned char *)buf : (unsigned char *)message;
pos_buf = 0;
pos_buf2 = 0;
while (ptr_buf[pos_buf])
{
if (ptr_buf[pos_buf] < 32)
{
buf2[pos_buf2++] = '\\';
buf2[pos_buf2++] = hexa[ptr_buf[pos_buf] / 16];
buf2[pos_buf2++] = hexa[ptr_buf[pos_buf] % 16];
pos_buf++;
}
else
{
char_size = weechat_utf8_char_size ((const char *)(ptr_buf + pos_buf));
for (i = 0; i < char_size; i++)
{
buf2[pos_buf2++] = ptr_buf[pos_buf++];
}
}
}
buf2[pos_buf2] = '\0';
}
weechat_printf (irc_debug_buffer,
"%s%s%s%s%s\t%s",
(server) ? weechat_color ("chat_server") : "",
(server) ? server->name : "",
(server) ? " " : "",
(send) ?
weechat_color ("chat_prefix_quit") :
weechat_color ("chat_prefix_join"),
(send) ?
((modified) ? IRC_DEBUG_PREFIX_SEND_MOD : IRC_DEBUG_PREFIX_SEND) :
((modified) ? IRC_DEBUG_PREFIX_RECV_MOD : IRC_DEBUG_PREFIX_RECV),
(buf2) ? buf2 : ((buf) ? buf : message));
if (buf)
free (buf);
if (buf2)
free (buf2);
}
/*
* irc_debug_signal_debug_dump_cb: dump IRC data in WeeChat log file
*/
-11
View File
@@ -20,17 +20,6 @@
#ifndef __WEECHAT_IRC_DEBUG_H
#define __WEECHAT_IRC_DEBUG_H 1
#define IRC_DEBUG_BUFFER_NAME "irc_debug"
#define IRC_DEBUG_PREFIX_RECV "-->"
#define IRC_DEBUG_PREFIX_RECV_MOD "==>"
#define IRC_DEBUG_PREFIX_SEND "<--"
#define IRC_DEBUG_PREFIX_SEND_MOD "<=="
struct t_irc_server;
extern void irc_debug_printf (struct t_irc_server *server, int send,
int modified, const char *message);
extern void irc_debug_init ();
#endif /* irc-debug.h */
+267
View File
@@ -0,0 +1,267 @@
/*
* Copyright (c) 2003-2009 by FlashCode <flashcode@flashtux.org>
* See README for License detail, AUTHORS for developers list.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* irc-raw.c: functions for IRC raw data messages */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "../weechat-plugin.h"
#include "irc.h"
#include "irc-raw.h"
#include "irc-buffer.h"
#include "irc-config.h"
#include "irc-server.h"
struct t_gui_buffer *irc_raw_buffer = NULL;
int irc_raw_messages_count = 0;
struct t_irc_raw_message *irc_raw_messages = NULL;
struct t_irc_raw_message *last_irc_raw_message = NULL;
/*
* irc_raw_message_print: print an irc raw message
*/
void
irc_raw_message_print (struct t_irc_raw_message *raw_message)
{
if (irc_raw_buffer && raw_message)
{
weechat_printf_date_tags (irc_raw_buffer,
raw_message->date, NULL,
"%s\t%s",
raw_message->prefix,
raw_message->message);
}
}
/*
* irc_raw_open: open IRC raw buffer
*/
void
irc_raw_open (int switch_to_buffer)
{
struct t_irc_raw_message *ptr_raw_message;
if (!irc_raw_buffer)
{
irc_raw_buffer = weechat_buffer_search ("irc", IRC_RAW_BUFFER_NAME);
if (!irc_raw_buffer)
{
irc_raw_buffer = weechat_buffer_new (IRC_RAW_BUFFER_NAME,
NULL, NULL,
&irc_buffer_close_cb, NULL);
/* failed to create buffer ? then return */
if (!irc_raw_buffer)
return;
weechat_buffer_set (irc_raw_buffer,
"title", _("IRC raw messages"));
weechat_buffer_set (irc_raw_buffer, "short_name", IRC_RAW_BUFFER_NAME);
weechat_buffer_set (irc_raw_buffer, "localvar_set_type", "debug");
weechat_buffer_set (irc_raw_buffer, "localvar_set_server", IRC_RAW_BUFFER_NAME);
weechat_buffer_set (irc_raw_buffer, "localvar_set_channel", IRC_RAW_BUFFER_NAME);
weechat_buffer_set (irc_raw_buffer, "localvar_set_no_log", "1");
/* disabled all highlights on this debug buffer */
weechat_buffer_set (irc_raw_buffer, "highlight_words", "-");
if (switch_to_buffer)
weechat_buffer_set (irc_raw_buffer, "display", "1");
/* print messages in list */
for (ptr_raw_message = irc_raw_messages; ptr_raw_message;
ptr_raw_message = ptr_raw_message->next_message)
{
irc_raw_message_print (ptr_raw_message);
}
}
}
}
/*
* irc_raw_message_free: free a raw message and remove it from list
*/
void
irc_raw_message_free (struct t_irc_raw_message *raw_message)
{
struct t_irc_raw_message *new_raw_messages;
/* remove message from raw messages list */
if (last_irc_raw_message == raw_message)
last_irc_raw_message = raw_message->prev_message;
if (raw_message->prev_message)
{
(raw_message->prev_message)->next_message = raw_message->next_message;
new_raw_messages = irc_raw_messages;
}
else
new_raw_messages = raw_message->next_message;
if (raw_message->next_message)
(raw_message->next_message)->prev_message = raw_message->prev_message;
/* free data */
if (raw_message->prefix)
free (raw_message->prefix);
if (raw_message->message)
free (raw_message->message);
free (raw_message);
irc_raw_messages = new_raw_messages;
irc_raw_messages_count--;
}
/*
* irc_raw_message_free_all: free all raw messages
*/
void
irc_raw_message_free_all ()
{
while (irc_raw_messages)
{
irc_raw_message_free (irc_raw_messages);
}
}
/*
* irc_raw_message_add: add new message to list
*/
void
irc_raw_message_add (struct t_irc_server *server, int send, int modified,
const char *message)
{
char *buf, *buf2, prefix[256];
const unsigned char *ptr_buf;
const char *hexa = "0123456789ABCDEF";
int pos_buf, pos_buf2, char_size, i, max_messages;
struct t_irc_raw_message *new_raw_message;
max_messages = weechat_config_integer (irc_config_look_raw_messages);
buf = weechat_iconv_to_internal (NULL, message);
buf2 = malloc ((strlen (buf) * 3) + 1);
if (buf2)
{
ptr_buf = (buf) ? (unsigned char *)buf : (unsigned char *)message;
pos_buf = 0;
pos_buf2 = 0;
while (ptr_buf[pos_buf])
{
if (ptr_buf[pos_buf] < 32)
{
buf2[pos_buf2++] = '\\';
buf2[pos_buf2++] = hexa[ptr_buf[pos_buf] / 16];
buf2[pos_buf2++] = hexa[ptr_buf[pos_buf] % 16];
pos_buf++;
}
else
{
char_size = weechat_utf8_char_size ((const char *)(ptr_buf + pos_buf));
for (i = 0; i < char_size; i++)
{
buf2[pos_buf2++] = ptr_buf[pos_buf++];
}
}
}
buf2[pos_buf2] = '\0';
}
new_raw_message = malloc (sizeof (*new_raw_message));
if (new_raw_message)
{
new_raw_message->date = time (NULL);
snprintf (prefix, sizeof (prefix), "%s%s%s%s%s",
(server) ? weechat_color ("chat_server") : "",
(server) ? server->name : "",
(server) ? " " : "",
(send) ?
weechat_color ("chat_prefix_quit") :
weechat_color ("chat_prefix_join"),
(send) ?
((modified) ? IRC_RAW_PREFIX_SEND_MOD : IRC_RAW_PREFIX_SEND) :
((modified) ? IRC_RAW_PREFIX_RECV_MOD : IRC_RAW_PREFIX_RECV));
new_raw_message->prefix = strdup (prefix);
new_raw_message->message = strdup ((buf2) ? buf2 : ((buf) ? buf : message));
new_raw_message->prev_message = NULL;
new_raw_message->next_message = NULL;
while (irc_raw_messages_count >= max_messages)
{
irc_raw_message_free (irc_raw_messages);
}
if (max_messages > 0)
{
new_raw_message->prev_message = last_irc_raw_message;
new_raw_message->next_message = NULL;
if (irc_raw_messages)
last_irc_raw_message->next_message = new_raw_message;
else
irc_raw_messages = new_raw_message;
last_irc_raw_message = new_raw_message;
irc_raw_messages_count++;
if (irc_raw_buffer)
irc_raw_message_print (new_raw_message);
}
else
{
/* don't store message, just print it if raw buffer is opened */
if (irc_raw_buffer)
irc_raw_message_print (new_raw_message);
irc_raw_message_free (new_raw_message);
}
}
if (buf)
free (buf);
if (buf2)
free (buf2);
}
/*
* irc_raw_print: print a message on IRC debug buffer
*/
void
irc_raw_print (struct t_irc_server *server, int send, int modified,
const char *message)
{
if (!message)
return;
if (!irc_raw_buffer && (weechat_irc_plugin->debug >= 1))
irc_raw_open (0);
irc_raw_message_add (server, send, modified, message);
}
+47
View File
@@ -0,0 +1,47 @@
/*
* Copyright (c) 2003-2009 by FlashCode <flashcode@flashtux.org>
* See README for License detail, AUTHORS for developers list.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __WEECHAT_IRC_RAW_H
#define __WEECHAT_IRC_RAW_H 1
#define IRC_RAW_BUFFER_NAME "irc_raw"
#define IRC_RAW_PREFIX_RECV "-->"
#define IRC_RAW_PREFIX_RECV_MOD "==>"
#define IRC_RAW_PREFIX_SEND "<--"
#define IRC_RAW_PREFIX_SEND_MOD "<=="
struct t_irc_raw_message
{
time_t date; /* date/time of message */
char *prefix; /* prefix */
char *message; /* message */
struct t_irc_raw_message *prev_message; /* pointer to previous message */
struct t_irc_raw_message *next_message; /* pointer to next message */
};
struct t_irc_server;
extern struct t_gui_buffer *irc_raw_buffer;
extern void irc_raw_open (int switch_to_buffer);
extern void irc_raw_max_messages (int number);
extern void irc_raw_print (struct t_irc_server *server, int send,
int modified, const char *message);
#endif /* irc-raw.h */
+13 -13
View File
@@ -44,10 +44,10 @@
#include "irc-channel.h"
#include "irc-command.h"
#include "irc-config.h"
#include "irc-debug.h"
#include "irc-input.h"
#include "irc-nick.h"
#include "irc-protocol.h"
#include "irc-raw.h"
struct t_irc_server *irc_servers = NULL;
@@ -959,8 +959,8 @@ irc_server_outqueue_send (struct t_irc_server *server)
pos = strchr (server->outqueue->message_before_mod, '\r');
if (pos)
pos[0] = '\0';
irc_debug_printf (server, 1, 0,
server->outqueue->message_before_mod);
irc_raw_print (server, 1, 0,
server->outqueue->message_before_mod);
if (pos)
pos[0] = '\r';
}
@@ -969,8 +969,8 @@ irc_server_outqueue_send (struct t_irc_server *server)
pos = strchr (server->outqueue->message_after_mod, '\r');
if (pos)
pos[0] = '\0';
irc_debug_printf (server, 1, server->outqueue->modified,
server->outqueue->message_after_mod);
irc_raw_print (server, 1, server->outqueue->modified,
server->outqueue->message_after_mod);
if (pos)
pos[0] = '\r';
@@ -1204,9 +1204,9 @@ irc_server_send_one_msg (struct t_irc_server *server, const char *message)
else
{
if (first_message)
irc_debug_printf (server, 1, 0, message);
irc_raw_print (server, 1, 0, message);
if (new_msg)
irc_debug_printf (server, 1, 1, ptr_msg);
irc_raw_print (server, 1, 1, ptr_msg);
/* send signal with command that will be sent to server */
irc_server_send_signal (server, "irc_out",
@@ -1235,7 +1235,7 @@ irc_server_send_one_msg (struct t_irc_server *server, const char *message)
free (msg_encoded);
}
else
irc_debug_printf (server, 1, 1, _("(message dropped)"));
irc_raw_print (server, 1, 1, _("(message dropped)"));
if (nick)
free (nick);
@@ -1437,7 +1437,7 @@ irc_server_msgq_flush ()
if (ptr_data[0])
{
irc_debug_printf (irc_recv_msgq->server, 0, 0, ptr_data);
irc_raw_print (irc_recv_msgq->server, 0, 0, ptr_data);
irc_server_parse_message (ptr_data, NULL, NULL, &command,
NULL, NULL);
@@ -1470,8 +1470,8 @@ irc_server_msgq_flush ()
pos[0] = '\0';
if (new_msg)
irc_debug_printf (irc_recv_msgq->server, 0, 1,
ptr_msg);
irc_raw_print (irc_recv_msgq->server, 0, 1,
ptr_msg);
irc_server_parse_message (ptr_msg, &nick, &host,
&command, &channel,
@@ -1530,8 +1530,8 @@ irc_server_msgq_flush ()
}
else
{
irc_debug_printf (irc_recv_msgq->server, 0, 1,
_("(message dropped)"));
irc_raw_print (irc_recv_msgq->server, 0, 1,
_("(message dropped)"));
}
if (new_msg)
free (new_msg);