pidgin/pidgin

msn: Workaround servers sending nearly-empty Allow list.
release-2.x.y
2014-11-18, Elliott Sales de Andrade
9afe309dc92a
msn: Workaround servers sending nearly-empty Allow list.

If buddy is on neither Allow nor Block list, then add to Allow list.
At some point, we should figure out if the NetworkInfo really is used
for this sort of thing.
#ifndef DBUS_API_SUBJECT_TO_CHANGE
#define DBUS_API_SUBJECT_TO_CHANGE
#endif
#include <dbus/dbus-glib.h>
#include <stdio.h>
#include <stdlib.h>
#include "dbus-purple.h"
#include "purple-client.h"
static DBusGConnection *bus;
static DBusGProxy *purple_proxy;
static GList *garray_int_to_glist(GArray *array)
{
GList *list = NULL;
gsize i;
for (i = 0; i < array->len; i++)
list = g_list_append(list, GINT_TO_POINTER(g_array_index(array,gint,i)));
g_array_free(array, TRUE);
return list;
}
static GSList *garray_int_to_gslist(GArray *array)
{
GSList *list = NULL;
gsize i;
for (i = 0; i < array->len; i++)
list = g_slist_append(list, GINT_TO_POINTER(g_array_index(array,gint,i)));
g_array_free(array, TRUE);
return list;
}
#include "purple-client-bindings.c"
static void lose(const char *fmt, ...) G_GNUC_NORETURN G_GNUC_PRINTF (1, 2);
static void lose_gerror(const char *prefix, GError *error) G_GNUC_NORETURN;
static void
lose(const char *str, ...)
{
va_list args;
va_start(args, str);
vfprintf(stderr, str, args);
fputc('\n', stderr);
va_end(args);
exit(1);
}
static void
lose_gerror(const char *prefix, GError *error)
{
lose("%s: %s", prefix, error->message);
}
void purple_init(void)
{
GError *error = NULL;
#if !GLIB_CHECK_VERSION(2, 36, 0)
/* GLib type system is automaticaly initialized since 2.36. */
g_type_init();
#endif
bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
if (!bus)
lose_gerror ("Couldn't connect to session bus", error);
purple_proxy = dbus_g_proxy_new_for_name (bus,
DBUS_SERVICE_PURPLE,
DBUS_PATH_PURPLE,
DBUS_INTERFACE_PURPLE);
if (!purple_proxy)
lose_gerror ("Couldn't connect to the Purple Service", error);
}