API Funktionen

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
handler_remove
handler_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

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

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

Create a directory in WeeChat home.

Arguments:

  • plugin: pointer to plugin structure

  • directory: directory to create

Return value: 1 if directory was successfully created, 0 if an error occurred.

Example:

if (!plugin->mkdir_home (plugin, "temp"))
    plugin->print_server(plugin, "Failed to create 'temp' directory in WeeChat home.");

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. 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

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;
}
...
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
    %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;
}
...
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;
}
...
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 keyb_handler (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;
}
...
plugin->keyboard_handler_add (plugin, &keyb_handler);

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);

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
    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)

Get IRC color index with name.

Arguments:

  • plugin: pointer to plugin structure

  • color_name: color name Allowed colors are:

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

Return value: IRC color index, -1 if color is not found.

Example:

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

input_color

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

Add color in input buffer.

Arguments:

  • plugin: pointer to plugin structure

  • color: color for text (if < 0, then input buffer is refresh, and there's no change in input buffer content)

  • start: start position for color (if < 0, then mask is reinitialized)

  • length: length for color (if <= 0, then mask is reinitialized)

Return value: none.

Example:

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)

Return list of WeeChat windows.

Arguments:

  • plugin: pointer to plugin structure

Return value: linked list of WeeChat windows.

TypeFieldDescription
intwin_xhorizontal position of window
intwin_yvertical position of window
intwin_widthwidth of window
intwin_heightheight of window
intwin_width_pctwidth % (compared to parent window)
intwin_height_pctheight % (compared to parent window)
intnum_buffernumber of displayed buffer
t_plugin_window_info *prev_windowpointer to previous window info
t_plugin_window_info *next_windowpointer to next window info

Note: result has to be free by a call to "free_window_info" function after use.

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

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

Free memory used by window info list.

Arguments:

  • plugin: pointer to plugin structure

  • window_info: pointer to window info list returned by "get_window_info" function

Return value: none.

Example:

plugin->free_window_info (plugin, window_info);

get_buffer_info

Prototype: t_plugin_buffer_info *get_buffer_info (t_weechat_plugin *plugin)

Return list of WeeChat buffers.

Arguments:

  • plugin: pointer to plugin structure

Return value: linked list of WeeChat buffers.

TypeFieldDescription
inttypebuffer type: 0=standard, 1=dcc, 2=raw IRC data
intnumberbuffer number
intnum_displayednumber of windows displaying buffer
char *server_nameserver name for buffer (may be NULL)
char *channel_namechannel name for buffer (may be NULL)
intnotify_levelnotify level for buffer
char *log_filenamelog filename (NULL means not logging)
t_plugin_buffer_info *prev_bufferpointer to previous buffer info
t_plugin_buffer_info *next_bufferpointer to next buffer info

Note: result has to be free by a call to "free_buffer_info" function after use.

Example:

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

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

Free memory used by buffer info list.

Arguments:

  • plugin: pointer to plugin structure

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

Return value: none.

Example:

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)

Return content of buffer.

Arguments:

  • plugin: pointer to plugin structure

  • server: internal name of server

  • channel: channel name

Return value: buffer content (linked list of lines).

TypeFieldDescription
char *nicknick
char *dataline content (color codes are removed)
t_plugin_buffer_line *prev_linepointer to previous line
t_plugin_buffer_line *next_linepointer to next line

Note: result has to be free by a call to "free_buffer_data" function after use.

Example:

t_plugin_buffer_line *buffer_line, *ptr_line;

buffer_line = plugin->get_buffer_data (plugin);
if (buffer_line)
{
    for (ptr_line = buffer_line; ptr_line; ptr_line = ptr_line->next_line)
    {
        plugin->print (plugin, NULL, NULL, "nick: %s, data: %s", 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)

Free memory used by buffer line list.

Arguments:

  • plugin: pointer to plugin structure

  • buffer_line: pointer to buffer line list returned by "get_buffer_data" function

Return value: none.

Example:

plugin->free_buffer_data (plugin, buffer_line);