diff libpurple/purple-client-example.c @ 15885:c6e563dfaa7a

More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
author Stu Tomlinson <stu@nosnilmot.com>
date Sat, 24 Mar 2007 17:51:05 +0000
parents
children 48d09d62912e
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/purple-client-example.c	Sat Mar 24 17:51:05 2007 +0000
@@ -0,0 +1,39 @@
+#define DBUS_API_SUBJECT_TO_CHANGE
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "purple-client.h"
+
+/*
+   This example demonstrates how to use libpurple-client to communicate
+   with purple.  The names and signatures of functions provided by
+   libpurple-client are the same as those in purple.  However, all
+   structures (such as PurpleAccount) are opaque, that is, you can only
+   use pointer to them.  In fact, these pointers DO NOT actually point
+   to anything, they are just integer identifiers of assigned to these
+   structures by purple.  So NEVER try to dereference these pointers.
+   Integer ids as disguised as pointers to provide type checking and
+   prevent mistakes such as passing an id of PurpleAccount when an id of
+   PurpleBuddy is expected.  According to glib manual, this technique is
+   portable.
+*/
+
+int main (int argc, char **argv)
+{
+	GList *alist, *node;
+
+	purple_init();
+
+	alist = purple_accounts_get_all();
+	for (node = alist; node != NULL; node = node->next)
+	{
+		PurpleAccount *account = (PurpleAccount*) node->data;
+		char *name = purple_account_get_username(account);
+		g_print("Name: %s\n", name);
+		g_free(name);
+	}
+	g_list_free(alist);
+
+	return 0;
+}