mirror of
https://github.com/weechat/weechat.git
synced 2026-06-29 06:16:40 +02:00
Merge branch 'master' of ssh://git.sv.gnu.org/srv/git/weechat
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
WeeChat ChangeLog
|
||||
=================
|
||||
FlashCode <flashcode@flashtux.org>
|
||||
v0.3.1-dev, 2009-11-24
|
||||
v0.3.1-dev, 2009-11-29
|
||||
|
||||
|
||||
Version 0.3.1 (under dev!)
|
||||
@@ -35,6 +35,7 @@ Version 0.3.1 (under dev!)
|
||||
* irc: improve error management on socket error (recv/send)
|
||||
* irc: improve mask used by command /kickban
|
||||
* xfer: add missing charset decoding/encoding for IRC DCC chat (bug #27482)
|
||||
* ruby: support of Ruby >= 1.9.1 (patch #6989)
|
||||
* gui: fix message "Day changed to", sometimes displayed at wrong time
|
||||
(bug #26959)
|
||||
* gui: fix bug with URL selection in some terminals (caused by horizontal lines)
|
||||
|
||||
+22
-3
@@ -35,10 +35,15 @@ FIND_PROGRAM(RUBY_EXECUTABLE
|
||||
|
||||
IF(RUBY_EXECUTABLE)
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts Config::CONFIG['archdir']"
|
||||
COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts Config::CONFIG['rubyhdrdir'] || Config::CONFIG['archdir']"
|
||||
OUTPUT_VARIABLE RUBY_ARCH_DIR
|
||||
)
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts Config::CONFIG['arch']"
|
||||
OUTPUT_VARIABLE RUBY_ARCH
|
||||
)
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts Config::CONFIG['libdir']"
|
||||
OUTPUT_VARIABLE RUBY_POSSIBLE_LIB_PATH
|
||||
@@ -48,17 +53,27 @@ IF(RUBY_EXECUTABLE)
|
||||
COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts Config::CONFIG['rubylibdir']"
|
||||
OUTPUT_VARIABLE RUBY_RUBY_LIB_PATH
|
||||
)
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts Config::CONFIG['ruby_version']"
|
||||
OUTPUT_VARIABLE RUBY_VERSION
|
||||
)
|
||||
|
||||
# remove the new lines from the output by replacing them with empty strings
|
||||
STRING(REPLACE "\n" "" RUBY_ARCH_DIR "${RUBY_ARCH_DIR}")
|
||||
STRING(REPLACE "\n" "" RUBY_POSSIBLE_LIB_PATH "${RUBY_POSSIBLE_LIB_PATH}")
|
||||
STRING(REPLACE "\n" "" RUBY_RUBY_LIB_PATH "${RUBY_RUBY_LIB_PATH}")
|
||||
STRING(REPLACE "\n" "" RUBY_ARCH "${RUBY_ARCH}")
|
||||
STRING(REPLACE "\n" "" RUBY_VERSION "${RUBY_VERSION}")
|
||||
|
||||
FIND_PATH(RUBY_INCLUDE_PATH
|
||||
NAMES ruby.h
|
||||
PATHS ${RUBY_ARCH_DIR}
|
||||
)
|
||||
|
||||
SET(RUBY_ARCH
|
||||
"${RUBY_INCLUDE_PATH}/${RUBY_ARCH}")
|
||||
|
||||
FIND_LIBRARY(RUBY_LIBRARY
|
||||
NAMES ruby ruby1.6 ruby16 ruby1.8 ruby18 ruby1.9 ruby19
|
||||
PATHS ${RUBY_POSSIBLE_LIB_PATH} ${RUBY_RUBY_LIB_PATH}
|
||||
@@ -67,11 +82,15 @@ IF(RUBY_EXECUTABLE)
|
||||
IF(RUBY_LIBRARY AND RUBY_INCLUDE_PATH)
|
||||
SET(RUBY_FOUND TRUE)
|
||||
ENDIF(RUBY_LIBRARY AND RUBY_INCLUDE_PATH)
|
||||
|
||||
|
||||
IF(${RUBY_VERSION} STREQUAL "1.9.0")
|
||||
SET(RUBY_FOUND FALSE)
|
||||
ENDIF(${RUBY_VERSION} STREQUAL "1.9.0")
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
RUBY_EXECUTABLE
|
||||
RUBY_LIBRARY
|
||||
RUBY_ARCH
|
||||
RUBY_INCLUDE_PATH
|
||||
)
|
||||
|
||||
ENDIF(RUBY_EXECUTABLE)
|
||||
|
||||
+21
-9
@@ -529,20 +529,32 @@ if test "x$enable_ruby" = "xyes" ; then
|
||||
not_found="$not_found ruby"
|
||||
else
|
||||
RUBY_VERSION=`$RUBY -rrbconfig -e "puts Config::CONFIG[['ruby_version']]"`
|
||||
RUBY_INCLUDE=`$RUBY -rrbconfig -e "puts Config::CONFIG[['archdir']]"`
|
||||
AC_MSG_CHECKING(for Ruby header files)
|
||||
if test -r "$RUBY_INCLUDE/ruby.h"; then
|
||||
RUBY_CFLAGS="-I$RUBY_INCLUDE"
|
||||
else
|
||||
if test "$RUBY_VERSION" = "1.9.0"; then
|
||||
AC_MSG_WARN([
|
||||
*** Ruby header files couldn't be found on your system.
|
||||
*** Try to install them with your software package manager.
|
||||
*** Ruby header files have been found, but they're of the version 1.9.0.
|
||||
*** Ruby 1.9.0 is an unstable release and should not be used in production.
|
||||
*** Please install Ruby >=1.8.6 or 1.9.1.
|
||||
*** WeeChat will be built without Ruby support.])
|
||||
enable_ruby="no"
|
||||
not_found="$not_found ruby"
|
||||
else
|
||||
RUBY_INCLUDE=`$RUBY -rrbconfig -e "puts Config::CONFIG[['rubyhdrdir']] || Config::CONFIG[['archdir']]"`
|
||||
RUBY_ARCH=`$RUBY -rrbconfig -e 'print Config::CONFIG[["arch"]]'`
|
||||
AC_MSG_CHECKING(for Ruby header files)
|
||||
if test -d "$RUBY_INCLUDE/"; then
|
||||
M_RUBY_VERSION=`$RUBY -rrbconfig -e "puts Config::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
|
||||
RUBY_CFLAGS="-I$RUBY_INCLUDE/ -I$RUBY_INCLUDE/$RUBY_ARCH -DRUBY_VERSION=$M_RUBY_VERSION"
|
||||
else
|
||||
AC_MSG_WARN([
|
||||
*** Ruby header files couldn't be found on your system.
|
||||
*** Try to install them with your software package manager.
|
||||
*** WeeChat will be built without Ruby support.])
|
||||
enable_ruby="no"
|
||||
not_found="$not_found ruby"
|
||||
fi
|
||||
AC_MSG_RESULT(found)
|
||||
RUBY_LFLAGS=`$RUBY -rrbconfig -e "puts Config::CONFIG[['LIBRUBYARG_SHARED']]"`
|
||||
fi
|
||||
AC_MSG_RESULT(found)
|
||||
RUBY_LFLAGS=`$RUBY -rrbconfig -e "puts Config::CONFIG[['LIBRUBYARG_SHARED']]"`
|
||||
fi
|
||||
else
|
||||
not_asked="$not_asked ruby"
|
||||
|
||||
@@ -1278,21 +1278,19 @@ Voroskoi::
|
||||
Marco Paolone::
|
||||
italian translation
|
||||
|
||||
Rudolf Polzer::
|
||||
patches
|
||||
Dmitry Kobylin::
|
||||
tcl plugin
|
||||
|
||||
Rudolf Polzer::
|
||||
Jim Ramsay::
|
||||
Pistos::
|
||||
Gwenn::
|
||||
Dominik Honnef::
|
||||
patches
|
||||
|
||||
Odin::
|
||||
SuSE RPM
|
||||
|
||||
Pistos::
|
||||
patches
|
||||
|
||||
Gwenn::
|
||||
patches
|
||||
|
||||
|
||||
[[support]]
|
||||
Support
|
||||
|
||||
@@ -1016,7 +1016,7 @@ L'extension IRC permet de dialoguer avec d'autres personnes via le
|
||||
protocole IRC.
|
||||
|
||||
Elle est multi-serveurs, et offre toutes les commandes IRC supportées, y
|
||||
compris la discussion directe (DCC chat) and le transfert de fichier DCC
|
||||
compris la discussion directe (DCC chat) et le transfert de fichier DCC
|
||||
(via l'extension xfer, voir <<xfer_plugin>>).
|
||||
|
||||
Options de ligne de commande
|
||||
@@ -1218,7 +1218,7 @@ Vous obtiendrez les fichiers suivants :
|
||||
Extensions Scripts
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
WeeChat fournit 5 extensions pour scripts : Perl, Python, Ruby, Lua and Tcl.
|
||||
WeeChat fournit 5 extensions pour scripts : Perl, Python, Ruby, Lua et Tcl.
|
||||
Ces extensions peuvent charger, exécuter et décharger des scripts pour ces
|
||||
langages.
|
||||
|
||||
@@ -1317,21 +1317,19 @@ Voroskoi::
|
||||
Marco Paolone::
|
||||
traduction en italien
|
||||
|
||||
Rudolf Polzer::
|
||||
patchs
|
||||
Dmitry Kobylin::
|
||||
extension tcl
|
||||
|
||||
Rudolf Polzer::
|
||||
Jim Ramsay::
|
||||
Pistos::
|
||||
Gwenn::
|
||||
Dominik Honnef::
|
||||
patchs
|
||||
|
||||
Odin::
|
||||
RPM pour SuSE
|
||||
|
||||
Pistos::
|
||||
patchs
|
||||
|
||||
Gwenn::
|
||||
patchs
|
||||
|
||||
|
||||
[[support]]
|
||||
Support
|
||||
|
||||
@@ -11,7 +11,7 @@ msgstr ""
|
||||
"Project-Id-Version: WeeChat 0.3.1-dev\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2009-11-24 15:30+0100\n"
|
||||
"PO-Revision-Date: 2009-11-20 17:55+0100\n"
|
||||
"PO-Revision-Date: 2009-11-26 18:51+0100\n"
|
||||
"Last-Translator: Nils G <weechatter@arcor.de>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -78,7 +78,7 @@ msgid "Error: missing argument for \"%s\" option\n"
|
||||
msgstr "Fehler: fehlendes Argument für die Option \"%s\"\n"
|
||||
|
||||
msgid "Error: unable to get HOME directory\n"
|
||||
msgstr "Fehler: kann das HOME-Verzeichnis nicht ermitteln\n"
|
||||
msgstr "Fehler: Das HOME-Verzeichnis kann nicht ermittelt werden\n"
|
||||
|
||||
msgid "Error: not enough memory for home directory\n"
|
||||
msgstr "Fehler: nicht genug Speicher für das HOME-Verzeichnis\n"
|
||||
@@ -89,7 +89,7 @@ msgstr "Fehler: HOME (%s) ist kein Verzeichnis\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Error: cannot create directory \"%s\"\n"
|
||||
msgstr "Fehler: kann das Verzeichnis \"%s\" nicht anlegen\n"
|
||||
msgstr "Fehler: Das Verzeichnis \"%s\" kann nicht anlegt werden.\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Welcome to %sWeeChat%s, %s"
|
||||
@@ -3076,15 +3076,13 @@ msgstr ""
|
||||
msgid "connect to IRC server(s)"
|
||||
msgstr "Mit IRC-Server(n) verbinden"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"[-all [-nojoin] | servername [servername ...] [-nojoin] | hostname[/port] [-"
|
||||
"option[=value]] [-nooption]]"
|
||||
msgstr ""
|
||||
"[-all [-nojoin] | Servername [Servername ...] [-nojoin] | Hostname [/port] [-"
|
||||
"ipv6] [-ssl]]"
|
||||
"[-all [-nojoin] | Servername [Servername ...] [-nojoin] | Hostname[/port] [-"
|
||||
"option[=value]] [-nooption]]"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
" -all: connect to all servers\n"
|
||||
"servername: internal server name to connect (server must have been created "
|
||||
@@ -3103,15 +3101,23 @@ msgid ""
|
||||
" /connect irc6.oftc.net/6697 -ipv6 -ssl\n"
|
||||
" /connect my.server.org/6697 -ssl -password=test"
|
||||
msgstr ""
|
||||
" -all: Verbinde mit allen Servern\n"
|
||||
" -all: Verbindet mit allen Servern\n"
|
||||
"servername: intern genutzter Servername, mit dem verbunden werden soll (Der "
|
||||
"Server muss zuerst mittels \"/server add\" angelegt werden)\n"
|
||||
" -nojoin: betrete (/join) keinen Channel (auch wenn die Funktion \"autojoin"
|
||||
"\" aktiviert sein sollte)\n"
|
||||
" hostname: Hostname, oder IP, eines Servers\n"
|
||||
" port: Port den der Server nutzen soll (Standardport: 6667)\n"
|
||||
" ipv6: IPv6 Protokoll soll genutzt werden\n"
|
||||
" ssl: SSL Protokoll soll genutzt werden"
|
||||
" option: legt die Optionen für den Server fest (die Boolean-Optionen "
|
||||
"können weggelassen werden)\n"
|
||||
" nooption: stellt die Boolean Option auf \"off\" (Beispiel: -nossl)\n"
|
||||
"\n"
|
||||
"Beispiele:\n"
|
||||
" /connect freenode\n"
|
||||
" /connect irc.oftc.net/6667\n"
|
||||
" /connect irc6.oftc.net/6667 -ipv6\n"
|
||||
" /connect irc6.oftc.net/6697 -ipv6 -ssl\n"
|
||||
" /connect my.server.org/6697 -ssl -password=test"
|
||||
|
||||
msgid "send a CTCP message (Client-To-Client Protocol)"
|
||||
msgstr "CTCP-Nachricht verschicken"
|
||||
@@ -3656,7 +3662,6 @@ msgstr ""
|
||||
msgid "list, add or remove IRC servers"
|
||||
msgstr "Auflisten, Hinzufügen oder Entfernen von IRC-Servern"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"[list [servername]] | [listfull [servername]] | [add servername hostname[/"
|
||||
"port] [-temp] [-option[=value]] [-nooption]] | [copy servername "
|
||||
@@ -3664,11 +3669,10 @@ msgid ""
|
||||
"[del servername] | [deloutq] | [jump] | [raw]"
|
||||
msgstr ""
|
||||
"[list [servername]] | [listfull [servername]] | [add servername hostname[/"
|
||||
"port] [-auto | -noauto] [-ipv6] [-ssl]] | [copy servername newservername] | "
|
||||
"[rename servername newservername] | [keep servername] | [del servername] | "
|
||||
"[deloutq] | [jump] | [raw]"
|
||||
"port] [-temp] [-option[=value]] [-nooption]] | [copy servername "
|
||||
"newservername] | [rename servername newservername] | [keep servername] | "
|
||||
"[del servername] | [deloutq] | [jump] | [raw]"
|
||||
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
" list: list servers (no parameter implies this list)\n"
|
||||
" listfull: list servers with detailed info for each server\n"
|
||||
@@ -3703,29 +3707,27 @@ msgstr ""
|
||||
" listfull: listet Server mit detaillierten Informationen über jeden "
|
||||
"einzelnen Server auf\n"
|
||||
" add: erstelle einen neuen Server\n"
|
||||
"servername: Servername, für interne Nutzung und zur Darstellung\n"
|
||||
"servername: Servername, dient der internen Nutzung und zur Darstellung\n"
|
||||
" hostname: Name oder IP-Adresse des Servers. Optional kann noch der Port "
|
||||
"festgelegt werden (Standard-Port: 6667)\n"
|
||||
" auto: erstelle automatisch, beim Start von WeeChat, eine Verbindung "
|
||||
"zum Server\n"
|
||||
" noauto: es wird keine Verbindung zum Server, beim Start von WeeChat, "
|
||||
"hergestellt (Standard)\n"
|
||||
" ipv6: nutze IPv6 Protokoll\n"
|
||||
" ssl: nutze SSL Protokoll\n"
|
||||
" copy: erstelle ein Duplikat vom Server\n"
|
||||
" rename: benenne einen Server um\n"
|
||||
" keep: behalte Server in der Konfigurationsdatei (sollte nur bei "
|
||||
"zeitweiliger Nutzung eines Servers benutzt werden)\n"
|
||||
" del: entferne einen Server\n"
|
||||
" deloutq: lösche ausgehende Nachrichten aller Server, die in der "
|
||||
" temp: erstellt temporären Server (wird nicht gespeichert)\n"
|
||||
" option: legt die Optionen für den Server fest (die Boolean-Optionen "
|
||||
"können weggelassen werden)\n"
|
||||
" nooption: stellt die Boolean Option auf \"off\" (Beispiel: -nossl)\n"
|
||||
" copy: erstellt eine Kopie des Servers\n"
|
||||
" rename: benennt den Server um\n"
|
||||
" keep: behält den Server in der Konfigurationsdatei (ausschließlich für "
|
||||
"die Nutzung bei temporärem Server)\n"
|
||||
" del: entfernt einen Server\n"
|
||||
" deloutq: löscht alle ausgehende Nachrichten, aller Server, die in der "
|
||||
"Warteschlange stehen (dies betrifft alle Nachrichten die WeeChat gerade "
|
||||
"sendet)\n"
|
||||
" jump: springe zu Server-Buffer\n"
|
||||
" raw: öffne Buffer mit Roh-IRC-Daten\n"
|
||||
" jump: springt zum Server-Buffer\n"
|
||||
" raw: öffnet Buffer mit Roh-IRC-Daten\n"
|
||||
"\n"
|
||||
"Beispiele:\n"
|
||||
" /server listfull\n"
|
||||
" /server add oftc irc.oftc.net/6697 -ssl\n"
|
||||
" /server add oftc irc.oftc.net/6697 -ssl -autoconnect\n"
|
||||
" /server add oftc6 irc6.oftc.net/6697 -ipv6 -ssl\n"
|
||||
" /server add freenode2 chat.eu.freenode.net/6667,chat.us.freenode.net/6667\n"
|
||||
" /server copy oftc oftcbis\n"
|
||||
@@ -5001,13 +5003,13 @@ msgid ""
|
||||
"= no backlog)"
|
||||
msgstr ""
|
||||
"maximale Anzahl der Zeilen die aus der Protokoll-Datei dargestellt werden "
|
||||
"sollen, wenn ein neuer Buffer erstellt wird (0 = kein Darstellung)"
|
||||
"sollen, wenn ein Buffer geöffnet wird (0 = kein Darstellung)"
|
||||
|
||||
msgid ""
|
||||
"automatically save content of buffers to files (unless a buffer disables log)"
|
||||
msgstr ""
|
||||
"Speichert automatisch den Inhalt eines Buffers, in eine Datei (sofern das "
|
||||
"Protokollieren, für den Buffer, nicht deaktiviert sein sollte)"
|
||||
"Speichert automatisch den Inhalt eines Buffers in eine Datei (sofern das "
|
||||
"Protokollieren, für den Buffer nicht deaktiviert sein sollte)"
|
||||
|
||||
msgid "use only lower case for log filenames"
|
||||
msgstr "Benutze ausschließlich Kleinschreibung für Protokoll-Dateien"
|
||||
@@ -5033,8 +5035,8 @@ msgid ""
|
||||
"replacement char for special chars in filename built with mask (like "
|
||||
"directory delimiter)"
|
||||
msgstr ""
|
||||
"Ersatzzeichen für Dateinamen, falls diese ein Sonderzeichen beinhalten (z.B. "
|
||||
"das Trennzeichen bei Verzeichnissen \"/\")"
|
||||
"Ersatzzeichen für Dateinamen, falls der Dateiname Sonderzeichen beinhaltet "
|
||||
"(z.B. das Trennzeichen bei Verzeichnissen \"/\")"
|
||||
|
||||
msgid "write information line in log file when log starts or ends for a buffer"
|
||||
msgstr ""
|
||||
@@ -5591,7 +5593,7 @@ msgid ""
|
||||
"(\"%s\")"
|
||||
msgstr ""
|
||||
"%s%s: Warnung, die Lizenz \"%s\" für das Skript \"%s\" unterscheidet sich "
|
||||
"von der Lizenz für Erweiterungen (\"%s\")"
|
||||
"von der Lizenz der Erweiterungen (\"%s\")"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: error loading script \"%s\" (not enough memory)"
|
||||
@@ -5607,7 +5609,7 @@ msgstr "%s%s: Fehler beim Entfernen des Skripts: %s (%s)"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: script \"%s\" not found, nothing was removed"
|
||||
msgstr "%s: Skript \"%s\" nicht gefunden, es wurde nichts entfernt"
|
||||
msgstr "%s: Skript \"%s\" nicht gefunden. Es wurde nichts entfernt"
|
||||
|
||||
#, c-format
|
||||
msgid "%s%s: failed to move script %s to %s (%s)"
|
||||
@@ -5659,13 +5661,13 @@ msgid " [C] Cancel"
|
||||
msgstr " [C] abbrechen"
|
||||
|
||||
msgid "xfer chat"
|
||||
msgstr "Xfer Chat"
|
||||
msgstr "Transfer (xfer) Chat"
|
||||
|
||||
msgid "ETA"
|
||||
msgstr "ETA"
|
||||
|
||||
msgid "Xfer list"
|
||||
msgstr "Xfer Liste"
|
||||
msgstr "Tranfer (xfer) Liste"
|
||||
|
||||
msgid "waiting"
|
||||
msgstr "warte"
|
||||
@@ -5835,7 +5837,7 @@ msgid "no"
|
||||
msgstr "keine"
|
||||
|
||||
msgid "No xfer"
|
||||
msgstr "Kein xfer"
|
||||
msgstr "Kein Transfer (xfer)"
|
||||
|
||||
msgid "xfer control"
|
||||
msgstr "Transfer-Steuerung"
|
||||
|
||||
+3
-1
@@ -1508,7 +1508,9 @@ hook_connect_gnutls_set_certificates (gnutls_session_t tls_session,
|
||||
while (ptr_hook)
|
||||
{
|
||||
/* looking for the right hook using to the gnutls session pointer */
|
||||
if (*(HOOK_CONNECT(ptr_hook, gnutls_sess)) == tls_session)
|
||||
if (!ptr_hook->deleted
|
||||
&& HOOK_CONNECT(ptr_hook, gnutls_sess)
|
||||
&& (*(HOOK_CONNECT(ptr_hook, gnutls_sess)) == tls_session))
|
||||
{
|
||||
rc = (int) (HOOK_CONNECT(ptr_hook, gnutls_cb))
|
||||
(ptr_hook->callback_data, tls_session, req_ca, nreq,
|
||||
|
||||
@@ -322,7 +322,9 @@ irc_nick_change (struct t_irc_server *server, struct t_irc_channel *channel,
|
||||
"weechat.color.nicklist_prefix%d",
|
||||
prefix_color);
|
||||
weechat_nicklist_add_nick (channel->buffer, ptr_group,
|
||||
nick->name, "bar_fg",
|
||||
nick->name,
|
||||
(nick->flags & IRC_NICK_AWAY) ?
|
||||
"weechat.color.nicklist_away" : "bar_fg",
|
||||
prefix, str_prefix_color, 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ weechat-ruby-api.h)
|
||||
SET_TARGET_PROPERTIES(ruby PROPERTIES PREFIX "")
|
||||
|
||||
IF(RUBY_FOUND)
|
||||
INCLUDE_DIRECTORIES(${RUBY_INCLUDE_PATH})
|
||||
INCLUDE_DIRECTORIES(${RUBY_INCLUDE_PATH} ${RUBY_ARCH})
|
||||
TARGET_LINK_LIBRARIES(ruby ${RUBY_LIBRARY} weechat_scripts)
|
||||
ENDIF(RUBY_FOUND)
|
||||
|
||||
|
||||
@@ -22,6 +22,10 @@
|
||||
#undef _
|
||||
|
||||
#include <ruby.h>
|
||||
#if defined(RUBY_VERSION) && RUBY_VERSION >=19
|
||||
#include <ruby/encoding.h>
|
||||
#endif
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
@@ -31,6 +35,35 @@
|
||||
#include "weechat-ruby.h"
|
||||
#include "weechat-ruby-api.h"
|
||||
|
||||
#ifndef StringValuePtr
|
||||
#define StringValuePtr(s) STR2CSTR(s)
|
||||
#endif
|
||||
#ifndef RARRAY_LEN
|
||||
#define RARRAY_LEN(s) RARRAY(s)->len
|
||||
#endif
|
||||
#ifndef RARRAY_PTR
|
||||
#define RARRAY_PTR(s) RARRAY(s)->ptr
|
||||
#endif
|
||||
#ifndef RSTRING_LEN
|
||||
#define RSTRING_LEN(s) RSTRING(s)->len
|
||||
#endif
|
||||
#ifndef RSTRING_PTR
|
||||
#define RSTRING_PTR(s) RSTRING(s)->ptr
|
||||
#endif
|
||||
|
||||
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
|
||||
#define rb_errinfo dll_rb_errinfo
|
||||
#define ruby_errinfo dll_rb_errinfo
|
||||
#else
|
||||
#define ruby_errinfo (*dll_ruby_errinfo)
|
||||
#endif
|
||||
|
||||
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
|
||||
static VALUE (*dll_rb_errinfo) (void);
|
||||
#else
|
||||
static VALUE *dll_ruby_errinfo;
|
||||
#endif
|
||||
|
||||
|
||||
WEECHAT_PLUGIN_NAME(RUBY_PLUGIN_NAME);
|
||||
WEECHAT_PLUGIN_DESCRIPTION("Ruby plugin for WeeChat");
|
||||
@@ -80,12 +113,12 @@ typedef struct protect_call_arg {
|
||||
*/
|
||||
|
||||
static VALUE
|
||||
protect_funcall0(VALUE arg)
|
||||
protect_funcall0 (VALUE arg)
|
||||
{
|
||||
return rb_funcall2(((protect_call_arg_t *) arg)->recv,
|
||||
((protect_call_arg_t *) arg)->mid,
|
||||
((protect_call_arg_t *) arg)->argc,
|
||||
((protect_call_arg_t *) arg)->argv);
|
||||
return rb_funcall2 (((protect_call_arg_t *)arg)->recv,
|
||||
((protect_call_arg_t *)arg)->mid,
|
||||
((protect_call_arg_t *)arg)->argc,
|
||||
((protect_call_arg_t *)arg)->argv);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -118,7 +151,85 @@ rb_protect_funcall (VALUE recv, ID mid, int *state, int argc, ...)
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_ruby_exec: execute a Ruby script
|
||||
* weechat_ruby_print_exception: display ruby exception
|
||||
*/
|
||||
|
||||
int
|
||||
weechat_ruby_print_exception (VALUE err)
|
||||
{
|
||||
VALUE backtrace;
|
||||
int i;
|
||||
int ruby_error;
|
||||
char* line;
|
||||
char* cline;
|
||||
char* err_msg;
|
||||
char* err_class;
|
||||
|
||||
backtrace = rb_protect_funcall (err, rb_intern("backtrace"),
|
||||
&ruby_error, 0);
|
||||
err_msg = STR2CSTR(rb_protect_funcall(err, rb_intern("message"),
|
||||
&ruby_error, 0));
|
||||
err_class = STR2CSTR(rb_protect_funcall(rb_protect_funcall(err,
|
||||
rb_intern("class"),
|
||||
&ruby_error, 0),
|
||||
rb_intern("name"), &ruby_error, 0));
|
||||
|
||||
if (strcmp (err_class, "SyntaxError") == 0)
|
||||
{
|
||||
weechat_printf (NULL,
|
||||
weechat_gettext ("%s%s: error: %s"),
|
||||
weechat_prefix ("error"), RUBY_PLUGIN_NAME,
|
||||
STR2CSTR(rb_inspect(err)));
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < RARRAY_LEN(backtrace); i++)
|
||||
{
|
||||
line = STR2CSTR(RARRAY_PTR(backtrace)[i]);
|
||||
cline = NULL;
|
||||
if (i == 0)
|
||||
{
|
||||
cline = (char *)calloc (strlen (line) + 2 + strlen (err_msg) +
|
||||
3 + strlen (err_class) + 1,
|
||||
sizeof (char));
|
||||
if (cline)
|
||||
{
|
||||
strcat (cline, line);
|
||||
strcat (cline, ": ");
|
||||
strcat (cline, err_msg);
|
||||
strcat (cline, " (");
|
||||
strcat (cline, err_class);
|
||||
strcat (cline, ")");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cline = (char *)calloc(strlen (line) + strlen (" from ") + 1,
|
||||
sizeof (char));
|
||||
if (cline)
|
||||
{
|
||||
strcat (cline, " from ");
|
||||
strcat (cline, line);
|
||||
}
|
||||
}
|
||||
if (cline)
|
||||
{
|
||||
weechat_printf (NULL,
|
||||
weechat_gettext ("%s%s: error: %s"),
|
||||
weechat_prefix ("error"), RUBY_PLUGIN_NAME,
|
||||
cline);
|
||||
}
|
||||
|
||||
if (cline)
|
||||
free (cline);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_ruby_exec: call a ruby command
|
||||
*/
|
||||
|
||||
void *
|
||||
@@ -242,11 +353,8 @@ weechat_ruby_exec (struct t_plugin_script *script,
|
||||
weechat_gettext ("%s%s: unable to run function \"%s\""),
|
||||
weechat_prefix ("error"), RUBY_PLUGIN_NAME, function);
|
||||
|
||||
err = rb_inspect(rb_gv_get("$!"));
|
||||
weechat_printf (NULL,
|
||||
weechat_gettext ("%s%s: error: \"%s\""),
|
||||
weechat_prefix ("error"), RUBY_PLUGIN_NAME,
|
||||
STR2CSTR(err));
|
||||
err = rb_gv_get("$!");
|
||||
weechat_ruby_print_exception(err);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
@@ -392,18 +500,13 @@ weechat_ruby_load (const char *filename)
|
||||
|
||||
if (ruby_retcode == Qnil)
|
||||
{
|
||||
err = rb_inspect(rb_gv_get("$!"));
|
||||
weechat_printf (NULL,
|
||||
weechat_gettext ("%s%s: error: \"%s\""),
|
||||
weechat_prefix ("error"), RUBY_PLUGIN_NAME,
|
||||
STR2CSTR(err));
|
||||
err = rb_gv_get("$!");
|
||||
weechat_ruby_print_exception(err);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (NUM2INT(ruby_retcode) != 0)
|
||||
{
|
||||
VALUE ruby_eval_error;
|
||||
|
||||
switch (NUM2INT(ruby_retcode))
|
||||
{
|
||||
case 1:
|
||||
@@ -432,14 +535,7 @@ weechat_ruby_load (const char *filename)
|
||||
|
||||
if (NUM2INT(ruby_retcode) == 1 || NUM2INT(ruby_retcode) == 2)
|
||||
{
|
||||
ruby_eval_error = rb_iv_get(curModule, "@load_eval_file_error");
|
||||
if (ruby_eval_error)
|
||||
{
|
||||
weechat_printf (NULL,
|
||||
weechat_gettext ("%s%s: error: %s"),
|
||||
weechat_prefix ("error"), RUBY_PLUGIN_NAME,
|
||||
STR2CSTR(ruby_eval_error));
|
||||
}
|
||||
weechat_ruby_print_exception(rb_iv_get(curModule, "@load_eval_file_error"));
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -455,11 +551,8 @@ weechat_ruby_load (const char *filename)
|
||||
"\"weechat_init\" in file \"%s\""),
|
||||
weechat_prefix ("error"), RUBY_PLUGIN_NAME, filename);
|
||||
|
||||
err = rb_inspect(rb_gv_get("$!"));
|
||||
weechat_printf (NULL,
|
||||
weechat_gettext ("%s%s: error: \"%s\""),
|
||||
weechat_prefix ("error"), RUBY_PLUGIN_NAME,
|
||||
STR2CSTR(err));
|
||||
err = rb_gv_get("$!");
|
||||
weechat_ruby_print_exception(err);
|
||||
|
||||
if (ruby_current_script != NULL)
|
||||
{
|
||||
@@ -821,42 +914,39 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
|
||||
"$stderr = WeechatOutputs\n"
|
||||
"\n"
|
||||
"class Module\n"
|
||||
" @load_eval_file_error = ''\n"
|
||||
"\n"
|
||||
" def load_eval_file (file)\n"
|
||||
" lines = ''\n"
|
||||
" begin\n"
|
||||
" f = File.open(file, 'r')\n"
|
||||
" lines = f.readlines.join\n"
|
||||
" rescue => e\n"
|
||||
" @load_eval_file_error = e\n"
|
||||
" return 1\n"
|
||||
" end\n"
|
||||
"\n"
|
||||
" begin\n"
|
||||
" module_eval(lines)\n"
|
||||
" rescue => e\n"
|
||||
" @load_eval_file_error = e\n"
|
||||
" return 2\n"
|
||||
" end\n"
|
||||
"\n"
|
||||
" has_init = false\n"
|
||||
"\n"
|
||||
" instance_methods.each do |meth|\n"
|
||||
" if meth == 'weechat_init'\n"
|
||||
" has_init = true\n"
|
||||
" end\n"
|
||||
" module_eval('module_function :' + meth)\n"
|
||||
" end\n"
|
||||
"\n"
|
||||
" unless has_init\n"
|
||||
" return 3\n"
|
||||
" end\n"
|
||||
"\n"
|
||||
" return 0\n"
|
||||
" end\n"
|
||||
"end\n"
|
||||
};
|
||||
" begin\n"
|
||||
" lines = File.read(file)\n"
|
||||
" rescue => e\n"
|
||||
" return 1\n"
|
||||
" end\n"
|
||||
"\n"
|
||||
" begin\n"
|
||||
" module_eval(lines)\n"
|
||||
" rescue Exception => e\n"
|
||||
" @load_eval_file_error = e\n"
|
||||
" return 2\n"
|
||||
" end\n"
|
||||
"\n"
|
||||
" has_init = false\n"
|
||||
"\n"
|
||||
" instance_methods.each do |meth|\n"
|
||||
" if meth.to_s == 'weechat_init'\n"
|
||||
" has_init = true\n"
|
||||
" end\n"
|
||||
" module_eval('module_function :' + meth)\n"
|
||||
" end\n"
|
||||
"\n"
|
||||
" unless has_init\n"
|
||||
" return 3\n"
|
||||
" end\n"
|
||||
"\n"
|
||||
" return 0\n"
|
||||
" end\n"
|
||||
"end\n"
|
||||
};
|
||||
|
||||
weechat_ruby_plugin = plugin;
|
||||
|
||||
@@ -865,6 +955,10 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
|
||||
/* init stdout/stderr buffer */
|
||||
ruby_buffer_output[0] = '\0';
|
||||
|
||||
#if defined(RUBY_VERSION) && RUBY_VERSION >= 19
|
||||
RUBY_INIT_STACK;
|
||||
#endif
|
||||
|
||||
ruby_init ();
|
||||
ruby_init_loadpath ();
|
||||
ruby_script ("__weechat_plugin__");
|
||||
@@ -886,7 +980,7 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
|
||||
rb_eval_string_protect(weechat_ruby_code, &ruby_error);
|
||||
if (ruby_error)
|
||||
{
|
||||
VALUE ruby_error_info = rb_inspect(ruby_errinfo);
|
||||
VALUE ruby_error_info = rb_inspect((VALUE)ruby_errinfo);
|
||||
weechat_printf (NULL,
|
||||
weechat_gettext ("%s%s: unable to eval WeeChat ruby "
|
||||
"internal code"),
|
||||
@@ -934,7 +1028,7 @@ weechat_plugin_end (struct t_weechat_plugin *plugin)
|
||||
/* unload all scripts */
|
||||
weechat_ruby_unload_all ();
|
||||
|
||||
ruby_finalize();
|
||||
ruby_cleanup (0);
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user