| |
1 #define DBUS_API_SUBJECT_TO_CHANGE |
| |
2 |
| |
3 #include <dbus/dbus-glib.h> |
| |
4 #include <stdio.h> |
| |
5 #include <stdlib.h> |
| |
6 |
| |
7 #include "dbus-purple.h" |
| |
8 #include "purple-client-bindings.h" |
| |
9 |
| |
10 static DBusGConnection *bus; |
| |
11 static DBusGProxy *purple_proxy; |
| |
12 |
| |
13 static GList *garray_int_to_glist(GArray *array) |
| |
14 { |
| |
15 GList *list = NULL; |
| |
16 int i; |
| |
17 |
| |
18 for (i = 0; i < array->len; i++) |
| |
19 list = g_list_append(list, GINT_TO_POINTER(g_array_index(array,gint,i))); |
| |
20 |
| |
21 g_array_free(array, TRUE); |
| |
22 return list; |
| |
23 } |
| |
24 |
| |
25 static GSList *garray_int_to_gslist(GArray *array) |
| |
26 { |
| |
27 GSList *list = NULL; |
| |
28 int i; |
| |
29 |
| |
30 for (i = 0; i < array->len; i++) |
| |
31 list = g_slist_append(list, GINT_TO_POINTER(g_array_index(array,gint,i))); |
| |
32 |
| |
33 g_array_free(array, TRUE); |
| |
34 return list; |
| |
35 } |
| |
36 |
| |
37 #include "purple-client-bindings.c" |
| |
38 |
| |
39 static void lose(const char *fmt, ...) G_GNUC_NORETURN G_GNUC_PRINTF (1, 2); |
| |
40 static void lose_gerror(const char *prefix, GError *error) G_GNUC_NORETURN; |
| |
41 |
| |
42 static void |
| |
43 lose(const char *str, ...) |
| |
44 { |
| |
45 va_list args; |
| |
46 |
| |
47 va_start(args, str); |
| |
48 |
| |
49 vfprintf(stderr, str, args); |
| |
50 fputc('\n', stderr); |
| |
51 |
| |
52 va_end(args); |
| |
53 |
| |
54 exit(1); |
| |
55 } |
| |
56 |
| |
57 static void |
| |
58 lose_gerror(const char *prefix, GError *error) |
| |
59 { |
| |
60 lose("%s: %s", prefix, error->message); |
| |
61 } |
| |
62 |
| |
63 void purple_init(void) |
| |
64 { |
| |
65 GError *error = NULL; |
| |
66 |
| |
67 g_type_init (); |
| |
68 |
| |
69 bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error); |
| |
70 if (!bus) |
| |
71 lose_gerror ("Couldn't connect to session bus", error); |
| |
72 |
| |
73 purple_proxy = dbus_g_proxy_new_for_name (bus, |
| |
74 DBUS_SERVICE_PURPLE, |
| |
75 DBUS_PATH_PURPLE, |
| |
76 DBUS_INTERFACE_PURPLE); |
| |
77 |
| |
78 if (!purple_proxy) |
| |
79 lose_gerror ("Couldn't connect to the Purple Service", error); |
| |
80 } |
| |
81 |