~ubuntu-branches/ubuntu/hardy/wget/hardy

« back to all changes in this revision

Viewing changes to src/ftp.h

  • Committer: Bazaar Package Importer
  • Author(s): Noèl Köthe
  • Date: 2004-02-13 20:26:44 UTC
  • Revision ID: james.westby@ubuntu.com-20040213202644-skxj93qs15sskqfy
Tags: upstream-1.9.1
Import upstream version 1.9.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Declarations for FTP support.
 
2
   Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
 
3
 
 
4
This file is part of GNU Wget.
 
5
 
 
6
GNU Wget is free software; you can redistribute it and/or modify
 
7
it under the terms of the GNU General Public License as published by
 
8
the Free Software Foundation; either version 2 of the License, or
 
9
(at your option) any later version.
 
10
 
 
11
GNU Wget is distributed in the hope that it will be useful,
 
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
GNU General Public License for more details.
 
15
 
 
16
You should have received a copy of the GNU General Public License
 
17
along with Wget; if not, write to the Free Software
 
18
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
19
 
 
20
In addition, as a special exception, the Free Software Foundation
 
21
gives permission to link the code of its release of Wget with the
 
22
OpenSSL project's "OpenSSL" library (or with modified versions of it
 
23
that use the same license as the "OpenSSL" library), and distribute
 
24
the linked executables.  You must obey the GNU General Public License
 
25
in all respects for all of the code used other than "OpenSSL".  If you
 
26
modify this file, you may extend this exception to your version of the
 
27
file, but you are not obligated to do so.  If you do not wish to do
 
28
so, delete this exception statement from your version.  */
 
29
 
 
30
#ifndef FTP_H
 
31
#define FTP_H
 
32
 
 
33
/* Need it for struct rbuf.  */
 
34
#include "rbuf.h"
 
35
 
 
36
#include "host.h"
 
37
 
 
38
/* System types. */
 
39
enum stype
 
40
{
 
41
  ST_UNIX,
 
42
  ST_VMS,
 
43
  ST_WINNT,
 
44
  ST_MACOS,
 
45
  ST_OS400,
 
46
  ST_OTHER
 
47
};
 
48
  
 
49
uerr_t ftp_response PARAMS ((struct rbuf *, char **));
 
50
uerr_t ftp_login PARAMS ((struct rbuf *, const char *, const char *));
 
51
uerr_t ftp_port PARAMS ((struct rbuf *));
 
52
uerr_t ftp_pasv PARAMS ((struct rbuf *, ip_address *, unsigned short *));
 
53
#ifdef ENABLE_IPV6
 
54
uerr_t ftp_epsv PARAMS ((struct rbuf *, ip_address *, unsigned short *,
 
55
                         char *));
 
56
#endif
 
57
uerr_t ftp_type PARAMS ((struct rbuf *, int));
 
58
uerr_t ftp_cwd PARAMS ((struct rbuf *, const char *));
 
59
uerr_t ftp_retr PARAMS ((struct rbuf *, const char *));
 
60
uerr_t ftp_rest PARAMS ((struct rbuf *, long));
 
61
uerr_t ftp_list PARAMS ((struct rbuf *, const char *));
 
62
uerr_t ftp_syst PARAMS ((struct rbuf *, enum stype *));
 
63
uerr_t ftp_pwd PARAMS ((struct rbuf *, char **));
 
64
uerr_t ftp_size PARAMS ((struct rbuf *, const char *, long int *));
 
65
 
 
66
struct url;
 
67
 
 
68
/* File types.  */
 
69
enum ftype
 
70
{
 
71
  FT_PLAINFILE,
 
72
  FT_DIRECTORY,
 
73
  FT_SYMLINK,
 
74
  FT_UNKNOWN
 
75
};
 
76
 
 
77
 
 
78
/* Globbing (used by ftp_retrieve_glob).  */
 
79
enum
 
80
{
 
81
  GLOBALL, GETALL, GETONE
 
82
};
 
83
 
 
84
/* Information about one filename in a linked list.  */
 
85
struct fileinfo
 
86
{
 
87
  enum ftype type;              /* file type */
 
88
  char *name;                   /* file name */
 
89
  long size;                    /* file size */
 
90
  long tstamp;                  /* time-stamp */
 
91
  int perms;                    /* file permissions */
 
92
  char *linkto;                 /* link to which file points */
 
93
  struct fileinfo *prev;        /* previous... */
 
94
  struct fileinfo *next;        /* ...and next structure. */
 
95
};
 
96
 
 
97
/* Commands for FTP functions.  */
 
98
enum wget_ftp_command
 
99
{
 
100
  DO_LOGIN      = 0x0001,       /* Connect and login to the server.  */
 
101
  DO_CWD        = 0x0002,       /* Change current directory.  */
 
102
  DO_RETR       = 0x0004,       /* Retrieve the file.  */
 
103
  DO_LIST       = 0x0008,       /* Retrieve the directory list.  */
 
104
  LEAVE_PENDING = 0x0010,       /* Do not close the socket.  */
 
105
  NO_TRUNCATE   = 0x0020        /* Don't truncate the file if REST
 
106
                                   malfunctions. */
 
107
};
 
108
 
 
109
enum wget_ftp_fstatus
 
110
{
 
111
  NOTHING       = 0x0000,       /* Nothing done yet.  */
 
112
  ON_YOUR_OWN   = 0x0001,       /* The ftp_loop_internal sets the
 
113
                                   defaults.  */
 
114
  DONE_CWD      = 0x0002        /* The current working directory is
 
115
                                   correct.  */
 
116
};
 
117
 
 
118
struct fileinfo *ftp_parse_ls PARAMS ((const char *, const enum stype));
 
119
uerr_t ftp_loop PARAMS ((struct url *, int *, struct url *));
 
120
 
 
121
uerr_t ftp_index PARAMS ((const char *, struct url *, struct fileinfo *));
 
122
 
 
123
char ftp_process_type PARAMS ((const char *));
 
124
 
 
125
 
 
126
#endif /* FTP_H */