annotate src/rvous.c @ 1162:37257f175ed8

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