annotate src/text/gftp-text.c @ 204:9b2de8d3fafe

2003-6-25 Brian Masney <masneyb@gftp.org> * lib/misc.c (expand_path) - small improvements * lib/rfc2068.c src/text/gftp-gtk.c - fixes for path handling, namely when changing directories to the parent (..)
author masneyb
date Thu, 26 Jun 2003 02:14:24 +0000
parents 95e669973a84
children cf4098008615
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 */
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
3 /* Copyright (C) 1998-2003 Brian Masney <masneyb@gftp.org> */
1
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;
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 186
diff changeset
26 static int number_commands = 30;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
27
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
28 struct _gftp_text_methods gftp_text_methods[] = {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
29 {N_("about"), 2, gftp_text_about, NULL,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
30 N_("Shows gFTP information"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
31 {N_("ascii"), 2, gftp_text_ascii, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
32 N_("Sets the current file transfer mode to Ascii (only for FTP)"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
33 {N_("binary"), 1, gftp_text_binary, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
34 N_("Sets the current file transfer mode to Binary (only for FTP)"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
35 {N_("cd"), 2, gftp_text_cd, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
36 N_("Changes the remote working directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
37 {N_("chdir"), 3, gftp_text_cd, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
38 N_("Changes the remote working directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
39 {N_("chmod"), 3, gftp_text_chmod, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
40 N_("Changes the permissions of a remote file"), NULL},
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
41 {N_("clear"), 3, gftp_text_clear, NULL,
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
42 N_("Available options: cache"), gftp_text_clear_show_subhelp},
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
43 {N_("close"), 3, gftp_text_close, &gftp_text_remreq,
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
44 N_("Disconnects from the remote site"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
45 {N_("delete"), 1, gftp_text_delete, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
46 N_("Removes a remote file"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
47 {N_("get"), 1, gftp_text_mget_file, NULL,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
48 N_("Downloads remote file(s)"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
49 {N_("help"), 1, gftp_text_help, NULL,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
50 N_("Shows this help screen"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
51 {N_("lcd"), 3, gftp_text_cd, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
52 N_("Changes the local working directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
53 {N_("lchdir"), 4, gftp_text_cd, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
54 N_("Changes the local working directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
55 {N_("lchmod"), 4, gftp_text_chmod, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
56 N_("Changes the permissions of a local file"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
57 {N_("ldelete"), 2, gftp_text_delete, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
58 N_("Removes a local file"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
59 {N_("lls"), 2, gftp_text_ls, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
60 N_("Shows the directory listing for the current local directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
61 {N_("lmkdir"), 2, gftp_text_mkdir, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
62 N_("Creates a local directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
63 {N_("lpwd"), 2, gftp_text_pwd, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
64 N_("Show current local directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
65 {N_("lrename"), 3, gftp_text_rename, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
66 N_("Rename a local file"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
67 {N_("lrmdir"), 3, gftp_text_rmdir, &gftp_text_locreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
68 N_("Remove a local directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
69 {N_("ls"), 2, gftp_text_ls, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
70 N_("Shows the directory listing for the current remote directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
71 {N_("mget"), 2, gftp_text_mget_file, NULL,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
72 N_("Downloads remote file(s)"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
73 {N_("mkdir"), 2, gftp_text_mkdir, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
74 N_("Creates a remote directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
75 {N_("mput"), 2, gftp_text_mput_file, NULL,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
76 N_("Uploads local file(s)"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
77 {N_("open"), 1, gftp_text_open, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
78 N_("Opens a connection to a remote site"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
79 {N_("put"), 2, gftp_text_mput_file, NULL,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
80 N_("Uploads local file(s)"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
81 {N_("pwd"), 2, gftp_text_pwd, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
82 N_("Show current remote directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
83 {N_("quit"), 1, gftp_text_quit, NULL,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
84 N_("Exit from gFTP"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
85 {N_("rename"), 2, gftp_text_rename, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
86 N_("Rename a remote file"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
87 {N_("rmdir"), 2, gftp_text_rmdir, &gftp_text_remreq,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
88 N_("Remove a remote directory"), NULL},
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
89 {N_("set"), 1, gftp_text_set, NULL,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
90 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
91 {NULL, 0, NULL, NULL, NULL}};
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
92
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
93 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
94 main (int argc, char **argv)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
95 {
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
96 char *pos, *stpos, *startup_directory;
1
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 int i;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
100 #ifdef HAVE_LIBREADLINE
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
101 char *tempstr, prompt[20];
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
102 #else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
103 char tempstr[512];
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
104 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
105
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
106 #ifdef HAVE_GETTEXT
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
107 setlocale (LC_ALL, "");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
108 bindtextdomain ("gftp", LOCALE_DIR);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
109 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
110
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
111 signal (SIGCHLD, sig_child);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
112 signal (SIGPIPE, SIG_IGN);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
113
124
65048c959029 2003-4-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 122
diff changeset
114 gftp_read_config_file (SHARE_DIR);
65048c959029 2003-4-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 122
diff changeset
115
65048c959029 2003-4-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 122
diff changeset
116 if (gftp_parse_command_line (&argc, &argv) != 0)
65048c959029 2003-4-6 Brian Masney <masneyb@gftp.org>
masneyb
parents: 122
diff changeset
117 exit (0);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
118
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
119 /* SSH doesn't support reading the password with askpass via the command
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
120 line */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
121
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
122 gftp_text_remreq = gftp_request_new ();
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
123 gftp_set_request_option (gftp_text_remreq, "ssh_use_askpass",
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
124 GINT_TO_POINTER(0));
143
5c952c5cb438 2003-4-23 Brian Masney <masneyb@gftp.org>
masneyb
parents: 131
diff changeset
125 gftp_set_request_option (gftp_text_remreq, "sshv2_use_sftp_subsys",
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
126 GINT_TO_POINTER(0));
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
127 gftp_text_remreq->logging_function = gftp_text_log;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
128
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
129 gftp_text_locreq = gftp_request_new ();
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
130 gftp_set_request_option (gftp_text_locreq, "ssh_use_askpass",
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
131 GINT_TO_POINTER(0));
143
5c952c5cb438 2003-4-23 Brian Masney <masneyb@gftp.org>
masneyb
parents: 131
diff changeset
132 gftp_set_request_option (gftp_text_locreq, "sshv2_use_sftp_subsys",
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
133 GINT_TO_POINTER(0));
143
5c952c5cb438 2003-4-23 Brian Masney <masneyb@gftp.org>
masneyb
parents: 131
diff changeset
134
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
135 gftp_text_locreq->logging_function = gftp_text_log;
173
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 169
diff changeset
136 if (gftp_protocols[GFTP_LOCAL_NUM].init (gftp_text_locreq) == 0)
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 169
diff changeset
137 {
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 169
diff changeset
138 gftp_lookup_request_option (gftp_text_locreq, "startup_directory",
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 169
diff changeset
139 &startup_directory);
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 169
diff changeset
140 if (*startup_directory != '\0')
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 169
diff changeset
141 gftp_set_directory (gftp_text_locreq, startup_directory);
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
142
173
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 169
diff changeset
143 gftp_connect (gftp_text_locreq);
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 169
diff changeset
144 }
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
145
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
146 gftp_text_log (gftp_logging_misc, NULL, "%s, Copyright (C) 1998-2003 Brian Masney <", gftp_version);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
147 gftp_text_log (gftp_logging_recv, NULL, "masneyb@gftp.org");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
148 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
149 gftp_text_log (gftp_logging_misc, NULL, "\n");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
150 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
151 gftp_text_log (gftp_logging_misc, NULL, "\n");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
152
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
153 if (argc == 3 && strcmp (argv[1], "-d") == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
154 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
155 if ((pos = strrchr (argv[2], '/')) != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
156 *pos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
157 gftp_text_open (gftp_text_remreq, argv[2], NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
158
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
159 if (pos != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
160 *pos = '/';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
161
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
162 gftp_text_mget_file (gftp_text_remreq, pos + 1, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
163 exit (0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
164 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
165 else if (argc == 2)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
166 gftp_text_open (gftp_text_remreq, argv[1], NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
167
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
168 #ifdef HAVE_LIBREADLINE
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
169 g_snprintf (prompt, sizeof (prompt), "%sftp%s> ", COLOR_BLUE, COLOR_DEFAULT);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
170 while ((tempstr = readline (prompt)))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
171 #else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
172 printf ("%sftp%s> ", COLOR_BLUE, COLOR_DEFAULT);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
173 while (fgets (tempstr, sizeof (tempstr), stdin) != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
174 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
175 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
176 len = strlen (tempstr);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
177 if (tempstr[len - 1] == '\n')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
178 tempstr[--len] = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
179 if (tempstr[len - 1] == '\r')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
180 tempstr[--len] = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
181
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
182 for (stpos = tempstr; *stpos == ' '; stpos++);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
183
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
184 for (pos = tempstr + len - 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
185 (*pos == ' ' || *pos == '\t') && pos > tempstr;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
186 pos--)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
187 *pos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
188
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
189 if (*stpos == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
190 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
191 #ifndef HAVE_LIBREADLINE
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
192 printf ("%sftp%s> ", COLOR_BLUE, COLOR_DEFAULT);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
193 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
194 continue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
195 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
196
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
197 #ifdef HAVE_LIBREADLINE
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
198 add_history (tempstr);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
199 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
200
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
201 if ((pos = strchr (stpos, ' ')) != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
202 *pos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
203 cmdlen = strlen (stpos);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
204
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
205 for (i=0; gftp_text_methods[i].command != NULL; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
206 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
207 if (strcmp (gftp_text_methods[i].command, stpos) == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
208 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
209 else if (cmdlen >= gftp_text_methods[i].minlen &&
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
210 strncmp (gftp_text_methods[i].command, stpos, cmdlen) == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
211 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
212 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
213
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
214 if (pos != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
215 pos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
216 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
217 pos = "";
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
218
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
219 if (gftp_text_methods[i].command != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
220 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
221 if (gftp_text_methods[i].request != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
222 request = *gftp_text_methods[i].request;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
223 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
224 request = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
225
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
226 if (gftp_text_methods[i].func (request, pos, NULL) == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
227 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
228 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
229 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
230 gftp_text_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
231 _("Error: Command not recognized\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
232
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
233 #ifdef HAVE_LIBREADLINE
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
234 free (tempstr);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
235 #else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
236 printf ("%sftp%s> ", COLOR_BLUE, COLOR_DEFAULT);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
237 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
238 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
239
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
240 gftp_text_quit (NULL, NULL, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
241
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
242 return (0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
243 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
244
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
245
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
246 void
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
247 gftp_text_log (gftp_logging_level level, gftp_request * request,
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
248 const char *string, ...)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
249 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
250 char tempstr[512], *stpos, *endpos, *utf8_str = NULL, *outstr;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
251 va_list argp;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
252 int sw;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
253
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
254 g_return_if_fail (string != NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
255
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
256 switch (level)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
257 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
258 case gftp_logging_send:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
259 printf ("%s", COLOR_GREEN);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
260 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
261 case gftp_logging_recv:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
262 printf ("%s", COLOR_YELLOW);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
263 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
264 case gftp_logging_error:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
265 printf ("%s", COLOR_RED);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
266 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
267 default:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
268 printf ("%s", COLOR_DEFAULT);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
269 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
270 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
271
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
272 va_start (argp, string);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
273 g_vsnprintf (tempstr, sizeof (tempstr), string, argp);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
274 va_end (argp);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
275
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
276 #if GLIB_MAJOR_VERSION > 1
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
277 if (!g_utf8_validate (tempstr, -1, NULL))
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
278 utf8_str = gftp_string_to_utf8 (request, tempstr);
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
279 #endif
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
280
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
281 if (utf8_str != NULL)
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
282 outstr = utf8_str;
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
283 else
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
284 outstr = tempstr;
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
285
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
286 if (gftp_logfd != NULL)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
287 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
288 fwrite (outstr, 1, strlen (outstr), gftp_logfd);
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
289 if (ferror (gftp_logfd))
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
290 {
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
291 fclose (gftp_logfd);
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
292 gftp_logfd = NULL;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
293 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
294 else
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
295 fflush (gftp_logfd);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
296 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
297
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
298 sw = gftp_text_get_win_size ();
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
299 stpos = outstr;
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
300 endpos = outstr + 1;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
301 do
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
302 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
303 if (strlen (stpos) <= sw)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
304 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
305 printf ("%s", stpos);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
306 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
307 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
308 for (endpos = stpos + sw - 1; *endpos != ' ' && endpos > stpos; endpos--);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
309 if (endpos != stpos)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
310 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
311 *endpos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
312 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
313 printf ("%s\n", stpos);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
314 stpos = endpos + 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
315 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
316 while (stpos != endpos);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
317
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
318 printf ("%s", COLOR_DEFAULT);
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
319
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
320 if (utf8_str != NULL)
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
321 g_free (utf8_str);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
322 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
323
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
324
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
325 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
326 gftp_text_open (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
327 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
328 char tempstr[255], *pos;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
329
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
330 if (GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
331 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
332 gftp_disconnect (request);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
333 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
334
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
335 if (*command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
336 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
337 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
338 _("usage: open [[ftp://][user:pass@]ftp-site[:port][/directory]]\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
339 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
340 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
341
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
342 if (gftp_parse_url (request, command) < 0)
173
4c288d05b26a 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 169
diff changeset
343 return (1);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
344
169
d40f9db52cdf 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 166
diff changeset
345 if (request->need_userpass)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
346 {
169
d40f9db52cdf 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 166
diff changeset
347 if (request->username == NULL || *request->username == '\0')
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
348 {
166
a4bf947e9e22 2003-5-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 143
diff changeset
349 if ((pos = gftp_text_ask_question ("Username [anonymous]", 1, tempstr,
a4bf947e9e22 2003-5-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 143
diff changeset
350 sizeof (tempstr))) != NULL)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
351 {
166
a4bf947e9e22 2003-5-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 143
diff changeset
352 gftp_set_username (request, pos);
169
d40f9db52cdf 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 166
diff changeset
353 gftp_set_password (request, NULL);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
354 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
355 }
169
d40f9db52cdf 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 166
diff changeset
356
d40f9db52cdf 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 166
diff changeset
357 if (request->username != NULL &&
d40f9db52cdf 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 166
diff changeset
358 strcmp (request->username, "anonymous") != 0 &&
d40f9db52cdf 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 166
diff changeset
359 (request->password == NULL || *request->password == '\0'))
166
a4bf947e9e22 2003-5-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 143
diff changeset
360 {
169
d40f9db52cdf 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 166
diff changeset
361 if ((pos = gftp_text_ask_question ("Password", 0, tempstr,
d40f9db52cdf 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 166
diff changeset
362 sizeof (tempstr))) == NULL)
d40f9db52cdf 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 166
diff changeset
363 return (1);
d40f9db52cdf 2003-6-8 Brian Masney <masneyb@gftp.org>
masneyb
parents: 166
diff changeset
364 gftp_set_password (request, pos);
166
a4bf947e9e22 2003-5-27 Brian Masney <masneyb@gftp.org>
masneyb
parents: 143
diff changeset
365 }
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
366 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
367
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
368 gftp_connect (request);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
369 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
370 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
371
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
372
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
373 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
374 gftp_text_close (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
375 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
376 gftp_disconnect (request);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
377 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
378 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
379
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
380
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
381 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
382 gftp_text_about (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
383 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
384 char *str;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
385
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
386 gftp_text_log (gftp_logging_misc, request,
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
387 "%s. Copyright (C) 1998-2003 Brian Masney <masneyb@gftp.org>\n",
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
388 gftp_version);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
389
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
390 str = _("Translated by");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
391 if (strcmp (str, "Translated by") != 0)
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
392 gftp_text_log (gftp_logging_misc, request, "%s\n", str);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
393 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
394 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
395
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
396
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
397 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
398 gftp_text_quit (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
399 {
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 186
diff changeset
400 gftp_request_destroy (gftp_text_locreq, 1);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 186
diff changeset
401 gftp_request_destroy (gftp_text_remreq, 1);
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 186
diff changeset
402 gftp_shutdown();
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 186
diff changeset
403
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
404 return (0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
405 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
406
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
407
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
408 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
409 gftp_text_pwd (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
410 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
411 if (!GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
412 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
413 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
414 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
415 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
416 }
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
417 gftp_text_log (gftp_logging_misc, request, "%s\n", request->directory);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
418 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
419 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
420
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
421
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
422 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
423 gftp_text_cd (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
424 {
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
425 char *tempstr, *newdir = NULL;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
426
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
427 if (!GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
428 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
429 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
430 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
431 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
432 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
433 else if (*command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
434 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
435 gftp_text_log (gftp_logging_error, request,
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
436 _("usage: chdir <directory>\n"));
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
437 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
438 }
204
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
439 else if (request->protonum == GFTP_LOCAL_NUM)
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
440 {
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
441 if (*command != '/')
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
442 {
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
443 tempstr = g_strconcat (request->directory, "/", command, NULL);
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
444 newdir = expand_path (tempstr);
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
445 g_free (tempstr);
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
446 }
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
447 else
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
448 newdir = expand_path (command);
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
449
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
450 if (newdir == NULL)
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
451 {
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
452 gftp_text_log (gftp_logging_error, request,
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
453 _("usage: chdir <directory>\n"));
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
454 return (1);
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
455 }
9b2de8d3fafe 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 203
diff changeset
456 }
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
457
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
458 gftp_set_directory (request, newdir != NULL ? newdir : command);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
459
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
460 if (newdir != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
461 g_free (newdir);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
462
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
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
467 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
468 gftp_text_mkdir (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
469 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
470 if (!GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
471 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
472 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
473 _("Error: Not connected to a remote site\n"));
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 if (*command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
478 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
479 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
480 _("usage: mkdir <new directory>\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
481 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
482 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
483 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
484 gftp_make_directory (request, command);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
485 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
486 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
487 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
488
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
489
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
490 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
491 gftp_text_rmdir (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
492 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
493 if (!GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
494 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
495 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
496 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
497 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
498 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
499
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
500 if (*command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
501 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
502 gftp_text_log (gftp_logging_error, request,
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
503 _("usage: rmdir <directory>\n"));
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
504 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
505 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
506 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
507 gftp_remove_directory (request, command);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
508 }
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
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
513 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
514 gftp_text_delete (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
515 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
516 if (!GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
517 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
518 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
519 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
520 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
521 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
522
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
523 if (*command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
524 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
525 gftp_text_log (gftp_logging_error, request,
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
526 _("usage: delete <file>\n"));
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
527 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
528 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
529 {
179
8d933999bba6 2003-6-14 Brian Masney <masneyb@gftp.org>
masneyb
parents: 173
diff changeset
530 if (gftp_remove_file (request, command) == 0)
182
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
531 gftp_delete_cache_entry (request, NULL, 0);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
532 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
533 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
534 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
535
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
536
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
537 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
538 gftp_text_rename (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
539 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
540 char *pos;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
541
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
542 if (!GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
543 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
544 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
545 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
546 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
547 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
548
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
549 if ((pos = strchr (command, ' ')) != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
550 *pos++ = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
551
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
552 if (*command == '\0' || pos == NULL || *pos == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
553 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
554 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
555 _("usage: rename <old name> <new name>\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
556 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
557 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
558 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
559 gftp_rename_file (request, command, pos);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
560 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
561 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
562 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
563
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
564
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
565 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
566 gftp_text_chmod (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
567 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
568 char *pos;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
569
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
570 if (!GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
571 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
572 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
573 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
574 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
575 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
576
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
577 if ((pos = strchr (command, ' ')) != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
578 *pos++ = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
579
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
580 if (*command == '\0' || pos == NULL || *pos == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
581 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
582 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
583 _("usage: chmod <mode> <file>\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
584 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
585 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
586 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
587 gftp_chmod (request, pos, strtol (command, NULL, 10));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
588 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
589 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
590 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
591
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
592
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
593 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
594 gftp_text_ls (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
595 {
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
596 GList * files, * templist, * delitem;
131
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
597 char *color, *filespec, *tempstr;
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
598 int sortcol, sortasds;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
599 gftp_file * fle;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
600 time_t curtime;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
601
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
602 time (&curtime);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
603 if (!GFTP_IS_CONNECTED (request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
604 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
605 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
606 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
607 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
608 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
609
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
610 filespec = *command != '\0' ? command : NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
611 if (gftp_list_files (request) != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
612 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
613
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
614 files = NULL;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
615 fle = g_malloc0 (sizeof (*fle));
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
616 while (gftp_get_next_file (request, NULL, fle) > 0)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
617 {
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
618 if (strcmp (fle->file, ".") == 0)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
619 {
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
620 gftp_file_destroy (fle);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
621 continue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
622 }
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
623 files = g_list_prepend (files, fle);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
624 fle = g_malloc0 (sizeof (*fle));
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
625 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
626 g_free (fle);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
627
58
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
628 if (files == NULL)
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
629 return (1);
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
630
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
631 if (request == gftp_text_locreq)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
632 {
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
633 gftp_lookup_request_option (request, "local_sortcol", &sortcol);
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
634 gftp_lookup_request_option (request, "local_sortasds", &sortasds);
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
635 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
636 else
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
637 {
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
638 gftp_lookup_request_option (request, "remote_sortcol", &sortcol);
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
639 gftp_lookup_request_option (request, "remote_sortasds", &sortasds);
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
640 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
641
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
642 files = gftp_sort_filelist (files, sortcol, sortasds);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
643 delitem = NULL;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
644 for (templist = files; templist != NULL; templist = templist->next)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
645 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
646 if (delitem != NULL)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
647 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
648 fle = delitem->data;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
649 gftp_file_destroy (fle);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
650 g_free (fle);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
651 delitem = NULL;
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
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
654 fle = templist->data;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
655
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
656 if (*fle->attribs == 'd')
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
657 color = COLOR_BLUE;
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
658 else if (*fle->attribs == 'l')
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
659 color = COLOR_WHITE;
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
660 else if (strchr (fle->attribs, 'x') != NULL)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
661 color = COLOR_GREEN;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
662 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
663 color = COLOR_DEFAULT;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
664
131
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
665 tempstr = gftp_gen_ls_string (fle, color, COLOR_DEFAULT);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
666 printf ("%s\n", tempstr);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
667 g_free (tempstr);
c77f85763e28 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 129
diff changeset
668
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
669 delitem = templist;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
670 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
671 gftp_end_transfer (request);
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
672
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
673 if (delitem != NULL)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
674 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
675 fle = delitem->data;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
676 gftp_file_destroy (fle);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
677 g_free (fle);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
678 delitem = NULL;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
679 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
680
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
681 if (files != NULL)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
682 g_list_free (files);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
683
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
684 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
685 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
686
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
687
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
688 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
689 gftp_text_binary (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
690 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
691 if (!GFTP_IS_CONNECTED (gftp_text_remreq))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
692 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
693 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
694 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
695 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
696 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
697
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
698 gftp_set_request_option (gftp_text_remreq, "ascii_transfers",
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
699 GINT_TO_POINTER(0));
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
700 gftp_set_request_option (gftp_text_locreq, "ascii_transfers",
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
701 GINT_TO_POINTER(0));
1
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
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
706 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
707 gftp_text_ascii (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
708 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
709 if (!GFTP_IS_CONNECTED (gftp_text_remreq))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
710 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
711 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
712 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
713 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
714 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
715
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
716 gftp_set_request_option (gftp_text_remreq, "ascii_transfers",
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
717 GINT_TO_POINTER(1));
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
718 gftp_set_request_option (gftp_text_locreq, "ascii_transfers",
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
719 GINT_TO_POINTER(1));
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
720 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
721 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
722
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
723
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
724 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
725 gftp_text_mget_file (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
726 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
727 gftp_transfer * transfer;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
728 gftp_file * fle;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
729
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
730 if (!GFTP_IS_CONNECTED (gftp_text_remreq))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
731 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
732 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
733 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
734 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
735 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
736
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
737 if (*command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
738 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
739 gftp_text_log (gftp_logging_error, request,
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
740 _("usage: mget <filespec>\n"));
1
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
129
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
744 transfer = gftp_tdata_new ();
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
745 transfer->fromreq = gftp_text_remreq;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
746 transfer->toreq = gftp_text_locreq;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
747 transfer->transfer_direction = GFTP_DIRECTION_DOWNLOAD;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
748
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
749 /* FIXME - ask whether to resume/skip/overwrite */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
750 if (gftp_list_files (transfer->fromreq) != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
751 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
752 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
753 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
754 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
755 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
756 fle = g_malloc0 (sizeof (*fle));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
757 while (gftp_get_next_file (transfer->fromreq, command, fle) > 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
758 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
759 if (strcmp (fle->file, ".") == 0 || strcmp (fle->file, "..") == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
760 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
761 gftp_file_destroy (fle);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
762 continue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
763 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
764 transfer->files = g_list_append (transfer->files, fle);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
765 fle = g_malloc (sizeof (*fle));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
766 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
767 g_free (fle);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
768 gftp_end_transfer (transfer->fromreq);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
769
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
770 if (transfer->files == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
771 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
772 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
773 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
774 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
775 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
776
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
777 if (gftp_get_all_subdirs (transfer, NULL) != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
778 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
779 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
780 free_tdata (transfer);
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 if (transfer->files == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
785 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
786 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
787 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
788 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
789 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
790
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
791 gftp_text_transfer_files (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
792 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
793 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
794 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
795 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
796
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
797
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
798 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
799 gftp_text_mput_file (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
800 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
801 gftp_transfer * transfer;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
802 gftp_file * fle;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
803
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
804 if (!GFTP_IS_CONNECTED (gftp_text_remreq))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
805 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
806 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
807 _("Error: Not connected to a remote site\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
808 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
809 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
810
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
811 if (*command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
812 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
813 gftp_text_log (gftp_logging_error, request,
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
814 _("usage: mput <filespec>\n"));
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
815 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
816 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
817
129
fe0b21c006f6 2003-4-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 125
diff changeset
818 transfer = gftp_tdata_new ();
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
819 transfer->fromreq = gftp_text_locreq;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
820 transfer->toreq = gftp_text_remreq;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
821 transfer->transfer_direction = GFTP_DIRECTION_UPLOAD;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
822
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
823 if (gftp_list_files (transfer->fromreq) != 0)
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 fle = g_malloc (sizeof (*fle));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
830 while (gftp_get_next_file (transfer->fromreq, command, fle) > 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
831 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
832 if (strcmp (fle->file, ".") == 0 || strcmp (fle->file, "..") == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
833 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
834 gftp_file_destroy (fle);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
835 continue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
836 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
837 transfer->files = g_list_append (transfer->files, fle);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
838 fle = g_malloc (sizeof (*fle));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
839 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
840 g_free (fle);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
841 gftp_end_transfer (transfer->fromreq);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
842
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
843 if (transfer->files == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
844 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
845 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
846 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
847 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
848 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
849
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
850 if (gftp_get_all_subdirs (transfer, NULL) != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
851 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
852 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
853 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
854 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
855 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
856
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
857 if (transfer->files == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
858 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
859 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
860 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
861 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
862 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
863
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
864 gftp_text_transfer_files (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
865 transfer->fromreq = transfer->toreq = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
866 free_tdata (transfer);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
867 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
868 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
869
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
870
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
871 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
872 gftp_text_transfer_files (gftp_transfer * transfer)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
873 {
182
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
874 int i, j, sw, tot, preserve_permissions;
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
875 char buf[8192], *progress = "|/-\\";
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
876 struct timeval updatetime;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
877 long fromsize, total;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
878 gftp_file * curfle;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
879 ssize_t num_read;
182
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
880 mode_t mode;
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
881
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
882 gftp_lookup_request_option (transfer->fromreq, "preserve_permissions",
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
883 &preserve_permissions);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
884
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
885 for (transfer->curfle = transfer->files;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
886 transfer->curfle != NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
887 transfer->curfle = transfer->curfle->next)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
888 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
889 curfle = transfer->curfle->data;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
890 if (curfle->transfer_action == GFTP_TRANS_ACTION_SKIP)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
891 continue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
892
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
893 if (curfle->isdir && transfer->toreq->mkdir != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
894 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
895 transfer->toreq->mkdir (transfer->toreq, curfle->destfile);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
896 continue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
897 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
898
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
899 transfer->curtrans = curfle->startsize;
58
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
900 fromsize = gftp_transfer_file (transfer->fromreq, curfle->file, -1,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
901 curfle->startsize, transfer->toreq, curfle->destfile,
58
c01d91c10f6c 2002-11-20 Brian Masney <masneyb@gftp.org>
masneyb
parents: 56
diff changeset
902 -1, curfle->startsize);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
903 if (fromsize < 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
904 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
905
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
906 gettimeofday (&transfer->starttime, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
907 memcpy (&transfer->lasttime, &transfer->starttime,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
908 sizeof (transfer->lasttime));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
909 memset (&updatetime, 0, sizeof (updatetime));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
910
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
911 total = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
912 i = 0;
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
913 num_read = -1;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
914 while (!cancel && (num_read = gftp_get_next_file_chunk (transfer->fromreq,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
915 buf, sizeof (buf))) > 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
916 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
917 printf ("\r%c ", progress[i++]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
918 fflush (stdout);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
919 if (progress[i] == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
920 i = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
921
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
922 total += num_read;
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
923 gftp_calc_kbs (transfer, num_read);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
924 if (transfer->lasttime.tv_sec - updatetime.tv_sec >= 1 || total >= fromsize)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
925 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
926 sw = gftp_text_get_win_size () - 20;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
927 tot = (float) total / (float) fromsize * (float) sw;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
928
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
929 if (tot > sw)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
930 tot = sw;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
931 printf ("[");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
932 for (j=0; j<tot; j++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
933 printf ("=");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
934 for (j=0; j<sw-tot; j++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
935 printf (" ");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
936 printf ("] @ %.2fKB/s", transfer->kbs);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
937 fflush (stdout);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
938 memcpy (&updatetime, &transfer->lasttime, sizeof (updatetime));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
939 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
940
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
941 if (gftp_put_next_file_chunk (transfer->toreq, buf, num_read) < 0)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
942 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
943 num_read = -1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
944 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
945 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
946 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
947 printf ("\n");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
948
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
949 if (num_read < 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
950 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
951 gftp_text_log (gftp_logging_misc, transfer->fromreq,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
952 _("Could not download %s\n"), curfle->file);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
953 gftp_disconnect (transfer->fromreq);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
954 gftp_disconnect (transfer->toreq);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
955 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
956 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
957 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
958 gftp_text_log (gftp_logging_misc, transfer->fromreq,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
959 _("Successfully transferred %s\n"), curfle->file);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
960 gftp_end_transfer (transfer->fromreq);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
961 gftp_end_transfer (transfer->toreq);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
962 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
963
182
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
964 if (!curfle->is_fd && preserve_permissions)
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
965 {
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
966 if (curfle->attribs)
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
967 {
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
968 mode = gftp_parse_attribs (curfle->attribs);
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
969 if (mode != 0)
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
970 gftp_chmod (transfer->toreq, curfle->destfile, mode);
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
971 }
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
972
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
973 if (curfle->datetime != 0)
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
974 gftp_set_file_time (transfer->toreq, curfle->destfile,
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
975 curfle->datetime);
33b394ebba68 2003-6-15 Brian Masney <masneyb@gftp.org>
masneyb
parents: 179
diff changeset
976 }
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
977 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
978 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
979 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
980
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
981
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
982 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
983 gftp_text_help (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
984 {
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
985 int i, j, ele, numrows, numcols = 6, handled;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
986 char *pos;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
987
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
988 if (command != NULL && *command != '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
989 {
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
990 for (pos = command; *pos != ' ' && *pos != '\0'; pos++);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
991 if (*pos == ' ')
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
992 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
993 *pos++ = '\0';
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
994 if (*pos == '\0')
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
995 pos = NULL;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
996 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
997 else
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
998 pos = NULL;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
999
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1000 for (i=0; gftp_text_methods[i].command != NULL; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1001 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1002 if (strcmp (gftp_text_methods[i].command, command) == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1003 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1004 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1005
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1006 if (gftp_text_methods[i].cmd_description != NULL)
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1007 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1008 if (pos != NULL && gftp_text_methods[i].subhelp_func != NULL)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1009 handled = gftp_text_methods[i].subhelp_func (pos);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1010 else
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1011 handled = 0;
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1012
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1013 if (!handled)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1014 printf ("%s\n", _(gftp_text_methods[i].cmd_description));
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1015 }
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1016 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1017 *command = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1018 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1019
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1020 if (command == NULL || *command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1021 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1022 numrows = number_commands / numcols;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1023 if (number_commands % numcols != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1024 numrows++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1025
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1026 printf (_("Supported commands:\n\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1027 for (i=0; i<numrows; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1028 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1029 printf (" ");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1030 for (j=0; j<numcols; j++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1031 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1032 ele = i + j * numrows;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1033 if (ele >= number_commands)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1034 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1035 printf ("%-10s", gftp_text_methods[ele].command);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1036 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1037 printf ("\n");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1038 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1039
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1040 printf ("\n");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1041 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1042 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1043 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1044
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1045
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1046 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1047 gftp_text_set (gftp_request * request, char *command, gpointer *data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1048 {
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1049 gftp_config_vars * cv;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1050 char *pos, *backpos;
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1051 GList * templist;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1052 int i;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1053
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1054 if (command == NULL || *command == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1055 {
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1056 for (templist = gftp_options_list;
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1057 templist != NULL;
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1058 templist = templist->next)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1059 {
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1060 cv = templist->data;
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1061
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1062 for (i=0; cv[i].key != NULL; i++)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1063 {
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1064 if (!(cv[i].ports_shown & GFTP_PORT_TEXT))
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1065 continue;
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1066
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1067 if (*cv[i].key == '\0' ||
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1068 gftp_option_types[cv[i].otype].write_function == NULL)
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1069 continue;
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1070
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1071 printf ("%s = ", cv[i].key);
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1072 gftp_option_types[cv[i].otype].write_function (&cv[i], stdout, 0);
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1073 printf ("\n");
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1074 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1075 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1076 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1077 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1078 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1079 if ((pos = strchr (command, '=')) == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1080 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
1081 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1082 _("usage: set [variable = value]\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1083 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1084 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1085 *pos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1086
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1087 for (backpos = pos - 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1088 (*backpos == ' ' || *backpos == '\t') && backpos > command;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1089 backpos--)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1090 *backpos = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1091 for (++pos; *pos == ' ' || *pos == '\t'; pos++);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1092
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1093 if ((cv = g_hash_table_lookup (gftp_global_options_htable, command)) == NULL)
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1094 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
1095 gftp_text_log (gftp_logging_error, request,
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1096 _("Error: Variable %s is not a valid configuration variable.\n"), command);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1097 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1098 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1099
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1100 if (!(cv->ports_shown & GFTP_PORT_TEXT))
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1101 {
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
1102 gftp_text_log (gftp_logging_error, request,
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1103 _("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
1104 return (1);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1105 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1106
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1107 if (gftp_option_types[cv->otype].read_function != NULL)
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 186
diff changeset
1108 gftp_option_types[cv->otype].read_function (pos, cv, 1);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1109 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1110
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1111 return (1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1112 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1113
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1114
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1115 int
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1116 gftp_text_clear (gftp_request * request, char *command, gpointer *data)
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 if (strcasecmp (command, "cache") == 0)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1119 gftp_clear_cache_files ();
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1120 else
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
1121 gftp_text_log (gftp_logging_error, request, _("Invalid argument\n"));
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1122 return (1);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1123 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1124
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1125
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1126 char *
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1127 gftp_text_ask_question (const char *question, int echo, char *buf, size_t size)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1128 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1129 struct termios term, oldterm;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1130 sigset_t sig, sigsave;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1131 char *pos, *termname;
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 186
diff changeset
1132 FILE *infd;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1133
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1134 if (!echo)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1135 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1136 sigemptyset (&sig);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1137 sigaddset (&sig, SIGINT);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1138 sigaddset (&sig, SIGTSTP);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1139 sigprocmask (SIG_BLOCK, &sig, &sigsave);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1140
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1141 termname = ctermid (NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1142 if ((infd = fopen (termname, "r+")) == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1143 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1144
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1145 gftp_text_log (gftp_logging_error, NULL,
186
13ca1defdc75 2003-6-16 Brian Masney <masneyb@gftp.org>
masneyb
parents: 182
diff changeset
1146 _("Cannot open controlling terminal %s\n"), termname);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1147 return (NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1148 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1149
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1150 tcgetattr (0, &term);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1151 oldterm = term;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1152 term.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1153 tcsetattr (fileno (infd), TCSAFLUSH, &term);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1154 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1155 else
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 186
diff changeset
1156 infd = stdin;
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1157
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 186
diff changeset
1158 printf ("%s%s%s: ", COLOR_BLUE, question, COLOR_DEFAULT);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1159
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1160 if (fgets (buf, size, infd) == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1161 return (NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1162 buf[size - 1] = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1163
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1164 if (!echo)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1165 {
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 186
diff changeset
1166 printf ("\n");
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1167 tcsetattr (fileno (infd), TCSAFLUSH, &oldterm);
201
0098dae654a5 2003-6-25 Brian Masney <masneyb@gftp.org>
masneyb
parents: 186
diff changeset
1168 fclose (infd);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1169 sigprocmask (SIG_SETMASK, &sigsave, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1170 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1171
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1172 for (pos = buf + strlen (buf) - 1; *pos == ' ' || *pos == '\r' ||
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1173 *pos == '\n'; pos--);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1174 *(pos+1) = '\0';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1175
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1176 for (pos = buf; *pos == ' '; pos++);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1177 if (*pos == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1178 return (NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1179
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1180 return (pos);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1181 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1182
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1183
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1184 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1185 gftp_text_get_win_size (void)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1186 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1187 struct winsize size;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1188 int ret;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1189
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1190 if (ioctl (0, TIOCGWINSZ, (char *) &size) < 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1191 ret = 80;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1192 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1193 ret = size.ws_col;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1194 return (ret);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1195 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1196
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1197
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1198 void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1199 sig_child (int signo)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1200 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1201 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1202
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1203
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1204 int
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1205 gftp_text_set_show_subhelp (char *topic)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1206 {
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1207 gftp_config_vars * cv;
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1208
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1209 if ((cv = g_hash_table_lookup (gftp_global_options_htable, topic)) != NULL)
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1210 {
122
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1211 printf ("%s\n", cv->comment);
76e2b58a9440 2003-4-5 Brian Masney <masneyb@gftp.org>
masneyb
parents: 67
diff changeset
1212 return (1);
37
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1213 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1214
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1215 return (0);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1216 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1217
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1218
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1219 int
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1220 gftp_text_clear_show_subhelp (char *topic)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1221 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1222 if (strcmp (topic, "cache") == 0)
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1223 {
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1224 printf (_("Clear the directory cache\n"));
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1225 return (1);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1226 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1227
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1228 return (0);
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1229 }
5a178bd04ca5 2002-10-13 Brian Masney <masneyb@gftp.org>
masneyb
parents: 33
diff changeset
1230