Mercurial > pidgin.yaz
comparison libpurple/ft.c @ 15823:32c366eeeb99
sed -ie 's/gaim/purple/g'
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Mon, 19 Mar 2007 07:01:17 +0000 |
parents | 35fa1d1c4ef2 |
children | 08db93bbd798 |
comparison
equal
deleted
inserted
replaced
15822:84b0f9b23ede | 15823:32c366eeeb99 |
---|---|
1 /** | 1 /** |
2 * @file ft.c File Transfer API | 2 * @file ft.c File Transfer API |
3 * | 3 * |
4 * gaim | 4 * purple |
5 * | 5 * |
6 * Gaim is the legal property of its developers, whose names are too numerous | 6 * Purple is the legal property of its developers, whose names are too numerous |
7 * to list here. Please refer to the COPYRIGHT file distributed with this | 7 * to list here. Please refer to the COPYRIGHT file distributed with this |
8 * source distribution. | 8 * source distribution. |
9 * | 9 * |
10 * This program is free software; you can redistribute it and/or modify | 10 * This program is free software; you can redistribute it and/or modify |
11 * it under the terms of the GNU General Public License as published by | 11 * it under the terms of the GNU General Public License as published by |
32 #include "util.h" | 32 #include "util.h" |
33 | 33 |
34 #define FT_INITIAL_BUFFER_SIZE 4096 | 34 #define FT_INITIAL_BUFFER_SIZE 4096 |
35 #define FT_MAX_BUFFER_SIZE 65535 | 35 #define FT_MAX_BUFFER_SIZE 65535 |
36 | 36 |
37 static GaimXferUiOps *xfer_ui_ops = NULL; | 37 static PurpleXferUiOps *xfer_ui_ops = NULL; |
38 static GList *xfers; | 38 static GList *xfers; |
39 | 39 |
40 static int gaim_xfer_choose_file(GaimXfer *xfer); | 40 static int purple_xfer_choose_file(PurpleXfer *xfer); |
41 | 41 |
42 GList * | 42 GList * |
43 gaim_xfers_get_all() | 43 purple_xfers_get_all() |
44 { | 44 { |
45 return xfers; | 45 return xfers; |
46 } | 46 } |
47 | 47 |
48 GaimXfer * | 48 PurpleXfer * |
49 gaim_xfer_new(GaimAccount *account, GaimXferType type, const char *who) | 49 purple_xfer_new(PurpleAccount *account, PurpleXferType type, const char *who) |
50 { | 50 { |
51 GaimXfer *xfer; | 51 PurpleXfer *xfer; |
52 GaimXferUiOps *ui_ops; | 52 PurpleXferUiOps *ui_ops; |
53 | 53 |
54 g_return_val_if_fail(type != GAIM_XFER_UNKNOWN, NULL); | 54 g_return_val_if_fail(type != PURPLE_XFER_UNKNOWN, NULL); |
55 g_return_val_if_fail(account != NULL, NULL); | 55 g_return_val_if_fail(account != NULL, NULL); |
56 g_return_val_if_fail(who != NULL, NULL); | 56 g_return_val_if_fail(who != NULL, NULL); |
57 | 57 |
58 xfer = g_new0(GaimXfer, 1); | 58 xfer = g_new0(PurpleXfer, 1); |
59 | 59 |
60 xfer->ref = 1; | 60 xfer->ref = 1; |
61 xfer->type = type; | 61 xfer->type = type; |
62 xfer->account = account; | 62 xfer->account = account; |
63 xfer->who = g_strdup(who); | 63 xfer->who = g_strdup(who); |
64 xfer->ui_ops = gaim_xfers_get_ui_ops(); | 64 xfer->ui_ops = purple_xfers_get_ui_ops(); |
65 xfer->message = NULL; | 65 xfer->message = NULL; |
66 xfer->current_buffer_size = FT_INITIAL_BUFFER_SIZE; | 66 xfer->current_buffer_size = FT_INITIAL_BUFFER_SIZE; |
67 | 67 |
68 ui_ops = gaim_xfer_get_ui_ops(xfer); | 68 ui_ops = purple_xfer_get_ui_ops(xfer); |
69 | 69 |
70 if (ui_ops != NULL && ui_ops->new_xfer != NULL) | 70 if (ui_ops != NULL && ui_ops->new_xfer != NULL) |
71 ui_ops->new_xfer(xfer); | 71 ui_ops->new_xfer(xfer); |
72 | 72 |
73 xfers = g_list_prepend(xfers, xfer); | 73 xfers = g_list_prepend(xfers, xfer); |
74 return xfer; | 74 return xfer; |
75 } | 75 } |
76 | 76 |
77 static void | 77 static void |
78 gaim_xfer_destroy(GaimXfer *xfer) | 78 purple_xfer_destroy(PurpleXfer *xfer) |
79 { | 79 { |
80 GaimXferUiOps *ui_ops; | 80 PurpleXferUiOps *ui_ops; |
81 | 81 |
82 g_return_if_fail(xfer != NULL); | 82 g_return_if_fail(xfer != NULL); |
83 | 83 |
84 /* Close the file browser, if it's open */ | 84 /* Close the file browser, if it's open */ |
85 gaim_request_close_with_handle(xfer); | 85 purple_request_close_with_handle(xfer); |
86 | 86 |
87 if (gaim_xfer_get_status(xfer) == GAIM_XFER_STATUS_STARTED) | 87 if (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_STARTED) |
88 gaim_xfer_cancel_local(xfer); | 88 purple_xfer_cancel_local(xfer); |
89 | 89 |
90 ui_ops = gaim_xfer_get_ui_ops(xfer); | 90 ui_ops = purple_xfer_get_ui_ops(xfer); |
91 | 91 |
92 if (ui_ops != NULL && ui_ops->destroy != NULL) | 92 if (ui_ops != NULL && ui_ops->destroy != NULL) |
93 ui_ops->destroy(xfer); | 93 ui_ops->destroy(xfer); |
94 | 94 |
95 g_free(xfer->who); | 95 g_free(xfer->who); |
100 g_free(xfer); | 100 g_free(xfer); |
101 xfers = g_list_remove(xfers, xfer); | 101 xfers = g_list_remove(xfers, xfer); |
102 } | 102 } |
103 | 103 |
104 void | 104 void |
105 gaim_xfer_ref(GaimXfer *xfer) | 105 purple_xfer_ref(PurpleXfer *xfer) |
106 { | 106 { |
107 g_return_if_fail(xfer != NULL); | 107 g_return_if_fail(xfer != NULL); |
108 | 108 |
109 xfer->ref++; | 109 xfer->ref++; |
110 } | 110 } |
111 | 111 |
112 void | 112 void |
113 gaim_xfer_unref(GaimXfer *xfer) | 113 purple_xfer_unref(PurpleXfer *xfer) |
114 { | 114 { |
115 g_return_if_fail(xfer != NULL); | 115 g_return_if_fail(xfer != NULL); |
116 g_return_if_fail(xfer->ref > 0); | 116 g_return_if_fail(xfer->ref > 0); |
117 | 117 |
118 xfer->ref--; | 118 xfer->ref--; |
119 | 119 |
120 if (xfer->ref == 0) | 120 if (xfer->ref == 0) |
121 gaim_xfer_destroy(xfer); | 121 purple_xfer_destroy(xfer); |
122 } | 122 } |
123 | 123 |
124 static void | 124 static void |
125 gaim_xfer_set_status(GaimXfer *xfer, GaimXferStatusType status) | 125 purple_xfer_set_status(PurpleXfer *xfer, PurpleXferStatusType status) |
126 { | 126 { |
127 g_return_if_fail(xfer != NULL); | 127 g_return_if_fail(xfer != NULL); |
128 | 128 |
129 if(xfer->type == GAIM_XFER_SEND) { | 129 if(xfer->type == PURPLE_XFER_SEND) { |
130 switch(status) { | 130 switch(status) { |
131 case GAIM_XFER_STATUS_ACCEPTED: | 131 case PURPLE_XFER_STATUS_ACCEPTED: |
132 gaim_signal_emit(gaim_xfers_get_handle(), "file-send-accept", xfer); | 132 purple_signal_emit(purple_xfers_get_handle(), "file-send-accept", xfer); |
133 break; | 133 break; |
134 case GAIM_XFER_STATUS_STARTED: | 134 case PURPLE_XFER_STATUS_STARTED: |
135 gaim_signal_emit(gaim_xfers_get_handle(), "file-send-start", xfer); | 135 purple_signal_emit(purple_xfers_get_handle(), "file-send-start", xfer); |
136 break; | 136 break; |
137 case GAIM_XFER_STATUS_DONE: | 137 case PURPLE_XFER_STATUS_DONE: |
138 gaim_signal_emit(gaim_xfers_get_handle(), "file-send-complete", xfer); | 138 purple_signal_emit(purple_xfers_get_handle(), "file-send-complete", xfer); |
139 break; | 139 break; |
140 case GAIM_XFER_STATUS_CANCEL_LOCAL: | 140 case PURPLE_XFER_STATUS_CANCEL_LOCAL: |
141 case GAIM_XFER_STATUS_CANCEL_REMOTE: | 141 case PURPLE_XFER_STATUS_CANCEL_REMOTE: |
142 gaim_signal_emit(gaim_xfers_get_handle(), "file-send-cancel", xfer); | 142 purple_signal_emit(purple_xfers_get_handle(), "file-send-cancel", xfer); |
143 break; | 143 break; |
144 default: | 144 default: |
145 break; | 145 break; |
146 } | 146 } |
147 } else if(xfer->type == GAIM_XFER_RECEIVE) { | 147 } else if(xfer->type == PURPLE_XFER_RECEIVE) { |
148 switch(status) { | 148 switch(status) { |
149 case GAIM_XFER_STATUS_ACCEPTED: | 149 case PURPLE_XFER_STATUS_ACCEPTED: |
150 gaim_signal_emit(gaim_xfers_get_handle(), "file-recv-accept", xfer); | 150 purple_signal_emit(purple_xfers_get_handle(), "file-recv-accept", xfer); |
151 break; | 151 break; |
152 case GAIM_XFER_STATUS_STARTED: | 152 case PURPLE_XFER_STATUS_STARTED: |
153 gaim_signal_emit(gaim_xfers_get_handle(), "file-recv-start", xfer); | 153 purple_signal_emit(purple_xfers_get_handle(), "file-recv-start", xfer); |
154 break; | 154 break; |
155 case GAIM_XFER_STATUS_DONE: | 155 case PURPLE_XFER_STATUS_DONE: |
156 gaim_signal_emit(gaim_xfers_get_handle(), "file-recv-complete", xfer); | 156 purple_signal_emit(purple_xfers_get_handle(), "file-recv-complete", xfer); |
157 break; | 157 break; |
158 case GAIM_XFER_STATUS_CANCEL_LOCAL: | 158 case PURPLE_XFER_STATUS_CANCEL_LOCAL: |
159 case GAIM_XFER_STATUS_CANCEL_REMOTE: | 159 case PURPLE_XFER_STATUS_CANCEL_REMOTE: |
160 gaim_signal_emit(gaim_xfers_get_handle(), "file-recv-cancel", xfer); | 160 purple_signal_emit(purple_xfers_get_handle(), "file-recv-cancel", xfer); |
161 break; | 161 break; |
162 default: | 162 default: |
163 break; | 163 break; |
164 } | 164 } |
165 } | 165 } |
166 | 166 |
167 xfer->status = status; | 167 xfer->status = status; |
168 } | 168 } |
169 | 169 |
170 void gaim_xfer_conversation_write(GaimXfer *xfer, char *message, gboolean is_error) | 170 void purple_xfer_conversation_write(PurpleXfer *xfer, char *message, gboolean is_error) |
171 { | 171 { |
172 GaimConversation *conv = NULL; | 172 PurpleConversation *conv = NULL; |
173 GaimMessageFlags flags = GAIM_MESSAGE_SYSTEM; | 173 PurpleMessageFlags flags = PURPLE_MESSAGE_SYSTEM; |
174 char *escaped; | 174 char *escaped; |
175 | 175 |
176 g_return_if_fail(xfer != NULL); | 176 g_return_if_fail(xfer != NULL); |
177 g_return_if_fail(message != NULL); | 177 g_return_if_fail(message != NULL); |
178 | 178 |
179 conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, xfer->who, | 179 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, xfer->who, |
180 gaim_xfer_get_account(xfer)); | 180 purple_xfer_get_account(xfer)); |
181 | 181 |
182 if (conv == NULL) | 182 if (conv == NULL) |
183 return; | 183 return; |
184 | 184 |
185 escaped = g_markup_escape_text(message, -1); | 185 escaped = g_markup_escape_text(message, -1); |
186 | 186 |
187 if (is_error) | 187 if (is_error) |
188 flags = GAIM_MESSAGE_ERROR; | 188 flags = PURPLE_MESSAGE_ERROR; |
189 | 189 |
190 gaim_conversation_write(conv, NULL, escaped, flags, time(NULL)); | 190 purple_conversation_write(conv, NULL, escaped, flags, time(NULL)); |
191 g_free(escaped); | 191 g_free(escaped); |
192 } | 192 } |
193 | 193 |
194 static void gaim_xfer_show_file_error(GaimXfer *xfer, const char *filename) | 194 static void purple_xfer_show_file_error(PurpleXfer *xfer, const char *filename) |
195 { | 195 { |
196 int err = errno; | 196 int err = errno; |
197 gchar *msg = NULL, *utf8; | 197 gchar *msg = NULL, *utf8; |
198 GaimXferType xfer_type = gaim_xfer_get_type(xfer); | 198 PurpleXferType xfer_type = purple_xfer_get_type(xfer); |
199 GaimAccount *account = gaim_xfer_get_account(xfer); | 199 PurpleAccount *account = purple_xfer_get_account(xfer); |
200 | 200 |
201 utf8 = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); | 201 utf8 = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); |
202 switch(xfer_type) { | 202 switch(xfer_type) { |
203 case GAIM_XFER_SEND: | 203 case PURPLE_XFER_SEND: |
204 msg = g_strdup_printf(_("Error reading %s: \n%s.\n"), | 204 msg = g_strdup_printf(_("Error reading %s: \n%s.\n"), |
205 utf8, strerror(err)); | 205 utf8, strerror(err)); |
206 break; | 206 break; |
207 case GAIM_XFER_RECEIVE: | 207 case PURPLE_XFER_RECEIVE: |
208 msg = g_strdup_printf(_("Error writing %s: \n%s.\n"), | 208 msg = g_strdup_printf(_("Error writing %s: \n%s.\n"), |
209 utf8, strerror(err)); | 209 utf8, strerror(err)); |
210 break; | 210 break; |
211 default: | 211 default: |
212 msg = g_strdup_printf(_("Error accessing %s: \n%s.\n"), | 212 msg = g_strdup_printf(_("Error accessing %s: \n%s.\n"), |
213 utf8, strerror(err)); | 213 utf8, strerror(err)); |
214 break; | 214 break; |
215 } | 215 } |
216 g_free(utf8); | 216 g_free(utf8); |
217 | 217 |
218 gaim_xfer_conversation_write(xfer, msg, TRUE); | 218 purple_xfer_conversation_write(xfer, msg, TRUE); |
219 gaim_xfer_error(xfer_type, account, xfer->who, msg); | 219 purple_xfer_error(xfer_type, account, xfer->who, msg); |
220 g_free(msg); | 220 g_free(msg); |
221 } | 221 } |
222 | 222 |
223 static void | 223 static void |
224 gaim_xfer_choose_file_ok_cb(void *user_data, const char *filename) | 224 purple_xfer_choose_file_ok_cb(void *user_data, const char *filename) |
225 { | 225 { |
226 GaimXfer *xfer; | 226 PurpleXfer *xfer; |
227 struct stat st; | 227 struct stat st; |
228 gchar *dir; | 228 gchar *dir; |
229 | 229 |
230 xfer = (GaimXfer *)user_data; | 230 xfer = (PurpleXfer *)user_data; |
231 | 231 |
232 if (g_stat(filename, &st) != 0) { | 232 if (g_stat(filename, &st) != 0) { |
233 /* File not found. */ | 233 /* File not found. */ |
234 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) { | 234 if (purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE) { |
235 #ifndef _WIN32 | 235 #ifndef _WIN32 |
236 int mode = W_OK; | 236 int mode = W_OK; |
237 #else | 237 #else |
238 int mode = F_OK; | 238 int mode = F_OK; |
239 #endif | 239 #endif |
240 dir = g_path_get_dirname(filename); | 240 dir = g_path_get_dirname(filename); |
241 | 241 |
242 if (g_access(dir, mode) == 0) { | 242 if (g_access(dir, mode) == 0) { |
243 gaim_xfer_request_accepted(xfer, filename); | 243 purple_xfer_request_accepted(xfer, filename); |
244 } else { | 244 } else { |
245 gaim_xfer_ref(xfer); | 245 purple_xfer_ref(xfer); |
246 gaim_notify_message( | 246 purple_notify_message( |
247 NULL, GAIM_NOTIFY_MSG_ERROR, NULL, | 247 NULL, PURPLE_NOTIFY_MSG_ERROR, NULL, |
248 _("Directory is not writable."), NULL, | 248 _("Directory is not writable."), NULL, |
249 (GaimNotifyCloseCallback)gaim_xfer_choose_file, xfer); | 249 (PurpleNotifyCloseCallback)purple_xfer_choose_file, xfer); |
250 } | 250 } |
251 | 251 |
252 g_free(dir); | 252 g_free(dir); |
253 } | 253 } |
254 else { | 254 else { |
255 gaim_xfer_show_file_error(xfer, filename); | 255 purple_xfer_show_file_error(xfer, filename); |
256 gaim_xfer_request_denied(xfer); | 256 purple_xfer_request_denied(xfer); |
257 } | 257 } |
258 } | 258 } |
259 else if ((gaim_xfer_get_type(xfer) == GAIM_XFER_SEND) && | 259 else if ((purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) && |
260 (st.st_size == 0)) { | 260 (st.st_size == 0)) { |
261 | 261 |
262 gaim_notify_error(NULL, NULL, | 262 purple_notify_error(NULL, NULL, |
263 _("Cannot send a file of 0 bytes."), NULL); | 263 _("Cannot send a file of 0 bytes."), NULL); |
264 | 264 |
265 gaim_xfer_request_denied(xfer); | 265 purple_xfer_request_denied(xfer); |
266 } | 266 } |
267 else if ((gaim_xfer_get_type(xfer) == GAIM_XFER_SEND) && | 267 else if ((purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) && |
268 S_ISDIR(st.st_mode)) { | 268 S_ISDIR(st.st_mode)) { |
269 /* | 269 /* |
270 * XXX - Sending a directory should be valid for some protocols. | 270 * XXX - Sending a directory should be valid for some protocols. |
271 */ | 271 */ |
272 gaim_notify_error(NULL, NULL, | 272 purple_notify_error(NULL, NULL, |
273 _("Cannot send a directory."), NULL); | 273 _("Cannot send a directory."), NULL); |
274 | 274 |
275 gaim_xfer_request_denied(xfer); | 275 purple_xfer_request_denied(xfer); |
276 } | 276 } |
277 else if ((gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) && | 277 else if ((purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE) && |
278 S_ISDIR(st.st_mode)) { | 278 S_ISDIR(st.st_mode)) { |
279 char *msg, *utf8; | 279 char *msg, *utf8; |
280 utf8 = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); | 280 utf8 = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); |
281 msg = g_strdup_printf( | 281 msg = g_strdup_printf( |
282 _("%s is not a regular file. Cowardly refusing to overwrite it.\n"), utf8); | 282 _("%s is not a regular file. Cowardly refusing to overwrite it.\n"), utf8); |
283 g_free(utf8); | 283 g_free(utf8); |
284 gaim_notify_error(NULL, NULL, msg, NULL); | 284 purple_notify_error(NULL, NULL, msg, NULL); |
285 g_free(msg); | 285 g_free(msg); |
286 gaim_xfer_request_denied(xfer); | 286 purple_xfer_request_denied(xfer); |
287 } | 287 } |
288 else { | 288 else { |
289 gaim_xfer_request_accepted(xfer, filename); | 289 purple_xfer_request_accepted(xfer, filename); |
290 } | 290 } |
291 | 291 |
292 gaim_xfer_unref(xfer); | 292 purple_xfer_unref(xfer); |
293 } | 293 } |
294 | 294 |
295 static void | 295 static void |
296 gaim_xfer_choose_file_cancel_cb(void *user_data, const char *filename) | 296 purple_xfer_choose_file_cancel_cb(void *user_data, const char *filename) |
297 { | 297 { |
298 GaimXfer *xfer = (GaimXfer *)user_data; | 298 PurpleXfer *xfer = (PurpleXfer *)user_data; |
299 | 299 |
300 gaim_xfer_set_status(xfer, GAIM_XFER_STATUS_CANCEL_LOCAL); | 300 purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_CANCEL_LOCAL); |
301 gaim_xfer_request_denied(xfer); | 301 purple_xfer_request_denied(xfer); |
302 } | 302 } |
303 | 303 |
304 static int | 304 static int |
305 gaim_xfer_choose_file(GaimXfer *xfer) | 305 purple_xfer_choose_file(PurpleXfer *xfer) |
306 { | 306 { |
307 gaim_request_file(xfer, NULL, gaim_xfer_get_filename(xfer), | 307 purple_request_file(xfer, NULL, purple_xfer_get_filename(xfer), |
308 (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE), | 308 (purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE), |
309 G_CALLBACK(gaim_xfer_choose_file_ok_cb), | 309 G_CALLBACK(purple_xfer_choose_file_ok_cb), |
310 G_CALLBACK(gaim_xfer_choose_file_cancel_cb), xfer); | 310 G_CALLBACK(purple_xfer_choose_file_cancel_cb), xfer); |
311 | 311 |
312 return 0; | 312 return 0; |
313 } | 313 } |
314 | 314 |
315 static int | 315 static int |
316 cancel_recv_cb(GaimXfer *xfer) | 316 cancel_recv_cb(PurpleXfer *xfer) |
317 { | 317 { |
318 gaim_xfer_set_status(xfer, GAIM_XFER_STATUS_CANCEL_LOCAL); | 318 purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_CANCEL_LOCAL); |
319 gaim_xfer_request_denied(xfer); | 319 purple_xfer_request_denied(xfer); |
320 gaim_xfer_unref(xfer); | 320 purple_xfer_unref(xfer); |
321 | 321 |
322 return 0; | 322 return 0; |
323 } | 323 } |
324 | 324 |
325 static void | 325 static void |
326 gaim_xfer_ask_recv(GaimXfer *xfer) | 326 purple_xfer_ask_recv(PurpleXfer *xfer) |
327 { | 327 { |
328 char *buf, *size_buf; | 328 char *buf, *size_buf; |
329 size_t size; | 329 size_t size; |
330 | 330 |
331 /* If we have already accepted the request, ask the destination file | 331 /* If we have already accepted the request, ask the destination file |
332 name directly */ | 332 name directly */ |
333 if (gaim_xfer_get_status(xfer) != GAIM_XFER_STATUS_ACCEPTED) { | 333 if (purple_xfer_get_status(xfer) != PURPLE_XFER_STATUS_ACCEPTED) { |
334 GaimBuddy *buddy = gaim_find_buddy(xfer->account, xfer->who); | 334 PurpleBuddy *buddy = purple_find_buddy(xfer->account, xfer->who); |
335 | 335 |
336 if (gaim_xfer_get_filename(xfer) != NULL) | 336 if (purple_xfer_get_filename(xfer) != NULL) |
337 { | 337 { |
338 size = gaim_xfer_get_size(xfer); | 338 size = purple_xfer_get_size(xfer); |
339 size_buf = gaim_str_size_to_units(size); | 339 size_buf = purple_str_size_to_units(size); |
340 buf = g_strdup_printf(_("%s wants to send you %s (%s)"), | 340 buf = g_strdup_printf(_("%s wants to send you %s (%s)"), |
341 buddy ? gaim_buddy_get_alias(buddy) : xfer->who, | 341 buddy ? purple_buddy_get_alias(buddy) : xfer->who, |
342 gaim_xfer_get_filename(xfer), size_buf); | 342 purple_xfer_get_filename(xfer), size_buf); |
343 g_free(size_buf); | 343 g_free(size_buf); |
344 } | 344 } |
345 else | 345 else |
346 { | 346 { |
347 buf = g_strdup_printf(_("%s wants to send you a file"), | 347 buf = g_strdup_printf(_("%s wants to send you a file"), |
348 buddy ? gaim_buddy_get_alias(buddy) : xfer->who); | 348 buddy ? purple_buddy_get_alias(buddy) : xfer->who); |
349 } | 349 } |
350 | 350 |
351 if (xfer->message != NULL) | 351 if (xfer->message != NULL) |
352 serv_got_im(gaim_account_get_connection(xfer->account), | 352 serv_got_im(purple_account_get_connection(xfer->account), |
353 xfer->who, xfer->message, 0, time(NULL)); | 353 xfer->who, xfer->message, 0, time(NULL)); |
354 | 354 |
355 gaim_request_accept_cancel(xfer, NULL, buf, NULL, | 355 purple_request_accept_cancel(xfer, NULL, buf, NULL, |
356 GAIM_DEFAULT_ACTION_NONE, xfer, | 356 PURPLE_DEFAULT_ACTION_NONE, xfer, |
357 G_CALLBACK(gaim_xfer_choose_file), | 357 G_CALLBACK(purple_xfer_choose_file), |
358 G_CALLBACK(cancel_recv_cb)); | 358 G_CALLBACK(cancel_recv_cb)); |
359 | 359 |
360 g_free(buf); | 360 g_free(buf); |
361 } else | 361 } else |
362 gaim_xfer_choose_file(xfer); | 362 purple_xfer_choose_file(xfer); |
363 } | 363 } |
364 | 364 |
365 static int | 365 static int |
366 ask_accept_ok(GaimXfer *xfer) | 366 ask_accept_ok(PurpleXfer *xfer) |
367 { | 367 { |
368 gaim_xfer_request_accepted(xfer, NULL); | 368 purple_xfer_request_accepted(xfer, NULL); |
369 | 369 |
370 return 0; | 370 return 0; |
371 } | 371 } |
372 | 372 |
373 static int | 373 static int |
374 ask_accept_cancel(GaimXfer *xfer) | 374 ask_accept_cancel(PurpleXfer *xfer) |
375 { | 375 { |
376 gaim_xfer_request_denied(xfer); | 376 purple_xfer_request_denied(xfer); |
377 gaim_xfer_unref(xfer); | 377 purple_xfer_unref(xfer); |
378 | 378 |
379 return 0; | 379 return 0; |
380 } | 380 } |
381 | 381 |
382 static void | 382 static void |
383 gaim_xfer_ask_accept(GaimXfer *xfer) | 383 purple_xfer_ask_accept(PurpleXfer *xfer) |
384 { | 384 { |
385 char *buf, *buf2 = NULL; | 385 char *buf, *buf2 = NULL; |
386 GaimBuddy *buddy = gaim_find_buddy(xfer->account, xfer->who); | 386 PurpleBuddy *buddy = purple_find_buddy(xfer->account, xfer->who); |
387 | 387 |
388 buf = g_strdup_printf(_("Accept file transfer request from %s?"), | 388 buf = g_strdup_printf(_("Accept file transfer request from %s?"), |
389 buddy ? gaim_buddy_get_alias(buddy) : xfer->who); | 389 buddy ? purple_buddy_get_alias(buddy) : xfer->who); |
390 if (gaim_xfer_get_remote_ip(xfer) && | 390 if (purple_xfer_get_remote_ip(xfer) && |
391 gaim_xfer_get_remote_port(xfer)) | 391 purple_xfer_get_remote_port(xfer)) |
392 buf2 = g_strdup_printf(_("A file is available for download from:\n" | 392 buf2 = g_strdup_printf(_("A file is available for download from:\n" |
393 "Remote host: %s\nRemote port: %d"), | 393 "Remote host: %s\nRemote port: %d"), |
394 gaim_xfer_get_remote_ip(xfer), | 394 purple_xfer_get_remote_ip(xfer), |
395 gaim_xfer_get_remote_port(xfer)); | 395 purple_xfer_get_remote_port(xfer)); |
396 gaim_request_accept_cancel(xfer, NULL, buf, buf2, | 396 purple_request_accept_cancel(xfer, NULL, buf, buf2, |
397 GAIM_DEFAULT_ACTION_NONE, xfer, | 397 PURPLE_DEFAULT_ACTION_NONE, xfer, |
398 G_CALLBACK(ask_accept_ok), | 398 G_CALLBACK(ask_accept_ok), |
399 G_CALLBACK(ask_accept_cancel)); | 399 G_CALLBACK(ask_accept_cancel)); |
400 g_free(buf); | 400 g_free(buf); |
401 g_free(buf2); | 401 g_free(buf2); |
402 } | 402 } |
403 | 403 |
404 void | 404 void |
405 gaim_xfer_request(GaimXfer *xfer) | 405 purple_xfer_request(PurpleXfer *xfer) |
406 { | 406 { |
407 g_return_if_fail(xfer != NULL); | 407 g_return_if_fail(xfer != NULL); |
408 g_return_if_fail(xfer->ops.init != NULL); | 408 g_return_if_fail(xfer->ops.init != NULL); |
409 | 409 |
410 gaim_xfer_ref(xfer); | 410 purple_xfer_ref(xfer); |
411 | 411 |
412 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) | 412 if (purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE) |
413 { | 413 { |
414 gaim_signal_emit(gaim_xfers_get_handle(), "file-recv-request", xfer); | 414 purple_signal_emit(purple_xfers_get_handle(), "file-recv-request", xfer); |
415 if (gaim_xfer_get_status(xfer) == GAIM_XFER_STATUS_CANCEL_LOCAL) | 415 if (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_CANCEL_LOCAL) |
416 { | 416 { |
417 /* The file-transfer was cancelled by a plugin */ | 417 /* The file-transfer was cancelled by a plugin */ |
418 gaim_xfer_cancel_local(xfer); | 418 purple_xfer_cancel_local(xfer); |
419 } | 419 } |
420 else if (gaim_xfer_get_filename(xfer) || | 420 else if (purple_xfer_get_filename(xfer) || |
421 gaim_xfer_get_status(xfer) == GAIM_XFER_STATUS_ACCEPTED) | 421 purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_ACCEPTED) |
422 { | 422 { |
423 gchar* message = NULL; | 423 gchar* message = NULL; |
424 GaimBuddy *buddy = gaim_find_buddy(xfer->account, xfer->who); | 424 PurpleBuddy *buddy = purple_find_buddy(xfer->account, xfer->who); |
425 message = g_strdup_printf(_("%s is offering to send file %s"), | 425 message = g_strdup_printf(_("%s is offering to send file %s"), |
426 buddy ? gaim_buddy_get_alias(buddy) : xfer->who, gaim_xfer_get_filename(xfer)); | 426 buddy ? purple_buddy_get_alias(buddy) : xfer->who, purple_xfer_get_filename(xfer)); |
427 gaim_xfer_conversation_write(xfer, message, FALSE); | 427 purple_xfer_conversation_write(xfer, message, FALSE); |
428 g_free(message); | 428 g_free(message); |
429 /* Ask for a filename to save to if it's not already given by a plugin */ | 429 /* Ask for a filename to save to if it's not already given by a plugin */ |
430 if (xfer->local_filename == NULL) | 430 if (xfer->local_filename == NULL) |
431 gaim_xfer_ask_recv(xfer); | 431 purple_xfer_ask_recv(xfer); |
432 } | 432 } |
433 else | 433 else |
434 { | 434 { |
435 gaim_xfer_ask_accept(xfer); | 435 purple_xfer_ask_accept(xfer); |
436 } | 436 } |
437 } | 437 } |
438 else | 438 else |
439 { | 439 { |
440 gaim_xfer_choose_file(xfer); | 440 purple_xfer_choose_file(xfer); |
441 } | 441 } |
442 } | 442 } |
443 | 443 |
444 void | 444 void |
445 gaim_xfer_request_accepted(GaimXfer *xfer, const char *filename) | 445 purple_xfer_request_accepted(PurpleXfer *xfer, const char *filename) |
446 { | 446 { |
447 GaimXferType type; | 447 PurpleXferType type; |
448 struct stat st; | 448 struct stat st; |
449 char *msg, *utf8; | 449 char *msg, *utf8; |
450 GaimAccount *account; | 450 PurpleAccount *account; |
451 GaimBuddy *buddy; | 451 PurpleBuddy *buddy; |
452 | 452 |
453 if (xfer == NULL) | 453 if (xfer == NULL) |
454 return; | 454 return; |
455 | 455 |
456 type = gaim_xfer_get_type(xfer); | 456 type = purple_xfer_get_type(xfer); |
457 account = gaim_xfer_get_account(xfer); | 457 account = purple_xfer_get_account(xfer); |
458 | 458 |
459 if (!filename && type == GAIM_XFER_RECEIVE) { | 459 if (!filename && type == PURPLE_XFER_RECEIVE) { |
460 xfer->status = GAIM_XFER_STATUS_ACCEPTED; | 460 xfer->status = PURPLE_XFER_STATUS_ACCEPTED; |
461 xfer->ops.init(xfer); | 461 xfer->ops.init(xfer); |
462 return; | 462 return; |
463 } | 463 } |
464 | 464 |
465 buddy = gaim_find_buddy(account, xfer->who); | 465 buddy = purple_find_buddy(account, xfer->who); |
466 | 466 |
467 if (type == GAIM_XFER_SEND) { | 467 if (type == PURPLE_XFER_SEND) { |
468 /* Sending a file */ | 468 /* Sending a file */ |
469 /* Check the filename. */ | 469 /* Check the filename. */ |
470 #ifdef _WIN32 | 470 #ifdef _WIN32 |
471 if (g_strrstr(filename, "../") || g_strrstr(filename, "..\\")) { | 471 if (g_strrstr(filename, "../") || g_strrstr(filename, "..\\")) { |
472 #else | 472 #else |
473 if (g_strrstr(filename, "../")) { | 473 if (g_strrstr(filename, "../")) { |
474 #endif | 474 #endif |
475 char *utf8 = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); | 475 char *utf8 = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); |
476 | 476 |
477 msg = g_strdup_printf(_("%s is not a valid filename.\n"), utf8); | 477 msg = g_strdup_printf(_("%s is not a valid filename.\n"), utf8); |
478 gaim_xfer_error(type, account, xfer->who, msg); | 478 purple_xfer_error(type, account, xfer->who, msg); |
479 g_free(utf8); | 479 g_free(utf8); |
480 g_free(msg); | 480 g_free(msg); |
481 | 481 |
482 gaim_xfer_unref(xfer); | 482 purple_xfer_unref(xfer); |
483 return; | 483 return; |
484 } | 484 } |
485 | 485 |
486 if (g_stat(filename, &st) == -1) { | 486 if (g_stat(filename, &st) == -1) { |
487 gaim_xfer_show_file_error(xfer, filename); | 487 purple_xfer_show_file_error(xfer, filename); |
488 gaim_xfer_unref(xfer); | 488 purple_xfer_unref(xfer); |
489 return; | 489 return; |
490 } | 490 } |
491 | 491 |
492 gaim_xfer_set_local_filename(xfer, filename); | 492 purple_xfer_set_local_filename(xfer, filename); |
493 gaim_xfer_set_size(xfer, st.st_size); | 493 purple_xfer_set_size(xfer, st.st_size); |
494 | 494 |
495 utf8 = g_filename_to_utf8(g_basename(filename), -1, NULL, NULL, NULL); | 495 utf8 = g_filename_to_utf8(g_basename(filename), -1, NULL, NULL, NULL); |
496 gaim_xfer_set_filename(xfer, utf8); | 496 purple_xfer_set_filename(xfer, utf8); |
497 | 497 |
498 msg = g_strdup_printf(_("Offering to send %s to %s"), | 498 msg = g_strdup_printf(_("Offering to send %s to %s"), |
499 utf8, buddy ? gaim_buddy_get_alias(buddy) : xfer->who); | 499 utf8, buddy ? purple_buddy_get_alias(buddy) : xfer->who); |
500 g_free(utf8); | 500 g_free(utf8); |
501 | 501 |
502 gaim_xfer_conversation_write(xfer, msg, FALSE); | 502 purple_xfer_conversation_write(xfer, msg, FALSE); |
503 g_free(msg); | 503 g_free(msg); |
504 } | 504 } |
505 else { | 505 else { |
506 /* Receiving a file */ | 506 /* Receiving a file */ |
507 xfer->status = GAIM_XFER_STATUS_ACCEPTED; | 507 xfer->status = PURPLE_XFER_STATUS_ACCEPTED; |
508 gaim_xfer_set_local_filename(xfer, filename); | 508 purple_xfer_set_local_filename(xfer, filename); |
509 | 509 |
510 msg = g_strdup_printf(_("Starting transfer of %s from %s"), | 510 msg = g_strdup_printf(_("Starting transfer of %s from %s"), |
511 xfer->filename, buddy ? gaim_buddy_get_alias(buddy) : xfer->who); | 511 xfer->filename, buddy ? purple_buddy_get_alias(buddy) : xfer->who); |
512 gaim_xfer_conversation_write(xfer, msg, FALSE); | 512 purple_xfer_conversation_write(xfer, msg, FALSE); |
513 g_free(msg); | 513 g_free(msg); |
514 } | 514 } |
515 | 515 |
516 gaim_xfer_add(xfer); | 516 purple_xfer_add(xfer); |
517 xfer->ops.init(xfer); | 517 xfer->ops.init(xfer); |
518 | 518 |
519 } | 519 } |
520 | 520 |
521 void | 521 void |
522 gaim_xfer_request_denied(GaimXfer *xfer) | 522 purple_xfer_request_denied(PurpleXfer *xfer) |
523 { | 523 { |
524 g_return_if_fail(xfer != NULL); | 524 g_return_if_fail(xfer != NULL); |
525 | 525 |
526 if (xfer->ops.request_denied != NULL) | 526 if (xfer->ops.request_denied != NULL) |
527 xfer->ops.request_denied(xfer); | 527 xfer->ops.request_denied(xfer); |
528 | 528 |
529 gaim_xfer_unref(xfer); | 529 purple_xfer_unref(xfer); |
530 } | 530 } |
531 | 531 |
532 GaimXferType | 532 PurpleXferType |
533 gaim_xfer_get_type(const GaimXfer *xfer) | 533 purple_xfer_get_type(const PurpleXfer *xfer) |
534 { | 534 { |
535 g_return_val_if_fail(xfer != NULL, GAIM_XFER_UNKNOWN); | 535 g_return_val_if_fail(xfer != NULL, PURPLE_XFER_UNKNOWN); |
536 | 536 |
537 return xfer->type; | 537 return xfer->type; |
538 } | 538 } |
539 | 539 |
540 GaimAccount * | 540 PurpleAccount * |
541 gaim_xfer_get_account(const GaimXfer *xfer) | 541 purple_xfer_get_account(const PurpleXfer *xfer) |
542 { | 542 { |
543 g_return_val_if_fail(xfer != NULL, NULL); | 543 g_return_val_if_fail(xfer != NULL, NULL); |
544 | 544 |
545 return xfer->account; | 545 return xfer->account; |
546 } | 546 } |
547 | 547 |
548 GaimXferStatusType | 548 PurpleXferStatusType |
549 gaim_xfer_get_status(const GaimXfer *xfer) | 549 purple_xfer_get_status(const PurpleXfer *xfer) |
550 { | 550 { |
551 g_return_val_if_fail(xfer != NULL, GAIM_XFER_STATUS_UNKNOWN); | 551 g_return_val_if_fail(xfer != NULL, PURPLE_XFER_STATUS_UNKNOWN); |
552 | 552 |
553 return xfer->status; | 553 return xfer->status; |
554 } | 554 } |
555 | 555 |
556 gboolean | 556 gboolean |
557 gaim_xfer_is_canceled(const GaimXfer *xfer) | 557 purple_xfer_is_canceled(const PurpleXfer *xfer) |
558 { | 558 { |
559 g_return_val_if_fail(xfer != NULL, TRUE); | 559 g_return_val_if_fail(xfer != NULL, TRUE); |
560 | 560 |
561 if ((gaim_xfer_get_status(xfer) == GAIM_XFER_STATUS_CANCEL_LOCAL) || | 561 if ((purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_CANCEL_LOCAL) || |
562 (gaim_xfer_get_status(xfer) == GAIM_XFER_STATUS_CANCEL_REMOTE)) | 562 (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_CANCEL_REMOTE)) |
563 return TRUE; | 563 return TRUE; |
564 else | 564 else |
565 return FALSE; | 565 return FALSE; |
566 } | 566 } |
567 | 567 |
568 gboolean | 568 gboolean |
569 gaim_xfer_is_completed(const GaimXfer *xfer) | 569 purple_xfer_is_completed(const PurpleXfer *xfer) |
570 { | 570 { |
571 g_return_val_if_fail(xfer != NULL, TRUE); | 571 g_return_val_if_fail(xfer != NULL, TRUE); |
572 | 572 |
573 return (gaim_xfer_get_status(xfer) == GAIM_XFER_STATUS_DONE); | 573 return (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_DONE); |
574 } | 574 } |
575 | 575 |
576 const char * | 576 const char * |
577 gaim_xfer_get_filename(const GaimXfer *xfer) | 577 purple_xfer_get_filename(const PurpleXfer *xfer) |
578 { | 578 { |
579 g_return_val_if_fail(xfer != NULL, NULL); | 579 g_return_val_if_fail(xfer != NULL, NULL); |
580 | 580 |
581 return xfer->filename; | 581 return xfer->filename; |
582 } | 582 } |
583 | 583 |
584 const char * | 584 const char * |
585 gaim_xfer_get_local_filename(const GaimXfer *xfer) | 585 purple_xfer_get_local_filename(const PurpleXfer *xfer) |
586 { | 586 { |
587 g_return_val_if_fail(xfer != NULL, NULL); | 587 g_return_val_if_fail(xfer != NULL, NULL); |
588 | 588 |
589 return xfer->local_filename; | 589 return xfer->local_filename; |
590 } | 590 } |
591 | 591 |
592 size_t | 592 size_t |
593 gaim_xfer_get_bytes_sent(const GaimXfer *xfer) | 593 purple_xfer_get_bytes_sent(const PurpleXfer *xfer) |
594 { | 594 { |
595 g_return_val_if_fail(xfer != NULL, 0); | 595 g_return_val_if_fail(xfer != NULL, 0); |
596 | 596 |
597 return xfer->bytes_sent; | 597 return xfer->bytes_sent; |
598 } | 598 } |
599 | 599 |
600 size_t | 600 size_t |
601 gaim_xfer_get_bytes_remaining(const GaimXfer *xfer) | 601 purple_xfer_get_bytes_remaining(const PurpleXfer *xfer) |
602 { | 602 { |
603 g_return_val_if_fail(xfer != NULL, 0); | 603 g_return_val_if_fail(xfer != NULL, 0); |
604 | 604 |
605 return xfer->bytes_remaining; | 605 return xfer->bytes_remaining; |
606 } | 606 } |
607 | 607 |
608 size_t | 608 size_t |
609 gaim_xfer_get_size(const GaimXfer *xfer) | 609 purple_xfer_get_size(const PurpleXfer *xfer) |
610 { | 610 { |
611 g_return_val_if_fail(xfer != NULL, 0); | 611 g_return_val_if_fail(xfer != NULL, 0); |
612 | 612 |
613 return xfer->size; | 613 return xfer->size; |
614 } | 614 } |
615 | 615 |
616 double | 616 double |
617 gaim_xfer_get_progress(const GaimXfer *xfer) | 617 purple_xfer_get_progress(const PurpleXfer *xfer) |
618 { | 618 { |
619 g_return_val_if_fail(xfer != NULL, 0.0); | 619 g_return_val_if_fail(xfer != NULL, 0.0); |
620 | 620 |
621 if (gaim_xfer_get_size(xfer) == 0) | 621 if (purple_xfer_get_size(xfer) == 0) |
622 return 0.0; | 622 return 0.0; |
623 | 623 |
624 return ((double)gaim_xfer_get_bytes_sent(xfer) / | 624 return ((double)purple_xfer_get_bytes_sent(xfer) / |
625 (double)gaim_xfer_get_size(xfer)); | 625 (double)purple_xfer_get_size(xfer)); |
626 } | 626 } |
627 | 627 |
628 unsigned int | 628 unsigned int |
629 gaim_xfer_get_local_port(const GaimXfer *xfer) | 629 purple_xfer_get_local_port(const PurpleXfer *xfer) |
630 { | 630 { |
631 g_return_val_if_fail(xfer != NULL, -1); | 631 g_return_val_if_fail(xfer != NULL, -1); |
632 | 632 |
633 return xfer->local_port; | 633 return xfer->local_port; |
634 } | 634 } |
635 | 635 |
636 const char * | 636 const char * |
637 gaim_xfer_get_remote_ip(const GaimXfer *xfer) | 637 purple_xfer_get_remote_ip(const PurpleXfer *xfer) |
638 { | 638 { |
639 g_return_val_if_fail(xfer != NULL, NULL); | 639 g_return_val_if_fail(xfer != NULL, NULL); |
640 | 640 |
641 return xfer->remote_ip; | 641 return xfer->remote_ip; |
642 } | 642 } |
643 | 643 |
644 unsigned int | 644 unsigned int |
645 gaim_xfer_get_remote_port(const GaimXfer *xfer) | 645 purple_xfer_get_remote_port(const PurpleXfer *xfer) |
646 { | 646 { |
647 g_return_val_if_fail(xfer != NULL, -1); | 647 g_return_val_if_fail(xfer != NULL, -1); |
648 | 648 |
649 return xfer->remote_port; | 649 return xfer->remote_port; |
650 } | 650 } |
651 | 651 |
652 void | 652 void |
653 gaim_xfer_set_completed(GaimXfer *xfer, gboolean completed) | 653 purple_xfer_set_completed(PurpleXfer *xfer, gboolean completed) |
654 { | 654 { |
655 GaimXferUiOps *ui_ops; | 655 PurpleXferUiOps *ui_ops; |
656 | 656 |
657 g_return_if_fail(xfer != NULL); | 657 g_return_if_fail(xfer != NULL); |
658 | 658 |
659 if (completed == TRUE) { | 659 if (completed == TRUE) { |
660 char *msg = NULL; | 660 char *msg = NULL; |
661 gaim_xfer_set_status(xfer, GAIM_XFER_STATUS_DONE); | 661 purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_DONE); |
662 | 662 |
663 if (gaim_xfer_get_filename(xfer) != NULL) | 663 if (purple_xfer_get_filename(xfer) != NULL) |
664 msg = g_strdup_printf(_("Transfer of file %s complete"), | 664 msg = g_strdup_printf(_("Transfer of file %s complete"), |
665 gaim_xfer_get_filename(xfer)); | 665 purple_xfer_get_filename(xfer)); |
666 else | 666 else |
667 msg = g_strdup_printf(_("File transfer complete")); | 667 msg = g_strdup_printf(_("File transfer complete")); |
668 gaim_xfer_conversation_write(xfer, msg, FALSE); | 668 purple_xfer_conversation_write(xfer, msg, FALSE); |
669 g_free(msg); | 669 g_free(msg); |
670 } | 670 } |
671 | 671 |
672 ui_ops = gaim_xfer_get_ui_ops(xfer); | 672 ui_ops = purple_xfer_get_ui_ops(xfer); |
673 | 673 |
674 if (ui_ops != NULL && ui_ops->update_progress != NULL) | 674 if (ui_ops != NULL && ui_ops->update_progress != NULL) |
675 ui_ops->update_progress(xfer, gaim_xfer_get_progress(xfer)); | 675 ui_ops->update_progress(xfer, purple_xfer_get_progress(xfer)); |
676 } | 676 } |
677 | 677 |
678 void | 678 void |
679 gaim_xfer_set_message(GaimXfer *xfer, const char *message) | 679 purple_xfer_set_message(PurpleXfer *xfer, const char *message) |
680 { | 680 { |
681 g_return_if_fail(xfer != NULL); | 681 g_return_if_fail(xfer != NULL); |
682 | 682 |
683 g_free(xfer->message); | 683 g_free(xfer->message); |
684 xfer->message = g_strdup(message); | 684 xfer->message = g_strdup(message); |
685 } | 685 } |
686 | 686 |
687 void | 687 void |
688 gaim_xfer_set_filename(GaimXfer *xfer, const char *filename) | 688 purple_xfer_set_filename(PurpleXfer *xfer, const char *filename) |
689 { | 689 { |
690 g_return_if_fail(xfer != NULL); | 690 g_return_if_fail(xfer != NULL); |
691 | 691 |
692 g_free(xfer->filename); | 692 g_free(xfer->filename); |
693 xfer->filename = g_strdup(filename); | 693 xfer->filename = g_strdup(filename); |
694 } | 694 } |
695 | 695 |
696 void | 696 void |
697 gaim_xfer_set_local_filename(GaimXfer *xfer, const char *filename) | 697 purple_xfer_set_local_filename(PurpleXfer *xfer, const char *filename) |
698 { | 698 { |
699 g_return_if_fail(xfer != NULL); | 699 g_return_if_fail(xfer != NULL); |
700 | 700 |
701 g_free(xfer->local_filename); | 701 g_free(xfer->local_filename); |
702 xfer->local_filename = g_strdup(filename); | 702 xfer->local_filename = g_strdup(filename); |
703 } | 703 } |
704 | 704 |
705 void | 705 void |
706 gaim_xfer_set_size(GaimXfer *xfer, size_t size) | 706 purple_xfer_set_size(PurpleXfer *xfer, size_t size) |
707 { | 707 { |
708 g_return_if_fail(xfer != NULL); | 708 g_return_if_fail(xfer != NULL); |
709 | 709 |
710 xfer->size = size; | 710 xfer->size = size; |
711 xfer->bytes_remaining = xfer->size - gaim_xfer_get_bytes_sent(xfer); | 711 xfer->bytes_remaining = xfer->size - purple_xfer_get_bytes_sent(xfer); |
712 } | 712 } |
713 | 713 |
714 void | 714 void |
715 gaim_xfer_set_bytes_sent(GaimXfer *xfer, size_t bytes_sent) | 715 purple_xfer_set_bytes_sent(PurpleXfer *xfer, size_t bytes_sent) |
716 { | 716 { |
717 g_return_if_fail(xfer != NULL); | 717 g_return_if_fail(xfer != NULL); |
718 | 718 |
719 xfer->bytes_sent = bytes_sent; | 719 xfer->bytes_sent = bytes_sent; |
720 xfer->bytes_remaining = gaim_xfer_get_size(xfer) - bytes_sent; | 720 xfer->bytes_remaining = purple_xfer_get_size(xfer) - bytes_sent; |
721 } | 721 } |
722 | 722 |
723 GaimXferUiOps * | 723 PurpleXferUiOps * |
724 gaim_xfer_get_ui_ops(const GaimXfer *xfer) | 724 purple_xfer_get_ui_ops(const PurpleXfer *xfer) |
725 { | 725 { |
726 g_return_val_if_fail(xfer != NULL, NULL); | 726 g_return_val_if_fail(xfer != NULL, NULL); |
727 | 727 |
728 return xfer->ui_ops; | 728 return xfer->ui_ops; |
729 } | 729 } |
730 | 730 |
731 void | 731 void |
732 gaim_xfer_set_init_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *)) | 732 purple_xfer_set_init_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *)) |
733 { | 733 { |
734 g_return_if_fail(xfer != NULL); | 734 g_return_if_fail(xfer != NULL); |
735 | 735 |
736 xfer->ops.init = fnc; | 736 xfer->ops.init = fnc; |
737 } | 737 } |
738 | 738 |
739 void gaim_xfer_set_request_denied_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *)) | 739 void purple_xfer_set_request_denied_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *)) |
740 { | 740 { |
741 g_return_if_fail(xfer != NULL); | 741 g_return_if_fail(xfer != NULL); |
742 | 742 |
743 xfer->ops.request_denied = fnc; | 743 xfer->ops.request_denied = fnc; |
744 } | 744 } |
745 | 745 |
746 void | 746 void |
747 gaim_xfer_set_read_fnc(GaimXfer *xfer, gssize (*fnc)(guchar **, GaimXfer *)) | 747 purple_xfer_set_read_fnc(PurpleXfer *xfer, gssize (*fnc)(guchar **, PurpleXfer *)) |
748 { | 748 { |
749 g_return_if_fail(xfer != NULL); | 749 g_return_if_fail(xfer != NULL); |
750 | 750 |
751 xfer->ops.read = fnc; | 751 xfer->ops.read = fnc; |
752 } | 752 } |
753 | 753 |
754 void | 754 void |
755 gaim_xfer_set_write_fnc(GaimXfer *xfer, | 755 purple_xfer_set_write_fnc(PurpleXfer *xfer, |
756 gssize (*fnc)(const guchar *, size_t, GaimXfer *)) | 756 gssize (*fnc)(const guchar *, size_t, PurpleXfer *)) |
757 { | 757 { |
758 g_return_if_fail(xfer != NULL); | 758 g_return_if_fail(xfer != NULL); |
759 | 759 |
760 xfer->ops.write = fnc; | 760 xfer->ops.write = fnc; |
761 } | 761 } |
762 | 762 |
763 void | 763 void |
764 gaim_xfer_set_ack_fnc(GaimXfer *xfer, | 764 purple_xfer_set_ack_fnc(PurpleXfer *xfer, |
765 void (*fnc)(GaimXfer *, const guchar *, size_t)) | 765 void (*fnc)(PurpleXfer *, const guchar *, size_t)) |
766 { | 766 { |
767 g_return_if_fail(xfer != NULL); | 767 g_return_if_fail(xfer != NULL); |
768 | 768 |
769 xfer->ops.ack = fnc; | 769 xfer->ops.ack = fnc; |
770 } | 770 } |
771 | 771 |
772 void | 772 void |
773 gaim_xfer_set_start_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *)) | 773 purple_xfer_set_start_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *)) |
774 { | 774 { |
775 g_return_if_fail(xfer != NULL); | 775 g_return_if_fail(xfer != NULL); |
776 | 776 |
777 xfer->ops.start = fnc; | 777 xfer->ops.start = fnc; |
778 } | 778 } |
779 | 779 |
780 void | 780 void |
781 gaim_xfer_set_end_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *)) | 781 purple_xfer_set_end_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *)) |
782 { | 782 { |
783 g_return_if_fail(xfer != NULL); | 783 g_return_if_fail(xfer != NULL); |
784 | 784 |
785 xfer->ops.end = fnc; | 785 xfer->ops.end = fnc; |
786 } | 786 } |
787 | 787 |
788 void | 788 void |
789 gaim_xfer_set_cancel_send_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *)) | 789 purple_xfer_set_cancel_send_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *)) |
790 { | 790 { |
791 g_return_if_fail(xfer != NULL); | 791 g_return_if_fail(xfer != NULL); |
792 | 792 |
793 xfer->ops.cancel_send = fnc; | 793 xfer->ops.cancel_send = fnc; |
794 } | 794 } |
795 | 795 |
796 void | 796 void |
797 gaim_xfer_set_cancel_recv_fnc(GaimXfer *xfer, void (*fnc)(GaimXfer *)) | 797 purple_xfer_set_cancel_recv_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *)) |
798 { | 798 { |
799 g_return_if_fail(xfer != NULL); | 799 g_return_if_fail(xfer != NULL); |
800 | 800 |
801 xfer->ops.cancel_recv = fnc; | 801 xfer->ops.cancel_recv = fnc; |
802 } | 802 } |
803 | 803 |
804 static void | 804 static void |
805 gaim_xfer_increase_buffer_size(GaimXfer *xfer) | 805 purple_xfer_increase_buffer_size(PurpleXfer *xfer) |
806 { | 806 { |
807 xfer->current_buffer_size = MIN(xfer->current_buffer_size * 1.5, | 807 xfer->current_buffer_size = MIN(xfer->current_buffer_size * 1.5, |
808 FT_MAX_BUFFER_SIZE); | 808 FT_MAX_BUFFER_SIZE); |
809 } | 809 } |
810 | 810 |
811 gssize | 811 gssize |
812 gaim_xfer_read(GaimXfer *xfer, guchar **buffer) | 812 purple_xfer_read(PurpleXfer *xfer, guchar **buffer) |
813 { | 813 { |
814 gssize s, r; | 814 gssize s, r; |
815 | 815 |
816 g_return_val_if_fail(xfer != NULL, 0); | 816 g_return_val_if_fail(xfer != NULL, 0); |
817 g_return_val_if_fail(buffer != NULL, 0); | 817 g_return_val_if_fail(buffer != NULL, 0); |
818 | 818 |
819 if (gaim_xfer_get_size(xfer) == 0) | 819 if (purple_xfer_get_size(xfer) == 0) |
820 s = xfer->current_buffer_size; | 820 s = xfer->current_buffer_size; |
821 else | 821 else |
822 s = MIN(gaim_xfer_get_bytes_remaining(xfer), xfer->current_buffer_size); | 822 s = MIN(purple_xfer_get_bytes_remaining(xfer), xfer->current_buffer_size); |
823 | 823 |
824 if (xfer->ops.read != NULL) | 824 if (xfer->ops.read != NULL) |
825 r = (xfer->ops.read)(buffer, xfer); | 825 r = (xfer->ops.read)(buffer, xfer); |
826 else { | 826 else { |
827 *buffer = g_malloc0(s); | 827 *buffer = g_malloc0(s); |
829 r = read(xfer->fd, *buffer, s); | 829 r = read(xfer->fd, *buffer, s); |
830 if (r < 0 && errno == EAGAIN) | 830 if (r < 0 && errno == EAGAIN) |
831 r = 0; | 831 r = 0; |
832 else if (r < 0) | 832 else if (r < 0) |
833 r = -1; | 833 r = -1; |
834 else if ((gaim_xfer_get_size(xfer) > 0) && | 834 else if ((purple_xfer_get_size(xfer) > 0) && |
835 ((gaim_xfer_get_bytes_sent(xfer)+r) >= gaim_xfer_get_size(xfer))) | 835 ((purple_xfer_get_bytes_sent(xfer)+r) >= purple_xfer_get_size(xfer))) |
836 gaim_xfer_set_completed(xfer, TRUE); | 836 purple_xfer_set_completed(xfer, TRUE); |
837 else if (r == 0) | 837 else if (r == 0) |
838 r = -1; | 838 r = -1; |
839 } | 839 } |
840 | 840 |
841 if (r == xfer->current_buffer_size) | 841 if (r == xfer->current_buffer_size) |
842 /* | 842 /* |
843 * We managed to read the entire buffer. This means our this | 843 * We managed to read the entire buffer. This means our this |
844 * network is fast and our buffer is too small, so make it | 844 * network is fast and our buffer is too small, so make it |
845 * bigger. | 845 * bigger. |
846 */ | 846 */ |
847 gaim_xfer_increase_buffer_size(xfer); | 847 purple_xfer_increase_buffer_size(xfer); |
848 | 848 |
849 return r; | 849 return r; |
850 } | 850 } |
851 | 851 |
852 gssize | 852 gssize |
853 gaim_xfer_write(GaimXfer *xfer, const guchar *buffer, gsize size) | 853 purple_xfer_write(PurpleXfer *xfer, const guchar *buffer, gsize size) |
854 { | 854 { |
855 gssize r, s; | 855 gssize r, s; |
856 | 856 |
857 g_return_val_if_fail(xfer != NULL, 0); | 857 g_return_val_if_fail(xfer != NULL, 0); |
858 g_return_val_if_fail(buffer != NULL, 0); | 858 g_return_val_if_fail(buffer != NULL, 0); |
859 g_return_val_if_fail(size != 0, 0); | 859 g_return_val_if_fail(size != 0, 0); |
860 | 860 |
861 s = MIN(gaim_xfer_get_bytes_remaining(xfer), size); | 861 s = MIN(purple_xfer_get_bytes_remaining(xfer), size); |
862 | 862 |
863 if (xfer->ops.write != NULL) { | 863 if (xfer->ops.write != NULL) { |
864 r = (xfer->ops.write)(buffer, s, xfer); | 864 r = (xfer->ops.write)(buffer, s, xfer); |
865 } else { | 865 } else { |
866 r = write(xfer->fd, buffer, s); | 866 r = write(xfer->fd, buffer, s); |
867 if (r < 0 && errno == EAGAIN) | 867 if (r < 0 && errno == EAGAIN) |
868 r = 0; | 868 r = 0; |
869 if ((gaim_xfer_get_bytes_sent(xfer)+r) >= gaim_xfer_get_size(xfer)) | 869 if ((purple_xfer_get_bytes_sent(xfer)+r) >= purple_xfer_get_size(xfer)) |
870 gaim_xfer_set_completed(xfer, TRUE); | 870 purple_xfer_set_completed(xfer, TRUE); |
871 } | 871 } |
872 | 872 |
873 return r; | 873 return r; |
874 } | 874 } |
875 | 875 |
876 static void | 876 static void |
877 transfer_cb(gpointer data, gint source, GaimInputCondition condition) | 877 transfer_cb(gpointer data, gint source, PurpleInputCondition condition) |
878 { | 878 { |
879 GaimXferUiOps *ui_ops; | 879 PurpleXferUiOps *ui_ops; |
880 GaimXfer *xfer = (GaimXfer *)data; | 880 PurpleXfer *xfer = (PurpleXfer *)data; |
881 guchar *buffer = NULL; | 881 guchar *buffer = NULL; |
882 gssize r = 0; | 882 gssize r = 0; |
883 | 883 |
884 if (condition & GAIM_INPUT_READ) { | 884 if (condition & PURPLE_INPUT_READ) { |
885 r = gaim_xfer_read(xfer, &buffer); | 885 r = purple_xfer_read(xfer, &buffer); |
886 if (r > 0) { | 886 if (r > 0) { |
887 fwrite(buffer, 1, r, xfer->dest_fp); | 887 fwrite(buffer, 1, r, xfer->dest_fp); |
888 } else if(r <= 0) { | 888 } else if(r <= 0) { |
889 gaim_xfer_cancel_remote(xfer); | 889 purple_xfer_cancel_remote(xfer); |
890 return; | 890 return; |
891 } | 891 } |
892 } | 892 } |
893 | 893 |
894 if (condition & GAIM_INPUT_WRITE) { | 894 if (condition & PURPLE_INPUT_WRITE) { |
895 size_t s = MIN(gaim_xfer_get_bytes_remaining(xfer), xfer->current_buffer_size); | 895 size_t s = MIN(purple_xfer_get_bytes_remaining(xfer), xfer->current_buffer_size); |
896 | 896 |
897 /* this is so the prpl can keep the connection open | 897 /* this is so the prpl can keep the connection open |
898 if it needs to for some odd reason. */ | 898 if it needs to for some odd reason. */ |
899 if (s == 0) { | 899 if (s == 0) { |
900 if (xfer->watcher) { | 900 if (xfer->watcher) { |
901 gaim_input_remove(xfer->watcher); | 901 purple_input_remove(xfer->watcher); |
902 xfer->watcher = 0; | 902 xfer->watcher = 0; |
903 } | 903 } |
904 return; | 904 return; |
905 } | 905 } |
906 | 906 |
907 buffer = g_malloc0(s); | 907 buffer = g_malloc0(s); |
908 | 908 |
909 fread(buffer, 1, s, xfer->dest_fp); | 909 fread(buffer, 1, s, xfer->dest_fp); |
910 | 910 |
911 /* Write as much as we're allowed to. */ | 911 /* Write as much as we're allowed to. */ |
912 r = gaim_xfer_write(xfer, buffer, s); | 912 r = purple_xfer_write(xfer, buffer, s); |
913 | 913 |
914 if (r == -1) { | 914 if (r == -1) { |
915 gaim_xfer_cancel_remote(xfer); | 915 purple_xfer_cancel_remote(xfer); |
916 g_free(buffer); | 916 g_free(buffer); |
917 return; | 917 return; |
918 } else if (r < s) { | 918 } else if (r < s) { |
919 /* We have to seek back in the file now. */ | 919 /* We have to seek back in the file now. */ |
920 fseek(xfer->dest_fp, r - s, SEEK_CUR); | 920 fseek(xfer->dest_fp, r - s, SEEK_CUR); |
922 /* | 922 /* |
923 * We managed to write the entire buffer. This means our | 923 * We managed to write the entire buffer. This means our |
924 * network is fast and our buffer is too small, so make it | 924 * network is fast and our buffer is too small, so make it |
925 * bigger. | 925 * bigger. |
926 */ | 926 */ |
927 gaim_xfer_increase_buffer_size(xfer); | 927 purple_xfer_increase_buffer_size(xfer); |
928 } | 928 } |
929 } | 929 } |
930 | 930 |
931 if (r > 0) { | 931 if (r > 0) { |
932 if (gaim_xfer_get_size(xfer) > 0) | 932 if (purple_xfer_get_size(xfer) > 0) |
933 xfer->bytes_remaining -= r; | 933 xfer->bytes_remaining -= r; |
934 | 934 |
935 xfer->bytes_sent += r; | 935 xfer->bytes_sent += r; |
936 | 936 |
937 if (xfer->ops.ack != NULL) | 937 if (xfer->ops.ack != NULL) |
938 xfer->ops.ack(xfer, buffer, r); | 938 xfer->ops.ack(xfer, buffer, r); |
939 | 939 |
940 g_free(buffer); | 940 g_free(buffer); |
941 | 941 |
942 ui_ops = gaim_xfer_get_ui_ops(xfer); | 942 ui_ops = purple_xfer_get_ui_ops(xfer); |
943 | 943 |
944 if (ui_ops != NULL && ui_ops->update_progress != NULL) | 944 if (ui_ops != NULL && ui_ops->update_progress != NULL) |
945 ui_ops->update_progress(xfer, | 945 ui_ops->update_progress(xfer, |
946 gaim_xfer_get_progress(xfer)); | 946 purple_xfer_get_progress(xfer)); |
947 } | 947 } |
948 | 948 |
949 if (gaim_xfer_is_completed(xfer)) | 949 if (purple_xfer_is_completed(xfer)) |
950 gaim_xfer_end(xfer); | 950 purple_xfer_end(xfer); |
951 } | 951 } |
952 | 952 |
953 static void | 953 static void |
954 begin_transfer(GaimXfer *xfer, GaimInputCondition cond) | 954 begin_transfer(PurpleXfer *xfer, PurpleInputCondition cond) |
955 { | 955 { |
956 GaimXferType type = gaim_xfer_get_type(xfer); | 956 PurpleXferType type = purple_xfer_get_type(xfer); |
957 | 957 |
958 xfer->dest_fp = g_fopen(gaim_xfer_get_local_filename(xfer), | 958 xfer->dest_fp = g_fopen(purple_xfer_get_local_filename(xfer), |
959 type == GAIM_XFER_RECEIVE ? "wb" : "rb"); | 959 type == PURPLE_XFER_RECEIVE ? "wb" : "rb"); |
960 | 960 |
961 if (xfer->dest_fp == NULL) { | 961 if (xfer->dest_fp == NULL) { |
962 gaim_xfer_show_file_error(xfer, gaim_xfer_get_local_filename(xfer)); | 962 purple_xfer_show_file_error(xfer, purple_xfer_get_local_filename(xfer)); |
963 gaim_xfer_cancel_local(xfer); | 963 purple_xfer_cancel_local(xfer); |
964 return; | 964 return; |
965 } | 965 } |
966 | 966 |
967 fseek(xfer->dest_fp, xfer->bytes_sent, SEEK_SET); | 967 fseek(xfer->dest_fp, xfer->bytes_sent, SEEK_SET); |
968 | 968 |
969 xfer->watcher = gaim_input_add(xfer->fd, cond, transfer_cb, xfer); | 969 xfer->watcher = purple_input_add(xfer->fd, cond, transfer_cb, xfer); |
970 | 970 |
971 xfer->start_time = time(NULL); | 971 xfer->start_time = time(NULL); |
972 | 972 |
973 if (xfer->ops.start != NULL) | 973 if (xfer->ops.start != NULL) |
974 xfer->ops.start(xfer); | 974 xfer->ops.start(xfer); |
975 } | 975 } |
976 | 976 |
977 static void | 977 static void |
978 connect_cb(gpointer data, gint source, const gchar *error_message) | 978 connect_cb(gpointer data, gint source, const gchar *error_message) |
979 { | 979 { |
980 GaimXfer *xfer = (GaimXfer *)data; | 980 PurpleXfer *xfer = (PurpleXfer *)data; |
981 | 981 |
982 xfer->fd = source; | 982 xfer->fd = source; |
983 | 983 |
984 begin_transfer(xfer, GAIM_INPUT_READ); | 984 begin_transfer(xfer, PURPLE_INPUT_READ); |
985 } | 985 } |
986 | 986 |
987 void | 987 void |
988 gaim_xfer_start(GaimXfer *xfer, int fd, const char *ip, | 988 purple_xfer_start(PurpleXfer *xfer, int fd, const char *ip, |
989 unsigned int port) | 989 unsigned int port) |
990 { | 990 { |
991 GaimInputCondition cond; | 991 PurpleInputCondition cond; |
992 GaimXferType type; | 992 PurpleXferType type; |
993 | 993 |
994 g_return_if_fail(xfer != NULL); | 994 g_return_if_fail(xfer != NULL); |
995 g_return_if_fail(gaim_xfer_get_type(xfer) != GAIM_XFER_UNKNOWN); | 995 g_return_if_fail(purple_xfer_get_type(xfer) != PURPLE_XFER_UNKNOWN); |
996 | 996 |
997 type = gaim_xfer_get_type(xfer); | 997 type = purple_xfer_get_type(xfer); |
998 | 998 |
999 gaim_xfer_set_status(xfer, GAIM_XFER_STATUS_STARTED); | 999 purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_STARTED); |
1000 | 1000 |
1001 if (type == GAIM_XFER_RECEIVE) { | 1001 if (type == PURPLE_XFER_RECEIVE) { |
1002 cond = GAIM_INPUT_READ; | 1002 cond = PURPLE_INPUT_READ; |
1003 | 1003 |
1004 if (ip != NULL) { | 1004 if (ip != NULL) { |
1005 xfer->remote_ip = g_strdup(ip); | 1005 xfer->remote_ip = g_strdup(ip); |
1006 xfer->remote_port = port; | 1006 xfer->remote_port = port; |
1007 | 1007 |
1008 /* Establish a file descriptor. */ | 1008 /* Establish a file descriptor. */ |
1009 gaim_proxy_connect(NULL, xfer->account, xfer->remote_ip, | 1009 purple_proxy_connect(NULL, xfer->account, xfer->remote_ip, |
1010 xfer->remote_port, connect_cb, xfer); | 1010 xfer->remote_port, connect_cb, xfer); |
1011 | 1011 |
1012 return; | 1012 return; |
1013 } | 1013 } |
1014 else { | 1014 else { |
1015 xfer->fd = fd; | 1015 xfer->fd = fd; |
1016 } | 1016 } |
1017 } | 1017 } |
1018 else { | 1018 else { |
1019 cond = GAIM_INPUT_WRITE; | 1019 cond = PURPLE_INPUT_WRITE; |
1020 | 1020 |
1021 xfer->fd = fd; | 1021 xfer->fd = fd; |
1022 } | 1022 } |
1023 | 1023 |
1024 begin_transfer(xfer, cond); | 1024 begin_transfer(xfer, cond); |
1025 } | 1025 } |
1026 | 1026 |
1027 void | 1027 void |
1028 gaim_xfer_end(GaimXfer *xfer) | 1028 purple_xfer_end(PurpleXfer *xfer) |
1029 { | 1029 { |
1030 g_return_if_fail(xfer != NULL); | 1030 g_return_if_fail(xfer != NULL); |
1031 | 1031 |
1032 /* See if we are actually trying to cancel this. */ | 1032 /* See if we are actually trying to cancel this. */ |
1033 if (!gaim_xfer_is_completed(xfer)) { | 1033 if (!purple_xfer_is_completed(xfer)) { |
1034 gaim_xfer_cancel_local(xfer); | 1034 purple_xfer_cancel_local(xfer); |
1035 return; | 1035 return; |
1036 } | 1036 } |
1037 | 1037 |
1038 xfer->end_time = time(NULL); | 1038 xfer->end_time = time(NULL); |
1039 if (xfer->ops.end != NULL) | 1039 if (xfer->ops.end != NULL) |
1040 xfer->ops.end(xfer); | 1040 xfer->ops.end(xfer); |
1041 | 1041 |
1042 if (xfer->watcher != 0) { | 1042 if (xfer->watcher != 0) { |
1043 gaim_input_remove(xfer->watcher); | 1043 purple_input_remove(xfer->watcher); |
1044 xfer->watcher = 0; | 1044 xfer->watcher = 0; |
1045 } | 1045 } |
1046 | 1046 |
1047 if (xfer->fd != 0) | 1047 if (xfer->fd != 0) |
1048 close(xfer->fd); | 1048 close(xfer->fd); |
1050 if (xfer->dest_fp != NULL) { | 1050 if (xfer->dest_fp != NULL) { |
1051 fclose(xfer->dest_fp); | 1051 fclose(xfer->dest_fp); |
1052 xfer->dest_fp = NULL; | 1052 xfer->dest_fp = NULL; |
1053 } | 1053 } |
1054 | 1054 |
1055 gaim_xfer_unref(xfer); | 1055 purple_xfer_unref(xfer); |
1056 } | 1056 } |
1057 | 1057 |
1058 void | 1058 void |
1059 gaim_xfer_add(GaimXfer *xfer) | 1059 purple_xfer_add(PurpleXfer *xfer) |
1060 { | 1060 { |
1061 GaimXferUiOps *ui_ops; | 1061 PurpleXferUiOps *ui_ops; |
1062 | 1062 |
1063 g_return_if_fail(xfer != NULL); | 1063 g_return_if_fail(xfer != NULL); |
1064 | 1064 |
1065 ui_ops = gaim_xfer_get_ui_ops(xfer); | 1065 ui_ops = purple_xfer_get_ui_ops(xfer); |
1066 | 1066 |
1067 if (ui_ops != NULL && ui_ops->add_xfer != NULL) | 1067 if (ui_ops != NULL && ui_ops->add_xfer != NULL) |
1068 ui_ops->add_xfer(xfer); | 1068 ui_ops->add_xfer(xfer); |
1069 } | 1069 } |
1070 | 1070 |
1071 void | 1071 void |
1072 gaim_xfer_cancel_local(GaimXfer *xfer) | 1072 purple_xfer_cancel_local(PurpleXfer *xfer) |
1073 { | 1073 { |
1074 GaimXferUiOps *ui_ops; | 1074 PurpleXferUiOps *ui_ops; |
1075 char *msg = NULL; | 1075 char *msg = NULL; |
1076 | 1076 |
1077 g_return_if_fail(xfer != NULL); | 1077 g_return_if_fail(xfer != NULL); |
1078 | 1078 |
1079 gaim_xfer_set_status(xfer, GAIM_XFER_STATUS_CANCEL_LOCAL); | 1079 purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_CANCEL_LOCAL); |
1080 xfer->end_time = time(NULL); | 1080 xfer->end_time = time(NULL); |
1081 | 1081 |
1082 if (gaim_xfer_get_filename(xfer) != NULL) | 1082 if (purple_xfer_get_filename(xfer) != NULL) |
1083 { | 1083 { |
1084 msg = g_strdup_printf(_("You canceled the transfer of %s"), | 1084 msg = g_strdup_printf(_("You canceled the transfer of %s"), |
1085 gaim_xfer_get_filename(xfer)); | 1085 purple_xfer_get_filename(xfer)); |
1086 } | 1086 } |
1087 else | 1087 else |
1088 { | 1088 { |
1089 msg = g_strdup_printf(_("File transfer cancelled")); | 1089 msg = g_strdup_printf(_("File transfer cancelled")); |
1090 } | 1090 } |
1091 gaim_xfer_conversation_write(xfer, msg, FALSE); | 1091 purple_xfer_conversation_write(xfer, msg, FALSE); |
1092 g_free(msg); | 1092 g_free(msg); |
1093 | 1093 |
1094 if (gaim_xfer_get_type(xfer) == GAIM_XFER_SEND) | 1094 if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) |
1095 { | 1095 { |
1096 if (xfer->ops.cancel_send != NULL) | 1096 if (xfer->ops.cancel_send != NULL) |
1097 xfer->ops.cancel_send(xfer); | 1097 xfer->ops.cancel_send(xfer); |
1098 } | 1098 } |
1099 else | 1099 else |
1101 if (xfer->ops.cancel_recv != NULL) | 1101 if (xfer->ops.cancel_recv != NULL) |
1102 xfer->ops.cancel_recv(xfer); | 1102 xfer->ops.cancel_recv(xfer); |
1103 } | 1103 } |
1104 | 1104 |
1105 if (xfer->watcher != 0) { | 1105 if (xfer->watcher != 0) { |
1106 gaim_input_remove(xfer->watcher); | 1106 purple_input_remove(xfer->watcher); |
1107 xfer->watcher = 0; | 1107 xfer->watcher = 0; |
1108 } | 1108 } |
1109 | 1109 |
1110 if (xfer->fd != 0) | 1110 if (xfer->fd != 0) |
1111 close(xfer->fd); | 1111 close(xfer->fd); |
1113 if (xfer->dest_fp != NULL) { | 1113 if (xfer->dest_fp != NULL) { |
1114 fclose(xfer->dest_fp); | 1114 fclose(xfer->dest_fp); |
1115 xfer->dest_fp = NULL; | 1115 xfer->dest_fp = NULL; |
1116 } | 1116 } |
1117 | 1117 |
1118 ui_ops = gaim_xfer_get_ui_ops(xfer); | 1118 ui_ops = purple_xfer_get_ui_ops(xfer); |
1119 | 1119 |
1120 if (ui_ops != NULL && ui_ops->cancel_local != NULL) | 1120 if (ui_ops != NULL && ui_ops->cancel_local != NULL) |
1121 ui_ops->cancel_local(xfer); | 1121 ui_ops->cancel_local(xfer); |
1122 | 1122 |
1123 xfer->bytes_remaining = 0; | 1123 xfer->bytes_remaining = 0; |
1124 | 1124 |
1125 gaim_xfer_unref(xfer); | 1125 purple_xfer_unref(xfer); |
1126 } | 1126 } |
1127 | 1127 |
1128 void | 1128 void |
1129 gaim_xfer_cancel_remote(GaimXfer *xfer) | 1129 purple_xfer_cancel_remote(PurpleXfer *xfer) |
1130 { | 1130 { |
1131 GaimXferUiOps *ui_ops; | 1131 PurpleXferUiOps *ui_ops; |
1132 gchar *msg; | 1132 gchar *msg; |
1133 GaimAccount *account; | 1133 PurpleAccount *account; |
1134 GaimBuddy *buddy; | 1134 PurpleBuddy *buddy; |
1135 | 1135 |
1136 g_return_if_fail(xfer != NULL); | 1136 g_return_if_fail(xfer != NULL); |
1137 | 1137 |
1138 gaim_request_close_with_handle(xfer); | 1138 purple_request_close_with_handle(xfer); |
1139 gaim_xfer_set_status(xfer, GAIM_XFER_STATUS_CANCEL_REMOTE); | 1139 purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_CANCEL_REMOTE); |
1140 xfer->end_time = time(NULL); | 1140 xfer->end_time = time(NULL); |
1141 | 1141 |
1142 account = gaim_xfer_get_account(xfer); | 1142 account = purple_xfer_get_account(xfer); |
1143 buddy = gaim_find_buddy(account, xfer->who); | 1143 buddy = purple_find_buddy(account, xfer->who); |
1144 | 1144 |
1145 if (gaim_xfer_get_filename(xfer) != NULL) | 1145 if (purple_xfer_get_filename(xfer) != NULL) |
1146 { | 1146 { |
1147 msg = g_strdup_printf(_("%s canceled the transfer of %s"), | 1147 msg = g_strdup_printf(_("%s canceled the transfer of %s"), |
1148 buddy ? gaim_buddy_get_alias(buddy) : xfer->who, gaim_xfer_get_filename(xfer)); | 1148 buddy ? purple_buddy_get_alias(buddy) : xfer->who, purple_xfer_get_filename(xfer)); |
1149 } | 1149 } |
1150 else | 1150 else |
1151 { | 1151 { |
1152 msg = g_strdup_printf(_("%s canceled the file transfer"), | 1152 msg = g_strdup_printf(_("%s canceled the file transfer"), |
1153 buddy ? gaim_buddy_get_alias(buddy) : xfer->who); | 1153 buddy ? purple_buddy_get_alias(buddy) : xfer->who); |
1154 } | 1154 } |
1155 gaim_xfer_conversation_write(xfer, msg, TRUE); | 1155 purple_xfer_conversation_write(xfer, msg, TRUE); |
1156 gaim_xfer_error(gaim_xfer_get_type(xfer), account, xfer->who, msg); | 1156 purple_xfer_error(purple_xfer_get_type(xfer), account, xfer->who, msg); |
1157 g_free(msg); | 1157 g_free(msg); |
1158 | 1158 |
1159 if (gaim_xfer_get_type(xfer) == GAIM_XFER_SEND) | 1159 if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) |
1160 { | 1160 { |
1161 if (xfer->ops.cancel_send != NULL) | 1161 if (xfer->ops.cancel_send != NULL) |
1162 xfer->ops.cancel_send(xfer); | 1162 xfer->ops.cancel_send(xfer); |
1163 } | 1163 } |
1164 else | 1164 else |
1166 if (xfer->ops.cancel_recv != NULL) | 1166 if (xfer->ops.cancel_recv != NULL) |
1167 xfer->ops.cancel_recv(xfer); | 1167 xfer->ops.cancel_recv(xfer); |
1168 } | 1168 } |
1169 | 1169 |
1170 if (xfer->watcher != 0) { | 1170 if (xfer->watcher != 0) { |
1171 gaim_input_remove(xfer->watcher); | 1171 purple_input_remove(xfer->watcher); |
1172 xfer->watcher = 0; | 1172 xfer->watcher = 0; |
1173 } | 1173 } |
1174 | 1174 |
1175 if (xfer->fd != 0) | 1175 if (xfer->fd != 0) |
1176 close(xfer->fd); | 1176 close(xfer->fd); |
1178 if (xfer->dest_fp != NULL) { | 1178 if (xfer->dest_fp != NULL) { |
1179 fclose(xfer->dest_fp); | 1179 fclose(xfer->dest_fp); |
1180 xfer->dest_fp = NULL; | 1180 xfer->dest_fp = NULL; |
1181 } | 1181 } |
1182 | 1182 |
1183 ui_ops = gaim_xfer_get_ui_ops(xfer); | 1183 ui_ops = purple_xfer_get_ui_ops(xfer); |
1184 | 1184 |
1185 if (ui_ops != NULL && ui_ops->cancel_remote != NULL) | 1185 if (ui_ops != NULL && ui_ops->cancel_remote != NULL) |
1186 ui_ops->cancel_remote(xfer); | 1186 ui_ops->cancel_remote(xfer); |
1187 | 1187 |
1188 xfer->bytes_remaining = 0; | 1188 xfer->bytes_remaining = 0; |
1189 | 1189 |
1190 gaim_xfer_unref(xfer); | 1190 purple_xfer_unref(xfer); |
1191 } | 1191 } |
1192 | 1192 |
1193 void | 1193 void |
1194 gaim_xfer_error(GaimXferType type, GaimAccount *account, const char *who, const char *msg) | 1194 purple_xfer_error(PurpleXferType type, PurpleAccount *account, const char *who, const char *msg) |
1195 { | 1195 { |
1196 char *title; | 1196 char *title; |
1197 | 1197 |
1198 g_return_if_fail(msg != NULL); | 1198 g_return_if_fail(msg != NULL); |
1199 g_return_if_fail(type != GAIM_XFER_UNKNOWN); | 1199 g_return_if_fail(type != PURPLE_XFER_UNKNOWN); |
1200 | 1200 |
1201 if (account) { | 1201 if (account) { |
1202 GaimBuddy *buddy; | 1202 PurpleBuddy *buddy; |
1203 buddy = gaim_find_buddy(account, who); | 1203 buddy = purple_find_buddy(account, who); |
1204 if (buddy) | 1204 if (buddy) |
1205 who = gaim_buddy_get_alias(buddy); | 1205 who = purple_buddy_get_alias(buddy); |
1206 } | 1206 } |
1207 | 1207 |
1208 if (type == GAIM_XFER_SEND) | 1208 if (type == PURPLE_XFER_SEND) |
1209 title = g_strdup_printf(_("File transfer to %s failed."), who); | 1209 title = g_strdup_printf(_("File transfer to %s failed."), who); |
1210 else | 1210 else |
1211 title = g_strdup_printf(_("File transfer from %s failed."), who); | 1211 title = g_strdup_printf(_("File transfer from %s failed."), who); |
1212 | 1212 |
1213 gaim_notify_error(NULL, NULL, title, msg); | 1213 purple_notify_error(NULL, NULL, title, msg); |
1214 | 1214 |
1215 g_free(title); | 1215 g_free(title); |
1216 } | 1216 } |
1217 | 1217 |
1218 void | 1218 void |
1219 gaim_xfer_update_progress(GaimXfer *xfer) | 1219 purple_xfer_update_progress(PurpleXfer *xfer) |
1220 { | 1220 { |
1221 GaimXferUiOps *ui_ops; | 1221 PurpleXferUiOps *ui_ops; |
1222 | 1222 |
1223 g_return_if_fail(xfer != NULL); | 1223 g_return_if_fail(xfer != NULL); |
1224 | 1224 |
1225 ui_ops = gaim_xfer_get_ui_ops(xfer); | 1225 ui_ops = purple_xfer_get_ui_ops(xfer); |
1226 if (ui_ops != NULL && ui_ops->update_progress != NULL) | 1226 if (ui_ops != NULL && ui_ops->update_progress != NULL) |
1227 ui_ops->update_progress(xfer, gaim_xfer_get_progress(xfer)); | 1227 ui_ops->update_progress(xfer, purple_xfer_get_progress(xfer)); |
1228 } | 1228 } |
1229 | 1229 |
1230 | 1230 |
1231 /************************************************************************** | 1231 /************************************************************************** |
1232 * File Transfer Subsystem API | 1232 * File Transfer Subsystem API |
1233 **************************************************************************/ | 1233 **************************************************************************/ |
1234 void * | 1234 void * |
1235 gaim_xfers_get_handle(void) { | 1235 purple_xfers_get_handle(void) { |
1236 static int handle = 0; | 1236 static int handle = 0; |
1237 | 1237 |
1238 return &handle; | 1238 return &handle; |
1239 } | 1239 } |
1240 | 1240 |
1241 void | 1241 void |
1242 gaim_xfers_init(void) { | 1242 purple_xfers_init(void) { |
1243 void *handle = gaim_xfers_get_handle(); | 1243 void *handle = purple_xfers_get_handle(); |
1244 | 1244 |
1245 /* register signals */ | 1245 /* register signals */ |
1246 gaim_signal_register(handle, "file-recv-accept", | 1246 purple_signal_register(handle, "file-recv-accept", |
1247 gaim_marshal_VOID__POINTER, NULL, 1, | 1247 purple_marshal_VOID__POINTER, NULL, 1, |
1248 gaim_value_new(GAIM_TYPE_SUBTYPE, | 1248 purple_value_new(PURPLE_TYPE_SUBTYPE, |
1249 GAIM_SUBTYPE_XFER)); | 1249 PURPLE_SUBTYPE_XFER)); |
1250 gaim_signal_register(handle, "file-send-accept", | 1250 purple_signal_register(handle, "file-send-accept", |
1251 gaim_marshal_VOID__POINTER, NULL, 1, | 1251 purple_marshal_VOID__POINTER, NULL, 1, |
1252 gaim_value_new(GAIM_TYPE_SUBTYPE, | 1252 purple_value_new(PURPLE_TYPE_SUBTYPE, |
1253 GAIM_SUBTYPE_XFER)); | 1253 PURPLE_SUBTYPE_XFER)); |
1254 gaim_signal_register(handle, "file-recv-start", | 1254 purple_signal_register(handle, "file-recv-start", |
1255 gaim_marshal_VOID__POINTER, NULL, 1, | 1255 purple_marshal_VOID__POINTER, NULL, 1, |
1256 gaim_value_new(GAIM_TYPE_SUBTYPE, | 1256 purple_value_new(PURPLE_TYPE_SUBTYPE, |
1257 GAIM_SUBTYPE_XFER)); | 1257 PURPLE_SUBTYPE_XFER)); |
1258 gaim_signal_register(handle, "file-send-start", | 1258 purple_signal_register(handle, "file-send-start", |
1259 gaim_marshal_VOID__POINTER, NULL, 1, | 1259 purple_marshal_VOID__POINTER, NULL, 1, |
1260 gaim_value_new(GAIM_TYPE_SUBTYPE, | 1260 purple_value_new(PURPLE_TYPE_SUBTYPE, |
1261 GAIM_SUBTYPE_XFER)); | 1261 PURPLE_SUBTYPE_XFER)); |
1262 gaim_signal_register(handle, "file-send-cancel", | 1262 purple_signal_register(handle, "file-send-cancel", |
1263 gaim_marshal_VOID__POINTER, NULL, 1, | 1263 purple_marshal_VOID__POINTER, NULL, 1, |
1264 gaim_value_new(GAIM_TYPE_SUBTYPE, | 1264 purple_value_new(PURPLE_TYPE_SUBTYPE, |
1265 GAIM_SUBTYPE_XFER)); | 1265 PURPLE_SUBTYPE_XFER)); |
1266 gaim_signal_register(handle, "file-recv-cancel", | 1266 purple_signal_register(handle, "file-recv-cancel", |
1267 gaim_marshal_VOID__POINTER, NULL, 1, | 1267 purple_marshal_VOID__POINTER, NULL, 1, |
1268 gaim_value_new(GAIM_TYPE_SUBTYPE, | 1268 purple_value_new(PURPLE_TYPE_SUBTYPE, |
1269 GAIM_SUBTYPE_XFER)); | 1269 PURPLE_SUBTYPE_XFER)); |
1270 gaim_signal_register(handle, "file-send-complete", | 1270 purple_signal_register(handle, "file-send-complete", |
1271 gaim_marshal_VOID__POINTER, NULL, 1, | 1271 purple_marshal_VOID__POINTER, NULL, 1, |
1272 gaim_value_new(GAIM_TYPE_SUBTYPE, | 1272 purple_value_new(PURPLE_TYPE_SUBTYPE, |
1273 GAIM_SUBTYPE_XFER)); | 1273 PURPLE_SUBTYPE_XFER)); |
1274 gaim_signal_register(handle, "file-recv-complete", | 1274 purple_signal_register(handle, "file-recv-complete", |
1275 gaim_marshal_VOID__POINTER, NULL, 1, | 1275 purple_marshal_VOID__POINTER, NULL, 1, |
1276 gaim_value_new(GAIM_TYPE_SUBTYPE, | 1276 purple_value_new(PURPLE_TYPE_SUBTYPE, |
1277 GAIM_SUBTYPE_XFER)); | 1277 PURPLE_SUBTYPE_XFER)); |
1278 gaim_signal_register(handle, "file-recv-request", | 1278 purple_signal_register(handle, "file-recv-request", |
1279 gaim_marshal_VOID__POINTER, NULL, 1, | 1279 purple_marshal_VOID__POINTER, NULL, 1, |
1280 gaim_value_new(GAIM_TYPE_SUBTYPE, | 1280 purple_value_new(PURPLE_TYPE_SUBTYPE, |
1281 GAIM_SUBTYPE_XFER)); | 1281 PURPLE_SUBTYPE_XFER)); |
1282 } | 1282 } |
1283 | 1283 |
1284 void | 1284 void |
1285 gaim_xfers_uninit(void) { | 1285 purple_xfers_uninit(void) { |
1286 gaim_signals_disconnect_by_handle(gaim_xfers_get_handle()); | 1286 purple_signals_disconnect_by_handle(purple_xfers_get_handle()); |
1287 } | 1287 } |
1288 | 1288 |
1289 void | 1289 void |
1290 gaim_xfers_set_ui_ops(GaimXferUiOps *ops) { | 1290 purple_xfers_set_ui_ops(PurpleXferUiOps *ops) { |
1291 xfer_ui_ops = ops; | 1291 xfer_ui_ops = ops; |
1292 } | 1292 } |
1293 | 1293 |
1294 GaimXferUiOps * | 1294 PurpleXferUiOps * |
1295 gaim_xfers_get_ui_ops(void) { | 1295 purple_xfers_get_ui_ops(void) { |
1296 return xfer_ui_ops; | 1296 return xfer_ui_ops; |
1297 } | 1297 } |