libpurple/ft.c

Tue, 06 Apr 2010 09:52:27 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Tue, 06 Apr 2010 09:52:27 +0000
changeset 29968
1bab736e15da
parent 29822
7c6c2df6f9a2
child 30123
fe01edb2dfa2
permissions
-rw-r--r--

Does anyone know the purpose of the ui_write, ui_read and data_not_sent
FT UI callbacks? It looks like they allow a UI to decide how to safe
incoming file transfers? They're not used in Pidgin or Finch. Are
they used elsewhere?

Valgrind is complaining about an invalid free. I think it happens either
when the local user cancels a file transfer or when the remote user
cancels a file transfer. I think this change fixes it.

Revision ca223fea0a1ee7ba9432adb1f34824a1c1d55d8b is related to these
callbacks and to this change by foufou33@ gee male dot com

The valgrind error is:
==23064== Invalid free() / delete / delete[]
==23064== at 0x4C24D68: free (vg_replace_malloc.c:325)
==23064== by 0x9293209: g_array_free (in /lib/libglib-2.0.so.0.2200.3)
==23064== by 0x95B1995: purple_xfer_priv_data_destroy (ft.c:71)
==23064== by 0x92AA5D1: ??? (in /lib/libglib-2.0.so.0.2200.3)
==23064== by 0x92AAE17: g_hash_table_remove_all (in /lib/libglib-2.0.so.0.2200.3)
==23064== by 0x92AAFC4: g_hash_table_destroy (in /lib/libglib-2.0.so.0.2200.3)
==23064== by 0x95B579C: purple_xfers_uninit (ft.c:1642)
==23064== by 0x95ACF08: purple_core_quit (core.c:238)
==23064== by 0x43EB3E: gtk_blist_delete_cb (gtkblist.c:227)
==23064== by 0x6F9A727: ??? (in /usr/lib/libgtk-x11-2.0.so.0.1800.3)
==23064== Address 0x2355f0e0 is not stack'd, malloc'd or (recently) free'd

4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1 /**
7820
06fc9f66d2cb [gaim-migrate @ 8472]
Mark Doliner <markdoliner@pidgin.im>
parents: 7805
diff changeset
2 * @file ft.c File Transfer API
20330
650a7af9c238 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@pidgin.im>
parents: 19859
diff changeset
3 */
650a7af9c238 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@pidgin.im>
parents: 19859
diff changeset
4
650a7af9c238 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@pidgin.im>
parents: 19859
diff changeset
5 /* purple
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
6 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
7 * Purple is the legal property of its developers, whose names are too numerous
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7820
diff changeset
8 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7820
diff changeset
9 * source distribution.
4538
929fb97f4e7f [gaim-migrate @ 4817]
Nathan Walp <nwalp@pidgin.im>
parents: 4528
diff changeset
10 *
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
11 * This program is free software; you can redistribute it and/or modify
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
12 * it under the terms of the GNU General Public License as published by
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
13 * the Free Software Foundation; either version 2 of the License, or
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
14 * (at your option) any later version.
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
15 *
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
16 * This program is distributed in the hope that it will be useful,
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
19 * GNU General Public License for more details.
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
20 *
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
22 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19733
diff changeset
23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
19733
ec657d978c5a disapproval of revision 'f08436883bb16f29affdc63e9fd86ff278ed368f'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19732
diff changeset
24 *
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
25 */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5681
diff changeset
26 #include "internal.h"
17852
174c0d122a79 Add new function purple_xfer_get_remote_user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17293
diff changeset
27 #include "dbus-maybe.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5681
diff changeset
28 #include "ft.h"
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents: 8208
diff changeset
29 #include "network.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5681
diff changeset
30 #include "notify.h"
6241
34d166a31152 [gaim-migrate @ 6735]
Christian Hammond <chipx86@chipx86.com>
parents: 6240
diff changeset
31 #include "prefs.h"
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
32 #include "proxy.h"
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
33 #include "request.h"
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
34 #include "util.h"
22194
3e48f2d3d083 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 21985
diff changeset
35 #include "debug.h"
5494
410d120ef10d [gaim-migrate @ 5890]
Herman Bloggs <herman@bluedigits.com>
parents: 5436
diff changeset
36
15280
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
37 #define FT_INITIAL_BUFFER_SIZE 4096
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
38 #define FT_MAX_BUFFER_SIZE 65535
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
39
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
40 static PurpleXferUiOps *xfer_ui_ops = NULL;
15702
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
41 static GList *xfers;
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
42
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
43 /*
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
44 * A hack to store more data since we can't extend the size of PurpleXfer
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
45 * easily.
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
46 */
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
47 static GHashTable *xfers_data = NULL;
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
48
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
49 typedef struct _PurpleXferPrivData {
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
50 /*
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
51 * Used to moderate the file transfer when either the read/write ui_ops are
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
52 * set or fd is not set. In those cases, the UI/prpl call the respective
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
53 * function, which is somewhat akin to a fd watch being triggered.
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
54 */
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
55 enum {
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
56 PURPLE_XFER_READY_NONE = 0x0,
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
57 PURPLE_XFER_READY_UI = 0x1,
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
58 PURPLE_XFER_READY_PRPL = 0x2,
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
59 } ready;
29968
1bab736e15da Does anyone know the purpose of the ui_write, ui_read and data_not_sent
Mark Doliner <markdoliner@pidgin.im>
parents: 29822
diff changeset
60
1bab736e15da Does anyone know the purpose of the ui_write, ui_read and data_not_sent
Mark Doliner <markdoliner@pidgin.im>
parents: 29822
diff changeset
61 /* TODO: Should really use a PurpleCircBuffer for this. */
29533
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
62 GByteArray *buffer;
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
63 } PurpleXferPrivData;
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
64
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
65 static int purple_xfer_choose_file(PurpleXfer *xfer);
14967
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
66
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
67 static void
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
68 purple_xfer_priv_data_destroy(gpointer data)
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
69 {
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
70 PurpleXferPrivData *priv = data;
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
71
29533
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
72 if (priv->buffer)
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
73 g_byte_array_free(priv->buffer, TRUE);
29686
f9dee36112d0 propagate from branch 'im.pidgin.pidgin' (head 3180b88b4c1b8e73c22589457b99d2c1b6096bf4)
Paul Aurich <darkrain42@pidgin.im>
parents: 29232 29685
diff changeset
74
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
75 g_free(priv);
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
76 }
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
77
29168
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
78 static const gchar *
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
79 purple_xfer_status_type_to_string(PurpleXferStatusType type)
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
80 {
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
81 static const struct {
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
82 PurpleXferStatusType type;
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
83 const char *name;
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
84 } type_names[] = {
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
85 { PURPLE_XFER_STATUS_UNKNOWN, "unknown" },
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
86 { PURPLE_XFER_STATUS_NOT_STARTED, "not started" },
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
87 { PURPLE_XFER_STATUS_ACCEPTED, "accepted" },
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
88 { PURPLE_XFER_STATUS_STARTED, "started" },
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
89 { PURPLE_XFER_STATUS_DONE, "done" },
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
90 { PURPLE_XFER_STATUS_CANCEL_LOCAL, "cancelled locally" },
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
91 { PURPLE_XFER_STATUS_CANCEL_REMOTE, "cancelled remotely" }
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
92 };
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
93 int i;
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
94
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
95 for (i = 0; i < G_N_ELEMENTS(type_names); ++i)
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
96 if (type_names[i].type == type)
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
97 return type_names[i].name;
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
98
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
99 return "invalid state";
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
100 }
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
101
15702
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
102 GList *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
103 purple_xfers_get_all()
15702
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
104 {
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
105 return xfers;
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
106 }
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
107
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
108 PurpleXfer *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
109 purple_xfer_new(PurpleAccount *account, PurpleXferType type, const char *who)
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
110 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
111 PurpleXfer *xfer;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
112 PurpleXferUiOps *ui_ops;
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
113 PurpleXferPrivData *priv;
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
114
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
115 g_return_val_if_fail(type != PURPLE_XFER_UNKNOWN, NULL);
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
116 g_return_val_if_fail(account != NULL, NULL);
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
117 g_return_val_if_fail(who != NULL, NULL);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
118
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
119 xfer = g_new0(PurpleXfer, 1);
17852
174c0d122a79 Add new function purple_xfer_get_remote_user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17293
diff changeset
120 PURPLE_DBUS_REGISTER_POINTER(xfer, PurpleXfer);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
121
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
122 xfer->ref = 1;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
123 xfer->type = type;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
124 xfer->account = account;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
125 xfer->who = g_strdup(who);
29533
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
126 xfer->ui_ops = ui_ops = purple_xfers_get_ui_ops();
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
127 xfer->message = NULL;
15280
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
128 xfer->current_buffer_size = FT_INITIAL_BUFFER_SIZE;
20061
c1e53ac90b75 grab revision ae2654a1c8a8119292950ba10857627abf2915f8 Initialize file-descriptors to -1.
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
129 xfer->fd = -1;
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
130
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
131 priv = g_new0(PurpleXferPrivData, 1);
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
132 priv->ready = PURPLE_XFER_READY_NONE;
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
133
29533
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
134 if (ui_ops && ui_ops->data_not_sent) {
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
135 /* If the ui will handle unsent data no need for buffer */
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
136 priv->buffer = NULL;
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
137 } else {
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
138 priv->buffer = g_byte_array_sized_new(FT_INITIAL_BUFFER_SIZE);
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
139 }
29686
f9dee36112d0 propagate from branch 'im.pidgin.pidgin' (head 3180b88b4c1b8e73c22589457b99d2c1b6096bf4)
Paul Aurich <darkrain42@pidgin.im>
parents: 29232 29685
diff changeset
140
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
141 g_hash_table_insert(xfers_data, xfer, priv);
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
142
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
143 ui_ops = purple_xfer_get_ui_ops(xfer);
5169
091d71968b59 [gaim-migrate @ 5533]
Mark Doliner <markdoliner@pidgin.im>
parents: 5164
diff changeset
144
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
145 if (ui_ops != NULL && ui_ops->new_xfer != NULL)
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
146 ui_ops->new_xfer(xfer);
5169
091d71968b59 [gaim-migrate @ 5533]
Mark Doliner <markdoliner@pidgin.im>
parents: 5164
diff changeset
147
15702
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
148 xfers = g_list_prepend(xfers, xfer);
29157
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
149
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
150 if (purple_debug_is_verbose())
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
151 purple_debug_info("xfer", "new %p [%d]\n", xfer, xfer->ref);
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
152
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
153 return xfer;
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
154 }
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
155
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
156 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
157 purple_xfer_destroy(PurpleXfer *xfer)
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
158 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
159 PurpleXferUiOps *ui_ops;
4247
a77b46afa096 [gaim-migrate @ 4497]
Christian Hammond <chipx86@chipx86.com>
parents: 4245
diff changeset
160
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
161 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
162
29157
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
163 if (purple_debug_is_verbose())
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
164 purple_debug_info("xfer", "destroyed %p [%d]\n", xfer, xfer->ref);
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
165
9512
d51da219ffb4 [gaim-migrate @ 10339]
Mark Doliner <markdoliner@pidgin.im>
parents: 9511
diff changeset
166 /* Close the file browser, if it's open */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
167 purple_request_close_with_handle(xfer);
9512
d51da219ffb4 [gaim-migrate @ 10339]
Mark Doliner <markdoliner@pidgin.im>
parents: 9511
diff changeset
168
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
169 if (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_STARTED)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
170 purple_xfer_cancel_local(xfer);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
171
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
172 ui_ops = purple_xfer_get_ui_ops(xfer);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
173
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
174 if (ui_ops != NULL && ui_ops->destroy != NULL)
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
175 ui_ops->destroy(xfer);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
176
9789
9f056394f7f0 [gaim-migrate @ 10657]
Mark Doliner <markdoliner@pidgin.im>
parents: 9788
diff changeset
177 g_free(xfer->who);
9f056394f7f0 [gaim-migrate @ 10657]
Mark Doliner <markdoliner@pidgin.im>
parents: 9788
diff changeset
178 g_free(xfer->filename);
9f056394f7f0 [gaim-migrate @ 10657]
Mark Doliner <markdoliner@pidgin.im>
parents: 9788
diff changeset
179 g_free(xfer->remote_ip);
9f056394f7f0 [gaim-migrate @ 10657]
Mark Doliner <markdoliner@pidgin.im>
parents: 9788
diff changeset
180 g_free(xfer->local_filename);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
181
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
182 g_hash_table_remove(xfers_data, xfer);
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
183
17852
174c0d122a79 Add new function purple_xfer_get_remote_user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17293
diff changeset
184 PURPLE_DBUS_UNREGISTER_POINTER(xfer);
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
185 xfers = g_list_remove(xfers, xfer);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
186 g_free(xfer);
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
187 }
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
188
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
189 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
190 purple_xfer_ref(PurpleXfer *xfer)
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
191 {
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
192 g_return_if_fail(xfer != NULL);
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
193
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
194 xfer->ref++;
29157
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
195
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
196 if (purple_debug_is_verbose())
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
197 purple_debug_info("xfer", "ref'd %p [%d]\n", xfer, xfer->ref);
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
198 }
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
199
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
200 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
201 purple_xfer_unref(PurpleXfer *xfer)
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
202 {
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
203 g_return_if_fail(xfer != NULL);
12250
5b14301dd1ec [gaim-migrate @ 14552]
Richard Laager <rlaager@pidgin.im>
parents: 12151
diff changeset
204 g_return_if_fail(xfer->ref > 0);
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
205
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
206 xfer->ref--;
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
207
29157
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
208 if (purple_debug_is_verbose())
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
209 purple_debug_info("xfer", "unref'd %p [%d]\n", xfer, xfer->ref);
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
210
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
211 if (xfer->ref == 0)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
212 purple_xfer_destroy(xfer);
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
213 }
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
214
9788
ca43717a431b [gaim-migrate @ 10656]
Dave West <kat@users.sourceforge.net>
parents: 9785
diff changeset
215 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
216 purple_xfer_set_status(PurpleXfer *xfer, PurpleXferStatusType status)
9788
ca43717a431b [gaim-migrate @ 10656]
Dave West <kat@users.sourceforge.net>
parents: 9785
diff changeset
217 {
ca43717a431b [gaim-migrate @ 10656]
Dave West <kat@users.sourceforge.net>
parents: 9785
diff changeset
218 g_return_if_fail(xfer != NULL);
ca43717a431b [gaim-migrate @ 10656]
Dave West <kat@users.sourceforge.net>
parents: 9785
diff changeset
219
29168
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
220 if (purple_debug_is_verbose())
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
221 purple_debug_info("xfer", "Changing status of xfer %p from %s to %s\n",
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
222 xfer, purple_xfer_status_type_to_string(xfer->status),
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
223 purple_xfer_status_type_to_string(status));
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
224
27993
857add008895 ft: Don't emit a changed-status signal for something that isn't a change.
Paul Aurich <darkrain42@pidgin.im>
parents: 27944
diff changeset
225 if (xfer->status == status)
857add008895 ft: Don't emit a changed-status signal for something that isn't a change.
Paul Aurich <darkrain42@pidgin.im>
parents: 27944
diff changeset
226 return;
857add008895 ft: Don't emit a changed-status signal for something that isn't a change.
Paul Aurich <darkrain42@pidgin.im>
parents: 27944
diff changeset
227
27942
ace850ade78d Set xfer->status before emitting signals in purple_xfer_set_status.
Paul Aurich <darkrain42@pidgin.im>
parents: 27655
diff changeset
228 xfer->status = status;
ace850ade78d Set xfer->status before emitting signals in purple_xfer_set_status.
Paul Aurich <darkrain42@pidgin.im>
parents: 27655
diff changeset
229
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
230 if(xfer->type == PURPLE_XFER_SEND) {
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
231 switch(status) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
232 case PURPLE_XFER_STATUS_ACCEPTED:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
233 purple_signal_emit(purple_xfers_get_handle(), "file-send-accept", xfer);
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
234 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
235 case PURPLE_XFER_STATUS_STARTED:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
236 purple_signal_emit(purple_xfers_get_handle(), "file-send-start", xfer);
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
237 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
238 case PURPLE_XFER_STATUS_DONE:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
239 purple_signal_emit(purple_xfers_get_handle(), "file-send-complete", xfer);
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
240 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
241 case PURPLE_XFER_STATUS_CANCEL_LOCAL:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
242 case PURPLE_XFER_STATUS_CANCEL_REMOTE:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
243 purple_signal_emit(purple_xfers_get_handle(), "file-send-cancel", xfer);
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
244 break;
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
245 default:
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
246 break;
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
247 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
248 } else if(xfer->type == PURPLE_XFER_RECEIVE) {
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
249 switch(status) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
250 case PURPLE_XFER_STATUS_ACCEPTED:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
251 purple_signal_emit(purple_xfers_get_handle(), "file-recv-accept", xfer);
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
252 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
253 case PURPLE_XFER_STATUS_STARTED:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
254 purple_signal_emit(purple_xfers_get_handle(), "file-recv-start", xfer);
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
255 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
256 case PURPLE_XFER_STATUS_DONE:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
257 purple_signal_emit(purple_xfers_get_handle(), "file-recv-complete", xfer);
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
258 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
259 case PURPLE_XFER_STATUS_CANCEL_LOCAL:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
260 case PURPLE_XFER_STATUS_CANCEL_REMOTE:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
261 purple_signal_emit(purple_xfers_get_handle(), "file-recv-cancel", xfer);
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
262 break;
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
263 default:
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
264 break;
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
265 }
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
266 }
9788
ca43717a431b [gaim-migrate @ 10656]
Dave West <kat@users.sourceforge.net>
parents: 9785
diff changeset
267 }
ca43717a431b [gaim-migrate @ 10656]
Dave West <kat@users.sourceforge.net>
parents: 9785
diff changeset
268
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
269 void purple_xfer_conversation_write(PurpleXfer *xfer, char *message, gboolean is_error)
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
270 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
271 PurpleConversation *conv = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
272 PurpleMessageFlags flags = PURPLE_MESSAGE_SYSTEM;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10654
diff changeset
273 char *escaped;
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
274
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
275 g_return_if_fail(xfer != NULL);
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
276 g_return_if_fail(message != NULL);
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
277
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
278 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, xfer->who,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
279 purple_xfer_get_account(xfer));
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
280
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
281 if (conv == NULL)
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
282 return;
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
283
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10654
diff changeset
284 escaped = g_markup_escape_text(message, -1);
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
285
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
286 if (is_error)
29019
9cb4fa62242d ft: Properly set a bitmask field (so it includes PURPLE_MESSAGE_SYSTEM like
Florian Quèze <florian@instantbird.org>
parents: 28659
diff changeset
287 flags |= PURPLE_MESSAGE_ERROR;
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
288
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
289 purple_conversation_write(conv, NULL, escaped, flags, time(NULL));
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10654
diff changeset
290 g_free(escaped);
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
291 }
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
292
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
293 static void purple_xfer_show_file_error(PurpleXfer *xfer, const char *filename)
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
294 {
10919
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
295 int err = errno;
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
296 gchar *msg = NULL, *utf8;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
297 PurpleXferType xfer_type = purple_xfer_get_type(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
298 PurpleAccount *account = purple_xfer_get_account(xfer);
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
299
10919
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
300 utf8 = g_filename_to_utf8(filename, -1, NULL, NULL, NULL);
9796
dd7499147bed [gaim-migrate @ 10664]
Dave West <kat@users.sourceforge.net>
parents: 9795
diff changeset
301 switch(xfer_type) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
302 case PURPLE_XFER_SEND:
9796
dd7499147bed [gaim-migrate @ 10664]
Dave West <kat@users.sourceforge.net>
parents: 9795
diff changeset
303 msg = g_strdup_printf(_("Error reading %s: \n%s.\n"),
21389
e1dd8142bb87 replace most calls to strerror with calls to g_strerror. strerror will return
Nathan Walp <nwalp@pidgin.im>
parents: 20147
diff changeset
304 utf8, g_strerror(err));
9795
80d4d3be52d7 [gaim-migrate @ 10663]
Luke Schierer <lschiere@pidgin.im>
parents: 9789
diff changeset
305 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
306 case PURPLE_XFER_RECEIVE:
9796
dd7499147bed [gaim-migrate @ 10664]
Dave West <kat@users.sourceforge.net>
parents: 9795
diff changeset
307 msg = g_strdup_printf(_("Error writing %s: \n%s.\n"),
21389
e1dd8142bb87 replace most calls to strerror with calls to g_strerror. strerror will return
Nathan Walp <nwalp@pidgin.im>
parents: 20147
diff changeset
308 utf8, g_strerror(err));
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
309 break;
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
310 default:
9796
dd7499147bed [gaim-migrate @ 10664]
Dave West <kat@users.sourceforge.net>
parents: 9795
diff changeset
311 msg = g_strdup_printf(_("Error accessing %s: \n%s.\n"),
21389
e1dd8142bb87 replace most calls to strerror with calls to g_strerror. strerror will return
Nathan Walp <nwalp@pidgin.im>
parents: 20147
diff changeset
312 utf8, g_strerror(err));
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
313 break;
10919
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
314 }
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
315 g_free(utf8);
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
316
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
317 purple_xfer_conversation_write(xfer, msg, TRUE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
318 purple_xfer_error(xfer_type, account, xfer->who, msg);
9796
dd7499147bed [gaim-migrate @ 10664]
Dave West <kat@users.sourceforge.net>
parents: 9795
diff changeset
319 g_free(msg);
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
320 }
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
321
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
322 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
323 purple_xfer_choose_file_ok_cb(void *user_data, const char *filename)
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
324 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
325 PurpleXfer *xfer;
29155
365ee5da3b06 There's no need to call purple_xfer_get_type() repeatedly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29019
diff changeset
326 PurpleXferType type;
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
327 struct stat st;
14967
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
328 gchar *dir;
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
329
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
330 xfer = (PurpleXfer *)user_data;
29155
365ee5da3b06 There's no need to call purple_xfer_get_type() repeatedly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29019
diff changeset
331 type = purple_xfer_get_type(xfer);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
332
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 10504
diff changeset
333 if (g_stat(filename, &st) != 0) {
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
334 /* File not found. */
29155
365ee5da3b06 There's no need to call purple_xfer_get_type() repeatedly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29019
diff changeset
335 if (type == PURPLE_XFER_RECEIVE) {
15161
7a392764f0b8 [gaim-migrate @ 17885]
Daniel Atallah <datallah@pidgin.im>
parents: 14967
diff changeset
336 #ifndef _WIN32
7a392764f0b8 [gaim-migrate @ 17885]
Daniel Atallah <datallah@pidgin.im>
parents: 14967
diff changeset
337 int mode = W_OK;
7a392764f0b8 [gaim-migrate @ 17885]
Daniel Atallah <datallah@pidgin.im>
parents: 14967
diff changeset
338 #else
7a392764f0b8 [gaim-migrate @ 17885]
Daniel Atallah <datallah@pidgin.im>
parents: 14967
diff changeset
339 int mode = F_OK;
7a392764f0b8 [gaim-migrate @ 17885]
Daniel Atallah <datallah@pidgin.im>
parents: 14967
diff changeset
340 #endif
14967
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
341 dir = g_path_get_dirname(filename);
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
342
15161
7a392764f0b8 [gaim-migrate @ 17885]
Daniel Atallah <datallah@pidgin.im>
parents: 14967
diff changeset
343 if (g_access(dir, mode) == 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
344 purple_xfer_request_accepted(xfer, filename);
14967
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
345 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
346 purple_xfer_ref(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
347 purple_notify_message(
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
348 NULL, PURPLE_NOTIFY_MSG_ERROR, NULL,
14967
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
349 _("Directory is not writable."), NULL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
350 (PurpleNotifyCloseCallback)purple_xfer_choose_file, xfer);
14967
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
351 }
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
352
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
353 g_free(dir);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
354 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
355 else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
356 purple_xfer_show_file_error(xfer, filename);
29159
742ae16831fa Call purple_xfer_cancel_local instead of purple_xfer_request_denied when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29158
diff changeset
357 purple_xfer_cancel_local(xfer);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
358 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
359 }
29155
365ee5da3b06 There's no need to call purple_xfer_get_type() repeatedly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29019
diff changeset
360 else if ((type == PURPLE_XFER_SEND) && (st.st_size == 0)) {
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
361
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
362 purple_notify_error(NULL, NULL,
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
363 _("Cannot send a file of 0 bytes."), NULL);
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
364
29159
742ae16831fa Call purple_xfer_cancel_local instead of purple_xfer_request_denied when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29158
diff changeset
365 purple_xfer_cancel_local(xfer);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
366 }
29155
365ee5da3b06 There's no need to call purple_xfer_get_type() repeatedly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29019
diff changeset
367 else if ((type == PURPLE_XFER_SEND) && S_ISDIR(st.st_mode)) {
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
368 /*
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
369 * XXX - Sending a directory should be valid for some protocols.
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
370 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
371 purple_notify_error(NULL, NULL,
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
372 _("Cannot send a directory."), NULL);
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
373
29159
742ae16831fa Call purple_xfer_cancel_local instead of purple_xfer_request_denied when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29158
diff changeset
374 purple_xfer_cancel_local(xfer);
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
375 }
29155
365ee5da3b06 There's no need to call purple_xfer_get_type() repeatedly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29019
diff changeset
376 else if ((type == PURPLE_XFER_RECEIVE) && S_ISDIR(st.st_mode)) {
10919
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
377 char *msg, *utf8;
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
378 utf8 = g_filename_to_utf8(filename, -1, NULL, NULL, NULL);
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
379 msg = g_strdup_printf(
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
380 _("%s is not a regular file. Cowardly refusing to overwrite it.\n"), utf8);
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
381 g_free(utf8);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
382 purple_notify_error(NULL, NULL, msg, NULL);
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
383 g_free(msg);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
384 purple_xfer_request_denied(xfer);
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
385 }
29156
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
386 else if (type == PURPLE_XFER_SEND) {
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
387 #ifndef _WIN32
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
388 int mode = R_OK;
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
389 #else
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
390 int mode = F_OK;
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
391 #endif
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
392
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
393 if (g_access(filename, mode) == 0) {
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
394 purple_xfer_request_accepted(xfer, filename);
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
395 } else {
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
396 purple_xfer_ref(xfer);
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
397 purple_notify_message(
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
398 NULL, PURPLE_NOTIFY_MSG_ERROR, NULL,
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
399 _("File is not readable."), NULL,
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
400 (PurpleNotifyCloseCallback)purple_xfer_choose_file, xfer);
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
401 }
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
402 }
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
403 else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
404 purple_xfer_request_accepted(xfer, filename);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
405 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
406
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
407 purple_xfer_unref(xfer);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
408 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
409
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
410 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
411 purple_xfer_choose_file_cancel_cb(void *user_data, const char *filename)
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
412 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
413 PurpleXfer *xfer = (PurpleXfer *)user_data;
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
414
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
415 purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_CANCEL_LOCAL);
29159
742ae16831fa Call purple_xfer_cancel_local instead of purple_xfer_request_denied when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29158
diff changeset
416 if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND)
742ae16831fa Call purple_xfer_cancel_local instead of purple_xfer_request_denied when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29158
diff changeset
417 purple_xfer_cancel_local(xfer);
742ae16831fa Call purple_xfer_cancel_local instead of purple_xfer_request_denied when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29158
diff changeset
418 else
742ae16831fa Call purple_xfer_cancel_local instead of purple_xfer_request_denied when
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29158
diff changeset
419 purple_xfer_request_denied(xfer);
29158
5c4323a2f2b0 The PurpleXfer should be unref'd if the file selection dialog was
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29157
diff changeset
420 purple_xfer_unref(xfer);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
421 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
422
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
423 static int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
424 purple_xfer_choose_file(PurpleXfer *xfer)
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
425 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
426 purple_request_file(xfer, NULL, purple_xfer_get_filename(xfer),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
427 (purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
428 G_CALLBACK(purple_xfer_choose_file_ok_cb),
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 15884
diff changeset
429 G_CALLBACK(purple_xfer_choose_file_cancel_cb),
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 15884
diff changeset
430 purple_xfer_get_account(xfer), xfer->who, NULL,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 15884
diff changeset
431 xfer);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
432
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
433 return 0;
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
434 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
435
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
436 static int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
437 cancel_recv_cb(PurpleXfer *xfer)
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
438 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
439 purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_CANCEL_LOCAL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
440 purple_xfer_request_denied(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
441 purple_xfer_unref(xfer);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
442
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
443 return 0;
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
444 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
445
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
446 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
447 purple_xfer_ask_recv(PurpleXfer *xfer)
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
448 {
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10654
diff changeset
449 char *buf, *size_buf;
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
450 size_t size;
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
451
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
452 /* If we have already accepted the request, ask the destination file
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
453 name directly */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
454 if (purple_xfer_get_status(xfer) != PURPLE_XFER_STATUS_ACCEPTED) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
455 PurpleBuddy *buddy = purple_find_buddy(xfer->account, xfer->who);
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
456
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
457 if (purple_xfer_get_filename(xfer) != NULL)
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
458 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
459 size = purple_xfer_get_size(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
460 size_buf = purple_str_size_to_units(size);
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
461 buf = g_strdup_printf(_("%s wants to send you %s (%s)"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
462 buddy ? purple_buddy_get_alias(buddy) : xfer->who,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
463 purple_xfer_get_filename(xfer), size_buf);
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
464 g_free(size_buf);
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
465 }
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
466 else
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
467 {
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
468 buf = g_strdup_printf(_("%s wants to send you a file"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
469 buddy ? purple_buddy_get_alias(buddy) : xfer->who);
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
470 }
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
471
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
472 if (xfer->message != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
473 serv_got_im(purple_account_get_connection(xfer->account),
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
474 xfer->who, xfer->message, 0, time(NULL));
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
475
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
476 purple_request_accept_cancel(xfer, NULL, buf, NULL,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 15884
diff changeset
477 PURPLE_DEFAULT_ACTION_NONE,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 15884
diff changeset
478 xfer->account, xfer->who, NULL,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 15884
diff changeset
479 xfer,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
480 G_CALLBACK(purple_xfer_choose_file),
9976
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9941
diff changeset
481 G_CALLBACK(cancel_recv_cb));
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
482
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
483 g_free(buf);
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
484 } else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
485 purple_xfer_choose_file(xfer);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
486 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
487
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
488 static int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
489 ask_accept_ok(PurpleXfer *xfer)
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
490 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
491 purple_xfer_request_accepted(xfer, NULL);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
492
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
493 return 0;
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
494 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
495
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
496 static int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
497 ask_accept_cancel(PurpleXfer *xfer)
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
498 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
499 purple_xfer_request_denied(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
500 purple_xfer_unref(xfer);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
501
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
502 return 0;
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
503 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
504
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
505 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
506 purple_xfer_ask_accept(PurpleXfer *xfer)
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
507 {
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
508 char *buf, *buf2 = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
509 PurpleBuddy *buddy = purple_find_buddy(xfer->account, xfer->who);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
510
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
511 buf = g_strdup_printf(_("Accept file transfer request from %s?"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
512 buddy ? purple_buddy_get_alias(buddy) : xfer->who);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
513 if (purple_xfer_get_remote_ip(xfer) &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
514 purple_xfer_get_remote_port(xfer))
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
515 buf2 = g_strdup_printf(_("A file is available for download from:\n"
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
516 "Remote host: %s\nRemote port: %d"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
517 purple_xfer_get_remote_ip(xfer),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
518 purple_xfer_get_remote_port(xfer));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
519 purple_request_accept_cancel(xfer, NULL, buf, buf2,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 15884
diff changeset
520 PURPLE_DEFAULT_ACTION_NONE,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 15884
diff changeset
521 xfer->account, xfer->who, NULL,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 15884
diff changeset
522 xfer,
9976
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9941
diff changeset
523 G_CALLBACK(ask_accept_ok),
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9941
diff changeset
524 G_CALLBACK(ask_accept_cancel));
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
525 g_free(buf);
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
526 g_free(buf2);
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
527 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
528
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
529 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
530 purple_xfer_request(PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
531 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
532 g_return_if_fail(xfer != NULL);
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
533 g_return_if_fail(xfer->ops.init != NULL);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
534
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
535 purple_xfer_ref(xfer);
4247
a77b46afa096 [gaim-migrate @ 4497]
Christian Hammond <chipx86@chipx86.com>
parents: 4245
diff changeset
536
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
537 if (purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE)
13220
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
538 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
539 purple_signal_emit(purple_xfers_get_handle(), "file-recv-request", xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
540 if (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_CANCEL_LOCAL)
13220
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
541 {
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
542 /* The file-transfer was cancelled by a plugin */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
543 purple_xfer_cancel_local(xfer);
13220
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
544 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
545 else if (purple_xfer_get_filename(xfer) ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
546 purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_ACCEPTED)
13220
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
547 {
11084
b6acee973833 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents: 10919
diff changeset
548 gchar* message = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
549 PurpleBuddy *buddy = purple_find_buddy(xfer->account, xfer->who);
11084
b6acee973833 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents: 10919
diff changeset
550 message = g_strdup_printf(_("%s is offering to send file %s"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
551 buddy ? purple_buddy_get_alias(buddy) : xfer->who, purple_xfer_get_filename(xfer));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
552 purple_xfer_conversation_write(xfer, message, FALSE);
11084
b6acee973833 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents: 10919
diff changeset
553 g_free(message);
13220
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
554 /* Ask for a filename to save to if it's not already given by a plugin */
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
555 if (xfer->local_filename == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
556 purple_xfer_ask_recv(xfer);
13220
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
557 }
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
558 else
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
559 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
560 purple_xfer_ask_accept(xfer);
11084
b6acee973833 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents: 10919
diff changeset
561 }
13220
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
562 }
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
563 else
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
564 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
565 purple_xfer_choose_file(xfer);
13220
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
566 }
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
567 }
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
568
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
569 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
570 purple_xfer_request_accepted(PurpleXfer *xfer, const char *filename)
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
571 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
572 PurpleXferType type;
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
573 struct stat st;
26726
b81bcec8f359 Updates for GTK+ 3.0. Remove some deprecated functions (someone should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26373
diff changeset
574 char *msg, *utf8, *base;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
575 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
576 PurpleBuddy *buddy;
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
577
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
578 if (xfer == NULL)
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
579 return;
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
580
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
581 type = purple_xfer_get_type(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
582 account = purple_xfer_get_account(xfer);
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
583
29822
7c6c2df6f9a2 whitespace trimming
Paul Aurich <darkrain42@pidgin.im>
parents: 29821
diff changeset
584 purple_debug_misc("xfer", "request accepted for %p\n", xfer);
29168
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
585
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
586 if (!filename && type == PURPLE_XFER_RECEIVE) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
587 xfer->status = PURPLE_XFER_STATUS_ACCEPTED;
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
588 xfer->ops.init(xfer);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
589 return;
4150
fd30caf1a296 [gaim-migrate @ 4369]
Rob Flynn <gaim@robflynn.com>
parents: 3730
diff changeset
590 }
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
591
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
592 buddy = purple_find_buddy(account, xfer->who);
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
593
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
594 if (type == PURPLE_XFER_SEND) {
13595
191c2d12a00c [gaim-migrate @ 15980]
Mark Doliner <markdoliner@pidgin.im>
parents: 13220
diff changeset
595 /* Sending a file */
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
596 /* Check the filename. */
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
597 PurpleXferUiOps *ui_ops;
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
598 ui_ops = purple_xfer_get_ui_ops(xfer);
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
599
11934
97486eeddc1a [gaim-migrate @ 14225]
Richard Gobeille
parents: 11338
diff changeset
600 #ifdef _WIN32
21985
bf0e936998e4 Move some curly braces around so static analysis tools can properly detect
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21682
diff changeset
601 if (g_strrstr(filename, "../") || g_strrstr(filename, "..\\"))
11934
97486eeddc1a [gaim-migrate @ 14225]
Richard Gobeille
parents: 11338
diff changeset
602 #else
21985
bf0e936998e4 Move some curly braces around so static analysis tools can properly detect
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21682
diff changeset
603 if (g_strrstr(filename, "../"))
11934
97486eeddc1a [gaim-migrate @ 14225]
Richard Gobeille
parents: 11338
diff changeset
604 #endif
21985
bf0e936998e4 Move some curly braces around so static analysis tools can properly detect
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21682
diff changeset
605 {
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
606 utf8 = g_filename_to_utf8(filename, -1, NULL, NULL, NULL);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
607
10919
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
608 msg = g_strdup_printf(_("%s is not a valid filename.\n"), utf8);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
609 purple_xfer_error(type, account, xfer->who, msg);
10919
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
610 g_free(utf8);
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
611 g_free(msg);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
612
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
613 purple_xfer_unref(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
614 return;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
615 }
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
616
28159
567c6a03a6ea Fix building on win32, which has #define write wpurple_write (and similar for read).
Paul Aurich <darkrain42@pidgin.im>
parents: 28156
diff changeset
617 if (ui_ops == NULL || (ui_ops->ui_read == NULL && ui_ops->ui_write == NULL)) {
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
618 if (g_stat(filename, &st) == -1) {
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
619 purple_xfer_show_file_error(xfer, filename);
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
620 purple_xfer_unref(xfer);
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
621 return;
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
622 }
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
623
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
624 purple_xfer_set_local_filename(xfer, filename);
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
625 purple_xfer_set_size(xfer, st.st_size);
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
626 } else {
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
627 utf8 = g_strdup(filename);
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
628 purple_xfer_set_local_filename(xfer, filename);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
629 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
630
26726
b81bcec8f359 Updates for GTK+ 3.0. Remove some deprecated functions (someone should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26373
diff changeset
631 base = g_path_get_basename(filename);
b81bcec8f359 Updates for GTK+ 3.0. Remove some deprecated functions (someone should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26373
diff changeset
632 utf8 = g_filename_to_utf8(base, -1, NULL, NULL, NULL);
b81bcec8f359 Updates for GTK+ 3.0. Remove some deprecated functions (someone should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26373
diff changeset
633 g_free(base);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
634 purple_xfer_set_filename(xfer, utf8);
10919
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
635
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
636 msg = g_strdup_printf(_("Offering to send %s to %s"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
637 utf8, buddy ? purple_buddy_get_alias(buddy) : xfer->who);
10919
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
638 g_free(utf8);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
639 purple_xfer_conversation_write(xfer, msg, FALSE);
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
640 g_free(msg);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
641 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
642 else {
13595
191c2d12a00c [gaim-migrate @ 15980]
Mark Doliner <markdoliner@pidgin.im>
parents: 13220
diff changeset
643 /* Receiving a file */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
644 xfer->status = PURPLE_XFER_STATUS_ACCEPTED;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
645 purple_xfer_set_local_filename(xfer, filename);
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
646
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
647 msg = g_strdup_printf(_("Starting transfer of %s from %s"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
648 xfer->filename, buddy ? purple_buddy_get_alias(buddy) : xfer->who);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
649 purple_xfer_conversation_write(xfer, msg, FALSE);
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
650 g_free(msg);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
651 }
4150
fd30caf1a296 [gaim-migrate @ 4369]
Rob Flynn <gaim@robflynn.com>
parents: 3730
diff changeset
652
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
653 purple_xfer_add(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
654 xfer->ops.init(xfer);
10259
87f90d97e4fc [gaim-migrate @ 11402]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
655
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
656 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
657
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
658 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
659 purple_xfer_request_denied(PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
660 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
661 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
662
29168
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
663 purple_debug_misc("xfer", "xfer %p denied\n", xfer);
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
664
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
665 if (xfer->ops.request_denied != NULL)
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
666 xfer->ops.request_denied(xfer);
5164
dda3bf92f195 [gaim-migrate @ 5528]
Mark Doliner <markdoliner@pidgin.im>
parents: 5146
diff changeset
667
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
668 purple_xfer_unref(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
669 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
670
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
671 PurpleXferType
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
672 purple_xfer_get_type(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
673 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
674 g_return_val_if_fail(xfer != NULL, PURPLE_XFER_UNKNOWN);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
675
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
676 return xfer->type;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
677 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
678
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
679 PurpleAccount *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
680 purple_xfer_get_account(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
681 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
682 g_return_val_if_fail(xfer != NULL, NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
683
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
684 return xfer->account;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
685 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
686
17852
174c0d122a79 Add new function purple_xfer_get_remote_user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17293
diff changeset
687 const char *
174c0d122a79 Add new function purple_xfer_get_remote_user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17293
diff changeset
688 purple_xfer_get_remote_user(const PurpleXfer *xfer)
174c0d122a79 Add new function purple_xfer_get_remote_user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17293
diff changeset
689 {
174c0d122a79 Add new function purple_xfer_get_remote_user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17293
diff changeset
690 g_return_val_if_fail(xfer != NULL, NULL);
174c0d122a79 Add new function purple_xfer_get_remote_user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17293
diff changeset
691 return xfer->who;
174c0d122a79 Add new function purple_xfer_get_remote_user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17293
diff changeset
692 }
174c0d122a79 Add new function purple_xfer_get_remote_user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17293
diff changeset
693
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
694 PurpleXferStatusType
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
695 purple_xfer_get_status(const PurpleXfer *xfer)
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
696 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
697 g_return_val_if_fail(xfer != NULL, PURPLE_XFER_STATUS_UNKNOWN);
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
698
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
699 return xfer->status;
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
700 }
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
701
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
702 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
703 purple_xfer_is_canceled(const PurpleXfer *xfer)
7738
ebb766ef2146 [gaim-migrate @ 8383]
Tim Ringenbach <marv@pidgin.im>
parents: 7272
diff changeset
704 {
ebb766ef2146 [gaim-migrate @ 8383]
Tim Ringenbach <marv@pidgin.im>
parents: 7272
diff changeset
705 g_return_val_if_fail(xfer != NULL, TRUE);
ebb766ef2146 [gaim-migrate @ 8383]
Tim Ringenbach <marv@pidgin.im>
parents: 7272
diff changeset
706
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
707 if ((purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_CANCEL_LOCAL) ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
708 (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_CANCEL_REMOTE))
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
709 return TRUE;
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
710 else
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
711 return FALSE;
7738
ebb766ef2146 [gaim-migrate @ 8383]
Tim Ringenbach <marv@pidgin.im>
parents: 7272
diff changeset
712 }
ebb766ef2146 [gaim-migrate @ 8383]
Tim Ringenbach <marv@pidgin.im>
parents: 7272
diff changeset
713
4539
44671e1ce14e [gaim-migrate @ 4818]
Christian Hammond <chipx86@chipx86.com>
parents: 4538
diff changeset
714 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
715 purple_xfer_is_completed(const PurpleXfer *xfer)
4539
44671e1ce14e [gaim-migrate @ 4818]
Christian Hammond <chipx86@chipx86.com>
parents: 4538
diff changeset
716 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
717 g_return_val_if_fail(xfer != NULL, TRUE);
4539
44671e1ce14e [gaim-migrate @ 4818]
Christian Hammond <chipx86@chipx86.com>
parents: 4538
diff changeset
718
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
719 return (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_DONE);
4539
44671e1ce14e [gaim-migrate @ 4818]
Christian Hammond <chipx86@chipx86.com>
parents: 4538
diff changeset
720 }
44671e1ce14e [gaim-migrate @ 4818]
Christian Hammond <chipx86@chipx86.com>
parents: 4538
diff changeset
721
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
722 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
723 purple_xfer_get_filename(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
724 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
725 g_return_val_if_fail(xfer != NULL, NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
726
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
727 return xfer->filename;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
728 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
729
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
730 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
731 purple_xfer_get_local_filename(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
732 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
733 g_return_val_if_fail(xfer != NULL, NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
734
4605
67526771e679 [gaim-migrate @ 4892]
Mark Doliner <markdoliner@pidgin.im>
parents: 4595
diff changeset
735 return xfer->local_filename;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
736 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
737
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
738 size_t
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
739 purple_xfer_get_bytes_sent(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
740 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
741 g_return_val_if_fail(xfer != NULL, 0);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
742
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
743 return xfer->bytes_sent;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
744 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
745
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
746 size_t
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
747 purple_xfer_get_bytes_remaining(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
748 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
749 g_return_val_if_fail(xfer != NULL, 0);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
750
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
751 return xfer->bytes_remaining;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
752 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
753
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
754 size_t
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
755 purple_xfer_get_size(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
756 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
757 g_return_val_if_fail(xfer != NULL, 0);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
758
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
759 return xfer->size;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
760 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
761
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
762 double
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
763 purple_xfer_get_progress(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
764 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
765 g_return_val_if_fail(xfer != NULL, 0.0);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
766
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
767 if (purple_xfer_get_size(xfer) == 0)
4517
998c580f7f56 [gaim-migrate @ 4795]
Christian Hammond <chipx86@chipx86.com>
parents: 4514
diff changeset
768 return 0.0;
998c580f7f56 [gaim-migrate @ 4795]
Christian Hammond <chipx86@chipx86.com>
parents: 4514
diff changeset
769
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
770 return ((double)purple_xfer_get_bytes_sent(xfer) /
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
771 (double)purple_xfer_get_size(xfer));
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
772 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
773
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
774 unsigned int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
775 purple_xfer_get_local_port(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
776 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
777 g_return_val_if_fail(xfer != NULL, -1);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
778
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
779 return xfer->local_port;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
780 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
781
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
782 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
783 purple_xfer_get_remote_ip(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
784 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
785 g_return_val_if_fail(xfer != NULL, NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
786
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
787 return xfer->remote_ip;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
788 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
789
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
790 unsigned int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
791 purple_xfer_get_remote_port(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
792 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
793 g_return_val_if_fail(xfer != NULL, -1);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
794
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
795 return xfer->remote_port;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
796 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
797
22338
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
798 time_t
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
799 purple_xfer_get_start_time(const PurpleXfer *xfer)
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
800 {
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
801 g_return_val_if_fail(xfer != NULL, 0);
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
802
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
803 return xfer->start_time;
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
804 }
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
805
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
806 time_t
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
807 purple_xfer_get_end_time(const PurpleXfer *xfer)
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
808 {
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
809 g_return_val_if_fail(xfer != NULL, 0);
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
810
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
811 return xfer->end_time;
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
812 }
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
813
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
814 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
815 purple_xfer_set_completed(PurpleXfer *xfer, gboolean completed)
4538
929fb97f4e7f [gaim-migrate @ 4817]
Nathan Walp <nwalp@pidgin.im>
parents: 4528
diff changeset
816 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
817 PurpleXferUiOps *ui_ops;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
818
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
819 g_return_if_fail(xfer != NULL);
4538
929fb97f4e7f [gaim-migrate @ 4817]
Nathan Walp <nwalp@pidgin.im>
parents: 4528
diff changeset
820
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
821 if (completed == TRUE) {
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
822 char *msg = NULL;
27655
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
823 PurpleConversation *conv;
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
824
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
825 purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_DONE);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
826
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
827 if (purple_xfer_get_filename(xfer) != NULL)
27655
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
828 {
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
829 char *filename = g_markup_escape_text(purple_xfer_get_filename(xfer), -1);
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
830 if (purple_xfer_get_local_filename(xfer)
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
831 && purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE)
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
832 {
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
833 char *local = g_markup_escape_text(purple_xfer_get_local_filename(xfer), -1);
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
834 msg = g_strdup_printf(_("Transfer of file <A HREF=\"file://%s\">%s</A> complete"),
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
835 local, filename);
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
836 g_free(local);
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
837 }
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
838 else
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
839 msg = g_strdup_printf(_("Transfer of file %s complete"),
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
840 filename);
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
841 g_free(filename);
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
842 }
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
843 else
25359
ea172b7ea601 The remainder of a patch from fqueze to fix some incorrect *printf() function
Daniel Atallah <datallah@pidgin.im>
parents: 24672
diff changeset
844 msg = g_strdup(_("File transfer complete"));
27655
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
845
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
846 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, xfer->who,
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
847 purple_xfer_get_account(xfer));
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
848
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
849 if (conv != NULL)
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
850 purple_conversation_write(conv, NULL, msg, PURPLE_MESSAGE_SYSTEM, time(NULL));
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
851 g_free(msg);
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
852 }
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
853
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
854 ui_ops = purple_xfer_get_ui_ops(xfer);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
855
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
856 if (ui_ops != NULL && ui_ops->update_progress != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
857 ui_ops->update_progress(xfer, purple_xfer_get_progress(xfer));
4538
929fb97f4e7f [gaim-migrate @ 4817]
Nathan Walp <nwalp@pidgin.im>
parents: 4528
diff changeset
858 }
929fb97f4e7f [gaim-migrate @ 4817]
Nathan Walp <nwalp@pidgin.im>
parents: 4528
diff changeset
859
929fb97f4e7f [gaim-migrate @ 4817]
Nathan Walp <nwalp@pidgin.im>
parents: 4528
diff changeset
860 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
861 purple_xfer_set_message(PurpleXfer *xfer, const char *message)
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
862 {
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
863 g_return_if_fail(xfer != NULL);
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
864
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
865 g_free(xfer->message);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13838
diff changeset
866 xfer->message = g_strdup(message);
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
867 }
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
868
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
869 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
870 purple_xfer_set_filename(PurpleXfer *xfer, const char *filename)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
871 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
872 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
873
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13838
diff changeset
874 g_free(xfer->filename);
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13838
diff changeset
875 xfer->filename = g_strdup(filename);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
876 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
877
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
878 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
879 purple_xfer_set_local_filename(PurpleXfer *xfer, const char *filename)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
880 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
881 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
882
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13838
diff changeset
883 g_free(xfer->local_filename);
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13838
diff changeset
884 xfer->local_filename = g_strdup(filename);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
885 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
886
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
887 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
888 purple_xfer_set_size(PurpleXfer *xfer, size_t size)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
889 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
890 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
891
15322
cd268e368bc1 [gaim-migrate @ 18050]
Mark Doliner <markdoliner@pidgin.im>
parents: 15280
diff changeset
892 xfer->size = size;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
893 xfer->bytes_remaining = xfer->size - purple_xfer_get_bytes_sent(xfer);
15322
cd268e368bc1 [gaim-migrate @ 18050]
Mark Doliner <markdoliner@pidgin.im>
parents: 15280
diff changeset
894 }
4538
929fb97f4e7f [gaim-migrate @ 4817]
Nathan Walp <nwalp@pidgin.im>
parents: 4528
diff changeset
895
15322
cd268e368bc1 [gaim-migrate @ 18050]
Mark Doliner <markdoliner@pidgin.im>
parents: 15280
diff changeset
896 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
897 purple_xfer_set_bytes_sent(PurpleXfer *xfer, size_t bytes_sent)
15322
cd268e368bc1 [gaim-migrate @ 18050]
Mark Doliner <markdoliner@pidgin.im>
parents: 15280
diff changeset
898 {
cd268e368bc1 [gaim-migrate @ 18050]
Mark Doliner <markdoliner@pidgin.im>
parents: 15280
diff changeset
899 g_return_if_fail(xfer != NULL);
cd268e368bc1 [gaim-migrate @ 18050]
Mark Doliner <markdoliner@pidgin.im>
parents: 15280
diff changeset
900
cd268e368bc1 [gaim-migrate @ 18050]
Mark Doliner <markdoliner@pidgin.im>
parents: 15280
diff changeset
901 xfer->bytes_sent = bytes_sent;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
902 xfer->bytes_remaining = purple_xfer_get_size(xfer) - bytes_sent;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
903 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
904
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
905 PurpleXferUiOps *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
906 purple_xfer_get_ui_ops(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
907 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
908 g_return_val_if_fail(xfer != NULL, NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
909
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
910 return xfer->ui_ops;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
911 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
912
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
913 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
914 purple_xfer_set_init_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *))
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
915 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
916 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
917
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
918 xfer->ops.init = fnc;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
919 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
920
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
921 void purple_xfer_set_request_denied_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *))
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
922 {
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
923 g_return_if_fail(xfer != NULL);
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
924
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
925 xfer->ops.request_denied = fnc;
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
926 }
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
927
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
928 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
929 purple_xfer_set_read_fnc(PurpleXfer *xfer, gssize (*fnc)(guchar **, PurpleXfer *))
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
930 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
931 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
932
5495
c4527631aea4 [gaim-migrate @ 5891]
Herman Bloggs <herman@bluedigits.com>
parents: 5494
diff changeset
933 xfer->ops.read = fnc;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
934 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
935
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
936 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
937 purple_xfer_set_write_fnc(PurpleXfer *xfer,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
938 gssize (*fnc)(const guchar *, size_t, PurpleXfer *))
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
939 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
940 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
941
5495
c4527631aea4 [gaim-migrate @ 5891]
Herman Bloggs <herman@bluedigits.com>
parents: 5494
diff changeset
942 xfer->ops.write = fnc;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
943 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
944
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
945 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
946 purple_xfer_set_ack_fnc(PurpleXfer *xfer,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
947 void (*fnc)(PurpleXfer *, const guchar *, size_t))
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
948 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
949 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
950
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
951 xfer->ops.ack = fnc;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
952 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
953
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
954 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
955 purple_xfer_set_start_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *))
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
956 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
957 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
958
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
959 xfer->ops.start = fnc;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
960 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
961
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
962 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
963 purple_xfer_set_end_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *))
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
964 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
965 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
966
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
967 xfer->ops.end = fnc;
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
968 }
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
969
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
970 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
971 purple_xfer_set_cancel_send_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *))
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
972 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
973 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
974
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
975 xfer->ops.cancel_send = fnc;
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
976 }
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
977
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
978 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
979 purple_xfer_set_cancel_recv_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *))
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
980 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
981 g_return_if_fail(xfer != NULL);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
982
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
983 xfer->ops.cancel_recv = fnc;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
984 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
985
15280
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
986 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
987 purple_xfer_increase_buffer_size(PurpleXfer *xfer)
15280
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
988 {
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
989 xfer->current_buffer_size = MIN(xfer->current_buffer_size * 1.5,
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
990 FT_MAX_BUFFER_SIZE);
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
991 }
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
992
12151
8002bb57756b [gaim-migrate @ 14452]
Richard Laager <rlaager@pidgin.im>
parents: 11934
diff changeset
993 gssize
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
994 purple_xfer_read(PurpleXfer *xfer, guchar **buffer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
995 {
12151
8002bb57756b [gaim-migrate @ 14452]
Richard Laager <rlaager@pidgin.im>
parents: 11934
diff changeset
996 gssize s, r;
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
997
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
998 g_return_val_if_fail(xfer != NULL, 0);
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
999 g_return_val_if_fail(buffer != NULL, 0);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1000
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1001 if (purple_xfer_get_size(xfer) == 0)
15280
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1002 s = xfer->current_buffer_size;
4517
998c580f7f56 [gaim-migrate @ 4795]
Christian Hammond <chipx86@chipx86.com>
parents: 4514
diff changeset
1003 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1004 s = MIN(purple_xfer_get_bytes_remaining(xfer), xfer->current_buffer_size);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1005
26373
105e5b66e8da fix a bug in libpurple that prevented receiving file transfers to be marked completed (in case the protocol uses an xfer->ops.read function)
Sulabh Mahajan <sulabh@pidgin.im>
parents: 25359
diff changeset
1006 if (xfer->ops.read != NULL) {
5495
c4527631aea4 [gaim-migrate @ 5891]
Herman Bloggs <herman@bluedigits.com>
parents: 5494
diff changeset
1007 r = (xfer->ops.read)(buffer, xfer);
26373
105e5b66e8da fix a bug in libpurple that prevented receiving file transfers to be marked completed (in case the protocol uses an xfer->ops.read function)
Sulabh Mahajan <sulabh@pidgin.im>
parents: 25359
diff changeset
1008 }
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1009 else {
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1010 *buffer = g_malloc0(s);
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1011
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1012 r = read(xfer->fd, *buffer, s);
13011
b41d13bd682d [gaim-migrate @ 15364]
Daniel Atallah <datallah@pidgin.im>
parents: 12250
diff changeset
1013 if (r < 0 && errno == EAGAIN)
b41d13bd682d [gaim-migrate @ 15364]
Daniel Atallah <datallah@pidgin.im>
parents: 12250
diff changeset
1014 r = 0;
b41d13bd682d [gaim-migrate @ 15364]
Daniel Atallah <datallah@pidgin.im>
parents: 12250
diff changeset
1015 else if (r < 0)
b41d13bd682d [gaim-migrate @ 15364]
Daniel Atallah <datallah@pidgin.im>
parents: 12250
diff changeset
1016 r = -1;
13788
019bc2080927 [gaim-migrate @ 16198]
Daniel Atallah <datallah@pidgin.im>
parents: 13729
diff changeset
1017 else if (r == 0)
019bc2080927 [gaim-migrate @ 16198]
Daniel Atallah <datallah@pidgin.im>
parents: 13729
diff changeset
1018 r = -1;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1019 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1020
15280
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1021 if (r == xfer->current_buffer_size)
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1022 /*
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1023 * We managed to read the entire buffer. This means our this
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1024 * network is fast and our buffer is too small, so make it
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1025 * bigger.
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1026 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1027 purple_xfer_increase_buffer_size(xfer);
15280
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1028
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1029 return r;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1030 }
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1031
12151
8002bb57756b [gaim-migrate @ 14452]
Richard Laager <rlaager@pidgin.im>
parents: 11934
diff changeset
1032 gssize
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1033 purple_xfer_write(PurpleXfer *xfer, const guchar *buffer, gsize size)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1034 {
12151
8002bb57756b [gaim-migrate @ 14452]
Richard Laager <rlaager@pidgin.im>
parents: 11934
diff changeset
1035 gssize r, s;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1036
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1037 g_return_val_if_fail(xfer != NULL, 0);
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1038 g_return_val_if_fail(buffer != NULL, 0);
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1039 g_return_val_if_fail(size != 0, 0);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1040
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1041 s = MIN(purple_xfer_get_bytes_remaining(xfer), size);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1042
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents: 8208
diff changeset
1043 if (xfer->ops.write != NULL) {
5495
c4527631aea4 [gaim-migrate @ 5891]
Herman Bloggs <herman@bluedigits.com>
parents: 5494
diff changeset
1044 r = (xfer->ops.write)(buffer, s, xfer);
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents: 8208
diff changeset
1045 } else {
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1046 r = write(xfer->fd, buffer, s);
13011
b41d13bd682d [gaim-migrate @ 15364]
Daniel Atallah <datallah@pidgin.im>
parents: 12250
diff changeset
1047 if (r < 0 && errno == EAGAIN)
b41d13bd682d [gaim-migrate @ 15364]
Daniel Atallah <datallah@pidgin.im>
parents: 12250
diff changeset
1048 r = 0;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1049 if ((purple_xfer_get_bytes_sent(xfer)+r) >= purple_xfer_get_size(xfer))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1050 purple_xfer_set_completed(xfer, TRUE);
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents: 8208
diff changeset
1051 }
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1052
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1053 return r;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1054 }
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1055
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1056 static void
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1057 do_transfer(PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1058 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1059 PurpleXferUiOps *ui_ops;
11159
76ef02141bcb [gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents: 11084
diff changeset
1060 guchar *buffer = NULL;
12151
8002bb57756b [gaim-migrate @ 14452]
Richard Laager <rlaager@pidgin.im>
parents: 11934
diff changeset
1061 gssize r = 0;
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1062
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1063 ui_ops = purple_xfer_get_ui_ops(xfer);
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1064
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1065 if (xfer->type == PURPLE_XFER_RECEIVE) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1066 r = purple_xfer_read(xfer, &buffer);
8316
7de7b31679a2 [gaim-migrate @ 9040]
Nathan Walp <nwalp@pidgin.im>
parents: 8262
diff changeset
1067 if (r > 0) {
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1068 size_t wc;
28159
567c6a03a6ea Fix building on win32, which has #define write wpurple_write (and similar for read).
Paul Aurich <darkrain42@pidgin.im>
parents: 28156
diff changeset
1069 if (ui_ops && ui_ops->ui_write)
567c6a03a6ea Fix building on win32, which has #define write wpurple_write (and similar for read).
Paul Aurich <darkrain42@pidgin.im>
parents: 28156
diff changeset
1070 wc = ui_ops->ui_write(xfer, buffer, r);
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1071 else
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1072 wc = fwrite(buffer, 1, r, xfer->dest_fp);
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1073
22194
3e48f2d3d083 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 21985
diff changeset
1074 if (wc != r) {
3e48f2d3d083 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 21985
diff changeset
1075 purple_debug_error("filetransfer", "Unable to write whole buffer.\n");
27944
e71e3e3134b3 ft: fwrite failing is a local error. Pointed out by kenshin.
Paul Aurich <darkrain42@pidgin.im>
parents: 27942
diff changeset
1076 purple_xfer_cancel_local(xfer);
28076
796f5a14f70b Fix a bunch of memory leaks reported by Josh Mueller. Refs #9822.
Paul Aurich <darkrain42@pidgin.im>
parents: 27993
diff changeset
1077 g_free(buffer);
22194
3e48f2d3d083 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 21985
diff changeset
1078 return;
3e48f2d3d083 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 21985
diff changeset
1079 }
28180
782b27dceaf7 ft: Set completion (for receiving) *after* writing the file.
Paul Aurich <darkrain42@pidgin.im>
parents: 28159
diff changeset
1080
782b27dceaf7 ft: Set completion (for receiving) *after* writing the file.
Paul Aurich <darkrain42@pidgin.im>
parents: 28159
diff changeset
1081 if ((purple_xfer_get_size(xfer) > 0) &&
782b27dceaf7 ft: Set completion (for receiving) *after* writing the file.
Paul Aurich <darkrain42@pidgin.im>
parents: 28159
diff changeset
1082 ((purple_xfer_get_bytes_sent(xfer)+r) >= purple_xfer_get_size(xfer)))
782b27dceaf7 ft: Set completion (for receiving) *after* writing the file.
Paul Aurich <darkrain42@pidgin.im>
parents: 28159
diff changeset
1083 purple_xfer_set_completed(xfer, TRUE);
17293
2b7fbca58d92 Fix file transfers aborting and mistakenly being marked as cancelled when they are actually complete. Fixes #814
Daniel Atallah <datallah@pidgin.im>
parents: 17089
diff changeset
1084 } else if(r < 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1085 purple_xfer_cancel_remote(xfer);
28076
796f5a14f70b Fix a bunch of memory leaks reported by Josh Mueller. Refs #9822.
Paul Aurich <darkrain42@pidgin.im>
parents: 27993
diff changeset
1086 g_free(buffer);
8316
7de7b31679a2 [gaim-migrate @ 9040]
Nathan Walp <nwalp@pidgin.im>
parents: 8262
diff changeset
1087 return;
13109
c5801934af5c [gaim-migrate @ 15470]
Daniel Atallah <datallah@pidgin.im>
parents: 13108
diff changeset
1088 }
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1089 } else if (xfer->type == PURPLE_XFER_SEND) {
29781
5ef6c9b585f8 ft: Don't try to read from the source file if the byte array already holds
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
1090 size_t result = 0;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1091 size_t s = MIN(purple_xfer_get_bytes_remaining(xfer), xfer->current_buffer_size);
29533
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1092 PurpleXferPrivData *priv = g_hash_table_lookup(xfers_data, xfer);
29821
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1093 gboolean read = TRUE;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1094
8351
216d9836e839 [gaim-migrate @ 9075]
Tim Ringenbach <marv@pidgin.im>
parents: 8316
diff changeset
1095 /* this is so the prpl can keep the connection open
216d9836e839 [gaim-migrate @ 9075]
Tim Ringenbach <marv@pidgin.im>
parents: 8316
diff changeset
1096 if it needs to for some odd reason. */
216d9836e839 [gaim-migrate @ 9075]
Tim Ringenbach <marv@pidgin.im>
parents: 8316
diff changeset
1097 if (s == 0) {
9798
9da203982089 [gaim-migrate @ 10666]
Joe Shaw <joe@joeshaw.org>
parents: 9796
diff changeset
1098 if (xfer->watcher) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1099 purple_input_remove(xfer->watcher);
8351
216d9836e839 [gaim-migrate @ 9075]
Tim Ringenbach <marv@pidgin.im>
parents: 8316
diff changeset
1100 xfer->watcher = 0;
216d9836e839 [gaim-migrate @ 9075]
Tim Ringenbach <marv@pidgin.im>
parents: 8316
diff changeset
1101 }
216d9836e839 [gaim-migrate @ 9075]
Tim Ringenbach <marv@pidgin.im>
parents: 8316
diff changeset
1102 return;
216d9836e839 [gaim-migrate @ 9075]
Tim Ringenbach <marv@pidgin.im>
parents: 8316
diff changeset
1103 }
216d9836e839 [gaim-migrate @ 9075]
Tim Ringenbach <marv@pidgin.im>
parents: 8316
diff changeset
1104
29821
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1105 if (priv->buffer) {
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1106 if (priv->buffer->len < s) {
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1107 s -= priv->buffer->len;
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1108 read = TRUE;
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1109 } else {
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1110 read = FALSE;
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1111 }
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1112 }
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1113
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1114 if (read) {
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1115 if (ui_ops && ui_ops->ui_read) {
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1116 gssize tmp = ui_ops->ui_read(xfer, &buffer, s);
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1117 if (tmp == 0) {
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1118 /*
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1119 * The UI claimed it was ready, but didn't have any data for
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1120 * us... It will call purple_xfer_ui_ready when ready, which
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1121 * sets back up this watcher.
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1122 */
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1123 if (xfer->watcher != 0) {
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1124 purple_input_remove(xfer->watcher);
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1125 xfer->watcher = 0;
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1126 }
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1127
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1128 /* Need to indicate the prpl is still ready... */
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1129 priv->ready |= PURPLE_XFER_READY_PRPL;
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1130
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1131 g_return_if_reached();
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1132 } else if (tmp < 0) {
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1133 purple_debug_error("filetransfer", "Unable to read whole buffer.\n");
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1134 purple_xfer_cancel_local(xfer);
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1135 return;
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1136 }
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1137
29821
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1138 result = tmp;
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1139 } else {
29781
5ef6c9b585f8 ft: Don't try to read from the source file if the byte array already holds
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
1140 buffer = g_malloc(s);
5ef6c9b585f8 ft: Don't try to read from the source file if the byte array already holds
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
1141 result = fread(buffer, 1, s, xfer->dest_fp);
5ef6c9b585f8 ft: Don't try to read from the source file if the byte array already holds
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
1142 if (result != s) {
5ef6c9b585f8 ft: Don't try to read from the source file if the byte array already holds
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
1143 purple_debug_error("filetransfer", "Unable to read whole buffer.\n");
5ef6c9b585f8 ft: Don't try to read from the source file if the byte array already holds
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
1144 purple_xfer_cancel_local(xfer);
5ef6c9b585f8 ft: Don't try to read from the source file if the byte array already holds
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
1145 g_free(buffer);
5ef6c9b585f8 ft: Don't try to read from the source file if the byte array already holds
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
1146 return;
5ef6c9b585f8 ft: Don't try to read from the source file if the byte array already holds
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29686
diff changeset
1147 }
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1148 }
22194
3e48f2d3d083 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 21985
diff changeset
1149 }
29822
7c6c2df6f9a2 whitespace trimming
Paul Aurich <darkrain42@pidgin.im>
parents: 29821
diff changeset
1150
29533
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1151 if (priv->buffer) {
29968
1bab736e15da Does anyone know the purpose of the ui_write, ui_read and data_not_sent
Mark Doliner <markdoliner@pidgin.im>
parents: 29822
diff changeset
1152 g_byte_array_append(priv->buffer, buffer, result);
29533
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1153 g_free(buffer);
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1154 buffer = priv->buffer->data;
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1155 result = priv->buffer->len;
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1156 }
29822
7c6c2df6f9a2 whitespace trimming
Paul Aurich <darkrain42@pidgin.im>
parents: 29821
diff changeset
1157
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1158 r = purple_xfer_write(xfer, buffer, result);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1159
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents: 8208
diff changeset
1160 if (r == -1) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1161 purple_xfer_cancel_remote(xfer);
29968
1bab736e15da Does anyone know the purpose of the ui_write, ui_read and data_not_sent
Mark Doliner <markdoliner@pidgin.im>
parents: 29822
diff changeset
1162 if (!priv->buffer)
1bab736e15da Does anyone know the purpose of the ui_write, ui_read and data_not_sent
Mark Doliner <markdoliner@pidgin.im>
parents: 29822
diff changeset
1163 /* We don't free buffer if priv->buffer is set, because in
1bab736e15da Does anyone know the purpose of the ui_write, ui_read and data_not_sent
Mark Doliner <markdoliner@pidgin.im>
parents: 29822
diff changeset
1164 that case buffer doesn't belong to us. */
1bab736e15da Does anyone know the purpose of the ui_write, ui_read and data_not_sent
Mark Doliner <markdoliner@pidgin.im>
parents: 29822
diff changeset
1165 g_free(buffer);
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents: 8208
diff changeset
1166 return;
29533
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1167 } else if (r == result) {
15280
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1168 /*
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1169 * We managed to write the entire buffer. This means our
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1170 * network is fast and our buffer is too small, so make it
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1171 * bigger.
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1172 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1173 purple_xfer_increase_buffer_size(xfer);
29533
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1174 } else {
29822
7c6c2df6f9a2 whitespace trimming
Paul Aurich <darkrain42@pidgin.im>
parents: 29821
diff changeset
1175 if (ui_ops && ui_ops->data_not_sent)
7c6c2df6f9a2 whitespace trimming
Paul Aurich <darkrain42@pidgin.im>
parents: 29821
diff changeset
1176 ui_ops->data_not_sent(xfer, buffer + r, result - r);
29533
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1177 }
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1178
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1179 if (priv->buffer) {
29822
7c6c2df6f9a2 whitespace trimming
Paul Aurich <darkrain42@pidgin.im>
parents: 29821
diff changeset
1180 /*
29533
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1181 * Remove what we wrote
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1182 * If we wrote the whole buffer the byte array will be empty
29968
1bab736e15da Does anyone know the purpose of the ui_write, ui_read and data_not_sent
Mark Doliner <markdoliner@pidgin.im>
parents: 29822
diff changeset
1183 * Otherwise we'll keep what wasn't sent for next time.
29533
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1184 */
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1185 buffer = NULL;
29968
1bab736e15da Does anyone know the purpose of the ui_write, ui_read and data_not_sent
Mark Doliner <markdoliner@pidgin.im>
parents: 29822
diff changeset
1186 g_byte_array_remove_range(priv->buffer, 0, r);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1187 }
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1188 }
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1189
13108
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1190 if (r > 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1191 if (purple_xfer_get_size(xfer) > 0)
13108
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1192 xfer->bytes_remaining -= r;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1193
13108
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1194 xfer->bytes_sent += r;
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1195
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1196 if (xfer->ops.ack != NULL)
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1197 xfer->ops.ack(xfer, buffer, r);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1198
13108
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1199 g_free(buffer);
4594
a96954344300 [gaim-migrate @ 4879]
Mark Doliner <markdoliner@pidgin.im>
parents: 4582
diff changeset
1200
13108
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1201 if (ui_ops != NULL && ui_ops->update_progress != NULL)
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1202 ui_ops->update_progress(xfer,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1203 purple_xfer_get_progress(xfer));
13108
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1204 }
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1205
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1206 if (purple_xfer_is_completed(xfer))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1207 purple_xfer_end(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1208 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1209
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1210 static void
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1211 transfer_cb(gpointer data, gint source, PurpleInputCondition condition)
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1212 {
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1213 PurpleXfer *xfer = data;
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1214
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1215 if (xfer->dest_fp == NULL) {
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1216 /* The UI is moderating its side manually */
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1217 PurpleXferPrivData *priv = g_hash_table_lookup(xfers_data, xfer);
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1218 if (0 == (priv->ready & PURPLE_XFER_READY_UI)) {
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1219 priv->ready |= PURPLE_XFER_READY_PRPL;
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1220
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1221 purple_input_remove(xfer->watcher);
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1222 xfer->watcher = 0;
29168
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1223
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1224 purple_debug_misc("xfer", "prpl is ready on ft %p, waiting for UI\n", xfer);
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1225 return;
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1226 }
29232
a94f1f9cdcd2 ft: Fix ui_ops->ui_read being called too often (when it's not ready).
Paul Aurich <darkrain42@pidgin.im>
parents: 29168
diff changeset
1227
a94f1f9cdcd2 ft: Fix ui_ops->ui_read being called too often (when it's not ready).
Paul Aurich <darkrain42@pidgin.im>
parents: 29168
diff changeset
1228 priv->ready = PURPLE_XFER_READY_NONE;
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1229 }
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1230
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1231 do_transfer(xfer);
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1232 }
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1233
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1234 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1235 begin_transfer(PurpleXfer *xfer, PurpleInputCondition cond)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1236 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1237 PurpleXferType type = purple_xfer_get_type(xfer);
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1238 PurpleXferUiOps *ui_ops = purple_xfer_get_ui_ops(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1239
28159
567c6a03a6ea Fix building on win32, which has #define write wpurple_write (and similar for read).
Paul Aurich <darkrain42@pidgin.im>
parents: 28156
diff changeset
1240 if (ui_ops == NULL || (ui_ops->ui_read == NULL && ui_ops->ui_write == NULL)) {
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1241 xfer->dest_fp = g_fopen(purple_xfer_get_local_filename(xfer),
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1242 type == PURPLE_XFER_RECEIVE ? "wb" : "rb");
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1243
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1244 if (xfer->dest_fp == NULL) {
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1245 purple_xfer_show_file_error(xfer, purple_xfer_get_local_filename(xfer));
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1246 purple_xfer_cancel_local(xfer);
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1247 return;
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1248 }
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1249
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1250 fseek(xfer->dest_fp, xfer->bytes_sent, SEEK_SET);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1251 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1252
28152
e9800c07eb5b ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <darkrain42@pidgin.im>
parents: 28150
diff changeset
1253 if (xfer->fd != -1)
17089
b27c8579750b Patch from sourceforge tracker 1652005 from wabz to fix displaying file
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16490
diff changeset
1254 xfer->watcher = purple_input_add(xfer->fd, cond, transfer_cb, xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1255
13599
b6369e541654 [gaim-migrate @ 15984]
Mark Doliner <markdoliner@pidgin.im>
parents: 13595
diff changeset
1256 xfer->start_time = time(NULL);
b6369e541654 [gaim-migrate @ 15984]
Mark Doliner <markdoliner@pidgin.im>
parents: 13595
diff changeset
1257
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1258 if (xfer->ops.start != NULL)
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1259 xfer->ops.start(xfer);
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1260 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1261
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1262 static void
14183
bdde840e984c [gaim-migrate @ 16755]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
1263 connect_cb(gpointer data, gint source, const gchar *error_message)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1264 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1265 PurpleXfer *xfer = (PurpleXfer *)data;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1266
21676
dabfb5216949 Fix #3983 by canceling the file transfer when connecting to the remote host fails.
Daniel Atallah <datallah@pidgin.im>
parents: 21630
diff changeset
1267 if (source < 0) {
dabfb5216949 Fix #3983 by canceling the file transfer when connecting to the remote host fails.
Daniel Atallah <datallah@pidgin.im>
parents: 21630
diff changeset
1268 purple_xfer_cancel_local(xfer);
dabfb5216949 Fix #3983 by canceling the file transfer when connecting to the remote host fails.
Daniel Atallah <datallah@pidgin.im>
parents: 21630
diff changeset
1269 return;
dabfb5216949 Fix #3983 by canceling the file transfer when connecting to the remote host fails.
Daniel Atallah <datallah@pidgin.im>
parents: 21630
diff changeset
1270 }
dabfb5216949 Fix #3983 by canceling the file transfer when connecting to the remote host fails.
Daniel Atallah <datallah@pidgin.im>
parents: 21630
diff changeset
1271
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1272 xfer->fd = source;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1273
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1274 begin_transfer(xfer, PURPLE_INPUT_READ);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1275 }
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1276
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1277 void
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1278 purple_xfer_ui_ready(PurpleXfer *xfer)
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1279 {
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1280 PurpleInputCondition cond;
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1281 PurpleXferType type;
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1282 PurpleXferPrivData *priv;
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1283
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1284 g_return_if_fail(xfer != NULL);
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1285
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1286 priv = g_hash_table_lookup(xfers_data, xfer);
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1287 priv->ready |= PURPLE_XFER_READY_UI;
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1288
29168
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1289 if (0 == (priv->ready & PURPLE_XFER_READY_PRPL)) {
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1290 purple_debug_misc("xfer", "UI is ready on ft %p, waiting for prpl\n", xfer);
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1291 return;
29168
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1292 }
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1293
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1294 purple_debug_misc("xfer", "UI (and prpl) ready on ft %p, so proceeding\n", xfer);
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1295
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1296 type = purple_xfer_get_type(xfer);
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1297 if (type == PURPLE_XFER_SEND)
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1298 cond = PURPLE_INPUT_WRITE;
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1299 else /* if (type == PURPLE_XFER_RECEIVE) */
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1300 cond = PURPLE_INPUT_READ;
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1301
28153
d90df2a6bcd5 ft: Fix an issue with re-setting xfer->watcher when there is no fd.
Paul Aurich <darkrain42@pidgin.im>
parents: 28152
diff changeset
1302 if (xfer->watcher == 0 && xfer->fd != -1)
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1303 xfer->watcher = purple_input_add(xfer->fd, cond, transfer_cb, xfer);
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1304
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1305 priv->ready = PURPLE_XFER_READY_NONE;
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1306
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1307 do_transfer(xfer);
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1308 }
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1309
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1310 void
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1311 purple_xfer_prpl_ready(PurpleXfer *xfer)
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1312 {
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1313 PurpleXferPrivData *priv;
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1314
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1315 g_return_if_fail(xfer != NULL);
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1316
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1317 priv = g_hash_table_lookup(xfers_data, xfer);
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1318 priv->ready |= PURPLE_XFER_READY_PRPL;
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1319
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1320 /* I don't think fwrite/fread are ever *not* ready */
29168
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1321 if (xfer->dest_fp == NULL && 0 == (priv->ready & PURPLE_XFER_READY_UI)) {
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1322 purple_debug_misc("xfer", "prpl is ready on ft %p, waiting for UI\n", xfer);
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1323 return;
29168
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1324 }
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1325
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1326 purple_debug_misc("xfer", "Prpl (and UI) ready on ft %p, so proceeding\n", xfer);
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1327
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1328 priv->ready = PURPLE_XFER_READY_NONE;
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1329
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1330 do_transfer(xfer);
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1331 }
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1332
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1333 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1334 purple_xfer_start(PurpleXfer *xfer, int fd, const char *ip,
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1335 unsigned int port)
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1336 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1337 PurpleInputCondition cond;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1338 PurpleXferType type;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1339
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1340 g_return_if_fail(xfer != NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1341 g_return_if_fail(purple_xfer_get_type(xfer) != PURPLE_XFER_UNKNOWN);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1342
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1343 type = purple_xfer_get_type(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1344
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1345 purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_STARTED);
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
1346
28152
e9800c07eb5b ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <darkrain42@pidgin.im>
parents: 28150
diff changeset
1347 /*
e9800c07eb5b ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <darkrain42@pidgin.im>
parents: 28150
diff changeset
1348 * FIXME 3.0.0 -- there's too much broken code depending on fd == 0
e9800c07eb5b ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <darkrain42@pidgin.im>
parents: 28150
diff changeset
1349 * meaning "don't use a real fd"
e9800c07eb5b ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <darkrain42@pidgin.im>
parents: 28150
diff changeset
1350 */
e9800c07eb5b ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <darkrain42@pidgin.im>
parents: 28150
diff changeset
1351 if (fd == 0)
e9800c07eb5b ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <darkrain42@pidgin.im>
parents: 28150
diff changeset
1352 fd = -1;
e9800c07eb5b ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <darkrain42@pidgin.im>
parents: 28150
diff changeset
1353
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1354 if (type == PURPLE_XFER_RECEIVE) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1355 cond = PURPLE_INPUT_READ;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1356
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1357 if (ip != NULL) {
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1358 xfer->remote_ip = g_strdup(ip);
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1359 xfer->remote_port = port;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1360
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1361 /* Establish a file descriptor. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1362 purple_proxy_connect(NULL, xfer->account, xfer->remote_ip,
14170
f611621bc8a0 [gaim-migrate @ 16742]
Mark Doliner <markdoliner@pidgin.im>
parents: 14151
diff changeset
1363 xfer->remote_port, connect_cb, xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1364
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1365 return;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1366 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1367 else {
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1368 xfer->fd = fd;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1369 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1370 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1371 else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1372 cond = PURPLE_INPUT_WRITE;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1373
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1374 xfer->fd = fd;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1375 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1376
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1377 begin_transfer(xfer, cond);
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1378 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1379
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1380 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1381 purple_xfer_end(PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1382 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1383 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1384
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1385 /* See if we are actually trying to cancel this. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1386 if (!purple_xfer_is_completed(xfer)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1387 purple_xfer_cancel_local(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1388 return;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1389 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1390
13599
b6369e541654 [gaim-migrate @ 15984]
Mark Doliner <markdoliner@pidgin.im>
parents: 13595
diff changeset
1391 xfer->end_time = time(NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1392 if (xfer->ops.end != NULL)
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1393 xfer->ops.end(xfer);
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1394
4521
c67f31cc18f4 [gaim-migrate @ 4799]
Christian Hammond <chipx86@chipx86.com>
parents: 4518
diff changeset
1395 if (xfer->watcher != 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1396 purple_input_remove(xfer->watcher);
4521
c67f31cc18f4 [gaim-migrate @ 4799]
Christian Hammond <chipx86@chipx86.com>
parents: 4518
diff changeset
1397 xfer->watcher = 0;
c67f31cc18f4 [gaim-migrate @ 4799]
Christian Hammond <chipx86@chipx86.com>
parents: 4518
diff changeset
1398 }
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1399
28152
e9800c07eb5b ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <darkrain42@pidgin.im>
parents: 28150
diff changeset
1400 if (xfer->fd != -1)
4521
c67f31cc18f4 [gaim-migrate @ 4799]
Christian Hammond <chipx86@chipx86.com>
parents: 4518
diff changeset
1401 close(xfer->fd);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1402
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1403 if (xfer->dest_fp != NULL) {
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1404 fclose(xfer->dest_fp);
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1405 xfer->dest_fp = NULL;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1406 }
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
1407
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1408 purple_xfer_unref(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1409 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1410
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1411 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1412 purple_xfer_add(PurpleXfer *xfer)
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1413 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1414 PurpleXferUiOps *ui_ops;
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1415
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1416 g_return_if_fail(xfer != NULL);
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1417
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1418 ui_ops = purple_xfer_get_ui_ops(xfer);
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1419
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1420 if (ui_ops != NULL && ui_ops->add_xfer != NULL)
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1421 ui_ops->add_xfer(xfer);
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1422 }
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1423
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1424 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1425 purple_xfer_cancel_local(PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1426 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1427 PurpleXferUiOps *ui_ops;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10654
diff changeset
1428 char *msg = NULL;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1429
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1430 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1431
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1432 purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_CANCEL_LOCAL);
13599
b6369e541654 [gaim-migrate @ 15984]
Mark Doliner <markdoliner@pidgin.im>
parents: 13595
diff changeset
1433 xfer->end_time = time(NULL);
7738
ebb766ef2146 [gaim-migrate @ 8383]
Tim Ringenbach <marv@pidgin.im>
parents: 7272
diff changeset
1434
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1435 if (purple_xfer_get_filename(xfer) != NULL)
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1436 {
27797
10f6bc89044b Normalize on 'cancelled'
Paul Aurich <darkrain42@pidgin.im>
parents: 27655
diff changeset
1437 msg = g_strdup_printf(_("You cancelled the transfer of %s"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1438 purple_xfer_get_filename(xfer));
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1439 }
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1440 else
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1441 {
25359
ea172b7ea601 The remainder of a patch from fqueze to fix some incorrect *printf() function
Daniel Atallah <datallah@pidgin.im>
parents: 24672
diff changeset
1442 msg = g_strdup(_("File transfer cancelled"));
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1443 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1444 purple_xfer_conversation_write(xfer, msg, FALSE);
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
1445 g_free(msg);
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
1446
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1447 if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND)
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1448 {
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1449 if (xfer->ops.cancel_send != NULL)
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1450 xfer->ops.cancel_send(xfer);
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1451 }
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1452 else
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1453 {
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1454 if (xfer->ops.cancel_recv != NULL)
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1455 xfer->ops.cancel_recv(xfer);
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1456 }
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1457
4521
c67f31cc18f4 [gaim-migrate @ 4799]
Christian Hammond <chipx86@chipx86.com>
parents: 4518
diff changeset
1458 if (xfer->watcher != 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1459 purple_input_remove(xfer->watcher);
4521
c67f31cc18f4 [gaim-migrate @ 4799]
Christian Hammond <chipx86@chipx86.com>
parents: 4518
diff changeset
1460 xfer->watcher = 0;
c67f31cc18f4 [gaim-migrate @ 4799]
Christian Hammond <chipx86@chipx86.com>
parents: 4518
diff changeset
1461 }
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1462
28152
e9800c07eb5b ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <darkrain42@pidgin.im>
parents: 28150
diff changeset
1463 if (xfer->fd != -1)
4521
c67f31cc18f4 [gaim-migrate @ 4799]
Christian Hammond <chipx86@chipx86.com>
parents: 4518
diff changeset
1464 close(xfer->fd);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1465
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1466 if (xfer->dest_fp != NULL) {
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1467 fclose(xfer->dest_fp);
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1468 xfer->dest_fp = NULL;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1469 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1470
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1471 ui_ops = purple_xfer_get_ui_ops(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1472
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1473 if (ui_ops != NULL && ui_ops->cancel_local != NULL)
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1474 ui_ops->cancel_local(xfer);
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1475
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1476 xfer->bytes_remaining = 0;
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
1477
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1478 purple_xfer_unref(xfer);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1479 }
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1480
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1481 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1482 purple_xfer_cancel_remote(PurpleXfer *xfer)
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1483 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1484 PurpleXferUiOps *ui_ops;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10654
diff changeset
1485 gchar *msg;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1486 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1487 PurpleBuddy *buddy;
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1488
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1489 g_return_if_fail(xfer != NULL);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1490
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1491 purple_request_close_with_handle(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1492 purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_CANCEL_REMOTE);
13599
b6369e541654 [gaim-migrate @ 15984]
Mark Doliner <markdoliner@pidgin.im>
parents: 13595
diff changeset
1493 xfer->end_time = time(NULL);
9771
42bd06e5b1b3 [gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents: 9523
diff changeset
1494
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1495 account = purple_xfer_get_account(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1496 buddy = purple_find_buddy(account, xfer->who);
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
1497
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1498 if (purple_xfer_get_filename(xfer) != NULL)
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1499 {
27797
10f6bc89044b Normalize on 'cancelled'
Paul Aurich <darkrain42@pidgin.im>
parents: 27655
diff changeset
1500 msg = g_strdup_printf(_("%s cancelled the transfer of %s"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1501 buddy ? purple_buddy_get_alias(buddy) : xfer->who, purple_xfer_get_filename(xfer));
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1502 }
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1503 else
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1504 {
27797
10f6bc89044b Normalize on 'cancelled'
Paul Aurich <darkrain42@pidgin.im>
parents: 27655
diff changeset
1505 msg = g_strdup_printf(_("%s cancelled the file transfer"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1506 buddy ? purple_buddy_get_alias(buddy) : xfer->who);
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1507 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1508 purple_xfer_conversation_write(xfer, msg, TRUE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1509 purple_xfer_error(purple_xfer_get_type(xfer), account, xfer->who, msg);
9771
42bd06e5b1b3 [gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents: 9523
diff changeset
1510 g_free(msg);
42bd06e5b1b3 [gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents: 9523
diff changeset
1511
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1512 if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND)
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1513 {
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1514 if (xfer->ops.cancel_send != NULL)
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1515 xfer->ops.cancel_send(xfer);
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1516 }
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1517 else
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1518 {
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1519 if (xfer->ops.cancel_recv != NULL)
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1520 xfer->ops.cancel_recv(xfer);
7272
f8335b8f1f1c [gaim-migrate @ 7849]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1521 }
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1522
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1523 if (xfer->watcher != 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1524 purple_input_remove(xfer->watcher);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1525 xfer->watcher = 0;
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1526 }
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1527
28152
e9800c07eb5b ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <darkrain42@pidgin.im>
parents: 28150
diff changeset
1528 if (xfer->fd != -1)
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1529 close(xfer->fd);
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1530
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1531 if (xfer->dest_fp != NULL) {
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1532 fclose(xfer->dest_fp);
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1533 xfer->dest_fp = NULL;
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1534 }
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1535
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1536 ui_ops = purple_xfer_get_ui_ops(xfer);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1537
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1538 if (ui_ops != NULL && ui_ops->cancel_remote != NULL)
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1539 ui_ops->cancel_remote(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1540
4528
5efe7af8195d [gaim-migrate @ 4806]
Christian Hammond <chipx86@chipx86.com>
parents: 4521
diff changeset
1541 xfer->bytes_remaining = 0;
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
1542
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1543 purple_xfer_unref(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1544 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1545
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1546 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1547 purple_xfer_error(PurpleXferType type, PurpleAccount *account, const char *who, const char *msg)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1548 {
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1549 char *title;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1550
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1551 g_return_if_fail(msg != NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1552 g_return_if_fail(type != PURPLE_XFER_UNKNOWN);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1553
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
1554 if (account) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1555 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1556 buddy = purple_find_buddy(account, who);
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
1557 if (buddy)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1558 who = purple_buddy_get_alias(buddy);
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
1559 }
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
1560
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1561 if (type == PURPLE_XFER_SEND)
11231
1c5968418ca4 [gaim-migrate @ 13371]
Richard Laager <rlaager@pidgin.im>
parents: 11159
diff changeset
1562 title = g_strdup_printf(_("File transfer to %s failed."), who);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1563 else
11231
1c5968418ca4 [gaim-migrate @ 13371]
Richard Laager <rlaager@pidgin.im>
parents: 11159
diff changeset
1564 title = g_strdup_printf(_("File transfer from %s failed."), who);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1565
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1566 purple_notify_error(NULL, NULL, title, msg);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1567
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1568 g_free(title);
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1569 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1570
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1571 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1572 purple_xfer_update_progress(PurpleXfer *xfer)
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1573 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1574 PurpleXferUiOps *ui_ops;
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1575
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1576 g_return_if_fail(xfer != NULL);
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1577
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1578 ui_ops = purple_xfer_get_ui_ops(xfer);
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1579 if (ui_ops != NULL && ui_ops->update_progress != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1580 ui_ops->update_progress(xfer, purple_xfer_get_progress(xfer));
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1581 }
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1582
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1583
6263
6fec763a314c [gaim-migrate @ 6760]
Christian Hammond <chipx86@chipx86.com>
parents: 6242
diff changeset
1584 /**************************************************************************
6fec763a314c [gaim-migrate @ 6760]
Christian Hammond <chipx86@chipx86.com>
parents: 6242
diff changeset
1585 * File Transfer Subsystem API
6fec763a314c [gaim-migrate @ 6760]
Christian Hammond <chipx86@chipx86.com>
parents: 6242
diff changeset
1586 **************************************************************************/
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1587 void *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1588 purple_xfers_get_handle(void) {
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1589 static int handle = 0;
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1590
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1591 return &handle;
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1592 }
6241
34d166a31152 [gaim-migrate @ 6735]
Christian Hammond <chipx86@chipx86.com>
parents: 6240
diff changeset
1593
34d166a31152 [gaim-migrate @ 6735]
Christian Hammond <chipx86@chipx86.com>
parents: 6240
diff changeset
1594 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1595 purple_xfers_init(void) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1596 void *handle = purple_xfers_get_handle();
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1597
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1598 xfers_data = g_hash_table_new_full(g_direct_hash, g_direct_equal,
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1599 NULL, purple_xfer_priv_data_destroy);
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1600
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1601 /* register signals */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1602 purple_signal_register(handle, "file-recv-accept",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1603 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1604 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1605 PURPLE_SUBTYPE_XFER));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1606 purple_signal_register(handle, "file-send-accept",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1607 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1608 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1609 PURPLE_SUBTYPE_XFER));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1610 purple_signal_register(handle, "file-recv-start",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1611 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1612 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1613 PURPLE_SUBTYPE_XFER));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1614 purple_signal_register(handle, "file-send-start",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1615 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1616 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1617 PURPLE_SUBTYPE_XFER));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1618 purple_signal_register(handle, "file-send-cancel",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1619 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1620 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1621 PURPLE_SUBTYPE_XFER));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1622 purple_signal_register(handle, "file-recv-cancel",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1623 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1624 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1625 PURPLE_SUBTYPE_XFER));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1626 purple_signal_register(handle, "file-send-complete",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1627 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1628 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1629 PURPLE_SUBTYPE_XFER));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1630 purple_signal_register(handle, "file-recv-complete",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1631 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1632 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1633 PURPLE_SUBTYPE_XFER));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1634 purple_signal_register(handle, "file-recv-request",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1635 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1636 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1637 PURPLE_SUBTYPE_XFER));
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1638 }
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1639
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1640 void
21143
239b2f43bef5 Make purple_xfers_uninit, purple_network_uninit, and purple_plugins_uninit
Etan Reisner <deryni@pidgin.im>
parents: 20661
diff changeset
1641 purple_xfers_uninit(void)
239b2f43bef5 Make purple_xfers_uninit, purple_network_uninit, and purple_plugins_uninit
Etan Reisner <deryni@pidgin.im>
parents: 20661
diff changeset
1642 {
239b2f43bef5 Make purple_xfers_uninit, purple_network_uninit, and purple_plugins_uninit
Etan Reisner <deryni@pidgin.im>
parents: 20661
diff changeset
1643 void *handle = purple_xfers_get_handle();
239b2f43bef5 Make purple_xfers_uninit, purple_network_uninit, and purple_plugins_uninit
Etan Reisner <deryni@pidgin.im>
parents: 20661
diff changeset
1644
239b2f43bef5 Make purple_xfers_uninit, purple_network_uninit, and purple_plugins_uninit
Etan Reisner <deryni@pidgin.im>
parents: 20661
diff changeset
1645 purple_signals_disconnect_by_handle(handle);
239b2f43bef5 Make purple_xfers_uninit, purple_network_uninit, and purple_plugins_uninit
Etan Reisner <deryni@pidgin.im>
parents: 20661
diff changeset
1646 purple_signals_unregister_by_instance(handle);
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1647
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1648 g_hash_table_destroy(xfers_data);
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1649 xfers_data = NULL;
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1650 }
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1651
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1652 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1653 purple_xfers_set_ui_ops(PurpleXferUiOps *ops) {
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1654 xfer_ui_ops = ops;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1655 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1656
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1657 PurpleXferUiOps *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1658 purple_xfers_get_ui_ops(void) {
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1659 return xfer_ui_ops;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1660 }

mercurial