plugins/gaim-remote/remote.c

Sun, 08 Aug 2004 00:48:19 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Sun, 08 Aug 2004 00:48:19 +0000
changeset 9709
2e73f176cc80
parent 9608
0b3b4fcb642a
child 9730
e59812364b8b
permissions
-rw-r--r--

[gaim-migrate @ 10570]
This patch is freaking massive.
Renamed ui.h to gtkdialogs.h
Renamed dialogs.c to gtkdialogs.c
sed'ed the hell out of the .po files

These files are similar to gtkutil.c/.h. They are meant to contain
dialogs such as the "New Instant Message" window, which does not
belong in gtkblist.c or gtkconv.c, and is called from both places.

Eventually the functions in gtkdialogs.c/.h should be changed to
conform to Gaim's naming convention.

6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6179
diff changeset
1 /**
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2 * Remote control plugin for Gaim
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3 *
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4 * Copyright (C) 2003 Christian Hammond.
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
5 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
6 *
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
8 * modify it under the terms of the GNU General Public License as
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
9 * published by the Free Software Foundation; either version 2 of the
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 * License, or (at your option) any later version.
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 *
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful, but
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * General Public License for more details.
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 *
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 * 02111-1307, USA.
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
21 *
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
22 * @todo Make this a core plugin!
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
24 #include "internal.h"
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6179
diff changeset
25 #include "gtkinternal.h"
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
26
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
27 #ifndef _WIN32
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
28 # include <sys/un.h>
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
29 #endif
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
30
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
31 #include <signal.h>
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
32 #include <getopt.h>
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
33
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
34 #include "conversation.h"
6179
4df73df94250 [gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents: 6177
diff changeset
35 #include "core.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
36 #include "debug.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
37 #include "prpl.h"
8704
3c2c6ded4d1a [gaim-migrate @ 9457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 7782
diff changeset
38 #include "notify.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
39
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
40 /* XXX */
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
41 #include "gtkconv.h"
9709
2e73f176cc80 [gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents: 9608
diff changeset
42 #include "gtkdialogs.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
43 #include "gtkplugin.h"
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
44 #include "gaim.h"
9608
0b3b4fcb642a [gaim-migrate @ 10451]
István Váradi
parents: 9460
diff changeset
45 #include "prefs.h"
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
46
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
47 #include <gaim-remote/remote.h>
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
48
5873
328b60d27240 [gaim-migrate @ 6305]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
49 #define REMOTE_PLUGIN_ID "gtk-remote"
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
50
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
51 struct UI {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
52 GIOChannel *channel;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
53 guint inpa;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
54 };
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
55
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
56 #ifndef _WIN32
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
57 static gint UI_fd = -1;
6107
86cd2dbe7911 [gaim-migrate @ 6568]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
58 static guint watcher = 0;
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
59 #endif
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
60 static int gaim_session = 0;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
61 static GSList *uis = NULL;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
62
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
63 /* AIM URI's ARE FUN :-D */
5884
23405c547bd4 [gaim-migrate @ 6316]
Christian Hammond <chipx86@chipx86.com>
parents: 5873
diff changeset
64 static const char *
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
65 gaim_remote_handle_uri(const char *uri)
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
66 {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
67 const char *username;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
68 GString *str;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
69 GList *conn;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
70 GaimConnection *gc = NULL;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
71 GaimAccount *account;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
72
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
73 gaim_debug(GAIM_DEBUG_INFO, "gaim_remote_handle_uri", "Handling URI: %s\n", uri);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
74
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
75 /* Well, we'd better check to make sure we have at least one
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
76 AIM account connected. */
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
77 for (conn = gaim_connections_get_all(); conn != NULL; conn = conn->next) {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
78 gc = conn->data;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
79 account = gaim_connection_get_account(gc);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
80 username = gaim_account_get_username(account);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
81
9460
7c1ab9155fe2 [gaim-migrate @ 10285]
Daniel Atallah <datallah@pidgin.im>
parents: 8993
diff changeset
82 if (strcmp(gaim_account_get_protocol_id(account), "prpl-oscar") == 0 &&
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
83 username != NULL && isalpha(*username)) {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
84
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
85 break;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
86 }
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
87 }
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
88
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
89 if (gc == NULL)
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
90 return _("Not connected to AIM");
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
91
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
92 /* aim:goim?screenname=screenname&message=message */
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
93 if (!g_ascii_strncasecmp(uri, "aim:goim?", strlen("aim:goim?"))) {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
94 char *who, *what;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
95 GaimConversation *c;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
96 uri = uri + strlen("aim:goim?");
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
97
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
98 if (!(who = strstr(uri, "screenname="))) {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
99 return _("No screenname given.");
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
100 }
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
101 /* spaces are encoded as +'s */
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
102 who = who + strlen("screenname=");
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
103 str = g_string_new(NULL);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
104 while (*who && (*who != '&')) {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
105 g_string_append_c(str, *who == '+' ? ' ' : *who);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
106 who++;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
107 }
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
108 who = g_strdup(str->str);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
109 g_string_free(str, TRUE);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
110
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
111 what = strstr(uri, "message=");
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
112 if (what) {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
113 what = what + strlen("message=");
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
114 str = g_string_new(NULL);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
115 while (*what && (*what != '&' || !g_ascii_strncasecmp(what, "&amp;", 5))) {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
116 g_string_append_c(str, *what == '+' ? ' ' : *what);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
117 what++;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
118 }
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
119 what = g_strdup(str->str);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
120 g_string_free(str, TRUE);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
121 }
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
122
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
123 c = gaim_conversation_new(GAIM_CONV_IM, gc->account, who);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
124 g_free(who);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
125
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
126 if (what) {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
127 GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(c);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
128
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
129 gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, what, -1);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
130 g_free(what);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
131 }
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
132 } else if (!g_ascii_strncasecmp(uri, "aim:addbuddy?", strlen("aim:addbuddy?"))) {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
133 char *who, *group;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
134 uri = uri + strlen("aim:addbuddy?");
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
135 /* spaces are encoded as +'s */
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
136
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
137 if (!(who = strstr(uri, "screenname="))) {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
138 return _("No screenname given.");
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
139 }
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
140 who = who + strlen("screenname=");
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
141 str = g_string_new(NULL);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
142 while (*who && (*who != '&')) {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
143 g_string_append_c(str, *who == '+' ? ' ' : *who);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
144 who++;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
145 }
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
146 who = g_strdup(str->str);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
147 g_string_free(str, TRUE);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
148
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
149 group = strstr(uri, "group=");
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
150 if (group) {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
151 group = group + strlen("group=");
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
152 str = g_string_new(NULL);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
153 while (*group && (*group != '&' || !g_ascii_strncasecmp(group, "&amp;", 5))) {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
154 g_string_append_c(str, *group == '+' ? ' ' : *group);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
155 group++;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
156 }
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
157 group = g_strdup(str->str);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
158 g_string_free(str, TRUE);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
159 }
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
160
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
161 gaim_debug(GAIM_DEBUG_MISC, "gaim_remote_handle_uri", "who: %s\n", who);
7100
cfa56fba1b19 [gaim-migrate @ 7665]
Christian Hammond <chipx86@chipx86.com>
parents: 6982
diff changeset
162 gaim_blist_request_add_buddy(gc->account, who, group, NULL);
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
163 g_free(who);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
164 if (group)
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
165 g_free(group);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
166 } else if (!g_ascii_strncasecmp(uri, "aim:gochat?", strlen("aim:gochat?"))) {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
167 char *room;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
168 GHashTable *components;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
169 int exch = 5;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
170
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
171 uri = uri + strlen("aim:gochat?");
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
172 /* spaces are encoded as +'s */
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
173
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
174 if (!(room = strstr(uri, "roomname="))) {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
175 return _("No roomname given.");
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
176 }
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
177 room = room + strlen("roomname=");
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
178 str = g_string_new(NULL);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
179 while (*room && (*room != '&')) {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
180 g_string_append_c(str, *room == '+' ? ' ' : *room);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
181 room++;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
182 }
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
183 room = g_strdup(str->str);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
184 g_string_free(str, TRUE);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
185 components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free,
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
186 g_free);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
187 g_hash_table_replace(components, g_strdup("room"), room);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
188 g_hash_table_replace(components, g_strdup("exchange"),
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
189 g_strdup_printf("%d", exch));
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
190
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
191 serv_join_chat(gc, components);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
192 g_hash_table_destroy(components);
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
193 } else {
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
194 return _("Invalid AIM URI");
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
195 }
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
196
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
197
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
198 return NULL;
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
199 }
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
200
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
201
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
202
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
203 #if 0
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
204 static guchar *
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
205 UI_build(guint32 *len, guchar type, guchar subtype, va_list args)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
206 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
207 guchar *buffer;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
208 guint32 pos;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
209 int size;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
210 void *data;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
211
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
212 *len = sizeof(guchar) * 2 + 4;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
213 buffer = g_malloc(*len);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
214 pos = 0;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
215
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
216 memcpy(buffer + pos, &type, sizeof(type)); pos += sizeof(type);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
217 memcpy(buffer + pos, &subtype, sizeof(subtype)); pos += sizeof(subtype);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
218
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
219 /* we come back and do size last */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
220 pos += 4;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
221
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
222 size = va_arg(args, int);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
223 while (size != -1) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
224 *len += size;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
225 buffer = g_realloc(buffer, *len);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
226
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
227 data = va_arg(args, void *);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
228 memcpy(buffer + pos, data, size);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
229 pos += size;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
230
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
231 size = va_arg(args, int);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
232 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
233
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
234 pos -= sizeof(guchar) * 2 + 4;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
235
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
236 /* now we do size */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
237 memcpy(buffer + sizeof(guchar) * 2, &pos, 4);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
238
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
239 return buffer;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
240 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
241
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
242 static gint
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
243 UI_write(struct UI *ui, guchar *data, gint len)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
244 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
245 GError *error = NULL;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
246 gint sent;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
247 /* we'll let the write silently fail because the read will pick it up as dead */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
248 g_io_channel_write_chars(ui->channel, data, len, &sent, &error);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
249 if (error)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
250 g_error_free(error);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
251 return sent;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
252 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
253
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
254 static void
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
255 UI_build_write(struct UI *ui, guchar type, guchar subtype, ...)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
256 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
257 va_list ap;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
258 gchar *data;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
259 guint32 len;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
260
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
261 va_start(ap, subtype);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
262 data = UI_build(&len, type, subtype, ap);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
263 va_end(ap);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
264
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
265 UI_write(ui, data, len);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
266
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
267 g_free(data);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
268 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
269
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
270 static void
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
271 UI_broadcast(guchar *data, gint len)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
272 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
273 GSList *u = uis;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
274 while (u) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
275 struct UI *ui = u->data;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
276 UI_write(ui, data, len);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
277 u = u->next;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
278 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
279 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
280
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
281 static void
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
282 UI_build_broadcast(guchar type, guchar subtype, ...)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
283 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
284 va_list ap;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
285 gchar *data;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
286 guint32 len;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
287
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
288 if (!uis)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
289 return;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
290
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
291 va_start(ap, subtype);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
292 data = UI_build(&len, type, subtype, ap);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
293 va_end(ap);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
294
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
295 UI_broadcast(data, len);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
296
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
297 g_free(data);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
298 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
299 #endif
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
300
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
301 #ifndef _WIN32
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
302 static void
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 6036
diff changeset
303 meta_handler(struct UI *ui, guchar subtype, gchar *data)
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
304 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
305 GaimRemotePacket *p;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
306 GError *error = NULL;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
307 switch (subtype) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
308 case CUI_META_LIST:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
309 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
310 case CUI_META_QUIT:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
311 while (uis) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
312 ui = uis->data;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
313 uis = g_slist_remove(uis, ui);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
314 g_io_channel_shutdown(ui->channel, TRUE, &error);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
315 g_source_remove(ui->inpa);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
316 g_free(ui);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
317 }
7646
6806a6893ac0 [gaim-migrate @ 8289]
Mark Doliner <markdoliner@pidgin.im>
parents: 7631
diff changeset
318 g_timeout_add(0, gaim_core_quit_cb, NULL);
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
319 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
320 case CUI_META_DETACH:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
321 uis = g_slist_remove(uis, ui);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
322 g_io_channel_shutdown(ui->channel, TRUE, &error);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
323 g_source_remove(ui->inpa);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
324 g_free(ui);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
325 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
326 case CUI_META_PING:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
327 p = gaim_remote_packet_new(CUI_TYPE_META, CUI_META_ACK);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
328 gaim_remote_session_send_packet(g_io_channel_unix_get_fd(ui->channel),
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
329 p);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
330 gaim_remote_packet_free(p);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
331 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
332 default:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
333 gaim_debug(GAIM_DEBUG_WARNING, "cui",
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
334 "Unhandled meta subtype %d\n", subtype);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
335 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
336 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
337
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
338 if(error)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
339 g_error_free(error);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
340 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
341
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
342 static void
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 6036
diff changeset
343 plugin_handler(struct UI *ui, guchar subtype, gpointer data)
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
344 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
345 #ifdef GAIM_PLUGINS
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
346 guint id;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
347 GaimPlugin *p;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
348
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
349 switch (subtype) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
350 /*
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
351 case CUI_PLUGIN_LIST:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
352 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
353 */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
354 case CUI_PLUGIN_LOAD:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
355 gaim_plugin_load(gaim_plugin_probe(data));
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
356 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
357 case CUI_PLUGIN_UNLOAD:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
358 memcpy(&id, data, sizeof(id));
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
359 p = g_list_nth_data(gaim_plugins_get_loaded(), id);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
360 if (p) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
361 gaim_plugin_unload(p);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
362 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
363 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
364 default:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
365 gaim_debug(GAIM_DEBUG_WARNING, "cui",
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
366 "Unhandled plugin subtype %d\n", subtype);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
367 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
368 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
369 #endif
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
370 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
371
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
372 static void
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 6036
diff changeset
373 user_handler(struct UI *ui, guchar subtype, gchar *data)
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
374 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
375 guint id;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
376 GaimAccount *account;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
377
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
378 switch (subtype) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
379 /*
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
380 case CUI_USER_LIST:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
381 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
382 case CUI_USER_ADD:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
383 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
384 case CUI_USER_REMOVE:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
385 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
386 case CUI_USER_MODIFY:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
387 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
388 */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
389 case CUI_USER_SIGNON:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
390 if (!data)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
391 return;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
392 memcpy(&id, data, sizeof(id));
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
393 account = g_list_nth_data(gaim_accounts_get_all(), id);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
394 if (account)
6036
285e48913c72 [gaim-migrate @ 6486]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
395 gaim_account_connect(account);
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
396 /* don't need to do anything here because the UI will get updates from other handlers */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
397 break;
9608
0b3b4fcb642a [gaim-migrate @ 10451]
István Váradi
parents: 9460
diff changeset
398 case CUI_USER_AWAY:
0b3b4fcb642a [gaim-migrate @ 10451]
István Váradi
parents: 9460
diff changeset
399 {
0b3b4fcb642a [gaim-migrate @ 10451]
István Váradi
parents: 9460
diff changeset
400 GSList* l;
0b3b4fcb642a [gaim-migrate @ 10451]
István Váradi
parents: 9460
diff changeset
401 const char* default_away_name = gaim_prefs_get_string("/core/away/default_message");
0b3b4fcb642a [gaim-migrate @ 10451]
István Váradi
parents: 9460
diff changeset
402
0b3b4fcb642a [gaim-migrate @ 10451]
István Váradi
parents: 9460
diff changeset
403 for(l = away_messages; l; l = l->next) {
0b3b4fcb642a [gaim-migrate @ 10451]
István Váradi
parents: 9460
diff changeset
404 if(!strcmp(default_away_name, ((struct away_message *)l->data)->name)) {
0b3b4fcb642a [gaim-migrate @ 10451]
István Váradi
parents: 9460
diff changeset
405 do_away_message(NULL, l->data);
0b3b4fcb642a [gaim-migrate @ 10451]
István Váradi
parents: 9460
diff changeset
406 break;
0b3b4fcb642a [gaim-migrate @ 10451]
István Váradi
parents: 9460
diff changeset
407 }
0b3b4fcb642a [gaim-migrate @ 10451]
István Váradi
parents: 9460
diff changeset
408 }
0b3b4fcb642a [gaim-migrate @ 10451]
István Váradi
parents: 9460
diff changeset
409 }
0b3b4fcb642a [gaim-migrate @ 10451]
István Váradi
parents: 9460
diff changeset
410 break;
0b3b4fcb642a [gaim-migrate @ 10451]
István Váradi
parents: 9460
diff changeset
411 case CUI_USER_BACK:
0b3b4fcb642a [gaim-migrate @ 10451]
István Váradi
parents: 9460
diff changeset
412 do_im_back(NULL, NULL);
0b3b4fcb642a [gaim-migrate @ 10451]
István Váradi
parents: 9460
diff changeset
413 break;
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
414 default:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
415 gaim_debug(GAIM_DEBUG_WARNING, "cui",
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
416 "Unhandled user subtype %d\n", subtype);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
417 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
418 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
419 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
420
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
421 static void
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 6036
diff changeset
422 message_handler(struct UI *ui, guchar subtype, gchar *data)
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
423 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
424 switch (subtype) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
425 case CUI_MESSAGE_LIST:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
426 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
427 case CUI_MESSAGE_SEND:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
428 if (!data)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
429 return;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
430 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
431 guint id;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
432 GaimConnection *gc;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
433 guint len;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
434 char *who, *msg;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
435 gint flags;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
436 int pos = 0;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
437
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
438 memcpy(&id, data + pos, sizeof(id));
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
439 pos += sizeof(id);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
440 gc = g_list_nth_data(gaim_connections_get_all(), id);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
441 if (!gc)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
442 return;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
443
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
444 memcpy(&len, data + pos, sizeof(len));
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
445 pos += sizeof(len);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
446 who = g_strndup(data + pos, len + 1);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
447 pos += len;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
448
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
449 memcpy(&len, data + pos, sizeof(len));
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
450 pos += sizeof(len);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
451 msg = g_strndup(data + pos, len + 1);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
452 pos += len;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
453
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
454 memcpy(&flags, data + pos, sizeof(flags));
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6371
diff changeset
455 serv_send_im(gc, who, msg, flags);
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
456
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
457 g_free(who);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
458 g_free(msg);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
459 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
460 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
461 case CUI_MESSAGE_RECV:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
462 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
463 default:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
464 gaim_debug(GAIM_DEBUG_WARNING, "cui",
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
465 "Unhandled message subtype %d\n", subtype);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
466 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
467 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
468 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
469
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
470 static gint
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 6036
diff changeset
471 gaim_recv(GIOChannel *source, gchar *buf, gint len)
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
472 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
473 gint total = 0;
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 6036
diff changeset
474 guint cur;
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
475
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
476 GError *error = NULL;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
477
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
478 while (total < len) {
7386
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7100
diff changeset
479 if (g_io_channel_read_chars(source, buf + total, len - total, (gsize *) &cur, &error) != G_IO_STATUS_NORMAL) {
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
480 if (error)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
481 g_error_free(error);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
482 return -1;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
483 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
484 if (cur == 0)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
485 return total;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
486 total += cur;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
487 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
488
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
489 return total;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
490 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
491
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
492 static void
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 6036
diff changeset
493 remote_handler(struct UI *ui, guchar subtype, gchar *data, int len)
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
494 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
495 const char *resp;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
496 char *send;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
497 switch (subtype) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
498 case CUI_REMOTE_CONNECTIONS:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
499 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
500 case CUI_REMOTE_URI:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
501 send = g_malloc(len + 1);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
502 memcpy(send, data, len);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
503 send[len] = 0;
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
504 resp = gaim_remote_handle_uri(send);
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
505 g_free(send);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
506 /* report error */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
507 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
508 default:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
509 gaim_debug(GAIM_DEBUG_WARNING, "cui",
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
510 "Unhandled remote subtype %d\n", subtype);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
511 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
512 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
513 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
514
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
515 static gboolean
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
516 UI_readable(GIOChannel *source, GIOCondition cond, gpointer data)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
517 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
518 struct UI *ui = data;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
519
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 6036
diff changeset
520 gchar type;
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 6036
diff changeset
521 gchar subtype;
7631
0e9e516bb6c3 [gaim-migrate @ 8255]
Nathan Walp <nwalp@pidgin.im>
parents: 7617
diff changeset
522 gint len;
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
523
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
524 GError *error = NULL;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
525
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 6036
diff changeset
526 gchar *in;
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
527
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
528 /* no byte order worries! this'll change if we go to TCP */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
529 if (gaim_recv(source, &type, sizeof(type)) != sizeof(type)) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
530 gaim_debug(GAIM_DEBUG_ERROR, "cui", "UI has abandoned us!\n");
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
531 uis = g_slist_remove(uis, ui);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
532 g_io_channel_shutdown(ui->channel, TRUE, &error);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
533 if(error) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
534 g_error_free(error);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
535 error = NULL;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
536 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
537 g_source_remove(ui->inpa);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
538 g_free(ui);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
539 return FALSE;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
540 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
541
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
542 if (gaim_recv(source, &subtype, sizeof(subtype)) != sizeof(subtype)) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
543 gaim_debug(GAIM_DEBUG_ERROR, "cui", "UI has abandoned us!\n");
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
544 uis = g_slist_remove(uis, ui);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
545 g_io_channel_shutdown(ui->channel, TRUE, &error);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
546 if(error) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
547 g_error_free(error);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
548 error = NULL;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
549 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
550 g_source_remove(ui->inpa);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
551 g_free(ui);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
552 return FALSE;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
553 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
554
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 6036
diff changeset
555 if (gaim_recv(source, (gchar *)&len, sizeof(len)) != sizeof(len)) {
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
556 gaim_debug(GAIM_DEBUG_ERROR, "cui", "UI has abandoned us!\n");
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
557 uis = g_slist_remove(uis, ui);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
558 g_io_channel_shutdown(ui->channel, TRUE, &error);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
559 if(error) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
560 g_error_free(error);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
561 error = NULL;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
562 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
563 g_source_remove(ui->inpa);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
564 g_free(ui);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
565 return FALSE;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
566 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
567
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
568 if (len) {
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 6036
diff changeset
569 in = g_new0(gchar, len);
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
570 if (gaim_recv(source, in, len) != len) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
571 gaim_debug(GAIM_DEBUG_ERROR, "cui", "UI has abandoned us!\n");
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
572 uis = g_slist_remove(uis, ui);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
573 g_io_channel_shutdown(ui->channel, TRUE, &error);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
574 if(error) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
575 g_error_free(error);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
576 error = NULL;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
577 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
578 g_source_remove(ui->inpa);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
579 g_free(ui);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
580 return FALSE;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
581 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
582 } else
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
583 in = NULL;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
584
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
585 switch (type) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
586 case CUI_TYPE_META:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
587 meta_handler(ui, subtype, in);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
588 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
589 case CUI_TYPE_PLUGIN:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
590 plugin_handler(ui, subtype, in);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
591 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
592 case CUI_TYPE_USER:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
593 user_handler(ui, subtype, in);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
594 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
595 /*
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
596 case CUI_TYPE_CONN:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
597 conn_handler(ui, subtype, in);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
598 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
599 case CUI_TYPE_BUDDY:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
600 buddy_handler(ui, subtype, in);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
601 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
602 */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
603 case CUI_TYPE_MESSAGE:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
604 message_handler(ui, subtype, in);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
605 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
606 /*
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
607 case CUI_TYPE_CHAT:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
608 chat_handler(ui, subtype, in);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
609 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
610 */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
611 case CUI_TYPE_REMOTE:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
612 remote_handler(ui, subtype, in, len);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
613 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
614 default:
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
615 gaim_debug(GAIM_DEBUG_WARNING, "cui",
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
616 "Unhandled type %d\n", type);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
617 break;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
618 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
619
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
620 if (in)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
621 g_free(in);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
622 return TRUE;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
623 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
624
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
625 static gboolean
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
626 socket_readable(GIOChannel *source, GIOCondition cond, gpointer data)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
627 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
628 struct sockaddr_un saddr;
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 6036
diff changeset
629 guint len = sizeof(saddr);
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
630 gint fd;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
631
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
632 struct UI *ui;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
633
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
634 if ((fd = accept(UI_fd, (struct sockaddr *)&saddr, &len)) == -1)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
635 return FALSE;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
636
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
637 ui = g_new0(struct UI, 1);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
638 uis = g_slist_append(uis, ui);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
639
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
640 ui->channel = g_io_channel_unix_new(fd);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
641 ui->inpa = g_io_add_watch(ui->channel, G_IO_IN | G_IO_HUP | G_IO_ERR, UI_readable, ui);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
642 g_io_channel_unref(ui->channel);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
643
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
644 gaim_debug(GAIM_DEBUG_MISC, "cui", "Got one\n");
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
645 return TRUE;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
646 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
647
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
648 static gint
8704
3c2c6ded4d1a [gaim-migrate @ 9457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 7782
diff changeset
649 open_socket(char **error)
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
650 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
651 struct sockaddr_un saddr;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
652 gint fd;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
653
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
654 while (gaim_remote_session_exists(gaim_session))
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
655 gaim_session++;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
656
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
657 gaim_debug(GAIM_DEBUG_MISC, "cui", "Session: %d\n", gaim_session);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
658
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
659 if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) != -1) {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
660 mode_t m = umask(0177);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
661 saddr.sun_family = AF_UNIX;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
662
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
663 g_snprintf(saddr.sun_path, sizeof(saddr.sun_path), "%s" G_DIR_SEPARATOR_S "gaim_%s.%d",
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
664 g_get_tmp_dir(), g_get_user_name(), gaim_session);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
665 if (bind(fd, (struct sockaddr *)&saddr, sizeof(saddr)) != -1)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
666 listen(fd, 100);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
667 else {
8704
3c2c6ded4d1a [gaim-migrate @ 9457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 7782
diff changeset
668 *error = g_strdup_printf(_("Failed to assign %s to a socket:\n%s"),
3c2c6ded4d1a [gaim-migrate @ 9457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 7782
diff changeset
669 saddr.sun_path, strerror(errno));
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
670 g_log(NULL, G_LOG_LEVEL_CRITICAL,
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
671 "Failed to assign %s to a socket (Error: %s)",
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
672 saddr.sun_path, strerror(errno));
7617
a055d87967c4 [gaim-migrate @ 8241]
Ethan Blanton <elb@pidgin.im>
parents: 7386
diff changeset
673 umask(m);
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
674 return -1;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
675 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
676 umask(m);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
677 } else
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
678 g_log(NULL, G_LOG_LEVEL_CRITICAL, "Unable to open socket: %s", strerror(errno));
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
679 return fd;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
680 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
681 #endif /*! _WIN32*/
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
682
6177
231da3dd39cf [gaim-migrate @ 6662]
Christian Hammond <chipx86@chipx86.com>
parents: 6107
diff changeset
683 static gboolean
231da3dd39cf [gaim-migrate @ 6662]
Christian Hammond <chipx86@chipx86.com>
parents: 6107
diff changeset
684 plugin_load(GaimPlugin *plugin)
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
685 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
686 #ifndef _WIN32
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
687 GIOChannel *channel;
8704
3c2c6ded4d1a [gaim-migrate @ 9457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 7782
diff changeset
688 char *buf;
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
689
8704
3c2c6ded4d1a [gaim-migrate @ 9457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 7782
diff changeset
690 if ((UI_fd = open_socket(&buf)) < 0) {
3c2c6ded4d1a [gaim-migrate @ 9457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 7782
diff changeset
691 gaim_notify_error(NULL, NULL, _("Unable to open socket"), buf);
3c2c6ded4d1a [gaim-migrate @ 9457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 7782
diff changeset
692 g_free(buf);
6177
231da3dd39cf [gaim-migrate @ 6662]
Christian Hammond <chipx86@chipx86.com>
parents: 6107
diff changeset
693 return FALSE;
8704
3c2c6ded4d1a [gaim-migrate @ 9457]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 7782
diff changeset
694 }
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
695
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
696 channel = g_io_channel_unix_new(UI_fd);
6107
86cd2dbe7911 [gaim-migrate @ 6568]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
697 watcher = g_io_add_watch(channel, G_IO_IN, socket_readable, NULL);
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
698 g_io_channel_unref(channel);
6177
231da3dd39cf [gaim-migrate @ 6662]
Christian Hammond <chipx86@chipx86.com>
parents: 6107
diff changeset
699
231da3dd39cf [gaim-migrate @ 6662]
Christian Hammond <chipx86@chipx86.com>
parents: 6107
diff changeset
700 return TRUE;
231da3dd39cf [gaim-migrate @ 6662]
Christian Hammond <chipx86@chipx86.com>
parents: 6107
diff changeset
701 #else
231da3dd39cf [gaim-migrate @ 6662]
Christian Hammond <chipx86@chipx86.com>
parents: 6107
diff changeset
702 return FALSE;
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
703 #endif
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
704 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
705
6177
231da3dd39cf [gaim-migrate @ 6662]
Christian Hammond <chipx86@chipx86.com>
parents: 6107
diff changeset
706 static gboolean
231da3dd39cf [gaim-migrate @ 6662]
Christian Hammond <chipx86@chipx86.com>
parents: 6107
diff changeset
707 plugin_unload(GaimPlugin *plugin)
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
708 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
709 /* don't save prefs after plugins are gone... */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
710 #ifndef _WIN32
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
711 char buf[1024];
6177
231da3dd39cf [gaim-migrate @ 6662]
Christian Hammond <chipx86@chipx86.com>
parents: 6107
diff changeset
712
6107
86cd2dbe7911 [gaim-migrate @ 6568]
Mark Doliner <markdoliner@pidgin.im>
parents: 6063
diff changeset
713 g_source_remove(watcher);
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
714 close(UI_fd);
6177
231da3dd39cf [gaim-migrate @ 6662]
Christian Hammond <chipx86@chipx86.com>
parents: 6107
diff changeset
715
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 6036
diff changeset
716 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S "gaim_%s.%d",
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
717 g_get_tmp_dir(), g_get_user_name(), gaim_session);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
718
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
719 unlink(buf);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
720
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
721 gaim_debug(GAIM_DEBUG_MISC, "core", "Removed core\n");
5954
58e43cf2dc1f [gaim-migrate @ 6398]
Mark Doliner <markdoliner@pidgin.im>
parents: 5884
diff changeset
722
58e43cf2dc1f [gaim-migrate @ 6398]
Mark Doliner <markdoliner@pidgin.im>
parents: 5884
diff changeset
723 return TRUE;
6177
231da3dd39cf [gaim-migrate @ 6662]
Christian Hammond <chipx86@chipx86.com>
parents: 6107
diff changeset
724 #else
231da3dd39cf [gaim-migrate @ 6662]
Christian Hammond <chipx86@chipx86.com>
parents: 6107
diff changeset
725 return FALSE;
231da3dd39cf [gaim-migrate @ 6662]
Christian Hammond <chipx86@chipx86.com>
parents: 6107
diff changeset
726 #endif
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
727 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
728
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
729 static GaimPluginInfo info =
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
730 {
8749
fb487e9e101a [gaim-migrate @ 9504]
Christian Hammond <chipx86@chipx86.com>
parents: 8704
diff changeset
731 GAIM_PLUGIN_API_VERSION, /**< api_version */
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
732 GAIM_PLUGIN_STANDARD, /**< type */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
733 GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
734 0, /**< flags */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
735 NULL, /**< dependencies */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
736 GAIM_PRIORITY_DEFAULT, /**< priority */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
737
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
738 REMOTE_PLUGIN_ID, /**< id */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
739 N_("Remote Control"), /**< name */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
740 VERSION, /**< version */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
741 /** summary */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
742 N_("Provides remote control for gaim applications."),
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
743 /** description */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
744 N_("Gives Gaim the ability to be remote-controlled through third-party "
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
745 "applications or through the gaim-remote tool."),
7782
391a6e28f729 [gaim-migrate @ 8427]
Christian Hammond <chipx86@chipx86.com>
parents: 7646
diff changeset
746 "Sean Egan <sean.egan@binghamton.edu>",
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6179
diff changeset
747 GAIM_WEBSITE, /**< homepage */
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
748
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
749 plugin_load, /**< load */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
750 plugin_unload, /**< unload */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
751 NULL, /**< destroy */
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
752
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
753 NULL, /**< ui_info */
8993
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
754 NULL, /**< extra_info */
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
755 NULL,
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8749
diff changeset
756 NULL
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
757 };
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
758
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
759 static void
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
760 __init_plugin(GaimPlugin *plugin)
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
761 {
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
762 }
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
763
6177
231da3dd39cf [gaim-migrate @ 6662]
Christian Hammond <chipx86@chipx86.com>
parents: 6107
diff changeset
764 /* This may be horribly wrong. Oh the mayhem! */
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 6036
diff changeset
765 GAIM_INIT_PLUGIN(remote, __init_plugin, info)

mercurial