changeset 11118:134d0001983d

[gaim-migrate @ 13174] Some new xsubs for the perl interpreter and a work around to get it all working again. committer: Tailor Script <tailor@pidgin.im>
author John H. Kelm <johnkelm@gmail.com>
date Mon, 18 Jul 2005 13:37:38 +0000
parents 5a8bc4b1f5b6
children db8682734dab
files plugins/perl/common/Account.xs plugins/perl/common/AccountOpts.xs plugins/perl/common/BuddyIcon.xs plugins/perl/common/BuddyList.xs plugins/perl/common/Cipher.xs plugins/perl/common/Cmds.xs plugins/perl/common/Connection.xs plugins/perl/common/FT.xs plugins/perl/common/Gaim.xs plugins/perl/common/ImgStore.xs plugins/perl/common/Log.xs plugins/perl/common/MANIFEST plugins/perl/common/Makefile.PL.in plugins/perl/common/Network.xs plugins/perl/common/Notify.xs plugins/perl/common/Plugin.xs plugins/perl/common/PluginPref.xs plugins/perl/common/Pounce.xs plugins/perl/common/Prefs.xs plugins/perl/common/Privacy.xs plugins/perl/common/Proxy.xs plugins/perl/common/Prpl.xs plugins/perl/common/Request.xs plugins/perl/common/Roomlist.xs plugins/perl/common/SSLConn.xs plugins/perl/common/SavedStatuses.xs plugins/perl/common/Server.xs plugins/perl/common/Sound.xs plugins/perl/common/Status.xs plugins/perl/common/Stringref.xs plugins/perl/common/Util.xs plugins/perl/common/XMLNode.xs plugins/perl/common/module.h plugins/perl/common/typemap
diffstat 34 files changed, 4622 insertions(+), 180 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/perl/common/Account.xs	Mon Jul 18 07:26:09 2005 +0000
+++ b/plugins/perl/common/Account.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -1,66 +1,135 @@
+
 #include "module.h"
 
+/* TODO
+
+Gaim::Presence
+gaim_account_get_presence(account)
+	Gaim::Account account
+
+void 
+gaim_account_set_presence(account, presence)
+	Gaim::Account account
+	Gaim::Presence presence
+
+*/
+
+/**********************XS Code for Account.xs*********************************/
 MODULE = Gaim::Account  PACKAGE = Gaim::Account  PREFIX = gaim_account_
 PROTOTYPES: ENABLE
 
-void
+Gaim::Account
+gaim_account_new(username, protocol_id)
+	const char * username
+	const char * protocol_id
+
+void 
+gaim_account_destroy(account)
+	Gaim::Account account
+
+void 
 gaim_account_connect(account)
 	Gaim::Account account
 
-void
+void 
+gaim_account_register(account)
+	Gaim::Account account
+
+void 
 gaim_account_disconnect(account)
 	Gaim::Account account
 
-void
+void 
+gaim_account_request_change_password(account)
+	Gaim::Account account
+
+void 
+gaim_account_request_change_user_info(account)
+	Gaim::Account account
+
+void 
 gaim_account_set_username(account, username)
 	Gaim::Account account
-	const char *username
+	const char * username
 
-void
+void 
 gaim_account_set_password(account, password)
 	Gaim::Account account
-	const char *password
+	const char * password
 
-void
+void 
 gaim_account_set_alias(account, alias)
 	Gaim::Account account
-	const char *alias
+	const char * alias
 
-void
+void 
 gaim_account_set_user_info(account, user_info)
 	Gaim::Account account
 	const char *user_info
-CODE:
-	gaim_account_set_user_info(account, user_info);
-	serv_set_info(gaim_account_get_connection(account), user_info);
 
-void
-gaim_account_set_buddy_icon(account, buddy_icon)
+void 
+gaim_account_set_buddy_icon(account, icon)
 	Gaim::Account account
-	const char *buddy_icon
+	const char *icon
 
-void
-gaim_account_set_protocol_id(account, protocol_id)
+void 
+gaim_account_set_connection(account, gc)
 	Gaim::Account account
-	const char *protocol_id
+	Gaim::Connection gc
 
-void
+void 
 gaim_account_set_remember_password(account, value)
 	Gaim::Account account
 	gboolean value
 
-void
+void 
 gaim_account_set_check_mail(account, value)
 	Gaim::Account account
 	gboolean value
 
+void 
+gaim_account_set_proxy_info(account, info)
+	Gaim::Account account
+	Gaim::ProxyInfo info
+
 void
-gaim_account_set_enabled(account, ui, value)
+gaim_account_set_status(account, status_id, active) 
+	Gaim::Account account
+	const char *status_id
+	gboolean active
+CODE:
+	gaim_account_set_status(account, status_id, active);
+
+
+void 
+gaim_account_set_status_types(account, status_types)
 	Gaim::Account account
-	const char *ui
-	gboolean value
+	SV * status_types
+PREINIT:
+	GList *t_GL;
+	int i, t_len;
+PPCODE:
+	t_GL = NULL;
+	t_len = av_len((AV *)SvRV(status_types));
 
-gboolean
+	for (i = 0; i < t_len; i++) {
+		STRLEN t_sl;
+		t_GL = g_list_append(t_GL, SvPV(*av_fetch((AV *)SvRV(status_types), i, 0), t_sl));
+	}
+	gaim_account_set_status_types(account, t_GL);
+
+
+void 
+gaim_account_clear_settings(account)
+	Gaim::Account account
+
+void 
+gaim_account_set_int(account, name, value)
+	Gaim::Account account
+	const char *name
+	int value
+
+gboolean 
 gaim_account_is_connected(account)
 	Gaim::Account account
 
@@ -88,58 +157,106 @@
 gaim_account_get_protocol_id(account)
 	Gaim::Account account
 
+const char *
+gaim_account_get_protocol_name(account)
+	Gaim::Account account
+
 Gaim::Connection
 gaim_account_get_connection(account)
 	Gaim::Account account
 
-gboolean
+gboolean 
 gaim_account_get_remember_password(account)
 	Gaim::Account account
 
-gboolean
+gboolean 
 gaim_account_get_check_mail(account)
 	Gaim::Account account
 
-gboolean
-gaim_account_get_enabled(account, ui)
+Gaim::ProxyInfo
+gaim_account_get_proxy_info(account)
+	Gaim::Account account
+
+Gaim::Status
+gaim_account_get_active_status(account)
+	Gaim::Account account
+
+void
+gaim_account_get_status_types(account)
 	Gaim::Account account
-	const char *ui
+PREINIT:
+	GList *l;
+PPCODE:
+	for (l = gaim_account_get_status_types(account); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::Status::Type")));
+	}
+
+Gaim::Log
+gaim_account_get_log(account)
+	Gaim::Account account
+
+void 
+gaim_account_destroy_log(account)
+	Gaim::Account account
+
+
 
 
 MODULE = Gaim::Account  PACKAGE = Gaim::Accounts  PREFIX = gaim_accounts_
+PROTOTYPES: ENABLE
 
-void
+void 
 gaim_accounts_add(account)
 	Gaim::Account account
 
-void
+void 
 gaim_accounts_remove(account)
 	Gaim::Account account
 
-Gaim::Account
-find(name, protocol_id)
-	const char *name
-	const char *protocol_id
-CODE:
-	RETVAL = gaim_accounts_find(name, protocol_id);
-OUTPUT:
-	RETVAL
+void 
+gaim_accounts_delete(account)
+	Gaim::Account account
 
-void *
-handle()
-CODE:
-	RETVAL = gaim_accounts_get_handle();
-OUTPUT:
-	RETVAL
-
-
-MODULE = Gaim::Account  PACKAGE = Gaim
+void 
+gaim_accounts_reorder(account, new_index)
+	Gaim::Account account
+	size_t new_index
 
 void
-accounts()
+gaim_accounts_get_all()
+PREINIT:
+	GList *l;
+PPCODE:
+	for (l = gaim_accounts_get_all(); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::Account")));
+	}
+
+void
+gaim_accounts_get_all_active()
 PREINIT:
 	GList *l;
 PPCODE:
-	for (l = gaim_accounts_get_all(); l != NULL; l = l->next)
+	for (l = gaim_accounts_get_all_active(); l != NULL; l = l->next) {
 		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::Account")));
+	}
 
+Gaim::Account
+gaim_accounts_find(name, protocol)
+	const char * name
+	const char * protocol
+
+void 
+gaim_accounts_set_ui_ops(ops)
+	Gaim::Account::UiOps ops
+
+Gaim::Account::UiOps 
+gaim_accounts_get_ui_ops()
+
+void 
+gaim_accounts_get_handle()
+
+void 
+gaim_accounts_init()
+
+void 
+gaim_accounts_uninit()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/AccountOpts.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,158 @@
+#include "module.h"
+
+/* TODO
+
+*/
+
+/**********************XS Code for Account.xs*********************************/
+MODULE = Gaim::Account::Option  PACKAGE = Gaim::Account::Option  PREFIX = gaim_account_option_
+PROTOTYPES: ENABLE
+
+void 
+gaim_account_option_destroy(option)
+	Gaim::Account::Option option
+
+const char * 
+gaim_account_option_get_default_string(option)
+	Gaim::Account::Option option
+
+void
+gaim_account_option_add_list_item(option, key, value)
+	Gaim::Account::Option option
+	const char * key
+	const char * value	
+
+void
+gaim_account_option_set_default_string(option, value);
+	Gaim::Account::Option option
+	const char * value
+
+void
+gaim_account_option_set_default_int(option, value);
+	Gaim::Account::Option option
+	int value
+
+void
+gaim_account_option_set_default_bool(option, value);
+	Gaim::Account::Option option
+	gboolean value	 	
+
+Gaim::Account::Option
+gaim_account_option_list_new(text, pref_name, values)
+	const char * text
+	const char * pref_name
+	SV * values
+PREINIT:
+	GList *t_GL;
+	int i, t_len;
+PPCODE:
+	t_GL = NULL;
+	t_len = av_len((AV *)SvRV(values));
+
+	for (i = 0; i < t_len; i++) {
+		STRLEN t_sl;
+		t_GL = g_list_append(t_GL, SvPV(*av_fetch((AV *)SvRV(values), i, 0), t_sl));
+	}
+	gaim_account_option_list_new(text, pref_name, t_GL);
+
+Gaim::Account::Option
+gaim_account_option_string_new(text, pref_name, default_value)
+	const char * text
+	const char * pref_name
+	const char * default_value
+
+Gaim::Account::Option
+gaim_account_option_int_new(text, pref_name, default_value)
+	const char * text
+	const char * pref_name
+	gboolean default_value
+
+Gaim::Account::Option
+gaim_account_option_bool_new(text, pref_name, default_value)
+	const char * text
+	const char * pref_name
+	gboolean default_value
+
+Gaim::Account::Option
+gaim_account_option_new(type, text, pref_name)
+	Gaim::PrefType type
+	const char * text
+	const char * pref_name
+
+void
+gaim_account_option_get_list(option)
+	Gaim::Account::Option option
+PREINIT:
+	GList *l;
+PPCODE:
+	for (l = gaim_account_option_get_list(option); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListEntry")));
+	}
+
+Gaim::PrefType
+gaim_account_option_get_type(option)
+	Gaim::Account::Option option
+
+gboolean 
+gaim_account_option_get_masked(option)
+	Gaim::Account::Option option
+
+int 
+gaim_account_option_get_default_int(option)
+	Gaim::Account::Option option;
+INIT:
+	
+gboolean 
+gaim_account_option_get_default_bool(option)
+	Gaim::Account::Option option;
+
+const char *
+gaim_account_option_get_setting(option)
+	Gaim::Account::Option option
+
+const char *
+gaim_account_option_get_text(option)
+	Gaim::Account::Option option
+
+void 
+gaim_account_option_set_list(option, values)
+	Gaim::Account::Option option
+	SV * values
+PREINIT:
+	GList *t_GL;
+	int i, t_len;
+PPCODE:
+	t_GL = NULL;
+	t_len = av_len((AV *)SvRV(values));
+
+	for (i = 0; i < t_len; i++) {
+		STRLEN t_sl;
+		t_GL = g_list_append(t_GL, SvPV(*av_fetch((AV *)SvRV(values), i, 0), t_sl));
+	}
+	gaim_account_option_set_list(option, t_GL);
+
+void
+gaim_account_option_set_masked(option, masked)
+	Gaim::Account::Option option
+	gboolean masked
+
+MODULE = Gaim::Account::Option  PACKAGE = Gaim::Account::UserSplit  PREFIX = gaim_account_user_split_
+PROTOTYPES: ENABLE
+
+Gaim::Account::UserSplit
+gaim_account_user_split_new(text, default_value, sep)
+	const char * text
+	const char * default_value
+	char sep
+
+char 
+gaim_account_user_split_get_separator(split)
+	Gaim::Account::UserSplit split
+
+const char *
+gaim_account_user_split_get_text(split)
+	Gaim::Account::UserSplit split
+
+void 
+gaim_account_user_split_destroy(split)
+	Gaim::Account::UserSplit split
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/BuddyIcon.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,107 @@
+
+#include "module.h"
+
+/*
+TODO
+
+*/
+
+
+MODULE = Gaim::Buddy::Icon PACKAGE = Gaim::Buddy::Icon   PREFIX = gaim_buddy_icon_
+PROTOTYPES: ENABLE
+
+
+void
+gaim_buddy_icon_destroy(icon)
+	Gaim::Buddy::Icon icon
+
+Gaim::Buddy::Icon
+gaim_buddy_icon_ref(icon)
+	Gaim::Buddy::Icon icon
+
+Gaim::Buddy::Icon
+gaim_buddy_icon_unref(icon)
+	Gaim::Buddy::Icon icon
+
+void
+gaim_buddy_icon_update(icon)
+	Gaim::Buddy::Icon icon
+
+void
+gaim_buddy_icon_cache(icon, buddy)
+	Gaim::Buddy::Icon icon
+	Gaim::BuddyList::Buddy buddy
+
+void
+gaim_buddy_icon_set_account(icon, account)
+	Gaim::Buddy::Icon icon
+	Gaim::Account account
+
+void
+gaim_buddy_icon_set_username(icon, username)
+	Gaim::Buddy::Icon icon
+	const char * username
+
+void
+gaim_buddy_icon_set_data(icon, data, len)
+	Gaim::Buddy::Icon icon
+	void * data
+	size_t len
+
+Gaim::Account
+gaim_buddy_icon_get_account(icon)
+	Gaim::Buddy::Icon icon
+
+const char *
+gaim_buddy_icon_get_username(icon)
+	Gaim::Buddy::Icon icon
+
+void *
+gaim_buddy_icon_get_data(icon, len)
+	Gaim::Buddy::Icon icon
+	size_t &len
+
+const char *
+gaim_buddy_icon_get_type(icon)
+	Gaim::Buddy::Icon icon
+
+void
+gaim_buddy_icon_get_scale_size(spec, width, height)
+	Gaim::Buddy::Icon::Spec spec
+	int *width
+	int *height
+
+
+
+
+
+
+
+
+
+MODULE = Gaim::Buddy::Icon PACKAGE = Gaim::Buddy::Icons   PREFIX = gaim_buddy_icons_
+PROTOTYPES: ENABLE
+
+
+void
+gaim_buddy_icons_set_caching(caching)
+	gboolean caching
+
+gboolean 
+gaim_buddy_icons_is_caching()
+
+void
+gaim_buddy_icons_set_cache_dir(cache_dir)
+	const char *cache_dir
+
+const char *
+gaim_buddy_icons_get_cache_dir();
+
+void *
+gaim_buddy_icons_get_handle();
+
+void
+gaim_buddy_icons_init();
+
+void
+gaim_buddy_icons_uninit()
--- a/plugins/perl/common/BuddyList.xs	Mon Jul 18 07:26:09 2005 +0000
+++ b/plugins/perl/common/BuddyList.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -1,77 +1,158 @@
 #include "module.h"
+#include "../perl-handlers.h"
+
+/*
+TODO
+
+void *
+gaim_blist_node_action_new(label, cb, data, children)
+	char * label
+	SV * cb
+	SV * data
+	SV * children
+CODE:
+	RETVAL = gaim_perl_blist_node_action(label, cb, data, children);
+OUTPUT:
+	RETVAL
+
+*/
+
+
+MODULE = Gaim::BuddyList  PACKAGE = Gaim::BuddyList  PREFIX = gaim_
+PROTOTYPES: ENABLE
+
+Gaim::BuddyList
+gaim_get_blist()
+
+
+MODULE = Gaim::BuddyList  PACKAGE = Gaim::Find  PREFIX = gaim_find_
+PROTOTYPES: ENABLE
+
+Gaim::BuddyList::Buddy 
+gaim_find_buddy(account, name)
+	Gaim::Account account
+	const char * name
+
+void
+gaim_find_buddies(account, name)
+	Gaim::Account account
+	const char * name
+PREINIT:
+	GSList *l;
+PPCODE:
+	for (l = gaim_find_buddies(account, name); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::BuddyList::Buddy")));
+	}
+
+gboolean 
+gaim_group_on_account(group, account)
+	Gaim::BuddyList::Group  group
+	Gaim::Account account
+
+Gaim::BuddyList::Group  
+gaim_find_group(name)
+	const char *name
+
+Gaim::BuddyList::Group  
+gaim_find_buddys_group(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+
+
+
+MODULE = Gaim::BuddyList  PACKAGE = Gaim::Contact  PREFIX = gaim_contact_
+PROTOTYPES: ENABLE
+
+Gaim::BuddyList::Contact
+gaim_contact_new();
+
+Gaim::BuddyList::Buddy 
+gaim_contact_get_priority_buddy(contact)
+	Gaim::BuddyList::Contact contact
+
+void
+gaim_contact_set_alias(contact, alias)
+	Gaim::BuddyList::Contact contact
+	const char * alias
+
+const char *
+gaim_contact_get_alias(contact)
+	Gaim::BuddyList::Contact contact
+
+gboolean 
+gaim_contact_on_account(contact, account)
+	Gaim::BuddyList::Contact contact
+	Gaim::Account account
+
+void
+gaim_contact_invalidate_priority_buddy(contact)
+	Gaim::BuddyList::Contact contact
+
+MODULE = Gaim::BuddyList  PACKAGE = Gaim::Group  PREFIX = gaim_group_
+PROTOTYPES: ENABLE
+
+
+Gaim::BuddyList::Group  
+gaim_group_new(name)
+	const char *name
+
+void 
+gaim_group_get_accounts(group)
+	Gaim::BuddyList::Group  group
+PREINIT:
+	GSList *l;
+PPCODE:
+	for (l = gaim_group_get_accounts(group); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListEntry")));
+	}
+
+gboolean 
+gaim_group_on_account(group, account)
+	Gaim::BuddyList::Group  group
+	Gaim::Account account
+
 
 MODULE = Gaim::BuddyList  PACKAGE = Gaim::BuddyList  PREFIX = gaim_blist_
 PROTOTYPES: ENABLE
 
 void
-gaim_blist_set_visible(show)
-	gboolean show
+gaim_blist_add_contact(contact, group, node)
+	Gaim::BuddyList::Contact contact
+	Gaim::BuddyList::Group  group
+	Gaim::BuddyList::Node node
+
+void
+gaim_blist_merge_contact(source, node)
+	Gaim::BuddyList::Contact source
+	Gaim::BuddyList::Node node
 
 void
-add_buddy(account, buddy, group)
-	Gaim::Account account
-	Gaim::BuddyList::Buddy buddy
-	Gaim::BuddyList::Group group
-CODE:
-	gaim_blist_add_buddy(buddy, NULL, group, NULL);
-	serv_add_buddy(gaim_account_get_connection(account), buddy);
+gaim_blist_add_group(group, node)
+	Gaim::BuddyList::Group  group
+	Gaim::BuddyList::Node node
 
 void
-add_group(group)
-	Gaim::BuddyList::Group group
-CODE:
-	gaim_blist_add_group(group, NULL);
-
-void
-add_chat(chat, group)
-	Gaim::BuddyList::Chat chat
-	Gaim::BuddyList::Group group
-CODE:
-	gaim_blist_add_chat(chat, group, NULL);
+gaim_blist_add_buddy(buddy, contact, group, node)
+	Gaim::BuddyList::Buddy buddy
+	Gaim::BuddyList::Contact contact
+	Gaim::BuddyList::Group  group
+	Gaim::BuddyList::Node node
 
 void
 gaim_blist_remove_buddy(buddy)
 	Gaim::BuddyList::Buddy buddy
 
 void
-gaim_blist_remove_group(group)
-	Gaim::BuddyList::Group group
+gaim_blist_remove_contact(contact)
+	Gaim::BuddyList::Contact contact
 
 void
 gaim_blist_remove_chat(chat)
 	Gaim::BuddyList::Chat chat
 
-Gaim::BuddyList::Buddy
-find_buddy(account, name)
-	Gaim::Account account
-	const char *name
-CODE:
-	RETVAL = gaim_find_buddy(account, name);
-OUTPUT:
-	RETVAL
-
 void
-find_buddies(account, name)
-	Gaim::Account account
-	const char *name
-PREINIT:
-	GSList *l;
-PPCODE:
-	for (l = gaim_find_buddies(account, name); l != NULL; l = l->next)
-	{
-		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data,
-			"Gaim::BuddyList::Buddy")));
-	}
-
-	g_slist_free(l);
-
-Gaim::BuddyList::Group
-find_group(name)
-	const char *name
-CODE:
-	RETVAL = gaim_find_group(name);
-OUTPUT:
-	RETVAL
+gaim_blist_remove_group(group)
+	Gaim::BuddyList::Group  group
 
 Gaim::BuddyList::Chat
 gaim_blist_find_chat(account, name)
@@ -79,22 +160,256 @@
 	const char *name
 
 void
-groups()
+gaim_blist_add_chat(chat, group, node)
+	Gaim::BuddyList::Chat chat
+	Gaim::BuddyList::Group  group
+	Gaim::BuddyList::Node node
+
+Gaim::BuddyList
+gaim_blist_new()
+
+void
+gaim_set_blist(blist)
+	Gaim::BuddyList blist
+
+void
+gaim_blist_show()
+
+void
+gaim_blist_destroy();
+
+void
+gaim_blist_set_visible(show)
+	gboolean show
+
+void
+gaim_blist_update_buddy_status(buddy, old_status)
+	Gaim::BuddyList::Buddy buddy
+	Gaim::Status old_status
+
+void
+gaim_blist_update_buddy_icon(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+void
+gaim_blist_rename_buddy(buddy, name)
+	Gaim::BuddyList::Buddy buddy
+	const char * name
+
+void
+gaim_blist_alias_buddy(buddy, alias)
+	Gaim::BuddyList::Buddy buddy
+	const char * alias
+
+void
+gaim_blist_server_alias_buddy(buddy, alias)
+	Gaim::BuddyList::Buddy buddy
+	const char * alias
+
+void
+gaim_blist_alias_chat(chat, alias)
+	Gaim::BuddyList::Chat chat
+	const char * alias
+
+void
+gaim_blist_rename_group(group, name)
+	Gaim::BuddyList::Group  group
+	const char * name
+
+void
+gaim_blist_add_account(account)
+	Gaim::Account account
+
+void
+gaim_blist_remove_account(account)
+	Gaim::Account account
+
+int 
+gaim_blist_get_group_size(group, offline)
+	Gaim::BuddyList::Group  group
+	gboolean offline
+
+int 
+gaim_blist_get_group_online_count(group)
+	Gaim::BuddyList::Group  group
+
+void
+gaim_blist_load()
+
+void
+gaim_blist_schedule_save()
+
+void
+gaim_blist_request_add_group()
+
+void
+gaim_blist_node_set_bool(node, key, value)
+	Gaim::BuddyList::Node node
+	const char * key
+	gboolean value
+
+gboolean 
+gaim_blist_node_get_bool(node, key)
+	Gaim::BuddyList::Node node
+	const char * key
+
+void
+gaim_blist_node_set_int(node, key, value)
+	Gaim::BuddyList::Node node
+	const char * key
+	int value
+
+int 
+gaim_blist_node_get_int(node, key)
+	Gaim::BuddyList::Node node
+	const char * key
+
+const char *
+gaim_blist_node_get_string(node, key)
+	Gaim::BuddyList::Node node
+	const char * key
+
+void
+gaim_blist_node_remove_setting(node, key)
+	Gaim::BuddyList::Node node
+	const char * key
+
+void
+gaim_blist_node_set_flags(node, flags)
+	Gaim::BuddyList::Node node
+	Gaim::BlistNodeFlags flags
+
+Gaim::BlistNodeFlags 
+gaim_blist_node_get_flags(node)
+	Gaim::BuddyList::Node node
+
+void
+gaim_blist_node_get_extended_menu(node)
+	Gaim::BuddyList::Node node
 PREINIT:
-	GaimBlistNode *node;
+	GList *l;
 PPCODE:
-	if (gaim_get_blist() != NULL)
-	{
-		for (node = gaim_get_blist()->root; node != NULL; node = node->next)
-		{
-			XPUSHs(sv_2mortal(gaim_perl_bless_object(node,
-				"Gaim::BuddyList::Group")));
-		}
+	for (l = gaim_blist_node_get_extended_menu(node); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListEntry")));
+	}
+	
+
+void
+gaim_blist_set_ui_ops(ops)
+	Gaim::BuddyList::UiOps ops
+
+
+Gaim::BuddyList::UiOps
+gaim_blist_get_ui_ops()
+
+void *
+gaim_blist_get_handle()
+
+void
+gaim_blist_init()
+
+void
+gaim_blist_uninit()
+
+
+MODULE = Gaim::BuddyList  PACKAGE = Gaim::Chat  PREFIX = gaim_chat_
+PROTOTYPES: ENABLE
+
+
+Gaim::BuddyList::Group  
+gaim_chat_get_group(chat)
+	Gaim::BuddyList::Chat chat
+
+const char *
+gaim_chat_get_name(chat)
+	Gaim::BuddyList::Chat chat
+
+Gaim::BuddyList::Chat
+gaim_chat_new(account, alias, components)
+	Gaim::Account account
+	const char * alias 
+	SV * components
+INIT:
+	HV * t_HV;
+	HE * t_HE;
+	SV * t_SV;
+	GHashTable * t_GHash;
+	int i;
+	I32 len;
+	char *t_key, *t_value;
+CODE:
+	t_HV =  (HV *)SvRV(components);
+	t_GHash = g_hash_table_new(NULL, NULL);
+
+	for (t_HE = hv_iternext(t_HV); t_HE != NULL; t_HE = hv_iternext(t_HV) ) {
+		t_key = hv_iterkey(t_HE, &len);
+		t_SV = *hv_fetch(t_HV, t_key, len, 0);
+ 		t_value = SvPV(t_SV, PL_na);
+
+		g_hash_table_insert(t_GHash, t_key, t_value);
 	}
 
-void *
-handle()
-CODE:
-	RETVAL = gaim_blist_get_handle();
+	RETVAL = gaim_chat_new(account, alias, t_GHash);
 OUTPUT:
 	RETVAL
+
+
+
+
+
+
+
+
+
+
+
+MODULE = Gaim::BuddyList  PACKAGE = Gaim::Buddy  PREFIX = gaim_buddy_
+PROTOTYPES: ENABLE
+
+Gaim::BuddyList::Buddy 
+gaim_buddy_new(account, screenname, alias)
+	Gaim::Account account
+	const char *screenname
+	const char *alias
+
+void
+gaim_buddy_set_icon(buddy, icon)
+	Gaim::BuddyList::Buddy buddy
+	Gaim::Buddy::Icon icon
+
+Gaim::Account 
+gaim_buddy_get_account(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+const char *
+gaim_buddy_get_name(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+Gaim::Buddy::Icon 
+gaim_buddy_get_icon(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+Gaim::BuddyList::Contact
+gaim_buddy_get_contact(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+Gaim::Presence  
+gaim_buddy_get_presence(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+const char *
+gaim_buddy_get_alias_only(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+const char *
+gaim_buddy_get_contact_alias(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+const char *
+gaim_buddy_get_local_alias(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+const char *
+gaim_buddy_get_alias(buddy)
+	Gaim::BuddyList::Buddy buddy
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Cipher.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,159 @@
+
+#include "module.h"
+
+/* TODO
+
+
+*/
+
+/**********************XS Code for Account.xs*********************************/
+MODULE = Gaim::Cipher  PACKAGE = Gaim::Cipher  PREFIX = gaim_cipher_
+PROTOTYPES: ENABLE
+
+const gchar *
+gaim_cipher_get_name(cipher)
+	Gaim::Cipher cipher
+
+guint 
+gaim_cipher_get_capabilities(cipher)
+	Gaim::Cipher cipher
+
+gboolean 
+gaim_cipher_digest_region(name, data, data_len, in_len, digest, out_len)
+	const gchar * name
+	const guint8 * data 
+	size_t &data_len
+	size_t &in_len
+	guint8 &digest 
+	size_t * out_len
+
+Gaim::Cipher
+gaim_ciphers_find_cipher(name)
+	gchar * name
+
+Gaim::Cipher
+gaim_ciphers_register_cipher(name, ops)
+	gchar * name
+	Gaim::Cipher::Ops ops
+
+gboolean 
+gaim_ciphers_unregister_cipher(cipher)
+	Gaim::Cipher cipher
+
+void
+gaim_ciphers_get_ciphers()
+PREINIT:
+	GList *l;
+PPCODE:
+	for (l = gaim_ciphers_get_ciphers(); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::Cipher")));
+	}
+
+gpointer 
+gaim_ciphers_get_handle()
+
+void 
+gaim_ciphers_init()
+
+void 
+gaim_ciphers_uninit()
+
+void 
+gaim_cipher_context_set_option(context, name, value)
+	Gaim::Cipher::Context context
+	gchar *name 
+	gpointer value
+
+gpointer 
+gaim_cipher_context_get_option(context, name)
+	Gaim::Cipher::Context context
+	gchar *name
+
+Gaim::Cipher::Context
+gaim_cipher_context_new(cipher, extra)
+	Gaim::Cipher cipher 
+	void *extra
+
+Gaim::Cipher::Context
+gaim_cipher_context_new_by_name(name, extra)
+	gchar *name
+	void *extra
+
+void 
+gaim_cipher_context_reset(context, extra)
+	Gaim::Cipher::Context context
+	gpointer extra
+
+void 
+gaim_cipher_context_destroy(context)
+	Gaim::Cipher::Context context
+
+void 
+gaim_cipher_context_set_iv(context, iv, len)
+	Gaim::Cipher::Context context
+	guint8 * iv
+	size_t len
+
+void 
+gaim_cipher_context_append(context, data, len)
+	Gaim::Cipher::Context context
+	guint8 * data
+	size_t len
+
+gboolean 
+gaim_cipher_context_digest(context, in_len, digest, out_len)
+	Gaim::Cipher::Context context
+	size_t in_len
+	guint8 &digest
+	size_t &out_len
+
+gboolean 
+gaim_cipher_context_digest_to_str(context, in_len, digest_s, out_len)
+	Gaim::Cipher::Context context
+	size_t in_len
+	guint8 &digest_s
+	size_t &out_len
+
+gint 
+gaim_cipher_context_encrypt(context, data, len, output, outlen)
+	Gaim::Cipher::Context context
+	guint8 &data
+	size_t len
+	guint8 &output
+	size_t &outlen
+
+gint 
+gaim_cipher_context_decrypt(context, data, len, output, outlen)
+	Gaim::Cipher::Context context
+	guint8 &data
+	size_t len
+	guint8 &output
+	size_t &outlen
+
+void 
+gaim_cipher_context_set_salt(context, salt)
+	Gaim::Cipher::Context context 
+	guint8 *salt
+
+size_t 
+gaim_cipher_context_get_salt_size(context)
+	Gaim::Cipher::Context context
+
+void 
+gaim_cipher_context_set_key(context, key)
+	Gaim::Cipher::Context context 
+	guint8 *key
+
+size_t 
+gaim_cipher_context_get_key_size(context)
+	Gaim::Cipher::Context context
+
+void 
+gaim_cipher_context_set_data(context, data)
+	Gaim::Cipher::Context context
+	gpointer data
+
+gpointer 
+gaim_cipher_context_get_data(context)
+	Gaim::Cipher::Context context
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Cmds.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,31 @@
+#include "module.h"
+
+MODULE = Gaim::Cmds  PACKAGE = Gaim::Cmds  PREFIX = gaim_cmd_
+PROTOTYPES: ENABLE
+
+
+void
+gaim_cmd_help(conv, cmd)
+	Gaim::Conversation conv
+	const gchar *cmd
+PREINIT:
+        GList *l;
+PPCODE:
+        for (l = gaim_cmd_help(conv, cmd); l != NULL; l = l->next) {
+                XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListEntry")));
+        }
+
+void
+gaim_cmd_list(conv)
+	Gaim::Conversation conv
+PREINIT:
+        GList *l;
+PPCODE:
+        for (l = gaim_cmd_list(conv); l != NULL; l = l->next) {
+                XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListEntry")));
+        }
+
+void 
+gaim_cmd_unregister(id)
+	Gaim::CmdId id
+
--- a/plugins/perl/common/Connection.xs	Mon Jul 18 07:26:09 2005 +0000
+++ b/plugins/perl/common/Connection.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -1,42 +1,108 @@
 #include "module.h"
 
-MODULE = Gaim::Connection  PACKAGE = Gaim::Connection  PREFIX = gaim_connection_
+/* TODO
+;
+
+;
+;
+;
+;;;;;
+;;;
+
+
+
+*/
+
+/**********************XS Code for Conversation.xs*********************************/
+MODULE = Gaim::Connection  PACKAGE = Gaim::GTK::Connection  PREFIX = gaim_gtk_connections_
 PROTOTYPES: ENABLE
 
-void
-gaim_connection_set_display_name(gc, name)
-	Gaim::Connection gc
-	const char *name
+Gaim::Connection::UiOps
+gaim_gtk_connections_get_ui_ops()
+
+MODULE = Gaim::Connection  PACKAGE = Gaim::Connection  PREFIX = gaim_connections_
+PROTOTYPES: ENABLE
 
 Gaim::Account
 gaim_connection_get_account(gc)
 	Gaim::Connection gc
 
 const char *
+gaim_connection_get_password(gc)
+	Gaim::Connection gc
+
+const char *
 gaim_connection_get_display_name(gc)
 	Gaim::Connection gc
 
+void 
+gaim_connection_notice(gc, text)
+	Gaim::Connection gc
+	const char *text
 
-MODULE = Gaim::Connections  PACKAGE = Gaim::Connections  PREFIX = gaim_connections_
-PROTOTYPES: ENABLE
+void 
+gaim_connection_error(gc, reason)
+	Gaim::Connection gc
+	const char *reason
 
-void
+void 
 gaim_connections_disconnect_all()
 
-void *
-handle()
-CODE:
-	RETVAL = gaim_connections_get_handle();
-OUTPUT:
-	RETVAL
+void
+gaim_connections_get_all()
+PREINIT:
+	GList *l;
+PPCODE:
+	for (l = gaim_connections_get_all(); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListEntry")));
+	}
 
 
-MODULE = Gaim::Connection  PACKAGE = Gaim
-
 void
-connections()
+gaim_connections_get_connecting()
 PREINIT:
 	GList *l;
 PPCODE:
-	for (l = gaim_connections_get_all(); l != NULL; l = l->next)
-		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::Connection")));
+	for (l = gaim_connections_get_connecting(); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListEntry")));
+	}
+
+void 
+gaim_connections_set_ui_ops(ops)
+	Gaim::Connection::UiOps ops
+
+Gaim::Connection::UiOps
+gaim_connections_get_ui_ops()
+
+void 
+gaim_connections_init()
+
+void 
+gaim_connections_uninit()
+
+void *
+gaim_connections_get_handle()
+
+void 
+gaim_connection_destroy(gc)
+	Gaim::Connection gc
+
+void 
+gaim_connection_set_state(gc, state)
+	Gaim::Connection gc
+	Gaim::ConnectionState state
+
+void 
+gaim_connection_set_account(gc, account)
+	Gaim::Connection gc
+	Gaim::Account account
+
+void 
+gaim_connection_set_display_name(gc, name)
+	Gaim::Connection gc
+	const char *name
+
+Gaim::ConnectionState 
+gaim_connection_get_state(gc)
+	Gaim::Connection gc
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/FT.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,161 @@
+#include "module.h"
+
+MODULE = Gaim::Xfer  PACKAGE = Gaim::Xfer  PREFIX = gaim_xfer_
+PROTOTYPES: ENABLE
+
+
+void 
+gaim_xfer_add(xfer)
+	Gaim::Xfer xfer
+
+void 
+gaim_xfer_cancel_local(xfer)
+	Gaim::Xfer xfer
+
+void 
+gaim_xfer_cancel_remote(xfer)
+	Gaim::Xfer xfer
+
+void 
+gaim_xfer_end(xfer)
+	Gaim::Xfer xfer
+
+void 
+gaim_xfer_error(type, account, who, msg)
+	Gaim::XferType type
+	Gaim::Account account
+	const char *who
+	const char *msg
+
+Gaim::Account
+gaim_xfer_get_account(xfer)
+	Gaim::Xfer xfer
+
+size_t 
+gaim_xfer_get_bytes_remaining(xfer)
+	Gaim::Xfer xfer
+
+size_t 
+gaim_xfer_get_bytes_sent(xfer)
+	Gaim::Xfer xfer
+
+const char *
+gaim_xfer_get_filename(xfer)
+	Gaim::Xfer xfer
+
+const char *
+gaim_xfer_get_local_filename(xfer)
+	Gaim::Xfer xfer
+
+unsigned int 
+gaim_xfer_get_local_port(xfer)
+	Gaim::Xfer xfer
+
+double 
+gaim_xfer_get_progress(xfer)
+	Gaim::Xfer xfer
+
+const char *
+gaim_xfer_get_remote_ip(xfer)
+	Gaim::Xfer xfer
+
+unsigned int 
+gaim_xfer_get_remote_port(xfer)
+	Gaim::Xfer xfer
+
+size_t 
+gaim_xfer_get_size(xfer)
+	Gaim::Xfer xfer
+
+Gaim::XferStatusType
+gaim_xfer_get_status(xfer)
+	Gaim::Xfer xfer
+
+Gaim::XferType
+gaim_xfer_get_type(xfer)
+	Gaim::Xfer xfer
+
+Gaim::XferUiOps
+gaim_xfer_get_ui_ops(xfer)
+	Gaim::Xfer xfer
+
+gboolean 
+gaim_xfer_is_canceled(xfer)
+	Gaim::Xfer xfer
+
+gboolean 
+gaim_xfer_is_completed(xfer)
+	Gaim::Xfer xfer
+
+ssize_t 
+gaim_xfer_read(xfer, buffer)
+	Gaim::Xfer xfer
+	char **buffer
+
+void 
+gaim_xfer_ref(xfer)
+	Gaim::Xfer xfer
+
+void 
+gaim_xfer_request(xfer)
+	Gaim::Xfer xfer
+
+void 
+gaim_xfer_request_accepted(xfer, filename)
+	Gaim::Xfer xfer
+	const char *filename
+
+void 
+gaim_xfer_request_denied(xfer)
+	Gaim::Xfer xfer
+
+void 
+gaim_xfer_set_completed(xfer, completed)
+	Gaim::Xfer xfer
+	gboolean completed
+
+void 
+gaim_xfer_set_filename(xfer, filename)
+	Gaim::Xfer xfer
+	const char *filename
+
+void 
+gaim_xfer_set_local_filename(xfer, filename)
+	Gaim::Xfer xfer
+	const char *filename
+
+void 
+gaim_xfer_set_message(xfer, message)
+	Gaim::Xfer xfer
+	const char *message
+
+void 
+gaim_xfer_set_size(xfer, size)
+	Gaim::Xfer xfer
+	size_t size
+
+void 
+gaim_xfer_unref(xfer)
+	Gaim::Xfer xfer
+
+void 
+gaim_xfer_update_progress(xfer)
+	Gaim::Xfer xfer
+
+ssize_t 
+gaim_xfer_write(xfer, buffer, size)
+	Gaim::Xfer xfer
+	const char *buffer
+	size_t size
+
+MODULE = Gaim::Xfer  PACKAGE = Gaim::Xfers  PREFIX = gaim_xfers_
+PROTOTYPES: ENABLE
+
+Gaim::XferUiOps
+gaim_xfers_get_ui_ops()
+ 
+
+void 
+gaim_xfers_set_ui_ops(ops)
+	Gaim::XferUiOps ops
+
--- a/plugins/perl/common/Gaim.xs	Mon Jul 18 07:26:09 2005 +0000
+++ b/plugins/perl/common/Gaim.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -1,6 +1,5 @@
 #include "module.h"
 #include "../perl-handlers.h"
-
 #include "const-c.inc"
 
 MODULE = Gaim  PACKAGE = Gaim  PREFIX = gaim_
@@ -8,6 +7,13 @@
 
 INCLUDE: const-xs.inc
 
+Gaim::PluginUiInfo
+plugin_ui_info()
+CODE:
+	RETVAL = gaim_perl_plugin_pref();
+OUTPUT:
+	RETVAL
+
 void
 timeout_add(plugin, seconds, callback, data = 0)
 	Gaim::Plugin plugin
@@ -85,12 +91,30 @@
 BOOT:
 	GAIM_PERL_BOOT(Account);
 	GAIM_PERL_BOOT(BuddyList);
-	GAIM_PERL_BOOT(BuddyList__Group);
-	GAIM_PERL_BOOT(BuddyList__Buddy);
-	GAIM_PERL_BOOT(BuddyList__Chat);
+	GAIM_PERL_BOOT(Account__Option); 
+	GAIM_PERL_BOOT(Buddy__Icon);
+	GAIM_PERL_BOOT(Cipher);
+	GAIM_PERL_BOOT(Conv);
 	GAIM_PERL_BOOT(Connection);
-	GAIM_PERL_BOOT(Conversation);
-	GAIM_PERL_BOOT(Conversation__Chat);
-	GAIM_PERL_BOOT(Conversation__IM);
-	GAIM_PERL_BOOT(ConvWindow);
-
+	GAIM_PERL_BOOT(Plugin);
+	GAIM_PERL_BOOT(Prefs);
+	GAIM_PERL_BOOT(Cmds);
+	GAIM_PERL_BOOT(Xfer);
+	GAIM_PERL_BOOT(ImgStore);
+	GAIM_PERL_BOOT(Log);
+	GAIM_PERL_BOOT(Network);
+	GAIM_PERL_BOOT(Notify);
+	GAIM_PERL_BOOT(Pounce);
+	GAIM_PERL_BOOT(Pref); 
+	GAIM_PERL_BOOT(Privacy);
+	GAIM_PERL_BOOT(Proxy);
+	GAIM_PERL_BOOT(Prpl);
+	GAIM_PERL_BOOT(Request);
+	GAIM_PERL_BOOT(Roomlist);
+	GAIM_PERL_BOOT(SavedStatus);
+	GAIM_PERL_BOOT(Sound);
+	GAIM_PERL_BOOT(SSL);
+	GAIM_PERL_BOOT(Status);
+	GAIM_PERL_BOOT(Stringref);
+	GAIM_PERL_BOOT(Util);
+	GAIM_PERL_BOOT(XMLNode); 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/ImgStore.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,39 @@
+
+#include "module.h"
+
+
+MODULE = Gaim::ImgStore  PACKAGE = Gaim::ImgStore  PREFIX = gaim_imgstore_
+PROTOTYPES: ENABLE
+
+
+
+int 
+gaim_imgstore_add(data, size, filename)
+	void *data
+	size_t size
+	const char *filename
+
+Gaim::StoredImage
+gaim_imgstore_get(id)
+	int id
+
+gpointer 
+gaim_imgstore_get_data(i)
+	Gaim::StoredImage i
+
+const char *
+gaim_imgstore_get_filename(i)
+	Gaim::StoredImage i
+
+size_t 
+gaim_imgstore_get_size(i)
+	Gaim::StoredImage i
+
+void 
+gaim_imgstore_ref(id)
+	int id
+
+void 
+gaim_imgstore_unref(id)
+	int id
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Log.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,102 @@
+#include "module.h"
+
+
+MODULE = Gaim::Log  PACKAGE = Gaim::Log  PREFIX = gaim_log_
+PROTOTYPES: ENABLE
+
+
+
+int 
+gaim_log_common_sizer(log)
+	Gaim::Log log
+
+void 
+gaim_log_common_writer(log, time, ext)
+	Gaim::Log log
+	time_t time
+	const char *ext
+
+
+gint 
+gaim_log_compare(y, z)
+	gconstpointer y
+	gconstpointer z
+
+void 
+gaim_log_free(log)
+	Gaim::Log log
+
+char *
+gaim_log_get_log_dir(type, name, account)
+	Gaim::LogType type
+	const char *name
+	Gaim::Account account
+
+void
+gaim_log_get_log_sets()
+PREINIT:
+        GList *l;
+PPCODE:
+        for (l = gaim_log_get_log_sets(); l != NULL; l = l->next) {
+                XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListEntry")));
+        }
+
+void
+gaim_log_get_logs(type, name, account)
+	Gaim::LogType type
+	const char *name
+	Gaim::Account account
+PREINIT:
+        GList *l;
+PPCODE:
+        for (l = gaim_log_get_logs(type, name, account); l != NULL; l = l->next) {
+                XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListEntry")));
+        }
+
+int 
+gaim_log_get_size(log)
+	Gaim::Log log
+
+void
+gaim_log_get_system_logs(account)
+	Gaim::Account account
+PREINIT:
+        GList *l;
+PPCODE:
+        for (l = gaim_log_get_system_logs(account); l != NULL; l = l->next) {
+                XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListEntry")));
+        }
+
+int 
+gaim_log_get_total_size(type, name, account)
+	Gaim::LogType type
+	const char *name
+	Gaim::Account account
+
+void 
+gaim_log_init()
+ 
+
+void 
+gaim_log_logger_free(logger)
+	Gaim::Log::Logger logger
+
+void
+gaim_log_logger_get_options()
+PREINIT:
+        GList *l;
+PPCODE:
+        for (l = gaim_log_logger_get_options(); l != NULL; l = l->next) {
+                XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListEntry")));
+        }
+
+char *
+gaim_log_read(log, flags)
+	Gaim::Log log
+	Gaim::Log::ReadFlags flags
+
+gint 
+gaim_log_set_compare(y, z)
+	gconstpointer y
+	gconstpointer z
+
--- a/plugins/perl/common/MANIFEST	Mon Jul 18 07:26:09 2005 +0000
+++ b/plugins/perl/common/MANIFEST	Mon Jul 18 13:37:38 2005 +0000
@@ -1,15 +1,35 @@
 Account.xs
+AccountOpts.xs
+BuddyIcon.xs
 BuddyList.xs
-BuddyList_Buddy.xs
-BuddyList_Chat.xs
-BuddyList_Group.xs
+Cipher.xs
+Cmds.xs
 Connection.xs
-ConvWindow.xs
 Conversation.xs
-Conversation_Chat.xs
-Conversation_IM.xs
+FT.xs
+Gaim.xs
+ImgStore.xs
+Log.xs
+Network.xs
+Notify.xs
+Plugin.xs
+PluginPref.xs
+Pounce.xs
+Prefs.xs
+Privacy.xs
+Proxy.xs
+Prpl.xs
+Request.xs
+Roomlist.xs
+SSLConn.xs
+SavedStatuses.xs
+Server.xs
+Sound.xs
+Status.xs
+Stringref.xs
+Util.xs
+XMLNode.xs
 Gaim.pm
-Gaim.xs
 MANIFEST
 Makefile.PL
 typemap
--- a/plugins/perl/common/Makefile.PL.in	Mon Jul 18 07:26:09 2005 +0000
+++ b/plugins/perl/common/Makefile.PL.in	Mon Jul 18 13:37:38 2005 +0000
@@ -11,7 +11,7 @@
        AUTHOR     => 'Christian Hammond <chipx86@gnupdate.org>') : ()),
     'LIBS'		=> [''], # e.g., '-lm'
     'DEFINE'		=> '', # e.g., '-DHAVE_SOMETHING'
-    'INC'		=> '-I. -I@srcdir@ -I@top_srcdir@ -I@top_srcdir@/src @GLIB_CFLAGS@', # e.g., '-I. -I/usr/include/other'
+    'INC'		=> '-I. -I@srcdir@ -I@top_srcdir@ -I@top_srcdir@/src @GLIB_CFLAGS@ @GTK_CFLAGS@', # e.g., '-I. -I/usr/include/other'
     'OBJECT'		=> '$(O_FILES)', # link all the C files too
 );
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Network.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,43 @@
+#include "module.h"
+
+MODULE = Gaim::Network  PACKAGE = Gaim::Network  PREFIX = gaim_network_
+PROTOTYPES: ENABLE
+
+
+const char *
+gaim_network_get_local_system_ip(fd)
+	int fd
+
+const char *
+gaim_network_get_my_ip(fd)
+	int fd
+
+unsigned short 
+gaim_network_get_port_from_fd(fd)
+	int fd
+
+const char *
+gaim_network_get_public_ip()
+ 
+
+void 
+gaim_network_init()
+ 
+
+const char *
+gaim_network_ip_atoi(ip)
+	const char *ip
+
+int 
+gaim_network_listen(port)
+	unsigned short port
+
+int 
+gaim_network_listen_range(start, end)
+	unsigned short start
+	unsigned short end
+
+void 
+gaim_network_set_public_ip(ip)
+	const char *ip
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Notify.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,103 @@
+
+#include "module.h"
+
+/* TODO
+
+
+*/
+
+MODULE = Gaim::Notify  PACKAGE = Gaim::Notify  PREFIX = gaim_notify_
+PROTOTYPES: ENABLE
+
+
+
+void 
+gaim_notify_close(type, ui_handle)
+	Gaim::NotifyType type
+ 	void * ui_handle
+
+void 
+gaim_notify_close_with_handle(handle)
+ 	void * handle 
+
+void *
+gaim_notify_email(handle, subject, from, to, url, cb, user_data)
+ 	void * handle
+	const char *subject
+	const char *from
+	const char *to
+	const char *url
+	GCallback cb
+	void * user_data
+ 
+
+void *
+gaim_notify_emails(handle, count, detailed, subjects, froms, tos, urls, cb, user_data)
+ 	void * handle
+	size_t count
+	gboolean detailed
+	const char **subjects
+	const char **froms
+	const char **tos
+	const char **urls
+	GCallback cb
+	void * user_data
+ 
+
+void *
+gaim_notify_formatted(handle, title, primary, secondary, text, cb, user_data)
+ 	void * handle
+	const char *title
+	const char *primary
+	const char *secondary
+	const char *text
+	GCallback cb
+	void * user_data
+ 
+
+Gaim::NotifyUiOps
+gaim_notify_get_ui_ops()
+ 
+
+void *
+gaim_notify_message(handle, type, title, primary, secondary, cb, user_data)
+ 	void * handle
+	Gaim::NotifyMsgType type
+	const char *title
+	const char *primary
+	const char *secondary
+	GCallback cb
+	void * user_data
+ 
+
+void *
+gaim_notify_searchresults(gc, title, primary, secondary, results, cb, user_data)
+	Gaim::Connection gc
+	const char *title
+	const char *primary
+	const char *secondary
+	const char **results
+	GCallback cb
+	void * user_data
+
+void 
+gaim_notify_set_ui_ops(ops)
+	Gaim::NotifyUiOps ops
+
+void *
+gaim_notify_uri(handle, uri)
+ 	void * handle
+	const char *uri
+
+void *
+gaim_notify_userinfo(gc, who, title, primary, secondary, text, cb, user_data)
+	Gaim::Connection gc
+	const char *who
+	const char *title
+	const char *primary
+	const char *secondary
+	const char *text
+	GCallback cb
+	void * user_data
+ 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Plugin.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,136 @@
+#include "module.h"
+
+MODULE = Gaim::Plugin  PACKAGE = Gaim::Plugin  PREFIX = gaim_plugin_
+PROTOTYPES: ENABLE
+
+
+void 
+gaim_plugin_destroy(plugin)
+	Gaim::Plugin plugin
+
+void 
+gaim_plugin_ipc_unregister(plugin, command)
+	Gaim::Plugin plugin
+	const char *command
+
+void 
+gaim_plugin_ipc_unregister_all(plugin)
+	Gaim::Plugin plugin
+
+gboolean 
+gaim_plugin_is_loaded(plugin)
+	Gaim::Plugin plugin
+
+gboolean 
+gaim_plugin_load(plugin)
+	Gaim::Plugin plugin
+
+Gaim::Plugin
+gaim_plugin_new(native, path)
+	gboolean native
+	const char *path
+
+Gaim::Plugin
+gaim_plugin_probe(filename)
+	const char *filename
+
+gboolean 
+gaim_plugin_register(plugin)
+	Gaim::Plugin plugin
+
+gboolean 
+gaim_plugin_reload(plugin)
+	Gaim::Plugin plugin
+
+gboolean 
+gaim_plugin_unload(plugin)
+	Gaim::Plugin plugin
+
+
+
+
+MODULE = Gaim::Plugin  PACKAGE = Gaim::Plugins  PREFIX = gaim_plugins_
+PROTOTYPES: ENABLE
+
+
+void 
+gaim_plugins_add_search_path(path)
+	const char *path
+
+void 
+gaim_plugins_destroy_all()
+ 
+
+gboolean 
+gaim_plugins_enabled()
+ 
+
+Gaim::Plugin
+gaim_plugins_find_with_basename(basename)
+	const char *basename
+
+Gaim::Plugin
+gaim_plugins_find_with_filename(filename)
+	const char *filename
+
+Gaim::Plugin
+gaim_plugins_find_with_id(id)
+	const char *id
+
+Gaim::Plugin
+gaim_plugins_find_with_name(name)
+	const char *name
+
+void
+gaim_plugins_get_all()
+PREINIT:
+        GList *l;
+PPCODE:
+        for (l = gaim_plugins_get_all(); l != NULL; l = l->next) {
+                XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::PTR")));
+        }
+ 
+
+void *
+gaim_plugins_get_handle()
+ 
+
+void
+gaim_plugins_get_loaded()
+PREINIT:
+        GList *l;
+PPCODE:
+        for (l = gaim_plugins_get_loaded(); l != NULL; l = l->next) {
+                XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::PTR")));
+        }
+ 
+
+void
+gaim_plugins_get_protocols()
+PREINIT:
+        GList *l;
+PPCODE:
+        for (l = gaim_plugins_get_protocols(); l != NULL; l = l->next) {
+                XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::PTR")));
+        }
+ 
+
+void 
+gaim_plugins_init()
+ 
+
+void 
+gaim_plugins_load_saved(key)
+	const char *key
+
+void 
+gaim_plugins_probe(ext)
+	const char *ext
+
+void 
+gaim_plugins_uninit()
+ 
+
+void 
+gaim_plugins_unload_all()
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/PluginPref.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,132 @@
+
+#include "module.h"
+
+/* TODO
+
+
+*/
+
+
+MODULE = Gaim::Pref  PACKAGE = Gaim::Pref  PREFIX = gaim_plugin_pref_
+PROTOTYPES: ENABLE
+
+void 
+gaim_plugin_pref_add_choice(pref, label, choice)
+	Gaim::PluginPref pref
+	char *label
+	gpointer choice
+
+void 
+gaim_plugin_pref_destroy(pref)
+	Gaim::PluginPref pref
+
+void 
+gaim_plugin_pref_frame_add(frame, pref)
+	Gaim::PluginPrefFrame frame
+	Gaim::PluginPref pref
+
+void 
+gaim_plugin_pref_frame_destroy(frame)
+	Gaim::PluginPrefFrame frame
+
+void
+gaim_plugin_pref_frame_get_prefs(frame)
+	Gaim::PluginPrefFrame frame
+PREINIT:
+	GList *l;
+PPCODE:
+	for (l = gaim_plugin_pref_frame_get_prefs(frame); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
+	}
+	
+Gaim::PluginPrefFrame
+gaim_plugin_pref_frame_new()
+
+
+void 
+gaim_plugin_pref_get_bounds(pref, min, max)
+	Gaim::PluginPref pref
+	int *min
+	int *max
+
+void
+gaim_plugin_pref_get_choices(pref)
+	Gaim::PluginPref pref
+PREINIT:
+	GList *l;
+PPCODE:
+	for (l = gaim_plugin_pref_get_choices(pref); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
+	}
+	
+char *
+gaim_plugin_pref_get_label(pref)
+	Gaim::PluginPref pref
+
+gboolean 
+gaim_plugin_pref_get_masked(pref)
+	Gaim::PluginPref pref
+
+unsigned int 
+gaim_plugin_pref_get_max_length(pref)
+	Gaim::PluginPref pref
+
+char *
+gaim_plugin_pref_get_name(pref)
+	Gaim::PluginPref pref
+
+Gaim::PluginPrefType
+gaim_plugin_pref_get_type(pref)
+	Gaim::PluginPref pref
+
+Gaim::PluginPref
+gaim_plugin_pref_new()
+
+
+Gaim::PluginPref
+gaim_plugin_pref_new_with_label(label)
+	char *label
+
+Gaim::PluginPref
+gaim_plugin_pref_new_with_name(name)
+	char *name
+
+Gaim::PluginPref
+gaim_plugin_pref_new_with_name_and_label(name, label)
+	char *name
+	char *label
+
+void 
+gaim_plugin_pref_set_bounds(pref, min, max)
+	Gaim::PluginPref pref
+	int min
+	int max
+
+void 
+gaim_plugin_pref_set_label(pref, label)
+	Gaim::PluginPref pref
+	char *label
+
+void 
+gaim_plugin_pref_set_masked(pref, mask)
+	Gaim::PluginPref pref
+	gboolean mask
+
+void 
+gaim_plugin_pref_set_max_length(pref, max_length)
+	Gaim::PluginPref pref
+	unsigned int max_length
+
+void 
+gaim_plugin_pref_set_name(pref, name)
+	Gaim::PluginPref pref
+	char *name
+
+void 
+gaim_plugin_pref_set_type(pref, type)
+	Gaim::PluginPref pref
+	Gaim::PluginPrefType type
+CODE:
+	printf("gaim_plugin_pref_set_type(): %d\n", (int)GAIM_PLUGIN_PREF_CHOICE);
+	gaim_plugin_pref_set_type(pref, GAIM_PLUGIN_PREF_CHOICE);
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Pounce.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,99 @@
+
+#include "module.h"
+
+/* TODO
+
+
+*/
+
+MODULE = Gaim::Pounce  PACKAGE = Gaim::Pounce  PREFIX = gaim_pounce_
+PROTOTYPES: ENABLE
+
+void 
+gaim_pounce_action_register(pounce, name)
+	Gaim::Pounce pounce
+	const char *name
+
+void 
+gaim_pounce_destroy(pounce)
+	Gaim::Pounce pounce
+
+void 
+gaim_pounce_destroy_all_by_account(account)
+	Gaim::Account account
+
+void *
+gaim_pounce_get_data(pounce)
+	Gaim::Pounce pounce
+
+Gaim::PounceEvent
+gaim_pounce_get_events(pounce)
+	Gaim::Pounce pounce
+
+const char *
+gaim_pounce_get_pouncee(pounce)
+	Gaim::Pounce pounce
+
+Gaim::Account
+gaim_pounce_get_pouncer(pounce)
+	Gaim::Pounce pounce
+
+gboolean 
+gaim_pounce_get_save(pounce)
+	Gaim::Pounce pounce
+
+void 
+gaim_pounce_set_data(pounce, data)
+	Gaim::Pounce pounce
+	void * data
+
+void 
+gaim_pounce_set_events(pounce, events)
+	Gaim::Pounce pounce
+	Gaim::PounceEvent events
+
+void 
+gaim_pounce_set_pouncee(pounce, pouncee)
+	Gaim::Pounce pounce
+	const char *pouncee
+
+void 
+gaim_pounce_set_pouncer(pounce, pouncer)
+	Gaim::Pounce pounce
+	Gaim::Account pouncer
+
+void 
+gaim_pounce_set_save(pounce, save)
+	Gaim::Pounce pounce
+	gboolean save
+
+void
+gaim_pounces_get_all()
+PREINIT:
+	GList *l;
+PPCODE:
+	for (l = gaim_pounces_get_all(); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::Status::Type")));
+	}
+
+
+void *
+gaim_pounces_get_handle()
+ 
+
+void 
+gaim_pounces_init()
+ 
+
+gboolean 
+gaim_pounces_load()
+ 
+
+void 
+gaim_pounces_uninit()
+ 
+
+void 
+gaim_pounces_unregister_handler(ui)
+	const char *ui
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Prefs.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,163 @@
+#include "module.h"
+
+MODULE = Gaim::Prefs  PACKAGE = Gaim::Prefs  PREFIX = gaim_prefs_
+PROTOTYPES: ENABLE
+
+
+void 
+gaim_prefs_add_bool(name, value)
+	const char *name
+	gboolean value
+
+void 
+gaim_prefs_add_int(name, value)
+	const char *name
+	int value
+
+void 
+gaim_prefs_add_none(name)
+	const char *name
+
+void 
+gaim_prefs_add_string(name, value)
+	const char *name
+	const char *value
+
+void 
+gaim_prefs_add_string_list(name, value)
+	const char *name
+	SV *value
+PREINIT:
+        GList *t_GL;
+        int i, t_len;
+PPCODE:
+        t_GL = NULL;
+        t_len = av_len((AV *)SvRV(value));
+
+        for (i = 0; i < t_len; i++) {
+                STRLEN t_sl;
+                t_GL = g_list_append(t_GL, SvPV(*av_fetch((AV *)SvRV(value), i, 0), t_sl));
+        }
+	gaim_prefs_add_string_list(name, t_GL);
+
+
+
+void 
+gaim_prefs_destroy()
+
+
+void 
+gaim_prefs_disconnect_by_handle(handle)
+ 	void * handle
+
+void 
+gaim_prefs_disconnect_callback(callback_id)
+	guint callback_id
+
+gboolean 
+gaim_prefs_exists(name)
+	const char *name
+
+gboolean 
+gaim_prefs_get_bool(name)
+	const char *name
+
+void *
+gaim_prefs_get_handle()
+ 
+
+int 
+gaim_prefs_get_int(name)
+	const char *name
+
+const char *
+gaim_prefs_get_string(name)
+	const char *name
+
+void
+gaim_prefs_get_string_list(name)
+	const char *name
+PREINIT:
+        GList *l;
+PPCODE:
+        for (l = gaim_prefs_get_string_list(name); l != NULL; l = l->next) {
+                XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::PrefValue")));
+        }
+
+
+
+Gaim::PrefType
+gaim_prefs_get_type(name)
+	const char *name
+
+void 
+gaim_prefs_init()
+
+
+gboolean 
+gaim_prefs_load()
+
+
+void 
+gaim_prefs_remove(name)
+	const char *name
+
+void 
+gaim_prefs_rename(oldname, newname)
+	const char *oldname
+	const char *newname
+
+void 
+gaim_prefs_rename_boolean_toggle(oldname, newname)
+	const char *oldname
+	const char *newname
+
+void 
+gaim_prefs_set_bool(name, value)
+	const char *name
+	gboolean value
+
+void 
+gaim_prefs_set_generic(name, value)
+	const char *name
+	gpointer value
+
+void 
+gaim_prefs_set_int(name, value)
+	const char *name
+	int value
+
+void 
+gaim_prefs_set_string(name, value)
+	const char *name
+	const char *value
+
+void 
+gaim_prefs_set_string_list(name, value)
+	const char *name
+	SV *value
+PREINIT:
+        GList *t_GL;
+        int i, t_len;
+PPCODE:
+        t_GL = NULL;
+        t_len = av_len((AV *)SvRV(value));
+
+        for (i = 0; i < t_len; i++) {
+                STRLEN t_sl;
+                t_GL = g_list_append(t_GL, SvPV(*av_fetch((AV *)SvRV(value), i, 0), t_sl));
+        }
+	gaim_prefs_set_string_list(name, t_GL);
+
+void 
+gaim_prefs_trigger_callback(name)
+	const char *name
+
+void 
+gaim_prefs_uninit()
+ 
+
+void 
+gaim_prefs_update_old()
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Privacy.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,23 @@
+
+#include "module.h"
+
+/* TODO
+
+
+*/
+
+MODULE = Gaim::Privacy  PACKAGE = Gaim::Privacy  PREFIX = gaim_privacy_
+PROTOTYPES: ENABLE
+
+Gaim::Privacy::UiOps
+gaim_privacy_get_ui_ops()
+ 
+
+void 
+gaim_privacy_init()
+ 
+
+void 
+gaim_privacy_set_ui_ops(ops)
+	Gaim::Privacy::UiOps ops
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Proxy.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,77 @@
+
+#include "module.h"
+
+/* TODO
+
+
+*/
+
+MODULE = Gaim::Proxy  PACKAGE = Gaim::Proxy  PREFIX = gaim_proxy_
+PROTOTYPES: ENABLE
+
+
+Gaim::ProxyInfo
+gaim_global_proxy_get_info()
+ 
+
+void *
+gaim_proxy_get_handle()
+
+
+void 
+gaim_proxy_info_destroy(info)
+	Gaim::ProxyInfo info
+
+const char *
+gaim_proxy_info_get_host(info)
+	Gaim::ProxyInfo info
+
+const char *
+gaim_proxy_info_get_password(info)
+	Gaim::ProxyInfo info
+
+int 
+gaim_proxy_info_get_port(info)
+	Gaim::ProxyInfo info
+
+Gaim::ProxyType
+gaim_proxy_info_get_type(info)
+	Gaim::ProxyInfo info
+
+const char *
+gaim_proxy_info_get_username(info)
+	Gaim::ProxyInfo info
+
+Gaim::ProxyInfo
+gaim_proxy_info_new()
+ 
+
+void 
+gaim_proxy_info_set_host(info, host)
+	Gaim::ProxyInfo info
+	const char *host
+
+void 
+gaim_proxy_info_set_password(info, password)
+	Gaim::ProxyInfo info
+	const char *password
+
+void 
+gaim_proxy_info_set_port(info, port)
+	Gaim::ProxyInfo info
+	int port
+
+void 
+gaim_proxy_info_set_type(info, type)
+	Gaim::ProxyInfo info
+	Gaim::ProxyType type
+
+void 
+gaim_proxy_info_set_username(info, username)
+	Gaim::ProxyInfo info
+	const char *username
+
+void 
+gaim_proxy_init()
+ 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Prpl.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,75 @@
+
+#include "module.h"
+
+/* TODO
+gaim_prpl_got_account_statu(s) ... variable arguments lists suck.
+
+*/
+
+MODULE = Gaim::Prpl  PACKAGE = Gaim::Find  PREFIX = gaim_find_
+PROTOTYPES: ENABLE
+
+Gaim::Plugin
+gaim_find_prpl(id)
+	const char *id
+
+
+MODULE = Gaim::Prpl  PACKAGE = Gaim::Prpl  PREFIX = gaim_prpl_
+PROTOTYPES: ENABLE
+
+
+void 
+gaim_prpl_change_account_status(account, old_status, new_status)
+	Gaim::Account account
+	Gaim::Status old_status
+	Gaim::Status new_status
+
+void
+gaim_prpl_get_statuses(account, presence)
+	Gaim::Account account
+	Gaim::Presence presence
+PREINIT:
+        GList *l;
+PPCODE:
+        for (l = gaim_prpl_get_statuses(account,presence); l != NULL; l = l->next) {
+                XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
+        }
+
+
+
+void 
+gaim_prpl_got_account_idle(account, idle, idle_time)
+	Gaim::Account account
+	gboolean idle
+	time_t idle_time
+
+void 
+gaim_prpl_got_account_login_time(account, login_time)
+	Gaim::Account account
+	time_t login_time
+
+void 
+gaim_prpl_got_account_warning_level(account, username, level)
+	Gaim::Account account
+	const char *username
+	unsigned int level
+
+void 
+gaim_prpl_got_user_idle(account, name, idle, idle_time)
+	Gaim::Account account
+	const char *name
+	gboolean idle
+	time_t idle_time
+
+void 
+gaim_prpl_got_user_login_time(account, name, login_time)
+	Gaim::Account account
+	const char *name
+	time_t login_time
+
+void 
+gaim_prpl_got_user_warning_level(account, name, level)
+	Gaim::Account account
+	const char *name
+	unsigned int level
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Request.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,471 @@
+#include "module.h"
+
+/* TODO
+
+void *
+gaim_request_fields(handle, title, primary, secondary, fields, ok_text, ok_cb, cancel_text, cancel_cb, user_data)
+
+void *
+gaim_request_input(handle, title, primary, secondary, default_value, multiline, masked, hint, ok_text, ok_cb, cancel_text, cancel_cb, user_data)
+ 
+
+void *
+gaim_request_file(handle, title, filename, savedialog, ok_cb, cancel_cb, user_data)
+
+void 
+gaim_request_field_account_set_filter(field, filter_func)
+
+
+void *
+gaim_request_action(handle, title, primary, secondary, default_action, user_data, action_count, gaim_request_action)
+
+
+void *
+gaim_request_choice(handle, title, primary, secondary, default_value, ok_text, ok_cb, cancel_text, cancel_cb, user_data, gaim_request_choice)
+
+void *
+gaim_request_choice_varg(handle, title, primary, secondary, default_value, ok_text, ok_cb, cancel_text, cancel_cb, user_data, choices)
+
+
+
+*/
+
+
+MODULE = Gaim::Request  PACKAGE = Gaim::Request  PREFIX = gaim_request_
+PROTOTYPES: ENABLE
+
+
+void *
+gaim_request_action_varg(handle, title, primary, secondary, default_action, user_data, action_count, actions)
+ 	void * handle
+	const char *title
+	const char *primary
+	const char *secondary
+	unsigned int default_action
+	void *user_data 
+	size_t action_count
+	va_list actions
+
+
+
+void 
+gaim_request_close(type, uihandle)
+	Gaim::RequestType type
+	void * uihandle 
+
+void 
+gaim_request_close_with_handle(handle)
+	void * handle 
+
+Gaim::Account
+gaim_request_field_account_get_default_value(field)
+	Gaim::Request::Field field
+
+SV *
+gaim_request_field_account_get_filter(field)
+	Gaim::Request::Field field
+
+gboolean 
+gaim_request_field_account_get_show_all(field)
+	Gaim::Request::Field field
+
+Gaim::Account
+gaim_request_field_account_get_value(field)
+	Gaim::Request::Field field
+
+Gaim::Request::Field
+gaim_request_field_account_new(id, text, account)
+	const char *id
+	const char *text
+	Gaim::Account account
+
+void 
+gaim_request_field_account_set_default_value(field, default_value)
+	Gaim::Request::Field field
+	Gaim::Account default_value
+
+
+void 
+gaim_request_field_account_set_show_all(field, show_all)
+	Gaim::Request::Field field
+	gboolean show_all
+
+void 
+gaim_request_field_account_set_value(field, value)
+	Gaim::Request::Field field
+	Gaim::Account value
+
+gboolean 
+gaim_request_field_bool_get_default_value(field)
+	Gaim::Request::Field field
+
+gboolean 
+gaim_request_field_bool_get_value(field)
+	Gaim::Request::Field field
+
+Gaim::Request::Field
+gaim_request_field_bool_new(id, text, default_value)
+	const char *id
+	const char *text
+	gboolean default_value
+
+void 
+gaim_request_field_bool_set_default_value(field, default_value)
+	Gaim::Request::Field field
+	gboolean default_value
+
+void 
+gaim_request_field_bool_set_value(field, value)
+	Gaim::Request::Field field
+	gboolean value
+
+void 
+gaim_request_field_choice_add(field, label)
+	Gaim::Request::Field field
+	const char *label
+
+int 
+gaim_request_field_choice_get_default_value(field)
+	Gaim::Request::Field field
+
+void
+gaim_request_field_choice_get_labels(field)
+	Gaim::Request::Field field
+PREINIT:
+        GList *l;
+PPCODE:
+        for (l = gaim_request_field_choice_get_labels(field); l != NULL; l = l->next) {
+                XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
+        }
+
+
+
+
+int 
+gaim_request_field_choice_get_value(field)
+	Gaim::Request::Field field
+
+Gaim::Request::Field
+gaim_request_field_choice_new(id, text, default_value)
+	const char *id
+	const char *text
+	int default_value
+
+void 
+gaim_request_field_choice_set_default_value(field, default_value)
+	Gaim::Request::Field field
+	int default_value
+
+void 
+gaim_request_field_choice_set_value(field, value)
+	Gaim::Request::Field field
+	int value
+
+void 
+gaim_request_field_destroy(field)
+	Gaim::Request::Field field
+
+const char *
+gaim_request_field_get_id(field)
+	Gaim::Request::Field field
+
+const char *
+gaim_request_field_get_label(field)
+	Gaim::Request::Field field
+
+Gaim::RequestFieldType
+gaim_request_field_get_type(field)
+	Gaim::Request::Field field
+
+const char *
+gaim_request_field_get_type_hint(field)
+	Gaim::Request::Field field
+
+void 
+gaim_request_field_group_add_field(group, field)
+	Gaim::Request::Field::Group group
+	Gaim::Request::Field field
+
+void 
+gaim_request_field_group_destroy(group)
+	Gaim::Request::Field::Group group
+
+void
+gaim_request_field_group_get_fields(group)
+	Gaim::Request::Field::Group group
+PREINIT:
+        GList *l;
+PPCODE:
+        for (l = gaim_request_field_group_get_fields(group); l != NULL; l = l->next) {
+                XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
+        }
+
+
+
+const char *
+gaim_request_field_group_get_title(group)
+	Gaim::Request::Field::Group group
+
+Gaim::Request::Field::Group
+gaim_request_field_group_new(title)
+	const char *title
+
+int 
+gaim_request_field_int_get_default_value(field)
+	Gaim::Request::Field field
+
+int 
+gaim_request_field_int_get_value(field)
+	Gaim::Request::Field field
+
+Gaim::Request::Field
+gaim_request_field_int_new(id, text, default_value)
+	const char *id
+	const char *text
+	int default_value
+
+void 
+gaim_request_field_int_set_default_value(field, default_value)
+	Gaim::Request::Field field
+	int default_value
+
+void 
+gaim_request_field_int_set_value(field, value)
+	Gaim::Request::Field field
+	int value
+
+gboolean 
+gaim_request_field_is_required(field)
+	Gaim::Request::Field field
+
+gboolean 
+gaim_request_field_is_visible(field)
+	Gaim::Request::Field field
+
+Gaim::Request::Field
+gaim_request_field_label_new(id, text)
+	const char *id
+	const char *text
+
+void 
+gaim_request_field_list_add(field, item, data)
+	Gaim::Request::Field field
+	const char *item
+ 	void * data
+
+void 
+gaim_request_field_list_add_selected(field, item)
+	Gaim::Request::Field field
+	const char *item
+
+void 
+gaim_request_field_list_clear_selected(field)
+	Gaim::Request::Field field
+
+void *
+gaim_request_field_list_get_data(field, text)
+	Gaim::Request::Field field
+	const char *text
+
+void
+gaim_request_field_list_get_items(field)
+	Gaim::Request::Field field
+PREINIT:
+        GList *l;
+PPCODE:
+        for (l = gaim_request_field_list_get_items(field); l != NULL; l = l->next) {
+                XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
+        }
+
+gboolean 
+gaim_request_field_list_get_multi_select(field)
+	Gaim::Request::Field field
+
+void
+gaim_request_field_list_get_selected(field)
+	Gaim::Request::Field field
+PREINIT:
+        GList *l;
+PPCODE:
+        for (l = gaim_request_field_list_get_selected(field); l != NULL; l = l->next) {
+                XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
+        }
+
+
+gboolean 
+gaim_request_field_list_is_selected(field, item)
+	Gaim::Request::Field field
+	const char *item
+
+Gaim::Request::Field
+gaim_request_field_list_new(id, text)
+	const char *id
+	const char *text
+
+void 
+gaim_request_field_list_set_multi_select(field, multi_select)
+	Gaim::Request::Field field
+	gboolean multi_select
+
+Gaim::Request::Field
+gaim_request_field_new(id, text, type)
+	const char *id
+	const char *text
+	Gaim::RequestFieldType type
+
+void 
+gaim_request_field_set_label(field, label)
+	Gaim::Request::Field field
+	const char *label
+
+void 
+gaim_request_field_set_required(field, required)
+	Gaim::Request::Field field
+	gboolean required
+
+void 
+gaim_request_field_set_type_hint(field, type_hint)
+	Gaim::Request::Field field
+	const char *type_hint
+
+void 
+gaim_request_field_set_visible(field, visible)
+	Gaim::Request::Field field
+	gboolean visible
+
+const char *
+gaim_request_field_string_get_default_value(field)
+	Gaim::Request::Field field
+
+const char *
+gaim_request_field_string_get_value(field)
+	Gaim::Request::Field field
+
+gboolean 
+gaim_request_field_string_is_editable(field)
+	Gaim::Request::Field field
+
+gboolean 
+gaim_request_field_string_is_masked(field)
+	Gaim::Request::Field field
+
+gboolean 
+gaim_request_field_string_is_multiline(field)
+	Gaim::Request::Field field
+
+Gaim::Request::Field
+gaim_request_field_string_new(id, text, default_value, multiline)
+	const char *id
+	const char *text
+	const char *default_value
+	gboolean multiline
+
+void 
+gaim_request_field_string_set_default_value(field, default_value)
+	Gaim::Request::Field field
+	const char *default_value
+
+void 
+gaim_request_field_string_set_editable(field, editable)
+	Gaim::Request::Field field
+	gboolean editable
+
+void 
+gaim_request_field_string_set_masked(field, masked)
+	Gaim::Request::Field field
+	gboolean masked
+
+void 
+gaim_request_field_string_set_value(field, value)
+	Gaim::Request::Field field
+	const char *value
+
+void 
+gaim_request_fields_add_group(fields, group)
+	Gaim::Request::Fields fields
+	Gaim::Request::Field::Group group
+
+gboolean 
+gaim_request_fields_all_required_filled(fields)
+	Gaim::Request::Fields fields
+
+void 
+gaim_request_fields_destroy(fields)
+	Gaim::Request::Fields fields
+
+gboolean 
+gaim_request_fields_exists(fields, id)
+	Gaim::Request::Fields fields
+	const char *id
+
+Gaim::Account
+gaim_request_fields_get_account(fields, id)
+	Gaim::Request::Fields fields
+	const char *id
+
+gboolean 
+gaim_request_fields_get_bool(fields, id)
+	Gaim::Request::Fields fields
+	const char *id
+
+int 
+gaim_request_fields_get_choice(fields, id)
+	Gaim::Request::Fields fields
+	const char *id
+
+Gaim::Request::Field
+gaim_request_fields_get_field(fields, id)
+	Gaim::Request::Fields fields
+	const char *id
+
+void
+gaim_request_fields_get_groups(fields)
+	Gaim::Request::Fields fields
+PREINIT:
+        GList *l;
+PPCODE:
+        for (l = gaim_request_fields_get_groups(fields); l != NULL; l = l->next) {
+                XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
+        }
+
+
+
+int 
+gaim_request_fields_get_integer(fields, id)
+	Gaim::Request::Fields fields
+	const char *id
+
+void
+gaim_request_fields_get_required(fields)
+	Gaim::Request::Fields fields
+PREINIT:
+        GList *l;
+PPCODE:
+        for (l = gaim_request_fields_get_required(fields); l != NULL; l = l->next) {
+                XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
+        }
+
+
+
+const char *
+gaim_request_fields_get_string(fields, id)
+	Gaim::Request::Fields fields
+	const char *id
+
+gboolean 
+gaim_request_fields_is_field_required(fields, id)
+	Gaim::Request::Fields fields
+	const char *id
+
+Gaim::Request::Fields
+gaim_request_fields_new()
+ 
+
+Gaim::Request::UiOps
+gaim_request_get_ui_ops()
+ 
+
+void 
+gaim_request_set_ui_ops(ops)
+	Gaim::Request::UiOps ops
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Roomlist.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,91 @@
+
+
+#include "module.h"
+
+/* TODO
+
+
+*/
+
+MODULE = Gaim::Roomlist  PACKAGE = Gaim::Roomlist  PREFIX = gaim_roomlist_
+PROTOTYPES: ENABLE
+
+void 
+gaim_roomlist_cancel_get_list(list)
+	Gaim::Roomlist list
+
+void 
+gaim_roomlist_expand_category(list, category)
+	Gaim::Roomlist list
+	Gaim::Roomlist::Room category
+
+gboolean 
+gaim_roomlist_get_in_progress(list)
+	Gaim::Roomlist list
+
+Gaim::Roomlist
+gaim_roomlist_get_list(gc)
+	Gaim::Connection gc
+
+Gaim::Roomlist::UiOps
+gaim_roomlist_get_ui_ops()
+ 
+
+Gaim::Roomlist
+gaim_roomlist_new(account)
+	Gaim::Account account
+
+void 
+gaim_roomlist_ref(list)
+	Gaim::Roomlist list
+
+void 
+gaim_roomlist_room_add(list, room)
+	Gaim::Roomlist list
+	Gaim::Roomlist::Room room
+
+void 
+gaim_roomlist_room_add_field(list, room, field)
+	Gaim::Roomlist list
+	Gaim::Roomlist::Room room
+	gconstpointer field
+
+void 
+gaim_roomlist_room_join(list, room)
+	Gaim::Roomlist list
+	Gaim::Roomlist::Room room
+
+void 
+gaim_roomlist_set_fields(list, fields)
+	Gaim::Roomlist list
+	SV *fields
+PREINIT:
+	GList *t_GL;
+	int i, t_len;
+PPCODE:
+	t_GL = NULL;
+	t_len = av_len((AV *)SvRV(fields));
+
+	for (i = 0; i < t_len; i++) {
+		STRLEN t_sl;
+		t_GL = g_list_append(t_GL, SvPV(*av_fetch((AV *)SvRV(fields), i, 0), t_sl));
+	}
+	gaim_roomlist_set_fields(list, t_GL);
+
+void 
+gaim_roomlist_set_in_progress(list, in_progress)
+	Gaim::Roomlist list
+	gboolean in_progress
+
+void 
+gaim_roomlist_set_ui_ops(ops)
+	Gaim::Roomlist::UiOps ops
+
+void 
+gaim_roomlist_show_with_account(account)
+	Gaim::Account account
+
+void 
+gaim_roomlist_unref(list)
+	Gaim::Roomlist list
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/SSLConn.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,77 @@
+
+
+#include "module.h"
+
+/* TODO
+
+
+Gaim::Ssl::Connection
+gaim_ssl_connect(account, host, port, func, error_func, data)
+	Gaim::Account account
+	const char *host
+	int port
+	GaimSslInputFunction func
+	GaimSslErrorFunction error_func
+
+void 
+gaim_ssl_input_add(gsc, func, data)
+	Gaim::Ssl::Connection gsc
+	Gaim::SslInputFunction func
+
+ 
+
+Gaim::Ssl::Connection
+gaim_ssl_connect_fd(account, fd, func, error_func, data)
+	Gaim::Account account
+	int fd
+	GaimSslInputFunction func
+	GaimSslErrorFunction error_func
+ 
+
+
+*/
+
+MODULE = Gaim::SSL  PACKAGE = Gaim::SSL   PREFIX = gaim_ssl_
+PROTOTYPES: ENABLE
+	
+	
+	
+void 
+gaim_ssl_close(gsc)
+	Gaim::Ssl::Connection gsc
+
+
+
+Gaim::Ssl::Ops
+gaim_ssl_get_ops()
+ 
+
+void 
+gaim_ssl_init()
+ 
+ 
+
+gboolean 
+gaim_ssl_is_supported()
+ 
+
+size_t 
+gaim_ssl_read(gsc, buffer, len)
+	Gaim::Ssl::Connection gsc
+	void * buffer
+	size_t len
+
+void 
+gaim_ssl_set_ops(ops)
+	Gaim::Ssl::Ops ops
+
+void 
+gaim_ssl_uninit()
+ 
+
+size_t 
+gaim_ssl_write(gsc, buffer, len)
+	Gaim::Ssl::Connection gsc
+	void * buffer
+	size_t len
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/SavedStatuses.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,66 @@
+
+#include "module.h"
+
+/* TODO
+
+
+void *
+gaim_savedstatuses_get_handle()
+
+*/
+
+MODULE = Gaim::SavedStatus  PACKAGE = Gaim::SavedStatus  PREFIX = gaim_savedstatus_
+PROTOTYPES: ENABLE
+
+
+gboolean 
+gaim_savedstatus_delete(title)
+	const char *title
+
+Gaim::SavedStatus
+gaim_savedstatus_find(title)
+	const char *title
+
+const char *
+gaim_savedstatus_get_message(saved_status)
+	Gaim::SavedStatus saved_status
+
+const char *
+gaim_savedstatus_get_title(saved_status)
+	Gaim::SavedStatus saved_status
+
+Gaim::StatusPrimitive
+gaim_savedstatus_get_type(saved_status)
+	Gaim::SavedStatus saved_status
+
+Gaim::SavedStatus
+gaim_savedstatus_new(title, type)
+	const char *title
+	Gaim::StatusPrimitive type
+
+void 
+gaim_savedstatus_set_message(status, message)
+	Gaim::SavedStatus status
+	const char *message
+
+MODULE = Gaim::SavedStatus  PACKAGE = Gaim::SavedStatuses  PREFIX = gaim_savedstatuses_
+PROTOTYPES: ENABLE
+
+void
+gaim_savedstatuses_get_all()
+PREINIT:
+	GList *l;
+PPCODE:
+	for (l = gaim_savedstatuses_get_all(); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
+	}
+
+
+void 
+gaim_savedstatuses_init()
+ 
+
+void 
+gaim_savedstatuses_uninit()
+ 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Server.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,338 @@
+#include "module.h"
+
+/*
+TODO
+
+*/
+
+
+MODULE = Gaim::Serv  PACKAGE = Gaim::Serv  PREFIX = serv_
+PROTOTYPES: ENABLE
+
+
+void 
+serv_add_buddies(con, list)
+	Gaim::Connection con
+	SV * list
+PREINIT:
+	GList *t_GL;
+	int i, t_len;
+PPCODE:
+	t_GL = NULL;
+	t_len = av_len((AV *)SvRV(list));
+
+	for (i = 0; i < t_len; i++) {
+		STRLEN t_sl;
+		t_GL = g_list_append(t_GL, SvPV(*av_fetch((AV *)SvRV(list), i, 0), t_sl));
+	}
+	serv_add_buddies(con, t_GL);
+	
+void 
+serv_add_buddy(con, buddy)
+	Gaim::Connection 	con
+	Gaim::BuddyList::Buddy	buddy 
+
+void 
+serv_add_deny(con, a)
+	Gaim::Connection con
+	const char * a
+
+void 
+serv_add_permit(a, b)
+	Gaim::Connection a
+	const char * b
+
+void 
+serv_alias_buddy(buddy)
+	Gaim::BuddyList::Buddy buddy 
+
+void 
+serv_change_passwd(con, a, b)
+	Gaim::Connection con
+	const char *	a
+	const char *	b
+
+void 
+serv_chat_invite(con, a, b, c)
+	Gaim::Connection con
+	int a
+	const char * b
+	const char * c
+
+void 
+serv_chat_leave(a, b)
+	Gaim::Connection a
+	int b
+
+int  
+serv_chat_send(con, a, b)
+	Gaim::Connection con 
+	int a
+	const char * b
+
+void 
+serv_chat_whisper(con, a, b, c)
+	Gaim::Connection con
+	int a
+	const char * b
+	const char * c
+
+void 
+serv_dir_search(con, a, b, c,d,e,f,g,h)
+	Gaim::Connection con
+	const char * a
+	const char * b
+	const char * c
+	const char * d
+	const char * e
+	const char * f
+	const char * g
+	const char * h
+
+void 
+serv_get_dir(con, a)
+	Gaim::Connection con 
+	const char * a
+
+void 
+serv_get_info(con, a)
+	Gaim::Connection con 
+	const char * a
+
+void 
+serv_got_alias(gc, who, alias)
+	Gaim::Connection gc
+	const char *who
+	const char *alias
+
+void 
+serv_got_chat_in(g, id, who, chatflags, message, mtime)
+	Gaim::Connection g
+	int id
+	const char *who
+	Gaim::ConvChatFlags chatflags
+	const char *message
+	time_t mtime
+
+void 
+serv_got_chat_invite(gc, name, who, message, components)
+	Gaim::Connection gc
+	const char *name
+	const char *who
+	const char *message
+	SV * components
+INIT:
+	HV * t_HV;
+	HE * t_HE;
+	SV * t_SV;
+	GHashTable * t_GHash;
+	int i;
+	I32 len;
+	char *t_key, *t_value;
+CODE:
+	t_HV =  (HV *)SvRV(components);
+	t_GHash = g_hash_table_new(NULL, NULL);
+
+	for (t_HE = hv_iternext(t_HV); t_HE != NULL; t_HE = hv_iternext(t_HV) ) {
+		t_key = hv_iterkey(t_HE, &len);
+		t_SV = *hv_fetch(t_HV, t_key, len, 0);
+ 		t_value = SvPV(t_SV, PL_na);
+
+		g_hash_table_insert(t_GHash, t_key, t_value);
+	}
+	serv_got_chat_invite(gc, name, who, message, t_GHash);
+
+void 
+serv_got_chat_left(g, id)
+	Gaim::Connection g
+	int id
+
+void 
+serv_got_im(gc, who, msg, imflags, mtime)
+	Gaim::Connection gc
+	const char *who
+	const char *msg
+	Gaim::ConvImFlags imflags
+	time_t mtime
+
+Gaim::Conversation
+serv_got_joined_chat(gc, id, name)
+	Gaim::Connection gc
+	int id
+	const char *name
+
+void 
+serv_got_typing(gc, name, timeout, state)
+	Gaim::Connection gc
+	const char *name
+	int timeout
+	Gaim::TypingState state
+
+void 
+serv_got_typing_stopped(gc, name)
+	Gaim::Connection gc
+	const char *name
+
+void 
+serv_join_chat(con, components)
+	Gaim::Connection con 
+	SV * components
+INIT:
+	HV * t_HV;
+	HE * t_HE;
+	SV * t_SV;
+	GHashTable * t_GHash;
+	int i;
+	I32 len;
+	char *t_key, *t_value;
+CODE:
+	t_HV =  (HV *)SvRV(components);
+	t_GHash = g_hash_table_new(NULL, NULL);
+
+	for (t_HE = hv_iternext(t_HV); t_HE != NULL; t_HE = hv_iternext(t_HV) ) {
+		t_key = hv_iterkey(t_HE, &len);
+		t_SV = *hv_fetch(t_HV, t_key, len, 0);
+ 		t_value = SvPV(t_SV, PL_na);
+
+		g_hash_table_insert(t_GHash, t_key, t_value);
+	}
+	serv_join_chat(con, t_GHash);
+
+void 
+serv_move_buddy(buddy, group1, group2)
+	Gaim::BuddyList::Buddy buddy
+	Gaim::BuddyList::Group group1
+	Gaim::BuddyList::Group group2
+
+void 
+serv_reject_chat(con, components)
+	Gaim::Connection con 
+	SV * components
+INIT:
+	HV * t_HV;
+	HE * t_HE;
+	SV * t_SV;
+	GHashTable * t_GHash;
+	int i;
+	I32 len;
+	char *t_key, *t_value;
+CODE:
+	t_HV =  (HV *)SvRV(components);
+	t_GHash = g_hash_table_new(NULL, NULL);
+
+	for (t_HE = hv_iternext(t_HV); t_HE != NULL; t_HE = hv_iternext(t_HV) ) {
+		t_key = hv_iterkey(t_HE, &len);
+		t_SV = *hv_fetch(t_HV, t_key, len, 0);
+ 		t_value = SvPV(t_SV, PL_na);
+
+		g_hash_table_insert(t_GHash, t_key, t_value);
+	}
+	serv_reject_chat(con, t_GHash);
+
+void 
+serv_rem_deny(con, a)
+	Gaim::Connection con
+	const char * 	a
+
+void 
+serv_rem_permit(con, a)
+	Gaim::Connection con
+	const char * 	a
+
+void 
+serv_remove_buddies(con, A, B)
+	Gaim::Connection con
+	SV * A
+	SV * B
+PREINIT:
+	GList *t_GL1, *t_GL2;
+	int i, t_len;
+PPCODE:
+	t_GL1 = NULL;
+	t_len = av_len((AV *)SvRV(A));
+
+	for (i = 0; i < t_len; i++) {
+		STRLEN t_sl;
+		t_GL1 = g_list_append(t_GL1, SvPV(*av_fetch((AV *)SvRV(A), i, 0), t_sl));
+	}
+	
+	t_GL2 = NULL;
+	t_len = av_len((AV *)SvRV(B));
+
+	for (i = 0; i < t_len; i++) {
+		STRLEN t_sl;
+		t_GL2 = g_list_append(t_GL2, SvPV(*av_fetch((AV *)SvRV(B), i, 0), t_sl));
+	}
+	serv_remove_buddies(con, t_GL1, t_GL2);
+
+void 
+serv_remove_buddy(con, buddy, group)
+	Gaim::Connection con
+	Gaim::BuddyList::Buddy buddy
+	Gaim::BuddyList::Group group
+
+void 
+serv_remove_group(con, group)
+	Gaim::Connection con
+	Gaim::BuddyList::Group group 
+
+void 
+serv_send_file(gc, who, file)
+	Gaim::Connection gc
+	const char *who
+	const char *file
+
+int  
+serv_send_im(con, a, b, flags )
+	Gaim::Connection con
+	const char * a
+	const char * b
+	Gaim::ConvImFlags flags
+
+int  
+serv_send_typing(con, a, b)
+	Gaim::Connection con
+	const char * a
+	int b
+
+void 
+serv_set_buddyicon(gc, filename)
+	Gaim::Connection gc
+	const char *filename
+
+void 
+serv_set_dir(con, a, b, c,d,e,f,g,h)
+	Gaim::Connection con
+	const char * a
+	const char * b
+	const char * c
+	const char * d 
+	const char * e
+	const char * f
+	const char * g
+	int h
+
+void 
+serv_set_idle(con, a)
+	Gaim::Connection con 
+	int a
+
+void 
+serv_set_info(con, a)
+	Gaim::Connection con 
+	const char * a
+
+void 
+serv_set_permit_deny(con)
+	Gaim::Connection con  
+
+void 
+serv_touch_idle(con)
+	Gaim::Connection con 
+
+void 
+serv_warn(con, a, b)
+	Gaim::Connection con 
+	const char * a
+	gboolean b
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Sound.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,35 @@
+
+#include "module.h"
+
+/* TODO
+
+
+*/
+
+MODULE = Gaim::Sound  PACKAGE = Gaim::Sound  PREFIX = gaim_sound_
+PROTOTYPES: ENABLE
+
+Gaim::Sound::UiOps
+gaim_sound_get_ui_ops()
+ 
+
+void 
+gaim_sound_init()
+ 
+
+void 
+gaim_sound_play_event(event)
+	Gaim::SoundEventID event
+
+void 
+gaim_sound_play_file(filename)
+	const char *filename
+
+void 
+gaim_sound_set_ui_ops(ops)
+	Gaim::Sound::UiOps ops
+
+void 
+gaim_sound_uninit()
+ 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Status.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,439 @@
+
+#include "module.h"
+
+/* TODO
+
+
+void 
+gaim_status_type_add_attrs(status_type, id, name, value, gaim_status_type_add_attrs)
+	Gaim::StatusType status_type
+	const char *id
+	const char *name
+	Gaim::Value value
+	...
+	
+	
+Gaim::StatusType
+gaim_status_type_new_with_attrs(primitive, id, name, saveable, user_settable, independent, attr_id, attr_name, attr_value, gaim_status_type_new_with_attrs)
+	Gaim::StatusPrimitive primitive
+	const char *id
+	const char *name
+	gboolean saveable
+	gboolean user_settable
+	gboolean independent
+	const char *attr_id
+	const char *attr_name
+	Gaim::Value attr_value
+	...
+
+void 
+gaim_presence_add_list(presence, source_list)
+	Gaim::Presence presence
+	SV *source_list
+PREINIT:
+	GList *t_GL;
+	int i, t_len;
+PPCODE:
+	t_GL = NULL;
+	t_len = av_len((AV *)SvRV(source_list));
+
+	for (i = 0; i < t_len; i++) {
+		STRLEN t_sl;
+		t_GL = g_list_append(t_GL, SvPV(*av_fetch((AV *)SvRV(source_list), i, 0), t_sl));
+	}
+	gaim_presence_add_list(presence, t_GL);
+	
+*/
+
+MODULE = Gaim::Status  PACKAGE = Gaim::Presence  PREFIX = gaim_presence_
+PROTOTYPES: ENABLE
+
+void 
+gaim_presence_add_status(presence, status)
+	Gaim::Presence presence
+	Gaim::Status status
+
+gint 
+gaim_presence_compare(presence1, presence2)
+	Gaim::Presence presence1
+	Gaim::Presence presence2
+
+void 
+gaim_presence_destroy(presence)
+	Gaim::Presence presence
+
+Gaim::Account
+gaim_presence_get_account(presence)
+	Gaim::Presence presence
+
+Gaim::Status
+gaim_presence_get_active_status(presence)
+	Gaim::Presence presence
+
+void
+gaim_presence_get_buddies(presence)
+	Gaim::Presence presence
+PREINIT:
+	GList *l;
+PPCODE:
+	for (l = gaim_presence_get_buddies(presence); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
+	}
+
+const char *
+gaim_presence_get_chat_user(presence)
+	Gaim::Presence presence
+
+Gaim::PresenceContext
+gaim_presence_get_context(presence)
+	Gaim::Presence presence
+
+Gaim::Conversation
+gaim_presence_get_conversation(presence)
+	Gaim::Presence presence
+
+time_t 
+gaim_presence_get_idle_time(presence)
+	Gaim::Presence presence
+
+time_t 
+gaim_presence_get_login_time(presence)
+	Gaim::Presence presence
+
+Gaim::Status
+gaim_presence_get_status(presence, status_id)
+	Gaim::Presence presence
+	const char *status_id
+
+void
+gaim_presence_get_statuses(presence)
+	Gaim::Presence presence
+PREINIT:
+	GList *l;
+PPCODE:
+	for (l = gaim_presence_get_statuses(presence); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
+	}
+
+unsigned int 
+gaim_presence_get_warning_level(presence)
+	Gaim::Presence presence
+
+gboolean 
+gaim_presence_is_available(presence)
+	Gaim::Presence presence
+
+gboolean 
+gaim_presence_is_idle(presence)
+	Gaim::Presence presence
+
+gboolean 
+gaim_presence_is_online(presence)
+	Gaim::Presence presence
+
+gboolean 
+gaim_presence_is_status_active(presence, status_id)
+	Gaim::Presence presence
+	const char *status_id
+
+gboolean 
+gaim_presence_is_status_primitive_active(presence, primitive)
+	Gaim::Presence presence
+	Gaim::StatusPrimitive primitive
+
+Gaim::Presence
+gaim_presence_new(context)
+	Gaim::PresenceContext context
+
+Gaim::Presence
+gaim_presence_new_for_account(account)
+	Gaim::Account account
+
+Gaim::Presence
+gaim_presence_new_for_buddy(buddy)
+	Gaim::BuddyList::Buddy buddy
+
+Gaim::Presence
+gaim_presence_new_for_conv(conv)
+	Gaim::Conversation conv
+
+void 
+gaim_presence_remove_buddy(presence, buddy)
+	Gaim::Presence presence
+	Gaim::BuddyList::Buddy buddy
+
+void 
+gaim_presence_set_idle(presence, idle, idle_time)
+	Gaim::Presence presence
+	gboolean idle
+	time_t idle_time
+
+void 
+gaim_presence_set_login_time(presence, login_time)
+	Gaim::Presence presence
+	time_t login_time
+
+void 
+gaim_presence_set_status_active(presence, status_id, active)
+	Gaim::Presence presence
+	const char *status_id
+	gboolean active
+
+void 
+gaim_presence_set_warning_level(presence, level)
+	Gaim::Presence presence
+	unsigned int level
+
+void 
+gaim_presence_switch_status(presence, status_id)
+	Gaim::Presence presence
+	const char *status_id
+
+const char *
+gaim_primitive_get_id_from_type(type)
+	Gaim::StatusPrimitive type
+
+const char *
+gaim_primitive_get_name_from_type(type)
+	Gaim::StatusPrimitive type
+
+Gaim::StatusPrimitive
+gaim_primitive_get_type_from_id(id)
+	const char *id
+
+MODULE = Gaim::Status  PACKAGE = Gaim::Status PREFIX = gaim_status_
+PROTOTYPES: ENABLE
+
+void 
+gaim_status_attr_destroy(attr)
+	Gaim::StatusAttr attr
+
+const char *
+gaim_status_attr_get_id(attr)
+	Gaim::StatusAttr attr
+
+const char *
+gaim_status_attr_get_name(attr)
+	Gaim::StatusAttr attr
+
+Gaim::Value
+gaim_status_attr_get_value_type(attr)
+	Gaim::StatusAttr attr
+
+Gaim::StatusAttr
+gaim_status_attr_new(id, name, value_type)
+	const char *id
+	const char *name
+	Gaim::Value value_type
+
+gint 
+gaim_status_compare(status1, status2)
+	Gaim::Status status1
+	Gaim::Status status2
+
+void 
+gaim_status_destroy(status)
+	Gaim::Status status
+
+gboolean 
+gaim_status_get_attr_boolean(status, id)
+	Gaim::Status status
+	const char *id
+
+int 
+gaim_status_get_attr_int(status, id)
+	Gaim::Status status
+	const char *id
+
+const char *
+gaim_status_get_attr_string(status, id)
+	Gaim::Status status
+	const char *id
+
+Gaim::Value
+gaim_status_get_attr_value(status, id)
+	Gaim::Status status
+	const char *id
+
+void *
+gaim_status_get_handle()
+
+
+const char *
+gaim_status_get_id(status)
+	Gaim::Status status
+
+const char *
+gaim_status_get_name(status)
+	Gaim::Status status
+
+Gaim::Presence
+gaim_status_get_presence(status)
+	Gaim::Status status
+
+Gaim::StatusType
+gaim_status_get_type(status)
+	Gaim::Status status
+
+void 
+gaim_status_init()
+ 
+
+gboolean 
+gaim_status_is_active(status)
+	Gaim::Status status
+
+gboolean 
+gaim_status_is_available(status)
+	Gaim::Status status
+
+gboolean 
+gaim_status_is_exclusive(status)
+	Gaim::Status status
+
+gboolean 
+gaim_status_is_independent(status)
+	Gaim::Status status
+
+gboolean 
+gaim_status_is_online(status)
+	Gaim::Status status
+
+Gaim::Status
+gaim_status_new(status_type, presence)
+	Gaim::StatusType status_type
+	Gaim::Presence presence
+
+void 
+gaim_status_set_active(status, active)
+	Gaim::Status status
+	gboolean active
+
+void 
+gaim_status_set_active_with_attrs(status, active, args)
+	Gaim::Status status
+	gboolean active
+	va_list args
+
+void 
+gaim_status_set_attr_boolean(status, id, value)
+	Gaim::Status status
+	const char *id
+	gboolean value
+
+void 
+gaim_status_set_attr_string(status, id, value)
+	Gaim::Status status
+	const char *id
+	const char *value
+
+void 
+gaim_status_type_add_attr(status_type, id, name, value)
+	Gaim::StatusType status_type
+	const char *id
+	const char *name
+	Gaim::Value value
+
+
+void 
+gaim_status_type_add_attrs_vargs(status_type, args)
+	Gaim::StatusType status_type
+	va_list args
+
+void 
+gaim_status_type_destroy(status_type)
+	Gaim::StatusType status_type
+
+Gaim::StatusType
+gaim_status_type_find_with_id(status_types, id)
+	SV *status_types
+	const char *id
+PREINIT:
+	GList *t_GL;
+	int i, t_len;
+PPCODE:
+	t_GL = NULL;
+	t_len = av_len((AV *)SvRV(status_types));
+
+	for (i = 0; i < t_len; i++) {
+		STRLEN t_sl;
+		t_GL = g_list_append(t_GL, SvPV(*av_fetch((AV *)SvRV(status_types), i, 0), t_sl));
+	}
+	gaim_status_type_find_with_id(t_GL, id);
+	
+Gaim::StatusAttr
+gaim_status_type_get_attr(status_type, id)
+	Gaim::StatusType status_type
+	const char *id
+
+void
+gaim_status_type_get_attrs(status_type)
+	Gaim::StatusType status_type
+PREINIT:
+	GList *l;
+PPCODE:
+	for (l = gaim_status_type_get_attrs(status_type); l != NULL; l = l->next) {
+		XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::ListItem")));
+	}
+	
+const char *
+gaim_status_type_get_id(status_type)
+	Gaim::StatusType status_type
+
+const char *
+gaim_status_type_get_name(status_type)
+	Gaim::StatusType status_type
+
+const char *
+gaim_status_type_get_primary_attr(type)
+	Gaim::StatusType type
+
+Gaim::StatusPrimitive
+gaim_status_type_get_primitive(status_type)
+	Gaim::StatusType status_type
+
+gboolean 
+gaim_status_type_is_available(status_type)
+	Gaim::StatusType status_type
+
+gboolean 
+gaim_status_type_is_exclusive(status_type)
+	Gaim::StatusType status_type
+
+gboolean 
+gaim_status_type_is_independent(status_type)
+	Gaim::StatusType status_type
+
+gboolean 
+gaim_status_type_is_saveable(status_type)
+	Gaim::StatusType status_type
+
+gboolean 
+gaim_status_type_is_user_settable(status_type)
+	Gaim::StatusType status_type
+
+Gaim::StatusType
+gaim_status_type_new(primitive, id, name, user_settable)
+	Gaim::StatusPrimitive primitive
+	const char *id
+	const char *name
+	gboolean user_settable
+
+Gaim::StatusType
+gaim_status_type_new_full(primitive, id, name, saveable, user_settable, independent)
+	Gaim::StatusPrimitive primitive
+	const char *id
+	const char *name
+	gboolean saveable
+	gboolean user_settable
+	gboolean independent
+
+void 
+gaim_status_type_set_primary_attr(status_type, attr_id)
+	Gaim::StatusType status_type
+	const char *attr_id
+
+void 
+gaim_status_uninit()
+ 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Stringref.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,46 @@
+#include "module.h"
+
+/* TODO
+
+Gaim::Stringref
+gaim_stringref_printf(format, gaim_stringref_printf)
+	const char *format
+	...
+
+
+*/
+
+MODULE = Gaim::Stringref  PACKAGE = Gaim::Stringref  PREFIX = gaim_stringref_
+PROTOTYPES: ENABLE
+
+int 
+gaim_stringref_cmp(s1, s2)
+	Gaim::Stringref s1
+	Gaim::Stringref s2
+
+size_t 
+gaim_stringref_len(stringref)
+	Gaim::Stringref stringref
+
+Gaim::Stringref
+gaim_stringref_new(value)
+	const char *value
+
+Gaim::Stringref
+gaim_stringref_new_noref(value)
+	const char *value
+
+
+
+Gaim::Stringref
+gaim_stringref_ref(stringref)
+	Gaim::Stringref stringref
+
+void 
+gaim_stringref_unref(stringref)
+	Gaim::Stringref stringref
+
+const char *
+gaim_stringref_value(stringref)
+	Gaim::Stringref stringref
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/Util.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,240 @@
+
+
+#include "module.h"
+
+/* TODO
+
+void 
+gaim_url_fetch(url, full, user_agent, http11, void *, char *, size_t), data)
+	const char *url
+	gboolean full
+	const char *user_agent
+	gboolean http11
+ 
+	const char *
+	size_t)
+
+*/
+
+/**********************XS Code for Account.xs*********************************/
+MODULE = Gaim::Util  PACKAGE = Gaim::Util  PREFIX = gaim_
+PROTOTYPES: ENABLE	
+	
+
+int 
+gaim_build_dir(path, mode)
+	const char *path
+	int mode
+
+const char *
+gaim_date()
+ 
+
+const char *
+gaim_date_full()
+ 
+
+gboolean 
+gaim_email_is_valid(address)
+	const char *address
+
+const char *
+gaim_escape_filename(str)
+	const char *str
+
+char *
+gaim_fd_get_ip(fd)
+	int fd
+
+const gchar *
+gaim_home_dir()
+ 
+
+gboolean 
+gaim_markup_extract_info_field(str, len, dest, start_token, skip, end_token, check_value, no_value_token, display_name, is_link, link_prefix)
+	const char *str
+	int len
+	GString *dest
+	const char *start_token
+	int skip
+	const char *end_token
+	char check_value
+	const char *no_value_token
+	const char *display_name
+	gboolean is_link
+	const char *link_prefix
+
+gboolean 
+gaim_markup_find_tag(needle, haystack, start, end, attributes)
+	const char *needle
+	const char *haystack
+	const char **start
+	const char **end
+	GData **attributes
+
+char *
+gaim_markup_get_tag_name(tag)
+	const char *tag
+
+void 
+gaim_markup_html_to_xhtml(html, dest_xhtml, dest_plain)
+	const char *html
+	char **dest_xhtml
+	char **dest_plain
+
+char *
+gaim_markup_linkify(str)
+	const char *str
+
+char *
+gaim_markup_slice(str, x, y)
+	const char *str
+	guint x
+	guint y
+
+char *
+gaim_markup_strip_html(str)
+	const char *str
+
+gboolean 
+gaim_message_meify(message, len)
+	char *message
+	size_t len
+
+FILE *
+gaim_mkstemp(path, binary)
+	char **path
+	gboolean binary
+
+const char *
+gaim_normalize(account, str)
+	Gaim::Account account
+	const char *str
+
+gboolean 
+gaim_program_is_valid(program)
+	const char *program
+
+char *
+gaim_str_add_cr(str)
+	const char *str
+
+char *
+gaim_str_binary_to_ascii(binary, len)
+	const unsigned char *binary
+	guint len
+
+gboolean 
+gaim_str_has_prefix(s, p)
+	const char *s
+	const char *p
+
+gboolean 
+gaim_str_has_suffix(s, x)
+	const char *s
+	const char *x
+
+char *
+gaim_str_seconds_to_string(sec)
+	guint sec
+
+char *
+gaim_str_size_to_units(size)
+	size_t size
+
+void 
+gaim_str_strip_cr(str)
+	char *str
+
+gchar *
+gaim_str_sub_away_formatters(str, name)
+	const char *str
+	const char *name
+
+time_t 
+gaim_str_to_time(timestamp, utc)
+	const char *timestamp
+	gboolean utc
+
+gchar *
+gaim_strcasereplace(string, delimiter, replacement)
+	const char *string
+	const char *delimiter
+	const char *replacement
+
+const char *
+gaim_strcasestr(haystack, needle)
+	const char *haystack
+	const char *needle
+
+gchar *
+gaim_strdup_withhtml(src)
+	const gchar *src
+
+size_t 
+gaim_strftime(s, max, format, tm)
+	char *s
+	size_t max
+	const char *format
+	const struct tm *tm
+
+gchar *
+gaim_strreplace(string, delimiter, replacement)
+	const char *string
+	const char *delimiter
+	const char *replacement
+
+char *
+gaim_text_strip_mnemonic(in)
+	const char *in
+
+time_t 
+gaim_time_build(year, month, day, hour, min, sec)
+	int year
+	int month
+	int day
+	int hour
+	int min
+	int sec
+
+const char *
+gaim_unescape_filename(str)
+	const char *str
+
+char *
+gaim_unescape_html(html)
+	const char *html
+
+const char *
+gaim_url_decode(str)
+	const char *str
+
+const char *
+gaim_url_encode(str)
+	const char *str
+
+ 
+
+gboolean 
+gaim_url_parse(url, ret_host, ret_port, ret_path, ret_user, ret_passwd)
+	const char *url
+	char **ret_host
+	int *ret_port
+	char **ret_path
+	char **ret_user
+	char **ret_passwd
+
+const char *
+gaim_user_dir()
+ 
+
+void 
+gaim_util_set_user_dir(dir)
+	const char *dir
+
+gboolean 
+gaim_util_write_data_to_file(filename, data, size)
+	const char *filename
+	const char *data
+	size_t size
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/perl/common/XMLNode.xs	Mon Jul 18 13:37:38 2005 +0000
@@ -0,0 +1,90 @@
+
+#include "module.h"
+
+/* TODO
+
+
+*/
+
+MODULE = Gaim::XMLNode  PACKAGE = Gaim::XMLNode  PREFIX = xmlnode_
+PROTOTYPES: ENABLE
+
+
+xmlnode *
+xmlnode_copy(src)
+	xmlnode *src
+
+void 
+xmlnode_free(node)
+	xmlnode *node
+
+xmlnode *
+xmlnode_from_str(str, size)
+	const char *str
+	gssize size
+
+const char *
+xmlnode_get_attrib(node, attr)
+	xmlnode *node
+	const char *attr
+
+xmlnode *
+xmlnode_get_child(parent, name)
+	const xmlnode *parent
+	const char *name
+
+xmlnode *
+xmlnode_get_child_with_namespace(parent, name, xmlns)
+	const xmlnode *parent
+	const char *name
+	const char *xmlns
+
+char *
+xmlnode_get_data(node)
+	xmlnode *node
+
+xmlnode *
+xmlnode_get_next_twin(node)
+	xmlnode *node
+
+void 
+xmlnode_insert_child(parent, child)
+	xmlnode *parent
+	xmlnode *child
+
+void 
+xmlnode_insert_data(node, data, size)
+	xmlnode *node
+	const char *data
+	gssize size
+
+xmlnode *
+xmlnode_new(name)
+	const char *name
+
+xmlnode *
+xmlnode_new_child(parent, name)
+	xmlnode *parent
+	const char *name
+
+void 
+xmlnode_remove_attrib(node, attr)
+	xmlnode *node
+	const char *attr
+
+void 
+xmlnode_set_attrib(node, attr, value)
+	xmlnode *node
+	const char *attr
+	const char *value
+
+char *
+xmlnode_to_formatted_str(node, len)
+	xmlnode *node
+	int *len
+
+char *
+xmlnode_to_str(node, len)
+	xmlnode *node
+	int *len
+
--- a/plugins/perl/common/module.h	Mon Jul 18 07:26:09 2005 +0000
+++ b/plugins/perl/common/module.h	Mon Jul 18 13:37:38 2005 +0000
@@ -1,3 +1,5 @@
+
+
 typedef struct group *Gaim__Group;
 
 #define group perl_group
@@ -9,27 +11,243 @@
 #include <EXTERN.h>
 #include <perl.h>
 #include <XSUB.h>
+#include <embedvar.h>
 
 #undef group
 
 #include "../perl-common.h"
 
 #include "account.h"
+#include "accountopt.h"
+#include "blist.h"
+#include "buddyicon.h"
+#include "cipher.h"
+#include "cmds.h"
 #include "connection.h"
 #include "conversation.h"
 #include "debug.h"
+#include "desktopitem.h"
+#include "eventloop.h"
+#include "ft.h"
+#include "gtkaccount.h"
+#include "gtkblist.h"
+#include "gtkconn.h"
+#include "gtkconv.h"
+#include "gtkutils.h"
+#include "imgstore.h"
+#include "network.h"
+#include "notify.h"
+#include "plugin.h"
+#include "pluginpref.h"
+#include "pounce.h"
+#include "prefs.h"
+#include "privacy.h"
+#include "prpl.h"
+#include "proxy.h"
+#include "request.h"
+#include "roomlist.h"
+#include "savedstatuses.h"
 #include "server.h"
+#include "signals.h"
+#include "sound.h"
+#include "sslconn.h"
+#include "status.h"
+#include "stringref.h"
+#include "util.h"
+#include "value.h"
+#include "xmlnode.h"
+
+	/* account.h */
+typedef GaimAccount *     	Gaim__Account;
+typedef GaimAccountOption *	Gaim__Account__Option;    
+typedef GaimAccountUiOps * 	Gaim__Account__UiOps;
+typedef GaimAccountUserSplit *	Gaim__Account__UserSplit;	
+
+	/* blist.h */
+typedef GaimBlistNode *				Gaim__BuddyList__Node;  
+typedef GaimBlistNodeAction *			Gaim__BuddyList__Node__Action;
+typedef GaimBlistUiOps *			Gaim__BuddyList__UiOps;
+typedef GaimBlistNodeFlags		Gaim__BlistNodeFlags;
+typedef GaimBuddyList *		Gaim__BuddyList;
+typedef GaimBuddy *       	Gaim__BuddyList__Buddy;
+typedef GaimChat *   		Gaim__BuddyList__Chat;
+typedef GaimContact *     	Gaim__BuddyList__Contact;
+typedef GaimGroup *       	Gaim__BuddyList__Group;
+
+	/* buddyicon.h */
+typedef GaimBuddyIcon *				Gaim__Buddy__Icon;
+
+	/* cipher.h */
+typedef GaimCipherCaps			Gaim__CipherCaps;
+typedef GaimCipher *			Gaim__Cipher;
+typedef GaimCipherOps *			Gaim__Cipher__Ops;
+typedef GaimCipherContext *		Gaim__Cipher__Context;	
+
+	/* cmds.h */
+typedef GaimCmdId *             Gaim__CmdId;
+
+	/* connection.h */
+typedef GaimConnectionFlags		Gaim__ConnectionFlags;
+typedef GaimConnectionState		Gaim__ConnectionState;
+typedef GaimConnection *  			Gaim__Connection;
+typedef GaimConnectionUiOps *			Gaim__Connection__UiOps;
+
+	/* converstaion.h */
+typedef GaimConversationType	  	Gaim__ConversationType;
+typedef GaimUnseenState	  		Gaim__UnseenState;
+typedef GaimConvUpdateType		Gaim__ConvUpdateType;
+typedef GaimTypingState			Gaim__TypingState;
+typedef GaimMessageFlags	  	Gaim__MessageFlags;
+typedef GaimConvChatBuddyFlags	  	Gaim__ConvChatBuddyFlags;
+typedef GaimConvWindowUiOps *			Gaim__ConvWindow__UiOps;
+typedef GaimConvWindow *      			Gaim__ConvWindow;
+typedef GaimConversationUiOps *			Gaim__Conversation__UiOps;
+typedef GaimConversation *			Gaim__Conversation;
+typedef GaimConvIm *          			Gaim__Conversation__IM;
+typedef GaimConvChat *        			Gaim__Conversation__Chat;
+typedef GaimConvChatBuddy *       		Gaim__Conversation__ChatBuddy;
+
+	/* debug.h */
+typedef GaimDebugLevel	  		Gaim__DebugLevel;
+
+	/* desktopitem.h */
+typedef GaimDesktopItem *               Gaim__DesktopItem;
+typedef GaimDesktopItemType             Gaim__DesktopItemType;
+
+	/* eventloop.h */
+typedef GaimInputCondition *            Gaim__InputCondition;
+typedef GaimEventLoopUiOps *            Gaim__EventLoopUiOps;
+
+	/* ft.h */
+
+typedef GaimXfer *              	Gaim__Xfer;
+typedef GaimXferType            	Gaim__XferType;
+typedef GaimXferStatusType              Gaim__XferStatusType;
+typedef GaimXferUiOps	*		Gaim__XferUiOps;
+
+	/* gtkblish.h */
+typedef GaimGtkBuddyList *		Gaim__GTK__BuddyList;
+typedef GaimStatusIconSize              Gaim__StatusIconSize;
+
+
+	/* gtkutils.h */
+typedef GaimButtonOrientation		Gaim__ButtonOrientation;
+typedef GaimButtonStyle			Gaim__ButtonStyle;
+typedef GaimBrowserPlace		Gaim__BrowserPlace;
 
-typedef GaimAccount *     Gaim__Account;
-typedef GaimBuddy *       Gaim__BuddyList__Buddy;
-typedef GaimChat *   Gaim__BuddyList__Chat;
-typedef GaimGroup *       Gaim__BuddyList__Group;
-typedef GaimContact *     Gaim__BuddyList__Contact;
-typedef GaimConnection *  Gaim__Connection;
-typedef GaimConversation *Gaim__Conversation;
-typedef GaimConvChat *        Gaim__Conversation__Chat;
-typedef GaimConvIm *          Gaim__Conversation__IM;
-typedef GaimConvWindow *      Gaim__ConvWindow;
-typedef GaimPlugin *      Gaim__Plugin;
+	/* gtkconv.h */
+typedef GdkPixbuf *			Gaim__GDK__Pixbuf;
+typedef GtkWidget *			Gaim__GTK__Widget;
+typedef GaimGtkConversation *		Gaim__GTK__Conversation;
+
+	/* gtkutils.h */
+typedef GtkSelectionData * 		Gaim__GTK__SelectionData;
+typedef GtkFileSelection *		Gaim__GTK__FileSelection;
+typedef GtkTextView *			Gaim__GTK__TextView;
+
+	/* gtkconn.h */
+
+	/* imgstore.h */
+typedef GaimStoredImage *               Gaim__StoredImage;
+
+	/* log.h */
+typedef GaimLog * 			Gaim__Log;
+typedef GaimLogLogger *         	Gaim__Log__Logger;
+typedef GaimLogCommonLoggerData *       Gaim__LogCommonLoggerData;
+typedef GaimLogSet *           	 	Gaim__LogSet;
+typedef GaimLogType             	Gaim__LogType;
+typedef GaimLogReadFlags *              Gaim__Log__ReadFlags;
+
+	/* notify.h */
+typedef GaimNotifyType          	Gaim__NotifyType;
+typedef GaimNotifyMsgType               Gaim__NotifyMsgType;	
+typedef GaimNotifyUiOps *		Gaim__NotifyUiOps;
+
+	/* plugin.h */
+typedef GaimPlugin *      		Gaim__Plugin;
+typedef GaimPluginType			Gaim__PluginType;
+typedef GaimPluginInfo *                Gaim__PluginInfo;
+typedef GaimPluginUiInfo *              Gaim__PluginUiInfo;
+typedef GaimPluginLoaderInfo *          Gaim__PluginLoaderInfo;
+typedef GaimPluginAction *              Gaim__PluginAction;
+
+	/* pluginpref.h */
+typedef GaimPluginPrefFrame *           Gaim__PluginPrefFrame;
+typedef GaimPluginPref *                Gaim__PluginPref;
+typedef GaimPluginPrefType              Gaim__PluginPrefType;
+
+	/* pounce.h */
+typedef GaimPounce *            Gaim__Pounce;
+typedef GaimPounceEvent         Gaim__PounceEvent;
+
+
+	/* prefs.h */
+typedef GaimPrefType           	 Gaim__PrefType;
+
+	/* privacy.h */
+typedef GaimPrivacyType         Gaim__PrivacyType;
+typedef GaimPrivacyUiOps *	Gaim__Privacy__UiOps; 
+
+	/* proxy.h */
+typedef GaimProxyType           Gaim__ProxyType;
+typedef GaimProxyInfo *		Gaim__ProxyInfo;
+
 
-typedef GaimDebugLevel Gaim__DebugLevel;
+	/* prpl.h */
+typedef GaimBuddyIconSpec *				Gaim__Buddy__Icon__Spec;
+typedef GaimPluginProtocolInfo *		Gaim__PluginProtocolInfo;
+typedef GaimConvImFlags         		Gaim__ConvImFlags;
+typedef GaimConvChatFlags               Gaim__ConvChatFlags;
+typedef GaimIconScaleRules              Gaim__IconScaleRules;
+typedef GaimProtocolOptions             Gaim__ProtocolOptions;
+
+	/* request.h */
+typedef GaimRequestType         Gaim__RequestType;
+typedef GaimRequestFieldType            Gaim__RequestFieldType;
+typedef GaimRequestFields *		Gaim__Request__Fields;
+typedef GaimRequestFieldGroup *		Gaim__Request__Field__Group;
+typedef GaimRequestField *		Gaim__Request__Field;
+typedef GaimRequestUiOps *		Gaim__Request__UiOps;
+
+	/* roomlist.h */
+	
+typedef GaimRoomlist *          Gaim__Roomlist;
+typedef GaimRoomlistRoom *              Gaim__Roomlist__Room;
+typedef GaimRoomlistField *             Gaim__Roomlist__Field;
+typedef GaimRoomlistUiOps *             Gaim__Roomlist__UiOps;
+typedef GaimRoomlistRoomType            Gaim__RoomlistRoomType;
+typedef GaimRoomlistFieldType           Gaim__RoomlistFieldType;
+
+	/* savedstatuses.h */
+typedef GaimSavedStatus *               Gaim__SavedStatus;
+typedef GaimSavedStatusSub *            Gaim__SavedStatusSub;
+
+	/* sound.h */
+typedef GaimSoundEventID                Gaim__SoundEventID;
+typedef GaimSoundUiOps 	*		Gaim__Sound__UiOps;
+
+	/* sslconn.h */
+typedef GaimSslConnection *             Gaim__Ssl__Connection;
+typedef GaimInputCondition *            Gaim__Input__Condition;
+typedef GaimSslErrorType                Gaim__SslErrorType;
+typedef GaimSslOps *			Gaim__Ssl__Ops;
+
+	/* status.h */
+typedef GaimStatusType *                Gaim__StatusType;
+typedef GaimStatusAttr *                Gaim__StatusAttr;
+typedef GaimPresence *          	Gaim__Presence;
+typedef GaimStatus *            	Gaim__Status;
+typedef GaimPresenceContext             Gaim__PresenceContext;
+typedef GaimStatusPrimitive             Gaim__StatusPrimitive;
+
+typedef GaimStringref *			Gaim__Stringref;
+
+	/* value.h */
+typedef GaimValue *			Gaim__Value;
+
+	/* xmlnode.h */
+typedef XMLNodeType             XMLNode__Type;
+
+
+	/* other.h */
+
--- a/plugins/perl/common/typemap	Mon Jul 18 07:26:09 2005 +0000
+++ b/plugins/perl/common/typemap	Mon Jul 18 13:37:38 2005 +0000
@@ -1,25 +1,206 @@
 TYPEMAP
-time_t                   T_IV
-gboolean                 T_BOOL
-const char *             T_PV
-Gaim::Account            T_GaimObj
-Gaim::BuddyList::Group   T_GaimObj
-Gaim::BuddyList::Buddy   T_GaimObj
-Gaim::BuddyList::Chat    T_GaimObj
-Gaim::Chat               T_GaimObj
-Gaim::Connection         T_GaimObj
-Gaim::Conversation       T_GaimObj
-Gaim::Conversation::Chat T_GaimObj
-Gaim::Conversation::IM   T_GaimObj
-Gaim::ConvWindow         T_GaimObj
-Gaim::DebugLevel         T_IV
-Gaim::IM                 T_GaimObj
-Gaim::Plugin             T_GaimObj
+guint					T_IV
+gint					T_IV
+const gint *				T_PTR
+const guint *				T_PTR
+const guint8 *				T_PTR
+guint8					T_IV
+guint8 *				T_PTR
+time_t                 			T_IV
+gboolean               		  	T_BOOL
+gpointer				T_GaimObj
+gconstpointer				T_PTR
+const gchar *				T_PV
+const char *           			T_PV
+const char **				T_PTR
+char **					T_PTR
+gchar *					T_PV
+char *					T_PV
+int *					T_PTR
+size_t *				T_PTR
+Gaim::GTK::Widget *			T_PTR
+GCallback				T_PTR
+va_list					T_PTR
+GString *					T_PTR
+GData *					T_PTR
+GData **					T_PTR
+const unsigned char *			T_PTR
+const struct tm *			T_PTR
+xmlnode *				T_PTR
+const xmlnode *				T_PTR
+gssize					T_IV
+
+Gaim::Account           		T_GaimObj
+Gaim::Account::Option   		T_GaimObj
+Gaim::Account::UiOps			T_GaimObj
+Gaim::Account::UserSplit		T_GaimObj
+
+
+Gaim::BlistNodeFlags			T_IV
+Gaim::Buddy::Icon 			T_GaimObj
+Gaim::Buddy::Icon::Spec			T_GaimObj
+Gaim::BuddyList		   		T_GaimObj
+Gaim::BuddyList::Group   		T_GaimObj
+Gaim::BuddyList::Buddy   		T_GaimObj
+Gaim::BuddyList::Chat   		T_GaimObj
+Gaim::BuddyList::Contact   		T_GaimObj
+Gaim::BuddyList::Node 			T_GaimObj
+Gaim::BuddyList::Node::Action		T_GaimObj
+Gaim::BuddyList::UiOps			T_GaimObj
+
+
+Gaim::Cipher				T_GaimObj
+Gaim::Cipher::Ops			T_GaimObj
+Gaim::Cipher::Context			T_GaimObj
+Gaim::CipherCaps			T_IV
+Gaim::CmdId  			         T_IV
+Gaim::Connection        		T_GaimObj
+Gaim::Connection::UiOps			T_GaimObj
+Gaim::ConvWindow::UiOps	 		T_GaimObj
+Gaim::Conversation::UiOps		T_GaimObj
+Gaim::Conversation      		T_GaimObj
+Gaim::Conversation::Chat 		T_GaimObj
+Gaim::Conversation::IM   		T_GaimObj
+Gaim::ConvWindow         		T_GaimObj
+Gaim::Conversation::ChatBuddy		T_GaimObj
+Gaim::ConvImFlags               T_IV
+Gaim::ConvChatFlags             T_IV
+
+
+Gaim::Desktop::Item             	T_GaimObj
+Gaim::DesktopItemType           	T_IV
+
+
+Gaim::GTK::BuddyList			T_GaimObj
+Gaim::GDK::Pixbuf			T_GaimObj
+Gaim::GTK::Conversation			T_GaimObj
+Gaim::GTK::Widget			T_GaimObj
+Gaim::GTK::FileSelection		T_GaimObj
+Gaim::GTK::SelectionData		T_GaimObj
+Gaim::GTK::TextView			T_GaimObj
+
+
+Gaim::IconScaleRules            T_IV
+Gaim::IM                 		T_GaimObj
+
+
+Gaim::Log				T_GaimObj
+Gaim::Log::Logger               	T_GaimObj
+Gaim::Log::CommonLoggerData 	        T_GaimObj
+Gaim::Log::Set         			T_GaimObj
+Gaim::LogType           		T_IV
+Gaim::Log::ReadFlags              	T_GaimObj
+
+
+Gaim::NotifyType                	T_IV
+Gaim::NotifyMsgType            	 	T_IV
+Gaim::NotifyUiOps			T_GaimObj
+
+Gaim::Plugin             		T_GaimObj
+Gaim::Plugin::Info              	T_GaimObj
+Gaim::PluginUiInfo  	        	T_GaimObj
+Gaim::Plugin::Loader::Info              T_GaimObj
+Gaim::Plugin::Action            	T_GaimObj
+Gaim::Plugin::Protocol::Info            T_GaimObj
+Gaim::PluginType                	T_IV
+Gaim::PrefType   			T_IV
+Gaim::PluginPrefFrame               	T_GaimObj
+Gaim::PluginPref     		         T_GaimObj
+Gaim::PluginPrefType            	T_IV
+Gaim::Pounce            		T_GaimObj
+Gaim::PounceEvent               	T_IV
+Gaim::Presence				T_GaimObj
+Gaim::PrivacyType               	T_IV
+Gaim::Privacy::UiOps			T_GaimObj
+Gaim::ProtocolOptions           T_IV
+Gaim::ProxyType         T_IV
+Gaim::ProxyInfo				T_GaimObj
+
+
+Gaim::RequestType               T_IV
+Gaim::RequestFieldType          T_IV
+Gaim::Request::Fields		T_GaimObj
+Gaim::Request::Field           T_GaimObj
+Gaim::Request::Field::Group           T_GaimObj
+Gaim::Request::UiOps           T_GaimObj
+
+Gaim::Roomlist          	T_GaimObj
+Gaim::Roomlist::Room            T_GaimObj
+Gaim::Roomlist::Field           T_GaimObj
+Gaim::Roomlist::UiOps         T_GaimObj
+Gaim::RoomlistRoomType          T_IV
+Gaim::RoomlistFieldType         T_IV
+
+Gaim::SavedStatus             T_GaimObj
+Gaim::SavedStatusSub                T_GaimObj
+Gaim::SoundEventID              T_IV
+Gaim::Sound::UiOps		T_GaimObj
+
+Gaim::Ssl::Connection           T_GaimObj
+Gaim::Input::Condition          T_GaimObj
+Gaim::SslErrorType              T_IV
+Gaim::Ssl::Ops			T_GaimObj
+
+Gaim::Status				T_GaimObj
+Gaim::StatusType			T_GaimObj
+Gaim::StatusAttr  		         T_GaimObj
+Gaim::Presence 			         T_GaimObj
+Gaim::PresenceContext           	T_IV
+Gaim::StatusPrimitive           	T_IV
+
+
+Gaim::StoredImage 		        T_GaimObj
+Gaim::Stringref				T_GaimObj
+Gaim::Value				T_GaimObj
+
+Gaim::Xfer              		T_GaimObj
+Gaim::XferType          		T_IV
+Gaim::XferStatusType            	T_IV
+Gaim::XferUiOps				T_IV
+XMLNode::Type             		T_IV
+
+
+
+
+
+
+
+
+	/* enums */
+
+	/* cipher.h */
+
+
+	/* blist.h */
+
+
+
+	/* debug.h */
+Gaim::DebugLevel		         T_IV
+
+	/* conversation.h */
+Gaim::UnseenState			T_IV
+Gaim::ConversationType 			T_IV
+Gaim::ConvUpdateType 			T_IV
+Gaim::TypingState 			T_IV
+Gaim::MessageFlags 			T_IV
+Gaim::ConvChatBuddyFlags 		T_IV
+
+	/* connection.h */
+Gaim::ConnectionFlags			T_IV
+Gaim::ConnectionState			T_IV
+
+	/* gtkutils.h */
+Gaim::ButtonOrientation         T_IV
+Gaim::ButtonStyle               T_IV
+Gaim::BrowserPlace              T_IV
+
+
 
 INPUT
 
 T_GaimObj
-	$var = gaim_perl_ref_object($arg)
+	$var = gaim_perl_ref_object($arg);
 
 
 OUTPUT