Remove lukemftpd from our source tree as discussed on users@:
authorPeter Avalos <pavalos@dragonflybsd.org>
Thu, 9 Nov 2006 18:44:52 +0000 (18:44 +0000)
committerPeter Avalos <pavalos@dragonflybsd.org>
Thu, 9 Nov 2006 18:44:52 +0000 (18:44 +0000)
http://leaf.dragonflybsd.org/mailarchive/users/2006-11/msg00026.html

This is still available from pkgsrc.

36 files changed:
contrib/lukemftpd/COPYING [deleted file]
contrib/lukemftpd/ChangeLog [deleted file]
contrib/lukemftpd/INSTALL [deleted file]
contrib/lukemftpd/Makefile.in [deleted file]
contrib/lukemftpd/NEWS [deleted file]
contrib/lukemftpd/README [deleted file]
contrib/lukemftpd/THANKS [deleted file]
contrib/lukemftpd/acconfig.h [deleted file]
contrib/lukemftpd/aclocal.m4 [deleted file]
contrib/lukemftpd/config.h.in [deleted file]
contrib/lukemftpd/configure [deleted file]
contrib/lukemftpd/configure.in [deleted file]
contrib/lukemftpd/install-sh [deleted file]
contrib/lukemftpd/lukemftpd.h [deleted file]
contrib/lukemftpd/src/Makefile.in [deleted file]
contrib/lukemftpd/src/arpaftp.h [deleted file]
contrib/lukemftpd/src/cmds.c [deleted file]
contrib/lukemftpd/src/conf.c [deleted file]
contrib/lukemftpd/src/extern.h [deleted file]
contrib/lukemftpd/src/ftpcmd.y [deleted file]
contrib/lukemftpd/src/ftpd.8 [deleted file]
contrib/lukemftpd/src/ftpd.c [deleted file]
contrib/lukemftpd/src/ftpd.conf.5 [deleted file]
contrib/lukemftpd/src/ftpusers.5 [deleted file]
contrib/lukemftpd/src/logutmp.c [deleted file]
contrib/lukemftpd/src/logwtmp.c [deleted file]
contrib/lukemftpd/src/pathnames.h [deleted file]
contrib/lukemftpd/src/popen.c [deleted file]
contrib/lukemftpd/src/version.h [deleted file]
contrib/lukemftpd/todo [deleted file]
etc/Makefile
etc/defaults/make.conf
libexec/Makefile
libexec/lukemftpd/Makefile [deleted file]
libexec/lukemftpd/config.h [deleted file]
share/man/man5/make.conf.5

diff --git a/contrib/lukemftpd/COPYING b/contrib/lukemftpd/COPYING
deleted file mode 100644 (file)
index fe7b79b..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-Copyright 2001 Luke Mewburn <lukem@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.
-3. All advertising materials mentioning features or use of this software
-   must display the following acknowledgement:
-       This product includes software developed by Luke Mewburn.
-4. The name of the author may not be used to endorse or promote products
-   derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
-
-This product also contains software developed by other people, and you
-are advised to read the various source files to read the full details
-of the other licenses. Those licenses also require the following
-acknowledgements:
-
-       This product includes software developed by the NetBSD Foundation,
-       Inc.  and its contributors.  Those contributors include:
-               - Simon Burge
-               - Luke Mewburn
-               - Christos Zoulas
-
-       This product includes software developed by the University of
-       California, Berkeley and its contributors.  Those contributors
-       include:
-               - Michael Fischbein
-               - Guido van Rossum
-               - Institute of Electrical and Electronics Engineers, Inc
-
-       This product includes software developed by Christos Zoulas.
-
diff --git a/contrib/lukemftpd/ChangeLog b/contrib/lukemftpd/ChangeLog
deleted file mode 100644 (file)
index 82270df..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-Thu Mar 14 06:02:31 UTC 2002   lukem
-
-       * released 1.2 beta 1
-
-Thu Mar 14 05:39:24 UTC 2002   lukem
-
-       * libukem/snprintf.c: fix compile errors with gcc 3.x
-
-Sat Mar  1 07:10:54 UTC 2002   lukem
-
-       * update to NetBSD-current 2002-03-01
-           User visible changes include:
-               - enable case insensitive fnmatch(3)ing for hostname globs
-                 in ftpusers(5)
-               - add 'denyquick' ftpd.conf(5) keyword
-               - add 'private' ftpd.conf(5) keyword
-               - use "advertise" in docco
-           User visible fixes:
-               - reject SIZE requests for ASCII files > 10KB long
-               - fixes for mlsd/mlst standards conformance
-               - fix passive transfers for various web browsers
-               - various glob(3) fixes
-               - don't log xferlog-style entries if the transfer didn't start
-               - fix skey password challenge
-               - don't try and use the motd directive if it's not set
-
-Thu Feb 28 01:39:06 UTC 2002   lukem
-
-       * update libukem/glob.c from NetBSD's __glob13.c rev 1.22 and rev 1.23
-
-Wed May  9 02:04:08 UTC 2001   lukem
-
-       * released 1.1
-
-Sat Apr 28 07:13:57 UTC 2001   lukem
-
-       * released 1.1 beta 1
-
-       * determine if crypt() and getusershell() need declarations
-
-Wed Apr 25 06:27:08 UTC 2001   lukem
-
-       * update to NetBSD-current 2001-04-25:
-               - update copyrights
-               - remove superfluous byte_count update in send_file_list
-               - use own code instead of bothering with glob() to do ~
-                 expansion in pathname; there's no need to support glob
-                 wildcards in this case when it's not expanded here in the
-                 non-~ case 
-               - As threatened, handle OOB commands from within ftpcmd.y. 
-                 This involved changing the yacc syntax to be line-oriented,
-                 rather than having it run against the entire input at once,
-                 and adding a flag to struct tab, to  indicate if or not
-                 it's acceptable for a command to occur OOB.
-
-Tue Apr 17 08:20:09 UTC 2001   lukem
-
-       * look for <arpa/nameser.h>
-
-       * pull in <arpa/nameser.h> for INADDRZ, IN6ADDRSZ and INT16SZ,
-         and define if missing
-
-       * don't bother trying to use if_indextoname() in ip6_sa2str()
-         (fixes problems on MacOS X)
-
-       * remove unused sverrno in warnx() and errx()
-
-Fri Apr 13 16:02:40 UTC 2001   lukem
-
-       * improve test for long long support so that it's only enabled
-         if printf supports %ll or %q and they do the right thing.
-         use %q instead of %ll #if HAVE_PRINTF_QD
-
-       * added NEWS file
-
-       * support S/Key with add support for --with-skey
-
-       * pull up changes made in NetBSD in ftpcmd.y revision 1.61:
-               make checkportcmd address family independent, and correct
-               IPv4 case.  PR 12558.
-
-Sun Apr  8 03:35:55 UTC 2001   lukem
-
-       * release 1.0
-
-Thu Apr  5 14:08:25 UTC 2001   lukem
-
-       * search for lockf and flock, and use the first found (in that
-         order) to lock the pid files
-
-       * pull up fix to glob.c from rev 1.21 of NetBSD's __glob13.c:
-               - Fix sentinel for the buffer in globtilde. It was off
-                 by x 2. Noted by Theo.
-
-Thu Mar 29 16:57:17 EST 2001   lukem
-
-       * release 1.0 beta 4
-
-       * merge ftpd from NetBSD-current (20010329):
-               - don't leak globbed memory.
-
-       * only look for setproctitle in -lutil if fparseln wasn't found in it
-
-       * only REPLACE_FUNC(fparseln) if it wasn't found in -lutil
-
-       * always compile in local glob; it's the best way to ensure that
-         various security issues are fixed
-
-       * update glob(3) to netbsd-current (20010329), adding support for 
-         GLOB_LIMIT and fixing various buffer overflows.
-
-       * support --enable-builtinls (default) and --disable-builtinls
-
-Sun Mar 18 10:14:17 UTC 2001   lukem
-
-       * detect if d_namlen exists in struct dirent, and use in
-         fts_open() appropriately
-
-Sun Mar 18 08:30:01 UTC 2001   lukem
-
-       * released 1.0 beta3
-
-       * use inbuilt ls source
-
-       * autoconf improvements:
-               - replace missing fts_open, strmode, user_from_uid
-               - detect if optreset exists, and only use if it does
-               - fix AC_MSG strings (remove comma's from the messages)
-
-       * fixes to inbuilt ls:
-               - revert part of previous
-               - add rcsid
-               - remove stat_flags; flags_to_string is unused (i.e, ignore -o)
-               - conditionally support S_IFWHT
-               - hardcode blocksize to 1K
-               - remove support for nsec comparison in time sorting
-
-Sat Mar 17 12:02:51 UTC 2001   lukem
-
-       * generate cat manpages
-
-       * merge ftpd from NetBSD-current (20010317):
-               - make sure we do not return stray " at the end of stirng,
-                 like bla"\0.  From: "William C. Allen" <allenwc@home.com>
-               - ensure replydirname() do not truncate the names.
-                 From: Paul Janzen <pjanzen@foatdi.harvard.edu>
-               - don't support t(erabyte) as a suffix in strsuftoll()
-                 #ifdef NO_LONG_LONG
-               - Use GLOB_LIMIT. Also fix a bug where gl_offs was not
-                 initialized and could contain trash.
-               - fix redundant declarations.
-               - comment or delete text after CPP directives.
-               - consistently use syslog priorities
-
-       * improve detection of working glob(), including requiring GLOB_LIMIT.
-         don't bother explicilty looking for glob.h; the test above will
-         detect that.
-
-       * update replacement glob() to support GLOB_LIMIT
-
-       * look for setproctitle in -lutil as well
-
-       * pull in <paths.h> if it exists, but still check each _PATH_xxx and
-         define to something sane if not found; certain platforms have a
-         lobotomised <paths.h>
-
-Fri Mar 16 08:27:09 EST 2001   lukem
-
-       * in getusershell.c, remove __P() and const cruft
-
-       * undef _PATH_FTPUSERS before defining
-
-       * define _PATH_SHELLS if there's no <path.h>
-
-Wed Mar 14 18:49:57 EST 2001   lukem
-
-       * released 1.0 beta2
-
-       * add COPYING INSTALL README THANKS
-
-       * replace missing vsyslog
-
-Sat Mar 10 09:15:46 EST 2001   lukem
-
-       * replace missing getusershell
-
-       * look for vfork and don't use if it doesn't exist
-
-       * note tru64 doesn't have vsyslog (still to fix)
-
-       * prototype getusershell et al if missing
-
-Fri Mar  9 06:27:08 EST 2001   lukem
-
-       * released 1.0 beta1
-
-       * look for libutil.h (FreeBSD) as well as util.h (NetBSD)
-
-       * change the way that glob(3) is checked for 4.4BSD feature
-         compliance so that it's much more robust
-
-       * add strtoll()
-
-Thu Feb  1 12:24:00 EST 2001   lukem
-
-       * released 1.0 alpha
diff --git a/contrib/lukemftpd/INSTALL b/contrib/lukemftpd/INSTALL
deleted file mode 100644 (file)
index b187aeb..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-INSTALLATION INTRODUCTION
--------------------------
-
-This file describes how to compile and install lukemftpd on your
-system.
-
-       ============================================
-       =                                          =
-       =  NOTE: You will need an ANSI C compiler. =
-       =                                          =
-       ============================================
-
-
-For most systems, execute the following to compile and install
-lukemftpd:
-       ./configure
-       make
-       make install
-
-Preformatted manual pages for ftpd(8), ftpd.conf(5), and ftpusers(5) are
-also installed.  If you wish to install the sources, ensure that your system
-has up-to-date mandoc macros. groff ships with this macro suite,
-but it has bugs. Try:
-    ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/share/tmac/
-for a more recent version.
-
-
-CONFIGURATION OPTIONS
----------------------
-
-lukemftpd is configured using an `autoconf' generated `configure'
-script.  `configure' supports the following options:
-
-* The standard `autoconf configure' options, including:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [/usr/local]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [same as prefix]
-  --srcdir=DIR            find the sources in DIR [configure dir or ..]
-                          BSD or GNU make may be required for this to work.
-
-* Specific options:
-
-  --enable-ipv6           Enable IPv6 support (if your OS supports it).
-  --disable-ipv6          Disable IPv6 support (even if your OS supports it).
-                          [default: enabled]
-  --enable-builtinls      Enable built-in /bin/ls.  [default: enabled]
-  --disable-builtinls     Disable built-in /bin/ls.
-  --with-socks            Compile with SOCKS firewall traversal support.
-  --with-socks5[=PATH]    Compile with SOCKS5 firewall traversal support.
-  --with-socks4[=PATH]    Compile with SOCKS4 firewall traversal support.
-  --with-skey             Compile with S/Key authentication support.
-
-The following environment variables can be set to override various
-compiler related settings.
-  CC=compiler          specify name of the C compiler (default: gcc or cc)
-  CFLAGS=flags         specify flags to C compiler (default: -O -g or just -O)
-  LDFLAGS=flags                specify flags to linker (default: none)
-
-This can be achieved with:
-       env CC="compiler" CFLAGS="flags" LDFLAGS="flags" ./configure
-
-
-       ============================================
-       =                                          =
-       =  NOTE: You will need an ANSI C compiler. =
-       =                                          =
-       ============================================
-
-
-PLATFORM SPECIFIC NOTES
------------------------
-
-The following platforms & compilers have been tested:
-
-- Irix 6.5
-       - Compiler: /usr/local/bin/gcc
-          version: egcs-1.1.2
-
-         Configure with:
-               ./configure --disable-builtinls
-         as the in-built ls code doesn't appear to work due to
-         problems in the fts routines.
-
-- Linux 2.4 kernel with glibc prior to 2.2
-       Configure with:
-               ./configure --disable-ipv6
-       as glibc before 2.2 doesn't correctly support sin6_scope_id.
-
-- NetBSD 1.5 (i386)
-       - Compiler: /usr/bin/cc
-          version: egcs-1.1.2
-
-- Solaris 2.6 (sparc)
-       - Compiler: /opt/SUNWspro/bin/cc
-          version: WorkShop Compilers 5.0
-
-- Tru64 5.0
-       - Compiler: /bin/cc
-          version: Compaq C V6.1-011 on Digital UNIX V5.0 (Rev. 910)
-
diff --git a/contrib/lukemftpd/Makefile.in b/contrib/lukemftpd/Makefile.in
deleted file mode 100644 (file)
index 6b751cb..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-# $Id: Makefile.in,v 1.1 2000/07/29 13:34:15 lukem Exp $
-#
-
-srcdir = @srcdir@
-VPATH  = @srcdir@
-SHELL  = /bin/sh
-
-@SET_MAKE@
-
-SUBDIRS        = libukem src
-
-all:   ftpd
-
-ftpd:  @LIBUKEM@
-       ( cd src; ${MAKE} )
-
-libukem.a:
-       ( cd libukem; ${MAKE} )
-
-install clean:
-       @for i in ${SUBDIRS}; do \
-           ( echo "$@ ===> $$i" ; cd $$i ; ${MAKE} $@ ); \
-       done
-
-distclean: clean
-       @for i in ${SUBDIRS}; do \
-           ( echo "$@ ===> $$i" ; cd $$i ; ${MAKE} $@ ); \
-       done
-       rm -f Makefile config.cache config.log config.status config.h
diff --git a/contrib/lukemftpd/NEWS b/contrib/lukemftpd/NEWS
deleted file mode 100644 (file)
index 6dcc320..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-This is a brief description of the new features and fixes added to
-lukemftpd-1.2 since the release of lukemftpd-1.1.
-
-* "denyquick" keyword added to ftpd.conf(5).
-
-* "private" keyword added to ftpd.conf(5).
-
-* Hostnames in ftpusers(5) are now matched in a case-insensitive fashion.
-
----
-This is a brief description of the new features and fixes added to
-lukemftpd-1.1 since the release of lukemftpd-1.0.
-
-* Fixed checkportcmd for the IPv4 case.
-
-* Added support for S/Key authentication.
-
-* Use method other than glob(3) to do ~ expansion.
-
-* Improve portability.
-
-* Rewrite method of handling out-of-band operations, in order to more
-  easily support RFC2228 security extensions in a future release.
diff --git a/contrib/lukemftpd/README b/contrib/lukemftpd/README
deleted file mode 100644 (file)
index 95b42a9..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-WHAT IS LUKEMFTPD?
-------------------
-
-`lukemftpd' is what many users affectionately call the enhanced ftp
-server in NetBSD ( http://www.netbsd.org/ ).  The `lukem' comes from
-the account name of the NetBSD developer who wrote most of the
-enhancements: Luke Mewburn <lukem@netbsd.org>.
-
-This package is a `port' of the NetBSD ftp server to other systems.
-
-The enhancements over the standard ftp server in 4.4BSD (and derivatives)
-include:
-       * command line options:
-               + allow override of directory used by anonymous ftp (-a)
-               + optional change of directory for configuration files (-c)
-               + check whether a user would be granted access (-C)
-               + specify email address for display messages (-e)
-               + change hostname advertised as (-h, -H)
-               + specify data port to listen on (-P)
-               + keep track of the number of users logged in (-q, -Q)
-               + permanently drop privileges (-r)
-               + specify version advertised (-V)
-               + log wu-ftpd style `xferlog' entries to syslog (-X)
-
-       * % escape sequences in files displayed to users (/etc/motd,
-         /etc/ftpwelcome, ...)
-
-       * IPv6 support (from the KAME project).
-
-       * ftpusers(5) control of who may log in, and optional
-         specification of a "class" to be associated with the
-         specified user or group.
-
-       * ftpd.conf(5) to control various configuration options on
-         a per-class basis.  The following options are supported:
-               + address to advertise in PASV and LPSV responses
-               + check the PORT command for validity
-               + specify the directory to chroot(2) to
-               + automatic in-line conversions (e.g, `.tar.gz'
-                 retrieval of directories)
-               + deny logins after the username is provided (rather
-                 than after the password)
-               + display a file the first time a directory is entered
-               + specify the home directory of the session (for "cd ~")
-               + limit the maximum number of concurrent sessions
-               + limit the maximum size of an uploaded file
-               + set the default timeout and restrict the maximum
-                 timeout that a user may request
-               + deny user from running the CHMOD, DELE, MKD, RMD, RNFR
-                 and UMASK commands
-               + specify the motd(5) file to display upon login
-               + specify a glob(3) pattern of files to notify a user
-                 of the existance of once a directory is entered
-               + enable/disable the use of PASV and EPSV connections
-               + limit the ports that PORT and LPRT may bind to
-               + limit the transfer rate of transfers
-               + limit the characters that may be used in an uploaded
-                 filename
-               + set the umask
-               + deny user from running APPE, STOR and STOU as well
-                 as CHMOD, ...
-
-       * In-built copy of ls(1) to implement LIST (unless disabled
-         out with --disable-builtinls), so that /bin/ls does not need
-         to exist inside the ftp tree.
-
-       * Virtual servers can be supported with a combination of
-         ftpd(8) flags and support in the invoking inetd(8) program
-         (such as that in NetBSD).
-
-       * Optional S/Key authentication (if configued with --with-skey).
-
-
-Features present in NetBSD's ftpd but not yet available in lukemftpd:
-       * logging active sessions to utmp(5) (-u, -U)
-       * logging completed sessions to wtmp(5) (-w, -W)
-
-
-INSTALLATION
-------------
-
-Refer to `INSTALL' for more information on how to compile and install
-lukemftpd.
-
-
-FEEDBACK / BUG REPORTS
-----------------------
-
-Please email feedback back to the maintainer: <lukem@netbsd.org>.
-
-
-COPYRIGHT
----------
-
-lukemftpd is covered by a BSD-style copyright notice. Please refer to
-the file `COPYING' for more information.
-
-
-AVAILABILITY
-------------
-
-The primary ftp site for lukemftpd is:
-       ftp://ftp.netbsd.org/pub/NetBSD/misc/lukemftp/
-(the same location as lukemftp)
diff --git a/contrib/lukemftpd/THANKS b/contrib/lukemftpd/THANKS
deleted file mode 100644 (file)
index 5919880..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Whilst a lot of the work in lukemftpd (both the original sources in NetBSD
-and this port) was done by me (Luke Mewburn), it would not be as useable
-without the enhancements, fixes, or input from the following people:
-
-Christos Zoulas                        <christos@netbsd.org>
-Curt Sampson                   <cjs@netbsd.org>
-Jun-ichiro itojun Hagino       <itojun@netbsd.org> 
-Matthew R. Green               <mrg@eterna.com.au>
-Simon Burge                    <simonb@netbsd.org>
-Todd Vierling                  <tv@netbsd.org>
diff --git a/contrib/lukemftpd/acconfig.h b/contrib/lukemftpd/acconfig.h
deleted file mode 100644 (file)
index 88caee0..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/* $Id: acconfig.h,v 1.9 2001/04/28 07:11:06 lukem Exp $ */
-
-@TOP@
-@BOTTOM@
-
-/* Define if your compiler supports `long long' */
-#undef HAVE_LONG_LONG
-
-/* Define if *printf() uses %qd to print `long long' (otherwise uses %lld) */
-#undef HAVE_PRINTF_QD
-
-/* Define if in_port_t exists */
-#undef HAVE_IN_PORT_T
-
-/* Define if struct sockaddr.sa_len exists (implies sockaddr_in.sin_len, etc) */
-#undef HAVE_SOCKADDR_SA_LEN
-
-/* Define if socklen_t exists */
-#undef HAVE_SOCKLEN_T
-
-/* Define if AF_INET6 exists in <sys/socket.h> */
-#undef HAVE_AF_INET6
-
-/* Define if `struct sockaddr_in6' exists in <netinet/in.h> */
-#undef HAVE_SOCKADDR_IN6
-
-/* Define if `struct addrinfo' exists in <netdb.h> */
-#undef HAVE_ADDRINFO
-
-/*
- * Define if <netdb.h> contains AI_NUMERICHOST et al.
- * Systems which only implement RFC2133 will need this.
- */
-#undef HAVE_RFC2553_NETDB
-
-/* Define if `struct direct' has a d_namlen element */
-#undef HAVE_D_NAMLEN
-
-/* Define if struct passwd.pw_expire exists. */
-#undef HAVE_PW_EXPIRE
-
-/* Define if GLOB_BRACE, gl_path and gl_match exist in <glob.h> */
-#undef HAVE_WORKING_GLOB
-
-/* Define if crypt() is declared in <unistd.h> */
-#undef HAVE_CRYPT_D
-
-/* Define if fclose() is declared in <stdio.h> */
-#undef HAVE_FCLOSE_D
-
-/* Define if optarg is declared in <stdlib.h> or <unistd.h> */
-#undef HAVE_OPTARG_D
-
-/* Define if optind is declared in <stdlib.h> or <unistd.h> */
-#undef HAVE_OPTIND_D
-
-/* Define if optreset exists */
-#undef HAVE_OPTRESET
-
-/* Define if pclose() is declared in <stdio.h> */
-#undef HAVE_PCLOSE_D
-
-/* Define if getusershell() is declared in <unistd.h> */
-#undef HAVE_GETUSERSHELL_D
-
-/* Define if `long long' is supported and sizeof(off_t) >= 8 */
-#undef HAVE_QUAD_SUPPORT
-
-/* Define if not using in-built /bin/ls code */
-#undef NO_INTERNAL_LS
-
-/* Define if using S/Key */
-#undef SKEY
-
-/*
- * Define this if compiling with SOCKS (the firewall traversal library).
- * Also, you must define connect, getsockname, bind, accept, listen, and
- * select to their R-versions.
- */
-#undef SOCKS
-#undef SOCKS4
-#undef SOCKS5
-#undef connect
-#undef getsockname
-#undef bind
-#undef accept
-#undef listen
-#undef select
-#undef dup
-#undef dup2
-#undef fclose
-#undef gethostbyname
-#undef getpeername
-#undef read
-#undef recv
-#undef recvfrom
-#undef rresvport
-#undef send
-#undef sendto
-#undef shutdown
-#undef write
diff --git a/contrib/lukemftpd/aclocal.m4 b/contrib/lukemftpd/aclocal.m4
deleted file mode 100644 (file)
index 572f5c5..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
-dnl $Id: aclocal.m4,v 1.1 2000/07/29 13:34:15 lukem Exp $
-dnl
-
-dnl
-dnl AC_MSG_TRY_COMPILE
-dnl
-dnl Written by Luke Mewburn <lukem@netbsd.org>
-dnl
-dnl Usage:
-dnl    AC_MSG_TRY_COMPILE(Message, CacheVar, Includes, Code,
-dnl                        ActionPass [,ActionFail] )
-dnl
-dnl effectively does:
-dnl    AC_CACHE_CHECK(Message, CacheVar,
-dnl            AC_TRY_COMPILE(Includes, Code, CacheVar = yes, CacheVar = no)
-dnl            if CacheVar == yes
-dnl                    AC_MESSAGE_RESULT(yes)
-dnl                    ActionPass
-dnl            else
-dnl                    AC_MESSAGE_RESULT(no)
-dnl                    ActionFail
-dnl    )
-dnl
-AC_DEFUN(AC_MSG_TRY_COMPILE, [
-       AC_CACHE_CHECK($1, $2, [
-               AC_TRY_COMPILE([ $3 ], [ $4; ], [ $2=yes ], [ $2=no ])
-       ])
-       if test "x[$]$2" = "xyes"; then
-               $5
-       else
-               $6
-               :
-       fi
-])
-
-dnl
-dnl AC_MSG_TRY_LINK
-dnl
-dnl Usage:
-dnl    AC_MSG_TRY_LINK(Message, CacheVar, Includes, Code,
-dnl                        ActionPass [,ActionFail] )
-dnl
-dnl as AC_MSG_TRY_COMPILE, but uses AC_TRY_LINK instead of AC_TRY_COMPILE
-dnl
-AC_DEFUN(AC_MSG_TRY_LINK, [
-       AC_CACHE_CHECK($1, $2, [
-               AC_TRY_LINK([ $3 ], [ $4; ], [ $2=yes ], [ $2=no ])
-       ])
-       if test "x[$]$2" = "xyes"; then
-               $5
-       else
-               $6
-               :
-       fi
-])
-
-
-dnl
-dnl AC_LIBRARY_NET: #Id: net.m4,v 1.5 1997/11/09 21:36:54 jhawk Exp #
-dnl
-dnl Written by John Hawkinson <jhawk@mit.edu>. This code is in the Public
-dnl Domain.
-dnl
-dnl This test is for network applications that need socket() and
-dnl gethostbyname() -ish functions.  Under Solaris, those applications need to
-dnl link with "-lsocket -lnsl".  Under IRIX, they should *not* link with
-dnl "-lsocket" because libsocket.a breaks a number of things (for instance:
-dnl gethostbyname() under IRIX 5.2, and snoop sockets under most versions of
-dnl IRIX).
-dnl 
-dnl Unfortunately, many application developers are not aware of this, and
-dnl mistakenly write tests that cause -lsocket to be used under IRIX.  It is
-dnl also easy to write tests that cause -lnsl to be used under operating
-dnl systems where neither are necessary (or useful), such as SunOS 4.1.4, which
-dnl uses -lnsl for TLI.
-dnl 
-dnl This test exists so that every application developer does not test this in
-dnl a different, and subtly broken fashion.
-dnl 
-dnl It has been argued that this test should be broken up into two seperate
-dnl tests, one for the resolver libraries, and one for the libraries necessary
-dnl for using Sockets API. Unfortunately, the two are carefully intertwined and
-dnl allowing the autoconf user to use them independantly potentially results in
-dnl unfortunate ordering dependancies -- as such, such component macros would
-dnl have to carefully use indirection and be aware if the other components were
-dnl executed. Since other autoconf macros do not go to this trouble, and almost
-dnl no applications use sockets without the resolver, this complexity has not
-dnl been implemented.
-dnl
-dnl The check for libresolv is in case you are attempting to link statically
-dnl and happen to have a libresolv.a lying around (and no libnsl.a).
-dnl
-AC_DEFUN(AC_LIBRARY_NET, [
-   # Most operating systems have gethostbyname() in the default searched
-   # libraries (i.e. libc):
-   AC_CHECK_FUNC(gethostbyname, ,
-     # Some OSes (eg. Solaris) place it in libnsl:
-     AC_CHECK_LIB(nsl, gethostbyname, , 
-       # Some strange OSes (SINIX) have it in libsocket:
-       AC_CHECK_LIB(socket, gethostbyname, ,
-          # Unfortunately libsocket sometimes depends on libnsl.
-          # AC_CHECK_LIB's API is essentially broken so the following
-          # ugliness is necessary:
-          AC_CHECK_LIB(socket, gethostbyname,
-             LIBS="-lsocket -lnsl $LIBS",
-               AC_CHECK_LIB(resolv, gethostbyname),
-             -lnsl)
-       )
-     )
-   )
-  AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, ,
-    AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl)))
-  ])
-
-
-dnl Checks for SOCKS firewall support.
-dnl
-dnl Written by Matthew R. Green <mrg@eterna.com.au>
-dnl
-AC_DEFUN(AC_LIBRARY_SOCKS, [
-    AC_MSG_CHECKING(whether to support SOCKS)
-    AC_ARG_WITH(socks,
-    [  --with-socks            Compile with SOCKS firewall traversal support.],
-    [
-       case "$withval" in
-       no)
-           AC_MSG_RESULT(no)
-           ;;
-       yes)
-           AC_MSG_RESULT(yes)
-           AC_CHECK_LIB(socks5, SOCKSconnect, [
-               socks=5
-               LIBS="-lsocks5 $LIBS"], [
-             AC_CHECK_LIB(socks, Rconnect, [
-               socks=4
-               LIBS="-lsocks $LIBS"], [
-                   AC_MSG_ERROR(Could not find socks library.  You must first install socks.) ] ) ] )
-           ;;
-       esac
-    ],
-       AC_MSG_RESULT(no)
-    )
-
-    if test "x$socks" = "x"; then
-       AC_MSG_CHECKING(whether to support SOCKS5)
-       AC_ARG_WITH(socks5,
-       [  --with-socks5[=PATH]    Compile with SOCKS5 firewall traversal support.],
-       [
-           case "$withval" in
-           no)
-               AC_MSG_RESULT(no)
-               ;;
-           *)
-               AC_MSG_RESULT(yes)
-               socks=5
-               if test "x$withval" = "xyes"; then
-                   withval="-lsocks5"
-               else
-                   if test -d "$withval"; then
-                       if test -d "$withval/include"; then
-                           CFLAGS="$CFLAGS -I$withval/include"
-                       else
-                           CFLAGS="$CFLAGS -I$withval"
-                       fi
-                       if test -d "$withval/lib"; then
-                           withval="-L$withval/lib -lsocks5"
-                       else
-                           withval="-L$withval -lsocks5"
-                       fi
-                   fi
-               fi
-               LIBS="$withval $LIBS"
-               # If Socks was compiled with Kerberos support, we will need
-               # to link against kerberos libraries.  Temporarily append
-               # to LIBS.  This is harmless if there is no kerberos support.
-               TMPLIBS="$LIBS"
-               LIBS="$LIBS $KERBEROS_LIBS"
-               AC_TRY_LINK([],
-                   [ SOCKSconnect(); ],
-                   [],
-                   [ AC_MSG_ERROR(Could not find the $withval library.  You must first install socks5.) ])
-               LIBS="$TMPLIBS"
-               ;;
-           esac
-       ],
-           AC_MSG_RESULT(no)
-       )
-    fi
-
-    if test "x$socks" = "x"; then
-       AC_MSG_CHECKING(whether to support SOCKS4)
-       AC_ARG_WITH(socks4,
-       [  --with-socks4[=PATH]    Compile with SOCKS4 firewall traversal support.],
-       [
-           case "$withval" in
-           no)
-               AC_MSG_RESULT(no)
-               ;;
-           *)
-               AC_MSG_RESULT(yes)
-               socks=4
-               if test "x$withval" = "xyes"; then
-                   withval="-lsocks"
-               else
-                   if test -d "$withval"; then
-                       withval="-L$withval -lsocks"
-                   fi
-               fi
-               LIBS="$withval $LIBS"
-               AC_TRY_LINK([],
-                   [ Rconnect(); ],
-                   [],
-                   [ AC_MSG_ERROR(Could not find the $withval library.  You must first install socks.) ])
-               ;;
-           esac
-       ],
-           AC_MSG_RESULT(no)
-       )
-    fi
-
-    if test "x$socks" = "x4"; then
-       AC_DEFINE(SOCKS)
-       AC_DEFINE(SOCKS4)
-       AC_DEFINE(connect, Rconnect)
-       AC_DEFINE(getsockname, Rgetsockname)
-       AC_DEFINE(bind, Rbind)
-       AC_DEFINE(accept, Raccept)
-       AC_DEFINE(listen, Rlisten)
-       AC_DEFINE(select, Rselect)
-    fi
-
-    if test "x$socks" = "x5"; then
-       AC_DEFINE(SOCKS)
-       AC_DEFINE(SOCKS5)
-       AC_DEFINE(connect,SOCKSconnect)
-       AC_DEFINE(getsockname,SOCKSgetsockname)
-       AC_DEFINE(getpeername,SOCKSgetpeername)
-       AC_DEFINE(bind,SOCKSbind)
-       AC_DEFINE(accept,SOCKSaccept)
-       AC_DEFINE(listen,SOCKSlisten)
-       AC_DEFINE(select,SOCKSselect)
-       AC_DEFINE(recvfrom,SOCKSrecvfrom)
-       AC_DEFINE(sendto,SOCKSsendto)
-       AC_DEFINE(recv,SOCKSrecv)
-       AC_DEFINE(send,SOCKSsend)
-       AC_DEFINE(read,SOCKSread)
-       AC_DEFINE(write,SOCKSwrite)
-       AC_DEFINE(rresvport,SOCKSrresvport)
-       AC_DEFINE(shutdown,SOCKSshutdown)
-       AC_DEFINE(listen,SOCKSlisten)
-       AC_DEFINE(close,SOCKSclose)
-       AC_DEFINE(dup,SOCKSdup)
-       AC_DEFINE(dup2,SOCKSdup2)
-       AC_DEFINE(fclose,SOCKSfclose)
-       AC_DEFINE(gethostbyname,SOCKSgethostbyname)
-    fi
-])
diff --git a/contrib/lukemftpd/config.h.in b/contrib/lukemftpd/config.h.in
deleted file mode 100644 (file)
index b32c4c1..0000000
+++ /dev/null
@@ -1,274 +0,0 @@
-/* config.h.in.  Generated automatically from configure.in by autoheader.  */
-/* $Id: config.h.in,v 1.15 2001/04/28 07:11:46 lukem Exp $ */
-
-
-/* Define if the closedir function returns void instead of int.  */
-#undef CLOSEDIR_VOID
-
-/* Define to empty if the keyword does not work.  */
-#undef const
-
-/* Define if your C compiler doesn't accept -c and -o together.  */
-#undef NO_MINUS_C_MINUS_O
-
-/* Define if your Fortran 77 compiler doesn't accept -c and -o together. */
-#undef F77_NO_MINUS_C_MINUS_O
-
-/* Define to `long' if <sys/types.h> doesn't define.  */
-#undef off_t
-
-/* Define to the type of arg1 for select(). */
-#undef SELECT_TYPE_ARG1
-
-/* Define to the type of args 2, 3 and 4 for select(). */
-#undef SELECT_TYPE_ARG234
-
-/* Define to the type of arg5 for select(). */
-#undef SELECT_TYPE_ARG5
-
-/* Define if you have the ANSI C header files.  */
-#undef STDC_HEADERS
-
-/* Define if you can safely include both <sys/time.h> and <time.h>.  */
-#undef TIME_WITH_SYS_TIME
-
-/* Define if the closedir function returns void instead of int.  */
-#undef VOID_CLOSEDIR
-
-/* The number of bytes in a off_t.  */
-#undef SIZEOF_OFF_T
-
-/* Define if you have the err function.  */
-#undef HAVE_ERR
-
-/* Define if you have the fgetln function.  */
-#undef HAVE_FGETLN
-
-/* Define if you have the flock function.  */
-#undef HAVE_FLOCK
-
-/* Define if you have the fparseln function.  */
-#undef HAVE_FPARSELN
-
-/* Define if you have the fts_open function.  */
-#undef HAVE_FTS_OPEN
-
-/* Define if you have the getaddrinfo function.  */
-#undef HAVE_GETADDRINFO
-
-/* Define if you have the getgrouplist function.  */
-#undef HAVE_GETGROUPLIST
-
-/* Define if you have the getnameinfo function.  */
-#undef HAVE_GETNAMEINFO
-
-/* Define if you have the getspnam function.  */
-#undef HAVE_GETSPNAM
-
-/* Define if you have the getusershell function.  */
-#undef HAVE_GETUSERSHELL
-
-/* Define if you have the inet_net_pton function.  */
-#undef HAVE_INET_NET_PTON
-
-/* Define if you have the inet_ntop function.  */
-#undef HAVE_INET_NTOP
-
-/* Define if you have the inet_pton function.  */
-#undef HAVE_INET_PTON
-
-/* Define if you have the lockf function.  */
-#undef HAVE_LOCKF
-
-/* Define if you have the mkstemp function.  */
-#undef HAVE_MKSTEMP
-
-/* Define if you have the setlogin function.  */
-#undef HAVE_SETLOGIN
-
-/* Define if you have the setproctitle function.  */
-#undef HAVE_SETPROCTITLE
-
-/* Define if you have the sl_init function.  */
-#undef HAVE_SL_INIT
-
-/* Define if you have the snprintf function.  */
-#undef HAVE_SNPRINTF
-
-/* Define if you have the strdup function.  */
-#undef HAVE_STRDUP
-
-/* Define if you have the strerror function.  */
-#undef HAVE_STRERROR
-
-/* Define if you have the strlcat function.  */
-#undef HAVE_STRLCAT
-
-/* Define if you have the strlcpy function.  */
-#undef HAVE_STRLCPY
-
-/* Define if you have the strmode function.  */
-#undef HAVE_STRMODE
-
-/* Define if you have the strsep function.  */
-#undef HAVE_STRSEP
-
-/* Define if you have the strtoll function.  */
-#undef HAVE_STRTOLL
-
-/* Define if you have the user_from_uid function.  */
-#undef HAVE_USER_FROM_UID
-
-/* Define if you have the usleep function.  */
-#undef HAVE_USLEEP
-
-/* Define if you have the vfork function.  */
-#undef HAVE_VFORK
-
-/* Define if you have the vsyslog function.  */
-#undef HAVE_VSYSLOG
-
-/* Define if you have the <arpa/nameser.h> header file.  */
-#undef HAVE_ARPA_NAMESER_H
-
-/* Define if you have the <dirent.h> header file.  */
-#undef HAVE_DIRENT_H
-
-/* Define if you have the <err.h> header file.  */
-#undef HAVE_ERR_H
-
-/* Define if you have the <fts.h> header file.  */
-#undef HAVE_FTS_H
-
-/* Define if you have the <libutil.h> header file.  */
-#undef HAVE_LIBUTIL_H
-
-/* Define if you have the <ndir.h> header file.  */
-#undef HAVE_NDIR_H
-
-/* Define if you have the <paths.h> header file.  */
-#undef HAVE_PATHS_H
-
-/* Define if you have the <sys/dir.h> header file.  */
-#undef HAVE_SYS_DIR_H
-
-/* Define if you have the <sys/ndir.h> header file.  */
-#undef HAVE_SYS_NDIR_H
-
-/* Define if you have the <sys/sysmacros.h> header file.  */
-#undef HAVE_SYS_SYSMACROS_H
-
-/* Define if you have the <util.h> header file.  */
-#undef HAVE_UTIL_H
-
-/* Define if you have the crypt library (-lcrypt).  */
-#undef HAVE_LIBCRYPT
-
-/* Define if you have the nsl library (-lnsl).  */
-#undef HAVE_LIBNSL
-
-/* Define if you have the skey library (-lskey).  */
-#undef HAVE_LIBSKEY
-
-/* Define if you have the socket library (-lsocket).  */
-#undef HAVE_LIBSOCKET
-
-/* Define if you have the util library (-lutil).  */
-#undef HAVE_LIBUTIL
-
-/* Define if your compiler supports `long long' */
-#undef HAVE_LONG_LONG
-
-/* Define if *printf() uses %qd to print `long long' (otherwise uses %lld) */
-#undef HAVE_PRINTF_QD
-
-/* Define if in_port_t exists */
-#undef HAVE_IN_PORT_T
-
-/* Define if struct sockaddr.sa_len exists (implies sockaddr_in.sin_len, etc) */
-#undef HAVE_SOCKADDR_SA_LEN
-
-/* Define if socklen_t exists */
-#undef HAVE_SOCKLEN_T
-
-/* Define if AF_INET6 exists in <sys/socket.h> */
-#undef HAVE_AF_INET6
-
-/* Define if `struct sockaddr_in6' exists in <netinet/in.h> */
-#undef HAVE_SOCKADDR_IN6
-
-/* Define if `struct addrinfo' exists in <netdb.h> */
-#undef HAVE_ADDRINFO
-
-/*
- * Define if <netdb.h> contains AI_NUMERICHOST et al.
- * Systems which only implement RFC2133 will need this.
- */
-#undef HAVE_RFC2553_NETDB
-
-/* Define if `struct direct' has a d_namlen element */
-#undef HAVE_D_NAMLEN
-
-/* Define if struct passwd.pw_expire exists. */
-#undef HAVE_PW_EXPIRE
-
-/* Define if GLOB_BRACE, gl_path and gl_match exist in <glob.h> */
-#undef HAVE_WORKING_GLOB
-
-/* Define if crypt() is declared in <unistd.h> */
-#undef HAVE_CRYPT_D
-
-/* Define if fclose() is declared in <stdio.h> */
-#undef HAVE_FCLOSE_D
-
-/* Define if optarg is declared in <stdlib.h> or <unistd.h> */
-#undef HAVE_OPTARG_D
-
-/* Define if optind is declared in <stdlib.h> or <unistd.h> */
-#undef HAVE_OPTIND_D
-
-/* Define if optreset exists */
-#undef HAVE_OPTRESET
-
-/* Define if pclose() is declared in <stdio.h> */
-#undef HAVE_PCLOSE_D
-
-/* Define if getusershell() is declared in <unistd.h> */
-#undef HAVE_GETUSERSHELL_D
-
-/* Define if `long long' is supported and sizeof(off_t) >= 8 */
-#undef HAVE_QUAD_SUPPORT
-
-/* Define if not using in-built /bin/ls code */
-#undef NO_INTERNAL_LS
-
-/* Define if using S/Key */
-#undef SKEY
-
-/*
- * Define this if compiling with SOCKS (the firewall traversal library).
- * Also, you must define connect, getsockname, bind, accept, listen, and
- * select to their R-versions.
- */
-#undef SOCKS
-#undef SOCKS4
-#undef SOCKS5
-#undef connect
-#undef getsockname
-#undef bind
-#undef accept
-#undef listen
-#undef select
-#undef dup
-#undef dup2
-#undef fclose
-#undef gethostbyname
-#undef getpeername
-#undef read
-#undef recv
-#undef recvfrom
-#undef rresvport
-#undef send
-#undef sendto
-#undef shutdown
-#undef write
diff --git a/contrib/lukemftpd/configure b/contrib/lukemftpd/configure
deleted file mode 100755 (executable)
index 4d72d32..0000000
+++ /dev/null
@@ -1,4091 +0,0 @@
-#! /bin/sh
-
-# From configure.in Revision: 1.17 
-
-
-
-
-
-
-
-
-
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13 
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-ac_help="$ac_help
-\
-  --enable-ipv6           Enable IPv6 support (if your OS supports it).
-  --disable-ipv6          Disable IPv6 support (even if your OS supports it).
-                          [default: enabled]"
-ac_help="$ac_help
-\
-  --enable-builtinls      Enable built-in /bin/ls.  [default: enabled]
-  --disable-builtinls     Disable built-in /bin/ls."
-ac_help="$ac_help
-  --with-socks            Compile with SOCKS firewall traversal support."
-ac_help="$ac_help
-  --with-socks5[=PATH]    Compile with SOCKS5 firewall traversal support."
-ac_help="$ac_help
-  --with-socks4[=PATH]    Compile with SOCKS4 firewall traversal support."
-ac_help="$ac_help
-  --with-skey             Compile with S/Key authentication support."
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
-
-ac_prev=
-for ac_option
-do
-
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval "$ac_prev=\$ac_option"
-    ac_prev=
-    continue
-  fi
-
-  case "$ac_option" in
-  -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) ac_optarg= ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case "$ac_option" in
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir="$ac_optarg" ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build="$ac_optarg" ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file="$ac_optarg" ;;
-
-  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-  | --da=*)
-    datadir="$ac_optarg" ;;
-
-  -disable-* | --disable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    eval "enable_${ac_feature}=no" ;;
-
-  -enable-* | --enable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "enable_${ac_feature}='$ac_optarg'" ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix="$ac_optarg" ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he)
-    # Omit some internal or obsolete options to make the list less imposing.
-    # This message is too long to be a string in the A/UX 3.1 sh.
-    cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
-  --cache-file=FILE       cache test results in FILE
-  --help                  print this message
-  --no-create             do not create output files
-  --quiet, --silent       do not print \`checking...' messages
-  --version               print the version of autoconf that created configure
-Directory and file names:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [same as prefix]
-  --bindir=DIR            user executables in DIR [EPREFIX/bin]
-  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
-  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
-  --datadir=DIR           read-only architecture-independent data in DIR
-                          [PREFIX/share]
-  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
-                          [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
-  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
-  --includedir=DIR        C header files in DIR [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
-  --infodir=DIR           info documentation in DIR [PREFIX/info]
-  --mandir=DIR            man documentation in DIR [PREFIX/man]
-  --srcdir=DIR            find the sources in DIR [configure dir or ..]
-  --program-prefix=PREFIX prepend PREFIX to installed program names
-  --program-suffix=SUFFIX append SUFFIX to installed program names
-  --program-transform-name=PROGRAM
-                          run sed PROGRAM on installed program names
-EOF
-    cat << EOF
-Host type:
-  --build=BUILD           configure for building on BUILD [BUILD=HOST]
-  --host=HOST             configure for HOST [guessed]
-  --target=TARGET         configure for TARGET [TARGET=HOST]
-Features and packages:
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --x-includes=DIR        X include files are in DIR
-  --x-libraries=DIR       X library files are in DIR
-EOF
-    if test -n "$ac_help"; then
-      echo "--enable and --with options recognized:$ac_help"
-    fi
-    exit 0 ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host="$ac_optarg" ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir="$ac_optarg" ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir="$ac_optarg" ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir="$ac_optarg" ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir="$ac_optarg" ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst \
-  | --locals | --local | --loca | --loc | --lo)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-    localstatedir="$ac_optarg" ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir="$ac_optarg" ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir="$ac_optarg" ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix="$ac_optarg" ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix="$ac_optarg" ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix="$ac_optarg" ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name="$ac_optarg" ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir="$ac_optarg" ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir="$ac_optarg" ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site="$ac_optarg" ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir="$ac_optarg" ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir="$ac_optarg" ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target="$ac_optarg" ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.13"
-    exit 0 ;;
-
-  -with-* | --with-*)
-    ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "with_${ac_package}='$ac_optarg'" ;;
-
-  -without-* | --without-*)
-    ac_package=`echo $ac_option|sed -e 's/-*without-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    eval "with_${ac_package}=no" ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes="$ac_optarg" ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries="$ac_optarg" ;;
-
-  -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
-    ;;
-
-  *)
-    if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
-      echo "configure: warning: $ac_option: invalid host type" 1>&2
-    fi
-    if test "x$nonopt" != xNONE; then
-      { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
-    fi
-    nonopt="$ac_option"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
-  exec 6>/dev/null
-else
-  exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
-  case "$ac_arg" in
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c) ;;
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
-  *" "*|*"     "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
-  ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-  *) ac_configure_args="$ac_configure_args $ac_arg" ;;
-  esac
-done
-
-# NLS nuisances.
-# Only set these to C if already set.  These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=lukemftpd.h
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then its parent.
-  ac_prog=$0
-  ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
-  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
-  srcdir=$ac_confdir
-  if test ! -r $srcdir/$ac_unique_file; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
-  if test "$ac_srcdir_defaulted" = yes; then
-    { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
-  else
-    { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
-  fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
-  if test "x$prefix" != xNONE; then
-    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-  else
-    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-  fi
-fi
-for ac_site_file in $CONFIG_SITE; do
-  if test -r "$ac_site_file"; then
-    echo "loading site script $ac_site_file"
-    . "$ac_site_file"
-  fi
-done
-
-if test -r "$cache_file"; then
-  echo "loading cache $cache_file"
-  . $cache_file
-else
-  echo "creating cache $cache_file"
-  > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-ac_exeext=
-ac_objext=o
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
-  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
-  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
-    ac_n= ac_c='
-' ac_t='       '
-  else
-    ac_n=-n ac_c= ac_t=
-  fi
-else
-  ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-
-# Check whether --enable-ipv6 or --disable-ipv6 was given.
-if test "${enable_ipv6+set}" = set; then
-  enableval="$enable_ipv6"
-  opt_ipv6=$enableval
-else
-  opt_ipv6=yes
-fi
-
-# Check whether --enable-builtinls or --disable-builtinls was given.
-if test "${enable_builtinls+set}" = set; then
-  enableval="$enable_builtinls"
-  opt_builtinls=$enableval
-else
-  opt_builtinls=yes
-fi
-
-
-
-echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:574: checking whether ${MAKE-make} sets \${MAKE}" >&5
-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftestmake <<\EOF
-all:
-       @echo 'ac_maketemp="${MAKE}"'
-EOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
-if test -n "$ac_maketemp"; then
-  eval ac_cv_prog_make_${ac_make}_set=yes
-else
-  eval ac_cv_prog_make_${ac_make}_set=no
-fi
-rm -f conftestmake
-fi
-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  SET_MAKE=
-else
-  echo "$ac_t""no" 1>&6
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-# Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:603: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CC="gcc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:633: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_prog_rejected=no
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
-        ac_prog_rejected=yes
-       continue
-      fi
-      ac_cv_prog_CC="cc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# -gt 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    set dummy "$ac_dir/$ac_word" "$@"
-    shift
-    ac_cv_prog_CC="$@"
-  fi
-fi
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  if test -z "$CC"; then
-    case "`uname -s`" in
-    *win32* | *WIN32*)
-      # Extract the first word of "cl", so it can be a program name with args.
-set dummy cl; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:684: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CC="cl"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
- ;;
-    esac
-  fi
-  test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:716: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-cat > conftest.$ac_ext << EOF
-
-#line 727 "configure"
-#include "confdefs.h"
-
-main(){return(0);}
-EOF
-if { (eval echo configure:732: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  ac_cv_prog_cc_works=yes
-  # If we can't run a trivial program, we are probably using a cross compiler.
-  if (./conftest; exit) 2>/dev/null; then
-    ac_cv_prog_cc_cross=no
-  else
-    ac_cv_prog_cc_cross=yes
-  fi
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  ac_cv_prog_cc_works=no
-fi
-rm -fr conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
-if test $ac_cv_prog_cc_works = no; then
-  { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
-fi
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:758: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:763: checking whether we are using GNU C" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.c <<EOF
-#ifdef __GNUC__
-  yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:772: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-  ac_cv_prog_gcc=yes
-else
-  ac_cv_prog_gcc=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-
-if test $ac_cv_prog_gcc = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-
-ac_test_CFLAGS="${CFLAGS+set}"
-ac_save_CFLAGS="$CFLAGS"
-CFLAGS=
-echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:791: checking whether ${CC-cc} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
-  ac_cv_prog_cc_g=yes
-else
-  ac_cv_prog_cc_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS="$ac_save_CFLAGS"
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-
-for ac_prog in mawk gawk nawk awk
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:827: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$AWK"; then
-  ac_cv_prog_AWK="$AWK" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_AWK="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-AWK="$ac_cv_prog_AWK"
-if test -n "$AWK"; then
-  echo "$ac_t""$AWK" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$AWK" && break
-done
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
-  if test -f $ac_dir/install-sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f $ac_dir/install.sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:887: checking for a BSD compatible install" >&5
-if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-    IFS="${IFS=        }"; ac_save_IFS="$IFS"; IFS=":"
-  for ac_dir in $PATH; do
-    # Account for people who put trailing slashes in PATH elements.
-    case "$ac_dir/" in
-    /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
-    *)
-      # OSF1 and SCO ODT 3.0 have their own names for install.
-      # Don't use installbsd from OSF since it installs stuff as root
-      # by default.
-      for ac_prog in ginstall scoinst install; do
-        if test -f $ac_dir/$ac_prog; then
-         if test $ac_prog = install &&
-            grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
-           # AIX install.  It has an incompatible calling convention.
-           :
-         else
-           ac_cv_path_install="$ac_dir/$ac_prog -c"
-           break 2
-         fi
-       fi
-      done
-      ;;
-    esac
-  done
-  IFS="$ac_save_IFS"
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL="$ac_cv_path_install"
-  else
-    # As a last resort, use the slow shell script.  We don't cache a
-    # path for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the path is relative.
-    INSTALL="$ac_install_sh"
-  fi
-fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-# Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:942: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_RANLIB="ranlib"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
-fi
-fi
-RANLIB="$ac_cv_prog_RANLIB"
-if test -n "$RANLIB"; then
-  echo "$ac_t""$RANLIB" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-for ac_prog in 'bison -y' byacc
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:974: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$YACC"; then
-  ac_cv_prog_YACC="$YACC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_YACC="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-YACC="$ac_cv_prog_YACC"
-if test -n "$YACC"; then
-  echo "$ac_t""$YACC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$YACC" && break
-done
-test -n "$YACC" || YACC="yacc"
-
-for ac_prog in ar
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1009: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="$PATH"
-  for ac_dir in $ac_dummy; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_AR="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-AR="$ac_cv_prog_AR"
-if test -n "$AR"; then
-  echo "$ac_t""$AR" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$AR" && break
-done
-
-
-
-echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:1041: checking for crypt in -lcrypt" >&5
-ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lcrypt  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1049 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char crypt();
-
-int main() {
-crypt()
-; return 0; }
-EOF
-if { (eval echo configure:1060: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo crypt | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lcrypt $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-echo $ac_n "checking for fparseln in -lutil""... $ac_c" 1>&6
-echo "configure:1088: checking for fparseln in -lutil" >&5
-ac_lib_var=`echo util'_'fparseln | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lutil  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1096 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char fparseln();
-
-int main() {
-fparseln()
-; return 0; }
-EOF
-if { (eval echo configure:1107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo util | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lutil $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-if test $ac_cv_lib_util_fparseln != yes; then
-       echo $ac_n "checking for setproctitle in -lutil""... $ac_c" 1>&6
-echo "configure:1136: checking for setproctitle in -lutil" >&5
-ac_lib_var=`echo util'_'setproctitle | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lutil  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1144 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char setproctitle();
-
-int main() {
-setproctitle()
-; return 0; }
-EOF
-if { (eval echo configure:1155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo util | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lutil $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-   # Most operating systems have gethostbyname() in the default searched
-   # libraries (i.e. libc):
-   echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
-echo "configure:1187: checking for gethostbyname" >&5
-if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1192 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char gethostbyname(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char gethostbyname();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname)
-choke me
-#else
-gethostbyname();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:1215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_gethostbyname=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_gethostbyname=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  :
-else
-  echo "$ac_t""no" 1>&6
-# Some OSes (eg. Solaris) place it in libnsl:
-     echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:1234: checking for gethostbyname in -lnsl" >&5
-ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lnsl  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1242 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char gethostbyname();
-
-int main() {
-gethostbyname()
-; return 0; }
-EOF
-if { (eval echo configure:1253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo nsl | sed -e 's/^a-zA-Z0-9_/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lnsl $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-# Some strange OSes (SINIX) have it in libsocket:
-       echo $ac_n "checking for gethostbyname in -lsocket""... $ac_c" 1>&6
-echo "configure:1280: checking for gethostbyname in -lsocket" >&5
-ac_lib_var=`echo socket'_'gethostbyname | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lsocket  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1288 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char gethostbyname();
-
-int main() {
-gethostbyname()
-; return 0; }
-EOF
-if { (eval echo configure:1299: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/^a-zA-Z0-9_/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lsocket $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-# Unfortunately libsocket sometimes depends on libnsl.
-          # AC_CHECK_LIB's API is essentially broken so the following
-          # ugliness is necessary:
-          echo $ac_n "checking for gethostbyname in -lsocket""... $ac_c" 1>&6
-echo "configure:1328: checking for gethostbyname in -lsocket" >&5
-ac_lib_var=`echo socket'_'gethostbyname | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lsocket -lnsl $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1336 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char gethostbyname();
-
-int main() {
-gethostbyname()
-; return 0; }
-EOF
-if { (eval echo configure:1347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  LIBS="-lsocket -lnsl $LIBS"
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for gethostbyname in -lresolv""... $ac_c" 1>&6
-echo "configure:1366: checking for gethostbyname in -lresolv" >&5
-ac_lib_var=`echo resolv'_'gethostbyname | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lresolv  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1374 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char gethostbyname();
-
-int main() {
-gethostbyname()
-; return 0; }
-EOF
-if { (eval echo configure:1385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo resolv | sed -e 's/^a-zA-Z0-9_/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lresolv $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-       
-fi
-
-     
-fi
-
-   
-fi
-
-  echo $ac_n "checking for socket""... $ac_c" 1>&6
-echo "configure:1424: checking for socket" >&5
-if eval "test \"`echo '$''{'ac_cv_func_socket'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1429 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char socket(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char socket();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_socket) || defined (__stub___socket)
-choke me
-#else
-socket();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:1452: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_socket=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_socket=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'socket`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  :
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
-echo "configure:1470: checking for socket in -lsocket" >&5
-ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lsocket  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1478 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char socket();
-
-int main() {
-socket()
-; return 0; }
-EOF
-if { (eval echo configure:1489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/^a-zA-Z0-9_/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lsocket $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
-echo "configure:1515: checking for socket in -lsocket" >&5
-ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lsocket -lnsl $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1523 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char socket();
-
-int main() {
-socket()
-; return 0; }
-EOF
-if { (eval echo configure:1534: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  LIBS="-lsocket -lnsl $LIBS"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-fi
-
-  
-
-    echo $ac_n "checking whether to support SOCKS""... $ac_c" 1>&6
-echo "configure:1561: checking whether to support SOCKS" >&5
-    # Check whether --with-socks or --without-socks was given.
-if test "${with_socks+set}" = set; then
-  withval="$with_socks"
-  
-       case "$withval" in
-       no)
-           echo "$ac_t""no" 1>&6
-           ;;
-       yes)
-           echo "$ac_t""yes" 1>&6
-           echo $ac_n "checking for SOCKSconnect in -lsocks5""... $ac_c" 1>&6
-echo "configure:1573: checking for SOCKSconnect in -lsocks5" >&5
-ac_lib_var=`echo socks5'_'SOCKSconnect | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lsocks5  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1581 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char SOCKSconnect();
-
-int main() {
-SOCKSconnect()
-; return 0; }
-EOF
-if { (eval echo configure:1592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  
-               socks=5
-               LIBS="-lsocks5 $LIBS"
-else
-  echo "$ac_t""no" 1>&6
-
-             echo $ac_n "checking for Rconnect in -lsocks""... $ac_c" 1>&6
-echo "configure:1614: checking for Rconnect in -lsocks" >&5
-ac_lib_var=`echo socks'_'Rconnect | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lsocks  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1622 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char Rconnect();
-
-int main() {
-Rconnect()
-; return 0; }
-EOF
-if { (eval echo configure:1633: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  
-               socks=4
-               LIBS="-lsocks $LIBS"
-else
-  echo "$ac_t""no" 1>&6
-
-                   { echo "configure: error: Could not find socks library.  You must first install socks." 1>&2; exit 1; }  
-fi
-  
-fi
-
-           ;;
-       esac
-    
-else
-  echo "$ac_t""no" 1>&6
-    
-fi
-
-
-    if test "x$socks" = "x"; then
-       echo $ac_n "checking whether to support SOCKS5""... $ac_c" 1>&6
-echo "configure:1670: checking whether to support SOCKS5" >&5
-       # Check whether --with-socks5 or --without-socks5 was given.
-if test "${with_socks5+set}" = set; then
-  withval="$with_socks5"
-  
-           case "$withval" in
-           no)
-               echo "$ac_t""no" 1>&6
-               ;;
-           *)
-               echo "$ac_t""yes" 1>&6
-               socks=5
-               if test "x$withval" = "xyes"; then
-                   withval="-lsocks5"
-               else
-                   if test -d "$withval"; then
-                       if test -d "$withval/include"; then
-                           CFLAGS="$CFLAGS -I$withval/include"
-                       else
-                           CFLAGS="$CFLAGS -I$withval"
-                       fi
-                       if test -d "$withval/lib"; then
-                           withval="-L$withval/lib -lsocks5"
-                       else
-                           withval="-L$withval -lsocks5"
-                       fi
-                   fi
-               fi
-               LIBS="$withval $LIBS"
-               # If Socks was compiled with Kerberos support, we will need
-               # to link against kerberos libraries.  Temporarily append
-               # to LIBS.  This is harmless if there is no kerberos support.
-               TMPLIBS="$LIBS"
-               LIBS="$LIBS $KERBEROS_LIBS"
-               cat > conftest.$ac_ext <<EOF
-#line 1705 "configure"
-#include "confdefs.h"
-
-int main() {
- SOCKSconnect(); 
-; return 0; }
-EOF
-if { (eval echo configure:1712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  :
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   { echo "configure: error: Could not find the $withval library.  You must first install socks5." 1>&2; exit 1; } 
-fi
-rm -f conftest*
-               LIBS="$TMPLIBS"
-               ;;
-           esac
-       
-else
-  echo "$ac_t""no" 1>&6
-       
-fi
-
-    fi
-
-    if test "x$socks" = "x"; then
-       echo $ac_n "checking whether to support SOCKS4""... $ac_c" 1>&6
-echo "configure:1734: checking whether to support SOCKS4" >&5
-       # Check whether --with-socks4 or --without-socks4 was given.
-if test "${with_socks4+set}" = set; then
-  withval="$with_socks4"
-  
-           case "$withval" in
-           no)
-               echo "$ac_t""no" 1>&6
-               ;;
-           *)
-               echo "$ac_t""yes" 1>&6
-               socks=4
-               if test "x$withval" = "xyes"; then
-                   withval="-lsocks"
-               else
-                   if test -d "$withval"; then
-                       withval="-L$withval -lsocks"
-                   fi
-               fi
-               LIBS="$withval $LIBS"
-               cat > conftest.$ac_ext <<EOF
-#line 1755 "configure"
-#include "confdefs.h"
-
-int main() {
- Rconnect(); 
-; return 0; }
-EOF
-if { (eval echo configure:1762: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  :
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   { echo "configure: error: Could not find the $withval library.  You must first install socks." 1>&2; exit 1; } 
-fi
-rm -f conftest*
-               ;;
-           esac
-       
-else
-  echo "$ac_t""no" 1>&6
-       
-fi
-
-    fi
-
-    if test "x$socks" = "x4"; then
-       cat >> confdefs.h <<\EOF
-#define SOCKS 1
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define SOCKS4 1
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define connect Rconnect
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define getsockname Rgetsockname
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define bind Rbind
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define accept Raccept
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define listen Rlisten
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define select Rselect
-EOF
-
-    fi
-
-    if test "x$socks" = "x5"; then
-       cat >> confdefs.h <<\EOF
-#define SOCKS 1
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define SOCKS5 1
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define connect SOCKSconnect
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define getsockname SOCKSgetsockname
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define getpeername SOCKSgetpeername
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define bind SOCKSbind
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define accept SOCKSaccept
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define listen SOCKSlisten
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define select SOCKSselect
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define recvfrom SOCKSrecvfrom
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define sendto SOCKSsendto
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define recv SOCKSrecv
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define send SOCKSsend
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define read SOCKSread
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define write SOCKSwrite
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define rresvport SOCKSrresvport
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define shutdown SOCKSshutdown
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define listen SOCKSlisten
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define close SOCKSclose
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define dup SOCKSdup
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define dup2 SOCKSdup2
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define fclose SOCKSfclose
-EOF
-
-       cat >> confdefs.h <<\EOF
-#define gethostbyname SOCKSgethostbyname
-EOF
-
-    fi
-
-if test -n "$socks"; then
-       if test $opt_ipv6 = yes; then
-               echo "IPv6 is incompatible with socks, disabling IPv6 support"
-               opt_ipv6=no
-       fi
-fi
-# Check whether --with-skey or --without-skey was given.
-if test "${with_skey+set}" = set; then
-  withval="$with_skey"
-       if test $withval = yes; then
-               echo $ac_n "checking for skey_haskey in -lskey""... $ac_c" 1>&6
-echo "configure:1922: checking for skey_haskey in -lskey" >&5
-ac_lib_var=`echo skey'_'skey_haskey | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lskey  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1930 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char skey_haskey();
-
-int main() {
-skey_haskey()
-; return 0; }
-EOF
-if { (eval echo configure:1941: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo skey | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lskey $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-       fi  
-fi
-
-echo $ac_n "checking whether to support S/Key""... $ac_c" 1>&6
-echo "configure:1972: checking whether to support S/Key" >&5
-if test x"$ac_cv_lib_skey_skey_haskey" = "xyes"; then
-       echo "$ac_t""yes" 1>&6
-       cat >> confdefs.h <<\EOF
-#define SKEY 1
-EOF
-
-else
-       echo "$ac_t""no" 1>&6
-fi
-
-
-
-ac_header_dirent=no
-for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:1990: checking for $ac_hdr that defines DIR" >&5
-if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1995 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <$ac_hdr>
-int main() {
-DIR *dirp = 0;
-; return 0; }
-EOF
-if { (eval echo configure:2003: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  eval "ac_cv_header_dirent_$ac_safe=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_dirent_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_dirent_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
- ac_header_dirent=$ac_hdr; break
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
-if test $ac_header_dirent = dirent.h; then
-echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:2028: checking for opendir in -ldir" >&5
-ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-ldir  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2036 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char opendir();
-
-int main() {
-opendir()
-; return 0; }
-EOF
-if { (eval echo configure:2047: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  LIBS="$LIBS -ldir"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-else
-echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:2069: checking for opendir in -lx" >&5
-ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lx  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2077 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char opendir();
-
-int main() {
-opendir()
-; return 0; }
-EOF
-if { (eval echo configure:2088: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  LIBS="$LIBS -lx"
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:2111: checking how to run the C preprocessor" >&5
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-    # This must be in double quotes, not single quotes, because CPP may get
-  # substituted into the Makefile and "${CC-cc}" will confuse make.
-  CPP="${CC-cc} -E"
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp.
-  cat > conftest.$ac_ext <<EOF
-#line 2126 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2132: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP="${CC-cc} -E -traditional-cpp"
-  cat > conftest.$ac_ext <<EOF
-#line 2143 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2149: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP="${CC-cc} -nologo -E"
-  cat > conftest.$ac_ext <<EOF
-#line 2160 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2166: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CPP=/lib/cpp
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-  ac_cv_prog_CPP="$CPP"
-fi
-  CPP="$ac_cv_prog_CPP"
-else
-  ac_cv_prog_CPP="$CPP"
-fi
-echo "$ac_t""$CPP" 1>&6
-
-echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:2191: checking for ANSI C header files" >&5
-if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2196 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  ac_cv_header_stdc=yes
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 2221 "configure"
-#include "confdefs.h"
-#include <string.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "memchr" >/dev/null 2>&1; then
-  :
-else
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 2239 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "free" >/dev/null 2>&1; then
-  :
-else
-  rm -rf conftest*
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-if test "$cross_compiling" = yes; then
-  :
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2260 "configure"
-#include "confdefs.h"
-#include <ctype.h>
-#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int main () { int i; for (i = 0; i < 256; i++)
-if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
-exit (0); }
-
-EOF
-if { (eval echo configure:2271: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  :
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  ac_cv_header_stdc=no
-fi
-rm -fr conftest*
-fi
-
-fi
-fi
-
-echo "$ac_t""$ac_cv_header_stdc" 1>&6
-if test $ac_cv_header_stdc = yes; then
-  cat >> confdefs.h <<\EOF
-#define STDC_HEADERS 1
-EOF
-
-fi
-
-for ac_hdr in arpa/nameser.h err.h fts.h libutil.h paths.h \
-               sys/sysmacros.h util.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2299: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2304 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2309: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-
-
-echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:2338: checking whether time.h and sys/time.h may both be included" >&5
-if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2343 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-int main() {
-struct tm *tp;
-; return 0; }
-EOF
-if { (eval echo configure:2352: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_header_time=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_header_time=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_header_time" 1>&6
-if test $ac_cv_header_time = yes; then
-  cat >> confdefs.h <<\EOF
-#define TIME_WITH_SYS_TIME 1
-EOF
-
-fi
-
-echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:2373: checking for off_t" >&5
-if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2378 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "(^|[^a-zA-Z_0-9])off_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
-  rm -rf conftest*
-  ac_cv_type_off_t=yes
-else
-  rm -rf conftest*
-  ac_cv_type_off_t=no
-fi
-rm -f conftest*
-
-fi
-echo "$ac_t""$ac_cv_type_off_t" 1>&6
-if test $ac_cv_type_off_t = no; then
-  cat >> confdefs.h <<\EOF
-#define off_t long
-EOF
-
-fi
-
-echo $ac_n "checking size of off_t""... $ac_c" 1>&6
-echo "configure:2406: checking size of off_t" >&5
-if eval "test \"`echo '$''{'ac_cv_sizeof_off_t'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-  ac_cv_sizeof_off_t=0
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2414 "configure"
-#include "confdefs.h"
-#include <stdio.h>
-main()
-{
-  FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
-  fprintf(f, "%d\n", sizeof(off_t));
-  exit(0);
-}
-EOF
-if { (eval echo configure:2425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  ac_cv_sizeof_off_t=`cat conftestval`
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  ac_cv_sizeof_off_t=0
-fi
-rm -fr conftest*
-fi
-
-fi
-echo "$ac_t""$ac_cv_sizeof_off_t" 1>&6
-cat >> confdefs.h <<EOF
-#define SIZEOF_OFF_T $ac_cv_sizeof_off_t
-EOF
-
-
-
-       echo $ac_n "checking for long long""... $ac_c" 1>&6
-echo "configure:2446: checking for long long" >&5
-if eval "test \"`echo '$''{'ftp_cv_HAVE_LONG_LONG'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 2452 "configure"
-#include "confdefs.h"
-#include <sys/types.h>  
-int main() {
-long long X = 2, Y = 1, Z;
-Z = X / Y; ; 
-; return 0; }
-EOF
-if { (eval echo configure:2462: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-   ftp_cv_HAVE_LONG_LONG=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_HAVE_LONG_LONG=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_HAVE_LONG_LONG" 1>&6
-       if test "x$ftp_cv_HAVE_LONG_LONG" = "xyes"; then
-               
-cat >> confdefs.h <<\EOF
-#define HAVE_LONG_LONG 1
-EOF
-
-have_long_long=yes
-       else
-               have_long_long=no
-               :
-       fi
-
-
-
-       echo $ac_n "checking for in_port_t""... $ac_c" 1>&6
-echo "configure:2491: checking for in_port_t" >&5
-if eval "test \"`echo '$''{'ftp_cv_HAVE_IN_PORT_T'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 2497 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <netinet/in.h>  
-int main() {
-  in_port_t X ; 
-; return 0; }
-EOF
-if { (eval echo configure:2506: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-   ftp_cv_HAVE_IN_PORT_T=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_HAVE_IN_PORT_T=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_HAVE_IN_PORT_T" 1>&6
-       if test "x$ftp_cv_HAVE_IN_PORT_T" = "xyes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_IN_PORT_T 1
-EOF
-
-       else
-               
-               :
-       fi
-
-
-
-       echo $ac_n "checking for sockaddr_in.sin_len""... $ac_c" 1>&6
-echo "configure:2533: checking for sockaddr_in.sin_len" >&5
-if eval "test \"`echo '$''{'ftp_cv_HAVE_SOCKADDR_SA_LEN'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 2539 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>  
-int main() {
-       struct sockaddr_in sin;
-       int X = sin.sin_len ; 
-; return 0; }
-EOF
-if { (eval echo configure:2551: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-   ftp_cv_HAVE_SOCKADDR_SA_LEN=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_HAVE_SOCKADDR_SA_LEN=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_HAVE_SOCKADDR_SA_LEN" 1>&6
-       if test "x$ftp_cv_HAVE_SOCKADDR_SA_LEN" = "xyes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_SOCKADDR_SA_LEN 1
-EOF
-
-       else
-               
-               :
-       fi
-
-
-
-       echo $ac_n "checking for socklen_t""... $ac_c" 1>&6
-echo "configure:2578: checking for socklen_t" >&5
-if eval "test \"`echo '$''{'ftp_cv_HAVE_SOCKLEN_T'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 2584 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/socket.h>  
-int main() {
-  socklen_t X ; 
-; return 0; }
-EOF
-if { (eval echo configure:2593: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-   ftp_cv_HAVE_SOCKLEN_T=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_HAVE_SOCKLEN_T=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_HAVE_SOCKLEN_T" 1>&6
-       if test "x$ftp_cv_HAVE_SOCKLEN_T" = "xyes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_SOCKLEN_T 1
-EOF
-
-       else
-               
-               :
-       fi
-
-
-if test $opt_ipv6 = yes; then
-
-       
-       echo $ac_n "checking for AF_INET6""... $ac_c" 1>&6
-echo "configure:2622: checking for AF_INET6" >&5
-if eval "test \"`echo '$''{'ftp_cv_HAVE_AF_INET6'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 2628 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/socket.h>  
-int main() {
-  int X = AF_INET6 ; 
-; return 0; }
-EOF
-if { (eval echo configure:2637: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-   ftp_cv_HAVE_AF_INET6=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_HAVE_AF_INET6=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_HAVE_AF_INET6" 1>&6
-       if test "x$ftp_cv_HAVE_AF_INET6" = "xyes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_AF_INET6 1
-EOF
-
-       else
-               
-               :
-       fi
-
-
-       
-       echo $ac_n "checking for struct sockaddr_in6""... $ac_c" 1>&6
-echo "configure:2664: checking for struct sockaddr_in6" >&5
-if eval "test \"`echo '$''{'ftp_cv_HAVE_SOCKADDR_IN6'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 2670 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <netinet/in.h>  
-int main() {
-  struct sockaddr_in6 X ; 
-; return 0; }
-EOF
-if { (eval echo configure:2679: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-   ftp_cv_HAVE_SOCKADDR_IN6=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_HAVE_SOCKADDR_IN6=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_HAVE_SOCKADDR_IN6" 1>&6
-       if test "x$ftp_cv_HAVE_SOCKADDR_IN6" = "xyes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_SOCKADDR_IN6 1
-EOF
-
-       else
-               
-               :
-       fi
-
-
-fi
-
-
-       echo $ac_n "checking for struct addrinfo""... $ac_c" 1>&6
-echo "configure:2708: checking for struct addrinfo" >&5
-if eval "test \"`echo '$''{'ftp_cv_HAVE_ADDRINFO'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 2714 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netdb.h>  
-int main() {
-  struct addrinfo X ; 
-; return 0; }
-EOF
-if { (eval echo configure:2724: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-   ftp_cv_HAVE_ADDRINFO=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_HAVE_ADDRINFO=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_HAVE_ADDRINFO" 1>&6
-       if test "x$ftp_cv_HAVE_ADDRINFO" = "xyes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_ADDRINFO 1
-EOF
-
-       else
-               
-               :
-       fi
-
-
-
-       echo $ac_n "checking for d_namlen in struct dirent""... $ac_c" 1>&6
-echo "configure:2751: checking for d_namlen in struct dirent" >&5
-if eval "test \"`echo '$''{'ftp_cv_HAVE_D_NAMLEN'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 2757 "configure"
-#include "confdefs.h"
-#if HAVE_DIRENT_H
-# include <dirent.h>
-#else
-# define dirent direct
-# if HAVE_SYS_NDIR_H
-#  include <sys/ndir.h>
-# endif
-# if HAVE_SYS_DIR_H
-#  include <sys/dir.h>
-# endif
-# if HAVE_NDIR_H
-#  include <ndir.h>
-# endif
-#endif  
-int main() {
-       struct dirent dp;
-       int X = dp.d_namlen; ; 
-; return 0; }
-EOF
-if { (eval echo configure:2780: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-   ftp_cv_HAVE_D_NAMLEN=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_HAVE_D_NAMLEN=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_HAVE_D_NAMLEN" 1>&6
-       if test "x$ftp_cv_HAVE_D_NAMLEN" = "xyes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_D_NAMLEN 1
-EOF
-
-       else
-               
-               :
-       fi
-
-
-
-       echo $ac_n "checking for struct passwd.pw_expire""... $ac_c" 1>&6
-echo "configure:2807: checking for struct passwd.pw_expire" >&5
-if eval "test \"`echo '$''{'ftp_cv_HAVE_PW_EXPIRE'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 2813 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-#include <pwd.h>  
-int main() {
-  struct passwd pw;
-             time_t X = pw.pw_expire ; 
-; return 0; }
-EOF
-if { (eval echo configure:2823: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-   ftp_cv_HAVE_PW_EXPIRE=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_HAVE_PW_EXPIRE=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_HAVE_PW_EXPIRE" 1>&6
-       if test "x$ftp_cv_HAVE_PW_EXPIRE" = "xyes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_PW_EXPIRE 1
-EOF
-
-       else
-               
-               :
-       fi
-
-
-echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:2849: checking for working const" >&5
-if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2854 "configure"
-#include "confdefs.h"
-
-int main() {
-
-/* Ultrix mips cc rejects this.  */
-typedef int charset[2]; const charset x;
-/* SunOS 4.1.1 cc rejects this.  */
-char const *const *ccp;
-char **p;
-/* NEC SVR4.0.2 mips cc rejects this.  */
-struct point {int x, y;};
-static struct point const zero = {0,0};
-/* AIX XL C 1.02.0.0 rejects this.
-   It does not let you subtract one const X* pointer from another in an arm
-   of an if-expression whose if-part is not a constant expression */
-const char *g = "string";
-ccp = &g + (g ? g-g : 0);
-/* HPUX 7.0 cc rejects these. */
-++ccp;
-p = (char**) ccp;
-ccp = (char const *const *) p;
-{ /* SCO 3.2v4 cc rejects this.  */
-  char *t;
-  char const *s = 0 ? (char *) 0 : (char const *) 0;
-
-  *t++ = 0;
-}
-{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
-  int x[] = {25, 17};
-  const int *foo = &x[0];
-  ++foo;
-}
-{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
-  typedef const int *iptr;
-  iptr p = 0;
-  ++p;
-}
-{ /* AIX XL C 1.02.0.0 rejects this saying
-     "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-  struct s { int j; const int *ap[3]; };
-  struct s *b; b->j = 5;
-}
-{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
-  const int foo = 10;
-}
-
-; return 0; }
-EOF
-if { (eval echo configure:2903: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-  ac_cv_c_const=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  ac_cv_c_const=no
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$ac_cv_c_const" 1>&6
-if test $ac_cv_c_const = no; then
-  cat >> confdefs.h <<\EOF
-#define const 
-EOF
-
-fi
-
-
-
-for ac_func in err fgetln getaddrinfo getgrouplist getnameinfo \
-               getusershell inet_net_pton inet_ntop inet_pton mkstemp \
-               sl_init snprintf strdup strerror strlcat strlcpy strsep \
-               usleep vsyslog
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2931: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2936 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}"
-fi
-done
-
-
-for ac_func in flock lockf getspnam setlogin setproctitle vfork
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2988: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2993 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3016: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-if test $ac_cv_lib_util_fparseln != yes; then
-       for ac_func in fparseln
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3044: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3049 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}"
-fi
-done
-
-
-fi
-
-LIBOBJS="$LIBOBJS glob.o"
-
-
-       echo $ac_n "checking for crypt() declaration""... $ac_c" 1>&6
-echo "configure:3104: checking for crypt() declaration" >&5
-if eval "test \"`echo '$''{'ftp_cv_HAVE_CRYPT_D'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 3110 "configure"
-#include "confdefs.h"
-#include <unistd.h>  
-int main() {
-  char *(*X)() = crypt ; 
-; return 0; }
-EOF
-if { (eval echo configure:3118: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-   ftp_cv_HAVE_CRYPT_D=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_HAVE_CRYPT_D=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_HAVE_CRYPT_D" 1>&6
-       if test "x$ftp_cv_HAVE_CRYPT_D" = "xyes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_CRYPT_D 1
-EOF
-
-       else
-               
-               :
-       fi
-
-
-
-       echo $ac_n "checking for fclose() declaration""... $ac_c" 1>&6
-echo "configure:3145: checking for fclose() declaration" >&5
-if eval "test \"`echo '$''{'ftp_cv_HAVE_FCLOSE_D'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 3151 "configure"
-#include "confdefs.h"
-#include <stdio.h>  
-int main() {
-  int (*X)() = fclose ; 
-; return 0; }
-EOF
-if { (eval echo configure:3159: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-   ftp_cv_HAVE_FCLOSE_D=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_HAVE_FCLOSE_D=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_HAVE_FCLOSE_D" 1>&6
-       if test "x$ftp_cv_HAVE_FCLOSE_D" = "xyes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_FCLOSE_D 1
-EOF
-
-       else
-               
-               :
-       fi
-
-
-
-       echo $ac_n "checking for optarg declaration""... $ac_c" 1>&6
-echo "configure:3186: checking for optarg declaration" >&5
-if eval "test \"`echo '$''{'ftp_cv_HAVE_OPTARG_D'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 3192 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <unistd.h>  
-int main() {
-  char *X = optarg ; 
-; return 0; }
-EOF
-if { (eval echo configure:3201: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-   ftp_cv_HAVE_OPTARG_D=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_HAVE_OPTARG_D=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_HAVE_OPTARG_D" 1>&6
-       if test "x$ftp_cv_HAVE_OPTARG_D" = "xyes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_OPTARG_D 1
-EOF
-
-       else
-               
-               :
-       fi
-
-
-
-       echo $ac_n "checking for optind declaration""... $ac_c" 1>&6
-echo "configure:3228: checking for optind declaration" >&5
-if eval "test \"`echo '$''{'ftp_cv_HAVE_OPTIND_D'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 3234 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <unistd.h>  
-int main() {
-  int X = optind ; 
-; return 0; }
-EOF
-if { (eval echo configure:3243: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-   ftp_cv_HAVE_OPTIND_D=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_HAVE_OPTIND_D=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_HAVE_OPTIND_D" 1>&6
-       if test "x$ftp_cv_HAVE_OPTIND_D" = "xyes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_OPTIND_D 1
-EOF
-
-       else
-               
-               :
-       fi
-
-
-
-       echo $ac_n "checking for optreset""... $ac_c" 1>&6
-echo "configure:3270: checking for optreset" >&5
-if eval "test \"`echo '$''{'ftp_cv_HAVE_OPTRESET'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 3276 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <unistd.h>  
-int main() {
-  int X = optreset ; 
-; return 0; }
-EOF
-if { (eval echo configure:3285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-   ftp_cv_HAVE_OPTRESET=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_HAVE_OPTRESET=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_HAVE_OPTRESET" 1>&6
-       if test "x$ftp_cv_HAVE_OPTRESET" = "xyes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_OPTRESET 1
-EOF
-
-       else
-               
-               :
-       fi
-
-
-
-       echo $ac_n "checking for pclose() declaration""... $ac_c" 1>&6
-echo "configure:3312: checking for pclose() declaration" >&5
-if eval "test \"`echo '$''{'ftp_cv_HAVE_PCLOSE_D'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 3318 "configure"
-#include "confdefs.h"
-#include <stdio.h>  
-int main() {
-  int (*X)() = pclose ; 
-; return 0; }
-EOF
-if { (eval echo configure:3326: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-   ftp_cv_HAVE_PCLOSE_D=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_HAVE_PCLOSE_D=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_HAVE_PCLOSE_D" 1>&6
-       if test "x$ftp_cv_HAVE_PCLOSE_D" = "xyes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_PCLOSE_D 1
-EOF
-
-       else
-               
-               :
-       fi
-
-
-if test $ac_cv_func_getusershell = yes; then
-       
-       echo $ac_n "checking for getusershell() declaration""... $ac_c" 1>&6
-echo "configure:3354: checking for getusershell() declaration" >&5
-if eval "test \"`echo '$''{'ftp_cv_HAVE_GETUSERSHELL_D'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 3360 "configure"
-#include "confdefs.h"
-       #include <unistd.h>  
-int main() {
-  char *(*X)() = getusershell ; 
-; return 0; }
-EOF
-if { (eval echo configure:3368: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-   ftp_cv_HAVE_GETUSERSHELL_D=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_HAVE_GETUSERSHELL_D=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_HAVE_GETUSERSHELL_D" 1>&6
-       if test "x$ftp_cv_HAVE_GETUSERSHELL_D" = "xyes"; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_GETUSERSHELL_D 1
-EOF
-
-       else
-               
-               :
-       fi
-
-fi
-
-
-if test $have_long_long = yes -a $ac_cv_sizeof_off_t -ge 8; then
-
-
-       echo $ac_n "checking *printf() support for %lld""... $ac_c" 1>&6
-echo "configure:3399: checking *printf() support for %lld" >&5
-       can_printf_longlong=no
-       if test "$cross_compiling" = yes; then
-   : 
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3405 "configure"
-#include "confdefs.h"
-
-               #include <stdio.h>
-               int main() {
-                       char buf[100];
-                       sprintf(buf, "%lld", 4294967300LL);
-                       return (strcmp(buf, "4294967300"));
-               }
-       
-EOF
-if { (eval echo configure:3416: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  
-               echo "$ac_t""yes" 1>&6
-               can_printf_longlong=yes
-       
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  
-               echo "$ac_t""no" 1>&6
-       
-fi
-rm -fr conftest*
-fi
-
-
-       if test $can_printf_longlong != yes; then
-               echo $ac_n "checking *printf() support for %qd""... $ac_c" 1>&6
-echo "configure:3436: checking *printf() support for %qd" >&5
-               if test "$cross_compiling" = yes; then
-   : 
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3441 "configure"
-#include "confdefs.h"
-
-                       #include <stdio.h>
-                       int main() {
-                               char buf[100];
-                               sprintf(buf, "%qd", 4294967300LL);
-                               return (strcmp(buf, "4294967300"));
-                       }
-               
-EOF
-if { (eval echo configure:3452: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-  
-                       echo "$ac_t""yes" 1>&6
-                       can_printf_longlong=yes
-                       cat >> confdefs.h <<\EOF
-#define HAVE_PRINTF_QD 1
-EOF
-
-               
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  
-                       echo "$ac_t""no" 1>&6
-               
-fi
-rm -fr conftest*
-fi
-
-       fi
-
-       if test $can_printf_longlong = yes; then
-               cat >> confdefs.h <<\EOF
-#define HAVE_QUAD_SUPPORT 1
-EOF
-
-               for ac_func in strtoll
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3483: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3488 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3511: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}"
-fi
-done
-
-
-       fi
-
-fi
-
-
-have_rfc2553_netdb=no
-if test $ac_cv_func_getaddrinfo = yes -a ! -n "$socks"; then
-       
-       echo $ac_n "checking for AI_NUMERICHOST""... $ac_c" 1>&6
-echo "configure:3546: checking for AI_NUMERICHOST" >&5
-if eval "test \"`echo '$''{'ftp_cv_have_ai_numerichost'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 3552 "configure"
-#include "confdefs.h"
-       #include <sys/types.h>
-       #include <sys/socket.h>
-       #include <netdb.h>  
-int main() {
-  int X = AI_NUMERICHOST ; 
-; return 0; }
-EOF
-if { (eval echo configure:3562: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-   ftp_cv_have_ai_numerichost=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_have_ai_numerichost=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_have_ai_numerichost" 1>&6
-       if test "x$ftp_cv_have_ai_numerichost" = "xyes"; then
-                have_rfc2553_netdb=yes 
-       else
-               
-               :
-       fi
-
-fi
-echo $ac_n "checking for working getaddrinfo()""... $ac_c" 1>&6
-echo "configure:3585: checking for working getaddrinfo()" >&5
-if test $have_rfc2553_netdb = yes; then
-       cat >> confdefs.h <<\EOF
-#define HAVE_RFC2553_NETDB 1
-EOF
-
-       echo "$ac_t""yes" 1>&6
-else
-       if test $ac_cv_func_getaddrinfo = yes; then
-               LIBOBJS="$LIBOBJS getaddrinfo.o"
-               echo "$ac_t""no - using local version" 1>&6
-       else
-               echo "$ac_t""using local version" 1>&6
-       fi
-fi
-
-if test $ac_cv_func_sl_init = yes; then
-       
-       echo $ac_n "checking if sl_add() returns int""... $ac_c" 1>&6
-echo "configure:3604: checking if sl_add() returns int" >&5
-if eval "test \"`echo '$''{'ftp_cv_INT_SL_ADD'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  
-               cat > conftest.$ac_ext <<EOF
-#line 3610 "configure"
-#include "confdefs.h"
-       #include <stringlist.h>  
-int main() {
-  int f = sl_add((StringList *)0, "foo") ; 
-; return 0; }
-EOF
-if { (eval echo configure:3618: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
-  rm -rf conftest*
-   ftp_cv_INT_SL_ADD=yes 
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-   ftp_cv_INT_SL_ADD=no 
-fi
-rm -f conftest*
-       
-fi
-
-echo "$ac_t""$ftp_cv_INT_SL_ADD" 1>&6
-       if test "x$ftp_cv_INT_SL_ADD" = "xyes"; then
-               : 
-       else
-               LIBOBJS="$LIBOBJS sl_init.o"
-               :
-       fi
-
-fi
-
-
-
-if test $opt_builtinls = yes; then
-       for ac_func in fts_open strmode user_from_uid
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3647: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 3652 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}"
-fi
-done
-
-
-       LSOBJS="cmp.o ls.o print.o util.o"
-else
-       cat >> confdefs.h <<\EOF
-#define NO_INTERNAL_LS 1
-EOF
-
-fi
-
-
-
-if test -n "$LIBOBJS"; then
-       INCLUDES="$INCLUDES -I\${srcdir}/../libukem"
-       LDFLAGS="$LDFLAGS -L../libukem"
-       LIBS="$LIBS -lukem"
-       LIBUKEM=libukem.a
-       LIBDEPENDS="$LIBDEPENDS ../libukem/libukem.a"
-fi
-
-
-
-
-
-
-
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs.  It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already.  You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
-  case `(ac_space=' '; set | grep ac_space) 2>&1` in
-  *ac_space=\ *)
-    # `set' does not quote correctly, so add quotes (double-quote substitution
-    # turns \\\\ into \\, and sed turns \\ into \).
-    sed -n \
-      -e "s/'/'\\\\''/g" \
-      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
-    ;;
-  *)
-    # `set' quotes correctly as required by POSIX, so do not add quotes.
-    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
-    ;;
-  esac >> confcache
-if cmp -s $cache_file confcache; then
-  :
-else
-  if test -w $cache_file; then
-    echo "updating cache $cache_file"
-    cat confcache > $cache_file
-  else
-    echo "not updating unwritable cache $cache_file"
-  fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[        ]*VPATH[        ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-DEFS=-DHAVE_CONFIG_H
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
-  case "\$ac_option" in
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
-    exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-    echo "$CONFIG_STATUS generated by autoconf version 2.13"
-    exit 0 ;;
-  -help | --help | --hel | --he | --h)
-    echo "\$ac_cs_usage"; exit 0 ;;
-  *) echo "\$ac_cs_usage"; exit 1 ;;
-  esac
-done
-
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
-
-trap 'rm -fr `echo "Makefile libukem/Makefile src/Makefile config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@SHELL@%$SHELL%g
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@FFLAGS@%$FFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@SET_MAKE@%$SET_MAKE%g
-s%@CC@%$CC%g
-s%@AWK@%$AWK%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@RANLIB@%$RANLIB%g
-s%@YACC@%$YACC%g
-s%@AR@%$AR%g
-s%@CPP@%$CPP%g
-s%@LIBOBJS@%$LIBOBJS%g
-s%@INCLUDES@%$INCLUDES%g
-s%@LIBUKEM@%$LIBUKEM%g
-s%@LIBDEPENDS@%$LIBDEPENDS%g
-s%@LSOBJS@%$LSOBJS%g
-
-CEOF
-EOF
-
-cat >> $CONFIG_STATUS <<\EOF
-
-# Split the substitutions into bite-sized pieces for seds with
-# small command number limits, like on Digital OSF/1 and HP-UX.
-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
-ac_file=1 # Number of current file.
-ac_beg=1 # First line for current file.
-ac_end=$ac_max_sed_cmds # Line after last line for current file.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
-  if test $ac_beg -gt 1; then
-    sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
-  else
-    sed "${ac_end}q" conftest.subs > conftest.s$ac_file
-  fi
-  if test ! -s conftest.s$ac_file; then
-    ac_more_lines=false
-    rm -f conftest.s$ac_file
-  else
-    if test -z "$ac_sed_cmds"; then
-      ac_sed_cmds="sed -f conftest.s$ac_file"
-    else
-      ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
-    fi
-    ac_file=`expr $ac_file + 1`
-    ac_beg=$ac_end
-    ac_end=`expr $ac_end + $ac_max_sed_cmds`
-  fi
-done
-if test -z "$ac_sed_cmds"; then
-  ac_sed_cmds=cat
-fi
-EOF
-
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile libukem/Makefile src/Makefile"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case "$ac_file" in
-  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-  *) ac_file_in="${ac_file}.in" ;;
-  esac
-
-  # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
-
-  # Remove last slash and all that follows it.  Not all systems have dirname.
-  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-    # The file is in a subdirectory.
-    test ! -d "$ac_dir" && mkdir "$ac_dir"
-    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
-    # A "../" for each directory in $ac_dir_suffix.
-    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
-  else
-    ac_dir_suffix= ac_dots=
-  fi
-
-  case "$ac_given_srcdir" in
-  .)  srcdir=.
-      if test -z "$ac_dots"; then top_srcdir=.
-      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
-  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
-  *) # Relative path.
-    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
-    top_srcdir="$ac_dots$ac_given_srcdir" ;;
-  esac
-
-  case "$ac_given_INSTALL" in
-  [/$]*) INSTALL="$ac_given_INSTALL" ;;
-  *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
-  esac
-
-  echo creating "$ac_file"
-  rm -f "$ac_file"
-  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
-  case "$ac_file" in
-  *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
-  *) ac_comsub= ;;
-  esac
-
-  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-  sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s%^\([  ]*\)#\([        ]*define[       ][      ]*\)'
-ac_dB='\([     ][      ]*\)[^  ]*%\1#\2'
-ac_dC='\3'
-ac_dD='%g'
-# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
-ac_uA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
-ac_uB='\([     ]\)%\1#\2define\3'
-ac_uC=' '
-ac_uD='\4%g'
-# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_eA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
-ac_eB='$%\1#\2define\3'
-ac_eC=' '
-ac_eD='%g'
-
-if test "${CONFIG_HEADERS+set}" != set; then
-EOF
-cat >> $CONFIG_STATUS <<EOF
-  CONFIG_HEADERS="config.h"
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-fi
-for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case "$ac_file" in
-  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-  *) ac_file_in="${ac_file}.in" ;;
-  esac
-
-  echo creating $ac_file
-
-  rm -f conftest.frag conftest.in conftest.out
-  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-  cat $ac_file_inputs > conftest.in
-
-EOF
-
-# Transform confdefs.h into a sed script conftest.vals that substitutes
-# the proper values into config.h.in to produce config.h.  And first:
-# Protect against being on the right side of a sed subst in config.status.
-# Protect against being in an unquoted here document in config.status.
-rm -f conftest.vals
-cat > conftest.hdr <<\EOF
-s/[\\&%]/\\&/g
-s%[\\$`]%\\&%g
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
-s%ac_d%ac_u%gp
-s%ac_u%ac_e%gp
-EOF
-sed -n -f conftest.hdr confdefs.h > conftest.vals
-rm -f conftest.hdr
-
-# This sed command replaces #undef with comments.  This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-cat >> conftest.vals <<\EOF
-s%^[   ]*#[    ]*undef[        ][      ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
-EOF
-
-# Break up conftest.vals because some shells have a limit on
-# the size of here documents, and old seds have small limits too.
-
-rm -f conftest.tail
-while :
-do
-  ac_lines=`grep -c . conftest.vals`
-  # grep -c gives empty output for an empty file on some AIX systems.
-  if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
-  # Write a limited-size here document to conftest.frag.
-  echo '  cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
-  sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
-  echo 'CEOF
-  sed -f conftest.frag conftest.in > conftest.out
-  rm -f conftest.in
-  mv conftest.out conftest.in
-' >> $CONFIG_STATUS
-  sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
-  rm -f conftest.vals
-  mv conftest.tail conftest.vals
-done
-rm -f conftest.vals
-
-cat >> $CONFIG_STATUS <<\EOF
-  rm -f conftest.frag conftest.h
-  echo "/* $ac_file.  Generated automatically by configure.  */" > conftest.h
-  cat conftest.in >> conftest.h
-  rm -f conftest.in
-  if cmp -s $ac_file conftest.h 2>/dev/null; then
-    echo "$ac_file is unchanged"
-    rm -f conftest.h
-  else
-    # Remove last slash and all that follows it.  Not all systems have dirname.
-      ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-      if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-      # The file is in a subdirectory.
-      test ! -d "$ac_dir" && mkdir "$ac_dir"
-    fi
-    rm -f $ac_file
-    mv conftest.h $ac_file
-  fi
-fi; done
-
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
diff --git a/contrib/lukemftpd/configure.in b/contrib/lukemftpd/configure.in
deleted file mode 100644 (file)
index 470056d..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-dnl $Id: configure.in,v 1.17 2001/12/01 02:00:48 lukem Exp $
-dnl
-dnl configure.in --
-dnl    process this file with autoconf to produce a configure script.
-dnl
-
-AC_REVISION($Revision: 1.17 $)dnl
-
-AC_INIT(lukemftpd.h)
-
-
-dnl Arguments for which features are included
-dnl
-AC_ARG_ENABLE(ipv6, [\
-  --enable-ipv6           Enable IPv6 support (if your OS supports it).
-  --disable-ipv6          Disable IPv6 support (even if your OS supports it).
-                          [default: enabled]], 
-    opt_ipv6=$enableval,
-    opt_ipv6=yes)
-AC_ARG_ENABLE(builtinls, [\
-  --enable-builtinls      Enable built-in /bin/ls.  [default: enabled]
-  --disable-builtinls     Disable built-in /bin/ls.],
-    opt_builtinls=$enableval,
-    opt_builtinls=yes)
-
-
-dnl Checks for programs.
-dnl
-AC_PROG_MAKE_SET
-AC_PROG_CC
-AC_PROG_AWK
-AC_PROG_INSTALL
-AC_PROG_RANLIB
-AC_PROG_YACC
-AC_CHECK_PROGS(AR, ar)
-
-
-dnl Checks for libraries.
-dnl
-AC_CHECK_LIB(crypt, crypt)
-AC_CHECK_LIB(util, fparseln)
-if test $ac_cv_lib_util_fparseln != yes; then
-       AC_CHECK_LIB(util, setproctitle)
-fi
-AC_LIBRARY_NET
-AC_LIBRARY_SOCKS
-if test -n "$socks"; then
-       if test $opt_ipv6 = yes; then
-               echo "IPv6 is incompatible with socks, disabling IPv6 support"
-               opt_ipv6=no
-       fi
-fi
-AC_ARG_WITH(skey,
-[  --with-skey             Compile with S/Key authentication support.],
-[      if test $withval = yes; then
-               AC_CHECK_LIB(skey, skey_haskey)
-       fi ] )
-AC_MSG_CHECKING(whether to support S/Key)
-if test x"$ac_cv_lib_skey_skey_haskey" = "xyes"; then
-       AC_MSG_RESULT(yes)
-       AC_DEFINE(SKEY, 1)
-else
-       AC_MSG_RESULT(no)
-fi
-
-
-dnl Checks for header files.
-dnl
-AC_CONFIG_HEADER(config.h)
-AC_HEADER_DIRENT
-AC_HEADER_STDC
-AC_CHECK_HEADERS(arpa/nameser.h err.h fts.h libutil.h paths.h \
-               sys/sysmacros.h util.h)
-
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-dnl
-AC_HEADER_TIME
-AC_TYPE_OFF_T
-AC_CHECK_SIZEOF(off_t, 0)
-AC_MSG_TRY_LINK(for long long, ftp_cv_HAVE_LONG_LONG, [
-#include <sys/types.h>] , [
-long long X = 2, Y = 1, Z;
-Z = X / Y; ], [
-AC_DEFINE(HAVE_LONG_LONG, 1)
-have_long_long=yes], [have_long_long=no])
-
-AC_MSG_TRY_COMPILE(for in_port_t, ftp_cv_HAVE_IN_PORT_T, [
-#include <sys/types.h>
-#include <netinet/in.h> ], [ in_port_t X ], [AC_DEFINE(HAVE_IN_PORT_T, 1)])
-
-AC_MSG_TRY_COMPILE(for sockaddr_in.sin_len, ftp_cv_HAVE_SOCKADDR_SA_LEN, [
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h> ], [
-       struct sockaddr_in sin;
-       int X = sin.sin_len ], [AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1)])
-
-AC_MSG_TRY_COMPILE(for socklen_t, ftp_cv_HAVE_SOCKLEN_T, [
-#include <sys/types.h>
-#include <sys/socket.h> ], [ socklen_t X ], [AC_DEFINE(HAVE_SOCKLEN_T, 1)])
-
-if test $opt_ipv6 = yes; then
-
-       AC_MSG_TRY_COMPILE(for AF_INET6, ftp_cv_HAVE_AF_INET6, [
-#include <sys/types.h>
-#include <sys/socket.h> ],
-           [ int X = AF_INET6 ], [AC_DEFINE(HAVE_AF_INET6, 1)])
-
-       AC_MSG_TRY_COMPILE(for struct sockaddr_in6, ftp_cv_HAVE_SOCKADDR_IN6, [
-#include <sys/types.h>
-#include <netinet/in.h> ],
-           [ struct sockaddr_in6 X ], [AC_DEFINE(HAVE_SOCKADDR_IN6, 1)])
-
-fi
-
-AC_MSG_TRY_COMPILE(for struct addrinfo, ftp_cv_HAVE_ADDRINFO, [
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netdb.h> ],
-           [ struct addrinfo X ], [AC_DEFINE(HAVE_ADDRINFO, 1)])
-
-AC_MSG_TRY_COMPILE(for d_namlen in struct dirent, ftp_cv_HAVE_D_NAMLEN, [
-#if HAVE_DIRENT_H
-# include <dirent.h>
-#else
-# define dirent direct
-# if HAVE_SYS_NDIR_H
-#  include <sys/ndir.h>
-# endif
-# if HAVE_SYS_DIR_H
-#  include <sys/dir.h>
-# endif
-# if HAVE_NDIR_H
-#  include <ndir.h>
-# endif
-#endif ], [
-       struct dirent dp;
-       int X = dp.d_namlen; ], [AC_DEFINE(HAVE_D_NAMLEN, 1)])
-
-AC_MSG_TRY_COMPILE(for struct passwd.pw_expire, ftp_cv_HAVE_PW_EXPIRE, [
-#include <sys/types.h>
-#include <pwd.h> ],
-           [ struct passwd pw;
-             time_t X = pw.pw_expire ], [AC_DEFINE(HAVE_PW_EXPIRE, 1)])
-
-AC_C_CONST
-
-
-dnl Checks for library functions.
-dnl
-AC_REPLACE_FUNCS(err fgetln getaddrinfo getgrouplist getnameinfo \
-               getusershell inet_net_pton inet_ntop inet_pton mkstemp \
-               sl_init snprintf strdup strerror strlcat strlcpy strsep \
-               usleep vsyslog)
-AC_CHECK_FUNCS(flock lockf getspnam setlogin setproctitle vfork)
-if test $ac_cv_lib_util_fparseln != yes; then
-       AC_REPLACE_FUNCS(fparseln)
-fi
-
-LIBOBJS="$LIBOBJS glob.o"
-
-AC_MSG_TRY_COMPILE(for crypt() declaration, ftp_cv_HAVE_CRYPT_D, [
-#include <unistd.h> ], [ char *(*X)() = crypt ], [AC_DEFINE(HAVE_CRYPT_D, 1)])
-
-AC_MSG_TRY_COMPILE(for fclose() declaration, ftp_cv_HAVE_FCLOSE_D, [
-#include <stdio.h> ], [ int (*X)() = fclose ], [AC_DEFINE(HAVE_FCLOSE_D, 1)])
-
-AC_MSG_TRY_COMPILE(for optarg declaration, ftp_cv_HAVE_OPTARG_D, [
-#include <stdlib.h>
-#include <unistd.h> ], [ char *X = optarg ], [AC_DEFINE(HAVE_OPTARG_D, 1)])
-
-AC_MSG_TRY_COMPILE(for optind declaration, ftp_cv_HAVE_OPTIND_D, [
-#include <stdlib.h>
-#include <unistd.h> ], [ int X = optind ], [AC_DEFINE(HAVE_OPTIND_D, 1)])
-
-AC_MSG_TRY_LINK(for optreset, ftp_cv_HAVE_OPTRESET, [
-#include <stdlib.h>
-#include <unistd.h> ], [ int X = optreset ], [AC_DEFINE(HAVE_OPTRESET, 1)])
-
-AC_MSG_TRY_COMPILE(for pclose() declaration, ftp_cv_HAVE_PCLOSE_D, [
-#include <stdio.h> ], [ int (*X)() = pclose ], [AC_DEFINE(HAVE_PCLOSE_D, 1)])
-
-if test $ac_cv_func_getusershell = yes; then
-       AC_MSG_TRY_COMPILE(for getusershell() declaration,
-       ftp_cv_HAVE_GETUSERSHELL_D, [
-       #include <unistd.h> ], [ char *(*X)() = getusershell ],
-       [AC_DEFINE(HAVE_GETUSERSHELL_D, 1)])
-fi
-
-
-if test $have_long_long = yes -a $ac_cv_sizeof_off_t -ge 8; then
-
-dnl            We assume that if sprintf() supports %lld or %qd,
-dnl            then all of *printf() does. If not, disable long long
-dnl            support because we don't know how to display it.
-
-       AC_MSG_CHECKING(*printf() support for %lld)
-       can_printf_longlong=no
-       AC_TRY_RUN([
-               #include <stdio.h>
-               int main() {
-                       char buf[100];
-                       sprintf(buf, "%lld", 4294967300LL);
-                       return (strcmp(buf, "4294967300"));
-               }
-       ], [
-               AC_MSG_RESULT(yes)
-               can_printf_longlong=yes
-       ], [
-               AC_MSG_RESULT(no)
-       ], [ : ])
-
-       if test $can_printf_longlong != yes; then
-               AC_MSG_CHECKING(*printf() support for %qd)
-               AC_TRY_RUN([
-                       #include <stdio.h>
-                       int main() {
-                               char buf[100];
-                               sprintf(buf, "%qd", 4294967300LL);
-                               return (strcmp(buf, "4294967300"));
-                       }
-               ], [
-                       AC_MSG_RESULT(yes)
-                       can_printf_longlong=yes
-                       AC_DEFINE(HAVE_PRINTF_QD, 1)
-               ], [
-                       AC_MSG_RESULT(no)
-               ], [ : ])
-       fi
-
-       if test $can_printf_longlong = yes; then
-               AC_DEFINE(HAVE_QUAD_SUPPORT, 1)
-               AC_REPLACE_FUNCS(strtoll)
-       fi
-
-fi
-
-
-have_rfc2553_netdb=no
-if test $ac_cv_func_getaddrinfo = yes -a ! -n "$socks"; then
-       AC_MSG_TRY_COMPILE(for AI_NUMERICHOST,
-           ftp_cv_have_ai_numerichost, [
-       #include <sys/types.h>
-       #include <sys/socket.h>
-       #include <netdb.h> ],
-           [ int X = AI_NUMERICHOST ], [ have_rfc2553_netdb=yes ])
-fi
-AC_MSG_CHECKING(for working getaddrinfo())
-if test $have_rfc2553_netdb = yes; then
-       AC_DEFINE(HAVE_RFC2553_NETDB, 1)
-       AC_MSG_RESULT(yes)
-else
-       if test $ac_cv_func_getaddrinfo = yes; then
-               LIBOBJS="$LIBOBJS getaddrinfo.o"
-               AC_MSG_RESULT(no - using local version)
-       else
-               AC_MSG_RESULT(using local version)
-       fi
-fi
-
-if test $ac_cv_func_sl_init = yes; then
-       AC_MSG_TRY_COMPILE(if sl_add() returns int, ftp_cv_INT_SL_ADD, [
-       #include <stringlist.h> ], [ int f = sl_add((StringList *)0, "foo") ],
-       [:] , [LIBOBJS="$LIBOBJS sl_init.o"])
-fi
-
-
-dnl Tests for stuff for inbuilt ls
-dnl
-
-if test $opt_builtinls = yes; then
-       AC_REPLACE_FUNCS(fts_open strmode user_from_uid)
-       LSOBJS="cmp.o ls.o print.o util.o"
-else
-       AC_DEFINE(NO_INTERNAL_LS,1)
-fi
-
-
-dnl Build libukem if necessary
-dnl
-
-if test -n "$LIBOBJS"; then
-       INCLUDES="$INCLUDES -I\${srcdir}/../libukem"
-       LDFLAGS="$LDFLAGS -L../libukem"
-       LIBS="$LIBS -lukem"
-       LIBUKEM=libukem.a
-       LIBDEPENDS="$LIBDEPENDS ../libukem/libukem.a"
-fi
-
-
-dnl Create the Makefiles
-dnl
-
-AC_SUBST(INCLUDES)
-AC_SUBST(LIBUKEM)
-AC_SUBST(LIBDEPENDS)
-AC_SUBST(LSOBJS)
-
-AC_OUTPUT(Makefile libukem/Makefile src/Makefile)
diff --git a/contrib/lukemftpd/install-sh b/contrib/lukemftpd/install-sh
deleted file mode 100755 (executable)
index e9de238..0000000
+++ /dev/null
@@ -1,251 +0,0 @@
-#!/bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5 (mit/util/scripts/install.sh).
-#
-# Copyright 1991 by the Massachusetts Institute of Technology
-#
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission.  M.I.T. makes no representations about the
-# suitability of this software for any purpose.  It is provided "as is"
-# without express or implied warranty.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch.  It can only install one file at a time, a restriction
-# shared with many OS's install programs.
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
-    case $1 in
-       -c) instcmd="$cpprog"
-           shift
-           continue;;
-
-       -d) dir_arg=true
-           shift
-           continue;;
-
-       -m) chmodcmd="$chmodprog $2"
-           shift
-           shift
-           continue;;
-
-       -o) chowncmd="$chownprog $2"
-           shift
-           shift
-           continue;;
-
-       -g) chgrpcmd="$chgrpprog $2"
-           shift
-           shift
-           continue;;
-
-       -s) stripcmd="$stripprog"
-           shift
-           continue;;
-
-       -t=*) transformarg=`echo $1 | sed 's/-t=//'`
-           shift
-           continue;;
-
-       -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
-           shift
-           continue;;
-
-       *)  if [ x"$src" = x ]
-           then
-               src=$1
-           else
-               # this colon is to work around a 386BSD /bin/sh bug
-               :
-               dst=$1
-           fi
-           shift
-           continue;;
-    esac
-done
-
-if [ x"$src" = x ]
-then
-       echo "install:  no input file specified"
-       exit 1
-else
-       true
-fi
-
-if [ x"$dir_arg" != x ]; then
-       dst=$src
-       src=""
-       
-       if [ -d $dst ]; then
-               instcmd=:
-               chmodcmd=""
-       else
-               instcmd=mkdir
-       fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad 
-# if $src (and thus $dsttmp) contains '*'.
-
-       if [ -f $src -o -d $src ]
-       then
-               true
-       else
-               echo "install:  $src does not exist"
-               exit 1
-       fi
-       
-       if [ x"$dst" = x ]
-       then
-               echo "install:  no destination specified"
-               exit 1
-       else
-               true
-       fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
-       if [ -d $dst ]
-       then
-               dst="$dst"/`basename $src`
-       else
-               true
-       fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-#  this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='   
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
-       pathcomp="${pathcomp}${1}"
-       shift
-
-       if [ ! -d "${pathcomp}" ] ;
-        then
-               $mkdirprog "${pathcomp}"
-       else
-               true
-       fi
-
-       pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
-       $doit $instcmd $dst &&
-
-       if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
-       if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
-       if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
-       if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
-       if [ x"$transformarg" = x ] 
-       then
-               dstfile=`basename $dst`
-       else
-               dstfile=`basename $dst $transformbasename | 
-                       sed $transformarg`$transformbasename
-       fi
-
-# don't allow the sed command to completely eliminate the filename
-
-       if [ x"$dstfile" = x ] 
-       then
-               dstfile=`basename $dst`
-       else
-               true
-       fi
-
-# Make a temp file name in the proper directory.
-
-       dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
-       $doit $instcmd $src $dsttmp &&
-
-       trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing.  If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
-       if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
-       if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
-       if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
-       if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
-       $doit $rmcmd -f $dstdir/$dstfile &&
-       $doit $mvcmd $dsttmp $dstdir/$dstfile 
-
-fi &&
-
-
-exit 0
diff --git a/contrib/lukemftpd/lukemftpd.h b/contrib/lukemftpd/lukemftpd.h
deleted file mode 100644 (file)
index 1a3e4d1..0000000
+++ /dev/null
@@ -1,396 +0,0 @@
-/* $Id: lukemftpd.h,v 1.18 2002/03/14 06:02:24 lukem Exp $ */
-
-#define        FTPD_VERSION    "lukemftpd 1.2 beta 1"
-
-#include "config.h"
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/ioctl.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#if HAVE_SYS_SYSMACROS_H
-# include <sys/sysmacros.h>
-#endif
-
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-
-#if HAVE_FTP_NAMES
-# include <arpa/ftp.h>
-#else
-# include "arpaftp.h"
-#endif
-#include <arpa/inet.h>
-
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <fnmatch.h>
-#include <grp.h>
-#include <limits.h>
-#include <locale.h>
-#include <netdb.h>
-#include <pwd.h>
-#include <setjmp.h>
-#include <signal.h>
-#include <stdarg.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <syslog.h>
-#include <termios.h>
-#include <unistd.h>
-#include <utmp.h>
-
-#if HAVE_DIRENT_H
-# include <dirent.h>
-#else
-# define dirent direct
-# if HAVE_SYS_NDIR_H
-#  include <sys/ndir.h>
-# endif
-# if HAVE_SYS_DIR_H
-#  include <sys/dir.h>
-# endif
-# if HAVE_NDIR_H
-#  include <ndir.h>
-# endif
-#endif
-
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-#  include <sys/time.h>
-# else
-#  include <time.h>
-# endif
-#endif
-
-#if HAVE_ERR_H
-# include <err.h>
-#endif
-
-#if HAVE_WORKING_GLOB
-# include <glob.h>
-#else
-# include "ftpglob.h"
-#endif
-
-#if HAVE_PATHS_H
-# include <paths.h>
-#endif
-#ifndef        _PATH_BSHELL
-#define        _PATH_BSHELL    "/bin/sh"
-#endif
-#ifndef        _PATH_CSHELL
-#define        _PATH_CSHELL    "/bin/csh"
-#endif
-#ifndef        _PATH_SHELLS
-#define        _PATH_SHELLS    "/etc/shells"
-#endif
-#ifndef        _PATH_DEVNULL
-#define        _PATH_DEVNULL   "/dev/null"
-#endif
-#ifndef        _PATH_NOLOGIN
-#define        _PATH_NOLOGIN   "/etc/nologin"
-#endif
-
-#ifndef FTPD_LOGTYPE
-# ifdef LOG_FTP
-#  define FTPD_LOGTYPE LOG_FTP
-# else
-#  define FTPD_LOGTYPE LOG_DAEMON
-# endif
-#endif
-
-#ifndef LOG_AUTHPRIV
-# ifdef LOG_AUTH
-#  define LOG_AUTHPRIV LOG_AUTH
-# else
-#  define LOG_AUTHPRIV LOG_DAEMON
-# endif
-#endif
-
-typedef struct _stringlist {
-       char    **sl_str;
-       size_t    sl_max;
-       size_t    sl_cur;
-} StringList;
-
-StringList *sl_init(void);
-int     sl_add(StringList *, char *);
-void    sl_free(StringList *, int);
-char   *sl_find(StringList *, char *);
-
-#if HAVE_FTS_H
-# include <fts.h>
-#else
-# include "ftpfts.h"
-#endif
-
-#if HAVE_UTIL_H
-# include <util.h>
-#endif
-
-#if HAVE_LIBUTIL_H
-# include <libutil.h>
-#endif
-
-#if ! HAVE_IN_PORT_T
-typedef unsigned short in_port_t;
-#endif
-
-#if ! HAVE_SOCKLEN_T
-typedef unsigned int socklen_t;
-#endif
-
-#if HAVE_AF_INET6 && HAVE_SOCKADDR_IN6
-# define INET6
-#endif
-
-
-#if ! HAVE_RFC2553_NETDB
-
-                               /* RFC 2553 */
-#undef EAI_ADDRFAMILY
-#define        EAI_ADDRFAMILY   1      /* address family for hostname not supported */
-#undef EAI_AGAIN
-#define        EAI_AGAIN        2      /* temporary failure in name resolution */
-#undef EAI_BADFLAGS
-#define        EAI_BADFLAGS     3      /* invalid value for ai_flags */
-#undef EAI_FAIL
-#define        EAI_FAIL         4      /* non-recoverable failure in name resolution */
-#undef EAI_FAMILY
-#define        EAI_FAMILY       5      /* ai_family not supported */
-#undef EAI_MEMORY
-#define        EAI_MEMORY       6      /* memory allocation failure */
-#undef EAI_NODATA
-#define        EAI_NODATA       7      /* no address associated with hostname */
-#undef EAI_NONAME
-#define        EAI_NONAME       8      /* hostname nor servname provided, or not known */
-#undef EAI_SERVICE
-#define        EAI_SERVICE      9      /* servname not supported for ai_socktype */
-#undef EAI_SOCKTYPE
-#define        EAI_SOCKTYPE    10      /* ai_socktype not supported */
-#undef EAI_SYSTEM
-#define        EAI_SYSTEM      11      /* system error returned in errno */
-
-                               /* KAME extensions? */
-#undef EAI_BADHINTS
-#define        EAI_BADHINTS    12
-#undef EAI_PROTOCOL
-#define        EAI_PROTOCOL    13
-#undef EAI_MAX
-#define        EAI_MAX         14
-
-                               /* RFC 2553 */
-#undef NI_MAXHOST
-#define        NI_MAXHOST      1025
-#undef NI_MAXSERV
-#define        NI_MAXSERV      32
-
-#undef NI_NOFQDN
-#define        NI_NOFQDN       0x00000001
-#undef NI_NUMERICHOST
-#define        NI_NUMERICHOST  0x00000002
-#undef NI_NAMEREQD
-#define        NI_NAMEREQD     0x00000004
-#undef NI_NUMERICSERV
-#define        NI_NUMERICSERV  0x00000008
-#undef NI_DGRAM
-#define        NI_DGRAM        0x00000010
-
-                               /* RFC 2553 */
-#undef AI_PASSIVE
-#define        AI_PASSIVE      0x00000001 /* get address to use bind() */
-#undef AI_CANONNAME
-#define        AI_CANONNAME    0x00000002 /* fill ai_canonname */
-
-                               /* KAME extensions ? */
-#undef AI_NUMERICHOST
-#define        AI_NUMERICHOST  0x00000004 /* prevent name resolution */
-#undef AI_MASK
-#define        AI_MASK         (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST)
-
-                               /* RFC 2553 */
-#undef AI_ALL
-#define        AI_ALL          0x00000100 /* IPv6 and IPv4-mapped (with AI_V4MAPPED) */
-#undef AI_V4MAPPED_CFG
-#define        AI_V4MAPPED_CFG 0x00000200 /* accept IPv4-mapped if kernel supports */
-#undef AI_ADDRCONFIG
-#define        AI_ADDRCONFIG   0x00000400 /* only if any address is assigned */
-#undef AI_V4MAPPED
-#define        AI_V4MAPPED     0x00000800 /* accept IPv4-mapped IPv6 address */
-
-#endif /* ! HAVE_RFC2553_NETDB */
-
-
-#if ! HAVE_RFC2553_NETDB && ! HAVE_ADDRINFO
-
-struct addrinfo {
-       int     ai_flags;       /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */
-       int     ai_family;      /* PF_xxx */
-       int     ai_socktype;    /* SOCK_xxx */
-       int     ai_protocol;    /* 0 or IPPROTO_xxx for IPv4 and IPv6 */
-       size_t  ai_addrlen;     /* length of ai_addr */
-       char    *ai_canonname;  /* canonical name for hostname */
-       struct sockaddr *ai_addr;       /* binary address */
-       struct addrinfo *ai_next;       /* next structure in linked list */
-};
-
-int    getaddrinfo(const char *, const char *,
-           const struct addrinfo *, struct addrinfo **);
-int    getnameinfo(const struct sockaddr *, socklen_t, char *,
-           size_t, char *, size_t, int);
-void   freeaddrinfo(struct addrinfo *);
-char   *gai_strerror(int);
-
-#endif /* ! HAVE_RFC2553_NETDB && ! HAVE_ADDRINFO */
-
-
-#if ! HAVE_D_NAMLEN
-# define DIRENT_MISSING_D_NAMLEN
-#endif
-
-#if ! HAVE_CRYPT_D
-char   *crypt(const char *, const char *);
-#endif
-
-#if ! HAVE_FCLOSE_D
-int    fclose(FILE *);
-#endif
-
-#if ! HAVE_OPTARG_D
-extern char    *optarg;
-#endif
-
-#if ! HAVE_OPTIND_D
-extern int     optind;
-#endif
-
-#if ! HAVE_PCLOSE_D
-int    pclose(FILE *);
-#endif
-
-#if ! HAVE_ERR
-void   err(int, const char *, ...);
-void   errx(int, const char *, ...);
-void   warn(const char *, ...);
-void   warnx(const char *, ...);
-#endif
-
-#if ! HAVE_FGETLN
-char   *fgetln(FILE *, size_t *);
-#endif
-
-#if ! HAVE_FPARSELN
-# define FPARSELN_UNESCESC     0x01
-# define FPARSELN_UNESCCONT    0x02
-# define FPARSELN_UNESCCOMM    0x04
-# define FPARSELN_UNESCREST    0x08
-# define FPARSELN_UNESCALL     0x0f
-char   *fparseln(FILE *, size_t *, size_t *, const char[3], int);
-#endif
-
-#if ! HAVE_GETUSERSHELL || ! HAVE_GETUSERSHELL_D
-char   *getusershell(void);
-void   setusershell(void);
-void   endusershell(void);
-#endif
-
-#if ! HAVE_INET_NTOP
-const char *inet_ntop(int, const void *, char *, size_t);
-#endif
-
-#if ! HAVE_INET_PTON
-int    inet_pton(int, const char *, void *);
-#endif
-
-#if ! HAVE_MKSTEMP
-int    mkstemp(const char *);
-#endif
-
-#if ! HAVE_SNPRINTF
-int    snprintf(char *, size_t, const char *, ...);
-#endif
-
-#if ! HAVE_STRDUP
-char   *strdup(const char *);
-#endif
-
-#if ! HAVE_STRERROR
-char   *strerror(int);
-#endif
-
-#if HAVE_QUAD_SUPPORT
-# if ! HAVE_STRTOLL && HAVE_LONG_LONG
-long long strtoll(const char *, char **, int);
-#  if ! defined(QUAD_MIN)
-#   define QUAD_MIN    (-0x7fffffffffffffffL-1)
-#  endif
-#  if ! defined(QUAD_MAX)
-#   define QUAD_MAX    (0x7fffffffffffffffL)
-#  endif
-# endif
-#else  /* ! HAVE_QUAD_SUPPORT */
-# define NO_LONG_LONG  1
-#endif /* ! HAVE_QUAD_SUPPORT */
-
-#if ! HAVE_STRLCAT
-size_t strlcat(char *, const char *, size_t);
-#endif
-
-#if ! HAVE_STRLCPY
-size_t strlcpy(char *, const char *, size_t);
-#endif
-
-#if ! HAVE_STRMODE
-void   strmode(mode_t, char *);
-#endif
-
-#if ! HAVE_STRSEP
-char   *strsep(char **, const char *);
-#endif
-
-#if ! HAVE_USER_FROM_UID
-const char *user_from_uid(uid_t, int);
-const char *group_from_gid(gid_t, int);
-#endif
-
-#if ! HAVE_VSYSLOG
-void   vsyslog(int level, const char *, va_list);
-#endif
-
-
-#if ! defined(MIN)
-# define MIN(a, b)     ((a) < (b) ? (a) : (b))
-#endif
-#if ! defined(MAX)
-# define MAX(a, b)     ((a) < (b) ? (b) : (a))
-#endif
-
-#if ! defined(timersub)
-# define timersub(tvp, uvp, vvp)                                       \
-       do {                                                            \
-               (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec;          \
-               (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec;       \
-               if ((vvp)->tv_usec < 0) {                               \
-                       (vvp)->tv_sec--;                                \
-                       (vvp)->tv_usec += 1000000;                      \
-               }                                                       \
-       } while (0)
-#endif
-
-#if ! defined(S_ISLNK)
-# define S_ISLNK(m)    ((m & S_IFMT) == S_IFLNK)
-#endif
-
-#define        DAYSPERNYEAR    365
-#define SECSPERDAY     86400
-#define TM_YEAR_BASE   1900
diff --git a/contrib/lukemftpd/src/Makefile.in b/contrib/lukemftpd/src/Makefile.in
deleted file mode 100644 (file)
index e4fe6c6..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-# $Id: Makefile.in,v 1.5 2001/03/29 05:29:07 lukem Exp $
-#
-
-srcdir = @srcdir@
-VPATH  = @srcdir@
-SHELL  = /bin/sh
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-bindir = @bindir@
-mandir = @mandir@
-sbindir        = @sbindir@
-
-mandircat5 = ${mandir}/cat5
-mandircat8 = ${mandir}/cat8
-
-CC     = @CC@
-CFLAGS = -I${srcdir} -I${srcdir}/.. -I. -I.. @INCLUDES@ @CFLAGS@
-LIBS   = @LIBS@
-LDFLAGS        = @LDFLAGS@
-
-INSTALL        = @INSTALL@
-
-PROG   = ftpd
-OBJS   = cmds.o conf.o ftpd.o ftpcmd.o popen.o @LSOBJS@
-# removed: logutmp.o logwtmp.o
-
-all:   ${PROG}
-
-cmp.o: ${srcdir}/../ls/cmp.c
-       ${CC} ${CFLAGS} -c  -o cmp.o ${srcdir}/../ls/cmp.c
-
-ls.o: ${srcdir}/../ls/ls.c
-       ${CC} ${CFLAGS} -c  -o ls.o ${srcdir}/../ls/ls.c
-
-print.o: ${srcdir}/../ls/print.c
-       ${CC} ${CFLAGS} -c  -o print.o ${srcdir}/../ls/print.c
-
-stat_flags.o: ${srcdir}/../ls/stat_flags.c
-       ${CC} ${CFLAGS} -c  -o stat_flags.o ${srcdir}/../ls/stat_flags.c
-
-util.o: ${srcdir}/../ls/util.c
-       ${CC} ${CFLAGS} -c  -o util.o ${srcdir}/../ls/util.c
-
-install: all
-       -mkdir -p ${sbindir}
-       ${INSTALL} -m 555 ${PROG} ${sbindir}
-       -mkdir -p ${mandircat5}
-       ${INSTALL} -m 444 ${srcdir}/ftpd.conf.cat5 ${mandircat5}/ftpd.conf.5
-       ${INSTALL} -m 444 ${srcdir}/ftpusers.cat5 ${mandircat5}/ftpusers.5
-       -mkdir -p ${mandircat8}
-       ${INSTALL} -m 444 ${srcdir}/${PROG}.cat8 ${mandircat8}/${PROG}.8
-
-${PROG}: ${OBJS} @LIBDEPENDS@
-       ${CC} ${CFLAGS} ${LDFLAGS} -o ${PROG} ${OBJS} ${LIBS}
-
-clean:
-       rm -f core ${PROG} ${OBJS}
-
-distclean: clean
-       rm -f Makefile
diff --git a/contrib/lukemftpd/src/arpaftp.h b/contrib/lukemftpd/src/arpaftp.h
deleted file mode 100644 (file)
index 52be7c1..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/*     $NetBSD: ftp.h,v 1.5 1998/02/10 00:32:50 perry Exp $    */
-
-/*
- * Copyright (c) 1983, 1989, 1993
- *     The Regents of the University of California.  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.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
- *
- *     @(#)ftp.h       8.1 (Berkeley) 6/2/93
- */
-
-#ifndef _ARPA_FTP_H_
-#define        _ARPA_FTP_H_
-
-/* Definitions for FTP; see RFC-765. */
-
-/*
- * Reply codes.
- */
-#define PRELIM         1       /* positive preliminary */
-#define COMPLETE       2       /* positive completion */
-#define CONTINUE       3       /* positive intermediate */
-#define TRANSIENT      4       /* transient negative completion */
-#define ERROR          5       /* permanent negative completion */
-
-/*
- * Type codes
- */
-#define        TYPE_A          1       /* ASCII */
-#define        TYPE_E          2       /* EBCDIC */
-#define        TYPE_I          3       /* image */
-#define        TYPE_L          4       /* local byte size */
-
-#ifdef FTP_NAMES
-char *typenames[] =  {"0", "ASCII", "EBCDIC", "Image", "Local" };
-#endif
-
-/*
- * Form codes
- */
-#define        FORM_N          1       /* non-print */
-#define        FORM_T          2       /* telnet format effectors */
-#define        FORM_C          3       /* carriage control (ASA) */
-#ifdef FTP_NAMES
-char *formnames[] =  {"0", "Nonprint", "Telnet", "Carriage-control" };
-#endif
-
-/*
- * Structure codes
- */
-#define        STRU_F          1       /* file (no record structure) */
-#define        STRU_R          2       /* record structure */
-#define        STRU_P          3       /* page structure */
-#ifdef FTP_NAMES
-char *strunames[] =  {"0", "File", "Record", "Page" };
-#endif
-
-/*
- * Mode types
- */
-#define        MODE_S          1       /* stream */
-#define        MODE_B          2       /* block */
-#define        MODE_C          3       /* compressed */
-#ifdef FTP_NAMES
-char *modenames[] =  {"0", "Stream", "Block", "Compressed" };
-#endif
-
-/*
- * Record Tokens
- */
-#define        REC_ESC         '\377'  /* Record-mode Escape */
-#define        REC_EOR         '\001'  /* Record-mode End-of-Record */
-#define REC_EOF                '\002'  /* Record-mode End-of-File */
-
-/*
- * Block Header
- */
-#define        BLK_EOR         0x80    /* Block is End-of-Record */
-#define        BLK_EOF         0x40    /* Block is End-of-File */
-#define BLK_ERRORS     0x20    /* Block is suspected of containing errors */
-#define        BLK_RESTART     0x10    /* Block is Restart Marker */
-
-#define        BLK_BYTECOUNT   2       /* Bytes in this block */
-
-#endif /* _ARPA_FTP_H_ */
diff --git a/contrib/lukemftpd/src/cmds.c b/contrib/lukemftpd/src/cmds.c
deleted file mode 100644 (file)
index 5f5db9f..0000000
+++ /dev/null
@@ -1,818 +0,0 @@
-/*     $NetBSD: cmds.c,v 1.16 2002/02/13 15:15:23 lukem Exp $  */
-
-/*
- * Copyright (c) 1999-2001 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Luke Mewburn.
- *
- * 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.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *        This product includes software developed by the NetBSD
- *        Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- *    contributors may be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
- */
-
-/*
- * Copyright (c) 1985, 1988, 1990, 1992, 1993, 1994
- *     The Regents of the University of California.  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.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
- */
-
-/*
- * Copyright (C) 1997 and 1998 WIDE Project.
- * 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.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
- */
-
-#include "lukemftpd.h"
-
-#include "extern.h"
-
-typedef enum {
-       FE_MLSD         = 1<<0,         /* if op is MLSD (MLST otherwise ) */
-       FE_ISCURDIR     = 1<<1,         /* if name is the current directory */
-} factflag_t;
-
-typedef struct {
-       const char      *path;          /* full pathname */
-       const char      *display;       /* name to display */
-       struct stat     *stat;          /* stat of path */
-       struct stat     *pdirstat;      /* stat of path's parent dir */
-       factflag_t       flags;         /* flags */
-} factelem;
-
-static void    ack(const char *);
-static void    base64_encode(const char *, size_t, char *, int);
-static void    fact_type(const char *, FILE *, factelem *);
-static void    fact_size(const char *, FILE *, factelem *);
-static void    fact_modify(const char *, FILE *, factelem *);
-static void    fact_perm(const char *, FILE *, factelem *);
-static void    fact_unique(const char *, FILE *, factelem *);
-static int     matchgroup(gid_t);
-static void    mlsname(FILE *, factelem *);
-static void    replydirname(const char *, const char *);
-
-struct ftpfact {
-       const char       *name;         /* name of fact */
-       int               enabled;      /* if fact is enabled */
-       void            (*display)(const char *, FILE *, factelem *);
-                                       /* function to display fact */
-};
-
-struct ftpfact facttab[] = {
-       { "Type",       1, fact_type },
-#define        FACT_TYPE 0
-       { "Size",       1, fact_size },
-       { "Modify",     1, fact_modify },
-       { "Perm",       1, fact_perm },
-       { "Unique",     1, fact_unique },
-       /* "Create" */
-       /* "Lang" */
-       /* "Media-Type" */
-       /* "CharSet" */
-};
-
-#define FACTTABSIZE    (sizeof(facttab) / sizeof(struct ftpfact))
-
-
-void
-cwd(const char *path)
-{
-
-       if (chdir(path) < 0)
-               perror_reply(550, path);
-       else {
-               show_chdir_messages(250);
-               ack("CWD");
-       }
-}
-
-void
-delete(const char *name)
-{
-       char *p = NULL;
-
-       if (remove(name) < 0) {
-               p = strerror(errno);
-               perror_reply(550, name);
-       } else
-               ack("DELE");
-       logxfer("delete", -1, name, NULL, NULL, p);
-}
-
-void
-feat(void)
-{
-       int i;
-
-       reply(-211, "Features supported");
-       cprintf(stdout, " MDTM\r\n");
-       cprintf(stdout, " MLST ");
-       for (i = 0; i < FACTTABSIZE; i++)
-               cprintf(stdout, "%s%s;", facttab[i].name,
-                   facttab[i].enabled ? "*" : "");
-       cprintf(stdout, "\r\n");
-       cprintf(stdout, " REST STREAM\r\n");
-       cprintf(stdout, " SIZE\r\n");
-       cprintf(stdout, " TVFS\r\n");
-       reply(211,  "End");
-}
-
-void
-makedir(const char *name)
-{
-       char *p = NULL;
-
-       if (mkdir(name, 0777) < 0) {
-               p = strerror(errno);
-               perror_reply(550, name);
-       } else
-               replydirname(name, "directory created.");
-       logxfer("mkdir", -1, name, NULL, NULL, p);
-}
-
-void
-mlsd(const char *path)
-{
-       struct dirent   *dp;
-       struct stat      sb, pdirstat;
-       factelem f;
-       FILE    *dout;
-       DIR     *dirp;
-       char    name[MAXPATHLEN];
-       int     hastypefact;
-
-       hastypefact = facttab[FACT_TYPE].enabled;
-       if (path == NULL)
-               path = ".";
-       if (stat(path, &pdirstat) == -1) {
- mlsdperror:
-               perror_reply(550, path);
-               return;
-       }
-       if (! S_ISDIR(pdirstat.st_mode)) {
-               errno = ENOTDIR;
-               perror_reply(501, path);
-               return;
-       }
-       if ((dirp = opendir(path)) == NULL)
-               goto mlsdperror;
-
-       dout = dataconn("MLSD", (off_t)-1, "w");
-       if (dout == NULL)
-               return;
-
-       memset(&f, 0, sizeof(f));
-       f.stat = &sb;
-       f.flags |= FE_MLSD;
-       while ((dp = readdir(dirp)) != NULL) {
-               snprintf(name, sizeof(name), "%s/%s", path, dp->d_name);
-               if (ISDOTDIR(dp->d_name)) {     /* special case curdir: */
-                       if (! hastypefact)
-                               continue;
-                       f.pdirstat = NULL;      /*   require stat of parent */
-                       f.display = path;       /*   set name to real name */
-                       f.flags |= FE_ISCURDIR; /*   flag name is curdir */
-               } else {
-                       if (ISDOTDOTDIR(dp->d_name)) {
-                               if (! hastypefact)
-                                       continue;
-                               f.pdirstat = NULL;
-                       } else
-                               f.pdirstat = &pdirstat; /* cache parent stat */
-                       f.display = dp->d_name;
-                       f.flags &= ~FE_ISCURDIR;
-               }
-               if (stat(name, &sb) == -1)
-                       continue;
-               f.path = name;
-               mlsname(dout, &f);
-       }
-       (void)closedir(dirp);
-
-       if (ferror(dout) != 0)
-               perror_reply(550, "Data connection");
-       else
-               reply(226, "MLSD complete.");
-       closedataconn(dout);
-       total_xfers_out++;
-       total_xfers++;
-}
-
-void
-mlst(const char *path)
-{
-       struct stat sb;
-       factelem f;
-
-       if (path == NULL)
-               path = ".";
-       if (stat(path, &sb) == -1) {
-               perror_reply(550, path);
-               return;
-       }
-       reply(-250, "MLST %s", path);
-       memset(&f, 0, sizeof(f));
-       f.path = path;
-       f.display = path;
-       f.stat = &sb;
-       f.pdirstat = NULL;
-       CPUTC(' ', stdout);
-       mlsname(stdout, &f);
-       reply(250, "End");
-}
-
-
-void
-opts(const char *command)
-{
-       struct tab *c;
-       char *ep;
-
-       if ((ep = strchr(command, ' ')) != NULL)
-               *ep++ = '\0';
-       c = lookup(cmdtab, command);
-       if (c == NULL) {
-               reply(502, "Unknown command %s.", command);
-               return;
-       }
-       if (! CMD_IMPLEMENTED(c)) {
-               reply(501, "%s command not implemented.", c->name);
-               return;
-       }
-       if (! CMD_HAS_OPTIONS(c)) {
-               reply(501, "%s command does not support persistent options.",
-                   c->name);
-               return;
-       }
-
-                       /* special case: MLST */
-       if (strcasecmp(command, "MLST") == 0) {
-               int      enabled[FACTTABSIZE];
-               int      i, onedone;
-               size_t   len;
-               char    *p;
-
-               for (i = 0; i < sizeof(enabled) / sizeof(int); i++)
-                       enabled[i] = 0;
-               if (ep == NULL || *ep == '\0')
-                       goto displaymlstopts;
-
-                               /* don't like spaces, and need trailing ; */
-               len = strlen(ep);
-               if (strchr(ep, ' ') != NULL || ep[len - 1] != ';') {
- badmlstopt:
-                       reply(501, "Invalid MLST options");
-                       return;
-               }
-               ep[len - 1] = '\0';
-               while ((p = strsep(&ep, ";")) != NULL) {
-                       if (*p == '\0')
-                               goto badmlstopt;
-                       for (i = 0; i < FACTTABSIZE; i++)
-                               if (strcasecmp(p, facttab[i].name) == 0) {
-                                       enabled[i] = 1;
-                                       break;
-                               }
-               }
-
- displaymlstopts:
-               for (i = 0; i < FACTTABSIZE; i++)
-                       facttab[i].enabled = enabled[i];
-               cprintf(stdout, "200 MLST OPTS");
-               for (i = onedone = 0; i < FACTTABSIZE; i++) {
-                       if (facttab[i].enabled) {
-                               cprintf(stdout, "%s%s;", onedone ? "" : " ",
-                                   facttab[i].name);
-                               onedone++;
-                       }
-               }
-               cprintf(stdout, "\r\n");
-               fflush(stdout);
-               return;
-       }
-
-                       /* default cases */
-       if (ep != NULL && *ep != '\0')
-               REASSIGN(c->options, xstrdup(ep));
-       if (c->options != NULL)
-               reply(200, "Options for %s are '%s'.", c->name,
-                   c->options);
-       else
-               reply(200, "No options defined for %s.", c->name);
-}
-
-void
-pwd(void)
-{
-       char path[MAXPATHLEN];
-
-       if (getcwd(path, sizeof(path) - 1) == NULL)
-               reply(550, "Can't get the current directory: %s.",
-                   strerror(errno));
-       else
-               replydirname(path, "is the current directory.");
-}
-
-void
-removedir(const char *name)
-{
-       char *p = NULL;
-
-       if (rmdir(name) < 0) {
-               p = strerror(errno);
-               perror_reply(550, name);
-       } else
-               ack("RMD");
-       logxfer("rmdir", -1, name, NULL, NULL, p);
-}
-
-char *
-renamefrom(const char *name)
-{
-       struct stat st;
-
-       if (stat(name, &st) < 0) {
-               perror_reply(550, name);
-               return (NULL);
-       }
-       reply(350, "File exists, ready for destination name");
-       return (xstrdup(name));
-}
-
-void
-renamecmd(const char *from, const char *to)
-{
-       char *p = NULL;
-
-       if (rename(from, to) < 0) {
-               p = strerror(errno);
-               perror_reply(550, "rename");
-       } else
-               ack("RNTO");
-       logxfer("rename", -1, from, to, NULL, p);
-}
-
-void
-sizecmd(const char *filename)
-{
-       switch (type) {
-       case TYPE_L:
-       case TYPE_I:
-           {
-               struct stat stbuf;
-               if (stat(filename, &stbuf) < 0 || !S_ISREG(stbuf.st_mode))
-                       reply(550, "%s: not a plain file.", filename);
-               else
-                       reply(213, ULLF, (ULLT)stbuf.st_size);
-               break;
-           }
-       case TYPE_A:
-           {
-               FILE *fin;
-               int c;
-               off_t count;
-               struct stat stbuf;
-               fin = fopen(filename, "r");
-               if (fin == NULL) {
-                       perror_reply(550, filename);
-                       return;
-               }
-               if (fstat(fileno(fin), &stbuf) < 0 || !S_ISREG(stbuf.st_mode)) {
-                       reply(550, "%s: not a plain file.", filename);
-                       (void) fclose(fin);
-                       return;
-               }
-               if (stbuf.st_size > 10240) {
-                       reply(550, "%s: file too large for SIZE.", filename);
-                       (void) fclose(fin);
-                       return;
-               }
-
-               count = 0;
-               while((c = getc(fin)) != EOF) {
-                       if (c == '\n')  /* will get expanded to \r\n */
-                               count++;
-                       count++;
-               }
-               (void) fclose(fin);
-
-               reply(213, LLF, (LLT)count);
-               break;
-           }
-       default:
-               reply(504, "SIZE not implemented for Type %c.", "?AEIL"[type]);
-       }
-}
-
-void
-statfilecmd(const char *filename)
-{
-       FILE *fin;
-       int c;
-       char *argv[] = { INTERNAL_LS, "-lgA", "", NULL };
-
-       argv[2] = (char *)filename;
-       fin = ftpd_popen(argv, "r", STDOUT_FILENO);
-       reply(-211, "status of %s:", filename);
-/* XXX: use fgetln() or fparseln() here? */
-       while ((c = getc(fin)) != EOF) {
-               if (c == '\n') {
-                       if (ferror(stdout)){
-                               perror_reply(421, "control connection");
-                               (void) ftpd_pclose(fin);
-                               dologout(1);
-                               /* NOTREACHED */
-                       }
-                       if (ferror(fin)) {
-                               perror_reply(551, filename);
-                               (void) ftpd_pclose(fin);
-                               return;
-                       }
-                       CPUTC('\r', stdout);
-               }
-               CPUTC(c, stdout);
-       }
-       (void) ftpd_pclose(fin);
-       reply(211, "End of Status");
-}
-
-/* -- */
-
-static void
-ack(const char *s)
-{
-
-       reply(250, "%s command successful.", s);
-}
-
-/*
- * Encode len bytes starting at clear using base64 encoding into encoded,
- * which should be at least ((len + 2) * 4 / 3 + 1) in size.
- * If nulterm is non-zero, terminate with \0 otherwise pad to 3 byte boundary
- * with `='.
- */
-static void
-base64_encode(const char *clear, size_t len, char *encoded, int nulterm)
-{
-       static const char base64[] =
-           "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-       const char *c;
-       char    *e, termchar;
-       int      i;
-
-                       /* determine whether to pad with '=' or NUL terminate */
-       termchar = nulterm ? '\0' : '=';
-       c = clear;
-       e = encoded;
-                       /* convert all but last 2 bytes */
-       for (i = len; i > 2; i -= 3, c += 3) {
-               *e++ = base64[(c[0] >> 2) & 0x3f];
-               *e++ = base64[((c[0] << 4) & 0x30) | ((c[1] >> 4) & 0x0f)];
-               *e++ = base64[((c[1] << 2) & 0x3c) | ((c[2] >> 6) & 0x03)];
-               *e++ = base64[(c[2]) & 0x3f];
-       }
-                       /* handle slop at end */
-       if (i > 0) {
-               *e++ = base64[(c[0] >> 2) & 0x3f];
-               *e++ = base64[((c[0] << 4) & 0x30) |
-                    (i > 1 ? ((c[1] >> 4) & 0x0f) : 0)];
-               *e++ = (i > 1) ? base64[(c[1] << 2) & 0x3c] : termchar;
-               *e++ = termchar;
-       }
-       *e = '\0';
-}
-
-static void
-fact_modify(const char *fact, FILE *fd, factelem *fe)
-{
-       struct tm *t;
-
-       t = gmtime(&(fe->stat->st_mtime));
-       cprintf(fd, "%s=%04d%02d%02d%02d%02d%02d;", fact,
-           TM_YEAR_BASE + t->tm_year,
-           t->tm_mon+1, t->tm_mday,
-           t->tm_hour, t->tm_min, t->tm_sec);
-}
-
-static void
-fact_perm(const char *fact, FILE *fd, factelem *fe)
-{
-       int             rok, wok, xok, pdirwok;
-       struct stat     *pdir;
-
-       if (fe->stat->st_uid == geteuid()) {
-               rok = ((fe->stat->st_mode & S_IRUSR) != 0);
-               wok = ((fe->stat->st_mode & S_IWUSR) != 0);
-               xok = ((fe->stat->st_mode & S_IXUSR) != 0);
-       } else if (matchgroup(fe->stat->st_gid)) {
-               rok = ((fe->stat->st_mode & S_IRGRP) != 0);
-               wok = ((fe->stat->st_mode & S_IWGRP) != 0);
-               xok = ((fe->stat->st_mode & S_IXGRP) != 0);
-       } else {
-               rok = ((fe->stat->st_mode & S_IROTH) != 0);
-               wok = ((fe->stat->st_mode & S_IWOTH) != 0);
-               xok = ((fe->stat->st_mode & S_IXOTH) != 0);
-       }
-
-       cprintf(fd, "%s=", fact);
-
-                       /*
-                        * if parent info not provided, look it up, but
-                        * only if the current class has modify rights,
-                        * since we only need this info in such a case.
-                        */
-       pdir = fe->pdirstat;
-       if (pdir == NULL && CURCLASS_FLAGS_ISSET(modify)) {
-               size_t          len;
-               char            realdir[MAXPATHLEN], *p;
-               struct stat     dir;
-
-               len = strlcpy(realdir, fe->path, sizeof(realdir));
-               if (len < sizeof(realdir) - 4) {
-                       if (S_ISDIR(fe->stat->st_mode))
-                               strlcat(realdir, "/..", sizeof(realdir));
-                       else {
-                                       /* if has a /, move back to it */
-                                       /* otherwise use '..' */
-                               if ((p = strrchr(realdir, '/')) != NULL) {
-                                       if (p == realdir)
-                                               p++;
-                                       *p = '\0';
-                               } else
-                                       strlcpy(realdir, "..", sizeof(realdir));
-                       }
-                       if (stat(realdir, &dir) == 0)
-                               pdir = &dir;
-               }
-       }
-       pdirwok = 0;
-       if (pdir != NULL) {
-               if (pdir->st_uid == geteuid())
-                       pdirwok = ((pdir->st_mode & S_IWUSR) != 0);
-               else if (matchgroup(pdir->st_gid))
-                       pdirwok = ((pdir->st_mode & S_IWGRP) != 0);
-               else
-                       pdirwok = ((pdir->st_mode & S_IWOTH) != 0);
-       }
-
-                       /* 'a': can APPE to file */
-       if (wok && CURCLASS_FLAGS_ISSET(upload) && S_ISREG(fe->stat->st_mode))
-               CPUTC('a', fd);
-
-                       /* 'c': can create or append to files in directory */
-       if (wok && CURCLASS_FLAGS_ISSET(modify) && S_ISDIR(fe->stat->st_mode))
-               CPUTC('c', fd);
-
-                       /* 'd': can delete file or directory */
-       if (pdirwok && CURCLASS_FLAGS_ISSET(modify)) {
-               int candel;
-
-               candel = 1;
-               if (S_ISDIR(fe->stat->st_mode)) {
-                       DIR *dirp;
-                       struct dirent *dp;
-
-                       if ((dirp = opendir(fe->display)) == NULL)
-                               candel = 0;
-                       else {
-                               while ((dp = readdir(dirp)) != NULL) {
-                                       if (ISDOTDIR(dp->d_name) ||
-                                           ISDOTDOTDIR(dp->d_name))
-                                               continue;
-                                       candel = 0;
-                                       break;
-                               }
-                               closedir(dirp);
-                       }
-               }
-               if (candel)
-                       CPUTC('d', fd);
-       }
-
-                       /* 'e': can enter directory */
-       if (xok && S_ISDIR(fe->stat->st_mode))
-               CPUTC('e', fd);
-
-                       /* 'f': can rename file or directory */
-       if (pdirwok && CURCLASS_FLAGS_ISSET(modify))
-               CPUTC('f', fd);
-
-                       /* 'l': can list directory */
-       if (rok && xok && S_ISDIR(fe->stat->st_mode))
-               CPUTC('l', fd);
-
-                       /* 'm': can create directory */
-       if (wok && CURCLASS_FLAGS_ISSET(modify) && S_ISDIR(fe->stat->st_mode))
-               CPUTC('m', fd);
-
-                       /* 'p': can remove files in directory */
-       if (wok && CURCLASS_FLAGS_ISSET(modify) && S_ISDIR(fe->stat->st_mode))
-               CPUTC('p', fd);
-
-                       /* 'r': can RETR file */
-       if (rok && S_ISREG(fe->stat->st_mode))
-               CPUTC('r', fd);
-
-                       /* 'w': can STOR file */
-       if (wok && CURCLASS_FLAGS_ISSET(upload) && S_ISREG(fe->stat->st_mode))
-               CPUTC('w', fd);
-
-       CPUTC(';', fd);
-}
-
-static void
-fact_size(const char *fact, FILE *fd, factelem *fe)
-{
-
-       if (S_ISREG(fe->stat->st_mode))
-               cprintf(fd, "%s=" LLF ";", fact, (LLT)fe->stat->st_size);
-}
-
-static void
-fact_type(const char *fact, FILE *fd, factelem *fe)
-{
-
-       cprintf(fd, "%s=", fact);
-       switch (fe->stat->st_mode & S_IFMT) {
-       case S_IFDIR:
-               if (fe->flags & FE_MLSD) {
-                       if ((fe->flags & FE_ISCURDIR) || ISDOTDIR(fe->display))
-                               cprintf(fd, "cdir");
-                       else if (ISDOTDOTDIR(fe->display))
-                               cprintf(fd, "pdir");
-                       else
-                               cprintf(fd, "dir");
-               } else {
-                       cprintf(fd, "dir");
-               }
-               break;
-       case S_IFREG:
-               cprintf(fd, "file");
-               break;
-       case S_IFIFO:
-               cprintf(fd, "OS.unix=fifo");
-               break;
-       case S_IFLNK:           /* XXX: probably a NO-OP with stat() */
-               cprintf(fd, "OS.unix=slink");
-               break;
-       case S_IFSOCK:
-               cprintf(fd, "OS.unix=socket");
-               break;
-       case S_IFBLK:
-       case S_IFCHR:
-               cprintf(fd, "OS.unix=%s-%d/%d",
-                   S_ISBLK(fe->stat->st_mode) ? "blk" : "chr",
-                   major(fe->stat->st_rdev), minor(fe->stat->st_rdev));
-               break;
-       default:
-               cprintf(fd, "OS.unix=UNKNOWN(0%o)", fe->stat->st_mode & S_IFMT);
-               break;
-       }
-       CPUTC(';', fd);
-}
-
-static void
-fact_unique(const char *fact, FILE *fd, factelem *fe)
-{
-       char obuf[(sizeof(dev_t) + sizeof(ino_t) + 2) * 4 / 3 + 2];
-       char tbuf[sizeof(dev_t) + sizeof(ino_t)];
-
-       memcpy(tbuf,
-           (char *)&(fe->stat->st_dev), sizeof(dev_t));
-       memcpy(tbuf + sizeof(dev_t),
-           (char *)&(fe->stat->st_ino), sizeof(ino_t));
-       base64_encode(tbuf, sizeof(dev_t) + sizeof(ino_t), obuf, 1);
-       cprintf(fd, "%s=%s;", fact, obuf);
-}
-
-static int
-matchgroup(gid_t gid)
-{
-       int     i;
-
-       for (i = 0; i < gidcount; i++)
-               if (gid == gidlist[i])
-                       return(1);
-       return (0);
-}
-
-static void
-mlsname(FILE *fp, factelem *fe)
-{
-       char realfile[MAXPATHLEN];
-       int i, userf;
-
-       for (i = 0; i < FACTTABSIZE; i++) {
-               if (facttab[i].enabled)
-                       (facttab[i].display)(facttab[i].name, fp, fe);
-       }
-       if ((fe->flags & FE_MLSD) &&
-           !(fe->flags & FE_ISCURDIR) && !ISDOTDIR(fe->display)) {
-                       /* if MLSD and not "." entry, display as-is */
-               userf = 0;
-       } else {
-                       /* if MLST, or MLSD and "." entry, realpath(3) it */
-               if (realpath(fe->display, realfile) != NULL)
-                       userf = 1;
-       }
-       cprintf(fp, " %s\r\n", userf ? realfile : fe->display);
-}
-
-static void
-replydirname(const char *name, const char *message)
-{
-       char *p, *ep;
-       char npath[MAXPATHLEN * 2];
-
-       p = npath;
-       ep = &npath[sizeof(npath) - 1];
-       while (*name) {
-               if (*name == '"') {
-                       if (ep - p < 2)
-                               break;
-                       *p++ = *name++;
-                       *p++ = '"';
-               } else {
-                       if (ep - p < 1)
-                               break;
-                       *p++ = *name++;
-               }
-       }
-       *p = '\0';
-       reply(257, "\"%s\" %s", npath, message);
-}
diff --git a/contrib/lukemftpd/src/conf.c b/contrib/lukemftpd/src/conf.c
deleted file mode 100644 (file)
index 8ec927f..0000000
+++ /dev/null
@@ -1,1018 +0,0 @@
-/*     $NetBSD: conf.c,v 1.46 2001/12/04 13:54:12 lukem Exp $  */
-
-/*-
- * Copyright (c) 1997-2001 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Simon Burge and Luke Mewburn.
- *
- * 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.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *        This product includes software developed by the NetBSD
- *        Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- *    contributors may be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
- */
-
-#include "lukemftpd.h"
-
-#include "extern.h"
-#include "pathnames.h"
-
-static char *strend(const char *, char *);
-static int filetypematch(char *, int);
-
-
-               /* class defaults */
-#define DEFAULT_LIMIT          -1              /* unlimited connections */
-#define DEFAULT_MAXFILESIZE    -1              /* unlimited file size */
-#define DEFAULT_MAXTIMEOUT     7200            /* 2 hours */
-#define DEFAULT_TIMEOUT                900             /* 15 minutes */
-#define DEFAULT_UMASK          027             /* 15 minutes */
-
-/*
- * Initialise curclass to an `empty' state
- */
-void
-init_curclass(void)
-{
-       struct ftpconv  *conv, *cnext;
-
-       for (conv = curclass.conversions; conv != NULL; conv = cnext) {
-               REASSIGN(conv->suffix, NULL);
-               REASSIGN(conv->types, NULL);
-               REASSIGN(conv->disable, NULL);
-               REASSIGN(conv->command, NULL);
-               cnext = conv->next;
-               free(conv);
-       }
-
-       memset((char *)&curclass.advertise, 0, sizeof(curclass.advertise));
-       curclass.advertise.su_len = 0;          /* `not used' */
-       REASSIGN(curclass.chroot, NULL);
-       REASSIGN(curclass.classname, NULL);
-       curclass.conversions =  NULL;
-       REASSIGN(curclass.display, NULL);
-       REASSIGN(curclass.homedir, NULL);
-       curclass.limit =        DEFAULT_LIMIT;  
-       REASSIGN(curclass.limitfile, NULL);
-       curclass.maxfilesize =  DEFAULT_MAXFILESIZE;
-       curclass.maxrateget =   0;
-       curclass.maxrateput =   0;
-       curclass.maxtimeout =   DEFAULT_MAXTIMEOUT;
-       REASSIGN(curclass.motd, xstrdup(_PATH_FTPLOGINMESG));
-       REASSIGN(curclass.notify, NULL);
-       curclass.portmin =      0;
-       curclass.portmax =      0;
-       curclass.rateget =      0;
-       curclass.rateput =      0;
-       curclass.timeout =      DEFAULT_TIMEOUT;
-           /* curclass.type is set elsewhere */
-       curclass.umask =        DEFAULT_UMASK;
-
-       CURCLASS_FLAGS_SET(checkportcmd);
-       CURCLASS_FLAGS_CLR(denyquick);
-       CURCLASS_FLAGS_SET(modify);
-       CURCLASS_FLAGS_SET(passive);
-       CURCLASS_FLAGS_CLR(private);
-       CURCLASS_FLAGS_CLR(sanenames);
-       CURCLASS_FLAGS_SET(upload);
-}
-
-/*
- * Parse the configuration file, looking for the named class, and
- * define curclass to contain the appropriate settings.
- */
-void
-parse_conf(const char *findclass)
-{
-       FILE            *f;
-       char            *buf, *p;
-       size_t           len;
-       LLT              llval;
-       int              none, match;
-       char            *endp;
-       char            *class, *word, *arg, *template;
-       const char      *infile;
-       size_t           line;
-       unsigned int     timeout;
-       struct ftpconv  *conv, *cnext;
-
-       init_curclass();
-       REASSIGN(curclass.classname, xstrdup(findclass));
-                       /* set more guest defaults */
-       if (strcasecmp(findclass, "guest") == 0) {
-               CURCLASS_FLAGS_CLR(modify);
-               curclass.umask = 0707;
-       }
-
-       infile = conffilename(_PATH_FTPDCONF);
-       if ((f = fopen(infile, "r")) == NULL)
-               return;
-
-       line = 0;
-       template = NULL;
-       for (;
-           (buf = fparseln(f, &len, &line, NULL, FPARSELN_UNESCCOMM |
-                       FPARSELN_UNESCCONT | FPARSELN_UNESCESC)) != NULL;
-           free(buf)) {
-               none = match = 0;
-               p = buf;
-               if (len < 1)
-                       continue;
-               if (p[len - 1] == '\n')
-                       p[--len] = '\0';
-               if (EMPTYSTR(p))
-                       continue;
-               
-               NEXTWORD(p, word);
-               NEXTWORD(p, class);
-               NEXTWORD(p, arg);
-               if (EMPTYSTR(word) || EMPTYSTR(class))
-                       continue;
-               if (strcasecmp(class, "none") == 0)
-                       none = 1;
-               if (! (strcasecmp(class, findclass) == 0 ||
-                      (template != NULL && strcasecmp(class, template) == 0) ||
-                      none ||
-                      strcasecmp(class, "all") == 0) )
-                       continue;
-
-#define CONF_FLAG(x) \
-       do { \
-               if (none || \
-                   (!EMPTYSTR(arg) && strcasecmp(arg, "off") == 0)) \
-                       CURCLASS_FLAGS_CLR(x); \
-               else \
-                       CURCLASS_FLAGS_SET(x); \
-       } while (0)
-
-#define CONF_STRING(x) \
-       do { \
-               if (none || EMPTYSTR(arg)) \
-                       arg = NULL; \
-               else \
-                       arg = xstrdup(arg); \
-               REASSIGN(curclass.x, arg); \
-       } while (0)
-
-
-               if (0)  {
-                       /* no-op */
-
-               } else if ((strcasecmp(word, "advertise") == 0)
-                       || (strcasecmp(word, "advertize") == 0)) {
-                       struct addrinfo hints, *res;
-                       int             error;
-
-                       memset((char *)&curclass.advertise, 0,
-                           sizeof(curclass.advertise));
-                       curclass.advertise.su_len = 0;
-                       if (none || EMPTYSTR(arg))
-                               continue;
-                       res = NULL;
-                       memset(&hints, 0, sizeof(hints));
-                                       /*
-                                        * only get addresses of the family
-                                        * that we're listening on
-                                        */
-                       hints.ai_family = ctrl_addr.su_family;
-                       hints.ai_socktype = SOCK_STREAM;
-                       error = getaddrinfo(arg, "0", &hints, &res);
-                       if (error) {
-                               syslog(LOG_WARNING, "%s line %d: %s",
-                                   infile, (int)line, gai_strerror(error));
- advertiseparsefail:
-                               if (res)
-                                       freeaddrinfo(res);
-                               continue;
-                       }
-                       if (res->ai_next) {
-                               syslog(LOG_WARNING,
-    "%s line %d: multiple addresses returned for `%s'; please be more specific",
-                                   infile, (int)line, arg);
-                               goto advertiseparsefail;
-                       }
-                       if (sizeof(curclass.advertise) < res->ai_addrlen || (
-#ifdef INET6
-                           res->ai_family != AF_INET6 &&
-#endif
-                           res->ai_family != AF_INET)) {
-                               syslog(LOG_WARNING,
-    "%s line %d: unsupported protocol %d for `%s'",
-                                   infile, (int)line, res->ai_family, arg);
-                               goto advertiseparsefail;
-                       }
-                       memcpy(&curclass.advertise, res->ai_addr,
-                           res->ai_addrlen);
-                       curclass.advertise.su_len = res->ai_addrlen;
-                       freeaddrinfo(res);
-
-               } else if (strcasecmp(word, "checkportcmd") == 0) {
-                       CONF_FLAG(checkportcmd);
-
-               } else if (strcasecmp(word, "chroot") == 0) {
-                       CONF_STRING(chroot);
-
-               } else if (strcasecmp(word, "classtype") == 0) {
-                       if (!none && !EMPTYSTR(arg)) {
-                               if (strcasecmp(arg, "GUEST") == 0)
-                                       curclass.type = CLASS_GUEST;
-                               else if (strcasecmp(arg, "CHROOT") == 0)
-                                       curclass.type = CLASS_CHROOT;
-                               else if (strcasecmp(arg, "REAL") == 0)
-                                       curclass.type = CLASS_REAL;
-                               else {
-                                       syslog(LOG_WARNING,
-                                   "%s line %d: unknown class type `%s'",
-                                           infile, (int)line, arg);
-                                       continue;
-                               }
-                       }
-
-               } else if (strcasecmp(word, "conversion") == 0) {
-                       char *suffix, *types, *disable, *convcmd;
-
-                       if (EMPTYSTR(arg)) {
-                               syslog(LOG_WARNING,
-                                   "%s line %d: %s requires a suffix",
-                                   infile, (int)line, word);
-                               continue;       /* need a suffix */
-                       }
-                       NEXTWORD(p, types);
-                       NEXTWORD(p, disable);
-                       convcmd = p;
-                       if (convcmd)
-                               convcmd += strspn(convcmd, " \t");
-                       suffix = xstrdup(arg);
-                       if (none || EMPTYSTR(types) ||
-                           EMPTYSTR(disable) || EMPTYSTR(convcmd)) {
-                               types = NULL;
-                               disable = NULL;
-                               convcmd = NULL;
-                       } else {
-                               types = xstrdup(types);
-                               disable = xstrdup(disable);
-                               convcmd = xstrdup(convcmd);
-                       }
-                       for (conv = curclass.conversions; conv != NULL;
-                           conv = conv->next) {
-                               if (strcmp(conv->suffix, suffix) == 0)
-                                       break;
-                       }
-                       if (conv == NULL) {
-                               conv = (struct ftpconv *)
-                                   calloc(1, sizeof(struct ftpconv));
-                               if (conv == NULL) {
-                                       syslog(LOG_WARNING, "can't malloc");
-                                       continue;
-                               }
-                               conv->next = NULL;
-                               for (cnext = curclass.conversions;
-                                   cnext != NULL; cnext = cnext->next)
-                                       if (cnext->next == NULL)
-                                               break;
-                               if (cnext != NULL)
-                                       cnext->next = conv;
-                               else
-                                       curclass.conversions = conv;
-                       }
-                       REASSIGN(conv->suffix, suffix);
-                       REASSIGN(conv->types, types);
-                       REASSIGN(conv->disable, disable);
-                       REASSIGN(conv->command, convcmd);
-
-               } else if (strcasecmp(word, "denyquick") == 0) {
-                       CONF_FLAG(denyquick);
-
-               } else if (strcasecmp(word, "display") == 0) {
-                       CONF_STRING(display);
-
-               } else if (strcasecmp(word, "homedir") == 0) {
-                       CONF_STRING(homedir);
-
-               } else if (strcasecmp(word, "limit") == 0) {
-                       int limit;
-
-                       curclass.limit = DEFAULT_LIMIT;
-                       REASSIGN(curclass.limitfile, NULL);
-                       if (none || EMPTYSTR(arg))
-                               continue;
-                       limit = (int)strtol(arg, &endp, 10);
-                       if (*endp != 0) {
-                               syslog(LOG_WARNING,
-                                   "%s line %d: invalid limit %s",
-                                   infile, (int)line, arg);
-                               continue;
-                       }
-                       curclass.limit = limit;
-                       REASSIGN(curclass.limitfile,
-                           EMPTYSTR(p) ? NULL : xstrdup(p));
-
-               } else if (strcasecmp(word, "maxfilesize") == 0) {
-                       curclass.maxfilesize = DEFAULT_MAXFILESIZE;
-                       if (none || EMPTYSTR(arg))
-                               continue;
-                       llval = strsuftoll(arg);
-                       if (llval == -1) {
-                               syslog(LOG_WARNING,
-                                   "%s line %d: invalid maxfilesize %s",
-                                   infile, (int)line, arg);
-                               continue;
-                       }
-                       curclass.maxfilesize = llval;
-
-               } else if (strcasecmp(word, "maxtimeout") == 0) {
-                       curclass.maxtimeout = DEFAULT_MAXTIMEOUT;
-                       if (none || EMPTYSTR(arg))
-                               continue;
-                       timeout = (unsigned int)strtoul(arg, &endp, 10);
-                       if (*endp != 0) {
-                               syslog(LOG_WARNING,
-                                   "%s line %d: invalid maxtimeout %s",
-                                   infile, (int)line, arg);
-                               continue;
-                       }
-                       if (timeout < 30) {
-                               syslog(LOG_WARNING,
-                                   "%s line %d: maxtimeout %d < 30 seconds",
-                                   infile, (int)line, timeout);
-                               continue;
-                       }
-                       if (timeout < curclass.timeout) {
-                               syslog(LOG_WARNING,
-                                   "%s line %d: maxtimeout %d < timeout (%d)",
-                                   infile, (int)line, timeout,
-                                   curclass.timeout);
-                               continue;
-                       }
-                       curclass.maxtimeout = timeout;
-
-               } else if (strcasecmp(word, "modify") == 0) {
-                       CONF_FLAG(modify);
-
-               } else if (strcasecmp(word, "motd") == 0) {
-                       CONF_STRING(motd);
-
-               } else if (strcasecmp(word, "notify") == 0) {
-                       CONF_STRING(notify);
-
-               } else if (strcasecmp(word, "passive") == 0) {
-                       CONF_FLAG(passive);
-
-               } else if (strcasecmp(word, "portrange") == 0) {
-                       int minport, maxport;
-                       char *min, *max;
-
-                       curclass.portmin = 0;
-                       curclass.portmax = 0;
-                       if (none || EMPTYSTR(arg))
-                               continue;
-                       min = arg;
-                       NEXTWORD(p, max);
-                       if (EMPTYSTR(max)) {
-                               syslog(LOG_WARNING,
-                                  "%s line %d: missing maxport argument",
-                                  infile, (int)line);
-                               continue;
-                       }
-                       minport = (int)strtol(min, &endp, 10);
-                       if (*endp != 0 || minport < IPPORT_RESERVED ||
-                           minport > IPPORT_ANONMAX) {
-                               syslog(LOG_WARNING,
-                                   "%s line %d: invalid minport %s",
-                                   infile, (int)line, min);
-                               continue;
-                       }
-                       maxport = (int)strtol(max, &endp, 10);
-                       if (*endp != 0 || maxport < IPPORT_RESERVED ||
-                           maxport > IPPORT_ANONMAX) {
-                               syslog(LOG_WARNING,
-                                   "%s line %d: invalid maxport %s",
-                                   infile, (int)line, max);
-                               continue;
-                       }
-                       if (minport >= maxport) {
-                               syslog(LOG_WARNING,
-                                   "%s line %d: minport %d >= maxport %d",
-                                   infile, (int)line, minport, maxport);
-                               continue;
-                       }
-                       curclass.portmin = minport;
-                       curclass.portmax = maxport;
-
-               } else if (strcasecmp(word, "private") == 0) {
-                       CONF_FLAG(private);
-
-               } else if (strcasecmp(word, "rateget") == 0) {
-                       curclass.maxrateget = 0;
-                       curclass.rateget = 0;
-                       if (none || EMPTYSTR(arg))
-                               continue;
-                       llval = strsuftoll(arg);
-                       if (llval == -1) {
-                               syslog(LOG_WARNING,
-                                   "%s line %d: invalid rateget %s",
-                                   infile, (int)line, arg);
-                               continue;
-                       }
-                       curclass.maxrateget = llval;
-                       curclass.rateget = llval;
-
-               } else if (strcasecmp(word, "rateput") == 0) {
-                       curclass.maxrateput = 0;
-                       curclass.rateput = 0;
-                       if (none || EMPTYSTR(arg))
-                               continue;
-                       llval = strsuftoll(arg);
-                       if (llval == -1) {
-                               syslog(LOG_WARNING,
-                                   "%s line %d: invalid rateput %s",
-                                   infile, (int)line, arg);
-                               continue;
-                       }
-                       curclass.maxrateput = llval;
-                       curclass.rateput = llval;
-
-               } else if (strcasecmp(word, "sanenames") == 0) {
-                       CONF_FLAG(sanenames);
-
-               } else if (strcasecmp(word, "timeout") == 0) {
-                       curclass.timeout = DEFAULT_TIMEOUT;
-                       if (none || EMPTYSTR(arg))
-                               continue;
-                       timeout = (unsigned int)strtoul(arg, &endp, 10);
-                       if (*endp != 0) {
-                               syslog(LOG_WARNING,
-                                   "%s line %d: invalid timeout %s",
-                                   infile, (int)line, arg);
-                               continue;
-                       }
-                       if (timeout < 30) {
-                               syslog(LOG_WARNING,
-                                   "%s line %d: timeout %d < 30 seconds",
-                                   infile, (int)line, timeout);
-                               continue;
-                       }
-                       if (timeout > curclass.maxtimeout) {
-                               syslog(LOG_WARNING,
-                                   "%s line %d: timeout %d > maxtimeout (%d)",
-                                   infile, (int)line, timeout,
-                                   curclass.maxtimeout);
-                               continue;
-                       }
-                       curclass.timeout = timeout;
-
-               } else if (strcasecmp(word, "template") == 0) {
-                       if (none)
-                               continue;
-                       REASSIGN(template, EMPTYSTR(arg) ? NULL : xstrdup(arg));
-
-               } else if (strcasecmp(word, "umask") == 0) {
-                       mode_t fumask;
-
-                       curclass.umask = DEFAULT_UMASK;
-                       if (none || EMPTYSTR(arg))
-                               continue;
-                       fumask = (mode_t)strtoul(arg, &endp, 8);
-                       if (*endp != 0 || fumask > 0777) {
-                               syslog(LOG_WARNING,
-                                   "%s line %d: invalid umask %s",
-                                   infile, (int)line, arg);
-                               continue;
-                       }
-                       curclass.umask = fumask;
-
-               } else if (strcasecmp(word, "upload") == 0) {
-                       CONF_FLAG(upload);
-                       if (! CURCLASS_FLAGS_ISSET(upload))
-                               CURCLASS_FLAGS_CLR(modify);
-
-               } else {
-                       syslog(LOG_WARNING,
-                           "%s line %d: unknown directive '%s'",
-                           infile, (int)line, word);
-                       continue;
-               }
-       }
-       REASSIGN(template, NULL);
-       fclose(f);
-}
-
-/*
- * Show file listed in curclass.display first time in, and list all the
- * files named in curclass.notify in the current directory.
- * Send back responses with the prefix `code' + "-".
- * If code == -1, flush the internal cache of directory names and return.
- */
-void
-show_chdir_messages(int code)
-{
-       static StringList *slist = NULL;
-
-       struct stat st;
-       struct tm *t;
-       glob_t   gl;
-       time_t   now, then;
-       int      age;
-       char     curwd[MAXPATHLEN];
-       char    *cp, **rlist;
-
-       if (code == -1) {
-               if (slist != NULL)
-                       sl_free(slist, 1);
-               slist = NULL;
-               return;
-       }
-               
-       if (quietmessages)
-               return;
-
-               /* Setup list for directory cache */
-       if (slist == NULL)
-               slist = sl_init();
-       if (slist == NULL) {
-               syslog(LOG_WARNING, "can't allocate memory for stringlist");
-               return;
-       }
-
-               /* Check if this directory has already been visited */
-       if (getcwd(curwd, sizeof(curwd) - 1) == NULL) {
-               syslog(LOG_WARNING, "can't getcwd: %s", strerror(errno));
-               return;
-       }
-       if (sl_find(slist, curwd) != NULL)
-               return; 
-
-       cp = xstrdup(curwd);
-       if (sl_add(slist, cp) == -1)
-               syslog(LOG_WARNING, "can't add `%s' to stringlist", cp);
-
-               /* First check for a display file */
-       (void)display_file(curclass.display, code);
-
-               /* Now see if there are any notify files */
-       if (EMPTYSTR(curclass.notify))
-               return;
-
-       memset(&gl, 0, sizeof(gl));
-       if (glob(curclass.notify, GLOB_LIMIT, NULL, &gl) != 0
-           || gl.gl_matchc == 0) {
-               globfree(&gl);
-               return;
-       }
-       time(&now);
-       for (rlist = gl.gl_pathv; *rlist != NULL; rlist++) {
-               if (stat(*rlist, &st) != 0)
-                       continue;
-               if (!S_ISREG(st.st_mode))
-                       continue;
-               then = st.st_mtime;
-               if (code != 0) {
-                       reply(-code, "%s", "");
-                       code = 0;
-               }
-               reply(-code, "Please read the file %s", *rlist);
-               t = localtime(&now);
-               age = 365 * t->tm_year + t->tm_yday;
-               t = localtime(&then);
-               age -= 365 * t->tm_year + t->tm_yday;
-               reply(-code, "  it was last modified on %.24s - %d day%s ago",
-                   ctime(&then), age, PLURAL(age));
-       }
-       globfree(&gl);
-}
-
-int
-display_file(const char *file, int code)
-{
-       FILE   *f;
-       char   *buf, *p;
-       char    curwd[MAXPATHLEN];
-       size_t  len;
-       off_t   lastnum;
-       time_t  now;
-
-       lastnum = 0;
-       if (quietmessages)
-               return (0);
-
-       if (EMPTYSTR(file))
-               return(0);
-       if ((f = fopen(file, "r")) == NULL)
-               return (0);
-       reply(-code, "%s", "");
-
-       for (;
-           (buf = fparseln(f, &len, NULL, "\0\0\0", 0)) != NULL; free(buf)) {
-               if (len > 0)
-                       if (buf[len - 1] == '\n')
-                               buf[--len] = '\0';
-               cprintf(stdout, "    ");
-
-               for (p = buf; *p; p++) {
-                       if (*p == '%') {
-                               p++;
-                               switch (*p) {
-
-                               case 'c':
-                                       cprintf(stdout, "%s",
-                                           curclass.classname ?
-                                           curclass.classname : "<unknown>");
-                                       break;
-
-                               case 'C':
-                                       if (getcwd(curwd, sizeof(curwd)-1)
-                                           == NULL){
-                                               syslog(LOG_WARNING,
-                                                   "can't getcwd: %s",
-                                                   strerror(errno));
-                                               continue;
-                                       }
-                                       cprintf(stdout, "%s", curwd);
-                                       break;
-
-                               case 'E':
-                                       if (! EMPTYSTR(emailaddr))
-                                               cprintf(stdout, "%s",
-                                                   emailaddr);
-                                       break;
-
-                               case 'L':
-                                       cprintf(stdout, "%s", hostname);
-                                       break;
-
-                               case 'M':
-                                       if (curclass.limit == -1) {
-                                               cprintf(stdout, "unlimited");
-                                               lastnum = 0;
-                                       } else {
-                                               cprintf(stdout, "%d",
-                                                   curclass.limit);
-                                               lastnum = curclass.limit;
-                                       }
-                                       break;
-
-                               case 'N':
-                                       cprintf(stdout, "%d", connections);
-                                       lastnum = connections;
-                                       break;
-
-                               case 'R':
-                                       cprintf(stdout, "%s", remotehost);
-                                       break;
-
-                               case 's':
-                                       if (lastnum != 1)
-                                               cprintf(stdout, "s");
-                                       break;
-
-                               case 'S':
-                                       if (lastnum != 1)
-                                               cprintf(stdout, "S");
-                                       break;
-
-                               case 'T':
-                                       now = time(NULL);
-                                       cprintf(stdout, "%.24s", ctime(&now));
-                                       break;
-
-                               case 'U':
-                                       cprintf(stdout, "%s",
-                                           pw ? pw->pw_name : "<unknown>");
-                                       break;
-
-                               case '%':
-                                       CPUTC('%', stdout);
-                                       break;
-
-                               }
-                       } else
-                               CPUTC(*p, stdout);
-               }
-               cprintf(stdout, "\r\n");
-       }
-
-       (void)fflush(stdout);
-       (void)fclose(f);
-       return (1);
-}
-
-/*
- * Parse src, expanding '%' escapes, into dst (which must be at least
- * MAXPATHLEN long).
- */
-void
-format_path(char *dst, const char *src)
-{
-       size_t len;
-       const char *p;
-
-       dst[0] = '\0';
-       len = 0;
-       if (src == NULL)
-               return;
-       for (p = src; *p && len < MAXPATHLEN; p++) {
-               if (*p == '%') {
-                       p++;
-                       switch (*p) {
-
-                       case 'c':
-                               len += strlcpy(dst + len, curclass.classname,
-                                   MAXPATHLEN - len);
-                               break;
-
-                       case 'd':
-                               len += strlcpy(dst + len, pw->pw_dir,
-                                   MAXPATHLEN - len);
-                               break;
-
-                       case 'u':
-                               len += strlcpy(dst + len, pw->pw_name,
-                                   MAXPATHLEN - len);
-                               break;
-
-                       case '%':
-                               dst[len++] = '%';
-                               break;
-
-                       }
-               } else
-                       dst[len++] = *p;
-       }
-       if (len < MAXPATHLEN)
-               dst[len] = '\0';
-       dst[MAXPATHLEN - 1] = '\0';
-}
-
-/*
- * Find s2 at the end of s1.  If found, return a string up to (but
- * not including) s2, otherwise returns NULL.
- */
-static char *
-strend(const char *s1, char *s2)
-{
-       static  char buf[MAXPATHLEN];
-
-       char    *start;
-       size_t  l1, l2;
-
-       l1 = strlen(s1);
-       l2 = strlen(s2);
-
-       if (l2 >= l1 || l1 >= sizeof(buf))
-               return(NULL);
-       
-       strlcpy(buf, s1, sizeof(buf));
-       start = buf + (l1 - l2);
-
-       if (strcmp(start, s2) == 0) {
-               *start = '\0';
-               return(buf);
-       } else
-               return(NULL);
-}
-
-static int
-filetypematch(char *types, int mode)
-{
-       for ( ; types[0] != '\0'; types++)
-               switch (*types) {
-                 case 'd':
-                       if (S_ISDIR(mode))
-                               return(1);
-                       break;
-                 case 'f':
-                       if (S_ISREG(mode))
-                               return(1);
-                       break;
-               }
-       return(0);
-}
-
-/*
- * Look for a conversion.  If we succeed, return a pointer to the
- * command to execute for the conversion.
- *
- * The command is stored in a static array so there's no memory
- * leak problems, and not too much to change in ftpd.c.  This
- * routine doesn't need to be re-entrant unless we start using a
- * multi-threaded ftpd, and that's not likely for a while...
- */
-char **
-do_conversion(const char *fname)
-{
-       struct ftpconv  *cp;
-       struct stat      st;
-       int              o_errno;
-       char            *base = NULL;
-       char            *cmd, *p, *lp, **argv;
-       StringList      *sl;
-
-       o_errno = errno;
-       sl = NULL;
-       cmd = NULL;
-       for (cp = curclass.conversions; cp != NULL; cp = cp->next) {
-               if (cp->suffix == NULL) {
-                       syslog(LOG_WARNING,
-                           "cp->suffix==NULL in conv list; SHOULDN'T HAPPEN!");
-                       continue;
-               }
-               if ((base = strend(fname, cp->suffix)) == NULL)
-                       continue;
-               if (cp->types == NULL || cp->disable == NULL ||
-                   cp->command == NULL)
-                       continue;
-                                       /* Is it enabled? */
-               if (strcmp(cp->disable, ".") != 0 &&
-                   stat(cp->disable, &st) == 0)
-                               continue;
-                                       /* Does the base exist? */
-               if (stat(base, &st) < 0)
-                       continue;
-                                       /* Is the file type ok */
-               if (!filetypematch(cp->types, st.st_mode))
-                       continue;
-               break;                  /* "We have a winner!" */
-       }
-
-       /* If we got through the list, no conversion */
-       if (cp == NULL)
-               goto cleanup_do_conv;
-
-       /* Split up command into an argv */
-       if ((sl = sl_init()) == NULL)
-               goto cleanup_do_conv;
-       cmd = xstrdup(cp->command);
-       p = cmd;
-       while (p) {
-               NEXTWORD(p, lp);
-               if (strcmp(lp, "%s") == 0)
-                       lp = base;
-               if (sl_add(sl, xstrdup(lp)) == -1)
-                       goto cleanup_do_conv;
-       }
-
-       if (sl_add(sl, NULL) == -1)
-               goto cleanup_do_conv;
-       argv = sl->sl_str;
-       free(cmd);
-       free(sl);
-       return(argv);
-
- cleanup_do_conv:
-       if (sl)
-               sl_free(sl, 1);
-       free(cmd);
-       errno = o_errno;
-       return(NULL);
-}
-
-/*
- * Convert the string `arg' to a long long, which may have an optional SI suffix
- * (`b', `k', `m', `g', `t'). Returns the number for success, -1 otherwise.
- */
-LLT
-strsuftoll(const char *arg)
-{
-       char *cp;
-       LLT val;
-
-       if (!isdigit((unsigned char)arg[0]))
-               return (-1);
-
-       val = STRTOLL(arg, &cp, 10);
-       if (cp != NULL) {
-               if (cp[0] != '\0' && cp[1] != '\0')
-                        return (-1);
-               switch (tolower((unsigned char)cp[0])) {
-               case '\0':
-               case 'b':
-                       break;
-               case 'k':
-                       val <<= 10;
-                       break;
-               case 'm':
-                       val <<= 20;
-                       break;
-               case 'g':
-                       val <<= 30;
-                       break;
-#ifndef NO_LONG_LONG
-               case 't':
-                       val <<= 40;
-                       break;
-#endif
-               default:
-                       return (-1);
-               }
-       }
-       if (val < 0)
-               return (-1);
-
-       return (val);
-}
-
-/*
- * Count the number of current connections, reading from
- *     /var/run/ftpd.pids-<class>
- * Does a kill -0 on each pid in that file, and only counts
- * processes that exist (or frees the slot if it doesn't).
- * Adds getpid() to the first free slot. Truncates the file
- * if possible.
- */ 
-void
-count_users(void)
-{
-       char    fn[MAXPATHLEN];
-       int     fd, i, last;
-       size_t  count;
-       pid_t  *pids, mypid;
-       struct stat sb;
-
-       (void)strlcpy(fn, _PATH_CLASSPIDS, sizeof(fn));
-       (void)strlcat(fn, curclass.classname, sizeof(fn));
-       pids = NULL;
-       connections = 1;
-
-       if ((fd = open(fn, O_RDWR | O_CREAT, 0600)) == -1)
-               return;
-#if HAVE_LOCKF
-       if (lockf(fd, F_TLOCK, 0) == -1)
-               goto cleanup_count;
-#elif HAVE_FLOCK
-       if (flock(fd, LOCK_EX | LOCK_NB) != 0)
-               goto cleanup_count;
-#else
-    /* XXX: use fcntl ? */
-#endif
-       if (fstat(fd, &sb) == -1)
-               goto cleanup_count;
-       if ((pids = malloc(sb.st_size + sizeof(pid_t))) == NULL)
-               goto cleanup_count;
-       count = read(fd, pids, sb.st_size);
-       if (count < 0 || count != sb.st_size)
-               goto cleanup_count;
-       count /= sizeof(pid_t);
-       mypid = getpid();
-       last = 0;
-       for (i = 0; i < count; i++) {
-               if (pids[i] == 0)
-                       continue;
-               if (kill(pids[i], 0) == -1 && errno != EPERM) {
-                       if (mypid != 0) {
-                               pids[i] = mypid;
-                               mypid = 0;
-                               last = i;
-                       }
-               } else {
-                       connections++;
-                       last = i;
-               }
-       }
-       if (mypid != 0) {
-               if (pids[last] != 0)
-                       last++;
-               pids[last] = mypid;
-       }
-       count = (last + 1) * sizeof(pid_t);
-       if (lseek(fd, 0, SEEK_SET) == -1)
-               goto cleanup_count;
-       if (write(fd, pids, count) == -1)
-               goto cleanup_count;
-       (void)ftruncate(fd, count);
-
- cleanup_count:
-#if HAVE_LOCKF
-       if (lseek(fd, 0, SEEK_SET) != -1)
-               (void)lockf(fd, F_ULOCK, 0);
-#elif HAVE_FLOCK
-       (void)flock(fd, LOCK_UN);
-#else
-    /* XXX: use fcntl ? */
-#endif
-       close(fd);
-       REASSIGN(pids, NULL);
-}
diff --git a/contrib/lukemftpd/src/extern.h b/contrib/lukemftpd/src/extern.h
deleted file mode 100644 (file)
index 3ddb6bf..0000000
+++ /dev/null
@@ -1,374 +0,0 @@
-/*     $NetBSD: extern.h,v 1.43 2001/12/04 13:54:12 lukem Exp $        */
-
-/*-
- * Copyright (c) 1992, 1993
- *     The Regents of the University of California.  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.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
- *
- *     @(#)extern.h    8.2 (Berkeley) 4/4/94
- */
-
-/*-
- * Copyright (c) 1997-2001 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Luke Mewburn.
- *
- * 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.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *        This product includes software developed by the NetBSD
- *        Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- *    contributors may be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
- */
-
-/*
- * Copyright (C) 1997 and 1998 WIDE Project.
- * 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.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT 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 PROJECT 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.
- */
-
-#ifdef NO_LONG_LONG
-# define LLF           "%ld"
-# define LLFP(x)       "%" x "ld"
-# define LLT           long
-# define ULLF          "%lu"
-# define ULLFP(x)      "%" x "lu"
-# define ULLT          unsigned long
-# define STRTOLL(x,y,z)        strtol(x,y,z)
-#else
-#if HAVE_PRINTF_QD
-# define LLF           "%qd"
-# define LLFP(x)       "%" x "qd"
-# define LLT           long long
-# define ULLF          "%qu"
-# define ULLFP(x)      "%" x "qu"
-# define ULLT          unsigned long long
-# define STRTOLL(x,y,z)        strtoll(x,y,z)
-#else
-# define LLF           "%lld"
-# define LLFP(x)       "%" x "lld"
-# define LLT           long long
-# define ULLF          "%llu"
-# define ULLFP(x)      "%" x "llu"
-# define ULLT          unsigned long long
-# define STRTOLL(x,y,z)        strtoll(x,y,z)
-#endif
-#endif
-
-#define FTP_BUFLEN     512
-
-void   abor(void);
-void   blkfree(char **);
-void   closedataconn(FILE *);
-char   *conffilename(const char *);
-char  **copyblk(char **);
-void   count_users(void);
-void   cprintf(FILE *, const char *, ...)
-           ;
-void   cwd(const char *);
-FILE   *dataconn(const char *, off_t, const char *);
-void   delete(const char *);
-int    display_file(const char *, int);
-char  **do_conversion(const char *);
-void   dologout(int);
-void   fatal(const char *);
-void   feat(void);
-void   format_path(char *, const char *);
-int    ftpd_pclose(FILE *);
-FILE   *ftpd_popen(char *[], const char *, int);
-char   *getline(char *, int, FILE *);
-void   init_curclass(void);
-void   logxfer(const char *, off_t, const char *, const char *,
-           const struct timeval *, const char *);
-#if 0
-void   logwtmp(const char *, const char *, const char *);
-#endif
-struct tab *lookup(struct tab *, const char *);
-void   makedir(const char *);
-void   mlsd(const char *);
-void   mlst(const char *);
-void   opts(const char *);
-void   parse_conf(const char *);
-void   pass(const char *);
-void   passive(void);
-int    lpsvproto2af(int);
-int    af2lpsvproto(int);
-int    epsvproto2af(int);
-int    af2epsvproto(int);
-void   long_passive(char *, int);
-int    extended_port(const char *);
-void   epsv_protounsupp(const char *);
-void   perror_reply(int, const char *);
-void   pwd(void);
-void   removedir(const char *);
-void   renamecmd(const char *, const char *);
-char   *renamefrom(const char *);
-void   reply(int, const char *, ...)
-           ;
-void   retrieve(char *[], const char *);
-void   send_file_list(const char *);
-void   show_chdir_messages(int);
-void   sizecmd(const char *);
-void   statcmd(void);
-void   statfilecmd(const char *);
-void   statxfer(void);
-void   store(const char *, const char *, int);
-LLT    strsuftoll(const char *);
-void   user(const char *);
-char   *xstrdup(const char *);
-void   yyerror(char *);
-
-#include <netinet/in.h>
-
-#if defined(__NetBSD__)
-# define HAVE_SETPROCTITLE     1
-# define HAVE_SOCKADDR_SA_LEN  1
-#endif
-
-struct sockinet {
-       union sockunion {
-               struct sockaddr_in  su_sin;
-#ifdef INET6
-               struct sockaddr_in6 su_sin6;
-#endif
-       } si_su;
-#if !HAVE_SOCKADDR_SA_LEN
-       int     si_len;
-#endif
-};
-
-#if !HAVE_SOCKADDR_SA_LEN
-# define su_len                si_len
-#else
-# define su_len                si_su.su_sin.sin_len
-#endif
-#define su_addr                si_su.su_sin.sin_addr
-#define su_family      si_su.su_sin.sin_family
-#define su_port                si_su.su_sin.sin_port
-#ifdef INET6
-# define su_6addr      si_su.su_sin6.sin6_addr
-# define su_scope_id   si_su.su_sin6.sin6_scope_id
-#endif
-
-struct tab {
-       char    *name;
-       short    token;
-       short    state;
-       short    flags; /* 1 if command implemented, 2 if has options,
-                          4 if can occur OOB */
-       char    *help;
-       char    *options;
-};
-
-struct ftpconv {
-       struct ftpconv  *next;
-       char            *suffix;        /* Suffix of requested name */
-       char            *types;         /* Valid file types */
-       char            *disable;       /* File to disable conversions */
-       char            *command;       /* Command to do the conversion */
-};
-
-typedef enum {
-       CLASS_GUEST,
-       CLASS_CHROOT,
-       CLASS_REAL
-} class_ft;
-
-typedef enum {
-       FLAG_checkportcmd =     1<<0,   /* Check port commands */
-       FLAG_denyquick =        1<<1,   /* Check ftpusers(5) before PASS */
-       FLAG_modify =           1<<2,   /* Allow CHMOD, DELE, MKD, RMD, RNFR,
-                                          UMASK */
-       FLAG_passive =          1<<3,   /* Allow PASV mode */
-       FLAG_private =          1<<4,   /* Don't publish class info in STAT */
-       FLAG_sanenames =        1<<5,   /* Restrict names of uploaded files */ 
-       FLAG_upload =           1<<6,   /* As per modify, but also allow
-                                          APPE, STOR, STOU */
-} classflag_t;
-
-#define CURCLASS_FLAGS_SET(x)  (curclass.flags |=  (FLAG_ ## x))
-#define CURCLASS_FLAGS_CLR(x)  (curclass.flags &= ~(FLAG_ ## x))
-#define CURCLASS_FLAGS_ISSET(x)        (curclass.flags &   (FLAG_ ## x))
-
-struct ftpclass {
-       struct sockinet  advertise;     /* PASV address to advertise as */
-       char            *chroot;        /* Directory to chroot(2) to at login */
-       char            *classname;     /* Current class */
-       struct ftpconv  *conversions;   /* List of conversions */
-       char            *display;       /* File to display upon chdir */
-       char            *homedir;       /* Directory to chdir(2) to at login */
-       classflag_t      flags;         /* Flags; see classflag_t above */
-       int              limit;         /* Max connections (-1 = unlimited) */
-       char            *limitfile;     /* File to display if limit reached */
-       LLT              maxfilesize;   /* Maximum file size of uploads */
-       LLT              maxrateget;    /* Maximum get transfer rate throttle */
-       LLT              maxrateput;    /* Maximum put transfer rate throttle */
-       unsigned int     maxtimeout;    /* Maximum permitted timeout */
-       char            *motd;          /* MotD file to display after login */
-       char            *notify;        /* Files to notify about upon chdir */
-       int              portmin;       /* Minumum port for passive mode */
-       int              portmax;       /* Maximum port for passive mode */
-       LLT              rateget;       /* Get (RETR) transfer rate throttle */
-       LLT              rateput;       /* Put (STOR) transfer rate throttle */
-       unsigned int     timeout;       /* Default timeout */
-       class_ft         type;          /* Class type */
-       mode_t           umask;         /* Umask to use */
-};
-
-extern void            ftp_loop(void);
-extern void            ftp_handle_line(char *);
-
-#ifndef        GLOBAL
-#define        GLOBAL  extern
-#endif
-
-
-GLOBAL struct sockinet ctrl_addr;
-GLOBAL struct sockinet data_dest;
-GLOBAL struct sockinet data_source;
-GLOBAL struct sockinet his_addr;
-GLOBAL struct sockinet pasv_addr;
-GLOBAL int             connections;
-GLOBAL struct ftpclass curclass;
-GLOBAL int             debug;
-GLOBAL jmp_buf         errcatch;
-GLOBAL char            *emailaddr;
-GLOBAL int             form;
-GLOBAL int             gidcount;       /* number of entries in gidlist[] */
-GLOBAL gid_t           gidlist[NGROUPS_MAX];
-GLOBAL int             hasyyerrored;
-GLOBAL char            hostname[MAXHOSTNAMELEN+1];
-GLOBAL char            homedir[MAXPATHLEN];
-#ifdef KERBEROS5
-GLOBAL krb5_context    kcontext;
-#endif
-GLOBAL int             logged_in;
-GLOBAL int             logging;
-GLOBAL int             pdata;                  /* for passive mode */
-#if HAVE_SETPROCTITLE
-GLOBAL char            proctitle[BUFSIZ];      /* initial part of title */
-#endif
-GLOBAL struct passwd  *pw;
-GLOBAL int             quietmessages;
-GLOBAL char            remotehost[MAXHOSTNAMELEN+1];
-GLOBAL off_t           restart_point;
-GLOBAL char            tmpline[FTP_BUFLEN];
-GLOBAL sig_atomic_t    transflag;
-GLOBAL int             type;
-GLOBAL int             usedefault;             /* for data transfers */
-GLOBAL const char     *version;
-GLOBAL int             is_oob;
-
-                                               /* total file data bytes */
-GLOBAL off_t           total_data_in,  total_data_out,  total_data;
-                                               /* total number of data files */
-GLOBAL off_t           total_files_in, total_files_out, total_files;
-                                               /* total bytes */
-GLOBAL off_t           total_bytes_in, total_bytes_out, total_bytes;
-                                               /* total number of xfers */
-GLOBAL off_t           total_xfers_in, total_xfers_out, total_xfers;
-
-extern struct tab      cmdtab[];
-
-#define        INTERNAL_LS     "/bin/ls"
-
-
-#define CMD_IMPLEMENTED(x)     ((x)->flags != 0)
-#define CMD_HAS_OPTIONS(x)     ((x)->flags & 0x2)
-#define CMD_OOB(x)             ((x)->flags & 0x4)
-
-#define        CPUTC(c, f)     do { \
-                               putc(c, f); total_bytes++; total_bytes_out++; \
-                       } while (0);
-
-#define CURCLASSTYPE   curclass.type == CLASS_GUEST  ? "GUEST"  : \
-                       curclass.type == CLASS_CHROOT ? "CHROOT" : \
-                       curclass.type == CLASS_REAL   ? "REAL"   : \
-                       "<unknown>"
-
-#define ISDOTDIR(x)    (x[0] == '.' && x[1] == '\0')
-#define ISDOTDOTDIR(x) (x[0] == '.' && x[1] == '.' && x[2] == '\0')
-
-#define EMPTYSTR(p)    ((p) == NULL || *(p) == '\0')
-#define NEXTWORD(P, W) do { \
-                               (W) = strsep(&(P), " \t"); \
-                       } while ((W) != NULL && *(W) == '\0')
-#define PLURAL(s)      ((s) == 1 ? "" : "s")
-#define REASSIGN(X,Y)  do { if (X) free(X); (X)=(Y); } while (/*CONSTCOND*/0)
-
-#ifndef IPPORT_ANONMAX
-# define IPPORT_ANONMAX        65535
-#endif
diff --git a/contrib/lukemftpd/src/ftpcmd.y b/contrib/lukemftpd/src/ftpcmd.y
deleted file mode 100644 (file)
index 68a598b..0000000
+++ /dev/null
@@ -1,1808 +0,0 @@
-/*     $NetBSD: ftpcmd.y,v 1.66 2001/12/01 10:25:30 lukem Exp $        */
-
-/*-
- * Copyright (c) 1997-2001 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Luke Mewburn.
- *
- * 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.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *        This product includes software developed by the NetBSD
- *        Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- *    contributors may be used to endorse or promote products derived
- *    from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
- */
-
-/*
- * Copyright (c) 1985, 1988, 1993, 1994
- *     The Regents of the University of California.  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.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
- *
- *     @(#)ftpcmd.y    8.3 (Berkeley) 4/6/94
- */
-
-/*
- * Grammar for FTP commands.
- * See RFC 959.
- */
-
-%{
-#include "lukemftpd.h"
-
-#include "extern.h"
-#include "version.h"
-
-static int cmd_type;
-static int cmd_form;
-static int cmd_bytesz;
-
-char   cbuf[FTP_BUFLEN];
-char   *cmdp;
-char   *fromname;
-
-%}
-
-%union {
-       int     i;
-       char   *s;
-}
-
-%token
-       A       B       C       E       F       I
-       L       N       P       R       S       T
-
-       SP      CRLF    COMMA
-
-       USER    PASS    ACCT    CWD     CDUP    SMNT
-       QUIT    REIN    PORT    PASV    TYPE    STRU
-       MODE    RETR    STOR    STOU    APPE    ALLO
-       REST    RNFR    RNTO    ABOR    DELE    RMD
-       MKD     PWD     LIST    NLST    SITE    SYST
-       STAT    HELP    NOOP
-
-       AUTH    ADAT    PROT    PBSZ    CCC     MIC
-       CONF    ENC
-
-       FEAT    OPTS
-
-       SIZE    MDTM    MLST    MLSD
-
-       LPRT    LPSV    EPRT    EPSV
-
-       MAIL    MLFL    MRCP    MRSQ    MSAM    MSND
-       MSOM
-
-       CHMOD   IDLE    RATEGET RATEPUT UMASK
-
-       LEXERR
-
-%token <s> STRING
-%token <s> ALL
-%token <i> NUMBER
-
-%type  <i> check_login octal_number byte_size
-%type  <i> struct_code mode_code type_code form_code decimal_integer
-%type  <s> pathstring pathname password username
-%type  <s> mechanism_name base64data prot_code
-
-%start cmd_sel
-
-%%
-
-cmd_sel
-       : cmd
-               {
-                       fromname = NULL;
-                       restart_point = (off_t) 0;
-               }
-
-       | rcmd
-
-       ;
-
-cmd
-                                               /* RFC 959 */
-       : USER SP username CRLF
-               {
-                       user($3);
-                       free($3);
-               }
-
-       | PASS SP password CRLF
-               {
-                       pass($3);
-                       memset($3, 0, strlen($3));
-                       free($3);
-               }
-
-       | CWD check_login CRLF
-               {
-                       if ($2)
-                               cwd(homedir);
-               }
-
-       | CWD check_login SP pathname CRLF
-               {
-                       if ($2 && $4 != NULL)
-                               cwd($4);
-                       if ($4 != NULL)
-                               free($4);
-               }
-
-       | CDUP check_login CRLF
-               {
-                       if ($2)
-                               cwd("..");
-               }
-
-       | QUIT CRLF
-               {
-                       if (logged_in) {
-                               reply(-221, "%s", "");
-                               reply(0,
- "Data traffic for this session was " LLF " byte%s in " LLF " file%s.",
-                                   (LLT)total_data, PLURAL(total_data),
-                                   (LLT)total_files, PLURAL(total_files));
-                               reply(0,
- "Total traffic for this session was " LLF " byte%s in " LLF " transfer%s.",
-                                   (LLT)total_bytes, PLURAL(total_bytes),
-                                   (LLT)total_xfers, PLURAL(total_xfers));
-                       }
-                       reply(221,
-                           "Thank you for using the FTP service on %s.",
-                           hostname);
-                       if (logged_in && logging) {
-                               syslog(LOG_INFO,
-               "Data traffic: " LLF " byte%s in " LLF " file%s",
-                                   (LLT)total_data, PLURAL(total_data),
-                                   (LLT)total_files, PLURAL(total_files));
-                               syslog(LOG_INFO,
-               "Total traffic: " LLF " byte%s in " LLF " transfer%s",
-                                   (LLT)total_bytes, PLURAL(total_bytes),
-                                   (LLT)total_xfers, PLURAL(total_xfers));
-                       }
-
-                       dologout(0);
-               }
-
-       | PORT check_login SP host_port CRLF
-               {
-                       if ($2)
-                               port_check("PORT", AF_INET);
-               }
-
-       | LPRT check_login SP host_long_port4 CRLF
-               {
-                       if ($2)
-                               port_check("LPRT", AF_INET);
-               }
-
-       | LPRT check_login SP host_long_port6 CRLF
-               {
-#ifdef INET6
-                       if ($2)
-                               port_check("LPRT", AF_INET6);
-#else
-                       reply(500, "IPv6 support not available.");
-#endif
-               }
-
-       | EPRT check_login SP STRING CRLF
-               {
-                       if ($2) {
-                               if (extended_port($4) == 0)
-                                       port_check("EPRT", -1);
-                       }
-                       free($4);
-               }
-
-       | PASV check_login CRLF
-               {
-                       if ($2) {
-                               if (CURCLASS_FLAGS_ISSET(passive))
-                                       passive();
-                               else
-                                       reply(500, "PASV mode not available.");
-                       }
-               }
-
-       | LPSV check_login CRLF
-               {
-                       if ($2) {
-                               if (epsvall)
-                                       reply(501,
-                                           "LPSV disallowed after EPSV ALL");
-                               else
-                                       long_passive("LPSV", PF_UNSPEC);
-                       }
-               }
-
-       | EPSV check_login SP NUMBER CRLF
-               {
-                       if ($2)
-                               long_passive("EPSV", epsvproto2af($4));
-               }
-
-       | EPSV check_login SP ALL CRLF
-               {
-                       if ($2) {
-                               reply(200, "EPSV ALL command successful.");
-                               epsvall++;
-                       }
-               }
-
-       | EPSV check_login CRLF
-               {
-                       if ($2)
-                               long_passive("EPSV", PF_UNSPEC);
-               }
-
-       | TYPE check_login SP type_code CRLF
-               {
-                       if ($2) {
-
-                       switch (cmd_type) {
-
-                       case TYPE_A:
-                               if (cmd_form == FORM_N) {
-                                       reply(200, "Type set to A.");
-                                       type = cmd_type;
-                                       form = cmd_form;
-                               } else
-                                       reply(504, "Form must be N.");
-                               break;
-
-                       case TYPE_E:
-                               reply(504, "Type E not implemented.");
-                               break;
-
-                       case TYPE_I:
-                               reply(200, "Type set to I.");
-                               type = cmd_type;
-                               break;
-
-                       case TYPE_L:
-#if NBBY == 8
-                               if (cmd_bytesz == 8) {
-                                       reply(200,
-                                           "Type set to L (byte size 8).");
-                                       type = cmd_type;
-                               } else
-                                       reply(504, "Byte size must be 8.");
-#else /* NBBY == 8 */
-                               UNIMPLEMENTED for NBBY != 8
-#endif /* NBBY == 8 */
-                       }
-                       
-                       }
-               }
-
-       | STRU check_login SP struct_code CRLF
-               {
-                       if ($2) {
-                               switch ($4) {
-
-                               case STRU_F:
-                                       reply(200, "STRU F ok.");
-                                       break;
-
-                               default:
-                                       reply(504, "Unimplemented STRU type.");
-                               }
-                       }
-               }
-
-       | MODE check_login SP mode_code CRLF
-               {
-                       if ($2) {
-                               switch ($4) {
-
-                               case MODE_S:
-                                       reply(200, "MODE S ok.");
-                                       break;
-
-                               default:
-                                       reply(502, "Unimplemented MODE type.");
-                               }
-                       }
-               }
-
-       | RETR check_login SP pathname CRLF
-               {
-                       if ($2 && $4 != NULL)
-                               retrieve(NULL, $4);
-                       if ($4 != NULL)
-                               free($4);
-               }
-
-       | STOR SP pathname CRLF
-               {
-                       if (check_write($3, 1))
-                               store($3, "w", 0);
-                       if ($3 != NULL)
-                               free($3);
-               }
-
-       | STOU SP pathname CRLF
-               {
-                       if (check_write($3, 1))
-                               store($3, "w", 1);
-                       if ($3 != NULL)
-                               free($3);
-               }
-               
-       | APPE SP pathname CRLF
-               {
-                       if (check_write($3, 1))
-                               store($3, "a", 0);
-                       if ($3 != NULL)
-                               free($3);
-               }
-
-       | ALLO check_login SP NUMBER CRLF
-               {
-                       if ($2)
-                               reply(202, "ALLO command ignored.");
-               }
-
-       | ALLO check_login SP NUMBER SP R SP NUMBER CRLF
-               {
-                       if ($2)
-                               reply(202, "ALLO command ignored.");
-               }
-
-       | RNTO SP pathname CRLF
-               {
-                       if (check_write($3, 0)) {
-                               if (fromname) {
-                                       renamecmd(fromname, $3);
-                                       free(fromname);
-                                       fromname = NULL;
-                               } else {
-                                       reply(503, "Bad sequence of commands.");
-                               }
-                       }
-                       if ($3 != NULL)
-                               free($3);
-               }
-
-       | ABOR check_login CRLF
-               {
-                       if (is_oob)
-                               abor();
-                       else if ($2)
-                               reply(225, "ABOR command successful.");
-               }
-
-       | DELE SP pathname CRLF
-               {
-                       if (check_write($3, 0))
-                               delete($3);
-                       if ($3 != NULL)
-                               free($3);
-               }
-
-       | RMD SP pathname CRLF
-               {
-                       if (check_write($3, 0))
-                               removedir($3);
-                       if ($3 != NULL)
-                               free($3);
-               }
-
-       | MKD SP pathname CRLF
-               {
-                       if (check_write($3, 0))
-                               makedir($3);
-                       if ($3 != NULL)
-                               free($3);
-               }
-
-       | PWD check_login CRLF
-               {
-                       if ($2)
-                               pwd();
-               }
-
-       | LIST check_login CRLF
-               {
-                       char *argv[] = { INTERNAL_LS, "-lgA", NULL };
-                       
-                       if ($2)
-                               retrieve(argv, "");
-               }
-
-       | LIST check_login SP pathname CRLF
-               {
-                       char *argv[] = { INTERNAL_LS, "-lgA", NULL, NULL };
-
-                       if ($2 && $4 != NULL) {
-                               argv[2] = $4;
-                               retrieve(argv, $4);
-                       }
-                       if ($4 != NULL)
-                               free($4);
-               }
-
-       | NLST check_login CRLF
-               {
-                       if ($2)
-                               send_file_list(".");
-               }
-
-       | NLST check_login SP pathname CRLF
-               {
-                       if ($2)
-                               send_file_list($4);
-                       free($4);
-               }
-
-       | SITE SP HELP CRLF
-               {
-                       help(sitetab, NULL);
-               }
-
-       | SITE SP CHMOD SP octal_number SP pathname CRLF
-               {
-                       if (check_write($7, 0)) {
-                               if ($5 > 0777)
-                                       reply(501,
-                               "CHMOD: Mode value must be between 0 and 0777");
-                               else if (chmod($7, $5) < 0)
-                                       perror_reply(550, $7);
-                               else
-                                       reply(200, "CHMOD command successful.");
-                       }
-                       if ($7 != NULL)
-                               free($7);
-               }
-
-       | SITE SP HELP SP STRING CRLF
-               {
-                       help(sitetab, $5);
-                       free($5);
-               }
-
-       | SITE SP IDLE check_login CRLF
-               {
-                       if ($4) {
-                               reply(200,
-                           "Current IDLE time limit is %d seconds; max %d",
-                                   curclass.timeout, curclass.maxtimeout);
-                       }
-               }
-
-       | SITE SP IDLE check_login SP NUMBER CRLF
-               {
-                       if ($4) {
-                               if ($6 < 30 || $6 > curclass.maxtimeout) {
-                                       reply(501,
-                           "IDLE time limit must be between 30 and %d seconds",
-                                           curclass.maxtimeout);
-                               } else {
-                                       curclass.timeout = $6;
-                                       (void) alarm(curclass.timeout);
-                                       reply(200,
-                                           "IDLE time limit set to %d seconds",
-                                           curclass.timeout);
-                               }
-                       }
-               }
-
-       | SITE SP RATEGET check_login CRLF
-               {
-                       if ($4) {
-                               reply(200,
-                                   "Current RATEGET is " LLF " bytes/sec",
-                                   (LLT)curclass.rateget);
-                       }
-               }
-
-       | SITE SP RATEGET check_login SP STRING CRLF
-               {
-                       char *p = $6;
-                       LLT rate;
-
-                       if ($4) {
-                               rate = strsuftoll(p);
-                               if (rate == -1)
-                                       reply(501, "Invalid RATEGET %s", p);
-                               else if (curclass.maxrateget &&
-                                   rate > curclass.maxrateget)
-                                       reply(501,
-                       "RATEGET " LLF " is larger than maximum RATEGET " LLF,
-                                           (LLT)rate,
-                                           (LLT)curclass.maxrateget);
-                               else {
-                                       curclass.rateget = rate;
-                                       reply(200,
-                                           "RATEGET set to " LLF " bytes/sec",
-                                           (LLT)curclass.rateget);
-                               }
-                       }
-                       free($6);
-               }
-
-       | SITE SP RATEPUT check_login CRLF
-               {
-                       if ($4) {
-                               reply(200,
-                                   "Current RATEPUT is " LLF " bytes/sec",
-                                   (LLT)curclass.rateput);
-                       }
-               }
-
-       | SITE SP RATEPUT check_login SP STRING CRLF
-               {
-                       char *p = $6;
-                       LLT rate;
-
-                       if ($4) {
-                               rate = strsuftoll(p);
-                               if (rate == -1)
-                                       reply(501, "Invalid RATEPUT %s", p);
-                               else if (curclass.maxrateput &&
-                                   rate > curclass.maxrateput)
-                                       reply(501,
-                       "RATEPUT " LLF " is larger than maximum RATEPUT " LLF,
-                                           (LLT)rate,
-                                           (LLT)curclass.maxrateput);
-                               else {
-                                       curclass.rateput = rate;
-                                       reply(200,
-                                           "RATEPUT set to " LLF " bytes/sec",
-                                           (LLT)curclass.rateput);
-                               }
-                       }
-                       free($6);
-               }
-
-       | SITE SP UMASK check_login CRLF
-               {
-                       int oldmask;
-
-                       if ($4) {
-                               oldmask = umask(0);
-                               (void) umask(oldmask);
-                               reply(200, "Current UMASK is %03o", oldmask);
-                       }
-               }
-
-       | SITE SP UMASK check_login SP octal_number CRLF
-               {
-                       int oldmask;
-
-                       if ($4 && CURCLASS_FLAGS_ISSET(modify)) {
-                               if (($6 == -1) || ($6 > 0777)) {
-                                       reply(501, "Bad UMASK value");
-                               } else {
-                                       oldmask = umask($6);
-                                       reply(200,
-                                           "UMASK set to %03o (was %03o)",
-                                           $6, oldmask);
-                               }
-                       }
-               }
-
-       | SYST CRLF
-               {
-                       if (EMPTYSTR(version))
-                               reply(215, "UNIX Type: L%d", NBBY);
-                       else
-                               reply(215, "UNIX Type: L%d Version: %s", NBBY,
-                                   version);
-               }
-
-       | STAT check_login SP pathname CRLF
-               {
-                       if ($2 && $4 != NULL)
-                               statfilecmd($4);
-                       if ($4 != NULL)
-                               free($4);
-               }
-               
-       | STAT CRLF
-               {
-                       if (is_oob)
-                               statxfer();
-                       else
-                               statcmd();
-               }
-
-       | HELP CRLF
-               {
-                       help(cmdtab, NULL);
-               }
-
-       | HELP SP STRING CRLF
-               {
-                       char *cp = $3;
-
-                       if (strncasecmp(cp, "SITE", 4) == 0) {
-                               cp = $3 + 4;
-                               if (*cp == ' ')
-                                       cp++;
-                               if (*cp)
-                                       help(sitetab, cp);
-                               else
-                                       help(sitetab, NULL);
-                       } else
-                               help(cmdtab, $3);
-                       free($3);
-               }
-
-       | NOOP CRLF
-               {
-                       reply(200, "NOOP command successful.");
-               }
-
-                                               /* RFC 2228 */
-       | AUTH SP mechanism_name CRLF
-               {
-                       reply(502, "RFC 2228 authentication not implemented.");
-                       free($3);
-               }
-
-       | ADAT SP base64data CRLF
-               {
-                       reply(503,
-                           "Please set authentication state with AUTH.");
-                       free($3);
-               }
-
-       | PROT SP prot_code CRLF
-               {
-                       reply(503,
-                           "Please set protection buffer size with PBSZ.");
-            &nbs