]> Zhao Yanbai Git Server - minix.git/commitdiff
libfetch: switch to external/bsd version 84/3184/2
authorDavid van Moolenbroek <david@minix3.org>
Sat, 19 Sep 2015 23:46:56 +0000 (23:46 +0000)
committerDavid van Moolenbroek <david@minix3.org>
Wed, 23 Sep 2015 12:03:08 +0000 (12:03 +0000)
Change-Id: I7eb6fbf0ae6c008e399fe9bffdfc2b98dfed3432

24 files changed:
distrib/sets/lists/minix/mi
external/bsd/Makefile
external/bsd/fetch/Makefile [new file with mode: 0644]
external/bsd/fetch/Makefile.inc [new file with mode: 0644]
external/bsd/fetch/dist/libfetch/common.c [moved from minix/lib/libfetch/common.c with 98% similarity]
external/bsd/fetch/dist/libfetch/common.h [moved from minix/lib/libfetch/common.h with 95% similarity]
external/bsd/fetch/dist/libfetch/errlist.sh [moved from minix/lib/libfetch/errlist.sh with 79% similarity]
external/bsd/fetch/dist/libfetch/fetch.3 [new file with mode: 0644]
external/bsd/fetch/dist/libfetch/fetch.c [moved from minix/lib/libfetch/fetch.c with 99% similarity]
external/bsd/fetch/dist/libfetch/fetch.h [moved from minix/include/fetch.h with 98% similarity]
external/bsd/fetch/dist/libfetch/file.c [moved from minix/lib/libfetch/file.c with 96% similarity]
external/bsd/fetch/dist/libfetch/ftp.c [moved from minix/lib/libfetch/ftp.c with 92% similarity]
external/bsd/fetch/dist/libfetch/ftp.errors [moved from minix/lib/libfetch/ftp.errors with 96% similarity]
external/bsd/fetch/dist/libfetch/http.c [moved from minix/lib/libfetch/http.c with 95% similarity]
external/bsd/fetch/dist/libfetch/http.errors [moved from minix/lib/libfetch/http.errors with 94% similarity]
external/bsd/fetch/lib/Makefile [new file with mode: 0644]
external/bsd/fetch/lib/shlib_version [new file with mode: 0644]
lib/Makefile
minix/include/Makefile
minix/lib/Makefile
minix/lib/libfetch/Makefile [deleted file]
minix/lib/libfetch/fetch.cat3 [deleted file]
minix/lib/libfetch/ftperr.h [deleted file]
minix/lib/libfetch/httperr.h [deleted file]

index 1cf94a9b5f51078f097181dca001a040f8c43401..8ab16714b10d4077ed3d10c6c11a007013604ac2 100644 (file)
 ./usr/lib/libexpat.so.2                        minix-sys
 ./usr/lib/libexpat.so.2.1              minix-sys
 ./usr/lib/libfetch.a                   minix-sys
+./usr/lib/libfetch_pic.a               minix-sys
+./usr/lib/libfetch.so                  minix-sys
+./usr/lib/libfetch.so.3                        minix-sys
+./usr/lib/libfetch.so.3.0              minix-sys
 ./usr/lib/libfl.a                      minix-sys
 ./usr/lib/libform.a                    minix-sys
 ./usr/lib/libform_pic.a                        minix-sys
 ./usr/man/man3/fesetenv.3                              minix-sys
 ./usr/man/man3/fesetexceptflag.3                       minix-sys
 ./usr/man/man3/fesetround.3                            minix-sys
+./usr/man/man3/fetch.3                                 minix-sys
 ./usr/man/man3/fetestexcept.3                          minix-sys
 ./usr/man/man3/feupdateenv.3                           minix-sys
 ./usr/man/man3/fflush.3                                        minix-sys
index 40200a9643d3a70ece6cee5d1269a6ff33d20df2..6776000d370f64406bec442028028392f094f89e 100644 (file)
@@ -2,7 +2,7 @@
 
 .include <bsd.own.mk>
 
-SUBDIR= byacc file flex less \
+SUBDIR= byacc fetch file flex less \
        libarchive libevent mdocml \
        tmux
 
diff --git a/external/bsd/fetch/Makefile b/external/bsd/fetch/Makefile
new file mode 100644 (file)
index 0000000..da77391
--- /dev/null
@@ -0,0 +1,5 @@
+#      $NetBSD: Makefile,v 1.1 2008/09/30 19:09:00 joerg Exp $
+
+SUBDIR=                lib
+
+.include <bsd.subdir.mk>
diff --git a/external/bsd/fetch/Makefile.inc b/external/bsd/fetch/Makefile.inc
new file mode 100644 (file)
index 0000000..4bf2163
--- /dev/null
@@ -0,0 +1,9 @@
+# $NetBSD: Makefile.inc,v 1.1 2008/09/30 19:09:00 joerg Exp $
+
+.include <bsd.own.mk>
+
+LIBFETCHDIR=   ${NETBSDSRCDIR}/external/bsd/fetch/dist/libfetch
+
+USE_FORT?=     yes # complex string handling
+
+WARNS?=        4
similarity index 98%
rename from minix/lib/libfetch/common.c
rename to external/bsd/fetch/dist/libfetch/common.c
index 72988e5ebdc3687d246dfc514a792d188bee1edb..c39168857e67651b1ced992c6454c386548154c1 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: common.c,v 1.27 2010/06/13 21:38:09 joerg Exp $        */
+/*     $NetBSD: common.c,v 1.2 2011/06/25 20:27:01 christos Exp $      */
 /*-
  * Copyright (c) 1998-2004 Dag-Erling Coïdan Smørgrav
  * Copyright (c) 2008, 2010 Joerg Sonnenberger <joerg@NetBSD.org>
@@ -33,7 +33,7 @@
 #if HAVE_CONFIG_H
 #include "config.h"
 #endif
-#if !defined(NETBSD) && !defined(__minix)
+#ifndef NETBSD
 #include <nbcompat.h>
 #endif
 
@@ -50,7 +50,7 @@
 #if defined(HAVE_INTTYPES_H) || defined(NETBSD)
 #include <inttypes.h>
 #endif
-#if !defined(NETBSD) && !defined(__minix)
+#ifndef NETBSD
 #include <nbcompat/netdb.h>
 #else
 #include <netdb.h>
@@ -66,6 +66,7 @@
 #include <signal.h>
 #endif
 
+#include "fetch.h"
 #include "common.h"
 
 /*** Local data **************************************************************/
@@ -149,15 +150,11 @@ fetch_syserr(void)
        case EADDRNOTAVAIL:
        case ENETDOWN:
        case ENETUNREACH:
-#if defined(ENETRESET)
        case ENETRESET:
-#endif
        case EHOSTUNREACH:
                fetchLastErrCode = FETCH_NETWORK;
                break;
-#if defined(ECONNABORTED)
        case ECONNABORTED:
-#endif
        case ECONNRESET:
                fetchLastErrCode = FETCH_ABORT;
                break;
@@ -165,9 +162,7 @@ fetch_syserr(void)
                fetchLastErrCode = FETCH_TIMEOUT;
                break;
        case ECONNREFUSED:
-#if defined(EHOSTDOWN)
        case EHOSTDOWN:
-#endif
                fetchLastErrCode = FETCH_DOWN;
                break;
 default:
@@ -321,7 +316,6 @@ fetch_connect(struct url *url, int af, int verbose)
        if ((conn = fetch_reopen(sd)) == NULL) {
                fetch_syserr();
                close(sd);
-               return (NULL);
        }
        conn->cache_url = fetchCopyURL(url);
        conn->cache_af = af;
@@ -545,7 +539,7 @@ fetch_read(conn_t *conn, char *buf, size_t len)
                }
 #ifdef WITH_SSL
                if (conn->ssl != NULL)
-                       rlen = SSL_read(conn->ssl, buf, len);
+                       rlen = SSL_read(conn->ssl, buf, (int)len);
                else
 #endif
                        rlen = read(conn->sd, buf, len);
@@ -594,7 +588,7 @@ fetch_getln(conn_t *conn)
                        return (-1);
                if (len == 0)
                        break;
-               next = memchr(conn->buf + conn->buflen, '\n', len);
+               next = memchr(conn->buf + conn->buflen, '\n', (size_t)len);
                conn->buflen += len;
                if (conn->buflen == conn->bufsize && next == NULL) {
                        tmp = conn->buf;
@@ -680,7 +674,7 @@ fetch_write(conn_t *conn, const void *buf, size_t len)
                errno = 0;
 #ifdef WITH_SSL
                if (conn->ssl != NULL)
-                       wlen = SSL_write(conn->ssl, buf, len);
+                       wlen = SSL_write(conn->ssl, buf, (int)len);
                else
 #endif
 #ifndef MSG_NOSIGNAL
similarity index 95%
rename from minix/lib/libfetch/common.h
rename to external/bsd/fetch/dist/libfetch/common.h
index 42f2f80c5e0304422912f17dee5f940dc5d38a34..12f27861b92f0da38d0ea69a5428eeaff4885a64 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: common.h,v 1.16 2010/03/21 16:48:43 joerg Exp $        */
+/*     $NetBSD: common.h,v 1.1.1.7 2010/03/24 20:51:42 joerg Exp $     */
 /*-
  * Copyright (c) 1998-2004 Dag-Erling Coïdan Smørgrav
  * All rights reserved.
@@ -32,8 +32,6 @@
 #ifndef _COMMON_H_INCLUDED
 #define _COMMON_H_INCLUDED
 
-#include <fetch.h>
-
 #define FTP_DEFAULT_PORT       21
 #define HTTP_DEFAULT_PORT      80
 #define FTP_DEFAULT_PROXY_PORT 21
@@ -49,7 +47,7 @@
 
 #if !defined(__sun) && !defined(__hpux) && !defined(__INTERIX) && \
     !defined(__digital__) && !defined(__linux) && !defined(__MINT__) && \
-    !defined(__sgi) && !defined(__minix)
+    !defined(__sgi)
 #define HAVE_SA_LEN
 #endif
 
@@ -92,8 +90,7 @@ struct fetcherr {
 
 void            fetch_seterr(struct fetcherr *, int);
 void            fetch_syserr(void);
-void            fetch_info(const char *, ...)
-                       __attribute__((__format__(__printf__, 1, 2)));
+void            fetch_info(const char *, ...);
 int             fetch_default_port(const char *);
 int             fetch_default_proxy_port(const char *);
 int             fetch_bind(int, int, const char *);
similarity index 79%
rename from minix/lib/libfetch/errlist.sh
rename to external/bsd/fetch/dist/libfetch/errlist.sh
index 84779fe9970da27621b945ffed1c7c3d43638dab..6de3265cda54888ccb156f2aedeaefbf8fd3874a 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/sh
-# $NetBSD: errlist.sh,v 1.2 2008/10/06 12:58:29 joerg Exp $
+# $NetBSD: errlist.sh,v 1.1.1.4 2009/04/04 23:26:03 joerg Exp $
 
 printf "static struct fetcherr $1[] = {\n"
 while read code type msg; do
diff --git a/external/bsd/fetch/dist/libfetch/fetch.3 b/external/bsd/fetch/dist/libfetch/fetch.3
new file mode 100644 (file)
index 0000000..0eefce2
--- /dev/null
@@ -0,0 +1,781 @@
+.\"-
+.\" Copyright (c) 1998-2004 Dag-Erling Coïdan Smørgrav
+.\" Copyright (c) 2010 Joerg Sonnenberger <joerg@NetBSD.org>
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD: fetch.3,v 1.64 2007/12/18 11:03:26 des Exp $
+.\" $NetBSD: fetch.3,v 1.2 2013/07/20 21:40:04 wiz Exp $
+.\"
+.Dd January 22, 2010
+.Dt FETCH 3
+.Os
+.Sh NAME
+.Nm fetchMakeURL ,
+.Nm fetchParseURL ,
+.Nm fetchCopyURL ,
+.Nm fetchFreeURL ,
+.Nm fetchXGetURL ,
+.Nm fetchGetURL ,
+.Nm fetchPutURL ,
+.Nm fetchStatURL ,
+.Nm fetchListURL ,
+.Nm fetchXGet ,
+.Nm fetchGet ,
+.Nm fetchPut ,
+.Nm fetchStat ,
+.Nm fetchList ,
+.Nm fetchXGetFile ,
+.Nm fetchGetFile ,
+.Nm fetchPutFile ,
+.Nm fetchStatFile ,
+.Nm fetchListFile ,
+.Nm fetchXGetHTTP ,
+.Nm fetchGetHTTP ,
+.Nm fetchPutHTTP ,
+.Nm fetchStatHTTP ,
+.Nm fetchListHTTP ,
+.Nm fetchXGetFTP ,
+.Nm fetchGetFTP ,
+.Nm fetchPutFTP ,
+.Nm fetchStatFTP ,
+.Nm fetchListFTP
+.Nm fetchInitURLList ,
+.Nm fetchFreeURLList ,
+.Nm fetchUnquotePath ,
+.Nm fetchUnquoteFilename ,
+.Nm fetchStringifyURL ,
+.Nm fetchConnectionCacheInit ,
+.Nm fetchConnectionCacheClose ,
+.Nm fetch
+.Nd file transfer functions
+.Sh LIBRARY
+.Lb libfetch
+.Sh SYNOPSIS
+.In stdio.h
+.In fetch.h
+.Ft struct url *
+.Fn fetchMakeURL "const char *scheme" "const char *host" "int port" "const char *doc" "const char *user" "const char *pwd"
+.Ft struct url *
+.Fn fetchParseURL "const char *URL"
+.Ft struct url *
+.Fn fetchCopyURL "const struct url *u"
+.Ft void
+.Fn fetchFreeURL "struct url *u"
+.Ft fetchIO *
+.Fn fetchXGetURL "const char *URL" "struct url_stat *us" "const char *flags"
+.Ft fetchIO *
+.Fn fetchGetURL "const char *URL" "const char *flags"
+.Ft fetchIO *
+.Fn fetchPutURL "const char *URL" "const char *flags"
+.Ft int
+.Fn fetchStatURL "const char *URL" "struct url_stat *us" "const char *flags"
+.Ft int
+.Fn fetchListURL "struct url_list *list" "const char *URL" "const char *flags"
+.Ft fetchIO *
+.Fn fetchXGet "struct url *u" "struct url_stat *us" "const char *flags"
+.Ft fetchIO *
+.Fn fetchGet "struct url *u" "const char *flags"
+.Ft fetchIO *
+.Fn fetchPut "struct url *u" "const char *flags"
+.Ft int
+.Fn fetchStat "struct url *u" "struct url_stat *us" "const char *flags"
+.Ft int
+.Fn fetchList "struct url_list *list" "struct url *u" "const char *flags"
+.Ft fetchIO *
+.Fn fetchXGetFile "struct url *u" "struct url_stat *us" "const char *flags"
+.Ft fetchIO *
+.Fn fetchGetFile "struct url *u" "const char *flags"
+.Ft fetchIO *
+.Fn fetchPutFile "struct url *u" "const char *flags"
+.Ft int
+.Fn fetchStatFile "struct url *u" "struct url_stat *us" "const char *flags"
+.Ft int
+.Fn fetchListFile "struct url_list *list" "struct url *u" "const char *flags"
+.Ft fetchIO *
+.Fn fetchXGetHTTP "struct url *u" "struct url_stat *us" "const char *flags"
+.Ft fetchIO *
+.Fn fetchGetHTTP "struct url *u" "const char *flags"
+.Ft fetchIO *
+.Fn fetchPutHTTP "struct url *u" "const char *flags"
+.Ft int
+.Fn fetchStatHTTP "struct url *u" "struct url_stat *us" "const char *flags"
+.Ft int
+.Fn fetchListHTTP "struct url_list *list" "struct url *u" "const char *flags"
+.Ft fetchIO *
+.Fn fetchXGetFTP "struct url *u" "struct url_stat *us" "const char *flags"
+.Ft fetchIO *
+.Fn fetchGetFTP "struct url *u" "const char *flags"
+.Ft fetchIO *
+.Fn fetchPutFTP "struct url *u" "const char *flags"
+.Ft int
+.Fn fetchStatFTP "struct url *u" "struct url_stat *us" "const char *flags"
+.Ft int
+.Fn fetchListFTP "struct url_list *list" "struct url *u" "const char *flags"
+.Ft void
+.Fn fetchInitURLList "struct url_list *ul"
+.Ft int
+.Fn fetchAppendURLList "struct url_list *dst" "const struct url_list *src"
+.Ft void
+.Fn fetchFreeURLList "struct url_list *ul"
+.Ft char *
+.Fn fetchUnquotePath "struct url *u"
+.Ft char *
+.Fn fetchUnquoteFilename "struct url *u"
+.Ft char *
+.Fn fetchStringifyURL "const struct url *u"
+.Ft void
+.Fn fetchConnectionCacheInit "int global" "int per_host"
+.Ft void
+.Fn fetchConnectionCacheClose "void"
+.Sh DESCRIPTION
+These functions implement a high-level library for retrieving and
+uploading files using Uniform Resource Locators (URLs).
+.Pp
+.Fn fetchParseURL
+takes a URL in the form of a null-terminated string and splits it into
+its components function according to the Common Internet Scheme Syntax
+detailed in RFC 1738.
+A regular expression which produces this syntax is:
+.Bd -literal -offset indent
+\*[Lt]scheme\*[Gt]:(//(\*[Lt]user\*[Gt](:\*[Lt]pwd\*[Gt])?@)?\*[Lt]host\*[Gt](:\*[Lt]port\*[Gt])?)?/(\*[Lt]document\*[Gt])?
+.Ed
+.Pp
+If the URL does not seem to begin with a scheme name, it is assumed to be a local path.
+Only absolute path names are accepted.
+.Pp
+Note that some components of the URL are not necessarily relevant to
+all URL schemes.
+For instance, the file scheme only needs the
+.Aq scheme
+and
+.Aq document
+components.
+.Fn fetchParseURL
+quotes any unsafe character in the URL automatically.
+This is not done by
+.Fn fetchMakeURL .
+.Fn fetchCopyURL
+copies an existing
+.Vt url
+structure.
+.Pp
+.Fn fetchMakeURL ,
+.Fn fetchParseURL ,
+and
+.Fn fetchCopyURL
+return a pointer to a
+.Vt url
+structure, which is defined as follows in
+.In fetch.h :
+.Bd -literal
+#define URL_SCHEMELEN 16
+#define URL_USERLEN 256
+#define URL_PWDLEN 256
+#define URL_HOSTLEN 255
+
+struct url {
+    char        scheme[URL_SCHEMELEN + 1];
+    char        user[URL_USERLEN + 1];
+    char        pwd[URL_PWDLEN + 1];
+    char        host[URL_HOSTLEN + 1];
+    int                 port;
+    char       *doc;
+    off_t       offset;
+    size_t      length;
+    time_t      last_modified;
+};
+.Ed
+.Pp
+The pointer returned by
+.Fn fetchMakeURL ,
+.Fn fetchCopyURL ,
+and
+.Fn fetchParseURL
+should be freed using
+.Fn fetchFreeURL .
+The size of
+.Vt struct URL
+is not part of the ABI.
+.Pp
+.Fn fetchXGetURL ,
+.Fn fetchGetURL ,
+and
+.Fn fetchPutURL
+constitute the recommended interface to the
+.Nm fetch
+library.
+They examine the URL passed to them to determine the transfer
+method, and call the appropriate lower-level functions to perform the
+actual transfer.
+.Fn fetchXGetURL
+also returns the remote document's metadata in the
+.Vt url_stat
+structure pointed to by the
+.Fa us
+argument.
+.Pp
+The
+.Fa flags
+argument is a string of characters which specify transfer options.
+The
+meaning of the individual flags is scheme-dependent, and is detailed
+in the appropriate section below.
+.Pp
+.Fn fetchStatURL
+attempts to obtain the requested document's metadata and fill in the
+structure pointed to by its second argument.
+The
+.Vt url_stat
+structure is defined as follows in
+.In fetch.h :
+.Bd -literal
+struct url_stat {
+    off_t       size;
+    time_t      atime;
+    time_t      mtime;
+};
+.Ed
+.Pp
+If the size could not be obtained from the server, the
+.Fa size
+field is set to \-1.
+If the modification time could not be obtained from the server, the
+.Fa mtime
+field is set to the epoch.
+If the access time could not be obtained from the server, the
+.Fa atime
+field is set to the modification time.
+.Pp
+.Fn fetchListURL
+attempts to list the contents of the directory pointed to by the URL provided.
+The pattern can be a simple glob-like expression as hint.
+Callers should not depend on the server to filter names.
+If successful, it appends the list of entries to the
+.Vt url_list
+structure.
+The
+.Vt url_list
+structure is defined as follows in
+.In fetch.h :
+.Bd -literal
+struct url_list {
+    size_t     length;
+    size_t     alloc_size;
+    struct url *urls;
+};
+.Ed
+.Pp
+The list should be initialized by calling
+.Fn fetchInitURLList
+and the entries be freed by calling
+.Fn fetchFreeURLList .
+The function
+.Fn fetchAppendURLList
+can be used to append one URL lists to another.
+If the
+.Ql c
+(cache result) flag is specified, the library is allowed to internally
+cache the result.
+.Pp
+.Fn fetchStringifyURL
+returns the URL as string.
+.Fn fetchUnquotePath
+returns the path name part of the URL with any quoting undone.
+Query arguments and fragment identifiers are not included.
+.Fn fetchUnquoteFilename
+returns the last component of the path name as returned by
+.Fn fetchUnquotePath .
+.Fn fetchStringifyURL ,
+.Fn fetchUnquotePath ,
+and
+.Fn fetchUnquoteFilename
+return a string that should be deallocated with
+.Fn free
+after use.
+.Pp
+.Fn fetchConnectionCacheInit
+enables the connection cache.
+The first argument specifies the global limit on cached connections.
+The second argument specifies the host limit.
+Entries are considered to specify the same host, if the host name
+from the URL is identical, indepent of the address or address family.
+.Fn fetchConnectionCacheClose
+flushed the connection cache and closes all cached connections.
+.Pp
+.Fn fetchXGet ,
+.Fn fetchGet ,
+.Fn fetchPut ,
+and
+.Fn fetchStat
+are similar to
+.Fn fetchXGetURL ,
+.Fn fetchGetURL ,
+.Fn fetchPutURL ,
+and
+.Fn fetchStatURL ,
+except that they expect a pre-parsed URL in the form of a pointer to
+a
+.Vt struct url
+rather than a string.
+.Pp
+All of the
+.Fn fetchXGetXXX ,
+.Fn fetchGetXXX ,
+and
+.Fn fetchPutXXX
+functions return a pointer to a stream which can be used to read or
+write data from or to the requested document, respectively.
+Note that
+although the implementation details of the individual access methods
+vary, it can generally be assumed that a stream returned by one of the
+.Fn fetchXGetXXX
+or
+.Fn fetchGetXXX
+functions is read-only, and that a stream returned by one of the
+.Fn fetchPutXXX
+functions is write-only.
+.Sh PROTOCOL INDEPENDENT FLAGS
+If the
+.Ql i
+(if-modified-since) flag is specified, the library will try to fetch
+the content only if it is newer than
+.Va last_modified .
+For HTTP an
+.Li If-Modified-Since
+HTTP header is sent.
+For FTP a
+.Li MTDM
+command is sent first and compared locally.
+For FILE the source file is compared.
+.Sh FILE SCHEME
+.Fn fetchXGetFile ,
+.Fn fetchGetFile ,
+and
+.Fn fetchPutFile
+provide access to documents which are files in a locally mounted file
+system.
+Only the
+.Aq document
+component of the URL is used.
+.Pp
+.Fn fetchXGetFile
+and
+.Fn fetchGetFile
+do not accept any flags.
+.Pp
+.Fn fetchPutFile
+accepts the
+.Ql a
+(append to file) flag.
+If that flag is specified, the data written to
+the stream returned by
+.Fn fetchPutFile
+will be appended to the previous contents of the file, instead of
+replacing them.
+.Sh FTP SCHEME
+.Fn fetchXGetFTP ,
+.Fn fetchGetFTP ,
+and
+.Fn fetchPutFTP
+implement the FTP protocol as described in RFC 959.
+.Pp
+By default
+.Nm libfetch
+will attempt to use passive mode first and only fallback to active mode
+if the server reports a syntax error.
+If the
+.Ql a
+(active) flag is specified, a passive connection is not tried and active mode
+is used directly.
+.Pp
+If the
+.Ql l
+(low) flag is specified, data sockets will be allocated in the low (or
+default) port range instead of the high port range (see
+.Xr ip 4 ) .
+.Pp
+If the
+.Ql d
+(direct) flag is specified,
+.Fn fetchXGetFTP ,
+.Fn fetchGetFTP ,
+and
+.Fn fetchPutFTP
+will use a direct connection even if a proxy server is defined.
+.Pp
+If no user name or password is given, the
+.Nm fetch
+library will attempt an anonymous login, with user name "anonymous"
+and password "anonymous@\*[Lt]hostname\*[Gt]".
+.Sh HTTP SCHEME
+The
+.Fn fetchXGetHTTP ,
+.Fn fetchGetHTTP ,
+and
+.Fn fetchPutHTTP
+functions implement the HTTP/1.1 protocol.
+With a little luck, there is
+even a chance that they comply with RFC 2616 and RFC 2617.
+.Pp
+If the
+.Ql d
+(direct) flag is specified,
+.Fn fetchXGetHTTP ,
+.Fn fetchGetHTTP ,
+and
+.Fn fetchPutHTTP
+will use a direct connection even if a proxy server is defined.
+.Pp
+Since there seems to be no good way of implementing the HTTP PUT
+method in a manner consistent with the rest of the
+.Nm fetch
+library,
+.Fn fetchPutHTTP
+is currently unimplemented.
+.Sh AUTHENTICATION
+Apart from setting the appropriate environment variables and
+specifying the user name and password in the URL or the
+.Vt struct url ,
+the calling program has the option of defining an authentication
+function with the following prototype:
+.Pp
+.Ft int
+.Fn myAuthMethod "struct url *u"
+.Pp
+The callback function should fill in the
+.Fa user
+and
+.Fa pwd
+fields in the provided
+.Vt struct url
+and return 0 on success, or any other value to indicate failure.
+.Pp
+To register the authentication callback, simply set
+.Va fetchAuthMethod
+to point at it.
+The callback will be used whenever a site requires authentication and
+the appropriate environment variables are not set.
+.Pp
+This interface is experimental and may be subject to change.
+.Sh RETURN VALUES
+.Fn fetchParseURL
+returns a pointer to a
+.Vt struct url
+containing the individual components of the URL.
+If it is
+unable to allocate memory, or the URL is syntactically incorrect,
+.Fn fetchParseURL
+returns a
+.Dv NULL
+pointer.
+.Pp
+The
+.Fn fetchStat
+functions return 0 on success and \-1 on failure.
+.Pp
+All other functions return a stream pointer which may be used to
+access the requested document, or
+.Dv NULL
+if an error occurred.
+.Pp
+The following error codes are defined in
+.In fetch.h :
+.Bl -tag -width 18n
+.It Bq Er FETCH_ABORT
+Operation aborted
+.It Bq Er FETCH_AUTH
+Authentication failed
+.It Bq Er FETCH_DOWN
+Service unavailable
+.It Bq Er FETCH_EXISTS
+File exists
+.It Bq Er FETCH_FULL
+File system full
+.It Bq Er FETCH_INFO
+Informational response
+.It Bq Er FETCH_MEMORY
+Insufficient memory
+.It Bq Er FETCH_MOVED
+File has moved
+.It Bq Er FETCH_NETWORK
+Network error
+.It Bq Er FETCH_OK
+No error
+.It Bq Er FETCH_PROTO
+Protocol error
+.It Bq Er FETCH_RESOLV
+Resolver error
+.It Bq Er FETCH_SERVER
+Server error
+.It Bq Er FETCH_TEMP
+Temporary error
+.It Bq Er FETCH_TIMEOUT
+Operation timed out
+.It Bq Er FETCH_UNAVAIL
+File is not available
+.It Bq Er FETCH_UNKNOWN
+Unknown error
+.It Bq Er FETCH_URL
+Invalid URL
+.El
+.Pp
+The accompanying error message includes a protocol-specific error code
+and message, e.g.\& "File is not available (404 Not Found)"
+.Sh ENVIRONMENT
+.Bl -tag -width ".Ev FETCH_BIND_ADDRESS"
+.It Ev FETCH_BIND_ADDRESS
+Specifies a host name or IP address to which sockets used for outgoing
+connections will be bound.
+.It Ev FTP_LOGIN
+Default FTP login if none was provided in the URL.
+.It Ev FTP_PASSIVE_MODE
+If set to anything but
+.Ql no ,
+forces the FTP code to use passive mode.
+.It Ev FTP_PASSWORD
+Default FTP password if the remote server requests one and none was
+provided in the URL.
+.It Ev FTP_PROXY
+URL of the proxy to use for FTP requests.
+The document part is ignored.
+FTP and HTTP proxies are supported; if no scheme is specified, FTP is
+assumed.
+If the proxy is an FTP proxy,
+.Nm libfetch
+will send
+.Ql user@host
+as user name to the proxy, where
+.Ql user
+is the real user name, and
+.Ql host
+is the name of the FTP server.
+.Pp
+If this variable is set to an empty string, no proxy will be used for
+FTP requests, even if the
+.Ev HTTP_PROXY
+variable is set.
+.It Ev ftp_proxy
+Same as
+.Ev FTP_PROXY ,
+for compatibility.
+.It Ev HTTP_AUTH
+Specifies HTTP authorization parameters as a colon-separated list of
+items.
+The first and second item are the authorization scheme and realm
+respectively; further items are scheme-dependent.
+Currently, only basic authorization is supported.
+.Pp
+Basic authorization requires two parameters: the user name and
+password, in that order.
+.Pp
+This variable is only used if the server requires authorization and
+no user name or password was specified in the URL.
+.It Ev HTTP_PROXY
+URL of the proxy to use for HTTP requests.
+The document part is ignored.
+Only HTTP proxies are supported for HTTP requests.
+If no port number is specified, the default is 3128.
+.Pp
+Note that this proxy will also be used for FTP documents, unless the
+.Ev FTP_PROXY
+variable is set.
+.It Ev http_proxy
+Same as
+.Ev HTTP_PROXY ,
+for compatibility.
+.It Ev HTTP_PROXY_AUTH
+Specifies authorization parameters for the HTTP proxy in the same
+format as the
+.Ev HTTP_AUTH
+variable.
+.Pp
+This variable is used if and only if connected to an HTTP proxy, and
+is ignored if a user and/or a password were specified in the proxy
+URL.
+.It Ev HTTP_REFERER
+Specifies the referrer URL to use for HTTP requests.
+If set to
+.Dq auto ,
+the document URL will be used as referrer URL.
+.It Ev HTTP_USER_AGENT
+Specifies the User-Agent string to use for HTTP requests.
+This can be useful when working with HTTP origin or proxy servers that
+differentiate between user agents.
+.It Ev NETRC
+Specifies a file to use instead of
+.Pa ~/.netrc
+to look up login names and passwords for FTP sites.
+See
+.Xr ftp 1
+for a description of the file format.
+This feature is experimental.
+.It Ev NO_PROXY
+Either a single asterisk, which disables the use of proxies
+altogether, or a comma- or whitespace-separated list of hosts for
+which proxies should not be used.
+.It Ev no_proxy
+Same as
+.Ev NO_PROXY ,
+for compatibility.
+.El
+.Sh EXAMPLES
+To access a proxy server on
+.Pa proxy.example.com
+port 8080, set the
+.Ev HTTP_PROXY
+environment variable in a manner similar to this:
+.Pp
+.Dl HTTP_PROXY=http://proxy.example.com:8080
+.Pp
+If the proxy server requires authentication, there are
+two options available for passing the authentication data.
+The first method is by using the proxy URL:
+.Pp
+.Dl HTTP_PROXY=http://\*[Lt]user\*[Gt]:\*[Lt]pwd\*[Gt]@proxy.example.com:8080
+.Pp
+The second method is by using the
+.Ev HTTP_PROXY_AUTH
+environment variable:
+.Bd -literal -offset indent
+HTTP_PROXY=http://proxy.example.com:8080
+HTTP_PROXY_AUTH=basic:*:\*[Lt]user\*[Gt]:\*[Lt]pwd\*[Gt]
+.Ed
+.Pp
+To disable the use of a proxy for an HTTP server running on the local
+host, define
+.Ev NO_PROXY
+as follows:
+.Bd -literal -offset indent
+NO_PROXY=localhost,127.0.0.1
+.Ed
+.Sh SEE ALSO
+.\" .Xr fetch 1 ,
+.\" .Xr ftpio 3 ,
+.Xr ftp 1 ,
+.Xr ip 4
+.Rs
+.%A J. Postel
+.%A J. K. Reynolds
+.%D October 1985
+.%B File Transfer Protocol
+.%O RFC 959
+.Re
+.Rs
+.%A P. Deutsch
+.%A A. Emtage
+.%A A. Marine
+.%D May 1994
+.%T How to Use Anonymous FTP
+.%O RFC 1635
+.Re
+.Rs
+.%A T. Berners-Lee
+.%A L. Masinter
+.%A M. McCahill
+.%D December 1994
+.%T Uniform Resource Locators (URL)
+.%O RFC 1738
+.Re
+.Rs
+.%A R. Fielding
+.%A J. Gettys
+.%A J. Mogul
+.%A H. Frystyk
+.%A L. Masinter
+.%A P. Leach
+.%A T. Berners-Lee
+.%D January 1999
+.%B Hypertext Transfer Protocol -- HTTP/1.1
+.%O RFC 2616
+.Re
+.Rs
+.%A J. Franks
+.%A P. Hallam-Baker
+.%A J. Hostetler
+.%A S. Lawrence
+.%A P. Leach
+.%A A. Luotonen
+.%A L. Stewart
+.%D June 1999
+.%B HTTP Authentication: Basic and Digest Access Authentication
+.%O RFC 2617
+.Re
+.Sh HISTORY
+The
+.Nm fetch
+library first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm fetch
+library was mostly written by
+.An Dag-Erling Sm\(/orgrav Aq Mt des@FreeBSD.org
+with numerous suggestions from
+.An Jordan K. Hubbard Aq Mt jkh@FreeBSD.org ,
+.An Eugene Skepner Aq Mt eu@qub.com
+and other
+.Fx
+developers.
+It replaces the older
+.Nm ftpio
+library written by
+.An Poul-Henning Kamp Aq Mt phk@FreeBSD.org
+and
+.An Jordan K. Hubbard Aq Mt jkh@FreeBSD.org .
+.Pp
+This manual page was written by
+.An Dag-Erling Sm\(/orgrav Aq Mt des@FreeBSD.org .
+.Sh BUGS
+Some parts of the library are not yet implemented.
+The most notable
+examples of this are
+.Fn fetchPutHTTP
+and FTP proxy support.
+.Pp
+There is no way to select a proxy at run-time other than setting the
+.Ev HTTP_PROXY
+or
+.Ev FTP_PROXY
+environment variables as appropriate.
+.Pp
+.Nm libfetch
+does not understand or obey 305 (Use Proxy) replies.
+.Pp
+Error numbers are unique only within a certain context; the error
+codes used for FTP and HTTP overlap, as do those used for resolver and
+system errors.
+For instance, error code 202 means "Command not
+implemented, superfluous at this site" in an FTP context and
+"Accepted" in an HTTP context.
+.Pp
+.Fn fetchStatFTP
+does not check that the result of an MDTM command is a valid date.
+.Pp
+The man page is incomplete, poorly written and produces badly
+formatted text.
+.Pp
+The error reporting mechanism is unsatisfactory.
+.Pp
+Some parts of the code are not fully reentrant.
similarity index 99%
rename from minix/lib/libfetch/fetch.c
rename to external/bsd/fetch/dist/libfetch/fetch.c
index 9acd135feac683eb3bcdd430d3be458e42529d00..ae4aa412a0c6c7ddb57c5e0f376598f52d1a1c37 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fetch.c,v 1.19 2009/08/11 20:48:06 joerg Exp $ */
+/*     $NetBSD: fetch.c,v 1.1.1.8 2009/08/21 15:12:27 joerg Exp $      */
 /*-
  * Copyright (c) 1998-2004 Dag-Erling Coïdan Smørgrav
  * Copyright (c) 2008 Joerg Sonnenberger <joerg@NetBSD.org>
@@ -33,7 +33,7 @@
 #if HAVE_CONFIG_H
 #include "config.h"
 #endif
-#if !defined(NETBSD) && !defined(__minix)
+#ifndef NETBSD
 #include <nbcompat.h>
 #endif
 
@@ -43,6 +43,7 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include "fetch.h"
 #include "common.h"
 
 auth_t  fetchAuthMethod;
similarity index 98%
rename from minix/include/fetch.h
rename to external/bsd/fetch/dist/libfetch/fetch.h
index 307548643601569c7aa2f5873f887edfce30d3f5..aff3e86cc124b072b1a8e6a9ca660800a6b43486 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: fetch.h,v 1.16 2010/01/22 13:21:09 joerg Exp $ */
+/*     $NetBSD: fetch.h,v 1.1.1.7 2010/01/30 21:26:11 joerg Exp $      */
 /*-
  * Copyright (c) 1998-2004 Dag-Erling Coïdan Smørgrav
  * All rights reserved.
similarity index 96%
rename from minix/lib/libfetch/file.c
rename to external/bsd/fetch/dist/libfetch/file.c
index 7b2c2233b379a47ed3f1625145d9aa114ca00a45..cdd7142f030e8a0ab10a9757a28239a52769a747 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: file.c,v 1.15 2009/10/15 12:36:57 joerg Exp $  */
+/*     $NetBSD: file.c,v 1.2 2011/06/25 20:27:01 christos Exp $        */
 /*-
  * Copyright (c) 1998-2004 Dag-Erling Coïdan Smørgrav
  * Copyright (c) 2008, 2009 Joerg Sonnenberger <joerg@NetBSD.org>
@@ -33,7 +33,7 @@
 #if HAVE_CONFIG_H
 #include "config.h"
 #endif
-#if !defined(NETBSD) && !defined(__minix)
+#ifndef NETBSD
 #include <nbcompat.h>
 #endif
 
@@ -47,6 +47,7 @@
 #include <string.h>
 #include <unistd.h>
 
+#include "fetch.h"
 #include "common.h"
 
 static int     fetch_stat_file(int, struct url_stat *);
@@ -203,7 +204,8 @@ fetch_stat_file(int fd, struct url_stat *us)
 }
 
 int
-fetchStatFile(struct url *u, struct url_stat *us, const char *flags)
+/*ARGSUSED*/
+fetchStatFile(struct url *u, struct url_stat *us, const char *flags __unused)
 {
        char *path;
        int fd, rv;
@@ -228,7 +230,9 @@ fetchStatFile(struct url *u, struct url_stat *us, const char *flags)
 }
 
 int
-fetchListFile(struct url_list *ue, struct url *u, const char *pattern, const char *flags)
+/*ARGSUSED*/
+fetchListFile(struct url_list *ue, struct url *u, const char *pattern,
+    const char *flags __unused)
 {
        char *path;
        struct dirent *de;
similarity index 92%
rename from minix/lib/libfetch/ftp.c
rename to external/bsd/fetch/dist/libfetch/ftp.c
index 8fd4e00104f5231048afc1850af061b3e3a5010a..f1541e83679d3b500ae035d33b80fde2b124c564 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: ftp.c,v 1.35 2010/03/21 16:48:43 joerg Exp $   */
+/*     $NetBSD: ftp.c,v 1.6 2013/10/19 22:58:40 mrg Exp $      */
 /*-
  * Copyright (c) 1998-2004 Dag-Erling Coïdan Smørgrav
  * Copyright (c) 2008, 2009, 2010 Joerg Sonnenberger <joerg@NetBSD.org>
@@ -65,7 +65,7 @@
 #if HAVE_CONFIG_H
 #include "config.h"
 #endif
-#if !defined(NETBSD) && !defined(__minix)
+#ifndef NETBSD
 #include <nbcompat.h>
 #endif
 
@@ -82,7 +82,7 @@
 #include <inttypes.h>
 #endif
 #include <stdarg.h>
-#if !defined(NETBSD) && !defined(__minix)
+#ifndef NETBSD
 #include <nbcompat/netdb.h>
 #include <nbcompat/stdio.h>
 #else
@@ -94,6 +94,7 @@
 #include <time.h>
 #include <unistd.h>
 
+#include "fetch.h"
 #include "common.h"
 #include "ftperr.h"
 
            isdigit((unsigned char)foo[2]) &&   \
            foo[3] == '-')
 
-#define MINBUFSIZE 4096
-
-#ifdef INET6
 /*
  * Translate IPv4 mapped IPv6 address to IPv4 address
  */
@@ -140,14 +138,16 @@ static void
 unmappedaddr(struct sockaddr_in6 *sin6, socklen_t *len)
 {
        struct sockaddr_in *sin4;
+       void *addrp;
        uint32_t addr;
        int port;
 
        if (sin6->sin6_family != AF_INET6 ||
            !IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr))
                return;
-       sin4 = (struct sockaddr_in *)sin6;
-       addr = *(uint32_t *)&sin6->sin6_addr.s6_addr[12];
+       sin4 = (struct sockaddr_in *)(void *)sin6;
+       addrp = &sin6->sin6_addr.s6_addr[12];
+       addr = *(uint32_t *)addrp;
        port = sin6->sin6_port;
        memset(sin4, 0, sizeof(struct sockaddr_in));
        sin4->sin_addr.s_addr = addr;
@@ -158,7 +158,6 @@ unmappedaddr(struct sockaddr_in6 *sin6, socklen_t *len)
        sin4->sin_len = sizeof(struct sockaddr_in);
 #endif
 }
-#endif
 
 /*
  * Get server response
@@ -199,17 +198,13 @@ ftp_chkerr(conn_t *conn)
 /*
  * Send a command and check reply
  */
-static int ftp_cmd(conn_t *conn, const char *fmt, ...)
-       __attribute__((__format__(__printf__, 2, 3)));
-
-#ifndef __minix
 static int
 ftp_cmd(conn_t *conn, const char *fmt, ...)
 {
        va_list ap;
        size_t len;
        char *msg;
-       int r;
+       ssize_t r;
 
        va_start(ap, fmt);
        len = vasprintf(&msg, fmt, ap);
@@ -231,40 +226,12 @@ ftp_cmd(conn_t *conn, const char *fmt, ...)
 
        return (ftp_chkerr(conn));
 }
-#else
-static int
-ftp_cmd(conn_t *conn, const char *fmt, ...)
-{
-       va_list ap;
-       size_t len;
-       char msg[MINBUFSIZE];
-       int r;
-
-       va_start(ap, fmt);
-       len = vsnprintf(&msg[0], MINBUFSIZE, fmt, ap);
-       va_end(ap);
-
-       if (len >= MINBUFSIZE) {
-               errno = ENOMEM;
-               fetch_syserr();
-               return (-1);
-       }
-
-       r = fetch_write(conn, msg, len);
-
-       if (r == -1) {
-               fetch_syserr();
-               return (-1);
-       }
 
-       return (ftp_chkerr(conn));
-}
-#endif
 /*
  * Return a pointer to the filename part of a path
  */
 static const char *
-ftp_filename(const char *file, int *len, int *type, int subdir)
+ftp_filename(const char *file, size_t *len, int *type, int subdir)
 {
        const char *s;
 
@@ -291,6 +258,7 @@ ftp_pwd(conn_t *conn, char **pwd)
 {
        char *src, *dst, *end;
        int q;
+       size_t len;
 
        if (conn->err != FTP_WORKING_DIRECTORY &&
            conn->err != FTP_FILE_ACTION_OK)
@@ -299,7 +267,8 @@ ftp_pwd(conn_t *conn, char **pwd)
        src = conn->buf + 4;
        if (src >= end || *src++ != '"')
                return (FTP_PROTOCOL_ERROR);
-       *pwd = malloc(end - src + 1);
+       len = end - src + 1;
+       *pwd = malloc(len);
        if (*pwd == NULL)
                return (FTP_PROTOCOL_ERROR);
        for (q = 0, dst = *pwd; src < end; ++src) {
@@ -330,7 +299,8 @@ ftp_cwd(conn_t *conn, const char *path, int subdir)
 {
        const char *beg, *end;
        char *pwd, *dst;
-       int e, i, len;
+       int e;
+       size_t i, len;
 
        if (*path != '/') {
                ftp_seterr(501);
@@ -360,18 +330,7 @@ ftp_cwd(conn_t *conn, const char *path, int subdir)
        } else if (strcmp(conn->ftp_home, "/") == 0) {
                dst = strdup(path - 1);
        } else {
-#ifndef __minix
                asprintf(&dst, "%s/%s", conn->ftp_home, path);
-#else
-               if((dst = malloc(sizeof(char)*MINBUFSIZE)) != NULL) {
-                       len = snprintf(dst, MINBUFSIZE, "%s/%s", conn->ftp_home, path);
-                       
-                       if(len >= MINBUFSIZE) {
-                               free(dst);
-                               dst = NULL;
-                       }
-               }
-#endif
        }
        if (dst == NULL) {
                fetch_syserr();
@@ -388,7 +347,7 @@ ftp_cwd(conn_t *conn, const char *path, int subdir)
                len = strlen(pwd);
 
                /* Look for a common prefix between PWD and dir to fetch. */
-               for (i = 0; i <= len && i <= end - dst; ++i)
+               for (i = 0; i <= len && i <= (size_t)(end - dst); ++i)
                        if (pwd[i] != dst[i])
                                break;
                /* Keep going up a dir until we have a matching prefix. */
@@ -455,6 +414,7 @@ ftp_mode_type(conn_t *conn, int mode, int type)
        case 0:
        case 's':
                mode = 'S';
+               /*FALLTHROUGH*/
        case 'S':
                break;
        default:
@@ -483,14 +443,17 @@ ftp_mode_type(conn_t *conn, int mode, int type)
        case 0:
        case 'i':
                type = 'I';
+               /*FALLTHROUGH*/
        case 'I':
                break;
        case 'a':
                type = 'A';
+               /*FALLTHROUGH*/
        case 'A':
                break;
        case 'd':
                type = 'D';
+               /*FALLTHROUGH*/
        case 'D':
                /* can't handle yet */
        default:
@@ -510,7 +473,8 @@ ftp_stat(conn_t *conn, const char *file, struct url_stat *us)
 {
        char *ln;
        const char *filename;
-       int filenamelen, type;
+       size_t filenamelen;
+       int type;
        struct tm tm;
        time_t t;
        int e;
@@ -598,7 +562,7 @@ static ssize_t
 ftp_readfn(void *v, void *buf, size_t len)
 {
        struct ftpio *io;
-       int r;
+       ssize_t r;
 
        io = (struct ftpio *)v;
        if (io == NULL) {
@@ -631,7 +595,7 @@ static ssize_t
 ftp_writefn(void *v, const void *buf, size_t len)
 {
        struct ftpio *io;
-       int w;
+       ssize_t w;
 
        io = (struct ftpio *)v;
        if (io == NULL) {
@@ -665,7 +629,6 @@ static void
 ftp_closefn(void *v)
 {
        struct ftpio *io;
-       int r;
 
        io = (struct ftpio *)v;
        if (io == NULL) {
@@ -681,7 +644,7 @@ ftp_closefn(void *v)
        fetch_close(io->dconn);
        io->dconn = NULL;
        io->dir = -1;
-       r = ftp_chkerr(io->cconn);
+       (void)ftp_chkerr(io->cconn);
        fetch_cache_put(io->cconn, ftp_disconnect);
        free(io);
        return;
@@ -722,7 +685,8 @@ ftp_transfer(conn_t *conn, const char *oper, const char *file, const char *op_ar
        } u;
        const char *bindaddr;
        const char *filename;
-       int filenamelen, type;
+       size_t filenamelen;
+       int type;
        int low, pasv, verbose;
        int e, sd = -1;
        socklen_t l;
@@ -750,10 +714,8 @@ ftp_transfer(conn_t *conn, const char *oper, const char *file, const char *op_ar
        l = sizeof(u.ss);
        if (getsockname(conn->sd, &u.sa, &l) == -1)
                goto sysouch;
-#ifdef INET6
        if (u.ss.ss_family == AF_INET6)
                unmappedaddr(&u.sin6, &l);
-#endif
 
 retry_mode:
 
@@ -777,7 +739,6 @@ retry_mode:
                        if ((e = ftp_cmd(conn, "PASV\r\n")) != FTP_PASSIVE_MODE)
                                goto ouch;
                        break;
-#ifdef INET6
                case AF_INET6:
                        if ((e = ftp_cmd(conn, "EPSV\r\n")) != FTP_EPASSIVE_MODE) {
                                if (e == -1)
@@ -787,7 +748,6 @@ retry_mode:
                                        goto ouch;
                        }
                        break;
-#endif
                default:
                        e = FTP_PROTOCOL_ERROR; /* XXX: error code should be prepared */
                        goto ouch;
@@ -809,7 +769,7 @@ retry_mode:
                        }
                        l = (e == FTP_PASSIVE_MODE ? 6 : 21);
                        for (i = 0; *p && i < l; i++, p++)
-                               addr[i] = strtol(p, &p, 10);
+                               addr[i] = (unsigned char)strtol(p, &p, 10);
                        if (i < l) {
                                e = FTP_PROTOCOL_ERROR;
                                goto ouch;
@@ -850,12 +810,9 @@ retry_mode:
                l = sizeof(u.ss);
                if (getpeername(conn->sd, &u.sa, &l) == -1)
                        goto sysouch;
-#ifdef INET6
                if (u.ss.ss_family == AF_INET6)
                        unmappedaddr(&u.sin6, &l);
-#endif
                switch (u.ss.ss_family) {
-#ifdef INET6
                case AF_INET6:
                        if (e == FTP_EPASSIVE_MODE)
                                u.sin6.sin6_port = htons(port);
@@ -864,7 +821,6 @@ retry_mode:
                                memcpy(&u.sin6.sin6_port, addr + 19, 2);
                        }
                        break;
-#endif
                case AF_INET:
                        if (e == FTP_EPASSIVE_MODE)
                                u.sin4.sin_port = htons(port);
@@ -906,29 +862,24 @@ retry_mode:
                int arg;
 #endif
                int d;
-#ifdef INET6
-               char *ap;
                char hname[INET6_ADDRSTRLEN];
-#endif
 
                switch (u.ss.ss_family) {
-#ifdef INET6
                case AF_INET6:
                        u.sin6.sin6_port = 0;
 #ifdef IPV6_PORTRANGE
                        arg = low ? IPV6_PORTRANGE_DEFAULT : IPV6_PORTRANGE_HIGH;
                        if (setsockopt(sd, IPPROTO_IPV6, IPV6_PORTRANGE,
-                               (char *)&arg, sizeof(arg)) == -1)
+                               &arg, (socklen_t)sizeof(arg)) == -1)
                                goto sysouch;
 #endif
                        break;
-#endif
                case AF_INET:
                        u.sin4.sin_port = 0;
 #ifdef IP_PORTRANGE
                        arg = low ? IP_PORTRANGE_DEFAULT : IP_PORTRANGE_HIGH;
                        if (setsockopt(sd, IPPROTO_IP, IP_PORTRANGE,
-                               (char *)&arg, sizeof(arg)) == -1)
+                               &arg, (socklen_t)sizeof(arg)) == -1)
                                goto sysouch;
 #endif
                        break;
@@ -950,15 +901,13 @@ retry_mode:
                        e = ftp_cmd(conn, "PORT %d,%d,%d,%d,%d,%d\r\n",
                            (a >> 24) & 0xff, (a >> 16) & 0xff,
                            (a >> 8) & 0xff, a & 0xff,
-                           (p >> 8) & 0xff, p & 0xff);
+                           ((unsigned int)p >> 8) & 0xff, p & 0xff);
                        break;
-#ifdef INET6
                case AF_INET6:
-#define UC(b)  (((int)b)&0xff)
                        e = -1;
                        u.sin6.sin6_scope_id = 0;
                        if (getnameinfo(&u.sa, l,
-                               hname, sizeof(hname),
+                               hname, (socklen_t)sizeof(hname),
                                NULL, 0, NI_NUMERICHOST) == 0) {
                                e = ftp_cmd(conn, "EPRT |%d|%s|%d|\r\n", 2, hname,
                                    htons(u.sin6.sin6_port));
@@ -966,20 +915,20 @@ retry_mode:
                                        goto ouch;
                        }
                        if (e != FTP_OK) {
-                               ap = (char *)&u.sin6.sin6_addr;
+                               uint8_t aa[sizeof(u.sin6.sin6_addr)];
+                               memcpy(aa, &u.sin6.sin6_addr, sizeof(aa));
+                               p = ntohs(u.sin6.sin6_port);
                                e = ftp_cmd(conn,
                                    "LPRT %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\r\n",
                                    6, 16,
-                                   UC(ap[0]), UC(ap[1]), UC(ap[2]), UC(ap[3]),
-                                   UC(ap[4]), UC(ap[5]), UC(ap[6]), UC(ap[7]),
-                                   UC(ap[8]), UC(ap[9]), UC(ap[10]), UC(ap[11]),
-                                   UC(ap[12]), UC(ap[13]), UC(ap[14]), UC(ap[15]),
+                                   aa[ 0], aa[ 1], aa[ 2], aa[ 3],
+                                   aa[ 4], aa[ 5], aa[ 6], aa[ 7],
+                                   aa[ 8], aa[ 9], aa[10], aa[11],
+                                   aa[12], aa[13], aa[14], aa[15],
                                    2,
-                                   (ntohs(u.sin6.sin6_port) >> 8) & 0xff,
-                                   ntohs(u.sin6.sin6_port)        & 0xff);
+                                   ((unsigned int)p >> 8) & 0xff, p & 0xff);
                        }
                        break;
-#endif
                default:
                        e = FTP_PROTOCOL_ERROR; /* XXX: error code should be prepared */
                        goto ouch;
@@ -987,17 +936,10 @@ retry_mode:
                if (e != FTP_OK)
                        goto ouch;
 
-#ifndef __minix
                /* seek to required offset */
                if (offset)
                        if (ftp_cmd(conn, "REST %llu\r\n", (unsigned long long)offset) != FTP_FILE_OK)
                                goto sysouch;
-#else
-/* seek to required offset */
-               if (offset)
-                       if (ftp_cmd(conn, "REST %lu\r\n", (unsigned long)offset) != FTP_FILE_OK)
-                               goto sysouch;
-#endif
 
                /* make the server initiate the transfer */
                if (verbose)
@@ -1103,10 +1045,9 @@ ftp_connect(struct url *url, struct url *purl, const char *flags)
        verbose = CHECK_FLAG('v');
        if (CHECK_FLAG('4'))
                af = AF_INET;
-#ifdef INET6
        else if (CHECK_FLAG('6'))
                af = AF_INET6;
-#endif
+
        if (direct)
                purl = NULL;
 
@@ -1165,17 +1106,22 @@ static struct url *
 ftp_get_proxy(struct url * url, const char *flags)
 {
        struct url *purl;
-       char *p;
+       char *p, *fp, *FP, *hp, *HP;
 
        if (flags != NULL && strchr(flags, 'd') != NULL)
-               return (NULL);
+               return NULL;
        if (fetch_no_proxy_match(url->host))
-               return (NULL);
-       if (((p = getenv("FTP_PROXY")) || (p = getenv("ftp_proxy")) ||
-               (p = getenv("HTTP_PROXY")) || (p = getenv("http_proxy"))) &&
+               return NULL;
+
+       FP = getenv("FTP_PROXY");
+       fp = getenv("ftp_proxy");
+       HP = getenv("HTTP_PROXY");
+       hp = getenv("http_proxy");
+
+       if ((((p = FP) || (p = fp) || (p = HP) || (p = hp))) &&
            *p && (purl = fetchParseURL(p)) != NULL) {
                if (!*purl->scheme) {
-                       if (getenv("FTP_PROXY") || getenv("ftp_proxy"))
+                       if (fp || FP)
                                strcpy(purl->scheme, SCHEME_FTP);
                        else
                                strcpy(purl->scheme, SCHEME_HTTP);
@@ -1184,10 +1130,10 @@ ftp_get_proxy(struct url * url, const char *flags)
                        purl->port = fetch_default_proxy_port(purl->scheme);
                if (strcasecmp(purl->scheme, SCHEME_FTP) == 0 ||
                    strcasecmp(purl->scheme, SCHEME_HTTP) == 0)
-                       return (purl);
+                       return purl;
                fetchFreeURL(purl);
        }
-       return (NULL);
+       return NULL;
 }
 
 /*
similarity index 96%
rename from minix/lib/libfetch/ftp.errors
rename to external/bsd/fetch/dist/libfetch/ftp.errors
index e9c4950d388a3f3bb53644880779cf74e2c7580e..0fd8fd786cda9d5ecfb8a96c75d15137adedc537 100644 (file)
@@ -1,4 +1,4 @@
-# $NetBSD: ftp.errors,v 1.2 2008/10/06 12:58:29 joerg Exp $
+# $NetBSD: ftp.errors,v 1.1.1.4 2009/04/04 23:26:05 joerg Exp $
 # $FreeBSD: ftp.errors,v 1.6 2002/10/30 06:06:16 des Exp $
 #
 # This list is taken from RFC 959.
similarity index 95%
rename from minix/lib/libfetch/http.c
rename to external/bsd/fetch/dist/libfetch/http.c
index a374d2405da27658ac8121db2bd1733a21075f7a..5aac09007142e5dace88b9f406b7ced1c57a8000 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: http.c,v 1.29 2010/01/24 19:10:35 joerg Exp $  */
+/*     $NetBSD: http.c,v 1.2 2011/06/25 20:27:01 christos Exp $        */
 /*-
  * Copyright (c) 2000-2004 Dag-Erling Coïdan Smørgrav
  * Copyright (c) 2003 Thomas Klausner <wiz@NetBSD.org>
 #define _GNU_SOURCE
 #endif
 
-#ifndef __minix
 /* Needed for gmtime_r on Interix */
 #define _REENTRANT
-#endif
 
 #if HAVE_CONFIG_H
 #include "config.h"
 #endif
-#if !defined(NETBSD) && !defined(__minix)
+#ifndef NETBSD
 #include <nbcompat.h>
 #endif
 
@@ -87,7 +85,7 @@
 #include <errno.h>
 #include <locale.h>
 #include <stdarg.h>
-#if !defined(NETBSD) && !defined(__minix)
+#ifndef NETBSD
 #include <nbcompat/stdio.h>
 #else
 #include <stdio.h>
 #include <netinet/in.h>
 #include <netinet/tcp.h>
 
-#if !defined(NETBSD) && !defined(__minix)
+#ifndef NETBSD
 #include <nbcompat/netdb.h>
 #else
 #include <netdb.h>
 
 #include <arpa/inet.h>
 
+#include "fetch.h"
 #include "common.h"
 #include "httperr.h"
 
 
 #define HTTP_ERROR(xyz) ((xyz) > 400 && (xyz) < 599)
 
-#define MINBUFSIZE 4096
 
 /*****************************************************************************
  * I/O functions for decoding chunked streams
@@ -148,7 +146,7 @@ struct httpio
        char            *buf;           /* chunk buffer */
        size_t           bufsize;       /* size of chunk buffer */
        ssize_t          buflen;        /* amount of data currently in buffer */
-       int              bufpos;        /* current read offset in buffer */
+       size_t           bufpos;        /* current read offset in buffer */
        int              eof;           /* end-of-file flag */
        int              error;         /* error flag */
        size_t           chunksize;     /* remaining size of current chunk */
@@ -158,7 +156,7 @@ struct httpio
 /*
  * Get next chunk header
  */
-static int
+static ssize_t
 http_new_chunk(struct httpio *io)
 {
        char *p;
@@ -207,7 +205,7 @@ http_growbuf(struct httpio *io, size_t len)
 /*
  * Fill the input buffer, do chunk decoding on the fly
  */
-static int
+static ssize_t
 http_fillbuf(struct httpio *io, size_t len)
 {
        if (io->error)
@@ -288,7 +286,7 @@ http_readfn(void *v, void *buf, size_t len)
 
        for (pos = 0; len > 0; pos += l, len -= l) {
                /* empty buffer */
-               if (!io->buf || io->bufpos == io->buflen)
+               if (!io->buf || (ssize_t)io->bufpos == io->buflen)
                        if (http_fillbuf(io, len) < 1)
                                break;
                l = io->buflen - io->bufpos;
@@ -327,7 +325,7 @@ http_closefn(void *v)
 
                val = 0;
                setsockopt(io->conn->sd, IPPROTO_TCP, TCP_NODELAY, &val,
-                          sizeof(val));
+                          (socklen_t)sizeof(val));
                          fetch_cache_put(io->conn, fetch_close);
 #ifdef TCP_NOPUSH
                val = 1;
@@ -406,17 +404,13 @@ static struct {
 /*
  * Send a formatted line; optionally echo to terminal
  */
-static int http_cmd(conn_t *conn, const char *fmt, ...)
-       __attribute__((__format__(__printf__, 2, 3)));
-
-#ifndef __minix
 static int
 http_cmd(conn_t *conn, const char *fmt, ...)
 {
        va_list ap;
        size_t len;
        char *msg;
-       int r;
+       ssize_t r;
 
        va_start(ap, fmt);
        len = vasprintf(&msg, fmt, ap);
@@ -438,35 +432,7 @@ http_cmd(conn_t *conn, const char *fmt, ...)
 
        return (0);
 }
-#else
-static int
-http_cmd(conn_t *conn, const char *fmt, ...)
-{
-       va_list ap;
-       size_t len;
-       char msg[MINBUFSIZE];
-       int r;
-
-       va_start(ap, fmt);
-       len = vsnprintf(&msg[0], MINBUFSIZE, fmt, ap);
-       va_end(ap);
-
-       if (len >= MINBUFSIZE) {
-               errno = ENOMEM;
-               fetch_syserr();
-               return (-1);
-       }
-
-       r = fetch_write(conn, &msg[0], len);
 
-       if (r == -1) {
-               fetch_syserr();
-               return (-1);
-       }
-
-       return (0);
-}
-#endif
 /*
  * Get and parse status line
  */
@@ -638,7 +604,7 @@ http_base64(const char *src)
            "0123456789+/";
        char *str, *dst;
        size_t l;
-       int t, r;
+       unsigned int t, r;
 
        l = strlen(src);
        if ((str = malloc(((l + 2) / 3) * 4 + 1)) == NULL)
@@ -685,7 +651,6 @@ http_base64(const char *src)
 /*
  * Encode username and password
  */
-#ifndef __minix
 static int
 http_basic_auth(conn_t *conn, const char *hdr, const char *usr, const char *pwd)
 {
@@ -702,24 +667,7 @@ http_basic_auth(conn_t *conn, const char *hdr, const char *usr, const char *pwd)
        free(auth);
        return (r);
 }
-#else
-static int
-http_basic_auth(conn_t *conn, const char *hdr, const char *usr, const char *pwd)
-{
-       char upw[MINBUFSIZE], *auth;
-       int len, r;
 
-       len = snprintf(&upw[0], MINBUFSIZE, "%s:%s", usr, pwd);
-       if (len >= MINBUFSIZE)
-               return -1;
-       auth = http_base64(&upw[0]);
-       if (auth == NULL)
-               return (-1);
-       r = http_cmd(conn, "%s: Basic %s\r\n", hdr, auth);
-       free(auth);
-       return (r);
-}
-#endif
 /*
  * Send an authorization header
  */
@@ -996,13 +944,8 @@ http_request(struct url *URL, const char *op, struct url_stat *us,
                        http_cmd(conn, "User-Agent: %s\r\n", p);
                else
                        http_cmd(conn, "User-Agent: %s\r\n", _LIBFETCH_VER);
-#ifndef __minix
                if (url->offset > 0)
                        http_cmd(conn, "Range: bytes=%lld-\r\n", (long long)url->offset);
-#else
-               if (url->offset > 0)
-                       http_cmd(conn, "Range: bytes=%ld-\r\n", (long)url->offset);
-#endif
                http_cmd(conn, "\r\n");
 
                /*
@@ -1019,7 +962,7 @@ http_request(struct url *URL, const char *op, struct url_stat *us,
 #endif
                val = 1;
                setsockopt(conn->sd, IPPROTO_TCP, TCP_NODELAY, &val,
-                          sizeof(val));
+                   (socklen_t)sizeof(val));
 
                /* get reply */
                switch (http_get_reply(conn)) {
@@ -1295,7 +1238,8 @@ fetchGetHTTP(struct url *URL, const char *flags)
  * Store a file by HTTP
  */
 fetchIO *
-fetchPutHTTP(struct url *URL, const char *flags)
+/*ARGSUSED*/
+fetchPutHTTP(struct url *URL __unused, const char *flags __unused)
 {
        fprintf(stderr, "fetchPutHTTP(): not implemented\n");
        return (NULL);
@@ -1487,7 +1431,8 @@ static struct http_index_cache *index_cache;
  * List a directory
  */
 int
-fetchListHTTP(struct url_list *ue, struct url *url, const char *pattern, const char *flags)
+/*ARGSUSED*/
+fetchListHTTP(struct url_list *ue, struct url *url, const char *pattern __unused, const char *flags)
 {
        fetchIO *f;
        char buf[2 * PATH_MAX];
similarity index 94%
rename from minix/lib/libfetch/http.errors
rename to external/bsd/fetch/dist/libfetch/http.errors
index 004aac27b8d9fecd41e8a5b99cb73b13f10bf557..700f51c50b0fb3531b55e9b4b75fa509573710a8 100644 (file)
@@ -1,5 +1,5 @@
 # $FreeBSD: http.errors,v 1.5 2001/05/23 18:52:02 des Exp $
-# $NetBSD: http.errors,v 1.3 2009/02/05 16:59:45 joerg Exp $
+# $NetBSD: http.errors,v 1.1.1.5 2009/04/04 23:26:06 joerg Exp $
 #
 # This list is taken from RFC 2068.
 #
diff --git a/external/bsd/fetch/lib/Makefile b/external/bsd/fetch/lib/Makefile
new file mode 100644 (file)
index 0000000..abb069a
--- /dev/null
@@ -0,0 +1,39 @@
+# $NetBSD: Makefile,v 1.8 2011/08/17 09:20:14 christos Exp $
+
+LIB=           fetch
+SRCS=          fetch.c common.c ftp.c http.c file.c
+DPSRCS=        ftperr.h httperr.h
+INCS=          fetch.h
+INCSDIR=       /usr/include
+MAN=           fetch.3
+CLEANFILES=    ftperr.h httperr.h
+
+.include <bsd.init.mk>
+
+CPPFLAGS+=     -I.
+CPPFLAGS+=     -DNETBSD 
+CPPFLAGS+=     -DFTP_COMBINE_CWDS
+CPPFLAGS+=     -DINET6
+
+.if (${MKCRYPTO} != "no")
+CPPFLAGS+=     -DWITH_SSL
+
+LDADD=         -lssl -lcrypto
+
+LIBDPLIBS+=    ssl     ${NETBSDSRCDIR}/crypto/external/bsd/openssl/lib/libssl \
+               crypto  ${NETBSDSRCDIR}/crypto/external/bsd/openssl/lib/libcrypto
+.endif
+
+CLEANFILES+=   ftperr.h httperr.h
+
+.PATH: ${LIBFETCHDIR}
+
+ftperr.h: ${LIBFETCHDIR}/ftp.errors ${LIBFETCHDIR}/errlist.sh
+       ${HOST_SH} ${LIBFETCHDIR}/errlist.sh ftp_errlist FTP \
+           ${LIBFETCHDIR}/ftp.errors > ${.TARGET}
+
+httperr.h: ${LIBFETCHDIR}/http.errors ${LIBFETCHDIR}/errlist.sh
+       ${HOST_SH} ${LIBFETCHDIR}/errlist.sh http_errlist HTTP \
+           ${LIBFETCHDIR}/http.errors > ${.TARGET}
+
+.include <bsd.lib.mk>
diff --git a/external/bsd/fetch/lib/shlib_version b/external/bsd/fetch/lib/shlib_version
new file mode 100644 (file)
index 0000000..c5a972d
--- /dev/null
@@ -0,0 +1,6 @@
+#      $NetBSD: shlib_version,v 1.3 2009/07/20 17:30:53 christos Exp $
+#      Remember to update distrib/sets/lists/base/shl.* when changing
+#
+
+major=3
+minor=0
index 936b1404ee733710aa70d58e34ee3766ff08d3cd..139449be155aaf391eaa22257afb1b8bc39eca71 100644 (file)
@@ -40,7 +40,6 @@ SUBDIR+=      ../minix/lib/libasyn \
                ../minix/lib/libddekit \
                ../minix/lib/libdevman \
                ../minix/lib/libexec \
-               ../minix/lib/libfetch \
                ../minix/lib/libfsdriver \
                ../minix/lib/libinputdriver \
                ../minix/lib/libminc \
@@ -248,7 +247,7 @@ SUBDIR+=    ../crypto/external/bsd/netpgp/lib  # depends on libcrypto, ...
 .endif
 
 SUBDIR+=       ../external/bsd/libevent/lib    # depends on libcrypto
-#SUBDIR+=      ../external/bsd/fetch/lib       # depends on libssl
+SUBDIR+=       ../external/bsd/fetch/lib       # depends on libssl
 
 .if (${MKLDAP} != "no")
 SUBDIR+=       ../external/bsd/openldap/lib    # depends on libcrypto, ...
index 510fd53382bff394b57391cb48753b837283b4c0..fbad7bc95c10ed67159df702998d7e15f2c1e07b 100644 (file)
@@ -2,7 +2,7 @@
 
 NOOBJ=         # defined
 
-INCS+= env.h fetch.h lib.h libutil.h varargs.h configfile.h
+INCS+= env.h lib.h libutil.h varargs.h configfile.h
 
 .include <bsd.own.mk>
 
index 752269a51b05337cee0663c7c2ed5c3c736e2cf8..f470db83446d8572573a7d22f4c1905f8d51319e 100644 (file)
@@ -12,7 +12,6 @@ SUBDIR+=      libchardriver
 SUBDIR+=       libddekit
 SUBDIR+=       libdevman
 SUBDIR+=       libexec
-SUBDIR+=       libfetch
 SUBDIR+=       libfsdriver
 SUBDIR+=       libinputdriver
 SUBDIR+=       libminc
diff --git a/minix/lib/libfetch/Makefile b/minix/lib/libfetch/Makefile
deleted file mode 100644 (file)
index d69c95a..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-# $NetBSD: Makefile,v 1.5 2010/02/24 22:00:51 joerg Exp $
-
-LIB=           fetch
-SRCS=          fetch.c common.c ftp.c http.c file.c
-#DPSRCS=       ftperr.h httperr.h
-# CLEANFILES=  ftperr.h httperr.h
-MKLINT=                no
-MKPIC=         no
-MKPROFILE=     no
-
-.include <bsd.own.mk>
-
-CPPFLAGS+=     -I.
-CPPFLAGS+=     -D_LARGEFILE_SOURCE -D_LARGE_FILES
-
-FETCH_WITH_INET6?=     no
-FETCH_WITH_OPENSSL?=   no
-
-.if !empty(FETCH_WITH_INET6:M[yY][eE][sS])
-CPPFLAGS+=     -DINET6
-.endif
-
-.if !empty(FETCH_WITH_OPENSSL:M[yY][eE][sS])
-CPPFLAGS+=     -DWITH_SSL
-LDADD=         -lssl -lcrypto
-.endif
-
-CPPFLAGS+=     -DFTP_COMBINE_CWDS
-
-# WARNS?=              4
-
-#ftperr.h: ${.CURDIR}/ftp.errors ${.CURDIR}/Makefile ${.CURDIR}/errlist.sh
-#      ${.CURDIR}/errlist.sh ftp_errlist FTP \
-#          ${.CURDIR}/ftp.errors > ${.TARGET}
-#
-#httperr.h: ${.CURDIR}/http.errors ${.CURDIR}/Makefile ${.CURDIR}/errlist.sh
-#      ${.CURDIR}/errlist.sh http_errlist HTTP \
-#          ${.CURDIR}/http.errors > ${.TARGET}
-
-.include <bsd.lib.mk>
diff --git a/minix/lib/libfetch/fetch.cat3 b/minix/lib/libfetch/fetch.cat3
deleted file mode 100644 (file)
index f112d6a..0000000
+++ /dev/null
@@ -1,526 +0,0 @@
-FETCH(3)                NetBSD Library Functions Manual               FETCH(3)
-
-N\bNA\bAM\bME\bE
-     f\bfe\bet\btc\bch\bhM\bMa\bak\bke\beU\bUR\bRL\bL, f\bfe\bet\btc\bch\bhP\bPa\bar\brs\bse\beU\bUR\bRL\bL, f\bfe\bet\btc\bch\bhC\bCo\bop\bpy\byU\bUR\bRL\bL, f\bfe\bet\btc\bch\bhF\bFr\bre\bee\beU\bUR\bRL\bL, f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btU\bUR\bRL\bL,
-     f\bfe\bet\btc\bch\bhG\bGe\bet\btU\bUR\bRL\bL, f\bfe\bet\btc\bch\bhP\bPu\but\btU\bUR\bRL\bL, f\bfe\bet\btc\bch\bhS\bSt\bta\bat\btU\bUR\bRL\bL, f\bfe\bet\btc\bch\bhL\bLi\bis\bst\btU\bUR\bRL\bL, f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\bt,
-     f\bfe\bet\btc\bch\bhG\bGe\bet\bt, f\bfe\bet\btc\bch\bhP\bPu\but\bt, f\bfe\bet\btc\bch\bhS\bSt\bta\bat\bt, f\bfe\bet\btc\bch\bhL\bLi\bis\bst\bt, f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btF\bFi\bil\ble\be, f\bfe\bet\btc\bch\bhG\bGe\bet\btF\bFi\bil\ble\be,
-     f\bfe\bet\btc\bch\bhP\bPu\but\btF\bFi\bil\ble\be, f\bfe\bet\btc\bch\bhS\bSt\bta\bat\btF\bFi\bil\ble\be, f\bfe\bet\btc\bch\bhL\bLi\bis\bst\btF\bFi\bil\ble\be, f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btH\bHT\bTT\bTP\bP, f\bfe\bet\btc\bch\bhG\bGe\bet\btH\bHT\bTT\bTP\bP,
-     f\bfe\bet\btc\bch\bhP\bPu\but\btH\bHT\bTT\bTP\bP, f\bfe\bet\btc\bch\bhS\bSt\bta\bat\btH\bHT\bTT\bTP\bP, f\bfe\bet\btc\bch\bhL\bLi\bis\bst\btH\bHT\bTT\bTP\bP, f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btF\bFT\bTP\bP, f\bfe\bet\btc\bch\bhG\bGe\bet\btF\bFT\bTP\bP,
-     f\bfe\bet\btc\bch\bhP\bPu\but\btF\bFT\bTP\bP, f\bfe\bet\btc\bch\bhS\bSt\bta\bat\btF\bFT\bTP\bP, f\bfe\bet\btc\bch\bhL\bLi\bis\bst\btF\bFT\bTP\bP f\bfe\bet\btc\bch\bhI\bIn\bni\bit\btU\bUR\bRL\bLL\bLi\bis\bst\bt,
-     f\bfe\bet\btc\bch\bhF\bFr\bre\bee\beU\bUR\bRL\bLL\bLi\bis\bst\bt, f\bfe\bet\btc\bch\bhU\bUn\bnq\bqu\buo\bot\bte\beP\bPa\bat\bth\bh, f\bfe\bet\btc\bch\bhU\bUn\bnq\bqu\buo\bot\bte\beF\bFi\bil\ble\ben\bna\bam\bme\be,
-     f\bfe\bet\btc\bch\bhS\bSt\btr\bri\bin\bng\bgi\bif\bfy\byU\bUR\bRL\bL, f\bfe\bet\btc\bch\bhC\bCo\bon\bnn\bne\bec\bct\bti\bio\bon\bnC\bCa\bac\bch\bhe\beI\bIn\bni\bit\bt, f\bfe\bet\btc\bch\bhC\bCo\bon\bnn\bne\bec\bct\bti\bio\bon\bnC\bCa\bac\bch\bhe\beC\bCl\blo\bos\bse\be,
-     f\bfe\bet\btc\bch\bh -- file transfer functions
-
-L\bLI\bIB\bBR\bRA\bAR\bRY\bY
-               File Transfer Library for URLs (libfetch, -lfetch)
-
-S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
-     #\b#i\bin\bnc\bcl\blu\bud\bde\be <\b<s\bst\btd\bdi\bio\bo.\b.h\bh>\b>
-     #\b#i\bin\bnc\bcl\blu\bud\bde\be <\b<f\bfe\bet\btc\bch\bh.\b.h\bh>\b>
-
-     _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*
-     f\bfe\bet\btc\bch\bhM\bMa\bak\bke\beU\bUR\bRL\bL(_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bs_\bc_\bh_\be_\bm_\be, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bh_\bo_\bs_\bt, _\bi_\bn_\bt _\bp_\bo_\br_\bt,
-         _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bd_\bo_\bc, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bu_\bs_\be_\br, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bp_\bw_\bd);
-
-     _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*
-     f\bfe\bet\btc\bch\bhP\bPa\bar\brs\bse\beU\bUR\bRL\bL(_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bU_\bR_\bL);
-
-     _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*
-     f\bfe\bet\btc\bch\bhC\bCo\bop\bpy\byU\bUR\bRL\bL(_\bc_\bo_\bn_\bs_\bt _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu);
-
-     _\bv_\bo_\bi_\bd
-     f\bfe\bet\btc\bch\bhF\bFr\bre\bee\beU\bUR\bRL\bL(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu);
-
-     _\bf_\be_\bt_\bc_\bh_\bI_\bO _\b*
-     f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btU\bUR\bRL\bL(_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bU_\bR_\bL, _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bs_\bt_\ba_\bt _\b*_\bu_\bs, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bf_\be_\bt_\bc_\bh_\bI_\bO _\b*
-     f\bfe\bet\btc\bch\bhG\bGe\bet\btU\bUR\bRL\bL(_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bU_\bR_\bL, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bf_\be_\bt_\bc_\bh_\bI_\bO _\b*
-     f\bfe\bet\btc\bch\bhP\bPu\but\btU\bUR\bRL\bL(_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bU_\bR_\bL, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bi_\bn_\bt
-     f\bfe\bet\btc\bch\bhS\bSt\bta\bat\btU\bUR\bRL\bL(_\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bU_\bR_\bL, _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bs_\bt_\ba_\bt _\b*_\bu_\bs, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bi_\bn_\bt
-     f\bfe\bet\btc\bch\bhL\bLi\bis\bst\btU\bUR\bRL\bL(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bl_\bi_\bs_\bt _\b*_\bl_\bi_\bs_\bt, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bU_\bR_\bL, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bf_\be_\bt_\bc_\bh_\bI_\bO _\b*
-     f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\bt(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bs_\bt_\ba_\bt _\b*_\bu_\bs, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bf_\be_\bt_\bc_\bh_\bI_\bO _\b*
-     f\bfe\bet\btc\bch\bhG\bGe\bet\bt(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bf_\be_\bt_\bc_\bh_\bI_\bO _\b*
-     f\bfe\bet\btc\bch\bhP\bPu\but\bt(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bi_\bn_\bt
-     f\bfe\bet\btc\bch\bhS\bSt\bta\bat\bt(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bs_\bt_\ba_\bt _\b*_\bu_\bs, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bi_\bn_\bt
-     f\bfe\bet\btc\bch\bhL\bLi\bis\bst\bt(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bl_\bi_\bs_\bt _\b*_\bl_\bi_\bs_\bt, _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bf_\be_\bt_\bc_\bh_\bI_\bO _\b*
-     f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btF\bFi\bil\ble\be(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bs_\bt_\ba_\bt _\b*_\bu_\bs, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bf_\be_\bt_\bc_\bh_\bI_\bO _\b*
-     f\bfe\bet\btc\bch\bhG\bGe\bet\btF\bFi\bil\ble\be(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bf_\be_\bt_\bc_\bh_\bI_\bO _\b*
-     f\bfe\bet\btc\bch\bhP\bPu\but\btF\bFi\bil\ble\be(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bi_\bn_\bt
-     f\bfe\bet\btc\bch\bhS\bSt\bta\bat\btF\bFi\bil\ble\be(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bs_\bt_\ba_\bt _\b*_\bu_\bs, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bi_\bn_\bt
-     f\bfe\bet\btc\bch\bhL\bLi\bis\bst\btF\bFi\bil\ble\be(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bl_\bi_\bs_\bt _\b*_\bl_\bi_\bs_\bt, _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bf_\be_\bt_\bc_\bh_\bI_\bO _\b*
-     f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btH\bHT\bTT\bTP\bP(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bs_\bt_\ba_\bt _\b*_\bu_\bs, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bf_\be_\bt_\bc_\bh_\bI_\bO _\b*
-     f\bfe\bet\btc\bch\bhG\bGe\bet\btH\bHT\bTT\bTP\bP(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bf_\be_\bt_\bc_\bh_\bI_\bO _\b*
-     f\bfe\bet\btc\bch\bhP\bPu\but\btH\bHT\bTT\bTP\bP(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bi_\bn_\bt
-     f\bfe\bet\btc\bch\bhS\bSt\bta\bat\btH\bHT\bTT\bTP\bP(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bs_\bt_\ba_\bt _\b*_\bu_\bs, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bi_\bn_\bt
-     f\bfe\bet\btc\bch\bhL\bLi\bis\bst\btH\bHT\bTT\bTP\bP(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bl_\bi_\bs_\bt _\b*_\bl_\bi_\bs_\bt, _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bf_\be_\bt_\bc_\bh_\bI_\bO _\b*
-     f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btF\bFT\bTP\bP(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bs_\bt_\ba_\bt _\b*_\bu_\bs, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bf_\be_\bt_\bc_\bh_\bI_\bO _\b*
-     f\bfe\bet\btc\bch\bhG\bGe\bet\btF\bFT\bTP\bP(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bf_\be_\bt_\bc_\bh_\bI_\bO _\b*
-     f\bfe\bet\btc\bch\bhP\bPu\but\btF\bFT\bTP\bP(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bi_\bn_\bt
-     f\bfe\bet\btc\bch\bhS\bSt\bta\bat\btF\bFT\bTP\bP(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bs_\bt_\ba_\bt _\b*_\bu_\bs, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bi_\bn_\bt
-     f\bfe\bet\btc\bch\bhL\bLi\bis\bst\btF\bFT\bTP\bP(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bl_\bi_\bs_\bt _\b*_\bl_\bi_\bs_\bt, _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu, _\bc_\bo_\bn_\bs_\bt _\bc_\bh_\ba_\br _\b*_\bf_\bl_\ba_\bg_\bs);
-
-     _\bv_\bo_\bi_\bd
-     f\bfe\bet\btc\bch\bhI\bIn\bni\bit\btU\bUR\bRL\bLL\bLi\bis\bst\bt(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bl_\bi_\bs_\bt _\b*_\bu_\bl);
-
-     _\bi_\bn_\bt
-     f\bfe\bet\btc\bch\bhA\bAp\bpp\bpe\ben\bnd\bdU\bUR\bRL\bLL\bLi\bis\bst\bt(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bl_\bi_\bs_\bt _\b*_\bd_\bs_\bt, _\bc_\bo_\bn_\bs_\bt _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bl_\bi_\bs_\bt _\b*_\bs_\br_\bc);
-
-     _\bv_\bo_\bi_\bd
-     f\bfe\bet\btc\bch\bhF\bFr\bre\bee\beU\bUR\bRL\bLL\bLi\bis\bst\bt(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl_\b__\bl_\bi_\bs_\bt _\b*_\bu_\bl);
-
-     _\bc_\bh_\ba_\br _\b*
-     f\bfe\bet\btc\bch\bhU\bUn\bnq\bqu\buo\bot\bte\beP\bPa\bat\bth\bh(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu);
-
-     _\bc_\bh_\ba_\br _\b*
-     f\bfe\bet\btc\bch\bhU\bUn\bnq\bqu\buo\bot\bte\beF\bFi\bil\ble\ben\bna\bam\bme\be(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu);
-
-     _\bc_\bh_\ba_\br _\b*
-     f\bfe\bet\btc\bch\bhS\bSt\btr\bri\bin\bng\bgi\bif\bfy\byU\bUR\bRL\bL(_\bc_\bo_\bn_\bs_\bt _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu);
-
-     _\bv_\bo_\bi_\bd
-     f\bfe\bet\btc\bch\bhC\bCo\bon\bnn\bne\bec\bct\bti\bio\bon\bnC\bCa\bac\bch\bhe\beI\bIn\bni\bit\bt(_\bi_\bn_\bt _\bg_\bl_\bo_\bb_\ba_\bl, _\bi_\bn_\bt _\bp_\be_\br_\b__\bh_\bo_\bs_\bt);
-
-     _\bv_\bo_\bi_\bd
-     f\bfe\bet\btc\bch\bhC\bCo\bon\bnn\bne\bec\bct\bti\bio\bon\bnC\bCa\bac\bch\bhe\beC\bCl\blo\bos\bse\be(_\bv_\bo_\bi_\bd);
-
-D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
-     These functions implement a high-level library for retrieving and upload-
-     ing files using Uniform Resource Locators (URLs).
-
-     f\bfe\bet\btc\bch\bhP\bPa\bar\brs\bse\beU\bUR\bRL\bL() takes a URL in the form of a null-terminated string and
-     splits it into its components function according to the Common Internet
-     Scheme Syntax detailed in RFC 1738.  A regular expression which produces
-     this syntax is:
-
-           <scheme>:(//(<user>(:<pwd>)?@)?<host>(:<port>)?)?/(<document>)?
-
-     If the URL does not seem to begin with a scheme name, it is assumed to be
-     a local path.  Only absolute path names are accepted.
-
-     Note that some components of the URL are not necessarily relevant to all
-     URL schemes.  For instance, the file scheme only needs the <scheme> and
-     <document> components.  f\bfe\bet\btc\bch\bhP\bPa\bar\brs\bse\beU\bUR\bRL\bL() quotes any unsafe character in
-     the URL automatically.  This is not done by f\bfe\bet\btc\bch\bhM\bMa\bak\bke\beU\bUR\bRL\bL().
-     f\bfe\bet\btc\bch\bhC\bCo\bop\bpy\byU\bUR\bRL\bL() copies an existing _\bu_\br_\bl structure.
-
-     f\bfe\bet\btc\bch\bhM\bMa\bak\bke\beU\bUR\bRL\bL(), f\bfe\bet\btc\bch\bhP\bPa\bar\brs\bse\beU\bUR\bRL\bL(), and f\bfe\bet\btc\bch\bhC\bCo\bop\bpy\byU\bUR\bRL\bL() return a pointer to a
-     _\bu_\br_\bl structure, which is defined as follows in <_\bf_\be_\bt_\bc_\bh_\b._\bh>:
-
-     #define URL_SCHEMELEN 16
-     #define URL_USERLEN 256
-     #define URL_PWDLEN 256
-     #define URL_HOSTLEN 255
-
-     struct url {
-         char         scheme[URL_SCHEMELEN + 1];
-         char         user[URL_USERLEN + 1];
-         char         pwd[URL_PWDLEN + 1];
-         char         host[URL_HOSTLEN + 1];
-         int          port;
-         char        *doc;
-         off_t        offset;
-         size_t       length;
-         time_t       last_modified;
-     };
-
-     The pointer returned by f\bfe\bet\btc\bch\bhM\bMa\bak\bke\beU\bUR\bRL\bL(), f\bfe\bet\btc\bch\bhC\bCo\bop\bpy\byU\bUR\bRL\bL(), and
-     f\bfe\bet\btc\bch\bhP\bPa\bar\brs\bse\beU\bUR\bRL\bL() should be freed using f\bfe\bet\btc\bch\bhF\bFr\bre\bee\beU\bUR\bRL\bL().  The size of _\bs_\bt_\br_\bu_\bc_\bt
-     _\bU_\bR_\bL is not part of the ABI.
-
-     f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btU\bUR\bRL\bL(), f\bfe\bet\btc\bch\bhG\bGe\bet\btU\bUR\bRL\bL(), and f\bfe\bet\btc\bch\bhP\bPu\but\btU\bUR\bRL\bL() constitute the recom-
-     mended interface to the f\bfe\bet\btc\bch\bh library.  They examine the URL passed to
-     them to determine the transfer method, and call the appropriate lower-
-     level functions to perform the actual transfer.  f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btU\bUR\bRL\bL() also
-     returns the remote document's metadata in the _\bu_\br_\bl_\b__\bs_\bt_\ba_\bt structure pointed
-     to by the _\bu_\bs argument.
-
-     The _\bf_\bl_\ba_\bg_\bs argument is a string of characters which specify transfer
-     options.  The meaning of the individual flags is scheme-dependent, and is
-     detailed in the appropriate section below.
-
-     f\bfe\bet\btc\bch\bhS\bSt\bta\bat\btU\bUR\bRL\bL() attempts to obtain the requested document's metadata and
-     fill in the structure pointed to by its second argument.  The _\bu_\br_\bl_\b__\bs_\bt_\ba_\bt
-     structure is defined as follows in <_\bf_\be_\bt_\bc_\bh_\b._\bh>:
-
-     struct url_stat {
-         off_t        size;
-         time_t       atime;
-         time_t       mtime;
-     };
-
-     If the size could not be obtained from the server, the _\bs_\bi_\bz_\be field is set
-     to -1.  If the modification time could not be obtained from the server,
-     the _\bm_\bt_\bi_\bm_\be field is set to the epoch.  If the access time could not be
-     obtained from the server, the _\ba_\bt_\bi_\bm_\be field is set to the modification
-     time.
-
-     f\bfe\bet\btc\bch\bhL\bLi\bis\bst\btU\bUR\bRL\bL() attempts to list the contents of the directory pointed to
-     by the URL provided.  The pattern can be a simple glob-like expression as
-     hint.  Callers should not depend on the server to filter names.  If suc-
-     cessful, it appends the list of entries to the _\bu_\br_\bl_\b__\bl_\bi_\bs_\bt structure.  The
-     _\bu_\br_\bl_\b__\bl_\bi_\bs_\bt structure is defined as follows in <_\bf_\be_\bt_\bc_\bh_\b._\bh>:
-
-     struct url_list {
-         size_t      length;
-         size_t      alloc_size;
-         struct url  *urls;
-     };
-
-     The list should be initialized by calling f\bfe\bet\btc\bch\bhI\bIn\bni\bit\btU\bUR\bRL\bLL\bLi\bis\bst\bt() and the
-     entries be freed by calling f\bfe\bet\btc\bch\bhF\bFr\bre\bee\beU\bUR\bRL\bLL\bLi\bis\bst\bt().  The function
-     f\bfe\bet\btc\bch\bhA\bAp\bpp\bpe\ben\bnd\bdU\bUR\bRL\bLL\bLi\bis\bst\bt() can be used to append one URL lists to another.  If
-     the `c' (cache result) flag is specified, the library is allowed to
-     internally cache the result.
-
-     f\bfe\bet\btc\bch\bhS\bSt\btr\bri\bin\bng\bgi\bif\bfy\byU\bUR\bRL\bL() returns the URL as string.  f\bfe\bet\btc\bch\bhU\bUn\bnq\bqu\buo\bot\bte\beP\bPa\bat\bth\bh()
-     returns the path name part of the URL with any quoting undone.  Query
-     arguments and fragment identifiers are not included.
-     f\bfe\bet\btc\bch\bhU\bUn\bnq\bqu\buo\bot\bte\beF\bFi\bil\ble\ben\bna\bam\bme\be() returns the last component of the path name as
-     returned by f\bfe\bet\btc\bch\bhU\bUn\bnq\bqu\buo\bot\bte\beP\bPa\bat\bth\bh().  f\bfe\bet\btc\bch\bhS\bSt\btr\bri\bin\bng\bgi\bif\bfy\byU\bUR\bRL\bL(), f\bfe\bet\btc\bch\bhU\bUn\bnq\bqu\buo\bot\bte\beP\bPa\bat\bth\bh(),
-     and f\bfe\bet\btc\bch\bhU\bUn\bnq\bqu\buo\bot\bte\beF\bFi\bil\ble\ben\bna\bam\bme\be() return a string that should be deallocated
-     with f\bfr\bre\bee\be() after use.
-
-     f\bfe\bet\btc\bch\bhC\bCo\bon\bnn\bne\bec\bct\bti\bio\bon\bnC\bCa\bac\bch\bhe\beI\bIn\bni\bit\bt() enables the connection cache.  The first argu-
-     ment specifies the global limit on cached connections.  The second argu-
-     ment specifies the host limit.  Entries are considered to specify the
-     same host, if the host name from the URL is identical, indepent of the
-     address or address family.  f\bfe\bet\btc\bch\bhC\bCo\bon\bnn\bne\bec\bct\bti\bio\bon\bnC\bCa\bac\bch\bhe\beC\bCl\blo\bos\bse\be() flushed the con-
-     nection cache and closes all cached connections.
-
-     f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\bt(), f\bfe\bet\btc\bch\bhG\bGe\bet\bt(), f\bfe\bet\btc\bch\bhP\bPu\but\bt(), and f\bfe\bet\btc\bch\bhS\bSt\bta\bat\bt() are similar to
-     f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btU\bUR\bRL\bL(), f\bfe\bet\btc\bch\bhG\bGe\bet\btU\bUR\bRL\bL(), f\bfe\bet\btc\bch\bhP\bPu\but\btU\bUR\bRL\bL(), and f\bfe\bet\btc\bch\bhS\bSt\bta\bat\btU\bUR\bRL\bL(), except
-     that they expect a pre-parsed URL in the form of a pointer to a _\bs_\bt_\br_\bu_\bc_\bt
-     _\bu_\br_\bl rather than a string.
-
-     All of the f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btX\bXX\bXX\bX(), f\bfe\bet\btc\bch\bhG\bGe\bet\btX\bXX\bXX\bX(), and f\bfe\bet\btc\bch\bhP\bPu\but\btX\bXX\bXX\bX() functions
-     return a pointer to a stream which can be used to read or write data from
-     or to the requested document, respectively.  Note that although the
-     implementation details of the individual access methods vary, it can gen-
-     erally be assumed that a stream returned by one of the f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btX\bXX\bXX\bX() or
-     f\bfe\bet\btc\bch\bhG\bGe\bet\btX\bXX\bXX\bX() functions is read-only, and that a stream returned by one
-     of the f\bfe\bet\btc\bch\bhP\bPu\but\btX\bXX\bXX\bX() functions is write-only.
-
-P\bPR\bRO\bOT\bTO\bOC\bCO\bOL\bL I\bIN\bND\bDE\bEP\bPE\bEN\bND\bDE\bEN\bNT\bT F\bFL\bLA\bAG\bGS\bS
-     If the `i' (if-modified-since) flag is specified, the library will try to
-     fetch the content only if it is newer than _\bl_\ba_\bs_\bt_\b__\bm_\bo_\bd_\bi_\bf_\bi_\be_\bd.  For HTTP an
-     If-Modified-Since HTTP header is sent.  For FTP a MTDM command is sent
-     first and compared locally.  For FILE the source file is compared.
-
-F\bFI\bIL\bLE\bE S\bSC\bCH\bHE\bEM\bME\bE
-     f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btF\bFi\bil\ble\be(), f\bfe\bet\btc\bch\bhG\bGe\bet\btF\bFi\bil\ble\be(), and f\bfe\bet\btc\bch\bhP\bPu\but\btF\bFi\bil\ble\be() provide access to
-     documents which are files in a locally mounted file system.  Only the
-     <document> component of the URL is used.
-
-     f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btF\bFi\bil\ble\be() and f\bfe\bet\btc\bch\bhG\bGe\bet\btF\bFi\bil\ble\be() do not accept any flags.
-
-     f\bfe\bet\btc\bch\bhP\bPu\but\btF\bFi\bil\ble\be() accepts the `a' (append to file) flag.  If that flag is
-     specified, the data written to the stream returned by f\bfe\bet\btc\bch\bhP\bPu\but\btF\bFi\bil\ble\be() will
-     be appended to the previous contents of the file, instead of replacing
-     them.
-
-F\bFT\bTP\bP S\bSC\bCH\bHE\bEM\bME\bE
-     f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btF\bFT\bTP\bP(), f\bfe\bet\btc\bch\bhG\bGe\bet\btF\bFT\bTP\bP(), and f\bfe\bet\btc\bch\bhP\bPu\but\btF\bFT\bTP\bP() implement the FTP proto-
-     col as described in RFC 959.
-
-     By default l\bli\bib\bbf\bfe\bet\btc\bch\bh will attempt to use passive mode first and only fall-
-     back to active mode if the server reports a syntax error.  If the `a'
-     (active) flag is specified, a passive connection is not tried and active
-     mode is used directly.
-
-     If the `l' (low) flag is specified, data sockets will be allocated in the
-     low (or default) port range instead of the high port range (see ip(4)).
-
-     If the `d' (direct) flag is specified, f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btF\bFT\bTP\bP(), f\bfe\bet\btc\bch\bhG\bGe\bet\btF\bFT\bTP\bP(), and
-     f\bfe\bet\btc\bch\bhP\bPu\but\btF\bFT\bTP\bP() will use a direct connection even if a proxy server is
-     defined.
-
-     If no user name or password is given, the f\bfe\bet\btc\bch\bh library will attempt an
-     anonymous login, with user name "anonymous" and password "anony-
-     mous@<hostname>".
-
-H\bHT\bTT\bTP\bP S\bSC\bCH\bHE\bEM\bME\bE
-     The f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btH\bHT\bTT\bTP\bP(), f\bfe\bet\btc\bch\bhG\bGe\bet\btH\bHT\bTT\bTP\bP(), and f\bfe\bet\btc\bch\bhP\bPu\but\btH\bHT\bTT\bTP\bP() functions imple-
-     ment the HTTP/1.1 protocol.  With a little luck, there is even a chance
-     that they comply with RFC 2616 and RFC 2617.
-
-     If the `d' (direct) flag is specified, f\bfe\bet\btc\bch\bhX\bXG\bGe\bet\btH\bHT\bTT\bTP\bP(), f\bfe\bet\btc\bch\bhG\bGe\bet\btH\bHT\bTT\bTP\bP(),
-     and f\bfe\bet\btc\bch\bhP\bPu\but\btH\bHT\bTT\bTP\bP() will use a direct connection even if a proxy server is
-     defined.
-
-     Since there seems to be no good way of implementing the HTTP PUT method
-     in a manner consistent with the rest of the f\bfe\bet\btc\bch\bh library, f\bfe\bet\btc\bch\bhP\bPu\but\btH\bHT\bTT\bTP\bP()
-     is currently unimplemented.
-
-A\bAU\bUT\bTH\bHE\bEN\bNT\bTI\bIC\bCA\bAT\bTI\bIO\bON\bN
-     Apart from setting the appropriate environment variables and specifying
-     the user name and password in the URL or the _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl, the calling pro-
-     gram has the option of defining an authentication function with the fol-
-     lowing prototype:
-
-     _\bi_\bn_\bt m\bmy\byA\bAu\but\bth\bhM\bMe\bet\bth\bho\bod\bd(_\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl _\b*_\bu)
-
-     The callback function should fill in the _\bu_\bs_\be_\br and _\bp_\bw_\bd fields in the pro-
-     vided _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl and return 0 on success, or any other value to indicate
-     failure.
-
-     To register the authentication callback, simply set _\bf_\be_\bt_\bc_\bh_\bA_\bu_\bt_\bh_\bM_\be_\bt_\bh_\bo_\bd to
-     point at it.  The callback will be used whenever a site requires authen-
-     tication and the appropriate environment variables are not set.
-
-     This interface is experimental and may be subject to change.
-
-R\bRE\bET\bTU\bUR\bRN\bN V\bVA\bAL\bLU\bUE\bES\bS
-     f\bfe\bet\btc\bch\bhP\bPa\bar\brs\bse\beU\bUR\bRL\bL() returns a pointer to a _\bs_\bt_\br_\bu_\bc_\bt _\bu_\br_\bl containing the individ-
-     ual components of the URL.  If it is unable to allocate memory, or the
-     URL is syntactically incorrect, f\bfe\bet\btc\bch\bhP\bPa\bar\brs\bse\beU\bUR\bRL\bL() returns a NULL pointer.
-
-     The f\bfe\bet\btc\bch\bhS\bSt\bta\bat\bt() functions return 0 on success and -1 on failure.
-
-     All other functions return a stream pointer which may be used to access
-     the requested document, or NULL if an error occurred.
-
-     The following error codes are defined in <_\bf_\be_\bt_\bc_\bh_\b._\bh>:
-
-     [FETCH_ABORT]       Operation aborted
-
-     [FETCH_AUTH]        Authentication failed
-
-     [FETCH_DOWN]        Service unavailable
-
-     [FETCH_EXISTS]      File exists
-
-     [FETCH_FULL]        File system full
-
-     [FETCH_INFO]        Informational response
-
-     [FETCH_MEMORY]      Insufficient memory
-
-     [FETCH_MOVED]       File has moved
-
-     [FETCH_NETWORK]     Network error
-
-     [FETCH_OK]          No error
-
-     [FETCH_PROTO]       Protocol error
-
-     [FETCH_RESOLV]      Resolver error
-
-     [FETCH_SERVER]      Server error
-
-     [FETCH_TEMP]        Temporary error
-
-     [FETCH_TIMEOUT]     Operation timed out
-
-     [FETCH_UNAVAIL]     File is not available
-
-     [FETCH_UNKNOWN]     Unknown error
-
-     [FETCH_URL]         Invalid URL
-
-     The accompanying error message includes a protocol-specific error code
-     and message, e.g. "File is not available (404 Not Found)"
-
-E\bEN\bNV\bVI\bIR\bRO\bON\bNM\bME\bEN\bNT\bT
-     FETCH_BIND_ADDRESS  Specifies a host name or IP address to which sockets
-                         used for outgoing connections will be bound.
-
-     FTP_LOGIN           Default FTP login if none was provided in the URL.
-
-     FTP_PASSIVE_MODE    If set to anything but `no', forces the FTP code to
-                         use passive mode.
-
-     FTP_PASSWORD        Default FTP password if the remote server requests
-                         one and none was provided in the URL.
-
-     FTP_PROXY           URL of the proxy to use for FTP requests.  The docu-
-                         ment part is ignored.  FTP and HTTP proxies are sup-
-                         ported; if no scheme is specified, FTP is assumed.
-                         If the proxy is an FTP proxy, l\bli\bib\bbf\bfe\bet\btc\bch\bh will send
-                         `user@host' as user name to the proxy, where `user'
-                         is the real user name, and `host' is the name of the
-                         FTP server.
-
-                         If this variable is set to an empty string, no proxy
-                         will be used for FTP requests, even if the HTTP_PROXY
-                         variable is set.
-
-     ftp_proxy           Same as FTP_PROXY, for compatibility.
-
-     HTTP_AUTH           Specifies HTTP authorization parameters as a colon-
-                         separated list of items.  The first and second item
-                         are the authorization scheme and realm respectively;
-                         further items are scheme-dependent.  Currently, only
-                         basic authorization is supported.
-
-                         Basic authorization requires two parameters: the user
-                         name and password, in that order.
-
-                         This variable is only used if the server requires
-                         authorization and no user name or password was speci-
-                         fied in the URL.
-
-     HTTP_PROXY          URL of the proxy to use for HTTP requests.  The docu-
-                         ment part is ignored.  Only HTTP proxies are sup-
-                         ported for HTTP requests.  If no port number is spec-
-                         ified, the default is 3128.
-
-                         Note that this proxy will also be used for FTP docu-
-                         ments, unless the FTP_PROXY variable is set.
-
-     http_proxy          Same as HTTP_PROXY, for compatibility.
-
-     HTTP_PROXY_AUTH     Specifies authorization parameters for the HTTP proxy
-                         in the same format as the HTTP_AUTH variable.
-
-                         This variable is used if and only if connected to an
-                         HTTP proxy, and is ignored if a user and/or a pass-
-                         word were specified in the proxy URL.
-
-     HTTP_REFERER        Specifies the referrer URL to use for HTTP requests.
-                         If set to ``auto'', the document URL will be used as
-                         referrer URL.
-
-     HTTP_USER_AGENT     Specifies the User-Agent string to use for HTTP
-                         requests.  This can be useful when working with HTTP
-                         origin or proxy servers that differentiate between
-                         user agents.
-
-     NETRC               Specifies a file to use instead of _\b~_\b/_\b._\bn_\be_\bt_\br_\bc to look
-                         up login names and passwords for FTP sites.  See
-                         ftp(1) for a description of the file format.  This
-                         feature is experimental.
-
-     NO_PROXY            Either a single asterisk, which disables the use of
-                         proxies altogether, or a comma- or whitespace-sepa-
-                         rated list of hosts for which proxies should not be
-                         used.
-
-     no_proxy            Same as NO_PROXY, for compatibility.
-
-E\bEX\bXA\bAM\bMP\bPL\bLE\bES\bS
-     To access a proxy server on _\bp_\br_\bo_\bx_\by_\b._\be_\bx_\ba_\bm_\bp_\bl_\be_\b._\bc_\bo_\bm port 8080, set the
-     HTTP_PROXY environment variable in a manner similar to this:
-
-           HTTP_PROXY=http://proxy.example.com:8080
-
-     If the proxy server requires authentication, there are two options avail-
-     able for passing the authentication data.  The first method is by using
-     the proxy URL:
-
-           HTTP_PROXY=http://<user>:<pwd>@proxy.example.com:8080
-
-     The second method is by using the HTTP_PROXY_AUTH environment variable:
-
-           HTTP_PROXY=http://proxy.example.com:8080
-           HTTP_PROXY_AUTH=basic:*:<user>:<pwd>
-
-     To disable the use of a proxy for an HTTP server running on the local
-     host, define NO_PROXY as follows:
-
-           NO_PROXY=localhost,127.0.0.1
-
-S\bSE\bEE\bE A\bAL\bLS\bSO\bO
-     ftp(1), ip(4)
-
-     J. Postel and J. K. Reynolds, _\bF_\bi_\bl_\be _\bT_\br_\ba_\bn_\bs_\bf_\be_\br _\bP_\br_\bo_\bt_\bo_\bc_\bo_\bl, October 1985, RFC
-     959.
-
-     P. Deutsch, A. Emtage, and A. Marine, _\bH_\bo_\bw _\bt_\bo _\bU_\bs_\be _\bA_\bn_\bo_\bn_\by_\bm_\bo_\bu_\bs _\bF_\bT_\bP, May 1994,
-     RFC 1635.
-
-     T. Berners-Lee, L. Masinter, and M. McCahill, _\bU_\bn_\bi_\bf_\bo_\br_\bm _\bR_\be_\bs_\bo_\bu_\br_\bc_\be _\bL_\bo_\bc_\ba_\bt_\bo_\br_\bs
-     _\b(_\bU_\bR_\bL_\b), December 1994, RFC 1738.
-
-     R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, and
-     T. Berners-Lee, _\bH_\by_\bp_\be_\br_\bt_\be_\bx_\bt _\bT_\br_\ba_\bn_\bs_\bf_\be_\br _\bP_\br_\bo_\bt_\bo_\bc_\bo_\bl _\b-_\b- _\bH_\bT_\bT_\bP_\b/_\b1_\b._\b1, January 1999,
-     RFC 2616.
-
-     J. Franks, P. Hallam-Baker, J. Hostetler, S. Lawrence, P. Leach, A.
-     Luotonen, and L. Stewart, _\bH_\bT_\bT_\bP _\bA_\bu_\bt_\bh_\be_\bn_\bt_\bi_\bc_\ba_\bt_\bi_\bo_\bn_\b: _\bB_\ba_\bs_\bi_\bc _\ba_\bn_\bd _\bD_\bi_\bg_\be_\bs_\bt _\bA_\bc_\bc_\be_\bs_\bs
-     _\bA_\bu_\bt_\bh_\be_\bn_\bt_\bi_\bc_\ba_\bt_\bi_\bo_\bn, June 1999, RFC 2617.
-
-H\bHI\bIS\bST\bTO\bOR\bRY\bY
-     The f\bfe\bet\btc\bch\bh library first appeared in FreeBSD 3.0.
-
-A\bAU\bUT\bTH\bHO\bOR\bRS\bS
-     The f\bfe\bet\btc\bch\bh library was mostly written by Dag-Erling Smørgrav
-     <des@FreeBSD.org> with numerous suggestions from Jordan K. Hubbard
-     <jkh@FreeBSD.org>, Eugene Skepner <eu@qub.com> and other FreeBSD develop-
-     ers.  It replaces the older f\bft\btp\bpi\bio\bo library written by Poul-Henning Kamp
-     <phk@FreeBSD.org> and Jordan K. Hubbard <jkh@FreeBSD.org>.
-
-     This manual page was written by Dag-Erling Smørgrav <des@FreeBSD.org>.
-
-B\bBU\bUG\bGS\bS
-     Some parts of the library are not yet implemented.  The most notable
-     examples of this are f\bfe\bet\btc\bch\bhP\bPu\but\btH\bHT\bTT\bTP\bP() and FTP proxy support.
-
-     There is no way to select a proxy at run-time other than setting the
-     HTTP_PROXY or FTP_PROXY environment variables as appropriate.
-
-     l\bli\bib\bbf\bfe\bet\btc\bch\bh does not understand or obey 305 (Use Proxy) replies.
-
-     Error numbers are unique only within a certain context; the error codes
-     used for FTP and HTTP overlap, as do those used for resolver and system
-     errors.  For instance, error code 202 means "Command not implemented,
-     superfluous at this site" in an FTP context and "Accepted" in an HTTP
-     context.
-
-     f\bfe\bet\btc\bch\bhS\bSt\bta\bat\btF\bFT\bTP\bP() does not check that the result of an MDTM command is a
-     valid date.
-
-     The man page is incomplete, poorly written and produces badly formatted
-     text.
-
-     The error reporting mechanism is unsatisfactory.
-
-     Some parts of the code are not fully reentrant.
-
-NetBSD 5.0                     January 22, 2010                     NetBSD 5.0
diff --git a/minix/lib/libfetch/ftperr.h b/minix/lib/libfetch/ftperr.h
deleted file mode 100644 (file)
index 272add6..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-static struct fetcherr ftp_errlist[] = {
-       { 110, FETCH_OK, "Restart marker reply" },
-       { 120, FETCH_TEMP, "Service ready in a few minutes" },
-       { 125, FETCH_OK, "Data connection already open; transfer starting" },
-       { 150, FETCH_OK, "File status okay; about to open data connection" },
-       { 200, FETCH_OK, "Command okay" },
-       { 202, FETCH_PROTO, "Command not implemented, superfluous at this site" },
-       { 211, FETCH_INFO, "System status, or system help reply" },
-       { 212, FETCH_INFO, "Directory status" },
-       { 213, FETCH_INFO, "File status" },
-       { 214, FETCH_INFO, "Help message" },
-       { 215, FETCH_INFO, "Set system type" },
-       { 220, FETCH_OK, "Service ready for new user" },
-       { 221, FETCH_OK, "Service closing control connection" },
-       { 225, FETCH_OK, "Data connection open; no transfer in progress" },
-       { 226, FETCH_OK, "Requested file action successful" },
-       { 227, FETCH_OK, "Entering Passive Mode" },
-       { 229, FETCH_OK, "Entering Extended Passive Mode" },
-       { 230, FETCH_OK, "User logged in, proceed" },
-       { 250, FETCH_OK, "Requested file action okay, completed" },
-       { 257, FETCH_OK, "File/directory created" },
-       { 331, FETCH_AUTH, "User name okay, need password" },
-       { 332, FETCH_AUTH, "Need account for login" },
-       { 350, FETCH_OK, "Requested file action pending further information" },
-       { 421, FETCH_DOWN, "Service not available, closing control connection" },
-       { 425, FETCH_NETWORK, "Can't open data connection" },
-       { 426, FETCH_ABORT, "Connection closed; transfer aborted" },
-       { 450, FETCH_UNAVAIL, "File unavailable (e.g., file busy)" },
-       { 451, FETCH_SERVER, "Requested action aborted: local error in processing" },
-       { 452, FETCH_FULL, "Insufficient storage space in system" },
-       { 500, FETCH_PROTO, "Syntax error, command unrecognized" },
-       { 501, FETCH_PROTO, "Syntax error in parameters or arguments" },
-       { 502, FETCH_PROTO, "Command not implemented" },
-       { 503, FETCH_PROTO, "Bad sequence of commands" },
-       { 504, FETCH_PROTO, "Command not implemented for that parameter" },
-       { 530, FETCH_AUTH, "Not logged in" },
-       { 532, FETCH_AUTH, "Need account for storing files" },
-       { 535, FETCH_PROTO, "Bug in MediaHawk Video Kernel FTP server" },
-       { 550, FETCH_UNAVAIL, "File unavailable (e.g., file not found, no access)" },
-       { 551, FETCH_PROTO, "Requested action aborted. Page type unknown" },
-       { 552, FETCH_FULL, "Exceeded storage allocation" },
-       { 553, FETCH_EXISTS, "File name not allowed" },
-       { 999, FETCH_PROTO, "Protocol error" },
-       { -1, FETCH_UNKNOWN, "Unknown FTP error" }
-};
diff --git a/minix/lib/libfetch/httperr.h b/minix/lib/libfetch/httperr.h
deleted file mode 100644 (file)
index 6a00dbe..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-static struct fetcherr http_errlist[] = {
-       { 100, FETCH_OK, "Continue" },
-       { 101, FETCH_OK, "Switching Protocols" },
-       { 200, FETCH_OK, "OK" },
-       { 201, FETCH_OK, "Created" },
-       { 202, FETCH_OK, "Accepted" },
-       { 203, FETCH_INFO, "Non-Authoritative Information" },
-       { 204, FETCH_OK, "No Content" },
-       { 205, FETCH_OK, "Reset Content" },
-       { 206, FETCH_OK, "Partial Content" },
-       { 300, FETCH_MOVED, "Multiple Choices" },
-       { 301, FETCH_MOVED, "Moved Permanently" },
-       { 302, FETCH_MOVED, "Moved Temporarily" },
-       { 303, FETCH_MOVED, "See Other" },
-       { 304, FETCH_UNCHANGED, "Not Modified" },
-       { 305, FETCH_INFO, "Use Proxy" },
-       { 307, FETCH_MOVED, "Temporary Redirect" },
-       { 400, FETCH_PROTO, "Bad Request" },
-       { 401, FETCH_AUTH, "Unauthorized" },
-       { 402, FETCH_AUTH, "Payment Required" },
-       { 403, FETCH_AUTH, "Forbidden" },
-       { 404, FETCH_UNAVAIL, "Not Found" },
-       { 405, FETCH_PROTO, "Method Not Allowed" },
-       { 406, FETCH_PROTO, "Not Acceptable" },
-       { 407, FETCH_AUTH, "Proxy Authentication Required" },
-       { 408, FETCH_TIMEOUT, "Request Time-out" },
-       { 409, FETCH_EXISTS, "Conflict" },
-       { 410, FETCH_UNAVAIL, "Gone" },
-       { 411, FETCH_PROTO, "Length Required" },
-       { 412, FETCH_SERVER, "Precondition Failed" },
-       { 413, FETCH_PROTO, "Request Entity Too Large" },
-       { 414, FETCH_PROTO, "Request-URI Too Large" },
-       { 415, FETCH_PROTO, "Unsupported Media Type" },
-       { 416, FETCH_UNAVAIL, "Requested Range Not Satisfiable" },
-       { 417, FETCH_SERVER, "Expectation Failed" },
-       { 500, FETCH_SERVER, "Internal Server Error" },
-       { 501, FETCH_PROTO, "Not Implemented" },
-       { 502, FETCH_SERVER, "Bad Gateway" },
-       { 503, FETCH_TEMP, "Service Unavailable" },
-       { 504, FETCH_TIMEOUT, "Gateway Time-out" },
-       { 505, FETCH_PROTO, "HTTP Version not supported" },
-       { 999, FETCH_PROTO, "Protocol error" },
-       { -1, FETCH_UNKNOWN, "Unknown HTTP error" }
-};