X-Git-Url: http://sjero.net/git/?a=blobdiff_plain;f=src%2Fftp.h;h=3bdc4f7e361e54596456ca909cb383dd01427d19;hb=4d7c5e087b2bc82c9f503dff003916d1047903ce;hp=c2e6d44cda3e886608e12cf985e517f3626a9312;hpb=31d6616c483359af431f4c33c3c5b237cd8d4426;p=wget diff --git a/src/ftp.h b/src/ftp.h index c2e6d44c..3bdc4f7e 100644 --- a/src/ftp.h +++ b/src/ftp.h @@ -1,37 +1,73 @@ /* Declarations for FTP support. - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1996-2006 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. +This file is part of GNU Wget. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +GNU Wget is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3 of the License, or +(at your option) any later version. - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +GNU Wget is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Wget. If not, see . + +In addition, as a special exception, the Free Software Foundation +gives permission to link the code of its release of Wget with the +OpenSSL project's "OpenSSL" library (or with modified versions of it +that use the same license as the "OpenSSL" library), and distribute +the linked executables. You must obey the GNU General Public License +in all respects for all of the code used other than "OpenSSL". If you +modify this file, you may extend this exception to your version of the +file, but you are not obligated to do so. If you do not wish to do +so, delete this exception statement from your version. */ #ifndef FTP_H #define FTP_H -/* Need it for struct rbuf. */ -#include "rbuf.h" +#include "host.h" -uerr_t ftp_response PARAMS ((struct rbuf *, char **)); -uerr_t ftp_login PARAMS ((struct rbuf *, const char *, const char *)); -uerr_t ftp_port PARAMS ((struct rbuf *)); -uerr_t ftp_pasv PARAMS ((struct rbuf *, unsigned char *)); -uerr_t ftp_type PARAMS ((struct rbuf *, int)); -uerr_t ftp_cwd PARAMS ((struct rbuf *, const char *)); -uerr_t ftp_retr PARAMS ((struct rbuf *, const char *)); -uerr_t ftp_rest PARAMS ((struct rbuf *, long)); -uerr_t ftp_list PARAMS ((struct rbuf *, const char *)); +/* System types. */ +enum stype +{ + ST_UNIX, + ST_VMS, + ST_WINNT, + ST_MACOS, + ST_OS400, + ST_OTHER +}; -struct urlinfo; +extern char ftp_last_respline[]; + +uerr_t ftp_response (int, char **); +uerr_t ftp_login (int, const char *, const char *); +uerr_t ftp_port (int, int *); +uerr_t ftp_pasv (int, ip_address *, int *); +#ifdef ENABLE_IPV6 +uerr_t ftp_lprt (int, int *); +uerr_t ftp_lpsv (int, ip_address *, int *); +uerr_t ftp_eprt (int, int *); +uerr_t ftp_epsv (int, ip_address *, int *); +#endif +uerr_t ftp_type (int, int); +uerr_t ftp_cwd (int, const char *); +uerr_t ftp_retr (int, const char *); +uerr_t ftp_rest (int, wgint); +uerr_t ftp_list (int, const char *); +uerr_t ftp_syst (int, enum stype *); +uerr_t ftp_pwd (int, char **); +uerr_t ftp_size (int, const char *, wgint *); + +#ifdef ENABLE_OPIE +const char *skey_response (int, const char *, const char *); +#endif + +struct url; /* File types. */ enum ftype @@ -46,7 +82,7 @@ enum ftype /* Globbing (used by ftp_retrieve_glob). */ enum { - GLOBALL, GETALL, GETONE + GLOB_GLOBALL, GLOB_GETALL, GLOB_GETONE }; /* Information about one filename in a linked list. */ @@ -54,7 +90,7 @@ struct fileinfo { enum ftype type; /* file type */ char *name; /* file name */ - long size; /* file size */ + wgint size; /* file size */ long tstamp; /* time-stamp */ int perms; /* file permissions */ char *linkto; /* link to which file points */ @@ -63,7 +99,7 @@ struct fileinfo }; /* Commands for FTP functions. */ -enum command +enum wget_ftp_command { DO_LOGIN = 0x0001, /* Connect and login to the server. */ DO_CWD = 0x0002, /* Change current directory. */ @@ -72,7 +108,7 @@ enum command LEAVE_PENDING = 0x0010 /* Do not close the socket. */ }; -enum fstatus +enum wget_ftp_fstatus { NOTHING = 0x0000, /* Nothing done yet. */ ON_YOUR_OWN = 0x0001, /* The ftp_loop_internal sets the @@ -81,15 +117,12 @@ enum fstatus correct. */ }; -typedef struct -{ - int st; /* connection status */ - int cmd; /* command code */ - struct rbuf rbuf; /* control connection buffer */ - long dltime; /* time of the download */ -} ccon; - -struct fileinfo *ftp_parse_ls PARAMS ((const char *)); -uerr_t ftp_loop PARAMS ((struct urlinfo *, int *)); +struct fileinfo *ftp_parse_ls (const char *, const enum stype); +uerr_t ftp_loop (struct url *, int *, struct url *, bool, bool); + +uerr_t ftp_index (const char *, struct url *, struct fileinfo *); + +char ftp_process_type (const char *); + #endif /* FTP_H */