annotate src/text/gftp-text.c @ 58:c01d91c10f6c

2002-11-20 Brian Masney <masneyb@gftp.org> * lib/protocols.c lib/gftp.h - added gftp_get_line(), gftp_read(), gftp_write(), gftp_writefmt(), and gftp_set_sockblocking() functions. Added struct_gftp_getline_buffer for gftp_get_line function() * lib/cache.c lib/gftp.h lib/local.c lib/misc.c lib/protocols.c lib/rfc2068.c lib/rfc959.c lib/ssh.c lib/sshv2.c - *_get_file() returns off_t instead of long. *_{get,put}_next_file_chunk returns ssize_t instead of size_t. Added *_set_config_options function to gftp_request structure and protocol files. Use the new network functions documented above. Convert usage of ANSI C IO (FILE *) to standard BSD sockets so that I can use timeouts properly with select * lib/misc.c (ssh_start_login_sequence) - use gftp_set_sockblock(), gftp_read() and gftp_write() functions * lib/protocols.c - move some protocol specific code to the protocol specific files * lib/local.c - log succesful messages to gftp_logging_misc instead of gftp_logging_error * lib/cache.c - log some more error conditions to the user * lib/rfc959.c - added rfc959_getcwd(). In, rfc959_accept_active_connection(), set set socket to blocking mode before calling accept() * src/text/gftk-text.c - If we get no files in gftp_text_ls(), return instead of segfaulting * src/gtk/gftp-gtk.c - expand the port field in the toolbar to be 45 pixels wide * src/text/gftp-text.c src/gtk/misc-gtk.c src/gtk/transfer.c src/gtk/view_dialog.c - changes for conversion of request->{sock,data} from ANSI C IO (FILE *) to standard BSD sockets
author masneyb
date Thu, 21 Nov 2002 00:33:51 +0000
parents a12bcbc2fce4
children aa971a4bb16f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1 /*****************************************************************************/
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
2 /* gftp-text.c - text port of gftp */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
3 /* Copyright (C) 1998-2002 Brian Masney <masneyb@gftp.org> */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
4 /* */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
5 /* This program is free software; you can redistribute it and/or modify */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
6 /* it under the terms of the GNU General Public License as published by */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
7 /* the Free Software Foundation; either version 2 of the License, or */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
8 /* (at your option) any later version. */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
9 /* */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
10 /* This program is distributed in the hope that it will be useful, */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
11 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
12 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
13 /* GNU General Public License for more details. */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
14 /* */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
15 /* You should have received a copy of the GNU General Public License */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
16 /* along with this program; if not, write to the Free Software */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
17 /* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
18 /*****************************************************************************/
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
19
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
20 #include "gftp-text.h"
33
c8ec7877432e 2002-10-06 Brian Masney <masneyb@gftp.org>
masneyb
parents: 16
diff changeset
21 static const char cvsid[] = "$Id$";
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
22
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
23 static gftp_request * gftp_text_locreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
24 static gftp_request * gftp_text_remreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
25 static volatile int cancel = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
26 static int configuration_changed = 0,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
27 number_commands = 30;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
28
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
29 struct _gftp_text_methods gftp_text_methods[] = {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
30 {N_("about"), 2, gftp_text_about, NULL,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
31 N_("Shows gFTP information"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
32 {N_("ascii"), 2, gftp_text_ascii, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
33 N_("Sets the current file transfer mode to Ascii (only for FTP)"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
34 {N_("binary"), 1, gftp_text_binary, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
35 N_("Sets the current file transfer mode to Binary (only for FTP)"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
36 {N_("cd"), 2, gftp_text_cd, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
37 N_("Changes the remote working directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
38 {N_("chdir"), 3, gftp_text_cd, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
39 N_("Changes the remote working directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
40 {N_("chmod"), 3, gftp_text_chmod, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
41 N_("Changes the permissions of a remote file"), NULL},
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
42 {N_("clear"), 3, gftp_text_clear, NULL,
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
43 N_("Available options: cache"), gftp_text_clear_show_subhelp},
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
44 {N_("close"), 3, gftp_text_close, &gftp_text_remreq,
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
45 N_("Disconnects from the remote site"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
46 {N_("delete"), 1, gftp_text_delete, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
47 N_("Removes a remote file"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
48 {N_("get"), 1, gftp_text_mget_file, NULL,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
49 N_("Downloads remote file(s)"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
50 {N_("help"), 1, gftp_text_help, NULL,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
51 N_("Shows this help screen"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
52 {N_("lcd"), 3, gftp_text_cd, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
53 N_("Changes the local working directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
54 {N_("lchdir"), 4, gftp_text_cd, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
55 N_("Changes the local working directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
56 {N_("lchmod"), 4, gftp_text_chmod, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
57 N_("Changes the permissions of a local file"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
58 {N_("ldelete"), 2, gftp_text_delete, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
59 N_("Removes a local file"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
60 {N_("lls"), 2, gftp_text_ls, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
61 N_("Shows the directory listing for the current local directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
62 {N_("lmkdir"), 2, gftp_text_mkdir, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
63 N_("Creates a local directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
64 {N_("lpwd"), 2, gftp_text_pwd, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
65 N_("Show current local directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
66 {N_("lrename"), 3, gftp_text_rename, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
67 N_("Rename a local file"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
68 {N_("lrmdir"), 3, gftp_text_rmdir, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
69 N_("Remove a local directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
70 {N_("ls"), 2, gftp_text_ls, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
71 N_("Shows the directory listing for the current remote directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
72 {N_("mget"), 2, gftp_text_mget_file, NULL,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
73 N_("Downloads remote file(s)"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
74 {N_("mkdir"), 2, gftp_text_mkdir, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
75 N_("Creates a remote directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
76 {N_("mput"), 2, gftp_text_mput_file, NULL,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
77 N_("Uploads local file(s)"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
78 {N_("open"), 1, gftp_text_open, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
79 N_("Opens a connection to a remote site"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
80 {N_("put"), 2, gftp_text_mput_file, NULL,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
81 N_("Uploads local file(s)"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
82 {N_("pwd"), 2, gftp_text_pwd, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
83 N_("Show current remote directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
84 {N_("quit"), 1, gftp_text_quit, NULL,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
85 N_("Exit from gFTP"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
86 {N_("rename"), 2, gftp_text_rename, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
87 N_("Rename a remote file"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
88 {N_("rmdir"), 2, gftp_text_rmdir, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
89 N_("Remove a remote directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
90 {N_("set"), 1, gftp_text_set, NULL,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
91 N_("Show configuration file variables. You can also set variables by set var=val"), gftp_text_set_show_subhelp},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
92 {NULL, 0, NULL, NULL, NULL}};
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
93
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
94 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
95 main (int argc, char **argv)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
96 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
97 gftp_request * request;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
98 size_t len, cmdlen;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
99 char *pos, *stpos;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
100 int i;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
101 #ifdef HAVE_LIBREADLINE
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
102 char *tempstr, prompt[20];
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
103 #else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
104 char tempstr[512];
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
105 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
106
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
107 #ifdef HAVE_GETTEXT
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
108 setlocale (LC_ALL, "");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
109 bindtextdomain ("gftp", LOCALE_DIR);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
110 textdomain ("gftp");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
111 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
112
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
113 signal (SIGCHLD, sig_child);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
114 signal (SIGPIPE, SIG_IGN);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
115
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
116 gftp_read_config_file (argv, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
117
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
118 /* SSH doesn't support reading the password with askpass via the command
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
119 line */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
120 ssh_use_askpass = sshv2_use_sftp_subsys = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
121
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
122 if (gftp_parse_command_line (&argc, &argv) != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
123 exit (0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
124
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
125 gftp_text_remreq = gftp_request_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
126 gftp_text_remreq->logging_function = gftp_text_log;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
127
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
128 gftp_text_locreq = gftp_request_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
129 gftp_text_locreq->logging_function = gftp_text_log;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
130 gftp_protocols[GFTP_LOCAL_NUM].init (gftp_text_locreq);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
131 if (startup_directory != NULL && *startup_directory != '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
132 gftp_set_directory (gftp_text_locreq, startup_directory);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
133 gftp_connect (gftp_text_locreq);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
134
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
135 gftp_text_log (gftp_logging_misc, NULL, "%s, Copyright (C) 1998-2002 Brian Masney <", version);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
136 gftp_text_log (gftp_logging_recv, NULL, "masneyb@gftp.org");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
137 gftp_text_log (gftp_logging_misc, NULL, _(">.\nIf you have any questions, comments, or suggestions about this program, please feel free to email them to me. You can always find out the latest news about gFTP from my website at http://www.gftp.org/\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
138 gftp_text_log (gftp_logging_misc, NULL, "\n");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
139 gftp_text_log (gftp_logging_misc, NULL, _("gFTP comes with ABSOLUTELY NO WARRANTY; for details, see the COPYING file. This is free software, and you are welcome to redistribute it under certain conditions; for details, see the COPYING file\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
140 gftp_text_log (gftp_logging_misc, NULL, "\n");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
141
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
142 if (argc == 3 && strcmp (argv[1], "-d") == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
143 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
144 if ((pos = strrchr (argv[2], '/')) != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
145 *pos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
146 gftp_text_open (gftp_text_remreq, argv[2], NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
147
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
148 if (pos != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
149 *pos = '/';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
150
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
151 gftp_text_mget_file (gftp_text_remreq, pos + 1, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
152 exit (0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
153 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
154 else if (argc == 2)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
155 gftp_text_open (gftp_text_remreq, argv[1], NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
156
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
157 #ifdef HAVE_LIBREADLINE
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
158 g_snprintf (prompt, sizeof (prompt), "%sftp%s> ", COLOR_BLUE, COLOR_DEFAULT);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
159 while ((tempstr = readline (prompt)))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
160 #else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
161 printf ("%sftp%s> ", COLOR_BLUE, COLOR_DEFAULT);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
162 while (fgets (tempstr, sizeof (tempstr), stdin) != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
163 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
164 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
165 len = strlen (tempstr);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
166 if (tempstr[len - 1] == '\n')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
167 tempstr[--len] = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
168 if (tempstr[len - 1] == '\r')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
169 tempstr[--len] = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
170
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
171 for (stpos = tempstr; *stpos == ' '; stpos++);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
172
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
173 for (pos = tempstr + len - 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
174 (*pos == ' ' || *pos == '\t') && pos > tempstr;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
175 pos--)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
176 *pos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
177
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
178 if (*stpos == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
179 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
180 #ifndef HAVE_LIBREADLINE
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
181 printf ("%sftp%s> ", COLOR_BLUE, COLOR_DEFAULT);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
182 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
183 continue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
184 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
185
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
186 #ifdef HAVE_LIBREADLINE
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
187 add_history (tempstr);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
188 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
189
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
190 if ((pos = strchr (stpos, ' ')) != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
191 *pos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
192 cmdlen = strlen (stpos);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
193
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
194 for (i=0; gftp_text_methods[i].command != NULL; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
195 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
196 if (strcmp (gftp_text_methods[i].command, stpos) == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
197 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
198 else if (cmdlen >= gftp_text_methods[i].minlen &&
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
199 strncmp (gftp_text_methods[i].command, stpos, cmdlen) == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
200 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
201 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
202
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
203 if (pos != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
204 pos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
205 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
206 pos = "";
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
207
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
208 if (gftp_text_methods[i].command != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
209 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
210 if (gftp_text_methods[i].request != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
211 request = *gftp_text_methods[i].request;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
212 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
213 request = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
214
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
215 if (gftp_text_methods[i].func (request, pos, NULL) == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
216 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
217 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
218 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
219 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
220 _("Error: Command not recognized\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
221
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
222 #ifdef HAVE_LIBREADLINE
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
223 free (tempstr);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
224 #else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
225 printf ("%sftp%s> ", COLOR_BLUE, COLOR_DEFAULT);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
226 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
227 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
228
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
229 if (logfd != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
230 fclose (logfd);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
231 gftp_text_quit (NULL, NULL, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
232
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
233 return (0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
234 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
235
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
236
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
237 void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
238 gftp_text_log (gftp_logging_level level, void *ptr, const char *string, ...)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
239 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
240 char tempstr[512], *stpos, *endpos;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
241 va_list argp;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
242 int sw;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
243
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
244 g_return_if_fail (string != NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
245
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
246 switch (level)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
247 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
248 case gftp_logging_send:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
249 printf ("%s", COLOR_GREEN);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
250 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
251 case gftp_logging_recv:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
252 printf ("%s", COLOR_YELLOW);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
253 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
254 case gftp_logging_error:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
255 printf ("%s", COLOR_RED);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
256 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
257 default:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
258 printf ("%s", COLOR_DEFAULT);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
259 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
260 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
261
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
262 va_start (argp, string);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
263 g_vsnprintf (tempstr, sizeof (tempstr), string, argp);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
264 va_end (argp);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
265
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
266 if (logfd != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
267 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
268 fwrite (tempstr, 1, strlen (tempstr), logfd);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
269 if (ferror (logfd))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
270 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
271 fclose (logfd);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
272 logfd = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
273 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
274 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
275 fflush (logfd);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
276 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
277
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
278 sw = gftp_text_get_win_size ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
279 stpos = tempstr;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
280 endpos = tempstr + 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
281 do
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
282 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
283 if (strlen (stpos) <= sw)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
284 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
285 printf ("%s", stpos);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
286 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
287 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
288 for (endpos = stpos + sw - 1; *endpos != ' ' && endpos > stpos; endpos--);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
289 if (endpos != stpos)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
290 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
291 *endpos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
292 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
293 printf ("%s\n", stpos);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
294 stpos = endpos + 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
295 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
296 while (stpos != endpos);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
297
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
298 printf ("%s", COLOR_DEFAULT);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
299 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
300
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
301
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
302 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
303 gftp_text_open (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
304 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
305 char tempstr[255], *pos;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
306
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
307 if (GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
308 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
309 gftp_disconnect (request);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
310 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
311
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
312 if (*command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
313 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
314 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
315 _("usage: open [[ftp://][user:pass@]ftp-site[:port][/directory]]\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
316 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
317 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
318
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
319 if (gftp_parse_url (request, command) < 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
320 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
321 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
322 _("Could not parse URL %s\n"), command);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
323 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
324 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
325
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
326 if (strcmp (GFTP_GET_USERNAME (request), "anonymous") == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
327 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
328 if ((pos = gftp_text_ask_question ("Username [anonymous]", 1, tempstr,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
329 sizeof (tempstr))) != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
330 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
331 gftp_set_username (request, pos);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
332 if (request->password)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
333 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
334 g_free (request->password);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
335 request->password = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
336 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
337 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
338 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
339
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
340 if (strcmp (GFTP_GET_USERNAME (request), "anonymous") != 0 &&
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
341 (request->password == NULL || *request->password == '\0'))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
342 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
343 if ((pos = gftp_text_ask_question ("Password", 0, tempstr,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
344 sizeof (tempstr))) == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
345 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
346 gftp_set_password (request, pos);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
347 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
348
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
349 gftp_connect (request);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
350 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
351 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
352
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
353
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
354 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
355 gftp_text_close (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
356 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
357 gftp_disconnect (request);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
358 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
359 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
360
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
361
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
362 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
363 gftp_text_about (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
364 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
365 char *str;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
366
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
367 gftp_text_log (gftp_logging_misc, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
368 "%s. Copyright (C) 1998-2002 Brian Masney <masneyb@gftp.org>\n", version);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
369
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
370 str = _("Translated by");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
371 if (strcmp (str, "Translated by") != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
372 gftp_text_log (gftp_logging_misc, NULL, "%s\n", str);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
373 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
374 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
375
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
376
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
377 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
378 gftp_text_quit (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
379 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
380 gftp_clear_cache_files ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
381 if (configuration_changed)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
382 gftp_write_config_file ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
383 return (0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
384 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
385
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
386
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
387 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
388 gftp_text_pwd (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
389 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
390 if (!GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
391 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
392 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
393 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
394 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
395 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
396 gftp_text_log (gftp_logging_misc, NULL, "%s\n", request->directory);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
397 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
398 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
399
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
400
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
401 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
402 gftp_text_cd (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
403 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
404 char *newdir = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
405
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
406 if (!GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
407 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
408 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
409 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
410 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
411 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
412 else if (*command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
413 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
414 gftp_text_log (gftp_logging_error, NULL, _("usage: chdir <directory>\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
415 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
416 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
417 else if (request->protonum == GFTP_LOCAL_NUM &&
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
418 (newdir = expand_path (command)) == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
419 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
420 gftp_text_log (gftp_logging_error, NULL, _("usage: chdir <directory>\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
421 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
422 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
423
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
424 gftp_set_directory (request, newdir != NULL ? newdir : command);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
425
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
426 if (newdir != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
427 g_free (newdir);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
428
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
429 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
430 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
431
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
432
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
433 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
434 gftp_text_mkdir (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
435 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
436 if (!GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
437 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
438 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
439 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
440 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
441 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
442
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
443 if (*command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
444 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
445 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
446 _("usage: mkdir <new directory>\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
447 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
448 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
449 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
450 gftp_make_directory (request, command);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
451 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
452 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
453 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
454
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
455
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
456 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
457 gftp_text_rmdir (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
458 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
459 if (!GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
460 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
461 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
462 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
463 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
464 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
465
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
466 if (*command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
467 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
468 gftp_text_log (gftp_logging_error, NULL, _("usage: rmdir <directory>\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
469 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
470 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
471 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
472 gftp_remove_directory (request, command);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
473 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
474 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
475 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
476
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
477
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
478 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
479 gftp_text_delete (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
480 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
481 if (!GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
482 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
483 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
484 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
485 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
486 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
487
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
488 if (*command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
489 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
490 gftp_text_log (gftp_logging_error, NULL,_("usage: delete <file>\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
491 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
492 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
493 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
494 gftp_remove_file (request, command);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
495 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
496 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
497 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
498
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
499
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
500 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
501 gftp_text_rename (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
502 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
503 char *pos;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
504
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
505 if (!GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
506 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
507 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
508 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
509 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
510 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
511
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
512 if ((pos = strchr (command, ' ')) != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
513 *pos++ = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
514
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
515 if (*command == '\0' || pos == NULL || *pos == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
516 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
517 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
518 _("usage: rename <old name> <new name>\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
519 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
520 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
521 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
522 gftp_rename_file (request, command, pos);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
523 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
524 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
525 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
526
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
527
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
528 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
529 gftp_text_chmod (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
530 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
531 char *pos;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
532
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
533 if (!GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
534 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
535 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
536 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
537 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
538 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
539
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
540 if ((pos = strchr (command, ' ')) != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
541 *pos++ = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
542
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
543 if (*command == '\0' || pos == NULL || *pos == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
544 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
545 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
546 _("usage: chmod <mode> <file>\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
547 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
548 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
549 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
550 gftp_chmod (request, pos, strtol (command, NULL, 10));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
551 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
552 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
553 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
554
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
555
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
556 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
557 gftp_text_ls (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
558 {
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
559 GList * files, * templist, * delitem;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
560 char *color, buf[20], *filespec;
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
561 int sortcol, sortasds;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
562 gftp_file * fle;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
563 time_t curtime;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
564
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
565 time (&curtime);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
566 if (!GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
567 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
568 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
569 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
570 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
571 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
572
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
573 filespec = *command != '\0' ? command : NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
574 if (gftp_list_files (request) != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
575 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
576
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
577 files = NULL;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
578 fle = g_malloc0 (sizeof (*fle));
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
579 while (gftp_get_next_file (request, NULL, fle) > 0)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
580 {
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
581 if (strcmp (fle->file, ".") == 0)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
582 {
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
583 gftp_file_destroy (fle);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
584 continue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
585 }
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
586 files = g_list_prepend (files, fle);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
587 fle = g_malloc0 (sizeof (*fle));
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
588 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
589 g_free (fle);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
590
58
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
591 if (files == NULL)
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
592 return (1);
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
593
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
594 if (request == gftp_text_locreq)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
595 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
596 sortcol = local_sortcol;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
597 sortasds = local_sortasds;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
598 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
599 else
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
600 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
601 sortcol = remote_sortcol;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
602 sortasds = remote_sortasds;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
603 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
604
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
605 files = gftp_sort_filelist (files, sortcol, sortasds);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
606 delitem = NULL;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
607 for (templist = files; templist != NULL; templist = templist->next)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
608 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
609 if (delitem != NULL)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
610 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
611 fle = delitem->data;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
612 gftp_file_destroy (fle);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
613 g_free (fle);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
614 delitem = NULL;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
615 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
616
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
617 fle = templist->data;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
618
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
619 if (*fle->attribs == 'd')
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
620 color = COLOR_BLUE;
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
621 else if (*fle->attribs == 'l')
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
622 color = COLOR_WHITE;
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
623 else if (strchr (fle->attribs, 'x') != NULL)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
624 color = COLOR_GREEN;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
625 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
626 color = COLOR_DEFAULT;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
627
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
628 if (curtime > fle->datetime + 6 * 30 * 24 * 60 * 60 ||
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
629 curtime < fle->datetime - 60 * 60)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
630 strftime (buf, sizeof (buf), "%b %d %Y", localtime (&fle->datetime));
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
631 else
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
632 strftime (buf, sizeof (buf), "%b %d %H:%M", localtime (&fle->datetime));
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
633
16
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 1
diff changeset
634 #if defined (_LARGEFILE_SOURCE)
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 1
diff changeset
635 printf ("%s %8s %8s %10lld %s %s%s%s\n",
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 1
diff changeset
636 #else
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 1
diff changeset
637 printf ("%s %8s %8s %10ld %s %s%s%s\n",
ddb983d8574b * Improved directory sorting algorithm
masneyb
parents: 1
diff changeset
638 #endif
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
639 fle->attribs, fle->user, fle->group,
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
640 fle->size, buf, color, fle->file, COLOR_DEFAULT);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
641 delitem = templist;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
642 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
643 gftp_end_transfer (request);
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
644
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
645 if (delitem != NULL)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
646 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
647 fle = delitem->data;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
648 gftp_file_destroy (fle);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
649 g_free (fle);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
650 delitem = NULL;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
651 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
652
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
653 if (files != NULL)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
654 g_list_free (files);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
655
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
656 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
657 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
658
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
659
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
660 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
661 gftp_text_binary (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
662 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
663 if (!GFTP_IS_CONNECTED (gftp_text_remreq))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
664 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
665 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
666 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
667 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
668 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
669
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
670 gftp_set_data_type (gftp_text_remreq, GFTP_TYPE_BINARY);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
671 gftp_set_data_type (gftp_text_locreq, GFTP_TYPE_BINARY);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
672 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
673 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
674
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
675
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
676 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
677 gftp_text_ascii (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
678 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
679 if (!GFTP_IS_CONNECTED (gftp_text_remreq))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
680 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
681 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
682 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
683 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
684 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
685
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
686 gftp_set_data_type (gftp_text_remreq, GFTP_TYPE_ASCII);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
687 gftp_set_data_type (gftp_text_locreq, GFTP_TYPE_ASCII);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
688 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
689 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
690
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
691
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
692 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
693 gftp_text_mget_file (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
694 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
695 gftp_transfer * transfer;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
696 gftp_file * fle;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
697
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
698 if (!GFTP_IS_CONNECTED (gftp_text_remreq))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
699 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
700 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
701 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
702 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
703 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
704
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
705 if (*command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
706 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
707 gftp_text_log (gftp_logging_error, NULL, _("usage: mget <filespec>\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
708 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
709 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
710
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
711 transfer = g_malloc0 (sizeof (*transfer));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
712 transfer->fromreq = gftp_text_remreq;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
713 transfer->toreq = gftp_text_locreq;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
714 transfer->transfer_direction = GFTP_DIRECTION_DOWNLOAD;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
715
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
716 /* FIXME - ask whether to resume/skip/overwrite */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
717 if (gftp_list_files (transfer->fromreq) != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
718 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
719 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
720 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
721 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
722 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
723 fle = g_malloc0 (sizeof (*fle));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
724 while (gftp_get_next_file (transfer->fromreq, command, fle) > 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
725 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
726 if (strcmp (fle->file, ".") == 0 || strcmp (fle->file, "..") == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
727 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
728 gftp_file_destroy (fle);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
729 continue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
730 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
731 transfer->files = g_list_append (transfer->files, fle);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
732 fle = g_malloc (sizeof (*fle));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
733 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
734 g_free (fle);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
735 gftp_end_transfer (transfer->fromreq);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
736
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
737 if (transfer->files == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
738 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
739 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
740 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
741 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
742 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
743
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
744 if (gftp_get_all_subdirs (transfer, NULL) != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
745 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
746 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
747 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
748 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
749 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
750
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
751 if (transfer->files == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
752 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
753 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
754 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
755 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
756 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
757
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
758 gftp_text_transfer_files (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
759 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
760 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
761 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
762 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
763
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
764
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
765 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
766 gftp_text_mput_file (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
767 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
768 gftp_transfer * transfer;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
769 gftp_file * fle;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
770
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
771 if (!GFTP_IS_CONNECTED (gftp_text_remreq))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
772 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
773 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
774 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
775 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
776 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
777
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
778 if (*command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
779 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
780 gftp_text_log (gftp_logging_error, NULL, _("usage: mput <filespec>\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
781 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
782 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
783
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
784 transfer = g_malloc0 (sizeof (*transfer));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
785 transfer->fromreq = gftp_text_locreq;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
786 transfer->toreq = gftp_text_remreq;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
787 transfer->transfer_direction = GFTP_DIRECTION_UPLOAD;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
788
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
789 if (gftp_list_files (transfer->fromreq) != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
790 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
791 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
792 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
793 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
794 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
795 fle = g_malloc (sizeof (*fle));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
796 while (gftp_get_next_file (transfer->fromreq, command, fle) > 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
797 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
798 if (strcmp (fle->file, ".") == 0 || strcmp (fle->file, "..") == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
799 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
800 gftp_file_destroy (fle);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
801 continue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
802 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
803 transfer->files = g_list_append (transfer->files, fle);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
804 fle = g_malloc (sizeof (*fle));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
805 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
806 g_free (fle);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
807 gftp_end_transfer (transfer->fromreq);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
808
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
809 if (transfer->files == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
810 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
811 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
812 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
813 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
814 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
815
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
816 if (gftp_get_all_subdirs (transfer, NULL) != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
817 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
818 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
819 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
820 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
821 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
822
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
823 if (transfer->files == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
824 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
825 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
826 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
827 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
828 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
829
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
830 gftp_text_transfer_files (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
831 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
832 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
833 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
834 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
835
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
836
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
837 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
838 gftp_text_transfer_files (gftp_transfer * transfer)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
839 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
840 char *tempstr, buf[8192], *progress = "|/-\\";
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
841 struct timeval updatetime;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
842 long fromsize, total;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
843 gftp_file * curfle;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
844 int i, j, sw, tot;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
845 ssize_t num_read;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
846
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
847 for (transfer->curfle = transfer->files;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
848 transfer->curfle != NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
849 transfer->curfle = transfer->curfle->next)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
850 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
851 curfle = transfer->curfle->data;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
852 if (curfle->transfer_action == GFTP_TRANS_ACTION_SKIP)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
853 continue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
854
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
855 if (curfle->isdir && transfer->toreq->mkdir != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
856 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
857 transfer->toreq->mkdir (transfer->toreq, curfle->destfile);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
858 continue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
859 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
860
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
861 if (maxkbs > 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
862 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
863 gftp_text_log (gftp_logging_misc, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
864 _("File transfer will be throttled to %.2f KB/s\n"),
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
865 maxkbs);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
866 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
867
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
868 transfer->curtrans = curfle->startsize;
58
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
869 fromsize = gftp_transfer_file (transfer->fromreq, curfle->file, -1,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
870 curfle->startsize, transfer->toreq, curfle->destfile,
58
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
871 -1, curfle->startsize);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
872 if (fromsize < 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
873 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
874
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
875 gettimeofday (&transfer->starttime, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
876 memcpy (&transfer->lasttime, &transfer->starttime,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
877 sizeof (transfer->lasttime));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
878 memset (&updatetime, 0, sizeof (updatetime));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
879
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
880 total = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
881 i = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
882 while (!cancel && (num_read = gftp_get_next_file_chunk (transfer->fromreq,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
883 buf, sizeof (buf))) > 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
884 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
885 printf ("\r%c ", progress[i++]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
886 fflush (stdout);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
887 if (progress[i] == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
888 i = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
889
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
890 total += num_read;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
891 gftp_text_calc_kbs (transfer, num_read);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
892 if (transfer->lasttime.tv_sec - updatetime.tv_sec >= 1 || total >= fromsize)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
893 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
894 sw = gftp_text_get_win_size () - 20;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
895 tot = (float) total / (float) fromsize * (float) sw;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
896
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
897 if (tot > sw)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
898 tot = sw;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
899 printf ("[");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
900 for (j=0; j<tot; j++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
901 printf ("=");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
902 for (j=0; j<sw-tot; j++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
903 printf (" ");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
904 printf ("] @ %.2fKB/s", transfer->kbs);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
905 fflush (stdout);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
906 memcpy (&updatetime, &transfer->lasttime, sizeof (updatetime));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
907 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
908
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
909 if (GFTP_GET_DATA_TYPE (transfer->fromreq) == GFTP_TYPE_ASCII)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
910 tempstr = gftp_convert_ascii (buf, &num_read, 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
911 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
912 tempstr = buf;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
913
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
914 if (gftp_put_next_file_chunk (transfer->toreq, tempstr, num_read) < 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
915 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
916 num_read = -1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
917 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
918 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
919
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
920 /* We don't have to free tempstr for a download because new memory is
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
921 not allocated for it in that case */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
922 if (GFTP_GET_DATA_TYPE (transfer->fromreq) ==
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
923 GFTP_TYPE_ASCII && !transfer->transfer_direction)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
924 g_free (tempstr);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
925 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
926 printf ("\n");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
927
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
928 if (num_read < 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
929 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
930 gftp_text_log (gftp_logging_misc, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
931 _("Could not download %s\n"), curfle->file);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
932 gftp_disconnect (transfer->fromreq);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
933 gftp_disconnect (transfer->toreq);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
934 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
935 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
936 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
937 gftp_text_log (gftp_logging_misc, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
938 _("Successfully transferred %s\n"), curfle->file);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
939 gftp_end_transfer (transfer->fromreq);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
940 gftp_end_transfer (transfer->toreq);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
941 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
942
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
943 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
944 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
945 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
946
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
947
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
948 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
949 gftp_text_help (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
950 {
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
951 int i, j, ele, numrows, numcols = 6, handled;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
952 char *pos;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
953
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
954 if (command != NULL && *command != '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
955 {
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
956 for (pos = command; *pos != ' ' && *pos != '\0'; pos++);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
957 if (*pos == ' ')
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
958 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
959 *pos++ = '\0';
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
960 if (*pos == '\0')
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
961 pos = NULL;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
962 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
963 else
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
964 pos = NULL;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
965
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
966 for (i=0; gftp_text_methods[i].command != NULL; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
967 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
968 if (strcmp (gftp_text_methods[i].command, command) == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
969 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
970 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
971
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
972 if (gftp_text_methods[i].cmd_description != NULL)
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
973 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
974 if (pos != NULL && gftp_text_methods[i].subhelp_func != NULL)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
975 handled = gftp_text_methods[i].subhelp_func (pos);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
976 else
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
977 handled = 0;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
978
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
979 if (!handled)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
980 printf ("%s\n", _(gftp_text_methods[i].cmd_description));
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
981 }
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
982 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
983 *command = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
984 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
985
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
986 if (command == NULL || *command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
987 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
988 numrows = number_commands / numcols;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
989 if (number_commands % numcols != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
990 numrows++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
991
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
992 printf (_("Supported commands:\n\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
993 for (i=0; i<numrows; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
994 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
995 printf (" ");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
996 for (j=0; j<numcols; j++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
997 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
998 ele = i + j * numrows;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
999 if (ele >= number_commands)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1000 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1001 printf ("%-10s", gftp_text_methods[ele].command);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1002 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1003 printf ("\n");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1004 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1005
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1006 printf ("\n");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1007 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1008 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1009 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1010
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1011
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1012 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1013 gftp_text_set (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1014 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1015 char *pos, *backpos;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1016 int i;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1017
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1018 if (command == NULL || *command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1019 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1020 for (i=0; config_file_vars[i].key != NULL; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1021 {
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1022 if (!(config_file_vars[i].ports_shown & GFTP_PORT_TEXT))
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1023 continue;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1024
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1025 switch (config_file_vars[i].type)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1026 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1027 case CONFIG_CHARTEXT:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1028 printf ("%s = %s\n", config_file_vars[i].key,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1029 *(char **) config_file_vars[i].var);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1030 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1031 case CONFIG_INTTEXT:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1032 case CONFIG_CHECKBOX:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1033 printf ("%s = %d\n", config_file_vars[i].key,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1034 *(int *) config_file_vars[i].var);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1035 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1036 case CONFIG_FLOATTEXT:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1037 printf ("%s = %.2f\n", config_file_vars[i].key,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1038 *(float *) config_file_vars[i].var);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1039 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1040 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1041 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1042 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1043 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1044 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1045 if ((pos = strchr (command, '=')) == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1046 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1047 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1048 _("usage: set [variable = value]\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1049 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1050 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1051 *pos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1052
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1053 for (backpos = pos - 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1054 (*backpos == ' ' || *backpos == '\t') && backpos > command;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1055 backpos--)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1056 *backpos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1057 for (++pos; *pos == ' ' || *pos == '\t'; pos++);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1058
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1059 for (i=0; config_file_vars[i].key != NULL; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1060 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1061 if (strcmp (config_file_vars[i].key, command) == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1062 break;
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1063
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1064 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1065
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1066 if (config_file_vars[i].key == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1067 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1068 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1069 _("Error: Variable %s is not a valid configuration variable.\n"), command);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1070 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1071 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1072
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1073 if (!(config_file_vars[i].ports_shown & GFTP_PORT_TEXT))
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1074 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1075 gftp_text_log (gftp_logging_error, NULL,
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1076 _("Error: Variable %s is not available in the text port of gFTP\n"), command);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1077 return (1);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1078 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1079
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1080 configuration_changed = 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1081 switch (config_file_vars[i].type)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1082 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1083 case CONFIG_CHARTEXT:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1084 if (*(char **) config_file_vars[i].var != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1085 g_free (*(char **) config_file_vars[i].var);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1086 *(char **) config_file_vars[i].var = g_strconcat (pos, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1087 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1088 case CONFIG_CHECKBOX:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1089 *(int *) config_file_vars[i].var = *pos == '1' ? 1 : 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1090 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1091 case CONFIG_INTTEXT:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1092 *(int *) config_file_vars[i].var = strtol (pos, NULL, 10);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1093 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1094 case CONFIG_FLOATTEXT:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1095 *(float *) config_file_vars[i].var = strtod (pos, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1096 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1097 default:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1098 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1099 _("Error: You cannot change this variable\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1100 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1101 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1102 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1103
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1104 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1105 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1106
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1107
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1108 int
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1109 gftp_text_clear (gftp_request * request, char *command, gpointer *data)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1110 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1111 if (strcasecmp (command, "cache") == 0)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1112 gftp_clear_cache_files ();
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1113 else
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1114 gftp_text_log (gftp_logging_error, NULL, "Invalid argument\n");
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1115 return (1);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1116 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1117
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1118
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1119 char *
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1120 gftp_text_ask_question (const char *question, int echo, char *buf, size_t size)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1121 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1122 struct termios term, oldterm;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1123 sigset_t sig, sigsave;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1124 char *pos, *termname;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1125 FILE *infd, *outfd;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1126
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1127 if (!echo)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1128 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1129 sigemptyset (&sig);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1130 sigaddset (&sig, SIGINT);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1131 sigaddset (&sig, SIGTSTP);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1132 sigprocmask (SIG_BLOCK, &sig, &sigsave);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1133
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1134 termname = ctermid (NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1135 if ((infd = fopen (termname, "r+")) == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1136 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1137
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1138 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1139 "Cannot open controlling terminal %s\n", termname);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1140 return (NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1141 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1142 outfd = infd;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1143
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1144 tcgetattr (0, &term);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1145 oldterm = term;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1146 term.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1147 tcsetattr (fileno (infd), TCSAFLUSH, &term);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1148 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1149 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1150 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1151 infd = stdin;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1152 outfd = stdout;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1153 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1154
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1155 fprintf (outfd, "%s%s%s: ", COLOR_BLUE, question, COLOR_DEFAULT);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1156
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1157 if (fgets (buf, size, infd) == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1158 return (NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1159 buf[size - 1] = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1160
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1161 if (!echo)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1162 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1163 fprintf (outfd, "\n");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1164 tcsetattr (fileno (infd), TCSAFLUSH, &oldterm);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1165 fclose (outfd);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1166 sigprocmask (SIG_SETMASK, &sigsave, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1167 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1168
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1169 for (pos = buf + strlen (buf) - 1; *pos == ' ' || *pos == '\r' ||
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1170 *pos == '\n'; pos--);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1171 *(pos+1) = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1172
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1173 for (pos = buf; *pos == ' '; pos++);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1174 if (*pos == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1175 return (NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1176
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1177 return (pos);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1178 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1179
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1180
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1181 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1182 gftp_text_get_win_size (void)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1183 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1184 struct winsize size;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1185 int ret;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1186
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1187 if (ioctl (0, TIOCGWINSZ, (char *) &size) < 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1188 ret = 80;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1189 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1190 ret = size.ws_col;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1191 return (ret);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1192 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1193
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1194
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1195 void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1196 gftp_text_calc_kbs (gftp_transfer * tdata, ssize_t num_read)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1197 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1198 unsigned long waitusecs;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1199 double difftime, curkbs;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1200 gftp_file * tempfle;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1201 struct timeval tv;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1202 unsigned long toadd;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1203
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1204 gettimeofday (&tv, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1205
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1206 tempfle = tdata->curfle->data;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1207 tdata->trans_bytes += num_read;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1208 tdata->curtrans += num_read;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1209 tdata->stalled = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1210
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1211 difftime = (tv.tv_sec - tdata->starttime.tv_sec) + ((double) (tv.tv_usec - tdata->starttime.tv_usec) / 1000000.0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1212 if (difftime == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1213 tdata->kbs = (double) tdata->trans_bytes / 1024.0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1214 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1215 tdata->kbs = (double) tdata->trans_bytes / 1024.0 / difftime;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1216
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1217 difftime = (tv.tv_sec - tdata->lasttime.tv_sec) + ((double) (tv.tv_usec - tdata->lasttime.tv_usec) / 1000000.0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1218
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1219 if (difftime <= 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1220 curkbs = (double) (num_read / 1024.0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1221 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1222 curkbs = (double) (num_read / 1024.0 / difftime);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1223
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1224 if (tdata->fromreq->maxkbs > 0 &&
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1225 curkbs > tdata->fromreq->maxkbs)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1226 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1227 waitusecs = (double) num_read / 1024.0 / tdata->fromreq->maxkbs * 1000000.0 - difftime;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1228
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1229 if (waitusecs > 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1230 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1231 difftime += ((double) waitusecs / 1000000.0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1232 usleep (waitusecs);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1233 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1234 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1235
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1236 /* I don't call gettimeofday (&tdata->lasttime) here because this will use
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1237 less system resources. This will be close enough for what we need */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1238 difftime += tdata->lasttime.tv_usec / 1000000.0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1239 toadd = (long) difftime;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1240 difftime -= toadd;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1241 tdata->lasttime.tv_sec += toadd;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1242 tdata->lasttime.tv_usec = difftime * 1000000.0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1243 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1244
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1245
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1246 void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1247 sig_child (int signo)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1248 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1249 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1250
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1251
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1252 int
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1253 gftp_text_set_show_subhelp (char *topic)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1254 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1255 int i;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1256
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1257 for (i=0; config_file_vars[i].key != NULL; i++)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1258 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1259 if (strcmp (topic, config_file_vars[i].key) == 0)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1260 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1261 printf ("%s\n", config_file_vars[i].comment);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1262 return (1);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1263 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1264 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1265
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1266 return (0);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1267 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1268
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1269
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1270 int
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1271 gftp_text_clear_show_subhelp (char *topic)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1272 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1273 if (strcmp (topic, "cache") == 0)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1274 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1275 printf (_("Clear the directory cache\n"));
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1276 return (1);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1277 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1278
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1279 return (0);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1280 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1281
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1282
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1283 #if !defined (HAVE_GETADDRINFO) || !defined (HAVE_GAI_STRERROR)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1284
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1285 struct hostent *
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1286 r_gethostbyname (const char *name, struct hostent *result_buf, int *h_errnop)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1287 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1288 struct hostent *hent;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1289
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1290 if ((hent = gethostbyname (name)) == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1291 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1292 if (h_errnop)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1293 *h_errnop = h_errno;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1294 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1295 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1296 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1297 *result_buf = *hent;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1298 hent = result_buf;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1299 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1300 return (hent);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1301 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1302
56
a12bcbc2fce4 2002-11-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 37
diff changeset
1303 #endif /* HAVE_GETADDRINFO */
a12bcbc2fce4 2002-11-11 Brian Masney <masneyb@gftp.org>
masneyb
parents: 37
diff changeset
1304
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1305
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1306 struct servent *
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1307 r_getservbyname (const char *name, const char *proto,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1308 struct servent *result_buf, int *h_errnop)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1309 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1310 struct servent *sent;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1311
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1312 if ((sent = getservbyname (name, proto)) == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1313 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1314 if (h_errnop)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1315 *h_errnop = h_errno;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1316 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1317 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1318 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1319 *result_buf = *sent;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1320 sent = result_buf;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1321 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1322 return (sent);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1323 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1324