X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=src%2Fftp.h;h=be00d8806e2e7c551e3f24ea6b3e1107be1bde01;hp=064e6354fdc8940aa14f16d9b97c890d311d46e2;hb=2f6aa1d7417df1dfc58597777686fbd77179b9fd;hpb=b0b1c815c15e49c9172f59428810713097a65e37 diff --git a/src/ftp.h b/src/ftp.h index 064e6354..be00d880 100644 --- a/src/ftp.h +++ b/src/ftp.h @@ -1,37 +1,76 @@ /* Declarations for FTP support. - Copyright (C) 1995, 1996, 1997 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" -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 *, 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 @@ -46,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... */ @@ -63,7 +110,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 +119,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,17 +128,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 (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 *)); -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 */