Mercurial > pidgin
annotate libpurple/example/nullclient.c @ 18603:5610c2ea0d94
revert 'no visible tabs when only one conversation' as it proved unpopular. Made tabs only fill the entire width of the notebook when there's only one tab to avoid http://pidgin.im/~deryni/that_just_looks_dumb.png
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Sun, 22 Jul 2007 08:14:16 +0000 |
parents | b8572b937c09 |
children | 2115910c5746 |
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 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
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 |
b8572b937c09
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents:
18013
diff
changeset
|
24 /* XXX: we probably shouldn't include internal.h in examples */ |
b8572b937c09
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents:
18013
diff
changeset
|
25 #include "internal.h" |
b8572b937c09
#include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <stu@nosnilmot.com>
parents:
18013
diff
changeset
|
26 |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
27 #include "account.h" |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
28 #include "conversation.h" |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
29 #include "core.h" |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
30 #include "debug.h" |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
31 #include "eventloop.h" |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
32 #include "ft.h" |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
33 #include "log.h" |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
34 #include "notify.h" |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
35 #include "prefs.h" |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
36 #include "prpl.h" |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
37 #include "pounce.h" |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
38 #include "savedstatuses.h" |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
39 #include "sound.h" |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
40 #include "status.h" |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
41 #include "util.h" |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
42 #include "whiteboard.h" |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
43 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
44 #include <glib.h> |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
45 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
46 #include <string.h> |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
47 #include <unistd.h> |
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 #include "defines.h" |
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 | 52 * 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
|
53 * 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
|
54 */ |
15822 | 55 #define PURPLE_GLIB_READ_COND (G_IO_IN | G_IO_HUP | G_IO_ERR) |
56 #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
|
57 |
15822 | 58 typedef struct _PurpleGLibIOClosure { |
59 PurpleInputFunction function; | |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
60 guint result; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
61 gpointer data; |
15822 | 62 } PurpleGLibIOClosure; |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
63 |
15822 | 64 static void purple_glib_io_destroy(gpointer data) |
15617
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 g_free(data); |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
67 } |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
68 |
15822 | 69 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
|
70 { |
15822 | 71 PurpleGLibIOClosure *closure = data; |
72 PurpleInputCondition purple_cond = 0; | |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
73 |
15822 | 74 if (condition & PURPLE_GLIB_READ_COND) |
75 purple_cond |= PURPLE_INPUT_READ; | |
76 if (condition & PURPLE_GLIB_WRITE_COND) | |
77 purple_cond |= PURPLE_INPUT_WRITE; | |
15617
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(closure->data, g_io_channel_unix_get_fd(source), |
15822 | 80 purple_cond); |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
81 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
82 return TRUE; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
83 } |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
84 |
15822 | 85 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
|
86 gpointer data) |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
87 { |
15822 | 88 PurpleGLibIOClosure *closure = g_new0(PurpleGLibIOClosure, 1); |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
89 GIOChannel *channel; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
90 GIOCondition cond = 0; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
91 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
92 closure->function = function; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
93 closure->data = data; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
94 |
15822 | 95 if (condition & PURPLE_INPUT_READ) |
96 cond |= PURPLE_GLIB_READ_COND; | |
97 if (condition & PURPLE_INPUT_WRITE) | |
98 cond |= PURPLE_GLIB_WRITE_COND; | |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
99 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
100 channel = g_io_channel_unix_new(fd); |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
101 closure->result = g_io_add_watch_full(channel, G_PRIORITY_DEFAULT, cond, |
15822 | 102 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
|
103 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
104 g_io_channel_unref(channel); |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
105 return closure->result; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
106 } |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
107 |
15822 | 108 static PurpleEventLoopUiOps glib_eventloops = |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
109 { |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
110 g_timeout_add, |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
111 g_source_remove, |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
112 glib_input_add, |
15693
cd02b303b81f
Fix the following compiler warning:
Mark Doliner <mark@kingant.net>
parents:
15617
diff
changeset
|
113 g_source_remove, |
16668
07cf49a0f404
I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents:
16098
diff
changeset
|
114 NULL, |
18013
58e82c3b697e
It's GLIB_CHECK_VERSION, not GLIB_VERSION_CHECK.
Richard Laager <rlaager@wiktel.com>
parents:
18009
diff
changeset
|
115 #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
|
116 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
|
117 #else |
9ffa9af32854
Wire in g_timeout_add_seconds for Finch and nullclient as well.
Richard Laager <rlaager@wiktel.com>
parents:
17080
diff
changeset
|
118 NULL, |
9ffa9af32854
Wire in g_timeout_add_seconds for Finch and nullclient as well.
Richard Laager <rlaager@wiktel.com>
parents:
17080
diff
changeset
|
119 #endif |
16668
07cf49a0f404
I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents:
16098
diff
changeset
|
120 |
07cf49a0f404
I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents:
16098
diff
changeset
|
121 /* padding */ |
07cf49a0f404
I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents:
16098
diff
changeset
|
122 NULL, |
07cf49a0f404
I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents:
16098
diff
changeset
|
123 NULL, |
15693
cd02b303b81f
Fix the following compiler warning:
Mark Doliner <mark@kingant.net>
parents:
15617
diff
changeset
|
124 NULL |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
125 }; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
126 /*** End of the eventloop functions. ***/ |
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 /*** Conversation uiops ***/ |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
129 static void |
15822 | 130 null_write_conv(PurpleConversation *conv, const char *who, const char *alias, |
131 const char *message, PurpleMessageFlags flags, time_t mtime) | |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
132 { |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
133 const char *name; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
134 if (alias && *alias) |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
135 name = alias; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
136 else if (who && *who) |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
137 name = who; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
138 else |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
139 name = NULL; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
140 |
15822 | 141 printf("(%s) %s %s: %s\n", purple_conversation_get_name(conv), |
142 purple_utf8_strftime("(%H:%M:%S)", localtime(&mtime)), | |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
143 name, message); |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
144 } |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
145 |
15822 | 146 static PurpleConversationUiOps null_conv_uiops = |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
147 { |
17080
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
148 NULL, /* create_conversation */ |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
149 NULL, /* destroy_conversation */ |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
150 NULL, /* write_chat */ |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
151 NULL, /* write_im */ |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
152 null_write_conv, /* write_conv */ |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
153 NULL, /* chat_add_users */ |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
154 NULL, /* chat_rename_user */ |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
155 NULL, /* chat_remove_users */ |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
156 NULL, /* chat_update_user */ |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
157 NULL, /* present */ |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
158 NULL, /* has_focus */ |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
159 NULL, /* custom_smiley_add */ |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
160 NULL, /* custom_smiley_write */ |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
161 NULL, /* custom_smiley_close */ |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
162 NULL, /* send_confirm */ |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
163 NULL, |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
164 NULL, |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
165 NULL, |
4b65a67d23b8
Replace some C99 struct syntax.
Richard Laager <rlaager@wiktel.com>
parents:
16668
diff
changeset
|
166 NULL |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
167 }; |
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 static void |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
170 null_ui_init() |
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 /** |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
173 * 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
|
174 * just initialize the UI for conversations. |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
175 */ |
15822 | 176 purple_conversations_set_ui_ops(&null_conv_uiops); |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
177 } |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
178 |
15822 | 179 static PurpleCoreUiOps null_core_uiops = |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
180 { |
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 NULL, |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
183 null_ui_init, |
16668
07cf49a0f404
I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents:
16098
diff
changeset
|
184 NULL, |
07cf49a0f404
I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents:
16098
diff
changeset
|
185 |
07cf49a0f404
I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents:
16098
diff
changeset
|
186 /* padding */ |
07cf49a0f404
I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents:
16098
diff
changeset
|
187 NULL, |
07cf49a0f404
I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents:
16098
diff
changeset
|
188 NULL, |
07cf49a0f404
I _think_ this is it for libpurple's padding...
Gary Kramlich <grim@reaperworld.com>
parents:
16098
diff
changeset
|
189 NULL, |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
190 NULL |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
191 }; |
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 static void |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
194 init_libpurple() |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
195 { |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
196 /* Set a custom user directory (optional) */ |
15822 | 197 purple_util_set_user_dir(CUSTOM_USER_DIRECTORY); |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
198 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
199 /* We do not want any debugging for now to keep the noise to a minimum. */ |
15822 | 200 purple_debug_set_enabled(FALSE); |
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 /* Set the core-uiops, which is used to |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
203 * - initialize the ui specific preferences. |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
204 * - initialize the debug ui. |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
205 * - initialize the ui components for all the modules. |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
206 * - 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
|
207 */ |
15822 | 208 purple_core_set_ui_ops(&null_core_uiops); |
15617
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 /* 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
|
211 * copy this verbatim. */ |
15822 | 212 purple_eventloop_set_ui_ops(&glib_eventloops); |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
213 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
214 /* 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
|
215 * 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
|
216 * any path here, but it might be desired, especially for ui-specific plugins. */ |
15822 | 217 purple_plugins_add_search_path(CUSTOM_PLUGIN_PATH); |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
218 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
219 /* 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
|
220 * 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
|
221 * is used by stuff that depends on this ui, for example the ui-specific plugins. */ |
15822 | 222 if (!purple_core_init(UI_ID)) { |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
223 /* Initializing the core failed. Terminate. */ |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
224 fprintf(stderr, |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
225 "libpurple initialization failed. Dumping core.\n" |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
226 "Please report this!\n"); |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
227 abort(); |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
228 } |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
229 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
230 /* Create and load the buddylist. */ |
15822 | 231 purple_set_blist(purple_blist_new()); |
232 purple_blist_load(); | |
15617
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 /* Load the preferences. */ |
15822 | 235 purple_prefs_load(); |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
236 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
237 /* Load the desired plugins. The client should save the list of loaded plugins in |
15822 | 238 * the preferences using purple_plugins_save_loaded(PLUGIN_SAVE_PREF) */ |
239 purple_plugins_load_saved(PLUGIN_SAVE_PREF); | |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
240 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
241 /* Load the pounces. */ |
15822 | 242 purple_pounces_load(); |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
243 } |
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 static void |
15822 | 246 signed_on(PurpleConnection *gc, gpointer null) |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
247 { |
15822 | 248 PurpleAccount *account = purple_connection_get_account(gc); |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
249 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
|
250 } |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
251 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
252 static void |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
253 connect_to_signals_for_demonstration_purposes_only() |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
254 { |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
255 static int handle; |
15822 | 256 purple_signal_connect(purple_connections_get_handle(), "signed-on", &handle, |
257 PURPLE_CALLBACK(signed_on), NULL); | |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
258 } |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
259 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
260 int main() |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
261 { |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
262 GList *iter; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
263 int i, num; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
264 GList *names = NULL; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
265 const char *prpl; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
266 char name[128]; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
267 char *password; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
268 GMainLoop *loop = g_main_loop_new(NULL, FALSE); |
15822 | 269 PurpleAccount *account; |
270 PurpleSavedStatus *status; | |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
271 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
272 init_libpurple(); |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
273 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
274 printf("libpurple initialized.\n"); |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
275 |
15822 | 276 iter = purple_plugins_get_protocols(); |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
277 for (i = 0; iter; iter = iter->next) { |
15822 | 278 PurplePlugin *plugin = iter->data; |
279 PurplePluginInfo *info = plugin->info; | |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
280 if (info && info->name) { |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
281 printf("\t%d: %s\n", i++, info->name); |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
282 names = g_list_append(names, info->id); |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
283 } |
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 printf("Select the protocol [0-%d]: ", i-1); |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
286 fgets(name, sizeof(name), stdin); |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
287 sscanf(name, "%d", &num); |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
288 prpl = g_list_nth_data(names, num); |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
289 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
290 printf("Username: "); |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
291 fgets(name, sizeof(name), stdin); |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
292 name[strlen(name) - 1] = 0; /* strip the \n at the end */ |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
293 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
294 /* Create the account */ |
15822 | 295 account = purple_account_new(name, prpl); |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
296 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
297 /* Get the password for the account */ |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
298 password = getpass("Password: "); |
15822 | 299 purple_account_set_password(account, password); |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
300 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
301 /* It's necessary to enable the account first. */ |
15822 | 302 purple_account_set_enabled(account, UI_ID, TRUE); |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
303 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
304 /* Now, to connect the account(s), create a status and activate it. */ |
15822 | 305 status = purple_savedstatus_new(NULL, PURPLE_STATUS_AVAILABLE); |
306 purple_savedstatus_activate(status); | |
15617
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
307 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
308 connect_to_signals_for_demonstration_purposes_only(); |
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 g_main_loop_run(loop); |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
311 |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
312 return 0; |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
313 } |
7e0c0062c428
Add the example nullclient here.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
diff
changeset
|
314 |