xref: /freebsd/lib/libfetch/fetch.3 (revision 15efcd39ae8c9171f62e33c8bde3ae23dde6e213)
14ca1ab94SDag-Erling Smørgrav.\" Copyright (c) 1998 Dag-Erling Co�dan Sm�rgrav
24ca1ab94SDag-Erling Smørgrav.\" All rights reserved.
34ca1ab94SDag-Erling Smørgrav.\"
44ca1ab94SDag-Erling Smørgrav.\" Redistribution and use in source and binary forms, with or without
54ca1ab94SDag-Erling Smørgrav.\" modification, are permitted provided that the following conditions
64ca1ab94SDag-Erling Smørgrav.\" are met:
74ca1ab94SDag-Erling Smørgrav.\" 1. Redistributions of source code must retain the above copyright
84ca1ab94SDag-Erling Smørgrav.\"    notice, this list of conditions and the following disclaimer.
94ca1ab94SDag-Erling Smørgrav.\" 2. Redistributions in binary form must reproduce the above copyright
104ca1ab94SDag-Erling Smørgrav.\"    notice, this list of conditions and the following disclaimer in the
114ca1ab94SDag-Erling Smørgrav.\"    documentation and/or other materials provided with the distribution.
124ca1ab94SDag-Erling Smørgrav.\"
134ca1ab94SDag-Erling Smørgrav.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
144ca1ab94SDag-Erling Smørgrav.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
154ca1ab94SDag-Erling Smørgrav.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
164ca1ab94SDag-Erling Smørgrav.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
174ca1ab94SDag-Erling Smørgrav.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
184ca1ab94SDag-Erling Smørgrav.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
194ca1ab94SDag-Erling Smørgrav.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
204ca1ab94SDag-Erling Smørgrav.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
214ca1ab94SDag-Erling Smørgrav.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
224ca1ab94SDag-Erling Smørgrav.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
234ca1ab94SDag-Erling Smørgrav.\" SUCH DAMAGE.
244ca1ab94SDag-Erling Smørgrav.\"
257f3dea24SPeter Wemm.\" $FreeBSD$
264ca1ab94SDag-Erling Smørgrav.\"
274ca1ab94SDag-Erling Smørgrav.Dd July 1, 1998
284ca1ab94SDag-Erling Smørgrav.Dt FETCH 3
294ca1ab94SDag-Erling Smørgrav.Os
304ca1ab94SDag-Erling Smørgrav.Sh NAME
314ca1ab94SDag-Erling Smørgrav.Nm fetchGetURL ,
324ca1ab94SDag-Erling Smørgrav.Nm fetchPutURL ,
33d8acd8dcSDag-Erling Smørgrav.Nm fetchStatURL ,
34ce71b736SDag-Erling Smørgrav.Nm fetchListURL ,
35db5f8cebSDag-Erling Smørgrav.Nm fetchParseURL ,
36db5f8cebSDag-Erling Smørgrav.Nm fetchGet ,
37db5f8cebSDag-Erling Smørgrav.Nm fetchPut ,
38d8acd8dcSDag-Erling Smørgrav.Nm fetchStat ,
39ce71b736SDag-Erling Smørgrav.Nm fetchList ,
404ca1ab94SDag-Erling Smørgrav.Nm fetchGetFile ,
414ca1ab94SDag-Erling Smørgrav.Nm fetchPutFile ,
42d8acd8dcSDag-Erling Smørgrav.Nm fetchStatFile ,
43ce71b736SDag-Erling Smørgrav.Nm fetchListFile ,
444ca1ab94SDag-Erling Smørgrav.Nm fetchGetHTTP ,
454ca1ab94SDag-Erling Smørgrav.Nm fetchPutHTTP ,
46d8acd8dcSDag-Erling Smørgrav.Nm fetchStatHTTP ,
47ce71b736SDag-Erling Smørgrav.Nm fetchListHTTP ,
484ca1ab94SDag-Erling Smørgrav.Nm fetchGetFTP ,
4915efcd39SAlexey Zelkin.Nm fetchPutFTP ,
5015efcd39SAlexey Zelkin.Nm fetchStatFTP ,
5115efcd39SAlexey Zelkin.Nm fetchListFTP
5215efcd39SAlexey Zelkin.Nd file transfer functions
5315efcd39SAlexey Zelkin.Sh LIBRARY
5415efcd39SAlexey Zelkin.Lb libfetch
554ca1ab94SDag-Erling Smørgrav.Sh SYNOPSIS
560fba3a00SDag-Erling Smørgrav.Fd #include <sys/param.h>
570fba3a00SDag-Erling Smørgrav.Fd #include <stdio.h>
584ca1ab94SDag-Erling Smørgrav.Fd #include <fetch.h>
59db5f8cebSDag-Erling Smørgrav.Ft FILE *
60db5f8cebSDag-Erling Smørgrav.Fn fetchGetURL "char *URL" "char *flags"
61db5f8cebSDag-Erling Smørgrav.Ft FILE *
62db5f8cebSDag-Erling Smørgrav.Fn fetchPutURL "char *URL" "char *flags"
63d8acd8dcSDag-Erling Smørgrav.Ft int
64d8acd8dcSDag-Erling Smørgrav.Fn fetchStatURL "char *URL" "struct url_stat *us" "char *flags"
65ce71b736SDag-Erling Smørgrav.Ft struct url_ent *
66ce71b736SDag-Erling Smørgrav.Fn fetchListURL "char *URL" "char *flags"
67d8acd8dcSDag-Erling Smørgrav.Ft struct url *
68e7720fa8SBruce Evans.Fn fetchParseURL "char *URL"
694ca1ab94SDag-Erling Smørgrav.Ft FILE *
70d8acd8dcSDag-Erling Smørgrav.Fn fetchGet "struct url *URL" "char *flags"
71db5f8cebSDag-Erling Smørgrav.Ft FILE *
72d8acd8dcSDag-Erling Smørgrav.Fn fetchPut "struct url *URL" "char *flags"
73d8acd8dcSDag-Erling Smørgrav.Ft int
74d8acd8dcSDag-Erling Smørgrav.Fn fetchStat "struct url *URL" "struct url_stat *us" "char *flags"
75ce71b736SDag-Erling Smørgrav.Ft struct url_ent *
76ce71b736SDag-Erling Smørgrav.Fn fetchList "struct url *" "char *flags"
77db5f8cebSDag-Erling Smørgrav.Ft FILE *
78d8acd8dcSDag-Erling Smørgrav.Fn fetchGetFile "struct url *u" "char *flags"
794ca1ab94SDag-Erling Smørgrav.Ft FILE *
80d8acd8dcSDag-Erling Smørgrav.Fn fetchPutFile "struct url *u" "char *flags"
81d8acd8dcSDag-Erling Smørgrav.Ft int
82d8acd8dcSDag-Erling Smørgrav.Fn fetchStatFile "struct url *URL" "struct url_stat *us" "char *flags"
83ce71b736SDag-Erling Smørgrav.Ft struct url_ent *
84ce71b736SDag-Erling Smørgrav.Fn fetchListFile "struct url *" "char *flags"
854ca1ab94SDag-Erling Smørgrav.Ft FILE *
86d8acd8dcSDag-Erling Smørgrav.Fn fetchGetHTTP "struct url *u" "char *flags"
874ca1ab94SDag-Erling Smørgrav.Ft FILE *
88d8acd8dcSDag-Erling Smørgrav.Fn fetchPutHTTP "struct url *u" "char *flags"
89d8acd8dcSDag-Erling Smørgrav.Ft int
90d8acd8dcSDag-Erling Smørgrav.Fn fetchStatHTTP "struct url *URL" "struct url_stat *us" "char *flags"
91ce71b736SDag-Erling Smørgrav.Ft struct url_ent *
92ce71b736SDag-Erling Smørgrav.Fn fetchListHTTP "struct url *" "char *flags"
934ca1ab94SDag-Erling Smørgrav.Ft FILE *
94d8acd8dcSDag-Erling Smørgrav.Fn fetchGetFTP "struct url *u" "char *flags"
954ca1ab94SDag-Erling Smørgrav.Ft FILE *
96d8acd8dcSDag-Erling Smørgrav.Fn fetchPutFTP "struct url *u" "char *flags"
97d8acd8dcSDag-Erling Smørgrav.Ft int
98d8acd8dcSDag-Erling Smørgrav.Fn fetchStatFTP "struct url *URL" "struct url_stat *us" "char *flags"
99ce71b736SDag-Erling Smørgrav.Ft struct url_ent *
100ce71b736SDag-Erling Smørgrav.Fn fetchListFTP "struct url *" "char *flags"
1014ca1ab94SDag-Erling Smørgrav.Sh DESCRIPTION
102d8acd8dcSDag-Erling Smørgrav.Pp
1034ca1ab94SDag-Erling SmørgravThese functions implement a high-level library for retrieving and
1044ca1ab94SDag-Erling Smørgravuploading files using Uniform Resource Locators (URLs).
1054ca1ab94SDag-Erling Smørgrav.Pp
106db5f8cebSDag-Erling Smørgrav.Fn fetchGetURL
107db5f8cebSDag-Erling Smørgravand
108db5f8cebSDag-Erling Smørgrav.Fn fetchPutURL
109db5f8cebSDag-Erling Smørgravconstitute the recommended interface to the
110db5f8cebSDag-Erling Smørgrav.Nm fetch
111c6ff3a1bSSheldon Hearnlibrary.
112c6ff3a1bSSheldon HearnThey examine the URL passed to them to determine the transfer
113db5f8cebSDag-Erling Smørgravmethod, and call the appropriate lower-level functions to perform the
114c6ff3a1bSSheldon Hearnactual transfer.
115c6ff3a1bSSheldon HearnThe
116db5f8cebSDag-Erling Smørgrav.Fa flags
117c6ff3a1bSSheldon Hearnargument is a string of characters which specify transfer options.
118c6ff3a1bSSheldon HearnThe
119db5f8cebSDag-Erling Smørgravmeaning of the individual flags is scheme-dependent, and is detailed
120db5f8cebSDag-Erling Smørgravin the appropriate section below.
121db5f8cebSDag-Erling Smørgrav.Pp
122d8acd8dcSDag-Erling Smørgrav.Fn fetchStatURL
123d8acd8dcSDag-Erling Smørgravattempts to obtain the requested document's metadata and fill in the
124c6ff3a1bSSheldon Hearnstructure pointed to by it's second argument.
125c6ff3a1bSSheldon HearnThe
126d8acd8dcSDag-Erling Smørgrav.Fa url_stat
127d8acd8dcSDag-Erling Smørgravstructure is defined as follows in
128d8acd8dcSDag-Erling Smørgrav.Aq Pa fetch.h :
129d8acd8dcSDag-Erling Smørgrav.Bd -literal
130d8acd8dcSDag-Erling Smørgravstruct url_stat {
131d8acd8dcSDag-Erling Smørgrav    off_t	 size;
1325aea254fSDag-Erling Smørgrav    time_t	 atime;
1335aea254fSDag-Erling Smørgrav    time_t	 mtime;
134d8acd8dcSDag-Erling Smørgrav};
135d8acd8dcSDag-Erling Smørgrav.Ed
136d8acd8dcSDag-Erling Smørgrav.Pp
137ce71b736SDag-Erling Smørgrav.Fn fetchListURL
138ce71b736SDag-Erling Smørgravattempts to list the contents of the directory pointed to by the URL
139c6ff3a1bSSheldon Hearnprovided.
140c6ff3a1bSSheldon HearnIf successful, it returns a malloced array of
141ce71b736SDag-Erling Smørgrav.Fa url_ent
142c6ff3a1bSSheldon Hearnstructures.
143c6ff3a1bSSheldon HearnThe
144ce71b736SDag-Erling Smørgrav.Fa url_ent
145ce71b736SDag-Erling Smørgravstructure is defined as follows in
146ce71b736SDag-Erling Smørgrav.Aq Pa fetch.h :
147ce71b736SDag-Erling Smørgrav.Bd -literal
148ce71b736SDag-Erling Smørgravstruct url_ent {
149ce71b736SDag-Erling Smørgrav    char         name[MAXPATHLEN];
150ce71b736SDag-Erling Smørgrav    struct url_stat stat;
151ce71b736SDag-Erling Smørgrav};
152ce71b736SDag-Erling Smørgrav.Ed
153ce71b736SDag-Erling Smørgrav.Pp
154ce71b736SDag-Erling SmørgravThe list is terminated by an entry with an empty name.
155ce71b736SDag-Erling Smørgrav.Pp
156ce71b736SDag-Erling SmørgravThe pointer returned by
157ce71b736SDag-Erling Smørgrav.Fn fetchListURL
158ce71b736SDag-Erling Smørgravshould be freed using
159ce71b736SDag-Erling Smørgrav.Fn free .
160ce71b736SDag-Erling Smørgrav.Pp
1614ca1ab94SDag-Erling Smørgrav.Fn fetchParseURL
1624ca1ab94SDag-Erling Smørgravtakes a URL in the form of a null-terminated string and splits it into
1634ca1ab94SDag-Erling Smørgravits components function according to the Common Internet Scheme Syntax
1644ca1ab94SDag-Erling Smørgravdetailed in RFC1738. A regular expression which produces this syntax
1654ca1ab94SDag-Erling Smørgravis:
1664ca1ab94SDag-Erling Smørgrav.Bd -literal
1674ca1ab94SDag-Erling Smørgrav    <scheme>:(//(<user>(:<pwd>)?@)?<host>(:<port>)?)?/(<document>)?
1684ca1ab94SDag-Erling Smørgrav.Ed
1694ca1ab94SDag-Erling Smørgrav.Pp
1704ca1ab94SDag-Erling SmørgravNote that some components of the URL are not necessarily relevant to
171c6ff3a1bSSheldon Hearnall URL schemes.
172c6ff3a1bSSheldon HearnFor instance, the file scheme only needs the <scheme>
1734ca1ab94SDag-Erling Smørgravand <document> components.
1744ca1ab94SDag-Erling Smørgrav.Pp
1754ca1ab94SDag-Erling SmørgravThe pointer returned by
1764ca1ab94SDag-Erling Smørgrav.Fn fetchParseURL
1774ca1ab94SDag-Erling Smørgravshould be freed using
178842a95ccSDag-Erling Smørgrav.Fn free .
1794ca1ab94SDag-Erling Smørgrav.Pp
180d8acd8dcSDag-Erling Smørgrav.Fn fetchGet ,
181db5f8cebSDag-Erling Smørgrav.Fn fetchPut
1824ca1ab94SDag-Erling Smørgravand
183d8acd8dcSDag-Erling Smørgrav.Fn fetchStat
184d8acd8dcSDag-Erling Smørgravare similar to
185d8acd8dcSDag-Erling Smørgrav.Fn fetchGetURL ,
186d8acd8dcSDag-Erling Smørgrav.Fn fetchPutURL
187d8acd8dcSDag-Erling Smørgravand
188d8acd8dcSDag-Erling Smørgrav.Fn fetchStatURL ,
189db5f8cebSDag-Erling Smørgravexcept that they expect a pre-parsed URL in the form of a pointer to
190d8acd8dcSDag-Erling Smørgrava
191d8acd8dcSDag-Erling Smørgrav.Fa struct url
192d8acd8dcSDag-Erling Smørgravrather than a string.
1934ca1ab94SDag-Erling Smørgrav.Pp
1944ca1ab94SDag-Erling SmørgravAll of the
1954ca1ab94SDag-Erling Smørgrav.Fn fetchGetXXX
1964ca1ab94SDag-Erling Smørgravand
1974ca1ab94SDag-Erling Smørgrav.Fn fetchPutXXX
1984ca1ab94SDag-Erling Smørgravfunctions return a pointer to a stream which can be used to read or
199c6ff3a1bSSheldon Hearnwrite data from or to the requested document, respectively.
200c6ff3a1bSSheldon HearnNote that
2014ca1ab94SDag-Erling Smørgravalthough the implementation details of the individual access methods
2024ca1ab94SDag-Erling Smørgravvary, it can generally be assumed that a stream returned by one of the
2034ca1ab94SDag-Erling Smørgrav.Fn fetchGetXXX
2044ca1ab94SDag-Erling Smørgravfunctions is read-only, and that a stream returned by one of the
2054ca1ab94SDag-Erling Smørgrav.Fn fetchPutXXX
2064ca1ab94SDag-Erling Smørgravfunctions is write-only.
2074ca1ab94SDag-Erling Smørgrav.Sh FILE SCHEME
2084ca1ab94SDag-Erling Smørgrav.Fn fetchGetFile
2094ca1ab94SDag-Erling Smørgravand
2104ca1ab94SDag-Erling Smørgrav.Fn fetchPutFile
2114ca1ab94SDag-Erling Smørgravprovide access to documents which are files in a locally mounted file
212c6ff3a1bSSheldon Hearnsystem.
213c6ff3a1bSSheldon HearnOnly the <document> component of the URL is used.
2144ca1ab94SDag-Erling Smørgrav.Pp
2154ca1ab94SDag-Erling Smørgrav.Fn fetchGetFile
2164ca1ab94SDag-Erling Smørgravdoes not accept any flags.
2174ca1ab94SDag-Erling Smørgrav.Pp
2184ca1ab94SDag-Erling Smørgrav.Fn fetchPutFile
2194ca1ab94SDag-Erling Smørgravaccepts the
2204ca1ab94SDag-Erling Smørgrav.Fa a
221c6ff3a1bSSheldon Hearn(append to file) flag.
222c6ff3a1bSSheldon HearnIf that flag is specified, the data written to
2234ca1ab94SDag-Erling Smørgravthe stream returned by
2244ca1ab94SDag-Erling Smørgrav.Fn fetchPutFile
2254ca1ab94SDag-Erling Smørgravwill be appended to the previous contents of the file, instead of
2264ca1ab94SDag-Erling Smørgravreplacing them.
2274ca1ab94SDag-Erling Smørgrav.Sh FTP SCHEME
2284ca1ab94SDag-Erling Smørgrav.Fn fetchGetFTP
2294ca1ab94SDag-Erling Smørgravand
2304ca1ab94SDag-Erling Smørgrav.Fn fetchPutFTP
2314ca1ab94SDag-Erling Smørgravimplement the FTP protocol as described in RFC959.
2324ca1ab94SDag-Erling Smørgrav.Pp
2334ca1ab94SDag-Erling SmørgravIf the
2344ca1ab94SDag-Erling Smørgrav.Fa p
2354ca1ab94SDag-Erling Smørgrav(passive) flag is specified, a passive (rather than active) connection
2364ca1ab94SDag-Erling Smørgravwill be attempted.
2374ca1ab94SDag-Erling Smørgrav.Pp
238f5f109a0SDag-Erling SmørgravIf the
239f5f109a0SDag-Erling Smørgrav.Fa h
240f5f109a0SDag-Erling Smørgrav(high) flag is specified, data sockets will be allocated in the high
241f5f109a0SDag-Erling Smørgravport range (see
242f5f109a0SDag-Erling Smørgrav.Xr ip 4 ).
243f5f109a0SDag-Erling Smørgrav.Pp
244f5f109a0SDag-Erling SmørgravIf the
245f5f109a0SDag-Erling Smørgrav.Fa d
246f5f109a0SDag-Erling Smørgrav(direct) flag is specified,
247f5f109a0SDag-Erling Smørgrav.Fn fetchGetFTP
248f5f109a0SDag-Erling Smørgravand
249f5f109a0SDag-Erling Smørgrav.Fn fetchPutFTP
250f5f109a0SDag-Erling Smørgravwill use a direct connection even if a proxy server is defined.
251f5f109a0SDag-Erling Smørgrav.Pp
2524ca1ab94SDag-Erling SmørgravIf no user name or password is given, the
2534ca1ab94SDag-Erling Smørgrav.Nm fetch
2544ca1ab94SDag-Erling Smørgravlibrary will attempt an anonymous login, with user name "ftp" and
2554ca1ab94SDag-Erling Smørgravpassword "ftp".
2564ca1ab94SDag-Erling Smørgrav.Sh HTTP SCHEME
2574ca1ab94SDag-Erling SmørgravThe
2584ca1ab94SDag-Erling Smørgrav.Fn fetchGetHTTP
2594ca1ab94SDag-Erling Smørgravand
2604ca1ab94SDag-Erling Smørgrav.Fn fetchPutHTTP
261c6ff3a1bSSheldon Hearnfunctions implement the HTTP/1.1 protocol.
262c6ff3a1bSSheldon HearnWith a little luck, there's
2634ca1ab94SDag-Erling Smørgraveven a chance that they comply with RFC2068.
2644ca1ab94SDag-Erling Smørgrav.Pp
265f5f109a0SDag-Erling SmørgravIf the
266f5f109a0SDag-Erling Smørgrav.Fa d
267f5f109a0SDag-Erling Smørgrav(direct) flag is specified,
268f5f109a0SDag-Erling Smørgrav.Fn fetchGetHTTP
269f5f109a0SDag-Erling Smørgravand
270f5f109a0SDag-Erling Smørgrav.Fn fetchPutHTTP
271f5f109a0SDag-Erling Smørgravwill use a direct connection even if a proxy server is defined.
272f5f109a0SDag-Erling Smørgrav.Pp
2734ca1ab94SDag-Erling SmørgravSince there seems to be no good way of implementing the HTTP PUT
2744ca1ab94SDag-Erling Smørgravmethod in a manner consistent with the rest of the
2754ca1ab94SDag-Erling Smørgrav.Nm fetch
2764ca1ab94SDag-Erling Smørgravlibrary,
2774ca1ab94SDag-Erling Smørgrav.Fn fetchPutHTTP
2784ca1ab94SDag-Erling Smørgravis currently unimplemented.
2794ca1ab94SDag-Erling Smørgrav.Sh RETURN VALUES
2804ca1ab94SDag-Erling Smørgrav.Fn fetchParseURL
2814ca1ab94SDag-Erling Smørgravreturns a pointer to a
282d8acd8dcSDag-Erling Smørgrav.Fa struct url
283c6ff3a1bSSheldon Hearncontaining the individual components of the URL.
284c6ff3a1bSSheldon HearnIf it is
2854ca1ab94SDag-Erling Smørgravunable to allocate memory, or the URL is syntactically incorrect,
2864ca1ab94SDag-Erling Smørgrav.Fn fetchParseURL
2874ca1ab94SDag-Erling Smørgravreturns a NULL pointer.
2884ca1ab94SDag-Erling Smørgrav.Pp
289d8acd8dcSDag-Erling SmørgravThe
290d8acd8dcSDag-Erling Smørgrav.Fn fetchStat
291d8acd8dcSDag-Erling Smørgravfunctions return 0 on success and -1 on failure.
292d8acd8dcSDag-Erling Smørgrav.Pp
2934ca1ab94SDag-Erling SmørgravAll other functions return a stream pointer which may be used to
294d8acd8dcSDag-Erling Smørgravaccess the requested document, or NULL if an error occurred.
295d8acd8dcSDag-Erling Smørgrav.Pp
296d8acd8dcSDag-Erling Smørgrav.Nm Libfetch
297d8acd8dcSDag-Erling Smørgravuses the Common Error Library
298d8acd8dcSDag-Erling Smørgrav.Nm ( libcom_err )
299c6ff3a1bSSheldon Hearnto report errors.
300c6ff3a1bSSheldon HearnThe error code passed to
301d8acd8dcSDag-Erling Smørgrav.Fn com_err
302d8acd8dcSDag-Erling Smørgravis one of:
30315efcd39SAlexey Zelkin.Bl -tag -width 18n
304d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_ABORT
305d8acd8dcSDag-Erling SmørgravOperation aborted
306d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_AUTH
307d8acd8dcSDag-Erling SmørgravAuthentication failed
308d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_DOWN
309d8acd8dcSDag-Erling SmørgravService unavailable
310d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_EXISTS
311d8acd8dcSDag-Erling SmørgravFile exists
312d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_FULL
313d8acd8dcSDag-Erling SmørgravFile system full
314d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_INFO
315d8acd8dcSDag-Erling SmørgravInformational response
316d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_MEMORY
317d8acd8dcSDag-Erling SmørgravInsufficient memory
318d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_MOVED
319d8acd8dcSDag-Erling SmørgravFile has moved
320d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_NETWORK
321d8acd8dcSDag-Erling SmørgravNetwork error
322d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_OK
323d8acd8dcSDag-Erling SmørgravNo error
324d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_PROTO
325d8acd8dcSDag-Erling SmørgravProtocol error
326d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_RESOLV
327d8acd8dcSDag-Erling SmørgravResolver error
328d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_SERVER
329d8acd8dcSDag-Erling SmørgravServer error
330d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_TEMP
331d8acd8dcSDag-Erling SmørgravTemporary error
332d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_TIMEOUT
333d8acd8dcSDag-Erling SmørgravOperation timed out
334d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_UNAVAIL
335d8acd8dcSDag-Erling SmørgravFile is not available
336d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_UNKNOWN
337d8acd8dcSDag-Erling SmørgravUnknown error
338d8acd8dcSDag-Erling Smørgrav.It Bq Er FETCH_URL
339d8acd8dcSDag-Erling SmørgravInvalid URL
340d8acd8dcSDag-Erling Smørgrav.El
341d8acd8dcSDag-Erling Smørgrav.Pp
342d8acd8dcSDag-Erling SmørgravThe accompanying error message includes a protocol-specific error code
343d8acd8dcSDag-Erling Smørgravand message, e.g. "File is not available (404 Not Found)"
3444ca1ab94SDag-Erling Smørgrav.Sh ENVIRONMENT
345db5f8cebSDag-Erling SmørgravThe FTP and HTTP related functions use the
3464ca1ab94SDag-Erling Smørgrav.Ev HTTP_PROXY
3474ca1ab94SDag-Erling Smørgravand
3484ca1ab94SDag-Erling Smørgrav.Ev FTP_PROXY
3494ca1ab94SDag-Erling Smørgravenvironment variables, respectively, as the address of a proxy server
3504ca1ab94SDag-Erling Smørgravto use for transferring files.
3514ca1ab94SDag-Erling Smørgrav.Sh SEE ALSO
352d8acd8dcSDag-Erling Smørgrav.Xr com_err 3 ,
3534ca1ab94SDag-Erling Smørgrav.Xr fetch 1 ,
354f5f109a0SDag-Erling Smørgrav.Xr ftpio 3 ,
355f5f109a0SDag-Erling Smørgrav.Xr ip 4 .
3564ca1ab94SDag-Erling Smørgrav.Rs
3574ca1ab94SDag-Erling Smørgrav.%A T. Berners-Lee, L. Masinter & M. McCahill
3584ca1ab94SDag-Erling Smørgrav.%D December 1994
3594ca1ab94SDag-Erling Smørgrav.%T Uniform Resource Locators (URL)
3604ca1ab94SDag-Erling Smørgrav.%O RFC1738
3614ca1ab94SDag-Erling Smørgrav.Re
3624ca1ab94SDag-Erling Smørgrav.Rs
3634ca1ab94SDag-Erling Smørgrav.%A R. Fielding, J. Gettys, J. Mogul, H. Frystyk, T. Berners-Lee
3644ca1ab94SDag-Erling Smørgrav.%D Januray 1997
3654ca1ab94SDag-Erling Smørgrav.%B Hypertext Transfer Protocol -- HTTP/1.1
3664ca1ab94SDag-Erling Smørgrav.%O RFC2068
3674ca1ab94SDag-Erling Smørgrav.Re
3684ca1ab94SDag-Erling Smørgrav.Rs
3694ca1ab94SDag-Erling Smørgrav.%A J. Postel, J. K. Reynolds
3704ca1ab94SDag-Erling Smørgrav.%D October 1985
3714ca1ab94SDag-Erling Smørgrav.%B File Transfer Protocol
3724ca1ab94SDag-Erling Smørgrav.%O RFC959
3734ca1ab94SDag-Erling Smørgrav.Re
3744ca1ab94SDag-Erling Smørgrav.Sh NOTES
375d8acd8dcSDag-Erling SmørgravThe
376d8acd8dcSDag-Erling Smørgrav.Nm fetch
377d8acd8dcSDag-Erling Smørgravlibrary uses the Common Error library, and applications which link
378d8acd8dcSDag-Erling Smørgravwith
379d8acd8dcSDag-Erling Smørgrav.Nm libfetch
380d8acd8dcSDag-Erling Smørgravmust therefore also link with
381d8acd8dcSDag-Erling Smørgrav.Nm libcom_err .
3824ca1ab94SDag-Erling Smørgrav.Sh HISTORY
3834ca1ab94SDag-Erling SmørgravThe
3844ca1ab94SDag-Erling Smørgrav.Nm fetch
3854ca1ab94SDag-Erling Smørgravlibrary first appeared in
3864ca1ab94SDag-Erling Smørgrav.Fx 3.0 .
3874ca1ab94SDag-Erling Smørgrav.Sh AUTHORS
3884ca1ab94SDag-Erling SmørgravThe
3894ca1ab94SDag-Erling Smørgrav.Nm fetch
3904ca1ab94SDag-Erling Smørgravlibrary was mostly written by
3914ca1ab94SDag-Erling Smørgrav.An Dag-Erling Co�dan Sm�rgrav Aq des@FreeBSD.org
3924ca1ab94SDag-Erling Smørgravwith numerous suggestions from
393d8acd8dcSDag-Erling Smørgrav.An Jordan K. Hubbard Aq jkh@FreeBSD.org ,
394d8acd8dcSDag-Erling Smørgrav.An Eugene Skepner Aq eu@qub.com
3954ca1ab94SDag-Erling Smørgravand other FreeBSD developers.
396d8acd8dcSDag-Erling SmørgravIt replaces the older
3974ca1ab94SDag-Erling Smørgrav.Nm ftpio
398d8acd8dcSDag-Erling Smørgravlibrary written by
399d8acd8dcSDag-Erling Smørgrav.An Poul-Henning Kamp Aq pkh@FreeBSD.org
400d8acd8dcSDag-Erling Smørgravand
4014ca1ab94SDag-Erling Smørgrav.An Jordan K. Hubbard Aq jkh@FreeBSD.org .
4024ca1ab94SDag-Erling Smørgrav.Pp
4034ca1ab94SDag-Erling SmørgravThis manual page was written by
4044ca1ab94SDag-Erling Smørgrav.An Dag-Erling Co�dan Sm�rgrav Aq des@FreeBSD.org
4054ca1ab94SDag-Erling Smørgrav.Sh BUGS
406c6ff3a1bSSheldon HearnSome parts of the library are not yet implemented.
407c6ff3a1bSSheldon HearnThe most notable
408d8acd8dcSDag-Erling Smørgravexamples of this are
409d8acd8dcSDag-Erling Smørgrav.Fn fetchPutHTTP ,
410ce71b736SDag-Erling Smørgrav.Fn fetchStatHTTP ,
411ce71b736SDag-Erling Smørgrav.Fn fetchListHTTP ,
41215efcd39SAlexey Zelkin.Fn fetchListFTP
413d8acd8dcSDag-Erling Smørgravand FTP proxy support.
414d8acd8dcSDag-Erling Smørgrav.Pp
415db5f8cebSDag-Erling SmørgravThere's no way to select a proxy at run-time other than setting the
416db5f8cebSDag-Erling Smørgrav.Ev HTTP_PROXY
417db5f8cebSDag-Erling Smørgravor
418db5f8cebSDag-Erling Smørgrav.Ev FTP_PROXY
419c6ff3a1bSSheldon Hearnenvironment variables as appropriate.
420c6ff3a1bSSheldon HearnThere is also no way to stop the
421db5f8cebSDag-Erling SmørgravFTP and HTTP functions from trying to use a proxy if these variables
422db5f8cebSDag-Erling Smørgravare set.
423db5f8cebSDag-Erling Smørgrav.Pp
424c6ff3a1bSSheldon HearnHTTP authentication doesn't work.
425c6ff3a1bSSheldon HearnI'm not sure that's a bug in my
426db5f8cebSDag-Erling Smørgravcode; as far as I can determine,
427db5f8cebSDag-Erling Smørgrav.Nm libfetch
428db5f8cebSDag-Erling Smørgravhandles HTTP/1.1 basic authentication correctly as outlined in
429db5f8cebSDag-Erling SmørgravRFC2068, but I haven't been able to find an HTTP server that honors
430c6ff3a1bSSheldon Hearnthe Authentication: header field.
431c6ff3a1bSSheldon HearnAlso,
432842a95ccSDag-Erling Smørgrav.Nm libfetch
433842a95ccSDag-Erling Smørgravdoes not attempt to interpret and respond to authentication requests
434842a95ccSDag-Erling Smørgravfrom the HTTP server.
435842a95ccSDag-Erling Smørgrav.Pp
436c6ff3a1bSSheldon HearnNo attempt is made to encode spaces etc. within URLs.
437c6ff3a1bSSheldon HearnSpaces in the
438842a95ccSDag-Erling Smørgravdocument part of an URLshould be replaced with "%20" in HTTP URLs and
439842a95ccSDag-Erling Smørgrav"\\ " in FTP URLs.
440842a95ccSDag-Erling Smørgrav.Pp
441842a95ccSDag-Erling SmørgravError numbers are unique only within a certain context; the error
442842a95ccSDag-Erling Smørgravcodes used for FTP and HTTP overlap, as do those used for resolver and
443c6ff3a1bSSheldon Hearnsystem errors.
444c6ff3a1bSSheldon HearnFor instance, error code 202 means "Command not
445842a95ccSDag-Erling Smørgravimplemented, superfluous at this site" in an FTP context and
446842a95ccSDag-Erling Smørgrav"Accepted" in an HTTP context.
447842a95ccSDag-Erling Smørgrav.Pp
448f5f109a0SDag-Erling Smørgrav.Fn fetchStatFTP
449f5f109a0SDag-Erling Smørgravdoes not check that the result of an MDTM command is a valid date.
450f5f109a0SDag-Erling Smørgrav.Pp
451f5f109a0SDag-Erling SmørgravThe HTTP code needs a complete rewrite, or at least a serious cleanup.
452f5f109a0SDag-Erling Smørgrav.Pp
453842a95ccSDag-Erling SmørgravThe man page is poorly written and produces badly formatted text.
454db5f8cebSDag-Erling Smørgrav.Pp
455db5f8cebSDag-Erling SmørgravTons of other stuff.
456