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