annotate src/rvous.c @ 1401:bf041349b11e

[gaim-migrate @ 1411] abliity to set accounts away independent of each other. also allows for all the other states (like in yahoo and icq). probably breaks MSN, so don't use it until rob fixes it. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Wed, 10 Jan 2001 22:15:24 +0000
parents b5783215b245
children
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
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1233
diff changeset
298 debug_printf("header length %d\n", header.hdrlen);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
299
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
300 header.hdrtype = 0x202;
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
301
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
302 buf2 = frombase64(ft->cookie);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
303 memcpy(header.bcookie, buf2, 8);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
304 snprintf(header.idstring, 32, "Gaim");
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
305 g_free(buf2);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
306 header.encrypt = 0; header.compress = 0;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
307 header.totparts = 1; header.partsleft = 1;
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
308
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1233
diff changeset
309 debug_printf("sending confirmation\n");
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
310 write_file_header(ft->fd, &header);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
311
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
312 rcv = 0;
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
313
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
314 fw = gtk_dialog_new();
350
fd3cc0a28d5d [gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 349
diff changeset
315 snprintf(buf, 2048, _("Receiving %s from %s"), ft->filename, ft->user);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
316 label = gtk_label_new(buf);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
317 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
318 gtk_widget_show(label);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
319 fbar = gtk_progress_bar_new();
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
320 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
321 gtk_widget_show(fbar);
212
89c9334d3484 [gaim-migrate @ 222]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 211
diff changeset
322 pct = gtk_label_new("0 %");
89c9334d3484 [gaim-migrate @ 222]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 211
diff changeset
323 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
324 gtk_widget_show(pct);
350
fd3cc0a28d5d [gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 349
diff changeset
325 button = gtk_button_new_with_label(_("Cancel"));
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
326 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
327 gtk_widget_show(button);
535
f03f041c1aa9 [gaim-migrate @ 545]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 411
diff changeset
328 if (display_options & OPT_DISP_COOL_LOOK)
f03f041c1aa9 [gaim-migrate @ 545]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 411
diff changeset
329 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
330 gtk_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc)toggle, &cont);
350
fd3cc0a28d5d [gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 349
diff changeset
331 gtk_window_set_title(GTK_WINDOW(fw), _("Gaim - File Transfer"));
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
332 gtk_widget_realize(fw);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
333 aol_icon(fw->window);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
334 gtk_widget_show(fw);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
335
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1233
diff changeset
336 debug_printf("Receiving %s from %s (%d bytes)\n", ft->filename, ft->user, ft->size);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
337
218
1a5ee1f8b39e [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
338 fcntl(ft->fd, F_SETFL, O_NONBLOCK);
1a5ee1f8b39e [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
339
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
340 while (rcv != ft->size && cont) {
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
341 int i;
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
342 float pcnt = ((float)rcv)/((float)ft->size);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
343 int remain = ft->size - rcv > 1024 ? 1024 : ft->size - rcv;
218
1a5ee1f8b39e [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
344 read_rv = read(ft->fd, buf, remain);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
345 if(read_rv < 0) {
218
1a5ee1f8b39e [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
346 if (errno == EWOULDBLOCK) {
1a5ee1f8b39e [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
347 while(gtk_events_pending())
1a5ee1f8b39e [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
348 gtk_main_iteration();
1a5ee1f8b39e [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
349 continue;
1a5ee1f8b39e [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
350 }
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
351 gtk_widget_destroy(fw);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
352 fw = NULL;
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
353 fclose(ft->f);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
354 close(ft->fd);
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
355 free_ft(ft);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
356 return;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
357 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
358 rcv += read_rv;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
359 for (i = 0; i < read_rv; i++)
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
360 fprintf(ft->f, "%c", buf[i]);
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
361 gtk_progress_bar_update(GTK_PROGRESS_BAR(fbar), pcnt);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
362 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
363 gtk_label_set_text(GTK_LABEL(pct), buf);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
364 while(gtk_events_pending())
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
365 gtk_main_iteration();
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
366 }
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
367 fclose(ft->f);
201
d9a5f7b1d500 [gaim-migrate @ 211]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 200
diff changeset
368 gtk_widget_destroy(fw);
d9a5f7b1d500 [gaim-migrate @ 211]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 200
diff changeset
369 fw = NULL;
198
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 if (!cont) {
1102
d7944415b1cc [gaim-migrate @ 1112]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1092
diff changeset
372 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
373 sflap_send(ft->gc, tmp_buf, -1, TYPE_DATA);
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
374 close(ft->fd);
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
375 free_ft(ft);
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
376 return;
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
377 }
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
378
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1233
diff changeset
379 debug_printf("Download complete.\n");
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
380
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
381 header.hdrtype = 0x402;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
382 header.totparts = 0; header.partsleft = 0;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
383 header.flags = 0;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
384 header.recvcsum = header.checksum;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
385 header.nrecvd = header.totsize;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
386 write_file_header(ft->fd, &header);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
387 close(ft->fd);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
388
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
389 free_ft(ft);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
390 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
391
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
392 static void send_file_callback(gpointer data, gint source,
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
393 GdkInputCondition condition) {
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
394 struct file_transfer *ft = (struct file_transfer *)data;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
395 struct file_header fhdr;
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
396 int read_rv;
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
397 char buf[2048];
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
398 GtkWidget *fw = NULL, *fbar = NULL, *label = NULL;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
399 GtkWidget *button = NULL, *pct = NULL;
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
400 int rcv, cont;
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
401
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
402 gdk_input_remove(snpa);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
403 snpa = -1;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
404
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
405 if (condition & GDK_INPUT_EXCEPTION) {
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
406 fclose(ft->f);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
407 close(ft->fd);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
408 free_ft(ft);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
409 return;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
410 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
411
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
412 /* 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
413 * 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
414 * 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
415 * and we're done. */
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
416
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
417 /* 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
418 * all the information we need in the file_header */
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
419
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
420 read_rv = read_file_header(ft->fd, &fhdr);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
421 if (read_rv < 0) {
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
422 fclose(ft->f);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
423 close(ft->fd);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
424 free_ft(ft);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
425 return;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
426 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
427
264
ced25773243c [gaim-migrate @ 274]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 261
diff changeset
428 if (fhdr.hdrtype != 0xc12) {
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1233
diff changeset
429 debug_printf("%s decided to cancel. (%x)\n", ft->user, fhdr.hdrtype);
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
430 fclose(ft->f);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
431 close(ft->fd);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
432 free_ft(ft);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
433 return;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
434 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
435
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
436 /* 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
437 * 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
438 * my sniffing from :-P */
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
439 fhdr.hdrtype = ntohs(0x101);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
440 fhdr.totfiles = 1;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
441 fhdr.filesleft = 1;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
442 fhdr.flags = 0x20;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
443 write_file_header(ft->fd, &fhdr);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
444 read_file_header(ft->fd, &fhdr);
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
445
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
446 fw = gtk_dialog_new();
350
fd3cc0a28d5d [gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 349
diff changeset
447 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
448 label = gtk_label_new(buf);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
449 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
450 gtk_widget_show(label);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
451 fbar = gtk_progress_bar_new();
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
452 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
453 gtk_widget_show(fbar);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
454 pct = gtk_label_new("0 %");
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
455 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
456 gtk_widget_show(pct);
350
fd3cc0a28d5d [gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 349
diff changeset
457 button = gtk_button_new_with_label(_("Cancel"));
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
458 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
459 gtk_widget_show(button);
535
f03f041c1aa9 [gaim-migrate @ 545]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 411
diff changeset
460 if (display_options & OPT_DISP_COOL_LOOK)
f03f041c1aa9 [gaim-migrate @ 545]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 411
diff changeset
461 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
462 gtk_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc)toggle, &cont);
350
fd3cc0a28d5d [gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 349
diff changeset
463 gtk_window_set_title(GTK_WINDOW(fw), _("Gaim - File Transfer"));
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
464 gtk_widget_realize(fw);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
465 aol_icon(fw->window);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
466 gtk_widget_show(fw);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
467
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1233
diff changeset
468 debug_printf("Sending %s to %s (%ld bytes)\n", fhdr.name, ft->user, fhdr.totsize);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
469
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
470 rcv = 0; cont = 1;
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
471 while (rcv != ntohl(fhdr.totsize) && cont) {
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
472 int i;
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
473 float pcnt = ((float)rcv)/((float)ntohl(fhdr.totsize));
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
474 int remain = ntohl(fhdr.totsize) - rcv > 1024 ? 1024 :
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
475 ntohl(fhdr.totsize) - rcv;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
476 for (i = 0; i < remain; i++)
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
477 fscanf(ft->f, "%c", &buf[i]);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
478 read_rv = write(ft->fd, buf, remain);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
479 if (read_rv < 0) {
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
480 fclose(ft->f);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
481 gtk_widget_destroy(fw);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
482 fw = NULL;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
483 fclose(ft->f);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
484 close(ft->fd);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
485 free_ft(ft);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
486 return;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
487 }
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
488 rcv += read_rv;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
489 gtk_progress_bar_update(GTK_PROGRESS_BAR(fbar), pcnt);
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
490 sprintf(buf, "%d / %d K (%2.0f %%)", rcv/1024,
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
491 ntohl(fhdr.totsize)/1024, 100*pcnt);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
492 gtk_label_set_text(GTK_LABEL(pct), buf);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
493 while(gtk_events_pending())
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
494 gtk_main_iteration();
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
495 }
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
496 fclose(ft->f);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
497 gtk_widget_destroy(fw);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
498 fw = NULL;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
499
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
500 if (!cont) {
1102
d7944415b1cc [gaim-migrate @ 1112]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1092
diff changeset
501 char tmp_buf[MSG_LEN];
d7944415b1cc [gaim-migrate @ 1112]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1092
diff changeset
502 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
503 sflap_send(ft->gc, tmp_buf, -1, TYPE_DATA);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
504 close(ft->fd);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
505 free_ft(ft);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
506 return;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
507 }
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
508
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1233
diff changeset
509 debug_printf("Upload complete.\n");
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
510
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
511 read_file_header(ft->fd, &fhdr);
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
512
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);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
515 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
516
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
517 static void do_send_file(GtkWidget *w, struct file_transfer *ft) {
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
518 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
519 char buf[BUF_LONG];
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
520 char *buf2;
1102
d7944415b1cc [gaim-migrate @ 1112]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1092
diff changeset
521 char tmp_buf[MSG_LEN];
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
522 int read_rv;
1162
37257f175ed8 [gaim-migrate @ 1172]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1114
diff changeset
523 int at;
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
524 struct file_header fhdr;
411
a330017b3aa4 [gaim-migrate @ 421]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 350
diff changeset
525 guint32 rcv = 0;
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
526 char *c;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
527 struct stat st;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
528 struct tm *fortime;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
529
1035
80a47e3b1bca [gaim-migrate @ 1045]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1032
diff changeset
530 if (file_is_dir (file, ft->window)) {
80a47e3b1bca [gaim-migrate @ 1045]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1032
diff changeset
531 g_free(file);
80a47e3b1bca [gaim-migrate @ 1045]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1032
diff changeset
532 return;
80a47e3b1bca [gaim-migrate @ 1045]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1032
diff changeset
533 }
80a47e3b1bca [gaim-migrate @ 1045]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1032
diff changeset
534
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
535 stat(file, &st);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
536 if (!(ft->f = fopen(file, "r"))) {
350
fd3cc0a28d5d [gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 349
diff changeset
537 g_snprintf(buf, BUF_LONG / 2, _("Error reading file %s"), file);
fd3cc0a28d5d [gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 349
diff changeset
538 do_error_dialog(buf, _("Error"));
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
539 ft->accepted = 0;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
540 accept_callback(NULL, ft);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
541 free_ft(ft);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
542 return;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
543 }
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
544
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
545 ft->accepted = 1;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
546 ft->filename = file;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
547
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
548 gtk_widget_destroy(ft->window);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
549 ft->window = NULL;
1102
d7944415b1cc [gaim-migrate @ 1112]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1092
diff changeset
550 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
551 sflap_send(ft->gc, tmp_buf, -1, TYPE_DATA);
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
552
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
553
1087
56c7ceb986a8 [gaim-migrate @ 1097]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1035
diff changeset
554 /* XXX is ft->port in host order or network order? */
1092
a930439f29b1 [gaim-migrate @ 1102]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1087
diff changeset
555 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
556
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
557 if (ft->fd <= -1) {
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
558 free_ft(ft);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
559 return;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
560 }
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
561
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
562 /* here's where we differ from do_get_file */
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
563 /* 1. build/send header
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
564 * 2. receive header
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
565 * 3. send listing file
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
566 * 4. receive header
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
567 *
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
568 * 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
569 *
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 /* 1. build/send header */
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
573 c = file + strlen(file);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
574 while (*(c - 1) != '/') c--;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
575 buf2 = frombase64(ft->cookie);
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1233
diff changeset
576 debug_printf("Building header to send %s (cookie: %s)\n", file, buf2);
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
577 fhdr.magic[0] = 'O'; fhdr.magic[1] = 'F';
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
578 fhdr.magic[2] = 'T'; fhdr.magic[3] = '2';
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
579 fhdr.hdrlen = htons(256);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
580 fhdr.hdrtype = htons(0x1108);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
581 snprintf(fhdr.bcookie, 8, "%s", buf2);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
582 g_free(buf2);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
583 fhdr.encrypt = 0;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
584 fhdr.compress = 0;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
585 fhdr.totfiles = htons(1);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
586 fhdr.filesleft = htons(1);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
587 fhdr.totparts = htons(1);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
588 fhdr.partsleft = htons(1);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
589 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
590 /* size = strlen("mm/dd/yyyy hh:mm sizesize 'name'\r\n") */
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
591 fhdr.size = htonl(28 + strlen(c)); /* size of listing.txt */
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
592 fhdr.modtime = htonl(time(NULL)); /* time since UNIX epoch */
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
593 fhdr.checksum = htonl(0x89f70000); /* ? i don't think this matters */
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
594 fhdr.rfrcsum = 0;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
595 fhdr.rfsize = 0;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
596 fhdr.cretime = 0;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
597 fhdr.rfcsum = 0;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
598 fhdr.nrecvd = 0;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
599 fhdr.recvcsum = 0;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
600 snprintf(fhdr.idstring, 32, "OFT_Windows ICBMFT V1.1 32");
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
601 fhdr.flags = 0x02; /* don't ask me why */
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
602 fhdr.lnameoffset = 0x1A; /* ? still no clue */
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
603 fhdr.lsizeoffset = 0x10; /* whatever */
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
604 memset(fhdr.dummy, 0, 69);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
605 memset(fhdr.macfileinfo, 0, 16);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
606 fhdr.nencode = 0;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
607 fhdr.nlanguage = 0;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
608 snprintf(fhdr.name, 64, "listing.txt");
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
609 read_rv = write_file_header(ft->fd, &fhdr);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
610 if (read_rv <= -1) {
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1233
diff changeset
611 debug_printf("Couldn't write opening header\n");
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
612 close(ft->fd);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
613 free_ft(ft);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
614 return;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
615 }
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
616
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
617 /* 2. receive header */
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1233
diff changeset
618 debug_printf("Receiving header\n");
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
619 read_rv = read_file_header(ft->fd, &fhdr);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
620 if (read_rv <= -1) {
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1233
diff changeset
621 debug_printf("Couldn't read header\n");
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
622 close(ft->fd);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
623 free_ft(ft);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
624 return;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
625 }
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
626
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
627 /* 3. send listing file */
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
628 /* mm/dd/yyyy hh:mm sizesize name.ext\r\n */
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
629 /* creation date ^ */
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1233
diff changeset
630 debug_printf("Sending file\n");
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
631 fortime = localtime(&st.st_ctime);
1162
37257f175ed8 [gaim-migrate @ 1172]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1114
diff changeset
632 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
633 fortime->tm_mon + 1, fortime->tm_mday, fortime->tm_year + 1900,
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
634 fortime->tm_hour + 1, fortime->tm_min + 1,
1233
728a90516211 [gaim-migrate @ 1243]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1162
diff changeset
635 (long)st.st_size);
1162
37257f175ed8 [gaim-migrate @ 1172]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1114
diff changeset
636 g_snprintf(buf + at, ntohl(fhdr.size) + 1 - at, "%s\r\n", c);
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1233
diff changeset
637 debug_printf("Sending listing.txt (%d bytes) to %s\n", ntohl(fhdr.size) + 1, ft->user);
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
638
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
639 read_rv = write(ft->fd, buf, ntohl(fhdr.size));
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
640 if (read_rv <= -1) {
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1233
diff changeset
641 debug_printf("Could not send file, wrote %d\n", rcv);
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
642 close(ft->fd);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
643 free_ft(ft);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
644 return;
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
645 }
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
646
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
647 /* 4. receive header */
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1233
diff changeset
648 debug_printf("Receiving closing header\n");
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
649 read_rv = read_file_header(ft->fd, &fhdr);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
650 if (read_rv <= -1) {
1250
b5783215b245 [gaim-migrate @ 1260]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1233
diff changeset
651 debug_printf("Couldn't read closing header\n");
261
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
652 close(ft->fd);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
653 free_ft(ft);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
654 return;
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
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
657 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
658 send_file_callback, ft);
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
659
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
660 }
aebbe6ca6919 [gaim-migrate @ 271]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 260
diff changeset
661
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
662 void accept_file_dialog(struct file_transfer *ft)
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
663 {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
664 GtkWidget *accept, *info, *warn, *cancel;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
665 GtkWidget *label;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
666 GtkWidget *vbox, *bbox;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
667 char buf[1024];
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
668
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
669
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
670 ft->window = gtk_window_new(GTK_WINDOW_DIALOG);
905
2876c40108cd [gaim-migrate @ 915]
Rob Flynn <gaim@robflynn.com>
parents: 617
diff changeset
671 gtk_window_set_wmclass(GTK_WINDOW(ft->window), "accept_file", "Gaim");
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
672
350
fd3cc0a28d5d [gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 349
diff changeset
673 accept = gtk_button_new_with_label(_("Accept"));
fd3cc0a28d5d [gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 349
diff changeset
674 info = gtk_button_new_with_label(_("Info"));
fd3cc0a28d5d [gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 349
diff changeset
675 warn = gtk_button_new_with_label(_("Warn"));
fd3cc0a28d5d [gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 349
diff changeset
676 cancel = gtk_button_new_with_label(_("Cancel"));
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
677
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
678 bbox = gtk_hbox_new(TRUE, 10);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
679 vbox = gtk_vbox_new(FALSE, 5);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
680
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
681 gtk_widget_show(accept);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
682 gtk_widget_show(info);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
683 gtk_widget_show(warn);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
684 gtk_widget_show(cancel);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
685
617
50f7a0bc76fc [gaim-migrate @ 627]
Todd Kulesza <fflewddur>
parents: 535
diff changeset
686 if (display_options & OPT_DISP_COOL_LOOK)
50f7a0bc76fc [gaim-migrate @ 627]
Todd Kulesza <fflewddur>
parents: 535
diff changeset
687 {
50f7a0bc76fc [gaim-migrate @ 627]
Todd Kulesza <fflewddur>
parents: 535
diff changeset
688 gtk_button_set_relief(GTK_BUTTON(accept), GTK_RELIEF_NONE);
50f7a0bc76fc [gaim-migrate @ 627]
Todd Kulesza <fflewddur>
parents: 535
diff changeset
689 gtk_button_set_relief(GTK_BUTTON(info), GTK_RELIEF_NONE);
50f7a0bc76fc [gaim-migrate @ 627]
Todd Kulesza <fflewddur>
parents: 535
diff changeset
690 gtk_button_set_relief(GTK_BUTTON(warn), GTK_RELIEF_NONE);
50f7a0bc76fc [gaim-migrate @ 627]
Todd Kulesza <fflewddur>
parents: 535
diff changeset
691 gtk_button_set_relief(GTK_BUTTON(cancel), GTK_RELIEF_NONE);
50f7a0bc76fc [gaim-migrate @ 627]
Todd Kulesza <fflewddur>
parents: 535
diff changeset
692 }
535
f03f041c1aa9 [gaim-migrate @ 545]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 411
diff changeset
693
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
694 gtk_box_pack_start(GTK_BOX(bbox), accept, TRUE, TRUE, 10);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
695 gtk_box_pack_start(GTK_BOX(bbox), info, TRUE, TRUE, 10);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
696 gtk_box_pack_start(GTK_BOX(bbox), warn, TRUE, TRUE, 10);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
697 gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 10);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
698
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
699 if (!strcmp(ft->UID, FILE_SEND_UID)) {
350
fd3cc0a28d5d [gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 349
diff changeset
700 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
701 ft->user, ft->filename, ft->size);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
702 } else {
350
fd3cc0a28d5d [gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 349
diff changeset
703 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
704 ft->user);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
705 }
211
2042a38da38b [gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 210
diff changeset
706 if (ft->message)
2042a38da38b [gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 210
diff changeset
707 strncat(buf, ft->message, sizeof(buf) - strlen(buf));
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
708 label = gtk_label_new(buf);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
709 gtk_widget_show(label);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
710 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 5);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
711 gtk_box_pack_start(GTK_BOX(vbox), bbox, TRUE, TRUE, 5);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
712
350
fd3cc0a28d5d [gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 349
diff changeset
713 gtk_window_set_title(GTK_WINDOW(ft->window), _("Gaim - File Transfer?"));
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
714 gtk_window_set_focus(GTK_WINDOW(ft->window), accept);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
715 gtk_container_add(GTK_CONTAINER(ft->window), vbox);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
716 gtk_container_border_width(GTK_CONTAINER(ft->window), 10);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
717 gtk_widget_show(vbox);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
718 gtk_widget_show(bbox);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
719 gtk_widget_realize(ft->window);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
720 aol_icon(ft->window->window);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
721
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
722 gtk_widget_show(ft->window);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
723
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
724
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
725 gtk_signal_connect(GTK_OBJECT(accept), "clicked",
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
726 GTK_SIGNAL_FUNC(accept_callback), ft);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
727 gtk_signal_connect(GTK_OBJECT(cancel), "clicked",
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
728 GTK_SIGNAL_FUNC(cancel_callback), ft);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
729 gtk_signal_connect(GTK_OBJECT(warn), "clicked",
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
730 GTK_SIGNAL_FUNC(warn_callback), ft);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
731 gtk_signal_connect(GTK_OBJECT(info), "clicked",
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
732 GTK_SIGNAL_FUNC(info_callback), ft);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
733
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
734
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
735 if (ft->message) {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
736 /* we'll do this later
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
737 while(gtk_events_pending())
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
738 gtk_main_iteration();
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
739 html_print(text, ft->message);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
740 */
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 }