forked from PsychoticNinja/irssi
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@172 dbcabf3a-b0e7-0310-adc4-f8d773084564
934 lines
19 KiB
Plaintext
934 lines
19 KiB
Plaintext
/* This could be split to different files / modules ..? */
|
|
#include "EXTERN.h"
|
|
#include "perl.h"
|
|
#include "XSUB.h"
|
|
|
|
#undef _
|
|
#include <irssi-plugin.h>
|
|
#include <irc-base/server-setup.h>
|
|
#include <irc-base/server-reconnect.h>
|
|
#include <irc-base/server-redirect.h>
|
|
|
|
typedef SERVER_REC *Irssi__Server;
|
|
typedef SERVER_CONNECT_REC *Irssi__Connect;
|
|
typedef RECONNECT_REC *Irssi__Reconnect;
|
|
typedef CHANNEL_REC *Irssi__Channel;
|
|
typedef COMMAND_REC *Irssi__Command;
|
|
typedef NICK_REC *Irssi__Nick;
|
|
typedef BAN_REC *Irssi__Ban;
|
|
typedef DCC_REC *Irssi__Dcc;
|
|
typedef NETSPLIT_REC *Irssi__Netsplit;
|
|
typedef AUTOIGNORE_REC *Irssi__Autoignore;
|
|
typedef LOG_REC *Irssi__Log;
|
|
typedef LOG_ITEM_REC *Irssi__Logitem;
|
|
typedef PLUGIN_REC *Irssi__Plugin;
|
|
|
|
#define new_pv(a) (newSVpv((a) == NULL ? "" : (a), (a) == NULL ? 0 : strlen(a)))
|
|
|
|
void add_connect_hash(HV *hv, SERVER_CONNECT_REC *conn)
|
|
{
|
|
hv_store(hv, "address", 7, new_pv(conn->address), 0);
|
|
hv_store(hv, "port", 4, newSViv(conn->port), 0);
|
|
hv_store(hv, "password", 8, new_pv(conn->password), 0);
|
|
|
|
hv_store(hv, "ircnet", 6, new_pv(conn->ircnet), 0);
|
|
hv_store(hv, "wanted_nick", 11, new_pv(conn->nick), 0);
|
|
hv_store(hv, "alternate_nick", 14, new_pv(conn->alternate_nick), 0);
|
|
hv_store(hv, "username", 8, new_pv(conn->username), 0);
|
|
hv_store(hv, "realname", 8, new_pv(conn->realname), 0);
|
|
hv_store(hv, "autojoin_channels", 17, new_pv(conn->autojoin_channels), 0);
|
|
}
|
|
|
|
MODULE = Irssi PACKAGE = Irssi
|
|
|
|
PROTOTYPES: ENABLE
|
|
|
|
Irssi::Channel
|
|
cur_channel()
|
|
CODE:
|
|
RETVAL = cur_channel;
|
|
OUTPUT:
|
|
RETVAL
|
|
|
|
Irssi::Server
|
|
cur_server()
|
|
CODE:
|
|
RETVAL = cur_channel->server;
|
|
OUTPUT:
|
|
RETVAL
|
|
|
|
void
|
|
channels()
|
|
PREINIT:
|
|
GSList *tmp;
|
|
HV *stash;
|
|
PPCODE:
|
|
stash = gv_stashpv("Irssi::Channel", 0);
|
|
for (tmp = channels; tmp != NULL; tmp = tmp->next) {
|
|
XPUSHs(sv_2mortal(sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(tmp->data))), stash)));
|
|
}
|
|
|
|
void
|
|
servers()
|
|
PREINIT:
|
|
GSList *tmp;
|
|
HV *stash;
|
|
PPCODE:
|
|
stash = gv_stashpv("Irssi::Server", 0);
|
|
for (tmp = servers; tmp != NULL; tmp = tmp->next) {
|
|
XPUSHs(sv_2mortal(sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(tmp->data))), stash)));
|
|
}
|
|
|
|
void
|
|
commands()
|
|
PREINIT:
|
|
GSList *tmp;
|
|
HV *stash;
|
|
PPCODE:
|
|
stash = gv_stashpv("Irssi::Command", 0);
|
|
for (tmp = commands; tmp != NULL; tmp = tmp->next) {
|
|
XPUSHs(sv_2mortal(sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(tmp->data))), stash)));
|
|
}
|
|
|
|
void
|
|
dccs()
|
|
PREINIT:
|
|
GSList *tmp;
|
|
HV *stash;
|
|
PPCODE:
|
|
stash = gv_stashpv("Irssi::Dcc", 0);
|
|
for (tmp = dcc_conns; tmp != NULL; tmp = tmp->next) {
|
|
XPUSHs(sv_2mortal(sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(tmp->data))), stash)));
|
|
}
|
|
|
|
void
|
|
logs()
|
|
PREINIT:
|
|
GSList *tmp;
|
|
HV *stash;
|
|
PPCODE:
|
|
stash = gv_stashpv("Irssi::Log", 0);
|
|
for (tmp = logs; tmp != NULL; tmp = tmp->next) {
|
|
XPUSHs(sv_2mortal(sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(tmp->data))), stash)));
|
|
}
|
|
|
|
void
|
|
plugins()
|
|
PREINIT:
|
|
GSList *tmp;
|
|
HV *stash;
|
|
PPCODE:
|
|
stash = gv_stashpv("Irssi::Plugin", 0);
|
|
for (tmp = plugins; tmp != NULL; tmp = tmp->next) {
|
|
XPUSHs(sv_2mortal(sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(tmp->data))), stash)));
|
|
}
|
|
|
|
Irssi::Connect
|
|
server_create_conn(dest, port=6667, password=NULL, nick=NULL, channels=NULL)
|
|
char *dest
|
|
int port
|
|
char *password
|
|
char *nick
|
|
char *channels
|
|
|
|
Irssi::Server
|
|
server_find_tag(tag)
|
|
char *tag
|
|
|
|
Irssi::Server
|
|
server_find_ircnet(ircnet)
|
|
char *ircnet
|
|
|
|
Irssi::Channel
|
|
channel_find(channel)
|
|
char *channel
|
|
CODE:
|
|
RETVAL = channel_find(NULL, channel);
|
|
OUTPUT:
|
|
RETVAL
|
|
|
|
void
|
|
print(str)
|
|
char *str
|
|
CODE:
|
|
printtext(NULL, NULL, MSGLEVEL_CLIENTNOTICE, str);
|
|
|
|
void
|
|
signal_emit(signal, ...)
|
|
char *signal
|
|
CODE:
|
|
void *p[6];
|
|
int n;
|
|
|
|
memset(p, 0, sizeof(p));
|
|
for (n = 1; n < items && n < 6; n++) {
|
|
p[n-1] = SvPOKp(ST(n)) ? SvPV(ST(n), PL_na) : (void *) SvIV((SV*)SvRV(ST(n)));
|
|
}
|
|
signal_emit(signal, items-1, p[0], p[1], p[2], p[3], p[4], p[5]);
|
|
|
|
void
|
|
signal_add(signal, func)
|
|
char *signal
|
|
char *func
|
|
CODE:
|
|
perl_signal_add(signal, func);
|
|
|
|
void
|
|
signal_add_last(signal, func)
|
|
char *signal
|
|
char *func
|
|
CODE:
|
|
perl_signal_add_last(signal, func);
|
|
|
|
void
|
|
signal_remove(signal, func)
|
|
char *signal
|
|
char *func
|
|
CODE:
|
|
perl_signal_remove(signal, func);
|
|
|
|
int
|
|
timeout_add(msecs, func, data)
|
|
int msecs
|
|
char *func
|
|
char *data
|
|
CODE:
|
|
RETVAL = perl_timeout_add(msecs, func, data);
|
|
OUTPUT:
|
|
RETVAL
|
|
|
|
void
|
|
timeout_remove(tag)
|
|
int tag
|
|
CODE:
|
|
perl_timeout_remove(tag);
|
|
|
|
void
|
|
command_bind(cmd, category, func)
|
|
char *cmd
|
|
char *category
|
|
char *func
|
|
CODE:
|
|
char *signal;
|
|
|
|
command_bind(cmd, *category ? category : "Perl scripts' commands", NULL);
|
|
signal = g_strconcat("command ", cmd, NULL);
|
|
perl_signal_add(signal, func);
|
|
g_free(signal);
|
|
|
|
void
|
|
command_unbind(cmd, func)
|
|
char *cmd
|
|
char *func
|
|
CODE:
|
|
char *signal;
|
|
|
|
command_unbind(cmd, NULL);
|
|
signal = g_strconcat("command ", cmd, NULL);
|
|
perl_signal_remove(signal, func);
|
|
g_free(signal);
|
|
|
|
void
|
|
command(cmd, server=cur_channel->server, channel=cur_channel)
|
|
char *cmd
|
|
Irssi::Server server
|
|
Irssi::Channel channel
|
|
CODE:
|
|
signal_emit("send command", 3, cmd, server, channel);
|
|
|
|
int
|
|
is_channel(text)
|
|
char *text
|
|
CODE:
|
|
RETVAL = ischannel(*text);
|
|
OUTPUT:
|
|
RETVAL
|
|
|
|
int
|
|
irc_mask_match(mask, nick, user, host)
|
|
char *mask
|
|
char *nick
|
|
char *user
|
|
char *host
|
|
|
|
int
|
|
irc_mask_match_address(mask, nick, address)
|
|
char *mask
|
|
char *nick
|
|
char *address
|
|
|
|
int
|
|
irc_masks_match(masks, nick, address)
|
|
char *masks
|
|
char *nick
|
|
char *address
|
|
|
|
char *
|
|
irc_get_mask(nick, host, flags)
|
|
char *nick
|
|
char *host
|
|
int flags
|
|
|
|
int
|
|
level2bits(str)
|
|
char *str
|
|
|
|
char *
|
|
bits2level(bits)
|
|
int bits
|
|
|
|
int
|
|
combine_level(level, str)
|
|
int level
|
|
char *str
|
|
|
|
Irssi::Dcc
|
|
dcc_find_item(type, nick, arg)
|
|
int type
|
|
char *nick
|
|
char *arg
|
|
|
|
Irssi::Dcc
|
|
dcc_find_by_port(nick, port)
|
|
char *nick
|
|
int port
|
|
|
|
char *
|
|
dcc_type2str(type)
|
|
int type
|
|
|
|
int
|
|
dcc_str2type(type)
|
|
char *type
|
|
|
|
void
|
|
ignore_add(mask, level)
|
|
char *mask
|
|
char *level
|
|
|
|
void
|
|
ignore_remove(mask, level)
|
|
char *mask
|
|
char *level
|
|
|
|
Irssi::Log
|
|
log_create(fname, data)
|
|
char *fname
|
|
char *data
|
|
|
|
Irssi::Log
|
|
log_create_with_level(fname, level)
|
|
char *fname
|
|
int level
|
|
|
|
Irssi::Log
|
|
log_file_find(fname)
|
|
char *fname
|
|
|
|
void
|
|
notifylist_add(nick, ircnet)
|
|
char *nick
|
|
char *ircnet
|
|
|
|
Irssi::Server
|
|
notifylist_ison(nick, serverlist)
|
|
char *nick
|
|
char *serverlist
|
|
|
|
int
|
|
plugin_load(name, args)
|
|
char *name
|
|
char *args
|
|
|
|
char *
|
|
plugin_get_description(name)
|
|
char *name
|
|
|
|
Irssi::Plugin
|
|
plugin_find(name)
|
|
char *name
|
|
|
|
void
|
|
setup_get(option)
|
|
char *option
|
|
PREINIT:
|
|
char *ret;
|
|
PPCODE:
|
|
switch(setup_option_type(option)) {
|
|
case SETUP_TYPE_TOGGLEBUTTON:
|
|
XPUSHs(sv_2mortal(newSViv(setup_get_bool(option))));
|
|
break;
|
|
case SETUP_TYPE_SPIN:
|
|
case SETUP_TYPE_INT_OBJECT:
|
|
XPUSHs(sv_2mortal(newSViv(setup_get_int(option))));
|
|
break;
|
|
case SETUP_TYPE_ENTRY:
|
|
ret = setup_get_str(option);
|
|
XPUSHs(sv_2mortal(newSVpv(ret, strlen(ret))));
|
|
break;
|
|
}
|
|
|
|
|
|
#*******************************************************
|
|
MODULE = Irssi PACKAGE = Irssi::Server PREFIX = server_
|
|
#*******************************************************
|
|
|
|
void
|
|
send_raw(server, cmd)
|
|
Irssi::Server server
|
|
char *cmd
|
|
CODE:
|
|
irc_send_cmd(server, cmd);
|
|
|
|
void
|
|
command(server, cmd, channel=cur_channel)
|
|
char *cmd
|
|
Irssi::Server server
|
|
Irssi::Channel channel
|
|
CODE:
|
|
if (channel->server != server) {
|
|
GSList *tmp;
|
|
|
|
for (tmp = channels; tmp != NULL; tmp = tmp->next) {
|
|
CHANNEL_REC *rec = tmp->data;
|
|
|
|
if (rec->server == server) {
|
|
channel = rec;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
signal_emit("send command", 3, cmd, server, channel);
|
|
|
|
void
|
|
server_disconnect(server)
|
|
Irssi::Server server
|
|
|
|
Irssi::Channel
|
|
channel_create(server, channel, type, automatic)
|
|
Irssi::Server server
|
|
char *channel
|
|
int type
|
|
int automatic
|
|
|
|
Irssi::Channel
|
|
channel_find(server, channel)
|
|
Irssi::Server server
|
|
char *channel
|
|
|
|
Irssi::Channel
|
|
channel_find_closest(server, channel, level)
|
|
Irssi::Server server
|
|
char *channel
|
|
int level
|
|
|
|
Irssi::Channel
|
|
channel_find_level(server, level)
|
|
Irssi::Server server
|
|
int level
|
|
|
|
void
|
|
printtext(server, channel, level, str)
|
|
Irssi::Server server
|
|
char *channel
|
|
int level
|
|
char *str
|
|
CODE:
|
|
printtext(server, channel, level, str);
|
|
|
|
void
|
|
irc_send_cmd_split(server, cmd, arg, max_nicks)
|
|
Irssi::Server server
|
|
char *cmd
|
|
int arg
|
|
int max_nicks
|
|
|
|
void
|
|
ctcp_send_reply(server, data)
|
|
Irssi::Server server
|
|
char *data
|
|
|
|
Irssi::Netsplit
|
|
netsplit_find(server, nick, address)
|
|
Irssi::Server server
|
|
char *nick
|
|
char *address
|
|
|
|
Irssi::Nick
|
|
netsplit_find_channel(server, nick, address, channel)
|
|
Irssi::Server server
|
|
char *nick
|
|
char *address
|
|
char *channel
|
|
|
|
void
|
|
rawlog_input(server, str)
|
|
Irssi::Server server
|
|
char *str
|
|
|
|
void
|
|
rawlog_output(server, str)
|
|
Irssi::Server server
|
|
char *str
|
|
|
|
void
|
|
rawlog_redirect(server, str)
|
|
Irssi::Server server
|
|
char *str
|
|
|
|
void
|
|
server_redirect_init(server, command, last, ...)
|
|
Irssi::Server server
|
|
char *command
|
|
int last
|
|
PREINIT:
|
|
GSList *list;
|
|
int n;
|
|
CODE:
|
|
list = NULL;
|
|
for (n = 3; n < items; n++) {
|
|
list = g_slist_append(list, SvPV(ST(n), PL_na));
|
|
}
|
|
server_redirect_initv(server, command, last, list);
|
|
|
|
int
|
|
server_redirect_single_event(server, arg, last, group, event, signal, argpos)
|
|
Irssi::Server server
|
|
char *arg
|
|
int last
|
|
int group
|
|
char *event
|
|
char *signal
|
|
int argpos
|
|
|
|
void
|
|
server_redirect_event(server, arg, last, ...)
|
|
Irssi::Server server
|
|
char *arg
|
|
int last
|
|
PREINIT:
|
|
int n, group;
|
|
CODE:
|
|
group = 0;
|
|
for (n = 3; n+3 <= items; n += 3, last--) {
|
|
group = server_redirect_single_event(server, arg, last > 0, group,
|
|
(char *) SvPV(ST(n), PL_na), (char *) SvPV(ST(n+1), PL_na), (int) SvIV(ST(n+2)));
|
|
}
|
|
|
|
void
|
|
autoignore_add(server, type, nick)
|
|
Irssi::Server server
|
|
int type
|
|
char *nick
|
|
|
|
int
|
|
autoignore_remove(server, mask, level)
|
|
Irssi::Server server
|
|
char *mask
|
|
char *level
|
|
|
|
int
|
|
ignore_check(server, nick, host, type)
|
|
Irssi::Server server
|
|
char *nick
|
|
char *host
|
|
int type
|
|
|
|
int
|
|
notifylist_ison_server(server, nick)
|
|
Irssi::Server server
|
|
char *nick
|
|
|
|
void
|
|
values(server)
|
|
Irssi::Server server
|
|
PREINIT:
|
|
HV *hv;
|
|
PPCODE:
|
|
hv = newHV();
|
|
add_connect_hash(hv, server->connrec);
|
|
hv_store(hv, "real_address", 12, new_pv(server->real_address), 0);
|
|
hv_store(hv, "tag", 3, new_pv(server->tag), 0);
|
|
hv_store(hv, "nick", 4, new_pv(server->nick), 0);
|
|
hv_store(hv, "usermode", 8, new_pv(server->usermode), 0);
|
|
hv_store(hv, "usermode_away", 13, newSViv(server->usermode_away), 0);
|
|
hv_store(hv, "away_reason", 11, new_pv(server->away_reason), 0);
|
|
hv_store(hv, "connected", 9, newSViv(server->connected), 0);
|
|
hv_store(hv, "connection_lost", 15, newSViv(server->connection_lost), 0);
|
|
XPUSHs(sv_2mortal(newRV_noinc((SV*)hv)));
|
|
|
|
#*******************************************************
|
|
MODULE = Irssi PACKAGE = Irssi::Connect PREFIX = server_
|
|
#*******************************************************
|
|
|
|
void
|
|
values(conn)
|
|
Irssi::Connect conn
|
|
PREINIT:
|
|
HV *hv;
|
|
PPCODE:
|
|
hv = newHV();
|
|
add_connect_hash(hv, conn);
|
|
XPUSHs(sv_2mortal(newRV_noinc((SV*)hv)));
|
|
|
|
Irssi::Server
|
|
server_connect(conn)
|
|
Irssi::Connect conn
|
|
|
|
#*******************************************************
|
|
MODULE = Irssi PACKAGE = Irssi::Reconnect
|
|
#*******************************************************
|
|
|
|
void
|
|
values(reconnect)
|
|
Irssi::Reconnect reconnect
|
|
PREINIT:
|
|
HV *hv;
|
|
PPCODE:
|
|
hv = newHV();
|
|
add_connect_hash(hv, reconnect->conn);
|
|
hv_store(hv, "tag", 3, newSViv(reconnect->tag), 0);
|
|
hv_store(hv, "next_connect", 12, newSViv(reconnect->next_connect), 0);
|
|
XPUSHs(sv_2mortal(newRV_noinc((SV*)hv)));
|
|
|
|
#*******************************************************
|
|
MODULE = Irssi PACKAGE = Irssi::Channel PREFIX = channel_
|
|
#*******************************************************
|
|
|
|
void
|
|
command(channel, cmd)
|
|
Irssi::Channel channel
|
|
char *cmd
|
|
CODE:
|
|
signal_emit("send command", 3, cmd, channel->server, channel);
|
|
|
|
void
|
|
channel_destroy(channel)
|
|
Irssi::Channel channel
|
|
|
|
void
|
|
channel_change_name(channel, name)
|
|
Irssi::Channel channel
|
|
char *name
|
|
|
|
char *
|
|
channel_get_mode(channel)
|
|
Irssi::Channel channel
|
|
|
|
Irssi::Nick
|
|
nicklist_insert(channel, nick, op, voice, send_massjoin)
|
|
Irssi::Channel channel
|
|
char *nick
|
|
int op
|
|
int voice
|
|
int send_massjoin
|
|
|
|
void
|
|
nicklist_remove(channel, nick)
|
|
Irssi::Channel channel
|
|
Irssi::Nick nick
|
|
|
|
Irssi::Nick
|
|
nicklist_find(channel, mask)
|
|
Irssi::Channel channel
|
|
char *mask
|
|
|
|
void
|
|
nicklist_getnicks(channel)
|
|
Irssi::Channel channel
|
|
PREINIT:
|
|
GSList *list, *tmp;
|
|
HV *stash;
|
|
PPCODE:
|
|
list = nicklist_getnicks(channel);
|
|
|
|
stash = gv_stashpv("Irssi::Nick", 0);
|
|
for (tmp = list; tmp != NULL; tmp = tmp->next) {
|
|
XPUSHs(sv_2mortal(sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(tmp->data))), stash)));
|
|
}
|
|
g_slist_free(list);
|
|
|
|
Irssi::Ban
|
|
ban_add(channel, ban, nick, time)
|
|
Irssi::Channel channel
|
|
char *ban
|
|
char *nick
|
|
time_t time
|
|
|
|
void
|
|
ban_remove(channel, ban)
|
|
Irssi::Channel channel
|
|
char *ban
|
|
|
|
Irssi::Ban
|
|
ban_exception_add(channel, ban, nick, time)
|
|
Irssi::Channel channel
|
|
char *ban
|
|
char *nick
|
|
time_t time
|
|
|
|
void
|
|
ban_exception_remove(channel, ban)
|
|
Irssi::Channel channel
|
|
char *ban
|
|
|
|
char *
|
|
ban_get_mask(channel, nick)
|
|
Irssi::Channel channel
|
|
char *nick
|
|
|
|
void
|
|
modes_set(channel, data, mode)
|
|
Irssi::Channel channel
|
|
char *data
|
|
char *mode
|
|
CODE:
|
|
modes_set(data, mode, channel->server, channel);
|
|
|
|
void
|
|
modes_parse_channel(channel, setby, modestr)
|
|
Irssi::Channel channel
|
|
char *setby
|
|
char *modestr
|
|
|
|
void
|
|
invitelist_add(channel, mask)
|
|
Irssi::Channel channel
|
|
char *mask
|
|
|
|
void
|
|
invitelist_remove(channel, mask)
|
|
Irssi::Channel channel
|
|
char *mask
|
|
|
|
void
|
|
values(channel)
|
|
Irssi::Channel channel
|
|
PREINIT:
|
|
HV *hv, *stash;
|
|
char *type;
|
|
PPCODE:
|
|
switch (channel->type)
|
|
{
|
|
case CHANNEL_TYPE_CHANNEL:
|
|
type = "channel";
|
|
break;
|
|
case CHANNEL_TYPE_QUERY:
|
|
type = "query";
|
|
break;
|
|
case CHANNEL_TYPE_DCC_CHAT:
|
|
type = "dcc chat";
|
|
break;
|
|
default:
|
|
type = "empty";
|
|
break;
|
|
}
|
|
hv = newHV();
|
|
stash = gv_stashpv("Irssi::Server", 0);
|
|
hv_store(hv, "server", 6, sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(channel->server))), stash), 0);
|
|
|
|
hv_store(hv, "name", 4, new_pv(channel->name), 0);
|
|
hv_store(hv, "type", 4, new_pv(type), 0);
|
|
|
|
hv_store(hv, "topic", 5, new_pv(channel->topic), 0);
|
|
hv_store(hv, "key", 3, new_pv(channel->key), 0);
|
|
hv_store(hv, "limit", 5, newSViv(channel->limit), 0);
|
|
|
|
hv_store(hv, "level", 5, newSViv(channel->level), 0);
|
|
hv_store(hv, "new_data", 8, newSViv(channel->new_data), 0);
|
|
|
|
hv_store(hv, "synced", 6, newSViv(channel->synced), 0);
|
|
hv_store(hv, "wholist", 7, newSViv(channel->wholist), 0);
|
|
hv_store(hv, "names_got", 9, newSViv(channel->names_got), 0);
|
|
hv_store(hv, "chanop", 6, newSViv(channel->chanop), 0);
|
|
hv_store(hv, "left", 4, newSViv(channel->left), 0);
|
|
hv_store(hv, "kicked", 6, newSViv(channel->kicked), 0);
|
|
|
|
XPUSHs(sv_2mortal(newRV_noinc((SV*)hv)));
|
|
|
|
#*******************************************************
|
|
MODULE = Irssi PACKAGE = Irssi::Command
|
|
#*******************************************************
|
|
|
|
void
|
|
values(cmd)
|
|
Irssi::Command cmd
|
|
PREINIT:
|
|
HV *hv;
|
|
PPCODE:
|
|
hv = newHV();
|
|
hv_store(hv, "cmd", 3, new_pv(cmd->cmd), 0);
|
|
hv_store(hv, "category", 8, new_pv(cmd->category), 0);
|
|
XPUSHs(sv_2mortal(newRV_noinc((SV*)hv)));
|
|
|
|
#*******************************************************
|
|
MODULE = Irssi PACKAGE = Irssi::Nick
|
|
#*******************************************************
|
|
|
|
void
|
|
values(nick)
|
|
Irssi::Nick nick
|
|
PREINIT:
|
|
HV *hv;
|
|
PPCODE:
|
|
hv = newHV();
|
|
hv_store(hv, "nick", 4, new_pv(nick->nick), 0);
|
|
hv_store(hv, "host", 4, new_pv(nick->host), 0);
|
|
hv_store(hv, "name", 4, new_pv(nick->realname), 0);
|
|
hv_store(hv, "hops", 4, newSViv(nick->hops), 0);
|
|
hv_store(hv, "op", 2, newSViv(nick->op), 0);
|
|
hv_store(hv, "voice", 5, newSViv(nick->voice), 0);
|
|
hv_store(hv, "gone", 4, newSViv(nick->gone), 0);
|
|
hv_store(hv, "ircop", 5, newSViv(nick->ircop), 0);
|
|
hv_store(hv, "last_check", 10, newSViv(nick->last_check), 0);
|
|
hv_store(hv, "send_massjoin", 13, newSViv(nick->send_massjoin), 0);
|
|
XPUSHs(sv_2mortal(newRV_noinc((SV*)hv)));
|
|
|
|
#*******************************************************
|
|
MODULE = Irssi PACKAGE = Irssi::Ban
|
|
#*******************************************************
|
|
|
|
void
|
|
values(ban)
|
|
Irssi::Ban ban
|
|
PREINIT:
|
|
HV *hv;
|
|
PPCODE:
|
|
hv = newHV();
|
|
hv_store(hv, "ban", 3, new_pv(ban->ban), 0);
|
|
hv_store(hv, "setby", 5, new_pv(ban->setby), 0);
|
|
hv_store(hv, "time", 4, newSViv(ban->time), 0);
|
|
XPUSHs(sv_2mortal(newRV_noinc((SV*)hv)));
|
|
|
|
#*******************************************************
|
|
MODULE = Irssi PACKAGE = Irssi::Dcc PREFIX = dcc_
|
|
#*******************************************************
|
|
|
|
void
|
|
dcc_destroy(dcc)
|
|
Irssi::Dcc dcc
|
|
|
|
void
|
|
values(ban)
|
|
Irssi::Ban ban
|
|
PREINIT:
|
|
HV *hv;
|
|
PPCODE:
|
|
hv = newHV();
|
|
hv_store(hv, "ban", 3, new_pv(ban->ban), 0);
|
|
hv_store(hv, "setby", 5, new_pv(ban->setby), 0);
|
|
hv_store(hv, "time", 4, newSViv(ban->time), 0);
|
|
XPUSHs(sv_2mortal(newRV_noinc((SV*)hv)));
|
|
|
|
#*******************************************************
|
|
MODULE = Irssi PACKAGE = Irssi::Netsplit
|
|
#*******************************************************
|
|
|
|
void
|
|
values(netsplit)
|
|
Irssi::Netsplit netsplit
|
|
PREINIT:
|
|
HV *hv;
|
|
PPCODE:
|
|
hv = newHV();
|
|
hv_store(hv, "nick", 4, new_pv(netsplit->nick), 0);
|
|
hv_store(hv, "address", 7, new_pv(netsplit->address), 0);
|
|
hv_store(hv, "server", 6, new_pv(netsplit->server), 0);
|
|
hv_store(hv, "destserver", 10, new_pv(netsplit->destserver), 0);
|
|
hv_store(hv, "destroy", 7, newSViv(netsplit->destroy), 0);
|
|
/*FIXME: add GSList *channels;*/
|
|
XPUSHs(sv_2mortal(newRV_noinc((SV*)hv)));
|
|
|
|
#*******************************************************
|
|
MODULE = Irssi PACKAGE = Irssi::Autoignore
|
|
#*******************************************************
|
|
|
|
void
|
|
values(ai)
|
|
Irssi::Autoignore ai
|
|
PREINIT:
|
|
HV *hv;
|
|
PPCODE:
|
|
hv = newHV();
|
|
hv_store(hv, "nick", 4, new_pv(ai->nick), 0);
|
|
hv_store(hv, "timeleft", 8, newSViv(ai->timeleft), 0);
|
|
hv_store(hv, "level", 5, newSViv(ai->level), 0);
|
|
XPUSHs(sv_2mortal(newRV_noinc((SV*)hv)));
|
|
|
|
#*******************************************************
|
|
MODULE = Irssi PACKAGE = Irssi::Log PREFIX = log_
|
|
#*******************************************************
|
|
|
|
void
|
|
values(log)
|
|
Irssi::Log log
|
|
PREINIT:
|
|
HV *hv;
|
|
PPCODE:
|
|
hv = newHV();
|
|
hv_store(hv, "fname", 5, new_pv(log->fname), 0);
|
|
hv_store(hv, "autoopen_log", 12, newSViv(log->autoopen_log), 0);
|
|
hv_store(hv, "last", 4, newSViv(log->last), 0);
|
|
hv_store(hv, "level", 5, newSViv(log->level), 0);
|
|
/*FIXME: add GSList *items;*/
|
|
XPUSHs(sv_2mortal(newRV_noinc((SV*)hv)));
|
|
|
|
void
|
|
destroy(log)
|
|
Irssi::Log log
|
|
CODE:
|
|
log_file_destroy(log);
|
|
|
|
int
|
|
open(log)
|
|
Irssi::Log log
|
|
CODE:
|
|
log_file_open(log);
|
|
|
|
void
|
|
close(log)
|
|
Irssi::Log log
|
|
CODE:
|
|
log_file_close(log);
|
|
|
|
void
|
|
log_append_item(log, name, level)
|
|
Irssi::Log log
|
|
char *name
|
|
int level
|
|
|
|
void
|
|
log_remove_item(log, name)
|
|
Irssi::Log log
|
|
char *name
|
|
|
|
#*******************************************************
|
|
MODULE = Irssi PACKAGE = Irssi::Logitem
|
|
#*******************************************************
|
|
|
|
void
|
|
values(item)
|
|
Irssi::Logitem item
|
|
PREINIT:
|
|
HV *hv;
|
|
PPCODE:
|
|
hv = newHV();
|
|
hv_store(hv, "name", 4, new_pv(item->name), 0);
|
|
hv_store(hv, "level", 5, newSViv(item->level), 0);
|
|
XPUSHs(sv_2mortal(newRV_noinc((SV*)hv)));
|
|
|
|
#*******************************************************
|
|
MODULE = Irssi PACKAGE = Irssi::Plugin PREFIX = plugin_
|
|
#*******************************************************
|
|
|
|
void
|
|
values(plugin)
|
|
Irssi::Plugin plugin
|
|
PREINIT:
|
|
HV *hv;
|
|
PPCODE:
|
|
hv = newHV();
|
|
hv_store(hv, "name", 4, new_pv(plugin->name), 0);
|
|
hv_store(hv, "description", 11, new_pv(plugin->description), 0);
|
|
XPUSHs(sv_2mortal(newRV_noinc((SV*)hv)));
|