annotate src/rvous.c @ 221:b2f9f629525e

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