annotate libpurple/example/nullclient.c @ 24080:005649461c77

In our child DNS lookup processes, don't bother to use select to watch the pipe with our parent. These processes don't do anything else, and they only need to watch one fd, so we can just use a blocking read() call. I don't think this will negatively affect anything, and it seems to fix some kind of funky rare race condition where the libpurple client will block while trying to read() a response from the child. If you think we should continue using select here, or you notice some problems with this, please let me know (and maybe even revert this)
author Mark Doliner <mark@kingant.net>
date Wed, 10 Sep 2008 21:48:33 +0000
parents 68f8adb67470
children aaaff38e144f 3015b7c2bec3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15617
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
19681
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
15617
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"
15617
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>
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
29 #include <string.h>
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
30 #include <unistd.h>
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
31
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
32 #include "defines.h"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
33
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
34 /**
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
35 * The following eventloop functions are used in both pidgin and purple-text. If your
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
36 * 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
37 */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
38 #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: 15693
diff changeset
39 #define PURPLE_GLIB_WRITE_COND (G_IO_OUT | G_IO_HUP | G_IO_ERR | G_IO_NVAL)
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
40
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
41 typedef struct _PurpleGLibIOClosure {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
42 PurpleInputFunction function;
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
43 guint result;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
44 gpointer data;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
45 } PurpleGLibIOClosure;
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
46
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
47 static void purple_glib_io_destroy(gpointer data)
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
48 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
49 g_free(data);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
50 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
51
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
52 static gboolean purple_glib_io_invoke(GIOChannel *source, GIOCondition condition, gpointer data)
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
53 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
54 PurpleGLibIOClosure *closure = data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
55 PurpleInputCondition purple_cond = 0;
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
56
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
57 if (condition & PURPLE_GLIB_READ_COND)
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
58 purple_cond |= PURPLE_INPUT_READ;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
59 if (condition & PURPLE_GLIB_WRITE_COND)
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
60 purple_cond |= PURPLE_INPUT_WRITE;
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
61
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
62 closure->function(closure->data, g_io_channel_unix_get_fd(source),
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
63 purple_cond);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
64
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
65 return TRUE;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
66 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
67
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
68 static guint glib_input_add(gint fd, PurpleInputCondition condition, PurpleInputFunction function,
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
69 gpointer data)
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
70 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
71 PurpleGLibIOClosure *closure = g_new0(PurpleGLibIOClosure, 1);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
72 GIOChannel *channel;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
73 GIOCondition cond = 0;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
74
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
75 closure->function = function;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
76 closure->data = data;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
77
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
78 if (condition & PURPLE_INPUT_READ)
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
79 cond |= PURPLE_GLIB_READ_COND;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
80 if (condition & PURPLE_INPUT_WRITE)
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
81 cond |= PURPLE_GLIB_WRITE_COND;
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
82
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
83 channel = g_io_channel_unix_new(fd);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
84 closure->result = g_io_add_watch_full(channel, G_PRIORITY_DEFAULT, cond,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
85 purple_glib_io_invoke, closure, purple_glib_io_destroy);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
86
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
87 g_io_channel_unref(channel);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
88 return closure->result;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
89 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
90
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
91 static PurpleEventLoopUiOps glib_eventloops =
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
92 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
93 g_timeout_add,
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
94 g_source_remove,
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
95 glib_input_add,
15693
cd02b303b81f Fix the following compiler warning:
Mark Doliner <mark@kingant.net>
parents: 15617
diff changeset
96 g_source_remove,
16668
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
97 NULL,
18013
58e82c3b697e It's GLIB_CHECK_VERSION, not GLIB_VERSION_CHECK.
Richard Laager <rlaager@wiktel.com>
parents: 18009
diff changeset
98 #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: 17080
diff changeset
99 g_timeout_add_seconds,
9ffa9af32854 Wire in g_timeout_add_seconds for Finch and nullclient as well.
Richard Laager <rlaager@wiktel.com>
parents: 17080
diff changeset
100 #else
9ffa9af32854 Wire in g_timeout_add_seconds for Finch and nullclient as well.
Richard Laager <rlaager@wiktel.com>
parents: 17080
diff changeset
101 NULL,
9ffa9af32854 Wire in g_timeout_add_seconds for Finch and nullclient as well.
Richard Laager <rlaager@wiktel.com>
parents: 17080
diff changeset
102 #endif
16668
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
103
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
104 /* padding */
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
105 NULL,
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
106 NULL,
15693
cd02b303b81f Fix the following compiler warning:
Mark Doliner <mark@kingant.net>
parents: 15617
diff changeset
107 NULL
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
108 };
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
109 /*** End of the eventloop functions. ***/
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
110
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
111 /*** Conversation uiops ***/
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
112 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
113 null_write_conv(PurpleConversation *conv, const char *who, const char *alias,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
114 const char *message, PurpleMessageFlags flags, time_t mtime)
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
115 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
116 const char *name;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
117 if (alias && *alias)
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
118 name = alias;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
119 else if (who && *who)
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
120 name = who;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
121 else
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
122 name = NULL;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
123
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
124 printf("(%s) %s %s: %s\n", purple_conversation_get_name(conv),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
125 purple_utf8_strftime("(%H:%M:%S)", localtime(&mtime)),
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
126 name, message);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
127 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
128
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
129 static PurpleConversationUiOps null_conv_uiops =
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
130 {
17080
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
131 NULL, /* create_conversation */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
132 NULL, /* destroy_conversation */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
133 NULL, /* write_chat */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
134 NULL, /* write_im */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
135 null_write_conv, /* write_conv */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
136 NULL, /* chat_add_users */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
137 NULL, /* chat_rename_user */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
138 NULL, /* chat_remove_users */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
139 NULL, /* chat_update_user */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
140 NULL, /* present */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
141 NULL, /* has_focus */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
142 NULL, /* custom_smiley_add */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
143 NULL, /* custom_smiley_write */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
144 NULL, /* custom_smiley_close */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
145 NULL, /* send_confirm */
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
146 NULL,
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
147 NULL,
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
148 NULL,
4b65a67d23b8 Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents: 16668
diff changeset
149 NULL
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
150 };
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
151
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
152 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
153 null_ui_init(void)
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
154 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
155 /**
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
156 * 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
157 * just initialize the UI for conversations.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
158 */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
159 purple_conversations_set_ui_ops(&null_conv_uiops);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
160 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
161
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
162 static PurpleCoreUiOps null_core_uiops =
15617
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 NULL,
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
165 NULL,
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
166 null_ui_init,
16668
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
167 NULL,
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
168
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
169 /* padding */
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
170 NULL,
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
171 NULL,
07cf49a0f404 I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents: 16098
diff changeset
172 NULL,
15617
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 };
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
175
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
176 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
177 init_libpurple(void)
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
178 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
179 /* Set a custom user directory (optional) */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
180 purple_util_set_user_dir(CUSTOM_USER_DIRECTORY);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
181
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
182 /* 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
183 purple_debug_set_enabled(FALSE);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
184
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
185 /* Set the core-uiops, which is used to
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
186 * - initialize the ui specific preferences.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
187 * - initialize the debug ui.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
188 * - initialize the ui components for all the modules.
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
189 * - 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
190 */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
191 purple_core_set_ui_ops(&null_core_uiops);
15617
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 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
194 * copy this verbatim. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
195 purple_eventloop_set_ui_ops(&glib_eventloops);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
196
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
197 /* 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
198 * 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
199 * any path here, but it might be desired, especially for ui-specific plugins. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
200 purple_plugins_add_search_path(CUSTOM_PLUGIN_PATH);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
201
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
202 /* 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
203 * 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
204 * is used by stuff that depends on this ui, for example the ui-specific plugins. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
205 if (!purple_core_init(UI_ID)) {
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
206 /* Initializing the core failed. Terminate. */
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
207 fprintf(stderr,
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
208 "libpurple initialization failed. Dumping core.\n"
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
209 "Please report this!\n");
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
210 abort();
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
211 }
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
212
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
213 /* Create and load the buddylist. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
214 purple_set_blist(purple_blist_new());
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
215 purple_blist_load();
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
216
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
217 /* Load the preferences. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
218 purple_prefs_load();
15617
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 /* Load the desired plugins. The client should save the list of loaded plugins in
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
221 * the preferences using purple_plugins_save_loaded(PLUGIN_SAVE_PREF) */
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
222 purple_plugins_load_saved(PLUGIN_SAVE_PREF);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
223
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
224 /* Load the pounces. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
225 purple_pounces_load();
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
226 }
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 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
229 signed_on(PurpleConnection *gc, gpointer null)
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
230 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
231 PurpleAccount *account = purple_connection_get_account(gc);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
232 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
233 }
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 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
236 connect_to_signals_for_demonstration_purposes_only(void)
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
237 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
238 static int handle;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
239 purple_signal_connect(purple_connections_get_handle(), "signed-on", &handle,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
240 PURPLE_CALLBACK(signed_on), NULL);
15617
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
22007
c38d72677c8a Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents: 21060
diff changeset
243 int main(int argc, char *argv[])
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
244 {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
245 GList *iter;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
246 int i, num;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
247 GList *names = NULL;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
248 const char *prpl;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
249 char name[128];
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
250 char *password;
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
251 GMainLoop *loop = g_main_loop_new(NULL, FALSE);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
252 PurpleAccount *account;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
253 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
254 char *res;
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
255
21060
9838af97586b A pidgin fans in Great Britain.U.K thinks that nullclient should explicitly
Will Thompson <will.thompson@collabora.co.uk>
parents: 19681
diff changeset
256 /* 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: 19681
diff changeset
257 * 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: 19681
diff changeset
258 * 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: 19681
diff changeset
259 * 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: 19681
diff changeset
260 */
9838af97586b A pidgin fans in Great Britain.U.K thinks that nullclient should explicitly
Will Thompson <will.thompson@collabora.co.uk>
parents: 19681
diff changeset
261 signal(SIGCHLD, SIG_IGN);
9838af97586b A pidgin fans in Great Britain.U.K thinks that nullclient should explicitly
Will Thompson <will.thompson@collabora.co.uk>
parents: 19681
diff changeset
262
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
263 init_libpurple();
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
264
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
265 printf("libpurple initialized.\n");
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
266
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
267 iter = purple_plugins_get_protocols();
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
268 for (i = 0; iter; iter = iter->next) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
269 PurplePlugin *plugin = iter->data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
270 PurplePluginInfo *info = plugin->info;
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
271 if (info && info->name) {
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
272 printf("\t%d: %s\n", i++, info->name);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
273 names = g_list_append(names, info->id);
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 }
19547
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
276 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
277 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
278 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
279 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
280 abort();
3684c9d16f6f Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@wiktel.com>
parents: 22007
diff changeset
281 }
19547
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
282 sscanf(name, "%d", &num);
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
283 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
284
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
285 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
286 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
287 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
288 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
289 abort();
3684c9d16f6f Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@wiktel.com>
parents: 22007
diff changeset
290 }
19547
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
291 name[strlen(name) - 1] = 0; /* strip the \n at the end */
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
292
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
293 /* Create the account */
19547
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
294 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
295
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
296 /* 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
297 password = getpass("Password: ");
6c726af063c9 Revert jeff2's changes from 2007-08-12. Specifically revision
Mark Doliner <mark@kingant.net>
parents: 18910
diff changeset
298 purple_account_set_password(account, password);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
299
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
300 /* It's necessary to enable the account first. */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15693
diff changeset
301 purple_account_set_enabled(account, UI_ID, TRUE);
15617
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 /* 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
304 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
305 purple_savedstatus_activate(status);
15617
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
306
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
307 connect_to_signals_for_demonstration_purposes_only();
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
308
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
309 g_main_loop_run(loop);
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
310
7e0c0062c428 Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff changeset
311 return 0;
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