annotate libpurple/example/nullclient.c @ 30018:7ed0ddbdd2a8

Use an inline RC style to get rid of some other padding to make the small buttons even smaller, as suggested by Paradox on trac, and nicked from nautilus. Refs #8727.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Sat, 20 Mar 2010 06:22:53 +0000
parents 3015b7c2bec3
children a8cc50c2279f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
1 /*
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
2 * pidgin
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
3 *
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
4 * Pidgin is the legal property of its developers, whose names are too numerous
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
6 * source distribution.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
7 *
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
11 * (at your option) any later version.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
12 *
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
16 * GNU General Public License for more details.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
17 *
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
19680
44b4e8bd759b The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19567
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
21 *
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
22 */
18210
b8572b937c09 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents: 18013
diff changeset
23
22151
68f8adb67470 'make -f Makefile.oot' will successfully compile the nullclient out-of-tree.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22067
diff changeset
24 #include "purple.h"
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
25
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
26 #include <glib.h>
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
27
22151
68f8adb67470 'make -f Makefile.oot' will successfully compile the nullclient out-of-tree.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22067
diff changeset
28 #include <signal.h>
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
29 #include <string.h>
29883
3015b7c2bec3 incomplete win32 fixes
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22151
diff changeset
30 #ifndef _WIN32
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
31 #include <unistd.h>
29883
3015b7c2bec3 incomplete win32 fixes
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22151
diff changeset
32 #else
3015b7c2bec3 incomplete win32 fixes
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22151
diff changeset
33 #include "win32/win32dep.h"
3015b7c2bec3 incomplete win32 fixes
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22151
diff changeset
34 #endif
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
35
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
36 #include "defines.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
37
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
38 /**
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
39 * The following eventloop functions are used in both pidgin and purple-text. If your
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
40 * application uses glib mainloop, you can safely use this verbatim.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
41 */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
42 #define PURPLE_GLIB_READ_COND (G_IO_IN | G_IO_HUP | G_IO_ERR)
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
43 #define PURPLE_GLIB_WRITE_COND (G_IO_OUT | G_IO_HUP | G_IO_ERR | G_IO_NVAL)
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
44
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
45 typedef struct _PurpleGLibIOClosure {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
46 PurpleInputFunction function;
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
47 guint result;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
48 gpointer data;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
49 } PurpleGLibIOClosure;
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
50
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
51 static void purple_glib_io_destroy(gpointer data)
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
52 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
53 g_free(data);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
54 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
55
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
56 static gboolean purple_glib_io_invoke(GIOChannel *source, GIOCondition condition, gpointer data)
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
57 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
58 PurpleGLibIOClosure *closure = data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
59 PurpleInputCondition purple_cond = 0;
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
60
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
61 if (condition & PURPLE_GLIB_READ_COND)
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
62 purple_cond |= PURPLE_INPUT_READ;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
63 if (condition & PURPLE_GLIB_WRITE_COND)
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
64 purple_cond |= PURPLE_INPUT_WRITE;
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
65
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
66 closure->function(closure->data, g_io_channel_unix_get_fd(source),
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
67 purple_cond);
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
68
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
69 return TRUE;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
70 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
71
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
72 static guint glib_input_add(gint fd, PurpleInputCondition condition, PurpleInputFunction function,
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
73 gpointer data)
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
74 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
75 PurpleGLibIOClosure *closure = g_new0(PurpleGLibIOClosure, 1);
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
76 GIOChannel *channel;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
77 GIOCondition cond = 0;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
78
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
79 closure->function = function;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
80 closure->data = data;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
81
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
82 if (condition & PURPLE_INPUT_READ)
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
83 cond |= PURPLE_GLIB_READ_COND;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
84 if (condition & PURPLE_INPUT_WRITE)
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
85 cond |= PURPLE_GLIB_WRITE_COND;
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
86
29883
3015b7c2bec3 incomplete win32 fixes
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22151
diff changeset
87 #if defined _WIN32 && !defined WINPIDGIN_USE_GLIB_IO_CHANNEL
3015b7c2bec3 incomplete win32 fixes
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22151
diff changeset
88 channel = wpurple_g_io_channel_win32_new_socket(fd);
3015b7c2bec3 incomplete win32 fixes
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22151
diff changeset
89 #else
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
90 channel = g_io_channel_unix_new(fd);
29883
3015b7c2bec3 incomplete win32 fixes
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22151
diff changeset
91 #endif
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
92 closure->result = g_io_add_watch_full(channel, G_PRIORITY_DEFAULT, cond,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
93 purple_glib_io_invoke, closure, purple_glib_io_destroy);
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
94
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
95 g_io_channel_unref(channel);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
96 return closure->result;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
97 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
98
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
99 static PurpleEventLoopUiOps glib_eventloops =
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
100 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
101 g_timeout_add,
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
102 g_source_remove,
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
103 glib_input_add,
15694
cd02b303b81f Fix the following compiler warning:
Mark Doliner <mark@kingant.net>
parents: 15618
diff changeset
104 g_source_remove,
16676
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
105 NULL,
18013
58e82c3b697e It's GLIB_CHECK_VERSION, not GLIB_VERSION_CHECK.
Richard Laager <rlaager@wiktel.com>
parents: 18009
diff changeset
106 #if GLIB_CHECK_VERSION(2,14,0)
18009
9ffa9af32854 Wire in g_timeout_add_seconds for Finch and nullclient as well.
Richard Laager <rlaager@wiktel.com>
parents: 17093
diff changeset
107 g_timeout_add_seconds,
9ffa9af32854 Wire in g_timeout_add_seconds for Finch and nullclient as well.
Richard Laager <rlaager@wiktel.com>
parents: 17093
diff changeset
108 #else
9ffa9af32854 Wire in g_timeout_add_seconds for Finch and nullclient as well.
Richard Laager <rlaager@wiktel.com>
parents: 17093
diff changeset
109 NULL,
9ffa9af32854 Wire in g_timeout_add_seconds for Finch and nullclient as well.
Richard Laager <rlaager@wiktel.com>
parents: 17093
diff changeset
110 #endif
16676
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
111
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
112 /* padding */
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
113 NULL,
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
114 NULL,
15694
cd02b303b81f Fix the following compiler warning:
Mark Doliner <mark@kingant.net>
parents: 15618
diff changeset
115 NULL
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
116 };
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
117 /*** End of the eventloop functions. ***/
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
118
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
119 /*** Conversation uiops ***/
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
120 static void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
121 null_write_conv(PurpleConversation *conv, const char *who, const char *alias,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
122 const char *message, PurpleMessageFlags flags, time_t mtime)
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
123 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
124 const char *name;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
125 if (alias && *alias)
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
126 name = alias;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
127 else if (who && *who)
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
128 name = who;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
129 else
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
130 name = NULL;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
131
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
132 printf("(%s) %s %s: %s\n", purple_conversation_get_name(conv),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
133 purple_utf8_strftime("(%H:%M:%S)", localtime(&mtime)),
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
134 name, message);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
135 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
136
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
137 static PurpleConversationUiOps null_conv_uiops =
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
138 {
17093
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
139 NULL, /* create_conversation */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
140 NULL, /* destroy_conversation */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
141 NULL, /* write_chat */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
142 NULL, /* write_im */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
143 null_write_conv, /* write_conv */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
144 NULL, /* chat_add_users */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
145 NULL, /* chat_rename_user */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
146 NULL, /* chat_remove_users */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
147 NULL, /* chat_update_user */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
148 NULL, /* present */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
149 NULL, /* has_focus */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
150 NULL, /* custom_smiley_add */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
151 NULL, /* custom_smiley_write */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
152 NULL, /* custom_smiley_close */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
153 NULL, /* send_confirm */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
154 NULL,
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
155 NULL,
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
156 NULL,
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16676
diff changeset
157 NULL
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
158 };
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
159
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
160 static void
22007
c38d72677c8a Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents: 21060
diff changeset
161 null_ui_init(void)
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
162 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
163 /**
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
164 * This should initialize the UI components for all the modules. Here we
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
165 * just initialize the UI for conversations.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
166 */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
167 purple_conversations_set_ui_ops(&null_conv_uiops);
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
168 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
169
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
170 static PurpleCoreUiOps null_core_uiops =
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
171 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
172 NULL,
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
173 NULL,
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
174 null_ui_init,
16676
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
175 NULL,
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
176
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
177 /* padding */
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
178 NULL,
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
179 NULL,
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
180 NULL,
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
181 NULL
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
182 };
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
183
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
184 static void
22007
c38d72677c8a Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents: 21060
diff changeset
185 init_libpurple(void)
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
186 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
187 /* Set a custom user directory (optional) */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
188 purple_util_set_user_dir(CUSTOM_USER_DIRECTORY);
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
189
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
190 /* We do not want any debugging for now to keep the noise to a minimum. */
19547
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
191 purple_debug_set_enabled(FALSE);
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
192
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
193 /* Set the core-uiops, which is used to
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
194 * - initialize the ui specific preferences.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
195 * - initialize the debug ui.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
196 * - initialize the ui components for all the modules.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
197 * - uninitialize the ui components for all the modules when the core terminates.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
198 */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
199 purple_core_set_ui_ops(&null_core_uiops);
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
200
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
201 /* Set the uiops for the eventloop. If your client is glib-based, you can safely
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
202 * copy this verbatim. */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
203 purple_eventloop_set_ui_ops(&glib_eventloops);
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
204
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
205 /* Set path to search for plugins. The core (libpurple) takes care of loading the
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
206 * core-plugins, which includes the protocol-plugins. So it is not essential to add
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
207 * any path here, but it might be desired, especially for ui-specific plugins. */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
208 purple_plugins_add_search_path(CUSTOM_PLUGIN_PATH);
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
209
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
210 /* Now that all the essential stuff has been set, let's try to init the core. It's
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
211 * necessary to provide a non-NULL name for the current ui to the core. This name
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
212 * is used by stuff that depends on this ui, for example the ui-specific plugins. */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
213 if (!purple_core_init(UI_ID)) {
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
214 /* Initializing the core failed. Terminate. */
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
215 fprintf(stderr,
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
216 "libpurple initialization failed. Dumping core.\n"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
217 "Please report this!\n");
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
218 abort();
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
219 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
220
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
221 /* Create and load the buddylist. */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
222 purple_set_blist(purple_blist_new());
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
223 purple_blist_load();
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
224
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
225 /* Load the preferences. */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
226 purple_prefs_load();
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
227
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
228 /* Load the desired plugins. The client should save the list of loaded plugins in
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
229 * the preferences using purple_plugins_save_loaded(PLUGIN_SAVE_PREF) */
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
230 purple_plugins_load_saved(PLUGIN_SAVE_PREF);
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
231
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
232 /* Load the pounces. */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
233 purple_pounces_load();
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
234 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
235
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
236 static void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
237 signed_on(PurpleConnection *gc, gpointer null)
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
238 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
239 PurpleAccount *account = purple_connection_get_account(gc);
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
240 printf("Account connected: %s %s\n", account->username, account->protocol_id);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
241 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
242
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
243 static void
22007
c38d72677c8a Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents: 21060
diff changeset
244 connect_to_signals_for_demonstration_purposes_only(void)
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
245 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
246 static int handle;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
247 purple_signal_connect(purple_connections_get_handle(), "signed-on", &handle,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
248 PURPLE_CALLBACK(signed_on), NULL);
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
249 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
250
22007
c38d72677c8a Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents: 21060
diff changeset
251 int main(int argc, char *argv[])
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
252 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
253 GList *iter;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
254 int i, num;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
255 GList *names = NULL;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
256 const char *prpl;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
257 char name[128];
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
258 char *password;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
259 GMainLoop *loop = g_main_loop_new(NULL, FALSE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
260 PurpleAccount *account;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
261 PurpleSavedStatus *status;
22067
3684c9d16f6f Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@wiktel.com>
parents: 22007
diff changeset
262 char *res;
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
263
29883
3015b7c2bec3 incomplete win32 fixes
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22151
diff changeset
264 #ifndef _WIN32
21060
9838af97586b A pidgin fans in Great Britain.U.K thinks that nullclient should explicitly
Will Thompson <will.thompson@collabora.co.uk>
parents: 19680
diff changeset
265 /* libpurple's built-in DNS resolution forks processes to perform
9838af97586b A pidgin fans in Great Britain.U.K thinks that nullclient should explicitly
Will Thompson <will.thompson@collabora.co.uk>
parents: 19680
diff changeset
266 * blocking lookups without blocking the main process. It does not
9838af97586b A pidgin fans in Great Britain.U.K thinks that nullclient should explicitly
Will Thompson <will.thompson@collabora.co.uk>
parents: 19680
diff changeset
267 * handle SIGCHLD itself, so if the UI does not you quickly get an army
9838af97586b A pidgin fans in Great Britain.U.K thinks that nullclient should explicitly
Will Thompson <will.thompson@collabora.co.uk>
parents: 19680
diff changeset
268 * of zombie subprocesses marching around.
9838af97586b A pidgin fans in Great Britain.U.K thinks that nullclient should explicitly
Will Thompson <will.thompson@collabora.co.uk>
parents: 19680
diff changeset
269 */
9838af97586b A pidgin fans in Great Britain.U.K thinks that nullclient should explicitly
Will Thompson <will.thompson@collabora.co.uk>
parents: 19680
diff changeset
270 signal(SIGCHLD, SIG_IGN);
29883
3015b7c2bec3 incomplete win32 fixes
Daniel Atallah <daniel.atallah@gmail.com>
parents: 22151
diff changeset
271 #endif
21060
9838af97586b A pidgin fans in Great Britain.U.K thinks that nullclient should explicitly
Will Thompson <will.thompson@collabora.co.uk>
parents: 19680
diff changeset
272
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
273 init_libpurple();
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
274
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
275 printf("libpurple initialized.\n");
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
276
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
277 iter = purple_plugins_get_protocols();
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
278 for (i = 0; iter; iter = iter->next) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
279 PurplePlugin *plugin = iter->data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
280 PurplePluginInfo *info = plugin->info;
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
281 if (info && info->name) {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
282 printf("\t%d: %s\n", i++, info->name);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
283 names = g_list_append(names, info->id);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
284 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
285 }
19547
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
286 printf("Select the protocol [0-%d]: ", i-1);
22067
3684c9d16f6f Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@wiktel.com>
parents: 22007
diff changeset
287 res = fgets(name, sizeof(name), stdin);
3684c9d16f6f Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@wiktel.com>
parents: 22007
diff changeset
288 if (!res) {
3684c9d16f6f Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@wiktel.com>
parents: 22007
diff changeset
289 fprintf(stderr, "Failed to gets protocol selection.");
3684c9d16f6f Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@wiktel.com>
parents: 22007
diff changeset
290 abort();
3684c9d16f6f Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@wiktel.com>
parents: 22007
diff changeset
291 }
19547
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
292 sscanf(name, "%d", &num);
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
293 prpl = g_list_nth_data(names, num);
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
294
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
295 printf("Username: ");
22067
3684c9d16f6f Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@wiktel.com>
parents: 22007
diff changeset
296 res = fgets(name, sizeof(name), stdin);
3684c9d16f6f Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@wiktel.com>
parents: 22007
diff changeset
297 if (!res) {
3684c9d16f6f Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@wiktel.com>
parents: 22007
diff changeset
298 fprintf(stderr, "Failed to read user name.");
3684c9d16f6f Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@wiktel.com>
parents: 22007
diff changeset
299 abort();
3684c9d16f6f Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@wiktel.com>
parents: 22007
diff changeset
300 }
19547
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
301 name[strlen(name) - 1] = 0; /* strip the \n at the end */
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
302
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
303 /* Create the account */
19547
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
304 account = purple_account_new(name, prpl);
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
305
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
306 /* Get the password for the account */
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
307 password = getpass("Password: ");
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
308 purple_account_set_password(account, password);
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
309
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
310 /* It's necessary to enable the account first. */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15694
diff changeset
311 purple_account_set_enabled(account, UI_ID, TRUE);
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
312
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
313 /* Now, to connect the account(s), create a status and activate it. */
19547
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
314 status = purple_savedstatus_new(NULL, PURPLE_STATUS_AVAILABLE);
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
315 purple_savedstatus_activate(status);
15618
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
316
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
317 connect_to_signals_for_demonstration_purposes_only();
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
318
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
319 g_main_loop_run(loop);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
320
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
321 return 0;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
322 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
323