X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Fftp.h;h=be00d8806e2e7c551e3f24ea6b3e1107be1bde01;hp=06a53318fde5aa6bc00be4863898fab974b01e89;hb=2f6aa1d7417df1dfc58597777686fbd77179b9fd;hpb=fdc20de3650934819a33723fb297584acdf2483b diff --git a/src/ftp.h b/src/ftp.h index 06a53318..be00d880 100644 --- a/src/ftp.h +++ b/src/ftp.h @@ -1,25 +1,38 @@ /* Declarations for FTP support. - Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, + 2005, 2006, 2007, 2008, 2009, 2010, 2011 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 . + +Additional permission under GNU GPL version 3 section 7 + +If you modify this program, or any covered work, by linking or +combining it with the OpenSSL project's OpenSSL library (or a +modified version of that library), containing parts covered by the +terms of the OpenSSL or SSLeay licenses, the Free Software Foundation +grants you additional permission to convey the resulting work. +Corresponding Source for a non-source form of such a combination +shall include the source code for the parts of OpenSSL used as well +as that of the covered work. */ #ifndef FTP_H #define FTP_H -/* Need it for struct rbuf. */ -#include "rbuf.h" +#include "host.h" /* System types. */ enum stype @@ -27,22 +40,37 @@ enum stype ST_UNIX, ST_VMS, ST_WINNT, + ST_MACOS, + ST_OS400, ST_OTHER }; - -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 *)); -uerr_t ftp_syst PARAMS ((struct rbuf *, enum stype *)); -uerr_t ftp_pwd PARAMS ((struct rbuf *, char **)); - -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 *, enum stype); +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 @@ -57,16 +85,24 @@ enum ftype /* Globbing (used by ftp_retrieve_glob). */ enum { - GLOBALL, GETALL, GETONE + GLOB_GLOBALL, GLOB_GETALL, GLOB_GETONE +}; + +/* Used by to test if time parsed includes hours and minutes. */ +enum parsetype +{ + TT_HOUR_MIN, TT_DAY }; + /* Information about one filename in a linked list. */ struct fileinfo { enum ftype type; /* file type */ char *name; /* file name */ - long size; /* file size */ + wgint size; /* file size */ long tstamp; /* time-stamp */ + enum parsetype ptype; /* time parsing */ int perms; /* file permissions */ char *linkto; /* link to which file points */ struct fileinfo *prev; /* previous... */ @@ -92,17 +128,12 @@ enum wget_ftp_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 (const char *, const enum stype); +uerr_t ftp_loop (struct url *, char **, int *, struct url *, bool, bool); + +uerr_t ftp_index (const char *, struct url *, struct fileinfo *); -struct fileinfo *ftp_parse_ls PARAMS ((const char *, enum stype)); -uerr_t ftp_loop PARAMS ((struct urlinfo *, int *)); +char ftp_process_type (const char *); -uerr_t ftp_index (const char *, struct urlinfo *, struct fileinfo *); #endif /* FTP_H */