annotate src/text/gftp-text.c @ 33:c8ec7877432e

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