libpurple/ft.c

Tue, 10 Sep 2013 21:47:37 +0200

author
Tomasz Wasilczyk <twasilczyk@pidgin.im>
date
Tue, 10 Sep 2013 21:47:37 +0200
changeset 34331
c8486462bb63
parent 34305
5804117fb298
child 34333
b92698241603
permissions
-rw-r--r--

Request API refactoring: switch purple_request_action to PurpleRequestCommonParameters

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;
30115
619d2b5758c0 Hide the thumbnail-related stuff from the PurpleXfer struct to
Marcus Lundblad <malu@pidgin.im>
parents: 30114
diff changeset
63
619d2b5758c0 Hide the thumbnail-related stuff from the PurpleXfer struct to
Marcus Lundblad <malu@pidgin.im>
parents: 30114
diff changeset
64 gpointer thumbnail_data; /**< thumbnail image */
619d2b5758c0 Hide the thumbnail-related stuff from the PurpleXfer struct to
Marcus Lundblad <malu@pidgin.im>
parents: 30114
diff changeset
65 gsize thumbnail_size;
619d2b5758c0 Hide the thumbnail-related stuff from the PurpleXfer struct to
Marcus Lundblad <malu@pidgin.im>
parents: 30114
diff changeset
66 gchar *thumbnail_mimetype;
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 } PurpleXferPrivData;
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
68
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
69 static int purple_xfer_choose_file(PurpleXfer *xfer);
14967
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
70
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
71 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
72 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
73 {
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
74 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
75
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
76 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
77 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
78
30124
e84a06d70326 Minor cleanup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30123
diff changeset
79 g_free(priv->thumbnail_data);
30115
619d2b5758c0 Hide the thumbnail-related stuff from the PurpleXfer struct to
Marcus Lundblad <malu@pidgin.im>
parents: 30114
diff changeset
80
30124
e84a06d70326 Minor cleanup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30123
diff changeset
81 g_free(priv->thumbnail_mimetype);
30115
619d2b5758c0 Hide the thumbnail-related stuff from the PurpleXfer struct to
Marcus Lundblad <malu@pidgin.im>
parents: 30114
diff changeset
82
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
83 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
84 }
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
85
29168
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
86 static const gchar *
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
87 purple_xfer_status_type_to_string(PurpleXferStatusType type)
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
88 {
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
89 static const struct {
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
90 PurpleXferStatusType type;
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
91 const char *name;
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
92 } type_names[] = {
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
93 { PURPLE_XFER_STATUS_UNKNOWN, "unknown" },
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
94 { PURPLE_XFER_STATUS_NOT_STARTED, "not started" },
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
95 { PURPLE_XFER_STATUS_ACCEPTED, "accepted" },
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
96 { PURPLE_XFER_STATUS_STARTED, "started" },
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
97 { PURPLE_XFER_STATUS_DONE, "done" },
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
98 { PURPLE_XFER_STATUS_CANCEL_LOCAL, "cancelled locally" },
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
99 { PURPLE_XFER_STATUS_CANCEL_REMOTE, "cancelled remotely" }
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
100 };
34305
5804117fb298 Fix the rest of libpurple warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34286
diff changeset
101 gsize i;
29168
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
102
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
103 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
104 if (type_names[i].type == type)
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
105 return type_names[i].name;
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
106
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
107 return "invalid state";
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
108 }
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
109
15702
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
110 GList *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
111 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
112 {
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
113 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
114 }
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
115
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
116 PurpleXfer *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
117 purple_xfer_new(PurpleAccount *account, PurpleXferType type, const char *who)
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 PurpleXfer *xfer;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
120 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
121 PurpleXferPrivData *priv;
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
122
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
123 g_return_val_if_fail(type != PURPLE_XFER_UNKNOWN, NULL);
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
124 g_return_val_if_fail(account != NULL, NULL);
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
125 g_return_val_if_fail(who != NULL, NULL);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
126
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
127 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
128 PURPLE_DBUS_REGISTER_POINTER(xfer, PurpleXfer);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
129
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
130 xfer->ref = 1;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
131 xfer->type = type;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
132 xfer->account = account;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
133 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
134 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
135 xfer->message = NULL;
15280
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
136 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
137 xfer->fd = -1;
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
138
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
139 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
140 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
141
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
142 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
143 /* 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
144 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
145 } 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
146 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
147 }
29686
f9dee36112d0 propagate from branch 'im.pidgin.pidgin' (head 3180b88b4c1b8e73c22589457b99d2c1b6096bf4)
Paul Aurich <darkrain42@pidgin.im>
parents: 29232 29685
diff changeset
148
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
149 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
150
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
151 ui_ops = purple_xfer_get_ui_ops(xfer);
5169
091d71968b59 [gaim-migrate @ 5533]
Mark Doliner <markdoliner@pidgin.im>
parents: 5164
diff changeset
152
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
153 if (ui_ops != NULL && ui_ops->new_xfer != NULL)
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
154 ui_ops->new_xfer(xfer);
5169
091d71968b59 [gaim-migrate @ 5533]
Mark Doliner <markdoliner@pidgin.im>
parents: 5164
diff changeset
155
15702
111fdd9108cc Patch from Richard 'wabz' Nelson to add file-transfer ui. Amazing stuff\!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
156 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
157
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
158 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
159 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
160
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
161 return xfer;
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
162 }
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
163
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
164 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
165 purple_xfer_destroy(PurpleXfer *xfer)
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
166 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
167 PurpleXferUiOps *ui_ops;
4247
a77b46afa096 [gaim-migrate @ 4497]
Christian Hammond <chipx86@chipx86.com>
parents: 4245
diff changeset
168
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
169 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
170
29157
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
171 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
172 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
173
9512
d51da219ffb4 [gaim-migrate @ 10339]
Mark Doliner <markdoliner@pidgin.im>
parents: 9511
diff changeset
174 /* 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
175 purple_request_close_with_handle(xfer);
9512
d51da219ffb4 [gaim-migrate @ 10339]
Mark Doliner <markdoliner@pidgin.im>
parents: 9511
diff changeset
176
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
177 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
178 purple_xfer_cancel_local(xfer);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
179
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
180 ui_ops = purple_xfer_get_ui_ops(xfer);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
181
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
182 if (ui_ops != NULL && ui_ops->destroy != NULL)
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
183 ui_ops->destroy(xfer);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
184
9789
9f056394f7f0 [gaim-migrate @ 10657]
Mark Doliner <markdoliner@pidgin.im>
parents: 9788
diff changeset
185 g_free(xfer->who);
9f056394f7f0 [gaim-migrate @ 10657]
Mark Doliner <markdoliner@pidgin.im>
parents: 9788
diff changeset
186 g_free(xfer->filename);
9f056394f7f0 [gaim-migrate @ 10657]
Mark Doliner <markdoliner@pidgin.im>
parents: 9788
diff changeset
187 g_free(xfer->remote_ip);
9f056394f7f0 [gaim-migrate @ 10657]
Mark Doliner <markdoliner@pidgin.im>
parents: 9788
diff changeset
188 g_free(xfer->local_filename);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
189
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
190 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
191
17852
174c0d122a79 Add new function purple_xfer_get_remote_user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17293
diff changeset
192 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
193 xfers = g_list_remove(xfers, xfer);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
194 g_free(xfer);
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
195 }
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
196
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
197 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
198 purple_xfer_ref(PurpleXfer *xfer)
7805
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 g_return_if_fail(xfer != NULL);
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
201
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
202 xfer->ref++;
29157
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
203
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
204 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
205 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
206 }
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
207
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
208 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
209 purple_xfer_unref(PurpleXfer *xfer)
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
210 {
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
211 g_return_if_fail(xfer != NULL);
12250
5b14301dd1ec [gaim-migrate @ 14552]
Richard Laager <rlaager@pidgin.im>
parents: 12151
diff changeset
212 g_return_if_fail(xfer->ref > 0);
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 xfer->ref--;
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
215
29157
e3a6a5cae73b Add some verbose ref-count debugging for PurpleXfer's.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29156
diff changeset
216 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
217 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
218
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
219 if (xfer->ref == 0)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
220 purple_xfer_destroy(xfer);
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
221 }
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
222
32289
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
223 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
224 purple_xfer_set_status(PurpleXfer *xfer, PurpleXferStatusType status)
9788
ca43717a431b [gaim-migrate @ 10656]
Dave West <kat@users.sourceforge.net>
parents: 9785
diff changeset
225 {
ca43717a431b [gaim-migrate @ 10656]
Dave West <kat@users.sourceforge.net>
parents: 9785
diff changeset
226 g_return_if_fail(xfer != NULL);
ca43717a431b [gaim-migrate @ 10656]
Dave West <kat@users.sourceforge.net>
parents: 9785
diff changeset
227
29168
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
228 if (purple_debug_is_verbose())
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
229 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
230 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
231 purple_xfer_status_type_to_string(status));
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
232
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
233 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
234 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
235
27942
ace850ade78d Set xfer->status before emitting signals in purple_xfer_set_status.
Paul Aurich <darkrain42@pidgin.im>
parents: 27655
diff changeset
236 xfer->status = status;
ace850ade78d Set xfer->status before emitting signals in purple_xfer_set_status.
Paul Aurich <darkrain42@pidgin.im>
parents: 27655
diff changeset
237
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
238 if(xfer->type == PURPLE_XFER_SEND) {
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
239 switch(status) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
240 case PURPLE_XFER_STATUS_ACCEPTED:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
241 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
242 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
243 case PURPLE_XFER_STATUS_STARTED:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
244 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
245 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
246 case PURPLE_XFER_STATUS_DONE:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
247 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
248 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
249 case PURPLE_XFER_STATUS_CANCEL_LOCAL:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
250 case PURPLE_XFER_STATUS_CANCEL_REMOTE:
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-send-cancel", xfer);
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
252 break;
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
253 default:
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
254 break;
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
255 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
256 } else if(xfer->type == PURPLE_XFER_RECEIVE) {
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
257 switch(status) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
258 case PURPLE_XFER_STATUS_ACCEPTED:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
259 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
260 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
261 case PURPLE_XFER_STATUS_STARTED:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
262 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
263 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
264 case PURPLE_XFER_STATUS_DONE:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
265 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
266 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
267 case PURPLE_XFER_STATUS_CANCEL_LOCAL:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
268 case PURPLE_XFER_STATUS_CANCEL_REMOTE:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
269 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
270 break;
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
271 default:
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
272 break;
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
273 }
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
274 }
9788
ca43717a431b [gaim-migrate @ 10656]
Dave West <kat@users.sourceforge.net>
parents: 9785
diff changeset
275 }
ca43717a431b [gaim-migrate @ 10656]
Dave West <kat@users.sourceforge.net>
parents: 9785
diff changeset
276
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 31154
diff changeset
277 static void
28722
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
278 purple_xfer_conversation_write_internal(PurpleXfer *xfer,
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
279 const char *message, gboolean is_error, gboolean print_thumbnail)
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
280 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
281 PurpleConversation *conv = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
282 PurpleMessageFlags flags = PURPLE_MESSAGE_SYSTEM;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10654
diff changeset
283 char *escaped;
30126
f09ecb81212c Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30124
diff changeset
284 gconstpointer thumbnail_data;
f09ecb81212c Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30124
diff changeset
285 gsize size;
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
286
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
287 g_return_if_fail(xfer != NULL);
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
288 g_return_if_fail(message != NULL);
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
289
30126
f09ecb81212c Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30124
diff changeset
290 thumbnail_data = purple_xfer_get_thumbnail(xfer, &size);
f09ecb81212c Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30124
diff changeset
291
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
292 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
293 purple_xfer_get_account(xfer));
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
294
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
295 if (conv == NULL)
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
296 return;
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
297
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10654
diff changeset
298 escaped = g_markup_escape_text(message, -1);
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
299
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
300 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
301 flags |= PURPLE_MESSAGE_ERROR;
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
302
28722
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
303 if (print_thumbnail && thumbnail_data) {
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
304 gchar *message_with_img;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 31154
diff changeset
305 gpointer data = g_memdup(thumbnail_data, size);
33661
2ebcb105e606 Rename two functions.
Mark Doliner <mark@kingant.net>
parents: 33465
diff changeset
306 int id = purple_imgstore_new_with_id(data, size, NULL);
28722
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
307
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 31154
diff changeset
308 message_with_img =
33052
df92c3d93904 From now on, prpls must specify images using SRC instead of ID.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32663
diff changeset
309 g_strdup_printf("<img src='" PURPLE_STORED_IMAGE_PROTOCOL "%d'> %s",
df92c3d93904 From now on, prpls must specify images using SRC instead of ID.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32663
diff changeset
310 id, escaped);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 31154
diff changeset
311 purple_conversation_write(conv, NULL, message_with_img, flags,
28722
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
312 time(NULL));
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
313 purple_imgstore_unref_by_id(id);
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
314 g_free(message_with_img);
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
315 } else {
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
316 purple_conversation_write(conv, NULL, escaped, flags, time(NULL));
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
317 }
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10654
diff changeset
318 g_free(escaped);
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
319 }
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
320
28722
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
321 void
33465
215bec3b763a Add const to the API, where needed
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33052
diff changeset
322 purple_xfer_conversation_write(PurpleXfer *xfer, const gchar *message,
28722
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
323 gboolean is_error)
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
324 {
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
325 purple_xfer_conversation_write_internal(xfer, message, is_error, FALSE);
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
326 }
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
327
30124
e84a06d70326 Minor cleanup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30123
diff changeset
328 /* maybe this one should be exported publically? */
28722
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
329 static void
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
330 purple_xfer_conversation_write_with_thumbnail(PurpleXfer *xfer,
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
331 const gchar *message)
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
332 {
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
333 purple_xfer_conversation_write_internal(xfer, message, FALSE, TRUE);
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
334 }
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
335
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
336
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
337 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
338 {
10919
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
339 int err = errno;
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
340 gchar *msg = NULL, *utf8;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
341 PurpleXferType xfer_type = purple_xfer_get_type(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
342 PurpleAccount *account = purple_xfer_get_account(xfer);
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
343
10919
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
344 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
345 switch(xfer_type) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
346 case PURPLE_XFER_SEND:
9796
dd7499147bed [gaim-migrate @ 10664]
Dave West <kat@users.sourceforge.net>
parents: 9795
diff changeset
347 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
348 utf8, g_strerror(err));
9795
80d4d3be52d7 [gaim-migrate @ 10663]
Luke Schierer <lschiere@pidgin.im>
parents: 9789
diff changeset
349 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
350 case PURPLE_XFER_RECEIVE:
9796
dd7499147bed [gaim-migrate @ 10664]
Dave West <kat@users.sourceforge.net>
parents: 9795
diff changeset
351 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
352 utf8, g_strerror(err));
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
353 break;
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
354 default:
9796
dd7499147bed [gaim-migrate @ 10664]
Dave West <kat@users.sourceforge.net>
parents: 9795
diff changeset
355 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
356 utf8, g_strerror(err));
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
357 break;
10919
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
358 }
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
359 g_free(utf8);
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
360
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
361 purple_xfer_conversation_write(xfer, msg, TRUE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
362 purple_xfer_error(xfer_type, account, xfer->who, msg);
9796
dd7499147bed [gaim-migrate @ 10664]
Dave West <kat@users.sourceforge.net>
parents: 9795
diff changeset
363 g_free(msg);
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
364 }
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
365
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
366 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
367 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
368 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
369 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
370 PurpleXferType type;
33940
b44d15793c83 Use GStatBuf instead of struct stat
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33661
diff changeset
371 GStatBuf st;
14967
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
372 gchar *dir;
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
373
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
374 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
375 type = purple_xfer_get_type(xfer);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
376
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 10504
diff changeset
377 if (g_stat(filename, &st) != 0) {
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
378 /* 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
379 if (type == PURPLE_XFER_RECEIVE) {
15161
7a392764f0b8 [gaim-migrate @ 17885]
Daniel Atallah <datallah@pidgin.im>
parents: 14967
diff changeset
380 #ifndef _WIN32
7a392764f0b8 [gaim-migrate @ 17885]
Daniel Atallah <datallah@pidgin.im>
parents: 14967
diff changeset
381 int mode = W_OK;
7a392764f0b8 [gaim-migrate @ 17885]
Daniel Atallah <datallah@pidgin.im>
parents: 14967
diff changeset
382 #else
7a392764f0b8 [gaim-migrate @ 17885]
Daniel Atallah <datallah@pidgin.im>
parents: 14967
diff changeset
383 int mode = F_OK;
7a392764f0b8 [gaim-migrate @ 17885]
Daniel Atallah <datallah@pidgin.im>
parents: 14967
diff changeset
384 #endif
14967
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
385 dir = g_path_get_dirname(filename);
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
386
15161
7a392764f0b8 [gaim-migrate @ 17885]
Daniel Atallah <datallah@pidgin.im>
parents: 14967
diff changeset
387 if (g_access(dir, mode) == 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
388 purple_xfer_request_accepted(xfer, filename);
14967
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
389 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
390 purple_xfer_ref(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
391 purple_notify_message(
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
392 NULL, PURPLE_NOTIFY_MSG_ERROR, NULL,
14967
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
393 _("Directory is not writable."), NULL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
394 (PurpleNotifyCloseCallback)purple_xfer_choose_file, xfer);
14967
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
395 }
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
396
6a418583bf2d [gaim-migrate @ 17677]
Ka-Hing Cheung <khc@pidgin.im>
parents: 14899
diff changeset
397 g_free(dir);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
398 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
399 else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
400 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
401 purple_xfer_cancel_local(xfer);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
402 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
403 }
29155
365ee5da3b06 There's no need to call purple_xfer_get_type() repeatedly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29019
diff changeset
404 else if ((type == PURPLE_XFER_SEND) && (st.st_size == 0)) {
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
405
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
406 purple_notify_error(NULL, NULL,
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
407 _("Cannot send a file of 0 bytes."), NULL);
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
408
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
409 purple_xfer_cancel_local(xfer);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
410 }
29155
365ee5da3b06 There's no need to call purple_xfer_get_type() repeatedly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29019
diff changeset
411 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
412 /*
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
413 * XXX - Sending a directory should be valid for some protocols.
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
414 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
415 purple_notify_error(NULL, NULL,
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
416 _("Cannot send a directory."), NULL);
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
417
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
418 purple_xfer_cancel_local(xfer);
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
419 }
29155
365ee5da3b06 There's no need to call purple_xfer_get_type() repeatedly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29019
diff changeset
420 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
421 char *msg, *utf8;
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
422 utf8 = g_filename_to_utf8(filename, -1, NULL, NULL, NULL);
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
423 msg = g_strdup_printf(
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
424 _("%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
425 g_free(utf8);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
426 purple_notify_error(NULL, NULL, msg, NULL);
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
427 g_free(msg);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
428 purple_xfer_request_denied(xfer);
9785
14fe4689ff01 [gaim-migrate @ 10653]
Tim Ringenbach <marv@pidgin.im>
parents: 9781
diff changeset
429 }
29156
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
430 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
431 #ifndef _WIN32
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
432 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
433 #else
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
434 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
435 #endif
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
436
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
437 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
438 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
439 } else {
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
440 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
441 purple_notify_message(
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
442 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
443 _("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
444 (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
445 }
816cd92683eb Check file permissions before sending a file transfer request.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29155
diff changeset
446 }
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
447 else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
448 purple_xfer_request_accepted(xfer, filename);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
449 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
450
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
451 purple_xfer_unref(xfer);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
452 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
453
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
454 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
455 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
456 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
457 PurpleXfer *xfer = (PurpleXfer *)user_data;
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
458
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
459 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
460 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
461 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
462 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
463 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
464 purple_xfer_unref(xfer);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
465 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
466
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
467 static int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
468 purple_xfer_choose_file(PurpleXfer *xfer)
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
469 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
470 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
471 (purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
472 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
473 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
474 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
475 xfer);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
476
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
477 return 0;
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
478 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
479
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
480 static int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
481 cancel_recv_cb(PurpleXfer *xfer)
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
482 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
483 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
484 purple_xfer_request_denied(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
485 purple_xfer_unref(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 return 0;
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
488 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
489
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
490 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
491 purple_xfer_ask_recv(PurpleXfer *xfer)
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
492 {
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10654
diff changeset
493 char *buf, *size_buf;
32663
1b87b3e98b0a Upgrade PurpleXfer for a 64-bit world.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32608
diff changeset
494 goffset size;
30126
f09ecb81212c Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30124
diff changeset
495 gconstpointer thumb;
f09ecb81212c Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30124
diff changeset
496 gsize thumb_size;
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
497
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
498 /* If we have already accepted the request, ask the destination file
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
499 name directly */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
500 if (purple_xfer_get_status(xfer) != PURPLE_XFER_STATUS_ACCEPTED) {
34331
c8486462bb63 Request API refactoring: switch purple_request_action to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34305
diff changeset
501 PurpleRequestCommonParameters *cpar;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
502 PurpleBuddy *buddy = purple_find_buddy(xfer->account, xfer->who);
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
503
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
504 if (purple_xfer_get_filename(xfer) != NULL)
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
505 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
506 size = purple_xfer_get_size(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
507 size_buf = purple_str_size_to_units(size);
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
508 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
509 buddy ? purple_buddy_get_alias(buddy) : xfer->who,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
510 purple_xfer_get_filename(xfer), size_buf);
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
511 g_free(size_buf);
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
512 }
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
513 else
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
514 {
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
515 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
516 buddy ? purple_buddy_get_alias(buddy) : xfer->who);
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
517 }
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
518
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
519 if (xfer->message != NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
520 serv_got_im(purple_account_get_connection(xfer->account),
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
521 xfer->who, xfer->message, 0, time(NULL));
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
522
34331
c8486462bb63 Request API refactoring: switch purple_request_action to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34305
diff changeset
523 cpar = purple_request_cpar_from_account(xfer->account);
30126
f09ecb81212c Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30124
diff changeset
524 if ((thumb = purple_xfer_get_thumbnail(xfer, &thumb_size))) {
34331
c8486462bb63 Request API refactoring: switch purple_request_action to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34305
diff changeset
525 purple_request_cpar_set_custom_icon(cpar, thumb,
c8486462bb63 Request API refactoring: switch purple_request_action to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34305
diff changeset
526 thumb_size);
27427
00f91afbd4d9 Show thumbnail in ft request dialog
Marcus Lundblad <malu@pidgin.im>
parents: 27419
diff changeset
527 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 31154
diff changeset
528
34331
c8486462bb63 Request API refactoring: switch purple_request_action to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34305
diff changeset
529 purple_request_accept_cancel(xfer, NULL, buf, NULL,
c8486462bb63 Request API refactoring: switch purple_request_action to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34305
diff changeset
530 PURPLE_DEFAULT_ACTION_NONE, cpar, xfer,
c8486462bb63 Request API refactoring: switch purple_request_action to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34305
diff changeset
531 G_CALLBACK(purple_xfer_choose_file),
c8486462bb63 Request API refactoring: switch purple_request_action to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34305
diff changeset
532 G_CALLBACK(cancel_recv_cb));
c8486462bb63 Request API refactoring: switch purple_request_action to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34305
diff changeset
533
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
534 g_free(buf);
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
535 } else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
536 purple_xfer_choose_file(xfer);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
537 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
538
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
539 static int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
540 ask_accept_ok(PurpleXfer *xfer)
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
541 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
542 purple_xfer_request_accepted(xfer, NULL);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
543
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
544 return 0;
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
545 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
546
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
547 static int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
548 ask_accept_cancel(PurpleXfer *xfer)
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
549 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
550 purple_xfer_request_denied(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
551 purple_xfer_unref(xfer);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
552
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
553 return 0;
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
554 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
555
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
556 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
557 purple_xfer_ask_accept(PurpleXfer *xfer)
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
558 {
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
559 char *buf, *buf2 = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
560 PurpleBuddy *buddy = purple_find_buddy(xfer->account, xfer->who);
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
561
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
562 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
563 buddy ? purple_buddy_get_alias(buddy) : xfer->who);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
564 if (purple_xfer_get_remote_ip(xfer) &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
565 purple_xfer_get_remote_port(xfer))
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
566 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
567 "Remote host: %s\nRemote port: %d"),
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
568 purple_xfer_get_remote_ip(xfer),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
569 purple_xfer_get_remote_port(xfer));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
570 purple_request_accept_cancel(xfer, NULL, buf, buf2,
34331
c8486462bb63 Request API refactoring: switch purple_request_action to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34305
diff changeset
571 PURPLE_DEFAULT_ACTION_NONE,
c8486462bb63 Request API refactoring: switch purple_request_action to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34305
diff changeset
572 purple_request_cpar_from_account(xfer->account), xfer,
c8486462bb63 Request API refactoring: switch purple_request_action to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34305
diff changeset
573 G_CALLBACK(ask_accept_ok), G_CALLBACK(ask_accept_cancel));
9511
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
574 g_free(buf);
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
575 g_free(buf2);
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
576 }
d68f99136f26 [gaim-migrate @ 10338]
Mark Doliner <markdoliner@pidgin.im>
parents: 8585
diff changeset
577
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
578 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
579 purple_xfer_request(PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
580 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
581 g_return_if_fail(xfer != NULL);
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
582 g_return_if_fail(xfer->ops.init != NULL);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
583
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
584 purple_xfer_ref(xfer);
4247
a77b46afa096 [gaim-migrate @ 4497]
Christian Hammond <chipx86@chipx86.com>
parents: 4245
diff changeset
585
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
586 if (purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE)
13220
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
587 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
588 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
589 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
590 {
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
591 /* 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
592 purple_xfer_cancel_local(xfer);
13220
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
593 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
594 else if (purple_xfer_get_filename(xfer) ||
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
595 purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_ACCEPTED)
13220
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
596 {
11084
b6acee973833 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents: 10919
diff changeset
597 gchar* message = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
598 PurpleBuddy *buddy = purple_find_buddy(xfer->account, xfer->who);
28720
4b63cf19f159 Make it work again, after some new xfer UI ops where added... :)
Marcus Lundblad <malu@pidgin.im>
parents: 28682
diff changeset
599
11084
b6acee973833 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents: 10919
diff changeset
600 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
601 buddy ? purple_buddy_get_alias(buddy) : xfer->who, purple_xfer_get_filename(xfer));
28722
d53c7b4cf1d2 Print the thumbnail along with the offer message in the conversation
Marcus Lundblad <malu@pidgin.im>
parents: 28720
diff changeset
602 purple_xfer_conversation_write_with_thumbnail(xfer, message);
11084
b6acee973833 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents: 10919
diff changeset
603 g_free(message);
28720
4b63cf19f159 Make it work again, after some new xfer UI ops where added... :)
Marcus Lundblad <malu@pidgin.im>
parents: 28682
diff changeset
604
13220
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
605 /* 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
606 if (xfer->local_filename == NULL)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
607 purple_xfer_ask_recv(xfer);
13220
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
608 }
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
609 else
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
610 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
611 purple_xfer_ask_accept(xfer);
11084
b6acee973833 [gaim-migrate @ 13103]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents: 10919
diff changeset
612 }
13220
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
613 }
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
614 else
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
615 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
616 purple_xfer_choose_file(xfer);
13220
4eca54b95034 [gaim-migrate @ 15583]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13109
diff changeset
617 }
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
618 }
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
619
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
620 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
621 purple_xfer_request_accepted(PurpleXfer *xfer, const char *filename)
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
622 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
623 PurpleXferType type;
33940
b44d15793c83 Use GStatBuf instead of struct stat
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33661
diff changeset
624 GStatBuf 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
625 char *msg, *utf8, *base;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
626 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
627 PurpleBuddy *buddy;
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
628
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
629 if (xfer == NULL)
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
630 return;
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
631
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
632 type = purple_xfer_get_type(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
633 account = purple_xfer_get_account(xfer);
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
634
29822
7c6c2df6f9a2 whitespace trimming
Paul Aurich <darkrain42@pidgin.im>
parents: 29821
diff changeset
635 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
636
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
637 if (!filename && type == PURPLE_XFER_RECEIVE) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
638 xfer->status = PURPLE_XFER_STATUS_ACCEPTED;
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
639 xfer->ops.init(xfer);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
640 return;
4150
fd30caf1a296 [gaim-migrate @ 4369]
Rob Flynn <gaim@robflynn.com>
parents: 3730
diff changeset
641 }
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
642
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
643 buddy = purple_find_buddy(account, xfer->who);
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
644
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
645 if (type == PURPLE_XFER_SEND) {
13595
191c2d12a00c [gaim-migrate @ 15980]
Mark Doliner <markdoliner@pidgin.im>
parents: 13220
diff changeset
646 /* Sending a file */
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
647 /* 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
648 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
649 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
650
11934
97486eeddc1a [gaim-migrate @ 14225]
Richard Gobeille
parents: 11338
diff changeset
651 #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
652 if (g_strrstr(filename, "../") || g_strrstr(filename, "..\\"))
11934
97486eeddc1a [gaim-migrate @ 14225]
Richard Gobeille
parents: 11338
diff changeset
653 #else
21985
bf0e936998e4 Move some curly braces around so static analysis tools can properly detect
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21682
diff changeset
654 if (g_strrstr(filename, "../"))
11934
97486eeddc1a [gaim-migrate @ 14225]
Richard Gobeille
parents: 11338
diff changeset
655 #endif
21985
bf0e936998e4 Move some curly braces around so static analysis tools can properly detect
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 21682
diff changeset
656 {
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
657 utf8 = g_filename_to_utf8(filename, -1, NULL, NULL, NULL);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
658
10919
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
659 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
660 purple_xfer_error(type, account, xfer->who, msg);
10919
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
661 g_free(utf8);
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
662 g_free(msg);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
663
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
664 purple_xfer_unref(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
665 return;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
666 }
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
667
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
668 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
669 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
670 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
671 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
672 return;
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
673 }
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
674
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
675 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
676 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
677 } else {
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
678 purple_xfer_set_local_filename(xfer, filename);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
679 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
680
26726
b81bcec8f359 Updates for GTK+ 3.0. Remove some deprecated functions (someone should
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26373
diff changeset
681 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
682 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
683 g_free(base);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
684 purple_xfer_set_filename(xfer, utf8);
10919
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
685
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
686 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
687 utf8, buddy ? purple_buddy_get_alias(buddy) : xfer->who);
10919
22fba24cd16e [gaim-migrate @ 12683]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10774
diff changeset
688 g_free(utf8);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
689 purple_xfer_conversation_write(xfer, msg, FALSE);
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
690 g_free(msg);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
691 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
692 else {
13595
191c2d12a00c [gaim-migrate @ 15980]
Mark Doliner <markdoliner@pidgin.im>
parents: 13220
diff changeset
693 /* Receiving a file */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
694 xfer->status = PURPLE_XFER_STATUS_ACCEPTED;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
695 purple_xfer_set_local_filename(xfer, filename);
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
696
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
697 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
698 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
699 purple_xfer_conversation_write(xfer, msg, FALSE);
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
700 g_free(msg);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
701 }
4150
fd30caf1a296 [gaim-migrate @ 4369]
Rob Flynn <gaim@robflynn.com>
parents: 3730
diff changeset
702
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
703 purple_xfer_add(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
704 xfer->ops.init(xfer);
10259
87f90d97e4fc [gaim-migrate @ 11402]
Tim Ringenbach <marv@pidgin.im>
parents: 10246
diff changeset
705
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
706 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
707
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
708 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
709 purple_xfer_request_denied(PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
710 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
711 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
712
29168
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
713 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
714
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
715 if (xfer->ops.request_denied != NULL)
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
716 xfer->ops.request_denied(xfer);
5164
dda3bf92f195 [gaim-migrate @ 5528]
Mark Doliner <markdoliner@pidgin.im>
parents: 5146
diff changeset
717
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
718 purple_xfer_unref(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
719 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
720
32289
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
721 int purple_xfer_get_fd(PurpleXfer *xfer)
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
722 {
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
723 g_return_val_if_fail(xfer != NULL, 0);
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
724
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
725 return xfer->fd;
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
726 }
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
727
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
728 int purple_xfer_get_watcher(PurpleXfer *xfer)
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
729 {
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
730 g_return_val_if_fail(xfer != NULL, 0);
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
731
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
732 return xfer->watcher;
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
733 }
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
734
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
735 PurpleXferType
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
736 purple_xfer_get_type(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
737 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
738 g_return_val_if_fail(xfer != NULL, PURPLE_XFER_UNKNOWN);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
739
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
740 return xfer->type;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
741 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
742
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
743 PurpleAccount *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
744 purple_xfer_get_account(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
745 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
746 g_return_val_if_fail(xfer != NULL, NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
747
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
748 return xfer->account;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
749 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
750
17852
174c0d122a79 Add new function purple_xfer_get_remote_user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17293
diff changeset
751 const char *
174c0d122a79 Add new function purple_xfer_get_remote_user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17293
diff changeset
752 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
753 {
174c0d122a79 Add new function purple_xfer_get_remote_user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17293
diff changeset
754 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
755 return xfer->who;
174c0d122a79 Add new function purple_xfer_get_remote_user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17293
diff changeset
756 }
174c0d122a79 Add new function purple_xfer_get_remote_user.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17293
diff changeset
757
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
758 PurpleXferStatusType
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
759 purple_xfer_get_status(const PurpleXfer *xfer)
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
760 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
761 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
762
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
763 return xfer->status;
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
764 }
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
765
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
766 gboolean
32607
3d50780413f8 purple_xfer_is_canceled() renamed to purple_xfer_is_cancelled()
Andrew Victor <andrew.victor@mxit.com>
parents: 32289
diff changeset
767 purple_xfer_is_cancelled(const PurpleXfer *xfer)
7738
ebb766ef2146 [gaim-migrate @ 8383]
Tim Ringenbach <marv@pidgin.im>
parents: 7272
diff changeset
768 {
ebb766ef2146 [gaim-migrate @ 8383]
Tim Ringenbach <marv@pidgin.im>
parents: 7272
diff changeset
769 g_return_val_if_fail(xfer != NULL, TRUE);
ebb766ef2146 [gaim-migrate @ 8383]
Tim Ringenbach <marv@pidgin.im>
parents: 7272
diff changeset
770
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
771 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
772 (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_CANCEL_REMOTE))
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
773 return TRUE;
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
774 else
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
775 return FALSE;
7738
ebb766ef2146 [gaim-migrate @ 8383]
Tim Ringenbach <marv@pidgin.im>
parents: 7272
diff changeset
776 }
ebb766ef2146 [gaim-migrate @ 8383]
Tim Ringenbach <marv@pidgin.im>
parents: 7272
diff changeset
777
4539
44671e1ce14e [gaim-migrate @ 4818]
Christian Hammond <chipx86@chipx86.com>
parents: 4538
diff changeset
778 gboolean
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
779 purple_xfer_is_completed(const PurpleXfer *xfer)
4539
44671e1ce14e [gaim-migrate @ 4818]
Christian Hammond <chipx86@chipx86.com>
parents: 4538
diff changeset
780 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
781 g_return_val_if_fail(xfer != NULL, TRUE);
4539
44671e1ce14e [gaim-migrate @ 4818]
Christian Hammond <chipx86@chipx86.com>
parents: 4538
diff changeset
782
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
783 return (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_DONE);
4539
44671e1ce14e [gaim-migrate @ 4818]
Christian Hammond <chipx86@chipx86.com>
parents: 4538
diff changeset
784 }
44671e1ce14e [gaim-migrate @ 4818]
Christian Hammond <chipx86@chipx86.com>
parents: 4538
diff changeset
785
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
786 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
787 purple_xfer_get_filename(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
788 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
789 g_return_val_if_fail(xfer != NULL, NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
790
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
791 return xfer->filename;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
792 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
793
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
794 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
795 purple_xfer_get_local_filename(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
796 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
797 g_return_val_if_fail(xfer != NULL, NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
798
4605
67526771e679 [gaim-migrate @ 4892]
Mark Doliner <markdoliner@pidgin.im>
parents: 4595
diff changeset
799 return xfer->local_filename;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
800 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
801
32663
1b87b3e98b0a Upgrade PurpleXfer for a 64-bit world.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32608
diff changeset
802 goffset
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
803 purple_xfer_get_bytes_sent(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
804 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
805 g_return_val_if_fail(xfer != NULL, 0);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
806
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
807 return xfer->bytes_sent;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
808 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
809
32663
1b87b3e98b0a Upgrade PurpleXfer for a 64-bit world.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32608
diff changeset
810 goffset
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
811 purple_xfer_get_bytes_remaining(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
812 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
813 g_return_val_if_fail(xfer != NULL, 0);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
814
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
815 return xfer->bytes_remaining;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
816 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
817
32663
1b87b3e98b0a Upgrade PurpleXfer for a 64-bit world.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32608
diff changeset
818 goffset
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
819 purple_xfer_get_size(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
820 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
821 g_return_val_if_fail(xfer != NULL, 0);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
822
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
823 return xfer->size;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
824 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
825
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
826 double
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
827 purple_xfer_get_progress(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
828 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
829 g_return_val_if_fail(xfer != NULL, 0.0);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
830
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
831 if (purple_xfer_get_size(xfer) == 0)
4517
998c580f7f56 [gaim-migrate @ 4795]
Christian Hammond <chipx86@chipx86.com>
parents: 4514
diff changeset
832 return 0.0;
998c580f7f56 [gaim-migrate @ 4795]
Christian Hammond <chipx86@chipx86.com>
parents: 4514
diff changeset
833
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
834 return ((double)purple_xfer_get_bytes_sent(xfer) /
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
835 (double)purple_xfer_get_size(xfer));
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
836 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
837
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
838 unsigned int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
839 purple_xfer_get_local_port(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
840 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
841 g_return_val_if_fail(xfer != NULL, -1);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
842
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
843 return xfer->local_port;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
844 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
845
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
846 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
847 purple_xfer_get_remote_ip(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
848 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
849 g_return_val_if_fail(xfer != NULL, NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
850
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
851 return xfer->remote_ip;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
852 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
853
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
854 unsigned int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
855 purple_xfer_get_remote_port(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
856 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
857 g_return_val_if_fail(xfer != NULL, -1);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
858
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
859 return xfer->remote_port;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
860 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
861
22338
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
862 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
863 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
864 {
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
865 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
866
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
867 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
868 }
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
869
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
870 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
871 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
872 {
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
873 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
874
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
875 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
876 }
d6a489105624 Add accessor and update finch to not touch the internals of PurpleXfer.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22194
diff changeset
877
32289
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
878 void purple_xfer_set_fd(PurpleXfer *xfer, int fd)
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
879 {
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
880 g_return_if_fail(xfer != NULL);
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
881
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
882 xfer->fd = fd;
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
883 }
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
884
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
885 void purple_xfer_set_watcher(PurpleXfer *xfer, int watcher)
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
886 {
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
887 g_return_if_fail(xfer != NULL);
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
888
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
889 xfer->watcher = watcher;
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
890 }
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
891
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
892 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
893 purple_xfer_set_completed(PurpleXfer *xfer, gboolean completed)
4538
929fb97f4e7f [gaim-migrate @ 4817]
Nathan Walp <nwalp@pidgin.im>
parents: 4528
diff changeset
894 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
895 PurpleXferUiOps *ui_ops;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
896
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
897 g_return_if_fail(xfer != NULL);
4538
929fb97f4e7f [gaim-migrate @ 4817]
Nathan Walp <nwalp@pidgin.im>
parents: 4528
diff changeset
898
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
899 if (completed == TRUE) {
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
900 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
901 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
902
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
903 purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_DONE);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
904
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
905 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
906 {
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
907 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
908 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
909 && 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
910 {
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
911 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
912 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
913 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
914 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
915 }
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
916 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
917 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
918 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
919 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
920 }
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
921 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
922 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
923
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
924 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
925 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
926
162b561fad5e Link-ify the filename when writing the "Transfer is complete" message to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
927 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
928 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
929 g_free(msg);
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
930 }
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
931
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
932 ui_ops = purple_xfer_get_ui_ops(xfer);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
933
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
934 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
935 ui_ops->update_progress(xfer, purple_xfer_get_progress(xfer));
4538
929fb97f4e7f [gaim-migrate @ 4817]
Nathan Walp <nwalp@pidgin.im>
parents: 4528
diff changeset
936 }
929fb97f4e7f [gaim-migrate @ 4817]
Nathan Walp <nwalp@pidgin.im>
parents: 4528
diff changeset
937
929fb97f4e7f [gaim-migrate @ 4817]
Nathan Walp <nwalp@pidgin.im>
parents: 4528
diff changeset
938 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
939 purple_xfer_set_message(PurpleXfer *xfer, const char *message)
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
940 {
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
941 g_return_if_fail(xfer != NULL);
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
942
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
943 g_free(xfer->message);
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13838
diff changeset
944 xfer->message = g_strdup(message);
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
945 }
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
946
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9932
diff changeset
947 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
948 purple_xfer_set_filename(PurpleXfer *xfer, const char *filename)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
949 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
950 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
951
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13838
diff changeset
952 g_free(xfer->filename);
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13838
diff changeset
953 xfer->filename = g_strdup(filename);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
954 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
955
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
956 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
957 purple_xfer_set_local_filename(PurpleXfer *xfer, const char *filename)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
958 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
959 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
960
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13838
diff changeset
961 g_free(xfer->local_filename);
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13838
diff changeset
962 xfer->local_filename = g_strdup(filename);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
963 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
964
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
965 void
32663
1b87b3e98b0a Upgrade PurpleXfer for a 64-bit world.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32608
diff changeset
966 purple_xfer_set_size(PurpleXfer *xfer, goffset size)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
967 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
968 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
969
15322
cd268e368bc1 [gaim-migrate @ 18050]
Mark Doliner <markdoliner@pidgin.im>
parents: 15280
diff changeset
970 xfer->size = size;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
971 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
972 }
4538
929fb97f4e7f [gaim-migrate @ 4817]
Nathan Walp <nwalp@pidgin.im>
parents: 4528
diff changeset
973
15322
cd268e368bc1 [gaim-migrate @ 18050]
Mark Doliner <markdoliner@pidgin.im>
parents: 15280
diff changeset
974 void
32289
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
975 purple_xfer_set_local_port(PurpleXfer *xfer, unsigned int local_port)
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
976 {
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
977 g_return_if_fail(xfer != NULL);
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
978
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
979 xfer->local_port = local_port;
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
980 }
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
981
8c121b654972 Add some get/set functions to help hidding _PrupleXfer.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32256
diff changeset
982 void
32663
1b87b3e98b0a Upgrade PurpleXfer for a 64-bit world.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32608
diff changeset
983 purple_xfer_set_bytes_sent(PurpleXfer *xfer, goffset bytes_sent)
15322
cd268e368bc1 [gaim-migrate @ 18050]
Mark Doliner <markdoliner@pidgin.im>
parents: 15280
diff changeset
984 {
cd268e368bc1 [gaim-migrate @ 18050]
Mark Doliner <markdoliner@pidgin.im>
parents: 15280
diff changeset
985 g_return_if_fail(xfer != NULL);
cd268e368bc1 [gaim-migrate @ 18050]
Mark Doliner <markdoliner@pidgin.im>
parents: 15280
diff changeset
986
cd268e368bc1 [gaim-migrate @ 18050]
Mark Doliner <markdoliner@pidgin.im>
parents: 15280
diff changeset
987 xfer->bytes_sent = bytes_sent;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
988 xfer->bytes_remaining = purple_xfer_get_size(xfer) - bytes_sent;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
989 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
990
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
991 PurpleXferUiOps *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
992 purple_xfer_get_ui_ops(const PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
993 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
994 g_return_val_if_fail(xfer != NULL, NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
995
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
996 return xfer->ui_ops;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
997 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
998
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
999 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1000 purple_xfer_set_init_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *))
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1001 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1002 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1003
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1004 xfer->ops.init = fnc;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1005 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1006
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1007 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
1008 {
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
1009 g_return_if_fail(xfer != NULL);
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
1010
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
1011 xfer->ops.request_denied = fnc;
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
1012 }
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1013
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1014 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1015 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
1016 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1017 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1018
5495
c4527631aea4 [gaim-migrate @ 5891]
Herman Bloggs <herman@bluedigits.com>
parents: 5494
diff changeset
1019 xfer->ops.read = fnc;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1020 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1021
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1022 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1023 purple_xfer_set_write_fnc(PurpleXfer *xfer,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1024 gssize (*fnc)(const guchar *, size_t, PurpleXfer *))
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1025 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1026 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1027
5495
c4527631aea4 [gaim-migrate @ 5891]
Herman Bloggs <herman@bluedigits.com>
parents: 5494
diff changeset
1028 xfer->ops.write = fnc;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1029 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1030
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1031 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1032 purple_xfer_set_ack_fnc(PurpleXfer *xfer,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1033 void (*fnc)(PurpleXfer *, const guchar *, size_t))
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1034 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1035 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1036
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1037 xfer->ops.ack = fnc;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1038 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1039
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1040 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1041 purple_xfer_set_start_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *))
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1042 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1043 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1044
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1045 xfer->ops.start = fnc;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1046 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1047
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1048 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1049 purple_xfer_set_end_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *))
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1050 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1051 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1052
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1053 xfer->ops.end = fnc;
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1054 }
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 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1057 purple_xfer_set_cancel_send_fnc(PurpleXfer *xfer, void (*fnc)(PurpleXfer *))
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1058 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1059 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1060
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1061 xfer->ops.cancel_send = fnc;
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1062 }
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1063
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1064 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1065 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
1066 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1067 g_return_if_fail(xfer != NULL);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1068
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1069 xfer->ops.cancel_recv = fnc;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1070 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1071
15280
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1072 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1073 purple_xfer_increase_buffer_size(PurpleXfer *xfer)
15280
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1074 {
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1075 xfer->current_buffer_size = MIN(xfer->current_buffer_size * 1.5,
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1076 FT_MAX_BUFFER_SIZE);
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1077 }
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1078
12151
8002bb57756b [gaim-migrate @ 14452]
Richard Laager <rlaager@pidgin.im>
parents: 11934
diff changeset
1079 gssize
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1080 purple_xfer_read(PurpleXfer *xfer, guchar **buffer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1081 {
12151
8002bb57756b [gaim-migrate @ 14452]
Richard Laager <rlaager@pidgin.im>
parents: 11934
diff changeset
1082 gssize s, r;
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1083
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1084 g_return_val_if_fail(xfer != NULL, 0);
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1085 g_return_val_if_fail(buffer != NULL, 0);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1086
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1087 if (purple_xfer_get_size(xfer) == 0)
15280
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1088 s = xfer->current_buffer_size;
4517
998c580f7f56 [gaim-migrate @ 4795]
Christian Hammond <chipx86@chipx86.com>
parents: 4514
diff changeset
1089 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1090 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
1091
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
1092 if (xfer->ops.read != NULL) {
5495
c4527631aea4 [gaim-migrate @ 5891]
Herman Bloggs <herman@bluedigits.com>
parents: 5494
diff changeset
1093 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
1094 }
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1095 else {
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1096 *buffer = g_malloc0(s);
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1097
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1098 r = read(xfer->fd, *buffer, s);
13011
b41d13bd682d [gaim-migrate @ 15364]
Daniel Atallah <datallah@pidgin.im>
parents: 12250
diff changeset
1099 if (r < 0 && errno == EAGAIN)
b41d13bd682d [gaim-migrate @ 15364]
Daniel Atallah <datallah@pidgin.im>
parents: 12250
diff changeset
1100 r = 0;
b41d13bd682d [gaim-migrate @ 15364]
Daniel Atallah <datallah@pidgin.im>
parents: 12250
diff changeset
1101 else if (r < 0)
b41d13bd682d [gaim-migrate @ 15364]
Daniel Atallah <datallah@pidgin.im>
parents: 12250
diff changeset
1102 r = -1;
13788
019bc2080927 [gaim-migrate @ 16198]
Daniel Atallah <datallah@pidgin.im>
parents: 13729
diff changeset
1103 else if (r == 0)
019bc2080927 [gaim-migrate @ 16198]
Daniel Atallah <datallah@pidgin.im>
parents: 13729
diff changeset
1104 r = -1;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1105 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1106
34305
5804117fb298 Fix the rest of libpurple warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34286
diff changeset
1107 if (r >= 0 && (gsize)r == xfer->current_buffer_size)
15280
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1108 /*
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1109 * We managed to read the entire buffer. This means our this
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1110 * 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
1111 * bigger.
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1112 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1113 purple_xfer_increase_buffer_size(xfer);
15280
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1114
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1115 return r;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1116 }
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1117
12151
8002bb57756b [gaim-migrate @ 14452]
Richard Laager <rlaager@pidgin.im>
parents: 11934
diff changeset
1118 gssize
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1119 purple_xfer_write(PurpleXfer *xfer, const guchar *buffer, gsize size)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1120 {
12151
8002bb57756b [gaim-migrate @ 14452]
Richard Laager <rlaager@pidgin.im>
parents: 11934
diff changeset
1121 gssize r, s;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1122
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1123 g_return_val_if_fail(xfer != NULL, 0);
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1124 g_return_val_if_fail(buffer != NULL, 0);
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1125 g_return_val_if_fail(size != 0, 0);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1126
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1127 s = MIN(purple_xfer_get_bytes_remaining(xfer), size);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1128
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents: 8208
diff changeset
1129 if (xfer->ops.write != NULL) {
5495
c4527631aea4 [gaim-migrate @ 5891]
Herman Bloggs <herman@bluedigits.com>
parents: 5494
diff changeset
1130 r = (xfer->ops.write)(buffer, s, xfer);
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents: 8208
diff changeset
1131 } else {
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1132 r = write(xfer->fd, buffer, s);
13011
b41d13bd682d [gaim-migrate @ 15364]
Daniel Atallah <datallah@pidgin.im>
parents: 12250
diff changeset
1133 if (r < 0 && errno == EAGAIN)
b41d13bd682d [gaim-migrate @ 15364]
Daniel Atallah <datallah@pidgin.im>
parents: 12250
diff changeset
1134 r = 0;
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents: 8208
diff changeset
1135 }
31504
b0452e7fc9f9 Fix up some cases of file transfers never finishing. This will help certain
Cristi Posoiu
parents: 31294
diff changeset
1136 if (r >= 0 && (purple_xfer_get_bytes_sent(xfer)+r) >= purple_xfer_get_size(xfer) &&
b0452e7fc9f9 Fix up some cases of file transfers never finishing. This will help certain
Cristi Posoiu
parents: 31294
diff changeset
1137 !purple_xfer_is_completed(xfer))
b0452e7fc9f9 Fix up some cases of file transfers never finishing. This will help certain
Cristi Posoiu
parents: 31294
diff changeset
1138 purple_xfer_set_completed(xfer, TRUE);
b0452e7fc9f9 Fix up some cases of file transfers never finishing. This will help certain
Cristi Posoiu
parents: 31294
diff changeset
1139
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1140
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1141 return r;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1142 }
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1143
34272
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1144 gboolean
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1145 purple_xfer_write_file(PurpleXfer *xfer, const guchar *buffer, gsize size)
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1146 {
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1147 PurpleXferUiOps *ui_ops;
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1148 gsize wc;
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1149 gboolean fs_known;
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1150
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1151 g_return_val_if_fail(xfer != NULL, FALSE);
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1152 g_return_val_if_fail(buffer != NULL, FALSE);
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1153
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1154 ui_ops = purple_xfer_get_ui_ops(xfer);
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1155 fs_known = (purple_xfer_get_size(xfer) > 0);
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1156
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1157 if (fs_known && size > purple_xfer_get_bytes_remaining(xfer)) {
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1158 purple_debug_warning("filetransfer",
34286
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1159 "Got too much data (truncating at %" G_GOFFSET_FORMAT
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1160 ").\n", purple_xfer_get_size(xfer));
34272
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1161 size = purple_xfer_get_bytes_remaining(xfer);
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1162 }
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1163
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1164 if (ui_ops && ui_ops->ui_write)
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1165 wc = ui_ops->ui_write(xfer, buffer, size);
34286
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1166 else {
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1167 if (xfer->dest_fp == NULL) {
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1168 purple_debug_error("filetransfer",
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1169 "File is not opened for writing\n");
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1170 purple_xfer_cancel_local(xfer);
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1171 return FALSE;
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1172 }
34272
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1173 wc = fwrite(buffer, 1, size, xfer->dest_fp);
34286
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1174 }
34272
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1175
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1176 if (wc != size) {
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1177 purple_debug_error("filetransfer",
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1178 "Unable to write whole buffer.\n");
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1179 purple_xfer_cancel_local(xfer);
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1180 return FALSE;
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1181 }
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1182
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1183 purple_xfer_set_bytes_sent(xfer, purple_xfer_get_bytes_sent(xfer) +
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1184 size);
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1185
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1186 return TRUE;
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1187 }
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1188
34286
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1189 gssize
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1190 purple_xfer_read_file(PurpleXfer *xfer, guchar *buffer, gsize size)
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1191 {
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1192 PurpleXferUiOps *ui_ops;
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1193 gssize got_len;
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1194
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1195 g_return_val_if_fail(xfer != NULL, FALSE);
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1196 g_return_val_if_fail(buffer != NULL, FALSE);
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1197
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1198 ui_ops = purple_xfer_get_ui_ops(xfer);
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1199
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1200 if (ui_ops && ui_ops->ui_read) {
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1201 guchar *buffer_got = NULL;
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1202
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1203 got_len = ui_ops->ui_read(xfer, &buffer_got, size);
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1204
34305
5804117fb298 Fix the rest of libpurple warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34286
diff changeset
1205 if (got_len >= 0 && (gsize)got_len > size) {
34286
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1206 g_free(buffer_got);
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1207 purple_debug_error("filetransfer",
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1208 "Got too much data from UI.\n");
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1209 purple_xfer_cancel_local(xfer);
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1210 return -1;
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1211 }
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1212
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1213 if (got_len > 0)
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1214 memcpy(buffer, buffer_got, got_len);
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1215 g_free(buffer_got);
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1216 } else {
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1217 if (xfer->dest_fp == NULL) {
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1218 purple_debug_error("filetransfer",
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1219 "File is not opened for reading\n");
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1220 purple_xfer_cancel_local(xfer);
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1221 return -1;
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1222 }
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1223 got_len = fread(buffer, 1, size, xfer->dest_fp);
34305
5804117fb298 Fix the rest of libpurple warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34286
diff changeset
1224 if ((got_len < 0 || (gsize)got_len != size) &&
5804117fb298 Fix the rest of libpurple warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34286
diff changeset
1225 ferror(xfer->dest_fp))
5804117fb298 Fix the rest of libpurple warnings about -Wsign-compare
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34286
diff changeset
1226 {
34286
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1227 purple_debug_error("filetransfer",
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1228 "Unable to read file.\n");
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1229 purple_xfer_cancel_local(xfer);
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1230 return -1;
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1231 }
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1232 }
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1233
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1234 if (got_len > 0) {
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1235 purple_xfer_set_bytes_sent(xfer,
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1236 purple_xfer_get_bytes_sent(xfer) + got_len);
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1237 }
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1238
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1239 return got_len;
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1240 }
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1241
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1242 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
1243 do_transfer(PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1244 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1245 PurpleXferUiOps *ui_ops;
11159
76ef02141bcb [gaim-migrate @ 13246]
Mark Doliner <markdoliner@pidgin.im>
parents: 11084
diff changeset
1246 guchar *buffer = NULL;
12151
8002bb57756b [gaim-migrate @ 14452]
Richard Laager <rlaager@pidgin.im>
parents: 11934
diff changeset
1247 gssize r = 0;
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1248
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1249 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
1250
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1251 if (xfer->type == PURPLE_XFER_RECEIVE) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1252 r = purple_xfer_read(xfer, &buffer);
8316
7de7b31679a2 [gaim-migrate @ 9040]
Nathan Walp <nwalp@pidgin.im>
parents: 8262
diff changeset
1253 if (r > 0) {
34272
8df870b218ca HTTP: chop off another HTTP implementation (for xmpp oob file transfers)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33940
diff changeset
1254 if (!purple_xfer_write_file(xfer, buffer, r)) {
28076
796f5a14f70b Fix a bunch of memory leaks reported by Josh Mueller. Refs #9822.
Paul Aurich <darkrain42@pidgin.im>
parents: 27993
diff changeset
1255 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
1256 return;
3e48f2d3d083 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 21985
diff changeset
1257 }
28180
782b27dceaf7 ft: Set completion (for receiving) *after* writing the file.
Paul Aurich <darkrain42@pidgin.im>
parents: 28159
diff changeset
1258
782b27dceaf7 ft: Set completion (for receiving) *after* writing the file.
Paul Aurich <darkrain42@pidgin.im>
parents: 28159
diff changeset
1259 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
1260 ((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
1261 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
1262 } else if(r < 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1263 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
1264 g_free(buffer);
8316
7de7b31679a2 [gaim-migrate @ 9040]
Nathan Walp <nwalp@pidgin.im>
parents: 8262
diff changeset
1265 return;
13109
c5801934af5c [gaim-migrate @ 15470]
Daniel Atallah <datallah@pidgin.im>
parents: 13108
diff changeset
1266 }
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1267 } else if (xfer->type == PURPLE_XFER_SEND) {
34286
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1268 gssize result = 0;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1269 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
1270 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
1271 gboolean read = TRUE;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1272
8351
216d9836e839 [gaim-migrate @ 9075]
Tim Ringenbach <marv@pidgin.im>
parents: 8316
diff changeset
1273 /* this is so the prpl can keep the connection open
216d9836e839 [gaim-migrate @ 9075]
Tim Ringenbach <marv@pidgin.im>
parents: 8316
diff changeset
1274 if it needs to for some odd reason. */
216d9836e839 [gaim-migrate @ 9075]
Tim Ringenbach <marv@pidgin.im>
parents: 8316
diff changeset
1275 if (s == 0) {
9798
9da203982089 [gaim-migrate @ 10666]
Joe Shaw <joe@joeshaw.org>
parents: 9796
diff changeset
1276 if (xfer->watcher) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1277 purple_input_remove(xfer->watcher);
8351
216d9836e839 [gaim-migrate @ 9075]
Tim Ringenbach <marv@pidgin.im>
parents: 8316
diff changeset
1278 xfer->watcher = 0;
216d9836e839 [gaim-migrate @ 9075]
Tim Ringenbach <marv@pidgin.im>
parents: 8316
diff changeset
1279 }
216d9836e839 [gaim-migrate @ 9075]
Tim Ringenbach <marv@pidgin.im>
parents: 8316
diff changeset
1280 return;
216d9836e839 [gaim-migrate @ 9075]
Tim Ringenbach <marv@pidgin.im>
parents: 8316
diff changeset
1281 }
216d9836e839 [gaim-migrate @ 9075]
Tim Ringenbach <marv@pidgin.im>
parents: 8316
diff changeset
1282
29821
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1283 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
1284 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
1285 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
1286 read = TRUE;
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1287 } else {
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1288 read = FALSE;
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1289 }
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1290 }
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1291
8c85f494737a ft: Apply QuLogic's fix from d6b03d30f4 to the UI side too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29820
diff changeset
1292 if (read) {
34286
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1293 buffer = g_new(guchar, s);
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1294 result = purple_xfer_read_file(xfer, buffer, s);
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1295 if (result == 0) {
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1296 /*
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1297 * The UI claimed it was ready, but didn't have any data for
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1298 * us... It will call purple_xfer_ui_ready when ready, which
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1299 * sets back up this watcher.
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1300 */
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1301 if (xfer->watcher != 0) {
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1302 purple_input_remove(xfer->watcher);
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1303 xfer->watcher = 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
1304 }
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1305
34286
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1306 /* Need to indicate the prpl is still ready... */
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1307 priv->ready |= PURPLE_XFER_READY_PRPL;
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1308
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1309 g_return_if_reached();
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1310 }
34286
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1311 if (result < 0)
8d0979967d05 HTTP: removing extra yahoo HTTP implementations - file transfer (and small improvements to libpurple http and ft code)
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34272
diff changeset
1312 return;
22194
3e48f2d3d083 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 21985
diff changeset
1313 }
29822
7c6c2df6f9a2 whitespace trimming
Paul Aurich <darkrain42@pidgin.im>
parents: 29821
diff changeset
1314
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
1315 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
1316 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
1317 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
1318 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
1319 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
1320 }
29822
7c6c2df6f9a2 whitespace trimming
Paul Aurich <darkrain42@pidgin.im>
parents: 29821
diff changeset
1321
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1322 r = purple_xfer_write(xfer, buffer, result);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1323
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents: 8208
diff changeset
1324 if (r == -1) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1325 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
1326 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
1327 /* 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
1328 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
1329 g_free(buffer);
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents: 8208
diff changeset
1330 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
1331 } else if (r == result) {
15280
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1332 /*
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1333 * We managed to write the entire buffer. This means our
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1334 * 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
1335 * bigger.
9df6112da532 [gaim-migrate @ 18008]
Mark Doliner <markdoliner@pidgin.im>
parents: 15161
diff changeset
1336 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1337 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
1338 } else {
29822
7c6c2df6f9a2 whitespace trimming
Paul Aurich <darkrain42@pidgin.im>
parents: 29821
diff changeset
1339 if (ui_ops && ui_ops->data_not_sent)
7c6c2df6f9a2 whitespace trimming
Paul Aurich <darkrain42@pidgin.im>
parents: 29821
diff changeset
1340 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
1341 }
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1342
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1343 if (priv->buffer) {
29822
7c6c2df6f9a2 whitespace trimming
Paul Aurich <darkrain42@pidgin.im>
parents: 29821
diff changeset
1344 /*
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
1345 * 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
1346 * 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
1347 * 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
1348 */
ca223fea0a1e Kill off the use of fseek for non-seekable streams in file transfers.
Raouf M. Bencheraiet <foufou33@gmail.com>
parents: 28659
diff changeset
1349 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
1350 g_byte_array_remove_range(priv->buffer, 0, r);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1351 }
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1352 }
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1353
13108
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1354 if (r > 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1355 if (purple_xfer_get_size(xfer) > 0)
13108
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1356 xfer->bytes_remaining -= r;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1357
13108
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1358 xfer->bytes_sent += r;
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1359
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1360 if (xfer->ops.ack != NULL)
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1361 xfer->ops.ack(xfer, buffer, r);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1362
13108
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1363 g_free(buffer);
4594
a96954344300 [gaim-migrate @ 4879]
Mark Doliner <markdoliner@pidgin.im>
parents: 4582
diff changeset
1364
13108
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1365 if (ui_ops != NULL && ui_ops->update_progress != NULL)
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1366 ui_ops->update_progress(xfer,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1367 purple_xfer_get_progress(xfer));
13108
9a5cd09fd9cb [gaim-migrate @ 15469]
Daniel Atallah <datallah@pidgin.im>
parents: 13011
diff changeset
1368 }
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1369
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1370 if (purple_xfer_is_completed(xfer))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1371 purple_xfer_end(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1372 }
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 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
1375 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
1376 {
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1377 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
1378
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1379 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
1380 /* 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
1381 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
1382 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
1383 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
1384
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1385 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
1386 xfer->watcher = 0;
29168
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1387
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1388 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
1389 return;
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1390 }
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
1391
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
1392 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
1393 }
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1394
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1395 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
1396 }
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1397
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1398 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1399 begin_transfer(PurpleXfer *xfer, PurpleInputCondition cond)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1400 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1401 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
1402 PurpleXferUiOps *ui_ops = purple_xfer_get_ui_ops(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1403
30832
e5075db65f9a Beginning a file transfer multiple times leaks file handles.
Daniel Atallah <datallah@pidgin.im>
parents: 30708
diff changeset
1404 if (xfer->start_time != 0) {
e5075db65f9a Beginning a file transfer multiple times leaks file handles.
Daniel Atallah <datallah@pidgin.im>
parents: 30708
diff changeset
1405 purple_debug_error("xfer", "Transfer is being started multiple times\n");
e5075db65f9a Beginning a file transfer multiple times leaks file handles.
Daniel Atallah <datallah@pidgin.im>
parents: 30708
diff changeset
1406 g_return_if_reached();
e5075db65f9a Beginning a file transfer multiple times leaks file handles.
Daniel Atallah <datallah@pidgin.im>
parents: 30708
diff changeset
1407 }
e5075db65f9a Beginning a file transfer multiple times leaks file handles.
Daniel Atallah <datallah@pidgin.im>
parents: 30708
diff changeset
1408
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
1409 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
1410 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
1411 type == PURPLE_XFER_RECEIVE ? "wb" : "rb");
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1412
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1413 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
1414 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
1415 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
1416 return;
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1417 }
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1418
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1419 fseek(xfer->dest_fp, xfer->bytes_sent, SEEK_SET);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1420 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1421
28152
e9800c07eb5b ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <darkrain42@pidgin.im>
parents: 28150
diff changeset
1422 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
1423 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
1424
13599
b6369e541654 [gaim-migrate @ 15984]
Mark Doliner <markdoliner@pidgin.im>
parents: 13595
diff changeset
1425 xfer->start_time = time(NULL);
b6369e541654 [gaim-migrate @ 15984]
Mark Doliner <markdoliner@pidgin.im>
parents: 13595
diff changeset
1426
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1427 if (xfer->ops.start != NULL)
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1428 xfer->ops.start(xfer);
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1429 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1430
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1431 static void
14183
bdde840e984c [gaim-migrate @ 16755]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
1432 connect_cb(gpointer data, gint source, const gchar *error_message)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1433 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1434 PurpleXfer *xfer = (PurpleXfer *)data;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1435
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
1436 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
1437 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
1438 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
1439 }
dabfb5216949 Fix #3983 by canceling the file transfer when connecting to the remote host fails.
Daniel Atallah <datallah@pidgin.im>
parents: 21630
diff changeset
1440
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1441 xfer->fd = source;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1442
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1443 begin_transfer(xfer, PURPLE_INPUT_READ);
3609
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1444 }
6ca2fef0003e [gaim-migrate @ 3722]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1445
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1446 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
1447 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
1448 {
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1449 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
1450 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
1451 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
1452
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1453 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
1454
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1455 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
1456 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
1457
29168
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1458 if (0 == (priv->ready & PURPLE_XFER_READY_PRPL)) {
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1459 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
1460 return;
29168
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1461 }
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1462
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1463 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
1464
28150
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1465 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
1466 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
1467 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
1468 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
1469 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
1470
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
1471 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
1472 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
1473
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1474 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
1475
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1476 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
1477 }
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1478
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1479 void
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1480 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
1481 {
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1482 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
1483
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1484 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
1485
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1486 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
1487 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
1488
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1489 /* 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
1490 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
1491 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
1492 return;
29168
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1493 }
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1494
585ce277cad3 ft: Add some useful debug logging.
Paul Aurich <darkrain42@pidgin.im>
parents: 29159
diff changeset
1495 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
1496
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1497 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
1498
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1499 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
1500 }
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1501
1213ec1efcf8 ft: Allow the UI to overloadthe use of fread/fwrite. Closes #9844.
Jan Kaluza <hanzz.k@gmail.com>
parents: 28076
diff changeset
1502 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1503 purple_xfer_start(PurpleXfer *xfer, int fd, const char *ip,
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1504 unsigned int port)
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1505 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1506 PurpleInputCondition cond;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1507 PurpleXferType type;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1508
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1509 g_return_if_fail(xfer != NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1510 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
1511
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1512 type = purple_xfer_get_type(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1513
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1514 purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_STARTED);
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
1515
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1516 if (type == PURPLE_XFER_RECEIVE) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1517 cond = PURPLE_INPUT_READ;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1518
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1519 if (ip != NULL) {
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1520 xfer->remote_ip = g_strdup(ip);
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1521 xfer->remote_port = port;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1522
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1523 /* Establish a file descriptor. */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1524 purple_proxy_connect(NULL, xfer->account, xfer->remote_ip,
14170
f611621bc8a0 [gaim-migrate @ 16742]
Mark Doliner <markdoliner@pidgin.im>
parents: 14151
diff changeset
1525 xfer->remote_port, connect_cb, xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1526
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1527 return;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1528 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1529 else {
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1530 xfer->fd = fd;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1531 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1532 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1533 else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1534 cond = PURPLE_INPUT_WRITE;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1535
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1536 xfer->fd = fd;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1537 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1538
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1539 begin_transfer(xfer, cond);
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1540 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1541
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1542 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1543 purple_xfer_end(PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1544 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1545 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1546
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1547 /* 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
1548 if (!purple_xfer_is_completed(xfer)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1549 purple_xfer_cancel_local(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1550 return;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1551 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1552
13599
b6369e541654 [gaim-migrate @ 15984]
Mark Doliner <markdoliner@pidgin.im>
parents: 13595
diff changeset
1553 xfer->end_time = time(NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1554 if (xfer->ops.end != NULL)
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1555 xfer->ops.end(xfer);
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1556
4521
c67f31cc18f4 [gaim-migrate @ 4799]
Christian Hammond <chipx86@chipx86.com>
parents: 4518
diff changeset
1557 if (xfer->watcher != 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1558 purple_input_remove(xfer->watcher);
4521
c67f31cc18f4 [gaim-migrate @ 4799]
Christian Hammond <chipx86@chipx86.com>
parents: 4518
diff changeset
1559 xfer->watcher = 0;
c67f31cc18f4 [gaim-migrate @ 4799]
Christian Hammond <chipx86@chipx86.com>
parents: 4518
diff changeset
1560 }
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1561
28152
e9800c07eb5b ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <darkrain42@pidgin.im>
parents: 28150
diff changeset
1562 if (xfer->fd != -1)
4521
c67f31cc18f4 [gaim-migrate @ 4799]
Christian Hammond <chipx86@chipx86.com>
parents: 4518
diff changeset
1563 close(xfer->fd);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1564
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1565 if (xfer->dest_fp != NULL) {
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1566 fclose(xfer->dest_fp);
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1567 xfer->dest_fp = NULL;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1568 }
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
1569
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1570 purple_xfer_unref(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1571 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1572
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1573 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1574 purple_xfer_add(PurpleXfer *xfer)
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1575 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1576 PurpleXferUiOps *ui_ops;
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1577
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1578 g_return_if_fail(xfer != NULL);
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1579
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1580 ui_ops = purple_xfer_get_ui_ops(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 if (ui_ops != NULL && ui_ops->add_xfer != NULL)
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1583 ui_ops->add_xfer(xfer);
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1584 }
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1586 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1587 purple_xfer_cancel_local(PurpleXfer *xfer)
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1588 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1589 PurpleXferUiOps *ui_ops;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10654
diff changeset
1590 char *msg = NULL;
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1591
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1592 g_return_if_fail(xfer != NULL);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1593
31154
d285b9000fbe Apply Mark's specific changes listed below to the 2.7.7 branch.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30832
diff changeset
1594 /* TODO: We definitely want to close any open request dialogs associated
d285b9000fbe Apply Mark's specific changes listed below to the 2.7.7 branch.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30832
diff changeset
1595 with this transfer. However, in some cases the request dialog might
d285b9000fbe Apply Mark's specific changes listed below to the 2.7.7 branch.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30832
diff changeset
1596 own a reference on the xfer. This happens at least with the "%s wants
d285b9000fbe Apply Mark's specific changes listed below to the 2.7.7 branch.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30832
diff changeset
1597 to send you %s" dialog from purple_xfer_ask_recv(). In these cases
d285b9000fbe Apply Mark's specific changes listed below to the 2.7.7 branch.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30832
diff changeset
1598 the ref count will not be decremented when the request dialog is
d285b9000fbe Apply Mark's specific changes listed below to the 2.7.7 branch.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30832
diff changeset
1599 closed, so the ref count will never reach 0 and the xfer will never
d285b9000fbe Apply Mark's specific changes listed below to the 2.7.7 branch.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30832
diff changeset
1600 be freed. This is a memleak and should be fixed. It's not clear what
d285b9000fbe Apply Mark's specific changes listed below to the 2.7.7 branch.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30832
diff changeset
1601 the correct fix is. Probably requests should have a destroy function
d285b9000fbe Apply Mark's specific changes listed below to the 2.7.7 branch.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30832
diff changeset
1602 that is called when the request is destroyed. But also, ref counting
d285b9000fbe Apply Mark's specific changes listed below to the 2.7.7 branch.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30832
diff changeset
1603 xfer objects makes this code REALLY complicated. An alternate fix is
d285b9000fbe Apply Mark's specific changes listed below to the 2.7.7 branch.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30832
diff changeset
1604 to not ref count and instead just make sure the object still exists
d285b9000fbe Apply Mark's specific changes listed below to the 2.7.7 branch.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30832
diff changeset
1605 when we try to use it. */
d285b9000fbe Apply Mark's specific changes listed below to the 2.7.7 branch.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30832
diff changeset
1606 purple_request_close_with_handle(xfer);
d285b9000fbe Apply Mark's specific changes listed below to the 2.7.7 branch.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 30832
diff changeset
1607
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1608 purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_CANCEL_LOCAL);
13599
b6369e541654 [gaim-migrate @ 15984]
Mark Doliner <markdoliner@pidgin.im>
parents: 13595
diff changeset
1609 xfer->end_time = time(NULL);
7738
ebb766ef2146 [gaim-migrate @ 8383]
Tim Ringenbach <marv@pidgin.im>
parents: 7272
diff changeset
1610
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1611 if (purple_xfer_get_filename(xfer) != NULL)
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1612 {
27797
10f6bc89044b Normalize on 'cancelled'
Paul Aurich <darkrain42@pidgin.im>
parents: 27655
diff changeset
1613 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
1614 purple_xfer_get_filename(xfer));
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1615 }
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1616 else
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1617 {
25359
ea172b7ea601 The remainder of a patch from fqueze to fix some incorrect *printf() function
Daniel Atallah <datallah@pidgin.im>
parents: 24672
diff changeset
1618 msg = g_strdup(_("File transfer cancelled"));
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1619 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1620 purple_xfer_conversation_write(xfer, msg, FALSE);
9932
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
1621 g_free(msg);
5e7cc9975595 [gaim-migrate @ 10824]
Dave West <kat@users.sourceforge.net>
parents: 9805
diff changeset
1622
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1623 if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND)
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1624 {
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1625 if (xfer->ops.cancel_send != NULL)
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1626 xfer->ops.cancel_send(xfer);
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1627 }
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1628 else
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1629 {
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1630 if (xfer->ops.cancel_recv != NULL)
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1631 xfer->ops.cancel_recv(xfer);
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1632 }
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1633
4521
c67f31cc18f4 [gaim-migrate @ 4799]
Christian Hammond <chipx86@chipx86.com>
parents: 4518
diff changeset
1634 if (xfer->watcher != 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1635 purple_input_remove(xfer->watcher);
4521
c67f31cc18f4 [gaim-migrate @ 4799]
Christian Hammond <chipx86@chipx86.com>
parents: 4518
diff changeset
1636 xfer->watcher = 0;
c67f31cc18f4 [gaim-migrate @ 4799]
Christian Hammond <chipx86@chipx86.com>
parents: 4518
diff changeset
1637 }
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1638
28152
e9800c07eb5b ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <darkrain42@pidgin.im>
parents: 28150
diff changeset
1639 if (xfer->fd != -1)
4521
c67f31cc18f4 [gaim-migrate @ 4799]
Christian Hammond <chipx86@chipx86.com>
parents: 4518
diff changeset
1640 close(xfer->fd);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1641
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1642 if (xfer->dest_fp != NULL) {
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1643 fclose(xfer->dest_fp);
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1644 xfer->dest_fp = NULL;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1645 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1646
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1647 ui_ops = purple_xfer_get_ui_ops(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1648
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1649 if (ui_ops != NULL && ui_ops->cancel_local != NULL)
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1650 ui_ops->cancel_local(xfer);
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1651
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1652 xfer->bytes_remaining = 0;
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
1653
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1654 purple_xfer_unref(xfer);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1655 }
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1656
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1657 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1658 purple_xfer_cancel_remote(PurpleXfer *xfer)
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1659 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1660 PurpleXferUiOps *ui_ops;
10774
f4238d6312ff [gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10654
diff changeset
1661 gchar *msg;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1662 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1663 PurpleBuddy *buddy;
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1664
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1665 g_return_if_fail(xfer != NULL);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1666
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1667 purple_request_close_with_handle(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1668 purple_xfer_set_status(xfer, PURPLE_XFER_STATUS_CANCEL_REMOTE);
13599
b6369e541654 [gaim-migrate @ 15984]
Mark Doliner <markdoliner@pidgin.im>
parents: 13595
diff changeset
1669 xfer->end_time = time(NULL);
9771
42bd06e5b1b3 [gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents: 9523
diff changeset
1670
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1671 account = purple_xfer_get_account(xfer);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1672 buddy = purple_find_buddy(account, xfer->who);
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
1673
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1674 if (purple_xfer_get_filename(xfer) != NULL)
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1675 {
27797
10f6bc89044b Normalize on 'cancelled'
Paul Aurich <darkrain42@pidgin.im>
parents: 27655
diff changeset
1676 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
1677 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
1678 }
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1679 else
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1680 {
27797
10f6bc89044b Normalize on 'cancelled'
Paul Aurich <darkrain42@pidgin.im>
parents: 27655
diff changeset
1681 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
1682 buddy ? purple_buddy_get_alias(buddy) : xfer->who);
10470
1a070302fa8c [gaim-migrate @ 11752]
Evan Schoenberg <evands@pidgin.im>
parents: 10259
diff changeset
1683 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1684 purple_xfer_conversation_write(xfer, msg, TRUE);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1685 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
1686 g_free(msg);
42bd06e5b1b3 [gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents: 9523
diff changeset
1687
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1688 if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND)
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1689 {
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1690 if (xfer->ops.cancel_send != NULL)
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1691 xfer->ops.cancel_send(xfer);
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1692 }
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1693 else
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1694 {
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1695 if (xfer->ops.cancel_recv != NULL)
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1696 xfer->ops.cancel_recv(xfer);
7272
f8335b8f1f1c [gaim-migrate @ 7849]
Christian Hammond <chipx86@chipx86.com>
parents: 7035
diff changeset
1697 }
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1698
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1699 if (xfer->watcher != 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1700 purple_input_remove(xfer->watcher);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1701 xfer->watcher = 0;
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1702 }
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1703
28152
e9800c07eb5b ft: Fix a bunch of uses of 0 as an 'invalid' fd.
Paul Aurich <darkrain42@pidgin.im>
parents: 28150
diff changeset
1704 if (xfer->fd != -1)
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1705 close(xfer->fd);
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1706
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1707 if (xfer->dest_fp != NULL) {
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1708 fclose(xfer->dest_fp);
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1709 xfer->dest_fp = NULL;
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1710 }
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1711
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1712 ui_ops = purple_xfer_get_ui_ops(xfer);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1713
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1714 if (ui_ops != NULL && ui_ops->cancel_remote != NULL)
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4656
diff changeset
1715 ui_ops->cancel_remote(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1716
4528
5efe7af8195d [gaim-migrate @ 4806]
Christian Hammond <chipx86@chipx86.com>
parents: 4521
diff changeset
1717 xfer->bytes_remaining = 0;
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7738
diff changeset
1718
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1719 purple_xfer_unref(xfer);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1720 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1721
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1722 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1723 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
1724 {
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1725 char *title;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1726
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1727 g_return_if_fail(msg != NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1728 g_return_if_fail(type != PURPLE_XFER_UNKNOWN);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1729
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
1730 if (account) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1731 PurpleBuddy *buddy;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1732 buddy = purple_find_buddy(account, who);
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
1733 if (buddy)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1734 who = purple_buddy_get_alias(buddy);
10654
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
1735 }
b2dd3be1b087 [gaim-migrate @ 12182]
Richard Laager <rlaager@pidgin.im>
parents: 10589
diff changeset
1736
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1737 if (type == PURPLE_XFER_SEND)
11231
1c5968418ca4 [gaim-migrate @ 13371]
Richard Laager <rlaager@pidgin.im>
parents: 11159
diff changeset
1738 title = g_strdup_printf(_("File transfer to %s failed."), who);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1739 else
11231
1c5968418ca4 [gaim-migrate @ 13371]
Richard Laager <rlaager@pidgin.im>
parents: 11159
diff changeset
1740 title = g_strdup_printf(_("File transfer from %s failed."), who);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1741
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1742 purple_notify_error(NULL, NULL, title, msg);
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1743
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1744 g_free(title);
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1745 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1746
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1747 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1748 purple_xfer_update_progress(PurpleXfer *xfer)
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1749 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1750 PurpleXferUiOps *ui_ops;
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1751
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1752 g_return_if_fail(xfer != NULL);
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1753
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1754 ui_ops = purple_xfer_get_ui_ops(xfer);
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1755 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
1756 ui_ops->update_progress(xfer, purple_xfer_get_progress(xfer));
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1757 }
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1758
30126
f09ecb81212c Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30124
diff changeset
1759 gconstpointer
f09ecb81212c Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30124
diff changeset
1760 purple_xfer_get_thumbnail(const PurpleXfer *xfer, gsize *len)
27419
5cdc131e86a2 Added a skeleton for functions to set and get a thumbnail image associated
Marcus Lundblad <malu@pidgin.im>
parents: 26726
diff changeset
1761 {
30115
619d2b5758c0 Hide the thumbnail-related stuff from the PurpleXfer struct to
Marcus Lundblad <malu@pidgin.im>
parents: 30114
diff changeset
1762 PurpleXferPrivData *priv = g_hash_table_lookup(xfers_data, xfer);
619d2b5758c0 Hide the thumbnail-related stuff from the PurpleXfer struct to
Marcus Lundblad <malu@pidgin.im>
parents: 30114
diff changeset
1763
30126
f09ecb81212c Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30124
diff changeset
1764 if (len)
f09ecb81212c Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30124
diff changeset
1765 *len = priv->thumbnail_size;
27419
5cdc131e86a2 Added a skeleton for functions to set and get a thumbnail image associated
Marcus Lundblad <malu@pidgin.im>
parents: 26726
diff changeset
1766
30126
f09ecb81212c Rename purple_xfer_get_thumbnail_data/size to be more D-Bus friendly.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30124
diff changeset
1767 return priv->thumbnail_data;
27419
5cdc131e86a2 Added a skeleton for functions to set and get a thumbnail image associated
Marcus Lundblad <malu@pidgin.im>
parents: 26726
diff changeset
1768 }
5cdc131e86a2 Added a skeleton for functions to set and get a thumbnail image associated
Marcus Lundblad <malu@pidgin.im>
parents: 26726
diff changeset
1769
30113
f60cbf3b3ca9 Allow PRPLs to specify the image formats acceptable for thumbnails (in
Marcus Lundblad <malu@pidgin.im>
parents: 29846
diff changeset
1770 const gchar *
f60cbf3b3ca9 Allow PRPLs to specify the image formats acceptable for thumbnails (in
Marcus Lundblad <malu@pidgin.im>
parents: 29846
diff changeset
1771 purple_xfer_get_thumbnail_mimetype(const PurpleXfer *xfer)
f60cbf3b3ca9 Allow PRPLs to specify the image formats acceptable for thumbnails (in
Marcus Lundblad <malu@pidgin.im>
parents: 29846
diff changeset
1772 {
30115
619d2b5758c0 Hide the thumbnail-related stuff from the PurpleXfer struct to
Marcus Lundblad <malu@pidgin.im>
parents: 30114
diff changeset
1773 PurpleXferPrivData *priv = g_hash_table_lookup(xfers_data, xfer);
619d2b5758c0 Hide the thumbnail-related stuff from the PurpleXfer struct to
Marcus Lundblad <malu@pidgin.im>
parents: 30114
diff changeset
1774
619d2b5758c0 Hide the thumbnail-related stuff from the PurpleXfer struct to
Marcus Lundblad <malu@pidgin.im>
parents: 30114
diff changeset
1775 return priv->thumbnail_mimetype;
30113
f60cbf3b3ca9 Allow PRPLs to specify the image formats acceptable for thumbnails (in
Marcus Lundblad <malu@pidgin.im>
parents: 29846
diff changeset
1776 }
f60cbf3b3ca9 Allow PRPLs to specify the image formats acceptable for thumbnails (in
Marcus Lundblad <malu@pidgin.im>
parents: 29846
diff changeset
1777
27419
5cdc131e86a2 Added a skeleton for functions to set and get a thumbnail image associated
Marcus Lundblad <malu@pidgin.im>
parents: 26726
diff changeset
1778 void
5cdc131e86a2 Added a skeleton for functions to set and get a thumbnail image associated
Marcus Lundblad <malu@pidgin.im>
parents: 26726
diff changeset
1779 purple_xfer_set_thumbnail(PurpleXfer *xfer, gconstpointer thumbnail,
30113
f60cbf3b3ca9 Allow PRPLs to specify the image formats acceptable for thumbnails (in
Marcus Lundblad <malu@pidgin.im>
parents: 29846
diff changeset
1780 gsize size, const gchar *mimetype)
27419
5cdc131e86a2 Added a skeleton for functions to set and get a thumbnail image associated
Marcus Lundblad <malu@pidgin.im>
parents: 26726
diff changeset
1781 {
30115
619d2b5758c0 Hide the thumbnail-related stuff from the PurpleXfer struct to
Marcus Lundblad <malu@pidgin.im>
parents: 30114
diff changeset
1782 PurpleXferPrivData *priv = g_hash_table_lookup(xfers_data, xfer);
619d2b5758c0 Hide the thumbnail-related stuff from the PurpleXfer struct to
Marcus Lundblad <malu@pidgin.im>
parents: 30114
diff changeset
1783
30124
e84a06d70326 Minor cleanup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30123
diff changeset
1784 g_free(priv->thumbnail_data);
e84a06d70326 Minor cleanup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30123
diff changeset
1785 g_free(priv->thumbnail_mimetype);
e84a06d70326 Minor cleanup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30123
diff changeset
1786
27419
5cdc131e86a2 Added a skeleton for functions to set and get a thumbnail image associated
Marcus Lundblad <malu@pidgin.im>
parents: 26726
diff changeset
1787 if (thumbnail && size > 0) {
30115
619d2b5758c0 Hide the thumbnail-related stuff from the PurpleXfer struct to
Marcus Lundblad <malu@pidgin.im>
parents: 30114
diff changeset
1788 priv->thumbnail_data = g_memdup(thumbnail, size);
619d2b5758c0 Hide the thumbnail-related stuff from the PurpleXfer struct to
Marcus Lundblad <malu@pidgin.im>
parents: 30114
diff changeset
1789 priv->thumbnail_size = size;
619d2b5758c0 Hide the thumbnail-related stuff from the PurpleXfer struct to
Marcus Lundblad <malu@pidgin.im>
parents: 30114
diff changeset
1790 priv->thumbnail_mimetype = g_strdup(mimetype);
30124
e84a06d70326 Minor cleanup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30123
diff changeset
1791 } else {
e84a06d70326 Minor cleanup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30123
diff changeset
1792 priv->thumbnail_data = NULL;
e84a06d70326 Minor cleanup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30123
diff changeset
1793 priv->thumbnail_size = 0;
e84a06d70326 Minor cleanup.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30123
diff changeset
1794 priv->thumbnail_mimetype = NULL;
27419
5cdc131e86a2 Added a skeleton for functions to set and get a thumbnail image associated
Marcus Lundblad <malu@pidgin.im>
parents: 26726
diff changeset
1795 }
5cdc131e86a2 Added a skeleton for functions to set and get a thumbnail image associated
Marcus Lundblad <malu@pidgin.im>
parents: 26726
diff changeset
1796 }
5cdc131e86a2 Added a skeleton for functions to set and get a thumbnail image associated
Marcus Lundblad <malu@pidgin.im>
parents: 26726
diff changeset
1797
5cdc131e86a2 Added a skeleton for functions to set and get a thumbnail image associated
Marcus Lundblad <malu@pidgin.im>
parents: 26726
diff changeset
1798 void
30114
8472e53fbbfc Set desired image formats for thumbnails as a parameter to
Marcus Lundblad <malu@pidgin.im>
parents: 30113
diff changeset
1799 purple_xfer_prepare_thumbnail(PurpleXfer *xfer, const gchar *formats)
27419
5cdc131e86a2 Added a skeleton for functions to set and get a thumbnail image associated
Marcus Lundblad <malu@pidgin.im>
parents: 26726
diff changeset
1800 {
5cdc131e86a2 Added a skeleton for functions to set and get a thumbnail image associated
Marcus Lundblad <malu@pidgin.im>
parents: 26726
diff changeset
1801 if (xfer->ui_ops->add_thumbnail) {
30114
8472e53fbbfc Set desired image formats for thumbnails as a parameter to
Marcus Lundblad <malu@pidgin.im>
parents: 30113
diff changeset
1802 xfer->ui_ops->add_thumbnail(xfer, formats);
27419
5cdc131e86a2 Added a skeleton for functions to set and get a thumbnail image associated
Marcus Lundblad <malu@pidgin.im>
parents: 26726
diff changeset
1803 }
5cdc131e86a2 Added a skeleton for functions to set and get a thumbnail image associated
Marcus Lundblad <malu@pidgin.im>
parents: 26726
diff changeset
1804 }
8585
23db71a2d432 [gaim-migrate @ 9335]
Pekka Riikonen <priikone@silcnet.org>
parents: 8351
diff changeset
1805
32239
3d93edd94500 Introduce API purple_xfer_get_protocol_data() and purple_xfer_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 31754
diff changeset
1806 void
32248
aa63f22a6e6a Rename field for consistency.
Andrew Victor <andrew.victor@mxit.com>
parents: 32239
diff changeset
1807 purple_xfer_set_protocol_data(PurpleXfer *xfer, gpointer proto_data)
32239
3d93edd94500 Introduce API purple_xfer_get_protocol_data() and purple_xfer_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 31754
diff changeset
1808 {
3d93edd94500 Introduce API purple_xfer_get_protocol_data() and purple_xfer_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 31754
diff changeset
1809 g_return_if_fail(xfer != NULL);
3d93edd94500 Introduce API purple_xfer_get_protocol_data() and purple_xfer_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 31754
diff changeset
1810
32248
aa63f22a6e6a Rename field for consistency.
Andrew Victor <andrew.victor@mxit.com>
parents: 32239
diff changeset
1811 xfer->proto_data = proto_data;
32239
3d93edd94500 Introduce API purple_xfer_get_protocol_data() and purple_xfer_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 31754
diff changeset
1812 }
3d93edd94500 Introduce API purple_xfer_get_protocol_data() and purple_xfer_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 31754
diff changeset
1813
32248
aa63f22a6e6a Rename field for consistency.
Andrew Victor <andrew.victor@mxit.com>
parents: 32239
diff changeset
1814 gpointer
32256
620e4580252a These pointers should rather be marked const.
Andrew Victor <andrew.victor@mxit.com>
parents: 32249
diff changeset
1815 purple_xfer_get_protocol_data(const PurpleXfer *xfer)
32239
3d93edd94500 Introduce API purple_xfer_get_protocol_data() and purple_xfer_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 31754
diff changeset
1816 {
3d93edd94500 Introduce API purple_xfer_get_protocol_data() and purple_xfer_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 31754
diff changeset
1817 g_return_val_if_fail(xfer != NULL, NULL);
3d93edd94500 Introduce API purple_xfer_get_protocol_data() and purple_xfer_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 31754
diff changeset
1818
32248
aa63f22a6e6a Rename field for consistency.
Andrew Victor <andrew.victor@mxit.com>
parents: 32239
diff changeset
1819 return xfer->proto_data;
32239
3d93edd94500 Introduce API purple_xfer_get_protocol_data() and purple_xfer_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 31754
diff changeset
1820 }
3d93edd94500 Introduce API purple_xfer_get_protocol_data() and purple_xfer_set_protocol_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 31754
diff changeset
1821
32249
b636d2273c64 Added accessor functions purple_xfer_get_ui_data() and purple_xfer_set_ui_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32248
diff changeset
1822 void purple_xfer_set_ui_data(PurpleXfer *xfer, gpointer ui_data)
b636d2273c64 Added accessor functions purple_xfer_get_ui_data() and purple_xfer_set_ui_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32248
diff changeset
1823 {
b636d2273c64 Added accessor functions purple_xfer_get_ui_data() and purple_xfer_set_ui_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32248
diff changeset
1824 g_return_if_fail(xfer != NULL);
b636d2273c64 Added accessor functions purple_xfer_get_ui_data() and purple_xfer_set_ui_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32248
diff changeset
1825
b636d2273c64 Added accessor functions purple_xfer_get_ui_data() and purple_xfer_set_ui_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32248
diff changeset
1826 xfer->ui_data = ui_data;
b636d2273c64 Added accessor functions purple_xfer_get_ui_data() and purple_xfer_set_ui_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32248
diff changeset
1827 }
b636d2273c64 Added accessor functions purple_xfer_get_ui_data() and purple_xfer_set_ui_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32248
diff changeset
1828
32256
620e4580252a These pointers should rather be marked const.
Andrew Victor <andrew.victor@mxit.com>
parents: 32249
diff changeset
1829 gpointer purple_xfer_get_ui_data(const PurpleXfer *xfer)
32249
b636d2273c64 Added accessor functions purple_xfer_get_ui_data() and purple_xfer_set_ui_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32248
diff changeset
1830 {
b636d2273c64 Added accessor functions purple_xfer_get_ui_data() and purple_xfer_set_ui_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32248
diff changeset
1831 g_return_val_if_fail(xfer != NULL, NULL);
b636d2273c64 Added accessor functions purple_xfer_get_ui_data() and purple_xfer_set_ui_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32248
diff changeset
1832
b636d2273c64 Added accessor functions purple_xfer_get_ui_data() and purple_xfer_set_ui_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32248
diff changeset
1833 return xfer->ui_data;
b636d2273c64 Added accessor functions purple_xfer_get_ui_data() and purple_xfer_set_ui_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32248
diff changeset
1834 }
b636d2273c64 Added accessor functions purple_xfer_get_ui_data() and purple_xfer_set_ui_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32248
diff changeset
1835
b636d2273c64 Added accessor functions purple_xfer_get_ui_data() and purple_xfer_set_ui_data().
Andrew Victor <andrew.victor@mxit.com>
parents: 32248
diff changeset
1836
6263
6fec763a314c [gaim-migrate @ 6760]
Christian Hammond <chipx86@chipx86.com>
parents: 6242
diff changeset
1837 /**************************************************************************
6fec763a314c [gaim-migrate @ 6760]
Christian Hammond <chipx86@chipx86.com>
parents: 6242
diff changeset
1838 * File Transfer Subsystem API
6fec763a314c [gaim-migrate @ 6760]
Christian Hammond <chipx86@chipx86.com>
parents: 6242
diff changeset
1839 **************************************************************************/
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1840 void *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1841 purple_xfers_get_handle(void) {
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1842 static int handle = 0;
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1843
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1844 return &handle;
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1845 }
6241
34d166a31152 [gaim-migrate @ 6735]
Christian Hammond <chipx86@chipx86.com>
parents: 6240
diff changeset
1846
34d166a31152 [gaim-migrate @ 6735]
Christian Hammond <chipx86@chipx86.com>
parents: 6240
diff changeset
1847 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1848 purple_xfers_init(void) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1849 void *handle = purple_xfers_get_handle();
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1850
28156
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1851 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
1852 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
1853
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1854 /* register signals */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1855 purple_signal_register(handle, "file-recv-accept",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1856 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1857 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1858 PURPLE_SUBTYPE_XFER));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1859 purple_signal_register(handle, "file-send-accept",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1860 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1861 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1862 PURPLE_SUBTYPE_XFER));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1863 purple_signal_register(handle, "file-recv-start",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1864 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1865 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1866 PURPLE_SUBTYPE_XFER));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1867 purple_signal_register(handle, "file-send-start",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1868 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1869 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1870 PURPLE_SUBTYPE_XFER));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1871 purple_signal_register(handle, "file-send-cancel",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1872 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1873 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1874 PURPLE_SUBTYPE_XFER));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1875 purple_signal_register(handle, "file-recv-cancel",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1876 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1877 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1878 PURPLE_SUBTYPE_XFER));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1879 purple_signal_register(handle, "file-send-complete",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1880 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1881 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1882 PURPLE_SUBTYPE_XFER));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1883 purple_signal_register(handle, "file-recv-complete",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1884 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1885 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1886 PURPLE_SUBTYPE_XFER));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1887 purple_signal_register(handle, "file-recv-request",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1888 purple_marshal_VOID__POINTER, NULL, 1,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1889 purple_value_new(PURPLE_TYPE_SUBTYPE,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1890 PURPLE_SUBTYPE_XFER));
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1891 }
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1892
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1893 void
21143
239b2f43bef5 Make purple_xfers_uninit, purple_network_uninit, and purple_plugins_uninit
Etan Reisner <deryni@pidgin.im>
parents: 20661
diff changeset
1894 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
1895 {
239b2f43bef5 Make purple_xfers_uninit, purple_network_uninit, and purple_plugins_uninit
Etan Reisner <deryni@pidgin.im>
parents: 20661
diff changeset
1896 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
1897
239b2f43bef5 Make purple_xfers_uninit, purple_network_uninit, and purple_plugins_uninit
Etan Reisner <deryni@pidgin.im>
parents: 20661
diff changeset
1898 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
1899 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
1900
0a75e2463576 ft: Add infrastructure to allow a prpl to moderate when to send packets.
Paul Aurich <darkrain42@pidgin.im>
parents: 28153
diff changeset
1901 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
1902 xfers_data = NULL;
11281
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1903 }
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1904
a5cda37a16be [gaim-migrate @ 13478]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11231
diff changeset
1905 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1906 purple_xfers_set_ui_ops(PurpleXferUiOps *ops) {
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1907 xfer_ui_ops = ops;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1908 }
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1909
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1910 PurpleXferUiOps *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15702
diff changeset
1911 purple_xfers_get_ui_ops(void) {
4514
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1912 return xfer_ui_ops;
40e3588a280f [gaim-migrate @ 4792]
Christian Hammond <chipx86@chipx86.com>
parents: 4249
diff changeset
1913 }

mercurial