libpurple/example/nullclient.c

Thu, 15 Jun 2017 12:13:53 -0500

author
Mike Ruprecht <cmaiku@gmail.com>
date
Thu, 15 Jun 2017 12:13:53 -0500
changeset 38422
21407727dac8
parent 38352
7b6c89006e93
child 39865
35349ebfdd4a
permissions
-rw-r--r--

nullclient: Remove event loop UiOps in preparation for dropping them

This patch removes the example nullclient's event loop UiOps
implementation now that the event loop functions have been given
their own implementations.

15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1 /*
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
2 * pidgin
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3 *
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
4 * Pidgin is the legal property of its developers, whose names are too numerous
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
6 * source distribution.
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
7 *
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
11 * (at your option) any later version.
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
12 *
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
16 * GNU General Public License for more details.
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
17 *
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19733
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
21 *
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
22 */
18273
e61c53184c52 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18075
diff changeset
23
22278
111ef6c0ea1a 'make -f Makefile.oot' will successfully compile the nullclient out-of-tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22188
diff changeset
24 #include "purple.h"
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
25
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
26 #include <glib.h>
35855
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
27 #include <glib/gprintf.h>
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
28
22278
111ef6c0ea1a 'make -f Makefile.oot' will successfully compile the nullclient out-of-tree.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22188
diff changeset
29 #include <signal.h>
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
30 #include <string.h>
35855
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
31 #ifdef _WIN32
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
32 # include <conio.h>
29765
b995f5cc4a0a incomplete win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 22278
diff changeset
33 #else
35855
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
34 # include <unistd.h>
29765
b995f5cc4a0a incomplete win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 22278
diff changeset
35 #endif
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
36
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
37 #include "defines.h"
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
38
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
39 /*** Conversation uiops ***/
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
40 static void
36110
63663622e327 Switch write_conv and (displaying|displayed)-(im|chat)-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35855
diff changeset
41 null_write_conv(PurpleConversation *conv, PurpleMessage *msg)
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
42 {
36110
63663622e327 Switch write_conv and (displaying|displayed)-(im|chat)-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35855
diff changeset
43 time_t mtime = purple_message_get_time(msg);
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
44
36110
63663622e327 Switch write_conv and (displaying|displayed)-(im|chat)-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35855
diff changeset
45 printf("(%s) %s %s: %s\n",
63663622e327 Switch write_conv and (displaying|displayed)-(im|chat)-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35855
diff changeset
46 purple_conversation_get_name(conv),
63663622e327 Switch write_conv and (displaying|displayed)-(im|chat)-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35855
diff changeset
47 purple_utf8_strftime("(%H:%M:%S)", localtime(&mtime)),
63663622e327 Switch write_conv and (displaying|displayed)-(im|chat)-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35855
diff changeset
48 purple_message_get_author_alias(msg),
63663622e327 Switch write_conv and (displaying|displayed)-(im|chat)-msg to PurpleMessage
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35855
diff changeset
49 purple_message_get_contents(msg));
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
50 }
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
51
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 29765
diff changeset
52 static PurpleConversationUiOps null_conv_uiops =
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
53 {
17153
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16747
diff changeset
54 NULL, /* create_conversation */
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16747
diff changeset
55 NULL, /* destroy_conversation */
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16747
diff changeset
56 NULL, /* write_chat */
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16747
diff changeset
57 NULL, /* write_im */
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16747
diff changeset
58 null_write_conv, /* write_conv */
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16747
diff changeset
59 NULL, /* chat_add_users */
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16747
diff changeset
60 NULL, /* chat_rename_user */
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16747
diff changeset
61 NULL, /* chat_remove_users */
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16747
diff changeset
62 NULL, /* chat_update_user */
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16747
diff changeset
63 NULL, /* present */
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16747
diff changeset
64 NULL, /* has_focus */
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16747
diff changeset
65 NULL, /* send_confirm */
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16747
diff changeset
66 NULL,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16747
diff changeset
67 NULL,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16747
diff changeset
68 NULL,
7da4e85b6a05 Replace some C99 struct syntax.
Richard Laager <rlaager@pidgin.im>
parents: 16747
diff changeset
69 NULL
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
70 };
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
71
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
72 static void
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 20289
diff changeset
73 null_ui_init(void)
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
74 {
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
75 /**
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
76 * This should initialize the UI components for all the modules. Here we
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
77 * just initialize the UI for conversations.
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
78 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15755
diff changeset
79 purple_conversations_set_ui_ops(&null_conv_uiops);
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
80 }
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
81
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 29765
diff changeset
82 static PurpleCoreUiOps null_core_uiops =
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
83 {
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
84 NULL,
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
85 NULL,
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
86 null_ui_init,
16747
fc3608e1e661 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16158
diff changeset
87 NULL,
fc3608e1e661 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16158
diff changeset
88
fc3608e1e661 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16158
diff changeset
89 /* padding */
fc3608e1e661 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16158
diff changeset
90 NULL,
fc3608e1e661 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16158
diff changeset
91 NULL,
fc3608e1e661 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16158
diff changeset
92 NULL,
35029
f9f672dcaadf Fixed warnings
Ankit Vani <a@nevitus.org>
parents: 34173
diff changeset
93 NULL,
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
94 NULL
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
95 };
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
96
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
97 static void
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 20289
diff changeset
98 init_libpurple(void)
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
99 {
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
100 /* Set a custom user directory (optional) */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15755
diff changeset
101 purple_util_set_user_dir(CUSTOM_USER_DIRECTORY);
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
102
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
103 /* We do not want any debugging for now to keep the noise to a minimum. */
19709
a772794cbb25 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <markdoliner@pidgin.im>
parents: 19164
diff changeset
104 purple_debug_set_enabled(FALSE);
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
105
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
106 /* Set the core-uiops, which is used to
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
107 * - initialize the ui specific preferences.
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
108 * - initialize the debug ui.
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
109 * - initialize the ui components for all the modules.
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
110 * - uninitialize the ui components for all the modules when the core terminates.
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
111 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15755
diff changeset
112 purple_core_set_ui_ops(&null_core_uiops);
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
113
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
114 /* Now that all the essential stuff has been set, let's try to init the core. It's
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
115 * necessary to provide a non-NULL name for the current ui to the core. This name
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
116 * is used by stuff that depends on this ui, for example the ui-specific plugins. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15755
diff changeset
117 if (!purple_core_init(UI_ID)) {
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
118 /* Initializing the core failed. Terminate. */
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
119 fprintf(stderr,
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
120 "libpurple initialization failed. Dumping core.\n"
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
121 "Please report this!\n");
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
122 abort();
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
123 }
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
124
36379
e74da88fd308 Refactored nullclient to use the initial GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34173
diff changeset
125 /* Set path to search for plugins. The core (libpurple) takes care of loading the
36691
92122af1f083 Some documentation updates with regard to 'protocol plugins' and 'protocols'
Ankit Vani <a@nevitus.org>
parents: 36659
diff changeset
126 * core-plugins, which includes the in-tree protocols. So it is not essential to add
36379
e74da88fd308 Refactored nullclient to use the initial GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34173
diff changeset
127 * any path here, but it might be desired, especially for ui-specific plugins. */
36431
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36379
diff changeset
128 purple_plugins_add_search_path(CUSTOM_PLUGIN_PATH);
ea007725fd4d Refactored the codebase to use the plugin wrapper functions
Ankit Vani <a@nevitus.org>
parents: 36379
diff changeset
129 purple_plugins_refresh();
36379
e74da88fd308 Refactored nullclient to use the initial GObject plugin API
Ankit Vani <a@nevitus.org>
parents: 34173
diff changeset
130
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
131 /* Load the preferences. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15755
diff changeset
132 purple_prefs_load();
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
133
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
134 /* Load the desired plugins. The client should save the list of loaded plugins in
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15755
diff changeset
135 * the preferences using purple_plugins_save_loaded(PLUGIN_SAVE_PREF) */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15755
diff changeset
136 purple_plugins_load_saved(PLUGIN_SAVE_PREF);
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
137 }
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
138
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
139 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15755
diff changeset
140 signed_on(PurpleConnection *gc, gpointer null)
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
141 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15755
diff changeset
142 PurpleAccount *account = purple_connection_get_account(gc);
32438
dc8991868906 A boring and large patch so I can merge heads.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 31294
diff changeset
143 printf("Account connected: %s %s\n", purple_account_get_username(account), purple_account_get_protocol_id(account));
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
144 }
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
145
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
146 static void
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 20289
diff changeset
147 connect_to_signals_for_demonstration_purposes_only(void)
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
148 {
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
149 static int handle;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15755
diff changeset
150 purple_signal_connect(purple_connections_get_handle(), "signed-on", &handle,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15755
diff changeset
151 PURPLE_CALLBACK(signed_on), NULL);
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
152 }
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
153
35855
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
154 #if defined(_WIN32) || defined(__BIONIC__)
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
155 #ifndef PASS_MAX
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
156 # define PASS_MAX 1024
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
157 #endif
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
158 static gchar *
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
159 getpass(const gchar *prompt)
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
160 {
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
161 static gchar buff[PASS_MAX + 1];
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
162 guint i = 0;
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
163
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
164 g_fprintf(stderr, "%s", prompt);
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
165 fflush(stderr);
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
166
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
167 while (i < sizeof(buff) - 1) {
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
168 #ifdef __BIONIC__
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
169 buff[i] = getc(stdin);
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
170 #else
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
171 buff[i] = _getch();
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
172 #endif
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
173 if (buff[i] == '\r' || buff[i] == '\n')
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
174 break;
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
175 i++;
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
176 }
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
177 buff[i] = '\0';
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
178 g_fprintf(stderr, "\n");
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
179
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
180 return buff;
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
181 }
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
182 #endif /* _WIN32 || __BIONIC__ */
3e60f9385431 cross-win32: libpurple builds now
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 35745
diff changeset
183
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 20289
diff changeset
184 int main(int argc, char *argv[])
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
185 {
36659
fbaa6f248ebc Free the list returned by purple_protocols_get_all()
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
186 GList *list, *iter;
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
187 int i, num;
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
188 GList *names = NULL;
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36630
diff changeset
189 const char *protocol = NULL;
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
190 char name[128];
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
191 char *password;
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
192 GMainLoop *loop = g_main_loop_new(NULL, FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15755
diff changeset
193 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15755
diff changeset
194 PurpleSavedStatus *status;
22188
601d7825b3b4 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
195 char *res;
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
196
29765
b995f5cc4a0a incomplete win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 22278
diff changeset
197 #ifndef _WIN32
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19859
diff changeset
198 /* libpurple's built-in DNS resolution forks processes to perform
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19859
diff changeset
199 * blocking lookups without blocking the main process. It does not
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19859
diff changeset
200 * handle SIGCHLD itself, so if the UI does not you quickly get an army
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19859
diff changeset
201 * of zombie subprocesses marching around.
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19859
diff changeset
202 */
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19859
diff changeset
203 signal(SIGCHLD, SIG_IGN);
29765
b995f5cc4a0a incomplete win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 22278
diff changeset
204 #endif
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19859
diff changeset
205
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
206 init_libpurple();
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
207
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
208 printf("libpurple initialized.\n");
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
209
36659
fbaa6f248ebc Free the list returned by purple_protocols_get_all()
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
210 list = purple_protocols_get_all();
fbaa6f248ebc Free the list returned by purple_protocols_get_all()
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
211 for (i = 0, iter = list; iter; iter = iter->next) {
36630
ff356949df25 Refactored the rest of libpurple to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
212 PurpleProtocol *protocol = iter->data;
ff356949df25 Refactored the rest of libpurple to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
213 if (protocol && purple_protocol_get_name(protocol)) {
ff356949df25 Refactored the rest of libpurple to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
214 printf("\t%d: %s\n", i++, purple_protocol_get_name(protocol));
ff356949df25 Refactored the rest of libpurple to use the new protocol API
Ankit Vani <a@nevitus.org>
parents: 36544
diff changeset
215 names = g_list_append(names, (gpointer)purple_protocol_get_id(protocol));
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
216 }
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
217 }
36659
fbaa6f248ebc Free the list returned by purple_protocols_get_all()
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
218 g_list_free(list);
fbaa6f248ebc Free the list returned by purple_protocols_get_all()
Ankit Vani <a@nevitus.org>
parents: 36637
diff changeset
219
19709
a772794cbb25 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <markdoliner@pidgin.im>
parents: 19164
diff changeset
220 printf("Select the protocol [0-%d]: ", i-1);
22188
601d7825b3b4 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
221 res = fgets(name, sizeof(name), stdin);
601d7825b3b4 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
222 if (!res) {
601d7825b3b4 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
223 fprintf(stderr, "Failed to gets protocol selection.");
601d7825b3b4 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
224 abort();
601d7825b3b4 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
225 }
33809
d5e9c888ccd7 Add some error checking for sscanf usage (there are more places that could use this)
Daniel Atallah <datallah@pidgin.im>
parents: 31294
diff changeset
226 if (sscanf(name, "%d", &num) == 1)
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36630
diff changeset
227 protocol = g_list_nth_data(names, num);
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36630
diff changeset
228 if (!protocol) {
33809
d5e9c888ccd7 Add some error checking for sscanf usage (there are more places that could use this)
Daniel Atallah <datallah@pidgin.im>
parents: 31294
diff changeset
229 fprintf(stderr, "Failed to gets protocol.");
d5e9c888ccd7 Add some error checking for sscanf usage (there are more places that could use this)
Daniel Atallah <datallah@pidgin.im>
parents: 31294
diff changeset
230 abort();
d5e9c888ccd7 Add some error checking for sscanf usage (there are more places that could use this)
Daniel Atallah <datallah@pidgin.im>
parents: 31294
diff changeset
231 }
19709
a772794cbb25 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <markdoliner@pidgin.im>
parents: 19164
diff changeset
232
a772794cbb25 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <markdoliner@pidgin.im>
parents: 19164
diff changeset
233 printf("Username: ");
22188
601d7825b3b4 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
234 res = fgets(name, sizeof(name), stdin);
601d7825b3b4 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
235 if (!res) {
601d7825b3b4 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
236 fprintf(stderr, "Failed to read user name.");
601d7825b3b4 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
237 abort();
601d7825b3b4 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
238 }
19709
a772794cbb25 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <markdoliner@pidgin.im>
parents: 19164
diff changeset
239 name[strlen(name) - 1] = 0; /* strip the \n at the end */
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
240
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
241 /* Create the account */
36637
9b0109ae118d Renamed some prpl stuff to protocol stuff.
Ankit Vani <a@nevitus.org>
parents: 36630
diff changeset
242 account = purple_account_new(name, protocol);
19709
a772794cbb25 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <markdoliner@pidgin.im>
parents: 19164
diff changeset
243
a772794cbb25 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <markdoliner@pidgin.im>
parents: 19164
diff changeset
244 /* Get the password for the account */
a772794cbb25 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <markdoliner@pidgin.im>
parents: 19164
diff changeset
245 password = getpass("Password: ");
34029
059c1270db1f Remove the silly destroy argument from purple_account_set_password and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34028
diff changeset
246 purple_account_set_password(account, password, NULL, NULL);
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
247
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
248 /* It's necessary to enable the account first. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15755
diff changeset
249 purple_account_set_enabled(account, UI_ID, TRUE);
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
250
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
251 /* Now, to connect the account(s), create a status and activate it. */
19709
a772794cbb25 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <markdoliner@pidgin.im>
parents: 19164
diff changeset
252 status = purple_savedstatus_new(NULL, PURPLE_STATUS_AVAILABLE);
a772794cbb25 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <markdoliner@pidgin.im>
parents: 19164
diff changeset
253 purple_savedstatus_activate(status);
15673
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
254
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
255 connect_to_signals_for_demonstration_purposes_only();
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
256
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
257 g_main_loop_run(loop);
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
258
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
259 return 0;
7f2c84ae63b0 Add the example nullclient here.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
260 }

mercurial