API Funktionen

set_charset
iconv_to_internal
iconv_from_internal
ascii_strcasecmp
ascii_strncasecmp
explode_string
free_exploded_string
mkdir_home
exec_on_files
print
print_server
print_infobar
infobar_remove
log
msg_handler_add
cmd_handler_add
timer_handler_add
keyboard_handler_add
event_handler_add
handler_remove
handler_remove_all
modifier_add
modifier_remove
modifier_remove_all
exec_command
get_info
get_dcc_info
free_dcc_info
get_server_info
free_server_info
get_channel_info
free_channel_info
get_nick_info
free_nick_info
get_config
set_config
get_plugin_config
set_plugin_config
get_irc_color
input_color
get_window_info
free_window_info
get_buffer_info
free_buffer_info
get_buffer_data
free_buffer_data

set_charset

Prototyp: void set_charset (t_weechat_plugin *plugin, char *charset)

Legt neuen Zeichensatz für ein Plugin fest.

Argumente:

  • plugin: Zeiger auf Plugin-Struktur

  • charset: neuer Zeichensatz, der benutzt werden soll

Beispiel:

plugin->set_charset (plugin, "ISO-8859-1");

iconv_to_internal

Prototyp: void iconv_to_internal (t_weechat_plugin *plugin, char *charset, char *string)

Konvertiert eine Zeichenkette in das interne Format von WeeChat (UTF-8).

Argumente:

  • plugin: Zeiger auf Plugin-Struktur

  • charset: ursprünglicher Zeichensatz, von dem konvertiert werden soll

  • string: zu konvertierende Zeichenkette

Rückgabewert: konvertierte Zeichenkette

Anmerkung: der Speicher, der durch das Ergebnis belegt wird, muss mit free() wieder freigegeben werden.

Beispiel:

char *str = plugin->iconv_to_internal (plugin, "ISO-8859-1", "iso string: é à");

iconv_from_internal

Prototyp: void iconv_from_internal (t_weechat_plugin *plugin, char *charset, char *string)

Konvertiert eine Zeichenkette von dem internen WeeChat-Zeichensatz (UTF-8) in einen anderen.

Argumente:

  • plugin: Zeiger auf Plugin-Struktur

  • charset: Ziel-Zeichensatz

  • string: zu konvertierende Zeichenkette

Rückgabewert: konvertierte Zeichenkette

Anmerkung: der Speicher, der durch das Ergebnis belegt wird, muss mit free() wieder freigegeben werden.

Beispiel:

char *str = plugin->iconv_from_internal (plugin, "ISO-8859-1", "utf-8 string: é à");

ascii_strcasecmp

Prototyp: int ascii_strcasecmp (t_weechat_plugin *plugin, char *string1, char *string2)

Vergleich von Zeichenketten unabhängig von Sprache und Schreibweise (gross/klein).

Argumente:

  • plugin: Zeiger auf Plugin-Struktur

  • string1: erste Zeichenkette des Vergleichs

  • string2: zweite Zeichenkette des Vergleichs

Rückgabewert: Unterschied zwischen den zwei Zeichenketten: kleiner Null wenn string1 < string2, Null wenn string1 == string2, grösser Null wenn string1 > string2

Beispiel:

if (plugin->ascii_strcasecmp (plugin, "abc", "def") != 0) ...

ascii_strncasecmp

Prototyp: int ascii_strncasecmp (t_weechat_plugin *plugin, char *string1, char *string2, int max)

Vergleich von Zeichenketten unabhängig von Sprache und Schreibweise (gross/klein) für höchstens "max" Zeichen.

Argumente:

  • plugin: Zeiger auf Plugin-Struktur

  • string1: erste Zeichenkette des Vergleichs

  • string2: zweite Zeichenkette des Vergleichs

  • max: maximale Zahl an Zeichen für den Vergleich

Rückgabewert: Unterschied zwischen den zwei Zeichenketten: kleiner Null wenn string1 < string2, Null wenn string1 == string2, grösser Null wenn string1 > string2

Beispiel:

if (plugin->ascii_strncasecmp (plugin, "abc", "def", 2) != 0) ...

explode_string

Prototyp: char **explode_string (t_weechat_plugin *plugin, char *string, char *separators, int num_items_max, int *num_items)

Zerlege eine Zeichenkette entsprechend eines oder mehrerer Trennzeichen(s).

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • string: zu zerlegende Zeichenkette

  • separators: zu verwendende(s) Trennzeichen

  • num_items_max: maximale Anzahl an zu erzeugenden Teilen (0 = keine Grenze)

  • num_items: Zeiger auf eine int-Variable, die die Anzahl der erzeugten Teile enthält

Rückgabewert: ein Array von Zeichenketten, NULL bei Fehlern.

Hinweis: Das zurückgegebene Array muss nach der Benutzung mittels "free_exloded_string" explizit freigegeben werden.

Beispiel:

char **argv;
int argc;
argv = plugin->explode_string (plugin, string, " ", 0, &argc);
...
if (argv != NULL)
    plugin->free_exploded_string (plugin, argv);

free_exploded_string

Prototyp: char **free_exploded_string (t_weechat_plugin *plugin, char **string)

Gib ein Array frei, dass infolge der Zerlegung eines Strings reserviert wurde.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • string: ein Array von Strings

Rückgabewert: keiner (?).

Beispiel:

char *argv;
int argc;
argv = plugin->explode_string (plugin, string, " ", 0, &argc);
...
if (argv != NULL)
    plugin->free_exploded_string (plugin, argv);

mkdir_home

Prototyp: int mkdir_home (t_weechat_plugin *plugin, char *directory)

Erzeugt ein Verzeichnis im WeeChat-Verzeichnis.

Argumente:

  • plugin: Zeiger auf Pluginstrukur

  • directory: Verzeichnis, das erzeugt werden soll

Rückgabewert: 1 wenn das Verzeichnis erfolgreich erstellt wurde, 0 wenn ein Fehler aufgetreten ist.

Beispiel:

if (!plugin->mkdir_home (plugin, "temp"))
    plugin->print_server(plugin, "Konnte 'temp'-Verzeichnis im WeeChat-Verzeichnis nicht erstellen.");

exec_on_files

Prototyp: void exec_on_files (t_weechat_plugin *plugin, char *repertoire, int (*callback)(t_weechat_plugin *, char *))

Führe eine Funktion auf allen Dateien eines Verzeichnisses aus.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • directory: Verzeichnis der zu verwendenden Dateien

  • callback: die anzuwendende Funktion

Rückgabewert: keiner.

Beispiel:

int callback (t_weechat_plugin *plugin, char *file)
{
    plugin->print_server (plugin, "file: %s", file);
    return 1;
}
...
plugin->exec_on_files (plugin, "/tmp", &callback);

print

Prototyp: void print (t_weechat_plugin *plugin, char *server, char *channel, char *message, ...)

Sende eine Nachricht an einen WeeChat-Puffer, bezeichnet durch server und channel (beide können NULL sein, dann wird der aktuelle Puffer verwendet).

Argumente:

  • plugin: Zeiger auf Plugin-Struktur

  • server: interner Name des Servers, zu welchem der Puffer gehört, in dem die Nachricht angezeigt werden soll (kann NULL sein)

  • channel: Name des Channels, in dem die Nachricht angezeigt werden soll (kann NULL sein)

  • message: Nachricht

Rückgabewert: keiner.

Beispiele:

plugin->print (plugin, NULL, NULL, "hello");
plugin->print (plugin, NULL, "#weechat", "hello");
plugin->print (plugin, "freenode", "#weechat", "hello");

print_server

Prototyp: void print_server (t_weechat_plugin *plugin, char *message, ...)

Zeige eine Nachricht im aktuellen Server-Puffer.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • message: Nachricht

Rückgabewert: keiner.

Beispiel:

plugin->print_server (plugin, "hello");

print_infobar

Prototyp: void print_infobar (t_weechat_plugin *plugin, int time, char *message, ...)

Zeige eine Nachricht in der Infobar für eine bestimmte Zeit

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • time: Zeitspanne für die Anzeige (in Sekunden, 0 = ständige Anzeige)

Rückgabewert: keiner.

Beispiel:

plugin->print_infobar (plugin, 5, "hello");

infobar_remove

Prototyp: void infobar_remove (t_weechat_plugin *plugin, int count)

Entferne eine oder mehr Nachrichten aus der Infobar.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • count: Anzahl der Nachrichten (wenn das Argument kleiner als Null ist, werden alle Nachrichten entfernt)

Rückgabewert: keiner.

Beispiel:

plugin->infobar_remove (1);

log

Prototyp: void log (t_weechat_plugin *plugin, char *server, char *channel, char *message, ...)

Schreibe eine Nachricht in die Log-Datei (für den entsprechenden Server/Channel).

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • server: interner Name des Servers, zu welchem der Log-Puffer gehört (kann NULL sein)

  • channel: Name des Channels, zu welchem der Log-Puffer gehört (kann NULL sein)

  • message: Nachricht

Rückgabewert: keiner.

Beispiel:

plugin->log (plugin, "freenode", "#weechat", "test");

msg_handler_add

Prototyp: t_plugin_handler *msg_handler_add (t_weechat_plugin *plugin, char *message, t_plugin_handler_func *function, char *handler_args, void *handler_pointer)

Erzeuge einen IRC-Message-Handler, der aufgerufen wird, wenn eine Nachricht empfangen wird.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • message: Name (Typ) der IRC-Nachricht ("*" für alle Nachrichten). Eine Liste der bekannten IRC-Nachrichten ist in den RFCs 1459 und 2812 zu finden. Weiterhin können sie einen speziellen Namen verwenden, der mit "weechat_" beginnt, um spezielle Ereignisse zu bearbeiten, wie in der folgenden Tabelle aufgeführt:

    NameBeschreibung
    weechat_pvprivate Nachricht empfangen
    weechat_highlight hervorgehobene Nachricht (in einem Channel oder privatem Chat)
    weechat_ctcp CTCP-Nachricht empfangen (VERSION, PING, ...)
    weechat_dcc DCC-Nachricht empfangen (Chat oder Datei)

  • function: Funktion, die aufgerufen wird, wenn eine Nachricht empfangen wurde

    Sie verwendet den folgenden Prototyp: int my_function (t_weechat_plugin *plugin, int argc, char **argv, char *handler_args, void *handler_pointer)

    Argument argc ist auf 3 gesetzt, die folgenden Werte sind im argv-Array:

    • argv[0] = Server Name

    • argv[1] = IRC Nachricht

    • argv[2] = Kommando Argumente

  • handler_args: Argumente, die beim Aufruf an die Funktion übergeben werden

  • handler_pointer: pointer given to function when called handler_pointer: Zeiger, der an die Funktion übergeben wird

Rückgabewert: Zeiger auf den neuen Handler

Hinweis: die Funktion, die aufgerufen wird wenn eine Nachricht empfangen wurde, muss einen der folgenden Werte zurückgeben:

  • PLUGIN_RC_KO: Funktion ist fehlgschlagen

  • PLUGIN_RC_OK: Funktion war erfolgreich

  • PLUGIN_RC_OK_IGNORE_WEECHAT: Die Nachricht wird nicht an WeeChat übergeben

  • PLUGIN_RC_OK_IGNORE_PLUGINS: Die Nachricht wird nicht an andere Plugins weitergegeben

  • PLUGIN_RC_OK_IGNORE_ALL: Die Nachricht wird weder an WeeChat noch an andere Plugins weitergegeben

  • PLUGIN_RC_OK_WITH_HIGHLIGHT: Funktion erfolgreich vervollständigt und eine Hervorhebung bei den empfangenen Nachrichten eingebaut

Beispiel:

int msg_kick (t_weechat_plugin *plugin, int argc, char **argv,
              char *handler_args, void *handler_pointer)
{
    plugin->print (plugin, argv[0], NULL, "KICK received");
    return PLUGIN_RC_OK;
}
...
t_plugin_handler *msg_handler;
msg_handler = plugin->msg_handler_add (plugin, "KICK",
                                       &msg_kick, NULL, NULL);

cmd_handler_add

Prototyp: t_plugin_handler *cmd_handler_add (t_weechat_plugin *plugin, char *command, char *description, char *arguments, char *arguments_description, char *completion_template, t_plugin_handler_func *fonction, char *handler_args, void *handler_pointer)

Erzeugt einen Handler für ein WeeChat-Kommando, der aufgerufen wird, wenn der Anwender das Kommando ausführt (Beispiel: /command).

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • command: Name des neuen Kommandos, der auch Name eines bereits existierenden Kommandos sein kann (mit Bedacht zu verwenden, das ersetzte Kommando ist nicht verfügbar, bis das Plugin entfernt wurde)

  • description: kurze Beschreibung des Kommandos (angezeigt beim Ausführen von /help command)

  • arguments: kurze Beschreibung der Argumente des Kommandos (angezeigt beim Ausführen von /help command)

  • arguments_description: lange Beschreibung der Argumente des Kommandos (angezeigt beim Ausführen von /help command)

  • completion_template: Vorlage für die Vervollständigung; zum Beispiel bedeutet "abc|%w def|%i", dass das erste Argument "abc" oder ein WeeChat-Kommando sein kann und das zweite Argument "def" oder ein IRC-Kommando. Eine leere Zeichenkette bedeutet, dass WeeChat für jedes Argument einen Nicknamen des gegenwärtigen Channels einsetzt, ein NULL oder "-" schaltet die Vervollständigung für alle Argumente ab.

    Die folgenden Ersetzungen können verwendet werden:

    CodeBeschreibung
    %-keine Vervollständigung für das Argument
    %aAlias
    %A Aliase und Kommandos (WeeChat, IRC und Plugins)
    %cgegenwärtiger Channel
    %CChannels des gegenwärtigen Servers
    %fDateiname
    %hPlugin Kommandos
    %iIRC Kommandos (senden)
    %IIRC Kommandos (empfangen)
    %kGrundfunktionen
    %mNicknamen des gegenwärtigen Servers
    %nNicknamen des gegenwärtigen Channels
    %NNicknamen und Hostnamen des gegenwärtigen Channels
    %oKonfigurationseinstellungen
    %OPlugin Optionen
    %pStandard "part" Nachricht
    %qStandard "quit" Nachricht
    %sName des gegenwärtigen Servers
    %SNamen aller definierten Server
    %tTopic des gegenwärtigen Channels
    %vWert einer Konfigurationseinstellung
    %VWert einer Plugin-Option
    %wWeeChat Kommandos

  • function: Funktion, die aufgerufen wird, wenn das Kommando ausgeführt wird

    Sie verwendet den folgenden Prototypen: int my_function (t_weechat_plugin *plugin, int argc, char **argv, char *handler_args, void *handler_pointer)

    Das Argument argc ist auf 3 gesetzt, das Array argv enthält die folgenden Werte:

    • argv[0] = Server Name

    • argv[1] = Kommando

    • argv[2] = Kommando-Argumente

  • handler_args: Argumente, die an die Funktion übergeben werden

  • handler_pointer: Zeiger, der an die Funktion übergeben wird

Rückgabewert: Zeiger auf den neuen Kommando-Handler.

Hinweis: die Funktion, die aufgerufen wird, wenn das Kommando ausgeführt wird, muss einen der folgende Werte zurückgeben:

  • PLUGIN_RC_KO: Funktion ist fehlgeschlagen

  • PLUGIN_RC_OK: Funktion war erfolgreich

Beispiel:

int cmd_test (t_weechat_plugin *plugin, int argc, char **argv,
              char *handler_args, void *handler_pointer)
{
    plugin->print (plugin, argv[0], NULL,
                   "test command, nick: %s",
                   (argv[2]) ? argv[2] : "none");
    return PLUGIN_RC_OK;
}
...
t_plugin_handler *cmd_handler;
cmd_handler = plugin->cmd_handler_add (plugin, "test", "Test command",
                                       "[nick]", "nick: nick of channel",
                                       "%n", &cmd_test, NULL, NULL);

timer_handler_add

Prototyp: t_plugin_handler *timer_handler_add (t_weechat_plugin *plugin, int interval, t_plugin_handler_func *function, char *handler_args, void *handler_pointer)

Erzeuge einen zeitgesteuerten Handler, der periodisch eine Funktion aufruft.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • interval: Intervall (in Secunden) zwischen zwei Aufrufen der Funktion

  • function: Funktion, die aufgerufen wird

    Sie verwendet den folgenden Prototypen: int my_function (t_weechat_plugin *plugin, int argc, char **argv, char *handler_args, void *handler_pointer)

    Das Argument argc ist auf 0 gesetzt und argv ist auf NULL gesetzt.

  • handler_args: Argumente der aufgerufenen Funktion

  • handler_pointer: Zeiger, der an die Funktion übergeben wird

Rückgabewert: Zeiger auf den neuen timer-Handler.

Hinweis: die Funktion, die aufgerufen wird, muss einen der folgende Werte zurückgeben:

  • PLUGIN_RC_KO: Funktion ist fehlgeschlagen

  • PLUGIN_RC_OK: Funktion war erfolgreich

Beispiel:

int my_timer (t_weechat_plugin *plugin, int argc, char **argv,
              char *handler_args, void *handler_pointer)
{
    plugin->print (plugin, NULL, NULL, "my timer");
    return PLUGIN_RC_OK;
}
...
t_plugin_handler *timer_handler;
timer_handler = plugin->timer_handler_add (plugin, 60, &my_timer);

keyboard_handler_add

Prototyp: t_plugin_handler *keyboard_handler_add (t_weechat_plugin *plugin, t_plugin_handler_func *function, char *handler_args, void *handler_pointer)

Erzeugt einen Keyboard-Handler, der nach dem Drücken einer Taste aufgerufen wird.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • function: Die Funktion, die aufgerufen wird

    Sie verwendet den folgenden Prototypen: int my_function (t_weechat_plugin *plugin, int argc, char **argv, char *handler_args, void *handler_pointer)

    Das Argument argc ist auf 3 gesetzt, argv enthält die folgenden Werte:

    • argv[0] = Taste, die gedrückt wurde (Name der internen Funktion oder '*' gefolgt von einem Tastaturcode)

    • argv[1] = Kommandozeile vor dem Tastendruck

    • argv[2] = Kommandozeile nach dem Tastendruck

  • handler_args: Argumente, die bei Aufruf der Funktion übergeben werden

  • handler_pointer: Zeiger auf die Funktion, der bei Aufruf übergeben wird

Rückgabewert: Zeiger auf den Handler.

Hinweis: Die aufgerufene Funktion muss einen der folgenden Werte zurückgeben:

  • PLUGIN_RC_KO: Funktion ist fehlgeschlagen

  • PLUGIN_RC_OK: Funktion war erfolgreich

Beispiel:

int my_keyb (t_weechat_plugin *plugin, int argc, char **argv,
             char *handler_args, void *handler_pointer)
{
    if (argc == 2)
    {
        plugin->print (plugin, NULL, NULL, "key pressed: %s", argv[0]);
        if (argv[1] && (argv[1][0] == '1'))
            plugin->print (plugin, NULL, NULL, "input text changed");
        else
            plugin->print (plugin, NULL, NULL, "input text not changed");
    }
    return PLUGIN_RC_OK;
}
...
t_plugin_handler *keyb_handler;
keyb_handler = plugin->keyboard_handler_add (plugin, &my_keyb);

event_handler_add

Prototyp: t_plugin_handler *event_handler_add (t_weechat_plugin *plugin, char *event, t_plugin_handler_func *function, char *handler_args, void *handler_pointer)

Fügt einen Ereignishandler hinzu, der aufgerufen wird, wenn ein Ereignis eintritt.

Argumente:

  • plugin: Zeiger auf Plugin-Strukture

  • event : Ereignis, siehe folgende Tabelle:

    EreignisBeschreibung
    buffer_openein Puffer wurde geöffnet
    buffer_closeein Puffer wurde geschlossen

  • function: aufgerufene Funktion

    Es wird folgender Prototyp verwendet: int my_function (t_weechat_plugin *plugin, int argc, char **argv, char *handler_args, void *handler_pointer)

    Argument argc wird auf 1 gesetzt, argv[0] ist die Nummer des Puffers, der geöffnet oder geschlossen wird.

  • handler_args: Argument, die an die aufgerufene Funktion übergeben werden

  • handler_pointer: Pointer, der an die aufgerufene Funktion übergeben werden

Rückgabewert: Pointer auf den neuen Ereignishandler.

Anmerkung: die aufgerufene Function muss einen der folgenden Werte zurückgeben:

  • PLUGIN_RC_KO: Funktion fehlgeschlagen

  • PLUGIN_RC_OK: Funktion erfolgreich beendet

Beispiel:

int my_event (t_weechat_plugin *plugin, int argc, char **argv,
              char *handler_args, void *handler_pointer)
{
    plugin->print (plugin, NULL, NULL, "my_event");
    return PLUGIN_RC_OK;
}
...
t_plugin_handler *event_handler;
event_handler = plugin->event_handler_add (plugin, "buffer_open",
                                           &my_event);

handler_remove

Prototyp: void handler_remove (t_weechat_plugin *plugin, t_plugin_handler *handler)

Entfernt einen Nachrichten- oder Kommando-Handler.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • handler: Handler, der entfernt werden soll

Rückgabewert: keiner

Beispiel:

plugin->handler_remove (plugin, my_handler);

handler_remove_all

Prototyp: void handler_remove_all (t_weechat_plugin *plugin)

Entfernt alle Handler eines Plugins.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

Rückgabewert: keiner

Beispiel:

plugin->handler_remove_all (plugin);

modifier_add

Prototyp: t_plugin_modifier *modifier_add (t_weechat_plugin *plugin, char *type, char *message, t_plugin_modifier_func *function, char *modifier_args, void *modifier_pointer)

Füge einen Nachrichtenmodifikator hinzu.

Argumente:

  • plugin: Zeiger auf Plugin-Struktur

  • type: Modifikatorart:

    ArtBeschreibung
    irc_inwird bei eingehenden IRC-Nachrichten aufgerufen
    irc_user wird bei jeder Benutzernachricht (oder Befehl) aufgerufen (bevor WeeChat die Nachricht parst)
    irc_out wird unmittelbar vor dem Abschicken einer ausgehenden Nachricht an den IRC-Server aufgerufen (auch bei Nachrichten, die WeeChat automatisch an den Server sendet)

  • message: Name der IRC-Nachricht (wird nur bei den Arten "irc_in" and "irc_out" benutzt) Um eine Liste der IRC-Nachrichten zu erhalten, lies bitte folgende Dokumente: RFCs 1459 and 2812. Außerdem gibt es den Wert "*", der alle Nachrichten anspricht (ohne Filter).

  • function: aufgerufene Funktion

    Folgender Prototyp wird dafür benutzt: int my_function (t_weechat_plugin *plugin, int argc, char **argv, char *modifier_args, void *modifier_pointer)

    Argument argc hat den Wert 2, folgende Werte sind in dem argv-Array:

    • argv[0] = Servername

    • argv[1] = Nachricht

  • modifier_args: an die Funktion übergebene Werte

  • modifier_pointer: an die Funktion übergebener Zeiger

Rückgabewert: Zeiger auf den neuen Nachrichtenmodifikator

Anmerkung: Die Funktion muss die veränderte Zeichenkette oder NULL (wenn keine Änderungen erfolgten) zurückgeben. Wenn die Funktion eine leere Zeichenkette zurückgibt, wird die Nachricht komplett verworfen und nicht weiter von WeeChat verarbeitet. (Seien Sie vorsichtig mit dem Verwerfen von Nachrichten!) Die zurückgegebene Zeichenkette muss mit malloc() zugewiesen worden sein und wird von WeeChat nach Gebrauch automatisch mit free() wieder freigegeben.

Beispiel:

char *adder (t_weechat_plugin *plugin, int argc, char **argv,
             char *modifier_args, void *modifier_pointer)
{
    char *string;
    string = (char *)malloc (strlen (argv[1]) + 16);
    strcpy (string, argv[1]);
    strcat (string, "test");
    return string;
}
...
t_plugin_modifier *modifier;
modifier = plugin->modifier_add (plugin, "irc_in", "privmsg",
                                 &adder, NULL, NULL);

modifier_remove

Prototyp: void modifier_remove (t_weechat_plugin *plugin, t_plugin_modifier *modifier)

Entfernt einen Nachrichtenmodifikator.

Arguments:

  • plugin: Zeiger auf Plugin-Struktur

  • modifier: zu entfernender Modifikator

Rückgabewert: keiner

Beispiel:

plugin->modifier_remove (plugin, my_modifier);

modifier_remove_all

Prototyp: void modifier_remove_all (t_weechat_plugin *plugin)

Entfernt alle Modifikatoren für ein Plugin.

Argumente:

  • plugin: Zeiger auf Plugin-Struktur

Rückgabewert: keiner

Beispiel:

plugin->modifier_remove_all (plugin);

exec_command

Prototyp: void exec_command (t_weechat_plugin *plugin, char *server, char *channel, char *command)

Führe ein WeeChat-Kommando aus (oder sende eine Nachricht an einen Channel).

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • server: interner Name des Servers, auf den das Kommando angewendet werden soll (kann NULL sein)

  • channel: Name des Channels, auf den das Kommando angewendet werden soll (kann NULL sein)

  • command: Kommando

Rückgabewert: keiner

Beispiel:

plugin->exec_command (plugin, NULL, NULL, "/help nick");
plugin->exec_command (plugin, "freenode", "#weechat", "hello");

get_info

Prototyp: char *get_info (t_weechat_plugin *plugin, char *info, char *server)

Gib eine Information über WeeChat oder einen Channel zurück.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • info : Name (Typ) der Information:

    InfoBeschreibung
    versionWeeChats Version
    nickNickname
    channel Name des Channels (NULL bei einem Server oder Privatchat)
    serverName des Servers
    type Puffertyp: 0=standard, 1=DCC, 2=raw IRC data
    awayStatus des "away"-Flags
    inactivity Anzahl der Sekunden seit der letzten Tastenbetätigung
    input Inhalt der Kommandozeile im gegenwärtigen Fenster
    input_mask Inhalt der Farbmaske für die Kommandozeile
    input_pos Position des Cursors in der Kommandozeile
    weechat_dir WeeChat-Verzeichnis (Standard: ~/.weechat/)
    weechat_libdirWeeChat-Systemverzeichnis (Bibliotheken)
    weechat_sharedirWeeChat-Systemverzeichnis (gemeinsame Dateien)

  • server: interner Name des Servers um Informationen zu lesen (wenn benötigt)

Rückgabewert: angeforderte Information oder NULL

Hinweis: das Ergebnis muss nach Nutzung mit "free" wieder freigegeben werden.

Beispiele:

char *version = plugin->get_info (plugin, "version", NULL);
char *nick = plugin->get_info (plugin, "nick", "freenode");
char *inactivity = plugin->get_info (plugin, "inactivity", NULL);

plugin->print (plugin, NULL, NULL,
               "WeeChat version %s, you are %s on freenode "
               "(inactive for %s seconds)",
               version, nick, inactivity);

if (version)
	free (version);
if (nick)
	free (nick);
if (inactivity)
	free (inactivity);

get_dcc_info

Prototyp: t_plugin_info_dcc *get_dcc_info (t_weechat_plugin *plugin)

Gib eine Liste der aktiven oder beendeten DCCs zurück.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

Rückgabewert: verkettete Liste von DCCs.

TypFeldBeschreibung
char *serverIRC Server
char *channelIRC Channel
inttype DCC Typ: 0 = Chatanfrage empfangen, 1 = Chatanfrage gesendet, 2 = Datei empfangen, 3 = Datei gesendet
int*status DCC Status: 0 = wartend, 1 = verbindend, 2 = aktiv, 3 = beendet, 4 = fehlgeschlagen, 5 = unterbrochen durch Anwender
time_tstart_timeDatum/Zeit der Erzeugung der DCC
time_tstart_transferDatum/Zeit des Beginns der Übertragung der DCC
unsigned longaddrIP-Adresse des Partners
intportPort der DCC
char *nickNickname des Partners
char *filenameDateiname
char *local_filenamelokaler Dateiname
intfilename_suffixSuffix wenn die Datei umbenannt wird
unsigned longsizeDateigrösse
unsigned longposPosition in Datei
unsigned longstart_resumeStartposition nach einer Unterbrechung
unsigned longbytes_per_sec Übertragungsrate (Bytes/s) seit Beginn der Übertragung
t_plugin_dcc_info *prev_dcc Zeiger auf voheriges DCC-Info
t_plugin_dcc_info *next_dcc Zeiger auf nächstes DCC-Info

Hinweis: Das Ergebnis muss nach der Benutzung mittels "free_dcc_info" wieder freigegeben werden.

Beispiele:

t_plugin_dcc_info *dcc_info = plugin->get_dcc_info (plugin);
for (ptr_dcc = dcc_info; ptr_dcc; ptr_dcc = ptr_dcc->next_dcc)
{
    plugin->print_server (plugin, "DCC type=%d, with: %s",
                          ptr_dcc->type, ptr_dcc->nick);
}
if (dcc_info)
    plugin->free_dcc_info (plugin, dcc_info);

free_dcc_info

Prototyp: void free_dcc_info (t_weechat_plugin *plugin, t_plugin_dcc_info *dcc_info)

Gibt den Speicher einer Liste von DCC-Infos wieder frei.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • dcc_info: Zeiger auf eine Liste mit DCC-Infos, die mit "get_dcc_info" angelegt wurde

Rückgabewert: keiner.

Beispiel:

plugin->free_dcc_info (plugin, dcc_info);

get_server_info

Prototyp: t_plugin_server_info *get_server_info (t_weechat_plugin *plugin)

Gibt die Liste von IRC-Servern zurück (verbunden oder nicht)

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

Rückgabewert: Liste von IRC-Servern.

TypFeldBeschreibung
char *nameinterner Servername
intautoconnect1 wenn Autoconnect gesetzt ist, 0 sonst
intautoreconnect 1 wenn autoreconnect gesetzt ist, 0 sonst
intautoreconnect_delayWartezeit vor erneutem Verbindungsversuch
intcommand_line 1 wenn der Servername auf der Kommandozeile angegeben wurde (ist somit temporär) 0 sonst
char *addressServeradresse (Name oder IP)
intportPort
intipv6IPv6-Verbindung
intsslSSL-Verbindung
char *passwordPasswort
char *nick1primärer Nickname
char *nick2alternativer Nickname
char *nick3zweiter, alternativer Nickname
char *usernameUsername
char *real nametatsächlicher Name
char *commandKommando, dass bei erfolgreicher Verbindung ausgeführt wurde
intcommand_delayVerzögerung nach Ausführung des Kommandos
char *autojoinChannels, die automatisch betreten werden sollen
intautorejoin 1 wenn Channels wieder betreten werden sollen, nachdem man gekickt wurde 0 sonst
char *notify_levelsBenachrichtigungs-Level von Channels
char *charset_decode_isoZeichensatz zum Dekodieren von ISO
char *charset_decode_utfZeichensatz zum Dekodieren von UTF
char *charset_encodeZeichensatz der Channels zum Kodieren von Nachrichten
intis_connected1 wenn verbunden mit einem Server, 0 otherwise
intssl_connected1 wenn verbunden über SSL, 0 sonst
char *nickgegenwärtiger Nickname
intis_away1 wenn away-flag gesetzt ist, 0 sonst
time_taway_timeZeitspanne seit away-flag gesetzt ist
intlagLag (in Millisekunden)
t_plugin_server_info *prev_serverZeiger auf vorherigen Knoten der Liste
t_plugin_server_info *next_serverZeiger auf nächsten Knoten der Liste

Hinweis: das Ergebnis muss nach der Benutzung mit "free_server_info" wieder freigegeben werden.

Beispiel:

t_plugin_server_info *server_info, *ptr_server_info;
server_info = plugin->get_server_info (plugin);
if (server_info)
{
    for (ptr_server_info = server_info; ptr_server_info;
         ptr_server_info = ptr_server_info->next_server)
    {
        plugin->print (plugin, NULL, NULL,
                       "server: %s, address: %s, port: %d %s",
                       ptr_server_info->name,
                       ptr_server_info->address,
                       ptr_server_info->port,
                       (ptr_server_info->is_connected) ? "(connected)" : "");
    }
    plugin->free_server_info (plugin, server_info);
}

free_server_info

Prototyp: void free_server_info (t_weechat_plugin *plugin, t_plugin_server_info *server_info)

Gib den Speicher einer Liste "server info" frei

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • server_info: Zeiger auf eine Server-Liste, der von der Funktion "get_server_info" zurückgegeben wurde.

Rückgabewert: keiner.

Beispiel:

plugin->free_server_info (plugin, server_info);

get_channel_info

Prototyp: t_plugin_channel_info *get_channel_info (t_weechat_plugin *plugin, char *server)

Gib eine Liste der Channels für einen Server zurück.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • server: interner Name des Server

Rückgabewert: verkettete Liste von Channels für einen Server.

TypFeldBeschreibung
inttype0 für einen normalen Channel, 1 für einen Privaten
char *nameName des Channels
char *topicTopic des Channels
char *modesChannelmodus (Flags)
intlimitAnzahl der erlaubten User
char *keySchlüssel des Channels
intnicks_countAnzahl der Nicknamen des Channels
t_plugin_channel_info *prev_channelZeiger auf vorherigem Knoten der Liste
t_plugin_channel_info *next_channelZeiger auf nächsten Knoten der Liste

Hinweis: Das Ergebnis muss nach der Benutzung mit "free_channel_info" wieder freigegeben werden.

Beispiel:

t_plugin_channel_info *channel_info, *ptr_chan_info;
channel_info = plugin->get_channel_info (plugin, "freenode");
if (channel_info)
{
    for (ptr_chan_info = channel_info; ptr_chan_info;
         ptr_chan_info = ptr_chan_info->next_channel)
    {
        plugin->print (plugin, NULL, NULL,
                       "  %s (type %d)",
                       ptr_chan_info->name,
                       ptr_chan_info->type);
    }
    plugin->free_channel_info (plugin, channel_info);
}

free_channel_info

Prototyp: void free_channel_info (t_weechat_plugin *plugin, t_plugin_channel_info *channel_info)

Gibt den Speicher einer Liste "channel info" wieder frei.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • channel_info: Zeiger auf eine Liste "channel info", der von "get_channel_info" zurückgegeben wurde

Rückgabewert: keiner.

Beispiel:

plugin->free_channel_info (plugin, channel_info);

get_nick_info

Prototyp: t_plugin_nick_info *get_nick_info (t_weechat_plugin *plugin, char *server, char *channel)

Gib eine Liste der Nicknamen für einen Channel zurück.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • server: interner Name des Servers

  • channel: Name des Channels

Rückgabewert: verkettete Liste von Nicknamen eines Channels.

TypFeldBeschreibung
char *nickNickname
char *hostHostname
intFlags Flags, die für einen Nicknamen gesetzt sind: Zweierpotenzen "oder" Zwischenwerte (1 = channel owner, 2 = channel admin, 4 = op, 8 = halfop, 16 = voice, 32 = away)
t_plugin_nick_info *prev_nickZeiger auf vorherigen Knoten der Liste
t_plugin_nick_info *next_nickZeiger auf nächsten Knoten der Liste

Hinweis: Das Ergebnis muss nach der Benutzung mit "free_nick_info" wieder freigegeben werden.

Beispiel:

t_plugin_nick_info *nick_info, *ptr_nick_info;
nick_info = plugin->get_nick_info (plugin, "freenode", "#weechat");
if (nick_info)
{
    for (ptr_nick_info = nick_info; ptr_nick_info;
         ptr_nick_info = ptr_nick_info->next_nick)
    {
        plugin->print (plugin, NULL, NULL,
                       "  %s (flags: %d)",
                       ptr_nick_info->nick,
                       ptr_nick_info->flags);
    }
    plugin->free_nick_info (plugin, nick_info);
}

free_nick_info

Prototyp: void free_nick_info (t_weechat_plugin *plugin, t_plugin_nick_info *nick_info)

Gibt den Speicher einer Liste "nick info" frei.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • nick_info: Zeiger auf eine Liste "nick info", der von "get_nick_info" zurückgegeben wurde

Rückgabewert: keiner.

Beispiel:

plugin->free_nick_info (plugin, nick_info);

get_config

Prototyp: char *get_config (t_weechat_plugin *plugin, char *option)

Gibt den Wert einer Option der WeeChat-Konfiguration zurück.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • option: Name der Option

Rückgabewert: Wert der Option, oder NULL, wenn nichts gefunden wurde.

Hinweis: Das Ergebnis muss nach der Benutzung mit "free" wieder freigegeben werden.

Beispiel:

char *value1 = plugin->get_config (plugin, "look_set_title");
char *value2 = plugin->get_config (plugin, "freenode.server_autojoin");

set_config

Prototyp: int set_config (t_weechat_plugin *plugin, char *option, char *value)

Setze den Wert einer Option der WeeChat-Konfiguration.

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • option: Name der Option

  • value: der neue Wert der Option

Rückgabewert: 1 wenn der Wert der Option gesetzt werden konnte, 0 bei Auftreten eines Fehlers.

Beispiel:

plugin->set_config (plugin, "look_nicklist", "off");

get_plugin_config

Prototyp: char *get_plugin_config (t_weechat_plugin *plugin, char *option)

Gibt den Wert einer Option eines Plugins zurück. Die Option wird aus "~/.weechat/plugins.rc" gelesen und sieht so aus: "plugin.option=value" (Hinweis: der Name des Plugins wird automatisch gesetzt).

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • option: Name der Option

Rückgabewert: Wert der Option, NULL wenn nichts gefunden wurde.

Hinweis: Das Ergebnis muss nach der Benutzung mit "free" wieder freigegeben werden.

Beispiel:

char *value = plugin->get_plugin_config (plugin, "my_var");

set_plugin_config

Prototyp: int set_plugin_config (t_weechat_plugin *plugin, char *option, char *value)

Setzt den Wert einer Option eines Plugins. Die Option wird in die Datei "~/.weechat/plugins.rc" geschrieben und sieht so aus: "plugin.option=value" (Hinweis: der Name des Plugins wird automatisch gesetzt)

Argumente:

  • plugin: Zeiger auf eine Plugin-Struktur

  • option: Name der Option, die gesetzt werden soll

  • value: Wert der zu setzenden Option

Rückgabewert: 1 wenn die Option gesetzt werden konnte, 0 wenn ein Fehler aufgetreten ist.

Beispiel:

plugin->set_plugin_config (plugin, "my_var", "value");

get_irc_color

Prototype: int get_irc_color (t_weechat_plugin *plugin, char *color_name)

Hole IRC-Farbindex mit dem Farbnamen.

Argumente:

  • plugin: Zeiger auf die Pluginstruktur

  • color_name: Farbname Folgende Farben sind erlaubt:

    FarbnameWert
    white0
    black1
    blue2
    green3
    lightred4
    red5
    magenta6
    brown7
    yellow8
    lightgreen9
    cyan10
    lightcyan11
    lightblue12
    lightmagenta13
    gray14
    lightgray15

Rückgabewert: IRC-Farbindex, -1 wenn die Farbe nicht gefunden wurde.

Beispiel:

int color_blue = plugin->get_irc_color (plugin, "blue"); /* return 2 */

input_color

Prototyp: void input_color (t_weechat_plugin *plugin, int color, int start, int length)

Erzeugt einen Farbcode im Eingabepuffer.

Argumente:

  • plugin: Zeiger auf die Pluginstruktur

  • color: Textfarbe (wenn der Wert < 0 ist, dann wird der Eingabepuffer aufgefrischt und nicht verändert)

  • start: Startposition für Einfärbung (wenn der Wert < 0 ist, wird die Maske neu initialisiert)

  • length: Länge der Einfärbung (wenn der Wert <= 0 ist, wird die Maske neu initialisiert)

Rückgabewert: keiner.

Beispiele:

plugin->input_color (plugin, plugin->get_irc_color (plugin, "blue"), 10, 5);

get_window_info

Prototype: t_plugin_window_info *get_window_info (t_weechat_plugin *plugin)

Gibt die Liste der WeeChat-Fenster zurück.

Argumente:

  • plugin: Zeiger auf Pluginstruktur

Rückgabewert: verkettete Liste der WeeChat-Fenster.

TypFeldBeschreibung
intwin_xhorizontale Fensterposition
intwin_yvertikale Fensterposition
intwin_widthFensterbreite
intwin_heightFensterhöhe
intwin_width_pctBreite in % (im Vergleich zum übergeordneten Fenster)
intwin_height_pctHöhe % (im Vergleich zum übergeordneten Fenster)
intnum_bufferAnzahl der angezeigten Puffer
t_plugin_window_info *prev_windowZeiger auf die Informationen des vorhergehenden Fensters
t_plugin_window_info *next_windowZeiger auf die Informationen des nächsten Fensters

Anmerkung: Das Ergebnis muss nach Benutzung durch einen Aufruf der "free_window_info"-Funktion gelöscht werden.

Example:

t_plugin_window_info *window_info, *ptr_window;

window_info = plugin->get_window_info (plugin);
if (window_info)
{
    for (ptr_window = window_info; ptr_window; ptr_window = ptr_window->next_window)
    {
        plugin->print (plugin, NULL, NULL, "--- window info ---");
        plugin->print (plugin, NULL, NULL, "(%d,%d), size: %dx%d, %%size: %d%%x%d%%",
                       ptr_window->win_x, ptr_window->win_y,
                       ptr_window->win_width, ptr_window->win_height,
                       ptr_window->win_width_pct, ptr_window->win_height_pct);
        plugin->print (plugin, NULL, NULL, "num_buffer: %d", ptr_window->num_buffer);
    }
    plugin->free_window_info (plugin, window_info);
}
else
    plugin->print (plugin, NULL, NULL, "no window info!");

free_window_info

Prototyp: void free_window_info (t_weechat_plugin *plugin, t_plugin_window_info *window_info)

Gibt den Speicher wieder frei, der von der Fenster-Informationsliste belegt wird.

Argumente:

  • plugin: Zeiger auf Pluginstruktur

  • window_info: Zeiger auf Fenster-Informationsliste, der von der "get_window_info"-Funktion zurückgegeben wurde

Rückgabewert: keiner.

Beispiel:

plugin->free_window_info (plugin, window_info);

get_buffer_info

Prototyp: t_plugin_buffer_info *get_buffer_info (t_weechat_plugin *plugin)

Gibt eine Liste der WeeChat-Puffer zurück.

Argumente:

  • plugin: Zeiger auf Pluginstruktur

Rückgabewert: verkettete Liste der WeeChat-Puffer.

TypFeldBeschreibung
inttypePuffertyp: 0=standard, 1=DCC, 2=raw IRC data
intnumberPuffer-Nummer
intnum_displayedAnzahl der Fenster im Puffer
char *server_nameServername für den Puffer (kann NULL sein)
char *channel_nameChannelname für den Puffer (kann NULL sein)
intnotify_levelBenachrichtigungslevel für den Puffer
char *log_filenameName der Logdatei (NULL bedeutet, dass nichts geloggt wird)
t_plugin_buffer_info *prev_bufferZeiger auf die vorhergehenden Pufferinformationen
t_plugin_buffer_info *next_bufferZeiger auf die nächsten Pufferinformationen

Bemerkung: Das Ergebnis muss nach der Auswertung mit der "free_buffer_info"-Funktion wieder gelöscht werden.

Beispiel:

t_plugin_buffer_info *buffer_info, *ptr_buffer;

buffer_info = plugin->get_buffer_info (plugin);
if (buffer_info)
{
    for (ptr_buffer = buffer_info; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer)
    {
        plugin->print (plugin, NULL, NULL, "--- buffer info ---");
        plugin->print (plugin, NULL, NULL, "type: %d", ptr_buffer->type);
        plugin->print (plugin, NULL, NULL, "number: %d", ptr_buffer->number);
        plugin->print (plugin, NULL, NULL, "num_displayed: %d", ptr_buffer->num_displayed);
        plugin->print (plugin, NULL, NULL, "server: %s", ptr_buffer->server_name);
        plugin->print (plugin, NULL, NULL, "channel: %s", ptr_buffer->channel_name);
        plugin->print (plugin, NULL, NULL, "notify level: %d", ptr_buffer->notify_level);
        plugin->print (plugin, NULL, NULL, "log filename: %s", ptr_buffer->log_filename);
    }
    plugin->free_buffer_info (plugin, buffer_info);
}
else
    plugin->print (plugin, NULL, NULL, "no buffer info!");

free_buffer_info

Prototyp: void free_buffer_info (t_weechat_plugin *plugin, t_plugin_buffer_info *buffer_info)

Gibt den Speicher frei, der von der Puffer-Informationsliste belegt wird.

Argumente:

  • plugin: Zeiger auf Pluginstruktur

  • buffer_info: pointer to buffer info list returned by "get_buffer_info" function

Rückgabewert: keiner.

Beispiel:

plugin->free_buffer_info (plugin, buffer_info);

get_buffer_data

Prototype: t_plugin_buffer_data *get_buffer_info (t_weechat_plugin *plugin, char *server, char *channel)

Gibt den Inhalt des Puffers zurück.

Argumente:

  • plugin: Zeiger auf Pluginstruktur

  • server: interner Name des Servers

  • channel: Channelname

Rückgabewert: Pufferinhalt (verkettete Liste mit den Zeilen).

TypFeldBeschreibung
time_tdateDatum/Zeit
char *nickNick
char *dataZeileninhalt (Farbcodes wurden entfernt)
t_plugin_buffer_line *prev_lineZeiger auf die vorherige Zeile
t_plugin_buffer_line *next_lineZeiger auf die nächste Zeile

Bemerkung: Das Ergebnis muss nach der Auswertung mit der "free_buffer_data"-Funktion wieder gelöscht werden.

Example:

t_plugin_buffer_line *buffer_line, *ptr_line;
char text_time[256];

buffer_line = plugin->get_buffer_data (plugin);
if (buffer_line)
{
    for (ptr_line = buffer_line; ptr_line; ptr_line = ptr_line->next_line)
    {
        strftime (text_time, sizeof (text_time), "%x %X", localtime (&(ptr_line->date)));
        plugin->print (plugin, NULL, NULL, "date: %s, nick: %s, data: %s",
                       text_time, ptr_line->nick, ptr_line->data);
    }
    plugin->free_buffer_data (plugin, buffer_line);
}

free_buffer_data

Prototype: void free_buffer_data (t_weechat_plugin *plugin, t_plugin_buffer_line *buffer_line)

Gibt den Speicher frei, der von den Pufferzeilen belegt wurde.

Arguments:

  • plugin: Zeiger auf Pluginstruktur

  • buffer_line: Zeiger auf Pufferzeilen, der von der "get_buffer_data"-Funktion zurückgegeben wurde

Rückgabewert: keiner.

Beispiele:

plugin->free_buffer_data (plugin, buffer_line);