src/rvous.c

Thu, 02 Nov 2000 22:29:51 +0000

author
Eric Warmenhoven <warmenhoven@yahoo.com>
date
Thu, 02 Nov 2000 22:29:51 +0000
changeset 1051
d65ac9e2224f
parent 1035
82193e84d1d3
child 1087
bc9c6b635358
permissions
-rw-r--r--

[gaim-migrate @ 1061]
user_info only in aim_user (saves 2k per connection); mem leak fixes in dialogs.c and multi.c; and proto_opt in aim_user (so prpls can have their own saved information per user). no way to draw protocol option selection window thingy yet, so prpls will either have to do that on their own or something. i don't know. we'll figure it out.

198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1 /*
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2 * gaim
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3 *
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5 *
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or modify
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7 * it under the terms of the GNU General Public License as published by
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
9 * (at your option) any later version.
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
10 *
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful,
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14 * GNU General Public License for more details.
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 *
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
19 *
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
20 */
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
21
349
6f7d28b0f98d [gaim-migrate @ 359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 264
diff changeset
22 #ifdef HAVE_CONFIG_H
6f7d28b0f98d [gaim-migrate @ 359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 264
diff changeset
23 #include "../config.h"
6f7d28b0f98d [gaim-migrate @ 359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 264
diff changeset
24 #endif
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
25 #include <string.h>
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
26 #include <stdio.h>
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
27 #include <stdlib.h>
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
28 #include <time.h>
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
29 #include <sys/types.h>
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
30 #include <sys/stat.h>
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
31 #include <fcntl.h>
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
32 #include <sys/socket.h>
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
33 #include <netdb.h>
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
34 #include <netinet/in.h>
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
35 #include <unistd.h>
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
36 #include <netinet/in.h>
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
37 #include <arpa/inet.h>
218
49fc1eff65be [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
38 #include <errno.h>
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
39 #include <gtk/gtk.h>
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
40 #include "gaim.h"
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
41
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
42 static void do_send_file(GtkWidget *, struct file_transfer *);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
43 static void do_get_file (GtkWidget *, struct file_transfer *);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
44
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
45 static int snpa = -1;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
46
200
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
47 static void toggle(GtkWidget *w, int *m)
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
48 {
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
49 *m = !(*m);
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
50 }
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
51
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
52 static void free_ft(struct file_transfer *ft)
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
53 {
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
54 if (ft->window) { gtk_widget_destroy(ft->window); ft->window = NULL; }
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
55 if (ft->filename) g_free(ft->filename);
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
56 if (ft->user) g_free(ft->user);
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
57 if (ft->message) g_free(ft->message);
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
58 if (ft->ip) g_free(ft->ip);
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
59 if (ft->cookie) g_free(ft->cookie);
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
60 g_free(ft);
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
61 }
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
62
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
63 static void warn_callback(GtkWidget *widget, struct file_transfer *ft)
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
64 {
978
e78b61c3a443 [gaim-migrate @ 988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 976
diff changeset
65 show_warn_dialog(ft->gc, ft->user);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
66 }
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
67
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
68 static void info_callback(GtkWidget *widget, struct file_transfer *ft)
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
69 {
1032
c16107c10195 [gaim-migrate @ 1042]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 978
diff changeset
70 serv_get_info(ft->gc, ft->user);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
71 }
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
72
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
73 static void cancel_callback(GtkWidget *widget, struct file_transfer *ft)
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
74 {
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
75 if (ft->accepted) {
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
76 return;
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
77 }
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
78
978
e78b61c3a443 [gaim-migrate @ 988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 976
diff changeset
79 serv_rvous_cancel(ft->gc, ft->user, ft->cookie, ft->UID);
260
b145a72a016f [gaim-migrate @ 270]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 253
diff changeset
80
200
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
81 free_ft(ft);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
82 }
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
83
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
84 static void accept_callback(GtkWidget *widget, struct file_transfer *ft)
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
85 {
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
86 char buf[BUF_LEN];
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
87 char fname[BUF_LEN];
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
88 char *c;
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
89
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
90 if (!strcmp(ft->UID, FILE_SEND_UID)) {
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
91 c = ft->filename + strlen(ft->filename);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
92
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
93 while (c != ft->filename) {
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
94 if (*c == '/' || *c == '\\') {
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
95 strcpy(fname, c+1);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
96 break;
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
97 }
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
98 c--;
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
99 }
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
100
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
101 if (c == ft->filename)
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
102 strcpy(fname, ft->filename);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
103 }
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
104
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
105 gtk_widget_destroy(ft->window);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
106 ft->window = NULL;
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
107
350
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
108 ft->window = gtk_file_selection_new(_("Gaim - Save As..."));
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
109
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
110 gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(ft->window));
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
111
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
112 if (!strcmp(ft->UID, FILE_SEND_UID))
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
113 g_snprintf(buf, BUF_LEN - 1, "%s/%s", getenv("HOME"), fname);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
114 else
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
115 g_snprintf(buf, BUF_LEN - 1, "%s/", getenv("HOME"));
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
116 gtk_file_selection_set_filename(GTK_FILE_SELECTION(ft->window), buf);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
117
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
118 gtk_signal_connect(GTK_OBJECT(ft->window), "destroy",
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
119 GTK_SIGNAL_FUNC(cancel_callback), ft);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
120
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
121 if (!strcmp(ft->UID, FILE_SEND_UID)) {
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
122 gtk_signal_connect(GTK_OBJECT(
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
123 GTK_FILE_SELECTION(ft->window)->ok_button),
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
124 "clicked", GTK_SIGNAL_FUNC(do_get_file), ft);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
125 } else {
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
126 gtk_signal_connect(GTK_OBJECT(
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
127 GTK_FILE_SELECTION(ft->window)->ok_button),
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
128 "clicked", GTK_SIGNAL_FUNC(do_send_file), ft);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
129 }
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
130 gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(ft->window)->cancel_button),
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
131 "clicked", GTK_SIGNAL_FUNC(cancel_callback), ft);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
132
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
133 gtk_widget_show(ft->window);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
134 }
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
135
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
136 static int read_file_header(int fd, struct file_header *header) {
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
137 char buf[257];
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
138 int read_rv = read(fd, buf, 256);
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
139 if (read_rv < 0)
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
140 return read_rv;
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
141 memcpy(&header->magic, buf + 0, 4);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
142 memcpy(&header->hdrlen, buf + 4, 2);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
143 memcpy(&header->hdrtype, buf + 6, 2);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
144 memcpy(&header->bcookie, buf + 8, 8);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
145 memcpy(&header->encrypt, buf + 16, 2);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
146 memcpy(&header->compress, buf + 18, 2);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
147 memcpy(&header->totfiles, buf + 20, 2);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
148 memcpy(&header->filesleft, buf + 22, 2);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
149 memcpy(&header->totparts, buf + 24, 2);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
150 memcpy(&header->partsleft, buf + 26, 2);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
151 memcpy(&header->totsize, buf + 28, 4);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
152 memcpy(&header->size, buf + 32, 4);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
153 memcpy(&header->modtime, buf + 36, 4);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
154 memcpy(&header->checksum, buf + 40, 4);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
155 memcpy(&header->rfrcsum, buf + 44, 4);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
156 memcpy(&header->rfsize, buf + 48, 4);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
157 memcpy(&header->cretime, buf + 52, 4);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
158 memcpy(&header->rfcsum, buf + 56, 4);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
159 memcpy(&header->nrecvd, buf + 60, 4);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
160 memcpy(&header->recvcsum, buf + 64, 4);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
161 memcpy(&header->idstring, buf + 68, 32);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
162 memcpy(&header->flags, buf + 100, 1);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
163 memcpy(&header->lnameoffset, buf + 101, 1);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
164 memcpy(&header->lsizeoffset, buf + 102, 1);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
165 memcpy(&header->dummy, buf + 103, 69);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
166 memcpy(&header->macfileinfo, buf + 172, 16);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
167 memcpy(&header->nencode, buf + 188, 2);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
168 memcpy(&header->nlanguage, buf + 190, 2);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
169 memcpy(&header->name, buf + 192, 64);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
170 return read_rv;
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
171 }
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
172
217
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
173 static int write_file_header(int fd, struct file_header *header) {
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
174 char buf[257];
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
175 memcpy(buf + 0, &header->magic, 4);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
176 memcpy(buf + 4, &header->hdrlen, 2);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
177 memcpy(buf + 6, &header->hdrtype, 2);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
178 memcpy(buf + 8, &header->bcookie, 8);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
179 memcpy(buf + 16, &header->encrypt, 2);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
180 memcpy(buf + 18, &header->compress, 2);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
181 memcpy(buf + 20, &header->totfiles, 2);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
182 memcpy(buf + 22, &header->filesleft, 2);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
183 memcpy(buf + 24, &header->totparts, 2);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
184 memcpy(buf + 26, &header->partsleft, 2);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
185 memcpy(buf + 28, &header->totsize, 4);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
186 memcpy(buf + 32, &header->size, 4);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
187 memcpy(buf + 36, &header->modtime, 4);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
188 memcpy(buf + 40, &header->checksum, 4);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
189 memcpy(buf + 44, &header->rfrcsum, 4);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
190 memcpy(buf + 48, &header->rfsize, 4);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
191 memcpy(buf + 52, &header->cretime, 4);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
192 memcpy(buf + 56, &header->rfcsum, 4);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
193 memcpy(buf + 60, &header->nrecvd, 4);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
194 memcpy(buf + 64, &header->recvcsum, 4);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
195 memcpy(buf + 68, &header->idstring, 32);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
196 memcpy(buf + 100, &header->flags, 1);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
197 memcpy(buf + 101, &header->lnameoffset, 1);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
198 memcpy(buf + 102, &header->lsizeoffset, 1);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
199 memcpy(buf + 103, &header->dummy, 69);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
200 memcpy(buf + 172, &header->macfileinfo, 16);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
201 memcpy(buf + 188, &header->nencode, 2);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
202 memcpy(buf + 190, &header->nlanguage, 2);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
203 memcpy(buf + 192, &header->name, 64);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
204 return write(fd, buf, 256);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
205 }
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
206
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
207 static void do_get_file(GtkWidget *w, struct file_transfer *ft)
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
208 {
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
209 char *file = gtk_file_selection_get_filename(GTK_FILE_SELECTION(ft->window));
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
210 char buf[BUF_LONG];
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
211 char *buf2;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
212 struct file_header header;
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
213 int read_rv;
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
214 guint32 rcv;
200
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
215 int cont = 1;
212
64d4da4d3f09 [gaim-migrate @ 222]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 211
diff changeset
216 GtkWidget *fw = NULL, *fbar = NULL, *label = NULL;
64d4da4d3f09 [gaim-migrate @ 222]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 211
diff changeset
217 GtkWidget *button = NULL, *pct = NULL;
211
731c1b644c7f [gaim-migrate @ 221]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 210
diff changeset
218
1035
82193e84d1d3 [gaim-migrate @ 1045]
Ben Miller <millebe@cs.earlham.edu>
parents: 1032
diff changeset
219 if (file_is_dir(file, ft->window)) {
82193e84d1d3 [gaim-migrate @ 1045]
Ben Miller <millebe@cs.earlham.edu>
parents: 1032
diff changeset
220 return;
82193e84d1d3 [gaim-migrate @ 1045]
Ben Miller <millebe@cs.earlham.edu>
parents: 1032
diff changeset
221 }
82193e84d1d3 [gaim-migrate @ 1045]
Ben Miller <millebe@cs.earlham.edu>
parents: 1032
diff changeset
222
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
223 if (!(ft->f = fopen(file,"w"))) {
350
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
224 g_snprintf(buf, BUF_LONG / 2, _("Error writing file %s"), file);
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
225 do_error_dialog(buf, _("Error"));
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
226 ft->accepted = 0;
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
227 accept_callback(NULL, ft);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
228 return;
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
229 }
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
230
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
231 ft->accepted = 1;
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
232
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
233 gtk_widget_destroy(ft->window);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
234 ft->window = NULL;
978
e78b61c3a443 [gaim-migrate @ 988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 976
diff changeset
235 serv_rvous_accept(ft->gc, ft->user, ft->cookie, ft->UID);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
236
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
237
217
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
238 ft->fd = connect_address(inet_addr(ft->ip), ft->port);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
239
217
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
240 if (ft->fd <= -1) {
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
241 fclose(ft->f);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
242 free_ft(ft);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
243 return;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
244 }
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
245
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
246 read_rv = read_file_header(ft->fd, &header);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
247 if(read_rv < 0) {
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
248 close(ft->fd);
217
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
249 fclose(ft->f);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
250 free_ft(ft);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
251 return;
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
252 }
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
253
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
254 sprintf(debug_buff, "header length %d\n", header.hdrlen);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
255 debug_print(debug_buff);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
256
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
257 header.hdrtype = 0x202;
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
258
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
259 buf2 = frombase64(ft->cookie);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
260 memcpy(header.bcookie, buf2, 8);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
261 snprintf(header.idstring, 32, "Gaim");
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
262 g_free(buf2);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
263 header.encrypt = 0; header.compress = 0;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
264 header.totparts = 1; header.partsleft = 1;
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
265
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
266 sprintf(debug_buff, "sending confirmation\n");
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
267 debug_print(debug_buff);
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
268 write_file_header(ft->fd, &header);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
269
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
270 rcv = 0;
217
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
271
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
272 fw = gtk_dialog_new();
350
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
273 snprintf(buf, 2048, _("Receiving %s from %s"), ft->filename, ft->user);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
274 label = gtk_label_new(buf);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
275 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(fw)->vbox), label, 0, 0, 5);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
276 gtk_widget_show(label);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
277 fbar = gtk_progress_bar_new();
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
278 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(fw)->action_area), fbar, 0, 0, 5);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
279 gtk_widget_show(fbar);
212
64d4da4d3f09 [gaim-migrate @ 222]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 211
diff changeset
280 pct = gtk_label_new("0 %");
64d4da4d3f09 [gaim-migrate @ 222]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 211
diff changeset
281 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(fw)->action_area), pct, 0, 0, 5);
64d4da4d3f09 [gaim-migrate @ 222]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 211
diff changeset
282 gtk_widget_show(pct);
350
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
283 button = gtk_button_new_with_label(_("Cancel"));
200
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
284 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(fw)->action_area), button, 0, 0, 5);
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
285 gtk_widget_show(button);
535
468607aeb8b4 [gaim-migrate @ 545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 411
diff changeset
286 if (display_options & OPT_DISP_COOL_LOOK)
468607aeb8b4 [gaim-migrate @ 545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 411
diff changeset
287 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
200
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
288 gtk_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc)toggle, &cont);
350
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
289 gtk_window_set_title(GTK_WINDOW(fw), _("Gaim - File Transfer"));
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
290 gtk_widget_realize(fw);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
291 aol_icon(fw->window);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
292 gtk_widget_show(fw);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
293
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
294 sprintf(debug_buff, "Receiving %s from %s (%d bytes)\n", ft->filename,
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
295 ft->user, ft->size);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
296 debug_print(debug_buff);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
297
218
49fc1eff65be [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
298 fcntl(ft->fd, F_SETFL, O_NONBLOCK);
49fc1eff65be [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
299
200
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
300 while (rcv != ft->size && cont) {
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
301 int i;
217
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
302 float pcnt = ((float)rcv)/((float)ft->size);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
303 int remain = ft->size - rcv > 1024 ? 1024 : ft->size - rcv;
218
49fc1eff65be [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
304 read_rv = read(ft->fd, buf, remain);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
305 if(read_rv < 0) {
218
49fc1eff65be [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
306 if (errno == EWOULDBLOCK) {
49fc1eff65be [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
307 while(gtk_events_pending())
49fc1eff65be [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
308 gtk_main_iteration();
49fc1eff65be [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
309 continue;
49fc1eff65be [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
310 }
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
311 gtk_widget_destroy(fw);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
312 fw = NULL;
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
313 fclose(ft->f);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
314 close(ft->fd);
200
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
315 free_ft(ft);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
316 return;
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
317 }
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
318 rcv += read_rv;
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
319 for (i = 0; i < read_rv; i++)
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
320 fprintf(ft->f, "%c", buf[i]);
217
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
321 gtk_progress_bar_update(GTK_PROGRESS_BAR(fbar), pcnt);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
322 sprintf(buf, "%d / %d K (%2.0f %%)", rcv/1024, ft->size/1024, 100*pcnt);
212
64d4da4d3f09 [gaim-migrate @ 222]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 211
diff changeset
323 gtk_label_set_text(GTK_LABEL(pct), buf);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
324 while(gtk_events_pending())
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
325 gtk_main_iteration();
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
326 }
200
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
327 fclose(ft->f);
201
2b705bc127e8 [gaim-migrate @ 211]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 200
diff changeset
328 gtk_widget_destroy(fw);
2b705bc127e8 [gaim-migrate @ 211]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 200
diff changeset
329 fw = NULL;
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
330
200
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
331 if (!cont) {
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
332 char *tmp = frombase64(ft->cookie);
978
e78b61c3a443 [gaim-migrate @ 988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 976
diff changeset
333 serv_rvous_cancel(ft->gc, ft->user, tmp, ft->UID);
200
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
334 close(ft->fd);
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
335 free_ft(ft);
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
336 return;
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
337 }
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
338
217
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
339 sprintf(debug_buff, "Download complete.\n");
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
340 debug_print(debug_buff);
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
341
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
342 header.hdrtype = 0x402;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
343 header.totparts = 0; header.partsleft = 0;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
344 header.flags = 0;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
345 header.recvcsum = header.checksum;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
346 header.nrecvd = header.totsize;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
347 write_file_header(ft->fd, &header);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
348 close(ft->fd);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
349
200
aa9fbd9e68a3 [gaim-migrate @ 210]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 198
diff changeset
350 free_ft(ft);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
351 }
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
352
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
353 static void send_file_callback(gpointer data, gint source,
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
354 GdkInputCondition condition) {
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
355 struct file_transfer *ft = (struct file_transfer *)data;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
356 struct file_header fhdr;
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
357 int read_rv;
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
358 char buf[2048];
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
359 GtkWidget *fw = NULL, *fbar = NULL, *label = NULL;
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
360 GtkWidget *button = NULL, *pct = NULL;
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
361 int rcv, cont;
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
362
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
363 gdk_input_remove(snpa);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
364 snpa = -1;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
365
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
366 if (condition & GDK_INPUT_EXCEPTION) {
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
367 fclose(ft->f);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
368 close(ft->fd);
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
369 free_ft(ft);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
370 return;
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
371 }
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
372
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
373 /* OK, so here's what's going on: we need to send a file. The person
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
374 * sends us a file_header, then we send a file_header, then they send
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
375 * us a file header, then we send the file, then they send a header,
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
376 * and we're done. */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
377
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
378 /* we can do some neat tricks because the other person sends us back
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
379 * all the information we need in the file_header */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
380
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
381 read_rv = read_file_header(ft->fd, &fhdr);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
382 if (read_rv < 0) {
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
383 fclose(ft->f);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
384 close(ft->fd);
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
385 free_ft(ft);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
386 return;
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
387 }
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
388
264
6d71d8481bb1 [gaim-migrate @ 274]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 261
diff changeset
389 if (fhdr.hdrtype != 0xc12) {
6d71d8481bb1 [gaim-migrate @ 274]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 261
diff changeset
390 sprintf(debug_buff, "%s decided to cancel. (%x)\n", ft->user,
6d71d8481bb1 [gaim-migrate @ 274]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 261
diff changeset
391 fhdr.hdrtype);
217
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
392 debug_print(debug_buff);
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
393 fclose(ft->f);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
394 close(ft->fd);
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
395 free_ft(ft);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
396 return;
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
397 }
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
398
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
399 /* now we need to set the hdrtype to a certain value, but I don't know
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
400 * what that value is, and I don't happen to have a win computer to do
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
401 * my sniffing from :-P */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
402 fhdr.hdrtype = ntohs(0x101);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
403 fhdr.totfiles = 1;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
404 fhdr.filesleft = 1;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
405 fhdr.flags = 0x20;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
406 write_file_header(ft->fd, &fhdr);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
407 read_file_header(ft->fd, &fhdr);
217
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
408
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
409 fw = gtk_dialog_new();
350
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
410 snprintf(buf, 2048, _("Sending %s to %s"), fhdr.name, ft->user);
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
411 label = gtk_label_new(buf);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
412 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(fw)->vbox), label, 0, 0, 5);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
413 gtk_widget_show(label);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
414 fbar = gtk_progress_bar_new();
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
415 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(fw)->action_area), fbar, 0, 0, 5);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
416 gtk_widget_show(fbar);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
417 pct = gtk_label_new("0 %");
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
418 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(fw)->action_area), pct, 0, 0, 5);
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
419 gtk_widget_show(pct);
350
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
420 button = gtk_button_new_with_label(_("Cancel"));
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
421 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(fw)->action_area), button, 0, 0, 5);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
422 gtk_widget_show(button);
535
468607aeb8b4 [gaim-migrate @ 545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 411
diff changeset
423 if (display_options & OPT_DISP_COOL_LOOK)
468607aeb8b4 [gaim-migrate @ 545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 411
diff changeset
424 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
425 gtk_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc)toggle, &cont);
350
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
426 gtk_window_set_title(GTK_WINDOW(fw), _("Gaim - File Transfer"));
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
427 gtk_widget_realize(fw);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
428 aol_icon(fw->window);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
429 gtk_widget_show(fw);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
430
411
4e2ed8c4c0f8 [gaim-migrate @ 421]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 350
diff changeset
431 sprintf(debug_buff, "Sending %s to %s (%ld bytes)\n", fhdr.name,
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
432 ft->user, fhdr.totsize);
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
433 debug_print(debug_buff);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
434
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
435 rcv = 0; cont = 1;
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
436 while (rcv != ntohl(fhdr.totsize) && cont) {
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
437 int i;
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
438 float pcnt = ((float)rcv)/((float)ntohl(fhdr.totsize));
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
439 int remain = ntohl(fhdr.totsize) - rcv > 1024 ? 1024 :
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
440 ntohl(fhdr.totsize) - rcv;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
441 for (i = 0; i < remain; i++)
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
442 fscanf(ft->f, "%c", &buf[i]);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
443 read_rv = write(ft->fd, buf, remain);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
444 if (read_rv < 0) {
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
445 fclose(ft->f);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
446 gtk_widget_destroy(fw);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
447 fw = NULL;
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
448 fclose(ft->f);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
449 close(ft->fd);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
450 free_ft(ft);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
451 return;
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
452 }
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
453 rcv += read_rv;
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
454 gtk_progress_bar_update(GTK_PROGRESS_BAR(fbar), pcnt);
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
455 sprintf(buf, "%d / %d K (%2.0f %%)", rcv/1024,
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
456 ntohl(fhdr.totsize)/1024, 100*pcnt);
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
457 gtk_label_set_text(GTK_LABEL(pct), buf);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
458 while(gtk_events_pending())
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
459 gtk_main_iteration();
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
460 }
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
461 fclose(ft->f);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
462 gtk_widget_destroy(fw);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
463 fw = NULL;
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
464
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
465 if (!cont) {
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
466 char *tmp = frombase64(ft->cookie);
978
e78b61c3a443 [gaim-migrate @ 988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 976
diff changeset
467 serv_rvous_cancel(ft->gc, ft->user, tmp, ft->UID);
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
468 close(ft->fd);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
469 free_ft(ft);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
470 return;
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
471 }
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
472
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
473 sprintf(debug_buff, "Upload complete.\n");
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
474 debug_print(debug_buff);
217
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
475
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
476 read_file_header(ft->fd, &fhdr);
217
dedec2ec6dea [gaim-migrate @ 227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 216
diff changeset
477
221
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
478 close(ft->fd);
a4051f7f52dc [gaim-migrate @ 231]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 218
diff changeset
479 free_ft(ft);
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
480 }
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
481
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
482 static void do_send_file(GtkWidget *w, struct file_transfer *ft) {
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
483 char *file = g_strdup(gtk_file_selection_get_filename(GTK_FILE_SELECTION(ft->window)));
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
484 char buf[BUF_LONG];
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
485 char *buf2;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
486 int read_rv;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
487 struct file_header fhdr;
411
4e2ed8c4c0f8 [gaim-migrate @ 421]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 350
diff changeset
488 guint32 rcv = 0;
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
489 char *c;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
490 struct stat st;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
491 struct tm *fortime;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
492
1035
82193e84d1d3 [gaim-migrate @ 1045]
Ben Miller <millebe@cs.earlham.edu>
parents: 1032
diff changeset
493 if (file_is_dir (file, ft->window)) {
82193e84d1d3 [gaim-migrate @ 1045]
Ben Miller <millebe@cs.earlham.edu>
parents: 1032
diff changeset
494 g_free(file);
82193e84d1d3 [gaim-migrate @ 1045]
Ben Miller <millebe@cs.earlham.edu>
parents: 1032
diff changeset
495 return;
82193e84d1d3 [gaim-migrate @ 1045]
Ben Miller <millebe@cs.earlham.edu>
parents: 1032
diff changeset
496 }
82193e84d1d3 [gaim-migrate @ 1045]
Ben Miller <millebe@cs.earlham.edu>
parents: 1032
diff changeset
497
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
498 stat(file, &st);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
499 if (!(ft->f = fopen(file, "r"))) {
350
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
500 g_snprintf(buf, BUF_LONG / 2, _("Error reading file %s"), file);
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
501 do_error_dialog(buf, _("Error"));
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
502 ft->accepted = 0;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
503 accept_callback(NULL, ft);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
504 free_ft(ft);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
505 return;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
506 }
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
507
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
508 ft->accepted = 1;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
509 ft->filename = file;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
510
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
511 gtk_widget_destroy(ft->window);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
512 ft->window = NULL;
978
e78b61c3a443 [gaim-migrate @ 988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 976
diff changeset
513 serv_rvous_accept(ft->gc, ft->user, ft->cookie, ft->UID);
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
514
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
515
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
516
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
517 ft->fd = connect_address(inet_addr(ft->ip), ft->port);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
518
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
519 if (ft->fd <= -1) {
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
520 free_ft(ft);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
521 return;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
522 }
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
523
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
524 /* here's where we differ from do_get_file */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
525 /* 1. build/send header
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
526 * 2. receive header
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
527 * 3. send listing file
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
528 * 4. receive header
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
529 *
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
530 * then we need to wait to actually send the file, if they want.
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
531 *
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
532 */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
533
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
534 /* 1. build/send header */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
535 c = file + strlen(file);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
536 while (*(c - 1) != '/') c--;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
537 buf2 = frombase64(ft->cookie);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
538 sprintf(debug_buff, "Building header to send %s (cookie: %s)\n", file, buf2);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
539 debug_print(debug_buff);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
540 fhdr.magic[0] = 'O'; fhdr.magic[1] = 'F';
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
541 fhdr.magic[2] = 'T'; fhdr.magic[3] = '2';
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
542 fhdr.hdrlen = htons(256);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
543 fhdr.hdrtype = htons(0x1108);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
544 snprintf(fhdr.bcookie, 8, "%s", buf2);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
545 g_free(buf2);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
546 fhdr.encrypt = 0;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
547 fhdr.compress = 0;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
548 fhdr.totfiles = htons(1);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
549 fhdr.filesleft = htons(1);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
550 fhdr.totparts = htons(1);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
551 fhdr.partsleft = htons(1);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
552 fhdr.totsize = htonl((long)st.st_size); /* combined size of all files */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
553 /* size = strlen("mm/dd/yyyy hh:mm sizesize 'name'\r\n") */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
554 fhdr.size = htonl(28 + strlen(c)); /* size of listing.txt */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
555 fhdr.modtime = htonl(time(NULL)); /* time since UNIX epoch */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
556 fhdr.checksum = htonl(0x89f70000); /* ? i don't think this matters */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
557 fhdr.rfrcsum = 0;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
558 fhdr.rfsize = 0;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
559 fhdr.cretime = 0;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
560 fhdr.rfcsum = 0;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
561 fhdr.nrecvd = 0;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
562 fhdr.recvcsum = 0;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
563 snprintf(fhdr.idstring, 32, "OFT_Windows ICBMFT V1.1 32");
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
564 fhdr.flags = 0x02; /* don't ask me why */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
565 fhdr.lnameoffset = 0x1A; /* ? still no clue */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
566 fhdr.lsizeoffset = 0x10; /* whatever */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
567 memset(fhdr.dummy, 0, 69);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
568 memset(fhdr.macfileinfo, 0, 16);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
569 fhdr.nencode = 0;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
570 fhdr.nlanguage = 0;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
571 snprintf(fhdr.name, 64, "listing.txt");
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
572 read_rv = write_file_header(ft->fd, &fhdr);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
573 if (read_rv <= -1) {
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
574 sprintf(debug_buff, "Couldn't write opening header\n");
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
575 debug_print(debug_buff);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
576 close(ft->fd);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
577 free_ft(ft);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
578 return;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
579 }
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
580
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
581 /* 2. receive header */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
582 sprintf(debug_buff, "Receiving header\n");
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
583 debug_print(debug_buff);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
584 read_rv = read_file_header(ft->fd, &fhdr);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
585 if (read_rv <= -1) {
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
586 sprintf(debug_buff, "Couldn't read header\n");
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
587 debug_print(debug_buff);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
588 close(ft->fd);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
589 free_ft(ft);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
590 return;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
591 }
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
592
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
593 /* 3. send listing file */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
594 /* mm/dd/yyyy hh:mm sizesize name.ext\r\n */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
595 /* creation date ^ */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
596 sprintf(debug_buff, "Sending file\n");
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
597 debug_print(debug_buff);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
598 fortime = localtime(&st.st_ctime);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
599 snprintf(buf, ntohl(fhdr.size) + 1, "%2d/%2d/%4d %2d:%2d %8ld %s\r\n",
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
600 fortime->tm_mon + 1, fortime->tm_mday, fortime->tm_year + 1900,
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
601 fortime->tm_hour + 1, fortime->tm_min + 1,
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
602 st.st_size, c);
411
4e2ed8c4c0f8 [gaim-migrate @ 421]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 350
diff changeset
603 sprintf(debug_buff, "Sending listing.txt (%d bytes) to %s\n",
261
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
604 ntohl(fhdr.size) + 1, ft->user);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
605 debug_print(debug_buff);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
606
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
607 read_rv = write(ft->fd, buf, ntohl(fhdr.size));
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
608 if (read_rv <= -1) {
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
609 sprintf(debug_buff, "Could not send file, wrote %d\n", rcv);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
610 debug_print(debug_buff);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
611 close(ft->fd);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
612 free_ft(ft);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
613 return;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
614 }
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
615
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
616 /* 4. receive header */
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
617 sprintf(debug_buff, "Receiving closing header\n");
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
618 debug_print(debug_buff);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
619 read_rv = read_file_header(ft->fd, &fhdr);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
620 if (read_rv <= -1) {
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
621 sprintf(debug_buff, "Couldn't read closing header\n");
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
622 debug_print(debug_buff);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
623 close(ft->fd);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
624 free_ft(ft);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
625 return;
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
626 }
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
627
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
628 snpa = gdk_input_add(ft->fd, GDK_INPUT_READ | GDK_INPUT_EXCEPTION,
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
629 send_file_callback, ft);
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
630
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
631 }
f239e7f1d1c2 [gaim-migrate @ 271]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 260
diff changeset
632
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
633 void accept_file_dialog(struct file_transfer *ft)
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
634 {
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
635 GtkWidget *accept, *info, *warn, *cancel;
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
636 GtkWidget *label;
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
637 GtkWidget *vbox, *bbox;
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
638 char buf[1024];
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
639
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
640
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
641 ft->window = gtk_window_new(GTK_WINDOW_DIALOG);
905
7a2da3bc1ebe [gaim-migrate @ 915]
Rob Flynn <gaim@robflynn.com>
parents: 617
diff changeset
642 gtk_window_set_wmclass(GTK_WINDOW(ft->window), "accept_file", "Gaim");
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
643
350
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
644 accept = gtk_button_new_with_label(_("Accept"));
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
645 info = gtk_button_new_with_label(_("Info"));
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
646 warn = gtk_button_new_with_label(_("Warn"));
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
647 cancel = gtk_button_new_with_label(_("Cancel"));
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
648
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
649 bbox = gtk_hbox_new(TRUE, 10);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
650 vbox = gtk_vbox_new(FALSE, 5);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
651
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
652 gtk_widget_show(accept);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
653 gtk_widget_show(info);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
654 gtk_widget_show(warn);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
655 gtk_widget_show(cancel);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
656
617
6a12d7379f3d [gaim-migrate @ 627]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents: 535
diff changeset
657 if (display_options & OPT_DISP_COOL_LOOK)
6a12d7379f3d [gaim-migrate @ 627]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents: 535
diff changeset
658 {
6a12d7379f3d [gaim-migrate @ 627]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents: 535
diff changeset
659 gtk_button_set_relief(GTK_BUTTON(accept), GTK_RELIEF_NONE);
6a12d7379f3d [gaim-migrate @ 627]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents: 535
diff changeset
660 gtk_button_set_relief(GTK_BUTTON(info), GTK_RELIEF_NONE);
6a12d7379f3d [gaim-migrate @ 627]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents: 535
diff changeset
661 gtk_button_set_relief(GTK_BUTTON(warn), GTK_RELIEF_NONE);
6a12d7379f3d [gaim-migrate @ 627]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents: 535
diff changeset
662 gtk_button_set_relief(GTK_BUTTON(cancel), GTK_RELIEF_NONE);
6a12d7379f3d [gaim-migrate @ 627]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents: 535
diff changeset
663 }
535
468607aeb8b4 [gaim-migrate @ 545]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 411
diff changeset
664
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
665 gtk_box_pack_start(GTK_BOX(bbox), accept, TRUE, TRUE, 10);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
666 gtk_box_pack_start(GTK_BOX(bbox), info, TRUE, TRUE, 10);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
667 gtk_box_pack_start(GTK_BOX(bbox), warn, TRUE, TRUE, 10);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
668 gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 10);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
669
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
670 if (!strcmp(ft->UID, FILE_SEND_UID)) {
350
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
671 g_snprintf(buf, sizeof(buf), _("%s requests you to accept the file: %s (%d bytes)"),
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
672 ft->user, ft->filename, ft->size);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
673 } else {
350
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
674 g_snprintf(buf, sizeof(buf), _("%s requests you to send them a file"),
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
675 ft->user);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
676 }
211
731c1b644c7f [gaim-migrate @ 221]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 210
diff changeset
677 if (ft->message)
731c1b644c7f [gaim-migrate @ 221]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 210
diff changeset
678 strncat(buf, ft->message, sizeof(buf) - strlen(buf));
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
679 label = gtk_label_new(buf);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
680 gtk_widget_show(label);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
681 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 5);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
682 gtk_box_pack_start(GTK_BOX(vbox), bbox, TRUE, TRUE, 5);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
683
350
b02a56431923 [gaim-migrate @ 360]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 349
diff changeset
684 gtk_window_set_title(GTK_WINDOW(ft->window), _("Gaim - File Transfer?"));
198
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
685 gtk_window_set_focus(GTK_WINDOW(ft->window), accept);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
686 gtk_container_add(GTK_CONTAINER(ft->window), vbox);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
687 gtk_container_border_width(GTK_CONTAINER(ft->window), 10);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
688 gtk_widget_show(vbox);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
689 gtk_widget_show(bbox);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
690 gtk_widget_realize(ft->window);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
691 aol_icon(ft->window->window);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
692
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
693 gtk_widget_show(ft->window);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
694
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
695
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
696 gtk_signal_connect(GTK_OBJECT(accept), "clicked",
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
697 GTK_SIGNAL_FUNC(accept_callback), ft);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
698 gtk_signal_connect(GTK_OBJECT(cancel), "clicked",
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
699 GTK_SIGNAL_FUNC(cancel_callback), ft);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
700 gtk_signal_connect(GTK_OBJECT(warn), "clicked",
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
701 GTK_SIGNAL_FUNC(warn_callback), ft);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
702 gtk_signal_connect(GTK_OBJECT(info), "clicked",
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
703 GTK_SIGNAL_FUNC(info_callback), ft);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
704
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
705
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
706 if (ft->message) {
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
707 /* we'll do this later
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
708 while(gtk_events_pending())
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
709 gtk_main_iteration();
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
710 html_print(text, ft->message);
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
711 */
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
712 }
7b074dda6f8c [gaim-migrate @ 208]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
713 }

mercurial