Merged c0ffee's MIME signal patch.
[silc.git] / apps / irssi / src / perl / perl-common.c
index 76fa3f3fbe1b4792dfd5d7e302d7a1bd77ef424c..0113bdf3155069948788482d18165b10d6876cd9 100644 (file)
@@ -39,6 +39,7 @@
 #include "channels.h"
 #include "queries.h"
 #include "nicklist.h"
+#include "blob.h"
 
 #include "perl-common.h"
 
@@ -229,6 +230,12 @@ void irssi_callXS(void (*subaddr)(CV* cv), CV *cv, SV **mark)
        PUTBACK;
 }
 
+static void perl_blob_fill_hash(HV *hv, BLOB_REC *blob)
+{
+       hv_store(hv, "octets", 6, newSViv(blob->octets), 0);
+       hv_store(hv, "data", 4, newSVpv(blob->data, blob->octets), 0);
+}
+
 void perl_chatnet_fill_hash(HV *hv, CHATNET_REC *chatnet)
 {
        char *type, *chat_type;
@@ -329,8 +336,8 @@ void perl_window_item_fill_hash(HV *hv, WI_ITEM_REC *item)
        hv_store(hv, "name", 4, new_pv(item->name), 0);
 
        hv_store(hv, "createtime", 10, newSViv(item->createtime), 0);
-       hv_store(hv, "data_level", 8, newSViv(item->data_level), 0);
-       hv_store(hv, "hilight_color", 10, new_pv(item->hilight_color), 0);
+       hv_store(hv, "data_level", 10, newSViv(item->data_level), 0);
+       hv_store(hv, "hilight_color", 13, new_pv(item->hilight_color), 0);
 }
 
 void perl_channel_fill_hash(HV *hv, CHANNEL_REC *channel)
@@ -340,6 +347,9 @@ void perl_channel_fill_hash(HV *hv, CHANNEL_REC *channel)
 
        perl_window_item_fill_hash(hv, (WI_ITEM_REC *) channel);
 
+        if (channel->ownnick != NULL)
+               hv_store(hv, "ownnick", 7, iobject_bless(channel->ownnick), 0);
+
        hv_store(hv, "topic", 5, new_pv(channel->topic), 0);
        hv_store(hv, "topic_by", 8, new_pv(channel->topic_by), 0);
        hv_store(hv, "topic_time", 10, newSViv(channel->topic_time), 0);
@@ -366,6 +376,7 @@ void perl_query_fill_hash(HV *hv, QUERY_REC *query)
 
        perl_window_item_fill_hash(hv, (WI_ITEM_REC *) query);
 
+       hv_store(hv, "last_unread_msg", 15, newSViv(query->last_unread_msg), 0);
        hv_store(hv, "address", 7, new_pv(query->address), 0);
        hv_store(hv, "server_tag", 10, new_pv(query->server_tag), 0);
        hv_store(hv, "unwanted", 8, newSViv(query->unwanted), 0);
@@ -422,7 +433,7 @@ static void perl_ignore_fill_hash(HV *hv, IGNORE_REC *ignore)
 
        hv_store(hv, "level", 5, newSViv(ignore->level), 0);
 
-       hv_store(hv, "exception", 6, newSViv(ignore->exception), 0);
+       hv_store(hv, "exception", 9, newSViv(ignore->exception), 0);
        hv_store(hv, "regexp", 6, newSViv(ignore->regexp), 0);
        hv_store(hv, "fullword", 8, newSViv(ignore->fullword), 0);
 }
@@ -620,6 +631,10 @@ void perl_common_start(void)
        plain_stashes = g_hash_table_new((GHashFunc) g_str_hash,
                                         (GCompareFunc) g_str_equal);
         irssi_add_plains(core_plains);
+       irssi_add_object(module_get_uniq_id("BLOB", 0), 0,
+                       "Irssi::Blob",
+                       (PERL_OBJECT_FUNC) perl_blob_fill_hash);
+
 
         use_protocols = NULL;
        g_slist_foreach(chat_protocols, (GFunc) perl_register_protocol, NULL);