summaryrefslogtreecommitdiff
path: root/src/perl/irc
diff options
context:
space:
mode:
authorJochen Eisinger <c0ffee@irssi.org>2008-11-02 12:13:36 +0000
committerc0ffee <c0ffee@dbcabf3a-b0e7-0310-adc4-f8d773084564>2008-11-02 12:13:36 +0000
commitf8461d39bc5bfd3efe908924c09d661756e447a1 (patch)
treeb401ca0b17d3eef63fbf9413bf63fdfd317c3b6f /src/perl/irc
parent73b18f2672585d8d6427862afed6ba8f63629ef3 (diff)
downloadirssi-f8461d39bc5bfd3efe908924c09d661756e447a1.zip
introduce the type Irssi::Irc::Client and signals to communicate with proxy
clients to allow for scripting parts of the irssi-proxy. git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@4882 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src/perl/irc')
-rw-r--r--src/perl/irc/Client.xs5
-rw-r--r--src/perl/irc/Irc.xs15
-rw-r--r--src/perl/irc/module.h4
-rw-r--r--src/perl/irc/typemap1
4 files changed, 25 insertions, 0 deletions
diff --git a/src/perl/irc/Client.xs b/src/perl/irc/Client.xs
new file mode 100644
index 00000000..8481a11e
--- /dev/null
+++ b/src/perl/irc/Client.xs
@@ -0,0 +1,5 @@
+#include "module.h"
+
+MODULE = Irssi::Irc::Client PACKAGE = Irssi::Irc
+PROTOTYPES: ENABLE
+
diff --git a/src/perl/irc/Irc.xs b/src/perl/irc/Irc.xs
index 3fda1e68..251efb8b 100644
--- a/src/perl/irc/Irc.xs
+++ b/src/perl/irc/Irc.xs
@@ -144,6 +144,19 @@ static void perl_notifylist_fill_hash(HV *hv, NOTIFYLIST_REC *notify)
hv_store(hv, "ircnets", 7, newRV_noinc((SV*)av), 0);
}
+static void perl_client_fill_hash(HV *hv, CLIENT_REC *client)
+{
+ hv_store(hv, "nick", 4, new_pv(client->nick), 0);
+ hv_store(hv, "host", 4, new_pv(client->host), 0);
+ hv_store(hv, "proxy_address", 13, new_pv(client->proxy_address), 0);
+ hv_store(hv, "server", 6, iobject_bless(client->server), 0);
+ hv_store(hv, "pass_sent", 9, newSViv(client->pass_sent), 0);
+ hv_store(hv, "user_sent", 9, newSViv(client->user_sent), 0);
+ hv_store(hv, "connected", 9, newSViv(client->connected), 0);
+ hv_store(hv, "want_ctcp", 9, newSViv(client->want_ctcp), 0);
+ hv_store(hv, "ircnet", 6, new_pv(client->listen->ircnet), 0);
+}
+
static PLAIN_OBJECT_INIT_REC irc_plains[] = {
{ "Irssi::Irc::Ban", (PERL_OBJECT_FUNC) perl_ban_fill_hash },
{ "Irssi::Irc::Dcc", (PERL_OBJECT_FUNC) perl_dcc_fill_hash },
@@ -151,6 +164,7 @@ static PLAIN_OBJECT_INIT_REC irc_plains[] = {
{ "Irssi::Irc::Netsplitserver", (PERL_OBJECT_FUNC) perl_netsplit_server_fill_hash },
{ "Irssi::Irc::Netsplitchannel", (PERL_OBJECT_FUNC) perl_netsplit_channel_fill_hash },
{ "Irssi::Irc::Notifylist", (PERL_OBJECT_FUNC) perl_notifylist_fill_hash },
+ { "Irssi::Irc::Client", (PERL_OBJECT_FUNC) perl_client_fill_hash },
{ NULL, NULL }
};
@@ -209,3 +223,4 @@ BOOT:
irssi_boot(Irc__Notifylist);
irssi_boot(Irc__Query);
irssi_boot(Irc__Server);
+ irssi_boot(Irc__Client);
diff --git a/src/perl/irc/module.h b/src/perl/irc/module.h
index 4f0ce06d..91c19c7a 100644
--- a/src/perl/irc/module.h
+++ b/src/perl/irc/module.h
@@ -20,6 +20,8 @@
#include "dcc/dcc-send.h"
#include "notifylist/notifylist.h"
+#include "proxy/proxy.h"
+
typedef IRC_SERVER_REC *Irssi__Irc__Server;
typedef IRC_SERVER_CONNECT_REC *Irssi__Irc__Connect;
typedef IRC_CHANNEL_REC *Irssi__Irc__Channel;
@@ -35,3 +37,5 @@ typedef NETSPLIT_REC *Irssi__Irc__Netsplit;
typedef NETSPLIT_SERVER_REC *Irssi__Irc__Netsplitserver;
typedef NETSPLIT_CHAN_REC *Irssi__Irc__Netsplitchannel;
typedef NOTIFYLIST_REC *Irssi__Irc__Notifylist;
+
+typedef CLIENT_REC *Irssi__Irc__Client;
diff --git a/src/perl/irc/typemap b/src/perl/irc/typemap
index d5604a77..9bf87647 100644
--- a/src/perl/irc/typemap
+++ b/src/perl/irc/typemap
@@ -14,6 +14,7 @@ Irssi::Irc::Netsplit T_PlainObj
Irssi::Irc::Netsplitserver T_PlainObj
Irssi::Irc::Netsplitchannel T_PlainObj
Irssi::Irc::Notifylist T_PlainObj
+Irssi::Irc::Client T_IrssiObj
INPUT