Sat, 06 Oct 2001 02:25:46 +0000
[gaim-migrate @ 2453]
can load plugins. won't get any indication of it though.
| 2416 | 1 | /* |
| 2 | * gaim | |
| 3 | * | |
| 4 | * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | |
| 5 | * | |
| 6 | * This program is free software; you can redistribute it and/or modify | |
| 7 | * it under the terms of the GNU General Public License as published by | |
| 8 | * the Free Software Foundation; either version 2 of the License, or | |
| 9 | * (at your option) any later version. | |
| 10 | * | |
| 11 | * This program is distributed in the hope that it will be useful, | |
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | * GNU General Public License for more details. | |
| 15 | * | |
| 16 | * You should have received a copy of the GNU General Public License | |
| 17 | * along with this program; if not, write to the Free Software | |
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 19 | * | |
| 20 | */ | |
| 21 | ||
| 22 | #ifdef HAVE_CONFIG_H | |
| 23 | #include "config.h" | |
| 24 | #endif | |
| 25 | ||
| 26 | #include <glib.h> | |
| 27 | #include <stdio.h> | |
| 28 | #include <stdlib.h> | |
| 29 | #include <sys/types.h> | |
| 30 | #include <sys/socket.h> | |
| 31 | #include <sys/stat.h> | |
| 32 | #include <sys/un.h> | |
| 33 | #include <unistd.h> | |
| 34 | #include <errno.h> | |
| 35 | #include <signal.h> | |
| 36 | #include <getopt.h> | |
| 37 | ||
| 38 | #include "gaim.h" | |
| 39 | ||
| 40 | static gint UI_fd = -1; | |
| 41 | GSList *uis = NULL; | |
| 42 | ||
|
2435
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
43 | gint UI_write(struct UI *ui, guchar *data, gint len) |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
44 | { |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
45 | guchar *send = g_new0(guchar, len + 6); |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
46 | gint sent; |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
47 | send[0] = 'f'; |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
48 | send[1] = 1; |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
49 | memcpy(send + 2, &len, sizeof(len)); |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
50 | memcpy(send + 6, data, len); |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
51 | /* we'll let the write silently fail because the read will pick it up as dead */ |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
52 | g_io_channel_write(ui->channel, send, len + 6, &sent); |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
53 | return sent; |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
54 | } |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
55 | |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
56 | void UI_broadcast(guchar *data, gint len) |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
57 | { |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
58 | GSList *u = uis; |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
59 | while (u) { |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
60 | struct UI *ui = u->data; |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
61 | UI_write(ui, data, len); |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
62 | u = u->next; |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
63 | } |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
64 | } |
|
dd274490e14b
[gaim-migrate @ 2448]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2430
diff
changeset
|
65 | |
|
2439
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
66 | static void meta_handler(struct UI *ui, guchar subtype, guchar *data) |
|
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
67 | { |
|
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
68 | switch (subtype) { |
|
2440
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
69 | case CUI_META_LIST: |
|
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
70 | break; |
|
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
71 | case CUI_META_QUIT: |
|
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
72 | while (uis) { |
|
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
73 | ui = uis->data; |
|
2439
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
74 | uis = g_slist_remove(uis, ui); |
|
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
75 | g_io_channel_close(ui->channel); |
|
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
76 | g_source_remove(ui->inpa); |
|
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
77 | g_free(ui); |
|
2440
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
78 | } |
|
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
79 | do_quit(); |
|
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
80 | break; |
|
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
81 | case CUI_META_DETACH: |
|
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
82 | uis = g_slist_remove(uis, ui); |
|
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
83 | g_io_channel_close(ui->channel); |
|
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
84 | g_source_remove(ui->inpa); |
|
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
85 | g_free(ui); |
|
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
86 | break; |
|
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
87 | default: |
|
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
88 | debug_printf("unhandled meta subtype %d\n", subtype); |
|
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
89 | break; |
|
2439
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
90 | } |
|
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
91 | } |
|
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
92 | |
|
2438
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
93 | static gint gaim_recv(GIOChannel *source, void *buf, gint len) |
| 2416 | 94 | { |
| 95 | gint total = 0; | |
| 96 | gint cur; | |
| 97 | ||
| 98 | while (total < len) { | |
| 99 | if (g_io_channel_read(source, buf + total, len - total, &cur) != G_IO_ERROR_NONE) | |
| 100 | return -1; | |
| 101 | if (cur == 0) | |
| 102 | return total; | |
| 103 | total += cur; | |
| 104 | } | |
| 105 | ||
| 106 | return total; | |
| 107 | } | |
| 108 | ||
| 109 | static gboolean UI_readable(GIOChannel *source, GIOCondition cond, gpointer data) | |
| 110 | { | |
| 111 | struct UI *ui = data; | |
| 112 | ||
|
2438
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
113 | guchar type; |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
114 | guchar subtype; |
| 2416 | 115 | guint32 len; |
| 116 | ||
| 117 | guchar *in; | |
| 118 | ||
| 119 | /* no byte order worries! this'll change if we go to TCP */ | |
|
2438
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
120 | if (gaim_recv(source, &type, sizeof(type)) != sizeof(type)) { |
| 2416 | 121 | debug_printf("UI has abandoned us!\n"); |
| 122 | uis = g_slist_remove(uis, ui); | |
| 123 | g_io_channel_close(ui->channel); | |
| 124 | g_source_remove(ui->inpa); | |
| 125 | g_free(ui); | |
| 126 | return FALSE; | |
| 127 | } | |
| 128 | ||
|
2438
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
129 | if (gaim_recv(source, &subtype, sizeof(subtype)) != sizeof(subtype)) { |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
130 | debug_printf("UI has abandoned us!\n"); |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
131 | uis = g_slist_remove(uis, ui); |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
132 | g_io_channel_close(ui->channel); |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
133 | g_source_remove(ui->inpa); |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
134 | g_free(ui); |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
135 | return FALSE; |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
136 | } |
| 2416 | 137 | |
|
2438
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
138 | if (gaim_recv(source, &len, sizeof(len)) != sizeof(len)) { |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
139 | debug_printf("UI has abandoned us!\n"); |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
140 | uis = g_slist_remove(uis, ui); |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
141 | g_io_channel_close(ui->channel); |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
142 | g_source_remove(ui->inpa); |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
143 | g_free(ui); |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
144 | return FALSE; |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
145 | } |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
146 | |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
147 | in = g_new0(guchar, len); |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
148 | if (gaim_recv(source, in, len) != len) { |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
149 | debug_printf("UI has abandoned us!\n"); |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
150 | uis = g_slist_remove(uis, ui); |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
151 | g_io_channel_close(ui->channel); |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
152 | g_source_remove(ui->inpa); |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
153 | g_free(ui); |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
154 | return FALSE; |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
155 | } |
|
fcfcd515eebf
[gaim-migrate @ 2451]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2435
diff
changeset
|
156 | |
| 2416 | 157 | switch (type) { |
|
2439
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
158 | case CUI_TYPE_META: |
|
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
159 | meta_handler(ui, subtype, in); |
|
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
160 | break; |
| 2416 | 161 | case CUI_TYPE_PLUGIN: |
|
2439
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
162 | plugin_handler(ui, subtype, in); |
| 2416 | 163 | break; |
|
2440
4b79f56fcc93
[gaim-migrate @ 2453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2439
diff
changeset
|
164 | /* |
| 2416 | 165 | case CUI_TYPE_USER: |
|
2439
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
166 | user_handler(ui, subtype, in); |
| 2416 | 167 | break; |
| 168 | case CUI_TYPE_CONN: | |
|
2439
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
169 | conn_handler(ui, subtype, in); |
| 2416 | 170 | break; |
| 171 | case CUI_TYPE_BUDDY: | |
|
2439
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
172 | buddy_handler(ui, subtype, in); |
| 2416 | 173 | break; |
| 174 | case CUI_TYPE_MESSAGE: | |
|
2439
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
175 | message_handler(ui, subtype, in); |
| 2416 | 176 | break; |
| 177 | case CUI_TYPE_CHAT: | |
|
2439
3b31bc70b340
[gaim-migrate @ 2452]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2438
diff
changeset
|
178 | chat_handler(ui, subtype, in); |
| 2416 | 179 | break; |
| 180 | */ | |
| 181 | default: | |
| 182 | debug_printf("unhandled type %d\n", type); | |
| 183 | break; | |
| 184 | } | |
| 185 | ||
| 186 | g_free(in); | |
| 187 | return TRUE; | |
| 188 | } | |
| 189 | ||
| 190 | static gboolean socket_readable(GIOChannel *source, GIOCondition cond, gpointer data) | |
| 191 | { | |
| 192 | struct sockaddr_un saddr; | |
| 193 | gint len; | |
| 194 | gint fd; | |
| 195 | ||
| 196 | struct UI *ui; | |
| 197 | ||
| 198 | if ((fd = accept(UI_fd, (struct sockaddr *)&saddr, &len)) == -1) | |
| 199 | return FALSE; | |
| 200 | ||
| 201 | ui = g_new0(struct UI, 1); | |
| 202 | uis = g_slist_append(uis, ui); | |
| 203 | ||
| 204 | ui->channel = g_io_channel_unix_new(fd); | |
| 205 | ui->inpa = g_io_add_watch(ui->channel, G_IO_IN | G_IO_HUP | G_IO_ERR, UI_readable, ui); | |
| 206 | g_io_channel_unref(ui->channel); | |
| 207 | ||
| 208 | debug_printf("got one\n"); | |
| 209 | return TRUE; | |
| 210 | } | |
| 211 | ||
| 212 | static gint open_socket() | |
| 213 | { | |
| 214 | struct sockaddr_un saddr; | |
| 215 | gint fd; | |
| 216 | ||
| 217 | if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) != -1) { | |
| 218 | umask(0177); | |
| 219 | saddr.sun_family = AF_UNIX; | |
| 220 | g_snprintf(saddr.sun_path, 108, "%s/gaim_%s.%d", | |
| 221 | g_get_tmp_dir(), g_get_user_name(), getpid()); | |
| 222 | if (bind(fd, (struct sockaddr *)&saddr, sizeof(saddr)) != -1) | |
| 223 | listen(fd, 100); | |
| 224 | else | |
| 225 | g_log(NULL, G_LOG_LEVEL_CRITICAL, | |
| 226 | "Failed to assign %s to a socket (Error: %s)", | |
| 227 | saddr.sun_path, strerror(errno)); | |
| 228 | } else | |
| 229 | g_log(NULL, G_LOG_LEVEL_CRITICAL, "Unable to open socket: %s", strerror(errno)); | |
| 230 | return fd; | |
| 231 | } | |
| 232 | ||
| 233 | int core_main() | |
| 234 | { | |
| 235 | /* | |
| 236 | GMainLoop *loop; | |
| 237 | */ | |
| 238 | ||
| 239 | GIOChannel *channel; | |
| 240 | ||
| 241 | UI_fd = open_socket(); | |
| 242 | if (UI_fd < 0) | |
| 243 | return 1; | |
| 244 | ||
| 245 | channel = g_io_channel_unix_new(UI_fd); | |
| 246 | g_io_add_watch(channel, G_IO_IN, socket_readable, NULL); | |
| 247 | g_io_channel_unref(channel); | |
| 248 | ||
| 249 | /* | |
| 250 | loop = g_main_new(TRUE); | |
| 251 | g_main_run(loop); | |
| 252 | */ | |
| 253 | ||
| 254 | return 0; | |
| 255 | } | |
| 256 | ||
| 257 | void core_quit() | |
| 258 | { | |
| 259 | char buf[1024]; | |
| 260 | close(UI_fd); | |
| 261 | sprintf(buf, "%s/gaim_%s.%d", g_get_tmp_dir(), g_get_user_name(), getpid()); | |
| 262 | unlink(buf); | |
| 263 | } |