view libpurple/purple-client-example.c @ 24999:fc8fd4fef166

Fix a crash on exit with a patch from im.pidgin.next.minor. applied changes from bab46e2dd9ebff11705234f606d600c9c78011bb through a515a270e1782f14b92ccfef56e731de38407ac6 aa60091ae5c724a0c287dff08ae64eead7163d67: Uninitialize the certificate API before unloading the SSL plugin. This prevents a crash at shutdown that I assume started happening when we re-arranged the uninit stuff. See the comment for more details. This change should probably be made in im.pidgin.pidgin. a515a270e1782f14b92ccfef56e731de38407ac6: Simplify, hoo-boy. Also don't unregister the schemes in purple_certificate_uninit(). The schemes should be unregistered by whoever registered them in the first place (the ssl plugins)
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Tue, 27 Jan 2009 04:36:30 +0000
parents 48d09d62912e
children
line wrap: on
line source

#ifndef DBUS_API_SUBJECT_TO_CHANGE
#define DBUS_API_SUBJECT_TO_CHANGE
#endif

#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;
}