annotate src/rvous.c @ 260:325d9804df10

[gaim-migrate @ 270] Preparing for when libfaim can do rvous stuff committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Wed, 24 May 2000 22:47:09 +0000
parents 5b28ef2b550e
children aebbe6ca6919
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
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
22 #include <string.h>
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
23 #include <stdio.h>
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
24 #include <stdlib.h>
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
25 #include <time.h>
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
26 #include <sys/types.h>
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
27 #include <sys/stat.h>
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
28 #include <fcntl.h>
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
29 #include <sys/socket.h>
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
30 #include <netdb.h>
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
31 #include <netinet/in.h>
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
32 #include <unistd.h>
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
33 #include <netinet/in.h>
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
34 #include <arpa/inet.h>
218
1a5ee1f8b39e [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
35 #include <errno.h>
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
36 #include <gtk/gtk.h>
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
37 #include "gaim.h"
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
38
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
39 static void do_send_file(GtkWidget *, struct file_transfer *);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
40 static void do_get_file (GtkWidget *, struct file_transfer *);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
41
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
42 static void toggle(GtkWidget *w, int *m)
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
43 {
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
44 *m = !(*m);
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
45 }
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
46
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
47 static void free_ft(struct file_transfer *ft)
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
48 {
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
49 if (ft->window) { gtk_widget_destroy(ft->window); ft->window = NULL; }
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
50 if (ft->filename) g_free(ft->filename);
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
51 if (ft->user) g_free(ft->user);
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
52 if (ft->message) g_free(ft->message);
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
53 if (ft->ip) g_free(ft->ip);
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
54 if (ft->cookie) g_free(ft->cookie);
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
55 g_free(ft);
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
56 }
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
57
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
58 static void warn_callback(GtkWidget *widget, struct file_transfer *ft)
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
59 {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
60 show_warn_dialog(ft->user);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
61 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
62
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
63 static void info_callback(GtkWidget *widget, struct file_transfer *ft)
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
64 {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
65 serv_get_info(ft->user);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
66 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
67
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
68 static void cancel_callback(GtkWidget *widget, struct file_transfer *ft)
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
69 {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
70 if (ft->accepted) {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
71 return;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
72 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
73
260
325d9804df10 [gaim-migrate @ 270]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 253
diff changeset
74 serv_rvous_cancel(ft->user, ft->cookie, ft->UID);
325d9804df10 [gaim-migrate @ 270]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 253
diff changeset
75
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
76 free_ft(ft);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
77 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
78
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
79 static void accept_callback(GtkWidget *widget, struct file_transfer *ft)
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
80 {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
81 char *buf = g_malloc(BUF_LEN);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
82 char *fname = g_malloc(BUF_LEN);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
83 char *c;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
84
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
85 if (!strcmp(ft->UID, FILE_SEND_UID)) {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
86 c = ft->filename + strlen(ft->filename);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
87
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
88 while (c != ft->filename) {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
89 if (*c == '/' || *c == '\\') {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
90 strcpy(fname, c+1);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
91 break;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
92 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
93 c--;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
94 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
95
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
96 if (c == ft->filename)
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
97 strcpy(fname, ft->filename);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
98 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
99
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
100 gtk_widget_destroy(ft->window);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
101 ft->window = NULL;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
102
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
103 ft->window = gtk_file_selection_new("Gaim - Save As...");
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 gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(ft->window));
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
106
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
107 if (!strcmp(ft->UID, FILE_SEND_UID))
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
108 g_snprintf(buf, BUF_LEN - 1, "%s/%s", getenv("HOME"), fname);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
109 else
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
110 g_snprintf(buf, BUF_LEN - 1, "%s/", getenv("HOME"));
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
111 gtk_file_selection_set_filename(GTK_FILE_SELECTION(ft->window), buf);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
112
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
113 gtk_signal_connect(GTK_OBJECT(ft->window), "destroy",
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
114 GTK_SIGNAL_FUNC(cancel_callback), ft);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
115
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
116 if (!strcmp(ft->UID, FILE_SEND_UID)) {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
117 gtk_signal_connect(GTK_OBJECT(
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
118 GTK_FILE_SELECTION(ft->window)->ok_button),
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
119 "clicked", GTK_SIGNAL_FUNC(do_get_file), ft);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
120 } else {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
121 gtk_signal_connect(GTK_OBJECT(
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
122 GTK_FILE_SELECTION(ft->window)->ok_button),
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
123 "clicked", GTK_SIGNAL_FUNC(do_send_file), ft);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
124 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
125 gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(ft->window)->cancel_button),
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
126 "clicked", GTK_SIGNAL_FUNC(cancel_callback), ft);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
127
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
128 gtk_widget_show(ft->window);
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 g_free(buf);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
131 g_free(fname);
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
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
134 static int read_file_header(int fd, struct file_header *header) {
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
135 char buf[257];
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
136 int read_rv = read(fd, buf, 256);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
137 memcpy(&header->magic, buf + 0, 4);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
138 memcpy(&header->hdrlen, buf + 4, 2);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
139 memcpy(&header->hdrtype, buf + 6, 2);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
140 memcpy(&header->bcookie, buf + 8, 8);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
141 memcpy(&header->encrypt, buf + 16, 2);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
142 memcpy(&header->compress, buf + 18, 2);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
143 memcpy(&header->totfiles, buf + 20, 2);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
144 memcpy(&header->filesleft, buf + 22, 2);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
145 memcpy(&header->totparts, buf + 24, 2);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
146 memcpy(&header->partsleft, buf + 26, 2);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
147 memcpy(&header->totsize, buf + 28, 4);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
148 memcpy(&header->size, buf + 32, 4);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
149 memcpy(&header->modtime, buf + 36, 4);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
150 memcpy(&header->checksum, buf + 40, 4);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
151 memcpy(&header->rfrcsum, buf + 44, 4);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
152 memcpy(&header->rfsize, buf + 48, 4);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
153 memcpy(&header->cretime, buf + 52, 4);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
154 memcpy(&header->rfcsum, buf + 56, 4);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
155 memcpy(&header->nrecvd, buf + 60, 4);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
156 memcpy(&header->recvcsum, buf + 64, 4);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
157 memcpy(&header->idstring, buf + 68, 32);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
158 memcpy(&header->flags, buf + 100, 1);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
159 memcpy(&header->lnameoffset, buf + 101, 1);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
160 memcpy(&header->lsizeoffset, buf + 102, 1);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
161 memcpy(&header->dummy, buf + 103, 69);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
162 memcpy(&header->macfileinfo, buf + 172, 16);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
163 memcpy(&header->nencode, buf + 188, 2);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
164 memcpy(&header->nlanguage, buf + 190, 2);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
165 memcpy(&header->name, buf + 192, 64);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
166 return read_rv;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
167 }
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
168
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
169 static int write_file_header(int fd, struct file_header *header) {
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
170 char buf[257];
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
171 memcpy(buf + 0, &header->magic, 4);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
172 memcpy(buf + 4, &header->hdrlen, 2);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
173 memcpy(buf + 6, &header->hdrtype, 2);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
174 memcpy(buf + 8, &header->bcookie, 8);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
175 memcpy(buf + 16, &header->encrypt, 2);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
176 memcpy(buf + 18, &header->compress, 2);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
177 memcpy(buf + 20, &header->totfiles, 2);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
178 memcpy(buf + 22, &header->filesleft, 2);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
179 memcpy(buf + 24, &header->totparts, 2);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
180 memcpy(buf + 26, &header->partsleft, 2);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
181 memcpy(buf + 28, &header->totsize, 4);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
182 memcpy(buf + 32, &header->size, 4);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
183 memcpy(buf + 36, &header->modtime, 4);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
184 memcpy(buf + 40, &header->checksum, 4);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
185 memcpy(buf + 44, &header->rfrcsum, 4);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
186 memcpy(buf + 48, &header->rfsize, 4);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
187 memcpy(buf + 52, &header->cretime, 4);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
188 memcpy(buf + 56, &header->rfcsum, 4);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
189 memcpy(buf + 60, &header->nrecvd, 4);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
190 memcpy(buf + 64, &header->recvcsum, 4);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
191 memcpy(buf + 68, &header->idstring, 32);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
192 memcpy(buf + 100, &header->flags, 1);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
193 memcpy(buf + 101, &header->lnameoffset, 1);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
194 memcpy(buf + 102, &header->lsizeoffset, 1);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
195 memcpy(buf + 103, &header->dummy, 69);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
196 memcpy(buf + 172, &header->macfileinfo, 16);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
197 memcpy(buf + 188, &header->nencode, 2);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
198 memcpy(buf + 190, &header->nlanguage, 2);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
199 memcpy(buf + 192, &header->name, 64);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
200 return write(fd, buf, 256);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
201 }
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
202
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
203 static void do_get_file(GtkWidget *w, struct file_transfer *ft)
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
204 {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
205 char *send = g_malloc(256);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
206 char *file = gtk_file_selection_get_filename(GTK_FILE_SELECTION(ft->window));
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
207 char *buf;
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
208 struct file_header *header = g_new0(struct file_header, 1);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
209 int read_rv;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
210 guint32 rcv;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
211 char *c;
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
212 int cont = 1;
212
89c9334d3484 [gaim-migrate @ 222]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 211
diff changeset
213 GtkWidget *fw = NULL, *fbar = NULL, *label = NULL;
89c9334d3484 [gaim-migrate @ 222]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 211
diff changeset
214 GtkWidget *button = NULL, *pct = NULL;
211
2042a38da38b [gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 210
diff changeset
215
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
216 if (!(ft->f = fopen(file,"w"))) {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
217 buf = g_malloc(BUF_LONG);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
218 g_snprintf(buf, BUF_LONG / 2, "Error writing file %s", file);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
219 do_error_dialog(buf, "Error");
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
220 g_free(buf);
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
221 g_free(header);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
222 ft->accepted = 0;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
223 accept_callback(NULL, ft);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
224 return;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
225 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
226
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
227 ft->accepted = 1;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
228
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
229 gtk_widget_destroy(ft->window);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
230 ft->window = NULL;
260
325d9804df10 [gaim-migrate @ 270]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 253
diff changeset
231 serv_rvous_accept(ft->user, ft->cookie, ft->UID);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
232 g_free(send);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
233
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
234
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
235 ft->fd = connect_address(inet_addr(ft->ip), ft->port);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
236
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
237 if (ft->fd <= -1) {
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
238 g_free(header);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
239 fclose(ft->f);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
240 free_ft(ft);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
241 return;
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
242 }
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
243
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
244 read_rv = read_file_header(ft->fd, header);
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
245 if(read_rv < 0) {
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
246 close(ft->fd);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
247 fclose(ft->f);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
248 g_free(header);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
249 free_ft(ft);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
250 return;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
251 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
252
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
253 sprintf(debug_buff, "header length %d\n", header->hdrlen);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
254 debug_print(debug_buff);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
255
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
256 header->hdrtype = 0x202;
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
257
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
258 buf = frombase64(ft->cookie);
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
259 memcpy(header->bcookie, buf, 8);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
260 g_free(buf);
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
261 snprintf(header->idstring, 32, "Gaim");
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
262 header->encrypt = 0; header->compress = 0;
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
263 header->totparts = 1; header->partsleft = 1;
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
264
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
265 sprintf(debug_buff, "sending confirmation\n");
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
266 debug_print(debug_buff);
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
267 write_file_header(ft->fd, header);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
268
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
269 buf = g_malloc(2048);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
270 rcv = 0;
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
271
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
272 fw = gtk_dialog_new();
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
273 buf = g_malloc(2048);
212
89c9334d3484 [gaim-migrate @ 222]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 211
diff changeset
274 snprintf(buf, 2048, "Receiving %s from %s", ft->filename, ft->user);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
275 label = gtk_label_new(buf);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
276 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
277 gtk_widget_show(label);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
278 fbar = gtk_progress_bar_new();
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
279 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
280 gtk_widget_show(fbar);
212
89c9334d3484 [gaim-migrate @ 222]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 211
diff changeset
281 pct = gtk_label_new("0 %");
89c9334d3484 [gaim-migrate @ 222]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 211
diff changeset
282 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
283 gtk_widget_show(pct);
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
284 button = gtk_button_new_with_label("Cancel");
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
285 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
286 gtk_widget_show(button);
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
287 gtk_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc)toggle, &cont);
212
89c9334d3484 [gaim-migrate @ 222]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 211
diff changeset
288 gtk_window_set_title(GTK_WINDOW(fw), "Gaim - File Transfer");
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
289 gtk_widget_realize(fw);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
290 aol_icon(fw->window);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
291 gtk_widget_show(fw);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
292
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
293 sprintf(debug_buff, "Receiving %s from %s (%d bytes)\n", ft->filename,
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
294 ft->user, ft->size);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
295 debug_print(debug_buff);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
296
218
1a5ee1f8b39e [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
297 fcntl(ft->fd, F_SETFL, O_NONBLOCK);
1a5ee1f8b39e [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
298
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
299 while (rcv != ft->size && cont) {
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
300 int i;
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
301 float pcnt = ((float)rcv)/((float)ft->size);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
302 int remain = ft->size - rcv > 1024 ? 1024 : ft->size - rcv;
218
1a5ee1f8b39e [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
303 read_rv = read(ft->fd, buf, remain);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
304 if(read_rv < 0) {
218
1a5ee1f8b39e [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
305 if (errno == EWOULDBLOCK) {
1a5ee1f8b39e [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
306 while(gtk_events_pending())
1a5ee1f8b39e [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
307 gtk_main_iteration();
1a5ee1f8b39e [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
308 continue;
1a5ee1f8b39e [gaim-migrate @ 228]
Rob Flynn <gaim@robflynn.com>
parents: 217
diff changeset
309 }
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
310 gtk_widget_destroy(fw);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
311 fw = NULL;
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
312 fclose(ft->f);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
313 close(ft->fd);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
314 g_free(buf);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
315 g_free(header);
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
316 free_ft(ft);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
317 return;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
318 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
319 rcv += read_rv;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
320 for (i = 0; i < read_rv; i++)
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
321 fprintf(ft->f, "%c", buf[i]);
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
322 gtk_progress_bar_update(GTK_PROGRESS_BAR(fbar), pcnt);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
323 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
324 gtk_label_set_text(GTK_LABEL(pct), buf);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
325 while(gtk_events_pending())
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
326 gtk_main_iteration();
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
327 }
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
328 fclose(ft->f);
201
d9a5f7b1d500 [gaim-migrate @ 211]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 200
diff changeset
329 gtk_widget_destroy(fw);
d9a5f7b1d500 [gaim-migrate @ 211]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 200
diff changeset
330 fw = NULL;
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
331
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
332 if (!cont) {
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
333 char *tmp = frombase64(ft->cookie);
260
325d9804df10 [gaim-migrate @ 270]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 253
diff changeset
334 serv_rvous_cancel(ft->user, tmp, ft->UID);
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
335 close(ft->fd);
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
336 free_ft(ft);
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
337 g_free(header);
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
338 return;
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
339 }
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
340
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
341 sprintf(debug_buff, "Download complete.\n");
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
342 debug_print(debug_buff);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
343
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
344 header->hdrtype = 0x402;
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
345 header->totparts = 0; header->partsleft = 0;
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
346 header->flags = 0;
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
347 header->recvcsum = header->checksum;
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
348 header->nrecvd = header->totsize;
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
349 write_file_header(ft->fd, header);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
350 close(ft->fd);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
351
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
352 g_free(buf);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
353 g_free(header);
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
354 free_ft(ft);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
355 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
356
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
357 static void do_send_file(GtkWidget *w, struct file_transfer *ft) {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
358 char *send = g_malloc(256);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
359 char *file = g_strdup(gtk_file_selection_get_filename(GTK_FILE_SELECTION(ft->window)));
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
360 char *buf;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
361 int read_rv;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
362 struct file_header *fhdr = g_new0(struct file_header, 1);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
363 struct sockaddr_in sin;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
364 guint32 rcv;
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
365 int cont;
203
4fa63e83406b [gaim-migrate @ 213]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 202
diff changeset
366 char *c;
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
367 struct stat st;
204
579e59e66381 [gaim-migrate @ 214]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 203
diff changeset
368 struct tm *fortime;
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
369 GtkWidget *fw = NULL, *fbar = NULL, *label = NULL;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
370 GtkWidget *button = NULL, *pct = NULL;
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
371
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
372 stat(file, &st);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
373 if (!(ft->f = fopen(file, "r"))) {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
374 buf = g_malloc(BUF_LONG);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
375 g_snprintf(buf, BUF_LONG / 2, "Error reading file %s", file);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
376 do_error_dialog(buf, "Error");
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
377 g_free(buf);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
378 ft->accepted = 0;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
379 accept_callback(NULL, ft);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
380 free_ft(ft);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
381 return;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
382 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
383
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
384 ft->accepted = 1;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
385
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
386 gtk_widget_destroy(ft->window);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
387 ft->window = NULL;
260
325d9804df10 [gaim-migrate @ 270]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 253
diff changeset
388 serv_rvous_accept(ft->user, ft->cookie, ft->UID);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
389 g_free(send);
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
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
392
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
393 ft->fd = connect_address(inet_addr(ft->ip), ft->port);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
394
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
395 if (ft->fd <= -1) {
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
396 g_free(fhdr);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
397 free_ft(ft);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
398 return;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
399 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
400
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
401 /* here's where we differ from do_get_file */
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
402 /* 1. build/send header
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
403 * 2. receive header
201
d9a5f7b1d500 [gaim-migrate @ 211]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 200
diff changeset
404 * 3. send listing file
d9a5f7b1d500 [gaim-migrate @ 211]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 200
diff changeset
405 * 4. receive header
d9a5f7b1d500 [gaim-migrate @ 211]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 200
diff changeset
406 *
d9a5f7b1d500 [gaim-migrate @ 211]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 200
diff changeset
407 * then we need to wait to actually send the file.
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
408 *
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
409 * 5. either (receive header) or (remote host cancels)
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
410 * 6. if received header, send file
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
411 * 7. ? haven't gotten this far yet
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
412 */
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
413
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
414 /* 1. build/send header */
203
4fa63e83406b [gaim-migrate @ 213]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 202
diff changeset
415 c = file + strlen(file);
4fa63e83406b [gaim-migrate @ 213]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 202
diff changeset
416 while (*(c - 1) != '/') c--;
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
417 buf = frombase64(ft->cookie);
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
418 sprintf(debug_buff, "Building header to send %s (cookie: %s)\n", file, buf);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
419 debug_print(debug_buff);
211
2042a38da38b [gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 210
diff changeset
420 fhdr->magic[0] = 'O'; fhdr->magic[1] = 'F';
2042a38da38b [gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 210
diff changeset
421 fhdr->magic[2] = 'T'; fhdr->magic[3] = '2';
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
422 fhdr->hdrlen = htons(256);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
423 fhdr->hdrtype = htons(0x1108);
202
bcc54ee34531 [gaim-migrate @ 212]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 201
diff changeset
424 snprintf(fhdr->bcookie, 8, "%s", buf);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
425 g_free(buf);
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
426 fhdr->encrypt = 0;
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
427 fhdr->compress = 0;
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
428 fhdr->totfiles = htons(1);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
429 fhdr->filesleft = htons(1);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
430 fhdr->totparts = htons(1);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
431 fhdr->partsleft = htons(1);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
432 fhdr->totsize = htonl((long)st.st_size); /* combined size of all files */
211
2042a38da38b [gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 210
diff changeset
433 /* size = strlen("mm/dd/yyyy hh:mm sizesize 'name'\r\n") */
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
434 fhdr->size = htonl(28 + strlen(c)); /* size of listing.txt */
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
435 fhdr->modtime = htonl(time(NULL)); /* time since UNIX epoch */
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
436 fhdr->checksum = htonl(0x89f70000); /* ? i don't think this matters */
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
437 fhdr->rfrcsum = 0;
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
438 fhdr->rfsize = 0;
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
439 fhdr->cretime = 0;
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
440 fhdr->rfcsum = 0;
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
441 fhdr->nrecvd = 0;
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
442 fhdr->recvcsum = 0;
211
2042a38da38b [gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 210
diff changeset
443 snprintf(fhdr->idstring, 32, "OFT_Windows ICBMFT V1.1 32");
205
5531861bf3f5 [gaim-migrate @ 215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 204
diff changeset
444 fhdr->flags = 0x02; /* don't ask me why */
202
bcc54ee34531 [gaim-migrate @ 212]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 201
diff changeset
445 fhdr->lnameoffset = 0x1A; /* ? still no clue */
bcc54ee34531 [gaim-migrate @ 212]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 201
diff changeset
446 fhdr->lsizeoffset = 0x10; /* whatever */
205
5531861bf3f5 [gaim-migrate @ 215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 204
diff changeset
447 memset(fhdr->dummy, 0, 69);
5531861bf3f5 [gaim-migrate @ 215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 204
diff changeset
448 memset(fhdr->macfileinfo, 0, 16);
200
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
449 fhdr->nencode = 0;
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
450 fhdr->nlanguage = 0;
bc117fbcf527 [gaim-migrate @ 210]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 198
diff changeset
451 snprintf(fhdr->name, 64, "listing.txt");
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
452 read_rv = write_file_header(ft->fd, fhdr);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
453 if (read_rv <= -1) {
210
ec0686b3b03f [gaim-migrate @ 220]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 205
diff changeset
454 sprintf(debug_buff, "Couldn't write opening header\n");
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
455 debug_print(debug_buff);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
456 g_free(fhdr);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
457 close(ft->fd);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
458 free_ft(ft);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
459 return;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
460 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
461
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
462 /* 2. receive header */
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
463 sprintf(debug_buff, "Receiving header\n");
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
464 debug_print(debug_buff);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
465 read_rv = read_file_header(ft->fd, fhdr);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
466 if (read_rv <= -1) {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
467 sprintf(debug_buff, "Couldn't read header\n");
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
468 debug_print(debug_buff);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
469 g_free(fhdr);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
470 close(ft->fd);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
471 free_ft(ft);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
472 return;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
473 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
474
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
475 /* 3. qend listing file */
203
4fa63e83406b [gaim-migrate @ 213]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 202
diff changeset
476 /* mm/dd/yyyy hh:mm sizesize name.ext\r\n */
4fa63e83406b [gaim-migrate @ 213]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 202
diff changeset
477 /* creation date ^ */
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
478 sprintf(debug_buff, "Sending file\n");
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
479 debug_print(debug_buff);
204
579e59e66381 [gaim-migrate @ 214]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 203
diff changeset
480 buf = g_malloc(ft->size + 1);
579e59e66381 [gaim-migrate @ 214]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 203
diff changeset
481 fortime = localtime(&st.st_ctime);
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
482 snprintf(buf, ntohl(fhdr->size) + 1, "%2d/%2d/%4d %2d:%2d %8ld %s\r\n",
204
579e59e66381 [gaim-migrate @ 214]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 203
diff changeset
483 fortime->tm_mon + 1, fortime->tm_mday, fortime->tm_year + 1900,
579e59e66381 [gaim-migrate @ 214]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 203
diff changeset
484 fortime->tm_hour + 1, fortime->tm_min + 1,
579e59e66381 [gaim-migrate @ 214]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 203
diff changeset
485 st.st_size, c);
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
486 sprintf(debug_buff, "Sending listing.txt (%ld bytes) to %s\n",
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
487 ntohl(fhdr->size) + 1, ft->user);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
488 debug_print(debug_buff);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
489
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
490 read_rv = write(ft->fd, buf, ntohl(fhdr->size));
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
491 if (read_rv <= -1) {
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
492 sprintf(debug_buff, "Could not send file, wrote %d\n", rcv);
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
493 debug_print(debug_buff);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
494 g_free(buf);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
495 g_free(fhdr);
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
496 close(ft->fd);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
497 free_ft(ft);
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
498 return;
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
499 }
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
500 g_free(buf);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
501
201
d9a5f7b1d500 [gaim-migrate @ 211]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 200
diff changeset
502 /* 4. receive header */
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
503 sprintf(debug_buff, "Receiving closing header\n");
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
504 debug_print(debug_buff);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
505 read_rv = read_file_header(ft->fd, fhdr);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
506 if (read_rv <= -1) {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
507 sprintf(debug_buff, "Couldn't read closing header\n");
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
508 debug_print(debug_buff);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
509 g_free(fhdr);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
510 close(ft->fd);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
511 free_ft(ft);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
512 return;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
513 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
514
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
515 /* 5. wait to see if we're sending it */
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
516 fcntl(ft->fd, F_SETFL, O_NONBLOCK);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
517 rcv = 0;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
518 while (rcv != 256) {
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
519 int i;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
520 read_rv = read_file_header(ft->fd, fhdr);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
521 if(read_rv < 0) {
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
522 if (errno == EWOULDBLOCK) {
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
523 while(gtk_events_pending())
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
524 gtk_main_iteration();
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
525 continue;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
526 }
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
527 fclose(ft->f);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
528 close(ft->fd);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
529 g_free(fhdr);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
530 free_ft(ft);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
531 return;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
532 }
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
533 rcv += read_rv;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
534 }
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
535
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
536 /* 6. send the file */
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
537 fw = gtk_dialog_new();
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
538 buf = g_malloc(2048);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
539 snprintf(buf, 2048, "Sending %s to %s", fhdr->name, ft->user);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
540 label = gtk_label_new(buf);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
541 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
542 gtk_widget_show(label);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
543 fbar = gtk_progress_bar_new();
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
544 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
545 gtk_widget_show(fbar);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
546 pct = gtk_label_new("0 %");
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
547 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(fw)->action_area), pct, 0, 0, 5);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
548 gtk_widget_show(pct);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
549 button = gtk_button_new_with_label("Cancel");
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
550 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
551 gtk_widget_show(button);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
552 gtk_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc)toggle, &cont);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
553 gtk_window_set_title(GTK_WINDOW(fw), "Gaim - File Transfer");
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
554 gtk_widget_realize(fw);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
555 aol_icon(fw->window);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
556 gtk_widget_show(fw);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
557
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
558 sprintf(debug_buff, "Sending %s to %s (%d bytes)\n", fhdr->name,
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
559 ft->user, fhdr->totsize);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
560 debug_print(debug_buff);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
561
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
562 rcv = 0; cont = 1;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
563 while (rcv != fhdr->totsize && cont) {
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
564 int i;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
565 float pcnt = ((float)rcv)/((float)fhdr->totsize);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
566 int remain = fhdr->totsize - rcv > 1024 ? 1024 : fhdr->totsize - rcv;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
567 for (i = 0; i < 1024; i++)
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
568 fscanf(ft->f, "%c", &buf[i]);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
569 read_rv = write(ft->fd, buf, remain);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
570 if (read_rv < 0) {
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
571 if (errno == EWOULDBLOCK) {
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
572 while (gtk_events_pending())
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
573 gtk_main_iteration();
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
574 continue;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
575 }
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
576 fclose(ft->f);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
577 gtk_widget_destroy(fw);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
578 fw = NULL;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
579 fclose(ft->f);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
580 close(ft->fd);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
581 g_free(buf);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
582 g_free(fhdr);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
583 free_ft(ft);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
584 return;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
585 }
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
586 rcv += read_rv;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
587 gtk_progress_bar_update(GTK_PROGRESS_BAR(fbar), pcnt);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
588 sprintf(buf, "%d / %d K (%2.0f %%)", rcv/1024, ft->size/1024, 100*pcnt);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
589 gtk_label_set_text(GTK_LABEL(pct), buf);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
590 while(gtk_events_pending())
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
591 gtk_main_iteration();
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
592 }
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
593 fclose(ft->f);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
594 gtk_widget_destroy(fw);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
595 fw = NULL;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
596
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
597 if (!cont) {
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
598 char *tmp = frombase64(ft->cookie);
260
325d9804df10 [gaim-migrate @ 270]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 253
diff changeset
599 serv_rvous_cancel(ft->user, tmp, ft->UID);
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
600 g_free(buf);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
601 close(ft->fd);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
602 free_ft(ft);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
603 g_free(fhdr);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
604 return;
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
605 }
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
606
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
607 sprintf(debug_buff, "Upload complete.\n");
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
608 debug_print(debug_buff);
217
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
609
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
610 /* 7. receive closing header */
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
611
fba779cc01f5 [gaim-migrate @ 227]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 216
diff changeset
612 /* done */
221
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
613 close(ft->fd);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
614 g_free(buf);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
615 g_free(fhdr);
b2f9f629525e [gaim-migrate @ 231]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 218
diff changeset
616 free_ft(ft);
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
617 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
618
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
619 void accept_file_dialog(struct file_transfer *ft)
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
620 {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
621 GtkWidget *accept, *info, *warn, *cancel;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
622 GtkWidget *label;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
623 GtkWidget *vbox, *bbox;
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
624 char buf[1024];
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
625
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
626
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
627 ft->window = gtk_window_new(GTK_WINDOW_DIALOG);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
628
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
629 accept = gtk_button_new_with_label("Accept");
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
630 info = gtk_button_new_with_label("Info");
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
631 warn = gtk_button_new_with_label("Warn");
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
632 cancel = gtk_button_new_with_label("Cancel");
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
633
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
634 bbox = gtk_hbox_new(TRUE, 10);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
635 vbox = gtk_vbox_new(FALSE, 5);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
636
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
637 gtk_widget_show(accept);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
638 gtk_widget_show(info);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
639 gtk_widget_show(warn);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
640 gtk_widget_show(cancel);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
641
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
642 gtk_box_pack_start(GTK_BOX(bbox), accept, TRUE, TRUE, 10);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
643 gtk_box_pack_start(GTK_BOX(bbox), info, TRUE, TRUE, 10);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
644 gtk_box_pack_start(GTK_BOX(bbox), warn, TRUE, TRUE, 10);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
645 gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 10);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
646
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
647 if (!strcmp(ft->UID, FILE_SEND_UID)) {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
648 g_snprintf(buf, sizeof(buf), "%s requests you to accept the file: %s (%d bytes)",
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
649 ft->user, ft->filename, ft->size);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
650 } else {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
651 g_snprintf(buf, sizeof(buf), "%s requests you to send them a file",
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
652 ft->user);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
653 }
211
2042a38da38b [gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 210
diff changeset
654 if (ft->message)
2042a38da38b [gaim-migrate @ 221]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 210
diff changeset
655 strncat(buf, ft->message, sizeof(buf) - strlen(buf));
198
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
656 label = gtk_label_new(buf);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
657 gtk_widget_show(label);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
658 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 5);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
659 gtk_box_pack_start(GTK_BOX(vbox), bbox, TRUE, TRUE, 5);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
660
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
661 gtk_window_set_title(GTK_WINDOW(ft->window), "Gaim - File Transfer?");
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
662 gtk_window_set_focus(GTK_WINDOW(ft->window), accept);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
663 gtk_container_add(GTK_CONTAINER(ft->window), vbox);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
664 gtk_container_border_width(GTK_CONTAINER(ft->window), 10);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
665 gtk_widget_show(vbox);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
666 gtk_widget_show(bbox);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
667 gtk_widget_realize(ft->window);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
668 aol_icon(ft->window->window);
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 gtk_widget_show(ft->window);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
671
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
672
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
673 gtk_signal_connect(GTK_OBJECT(accept), "clicked",
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
674 GTK_SIGNAL_FUNC(accept_callback), ft);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
675 gtk_signal_connect(GTK_OBJECT(cancel), "clicked",
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
676 GTK_SIGNAL_FUNC(cancel_callback), ft);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
677 gtk_signal_connect(GTK_OBJECT(warn), "clicked",
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
678 GTK_SIGNAL_FUNC(warn_callback), ft);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
679 gtk_signal_connect(GTK_OBJECT(info), "clicked",
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
680 GTK_SIGNAL_FUNC(info_callback), ft);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
681
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
682
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
683 if (ft->message) {
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
684 /* we'll do this later
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
685 while(gtk_events_pending())
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
686 gtk_main_iteration();
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
687 html_print(text, ft->message);
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
688 */
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
689 }
73e9a0bfff62 [gaim-migrate @ 208]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
690 }