Wed Oct 11 14:06:19 EST 2000	lukem

	* released version 1.5

Tue Oct  3 10:22:36 EST 2000	lukem

	* crank to version 1.5 beta6

	* merge ftp from NetBSD-current (20001003)
		- explicitly use SOCK_STREAM with socket() instead of
		  res->ai_socktype, because it appears that linux with glibc
		  doesn't set the latter correctly after one of getaddrinfo()
		  or getnameinfo().
		- clarify that $ftp_proxy only works for full URLs and can't
		  be used for interactive connections.

Mon Sep 25 21:52:12 EST 2000	lukem

	* crank to version 1.5 beta5
	
Sun Sep 24 13:31:19 EST 2000	lukem

	* merge ftp from NetBSD-current (20000924)
		- since everything else here uses ANSI C, we might as well
		  replace __STRING() with the ANSI C stringization stuff...
		- base64_encode should be static. picked up by hp/ux(!)
		  compiler
		- It appears that whilst Apache 1.3.9 incorrectly puts a
		  trailing space after the chunksize (before the \r\n),
		  Apache 1.3.11 puts *multiple* trailing spaces after the
		  chunksize. I 'm fairly certain that this is contrary to
		  RFC 2068 section 3.6, but whatever...
		  Found by David Brownlee <abs@mono.org>
		- always include <netdb.h>, not just when INET6 is defined.
		  resolves PR [bin/10970] by Richard Earnshaw
		  <rearnsha@cambridge.arm.com>>
		- in progressmeter() perform the check for foregroundproc() a
		  little earlier
		- removed unused variable `items' in list_vertical()
	
Sat Sep 23 15:43:34 EST 2000	lukem

	* remove unused sverrno in warnx() and errx()

	* remove unused h_error in getnameinfo()

	* in getaddrinfo(), don't bother declaring in6_addrany[] and
	  in6_loopback #ifndef INET6

Thu Sep 21 11:26:35 EST 2000	lukem

	* in getaddrinfo.c::str_isnumber(), use strtol() and check the
	  result, instead of using strtoul() and not checking the result.

	* define INADDRSZ if it's not found (e.g, HP/UX doesn't seem to have
	  it in <arpa/nameser.h>)

Wed Sep 20 09:23:59 EST 2000	lukem

	* crank to version 1.5 beta4

Mon Sep 18 18:19:54 EST 2000	lukem

	* add AC_AIX test, which defines _ALL_SOURCE under AIX

	* use ANSI # stringization instead of __STRING()

	* define HAVE_RFC2553_NETDB if <netdb.h> defines AI_NUMERICHOST
	  (et al) and has getaddrinfo(). (some systems only implement RFC2133)

	* don't bother with AC_C_CONST as we depend upon ANSI C elsewhere

	* when HAVE_RFC2553_NETDB isn't set, and we're #defining various EAI_,
	  AI_, and NI_ items, #undef first incase a system partially implements
	  these in <netdb.h>

	* look for tgetent() in -ltinfo before -lncurses, because ncurses 5.0
	  has been split up into multiple libraries.
	  from Arkadiusz Miskiewicz <misiek@pld.org.pl>

Fri Sep 15 01:09:10 EST 2000	lukem

	* don't bother defining __P() or __STRING() based on whether
	  __STDC__ is available or not, since these aren't used any more

	* fix mkstemp() prototype

	* declare getpass() if necessary

	* we don't need the readline xxgdb hack in libedit...

	* convert to ansi declarations

	* use ansi prototypes instead of __P()

	* merge in changes from makelist 1.4 -> 1.6:
		- generate ansi prototypes instead of using __P().  noted by
		  christos
		- fix a couple of comments
		- add -m option to makelist, which generates an mdoc table
		  with the key bindings and their descriptions
		- manually add the output of 'sh ./makelist -m vi.c ed.c
		  common.c' to a new section in editrc(5) called
		  `EDITOR COMMANDS'

	* merge libedit from NetBSD-current (20000915)
		* convert to new style guide, which includes:
			- ansi prototypes & features (such as stdargs)
			- 8 space indents
		* history_def_set has a `const int' as a third arg, not an
		  `int'.  picked up by the ultrix compiler, reported by
		  simonb@ ...
		* generate ansi prototypes instead of using __P().  noted by
		  christos.  fix a couple of comments
		* make xxgdb and a gdb linked with libedit's readline emulation
		  work properly together.   xxgdb communicates with a gdb
		  running on a pty that it sets to -echo,-onlcr prior to
		  forking the gdb process.  GNU readline preserves the -echo
		  setting while libedit was undoing it (setting the tty to a
		  sane state and totally confusing xxgdb's parser).
		  this diff simply disables libedit if both readline emulation
		  and "stty -echo" are used/set.   that is enough to make
		  xxgdb work once again, but (XXX) this is not how GNU readline
		  handles stty -echo (it does not echo anything, but editing
		  commands like ^A,^K, etc.  still work), so the readline
		  emulation isn't perfect.

Tue Aug 29 18:00:08 EST 2000	lukem

	* don't bother testing for #if __STDC__; just assume we have it...

Mon Aug 28 22:45:08 EST 2000	lukem

	* refine tests for IPv6 #defines (EAI_, AI_, NI_, ...).
	  should improve portability on systems which implement
	  RFC 2133 but not RFC 2553.

Wed Aug  9 02:12:51 EST 2000	lukem

	* use #if __STDC__ instead of #ifdef __STDC__

	* only test 'case NETDB_INTERNAL:' if it's defined

	* fix support for --program-prefix et al

	* only include <arpa/nameser.h> in the files that need it, because
	  the DELETE define in some system's implementations causes name
	  collisions in libedit.

Mon Aug  7 08:17:37 EST 2000	lukem

	* merge ftp from NetBSD-current (20000807)
		* implement parseport(), which takes a string and attempts to
		  convert it to a numeric port number
		* use parseport() in parse_url() and hookup()
		* don't try and lookup the port number using getaddrinfo(),
		  as it's too hard to separate a failed host name lookup from
		  a failed service name lookup.  this was causing lossage on
		  systems that don't have `http' in services(5) (such as
		  solaris), but only crept in when we started using
		  getaddrinfo() unconditionally.

Wed Aug  2 23:43:50 EST 2000	lukem

	* crank to version 1.5 beta3

	* define NO_LONG_LONG not NO_QUAD

	* detect if struct sockaddr.sa_len exists (rather than relying upon
	  #ifdef BSD4_4)

	* detect if socklen_t exists, and if not, typedef as unsigned int

	* detect if struct addrinfo exists, and if not declare it and #define
	  associated EAI_, AI_, and NI_ defines.

	* look for & replace: getaddrinfo(), getnameinfo(), inet_ntop(),
	  inet_pton()
	* look for gethostbyname2()

	* don't bother looking for hstrerror() or inet_aton() anymore

	* include <arpa/nameser.h> and <stddef.h>

	* define USE_SELECT instead of __USE_SELECT

	* always define HAVE_H_ERRNO

	* add Brian Stark to THANKS, for lots of AIX porting feedback

	* improve detection of sin_len for AIX (now part of sa_len test)

	* add functions needed by recent ftp import:
		getaddrinfo(), getnameinfo(), inet_ntop(), inet_pton()
	  remove functions not needed anymore:
		hstrerror(), inet_aton()

	* use #if HAVE_ISSETUGID not #ifdef

	* update from NetBSD-current (20000802):
		- rename NO_QUAD to NO_LONG_LONG, QUAD* -> LL* and add ULL*
		  (unsigned) equivalents. name change suggested by Klaus
		  Klein <kjk@netbsd.org>
		- change defined(BSD4_4) || HAVE_SIN_LEN tests into
		  HAVE_SOCKADDR_SA_LEN, and set the latter if BSD4_4 exists

Mon Jul 31 10:59:10 EST 2000	lukem

	* merge ftp from NetBSD-current (20000731)
		- we can't just rename BSD4_4 -> HAVE_SIN_LEN, since bsd
		  systems define BSD4_4; change tests to test for either
		  defined(BSD4_4) or HAVE_SIN_LEN
		- more KNF

Sun Jul 30 16:55:09 EST 2000	lukem

	* merge ftp from NetBSD-current (20000730):
		- clean up NO_QUAD support: create helper #defines and use as
		  appropriate:
			#define         NOQUAD          ! NOQUAD
			-------         ------          - ------
			QUADF           "%ld"           "%lld"
			QUADFP(x)       "%" x "ld"      "%" x "lld"
			QUADT           long            long long
			STRTOL(x,y,z)   strtol(x,y,z)   strtoll(x,y,z)
		- always use getaddrinfo() and getnameinfo() instead of
		  maintaining two code paths.
		- rename __USE_SELECT to USE_SELECT
		- rename BSD4_4 to HAVE_SIN_LEN
		- replace union sockunion {} with struct sockinet {}, and
		  modify the code accordingly. this is possibly more portable,
		  as it doesn't rely upon the structure alignment within the
		  union for our own stuff.

Fri Jul 28 22:11:17 EST 2000	lukem

	* merge ftp from NetBSD-current (20000728):
		- no trailing , on last item (FEAT_max) in enum
		- rename "opts" to "remopts", so people used to "o host"
		  don't get bitten

Wed Jul 26 18:59:19 EST 2000	lukem

	* merge ftp from NetBSD-current (20000726):
		- add support for FEAT and OPTS commands with `features' and
		  `opts'.  (from RFC 2389).
		- add support for MLST & MLSD (machine parseble listings)
		  with 'mlst', 'mlsd' and 'pmlsd' (mlsd |$PAGER) commands. 
		  (from draft-ietf-ftpext-mlst-11)
		- rename remotesyst() to getremoteinfo(), and modify to parse
		  the result from FEAT (if supported), and take into account
		  the support for the various extensions such as MDTM, SIZE,
		  REST (STREAM), MLSD, and FEAT/OPTS.
		- put each feature into one of the following categories:
			- known to work (explicit FEAT)
			- unknown but assume works until explicit failure,
			  when it's then tagged as `known not to work'.
			- known not to work (FEAT succeeded but didn't return
			  anything, or was unknown and then explicit failure)
		  assign results into features[] matrix.
		- add support to getreply() so that an optional callback will
		  be called for each line received from the server except for
		  the first and last.  this is used in FEAT (and MLST) parsing.
		- modify various commands to check if REST (STREAM), MDTM and
		  SIZE are explicitly or implicitly supported before using.
		- fix `syst' when verbose is off.
		- minor knf (indent goto labels by one space, etc).
		- simply various command usage handlers by assuming that
		  argv != NULL except for quit() and disconnect().
		- errx?/warnx? audit.  do not pass variable alone, use %s. 

	* check for issetugid() and don't use in libedit if it doesn't exist.

	* merge libedit from NetBSD-current (20000726):
		* Only look in home directory for .editrc.  (Discussed
		  with Christos.)

	* in glob.c #undef TILDE before redefining, because some AIX systems
	  #define TILDE in <sys/ioctl.h>

Mon Jul 10 00:28:51 EST 2000	lukem

	* released lukemftp 1.4

Thu Jun 15 23:28:49 EST 2000	lukem

	* merge ftp from NetBSD-current (20000615):
		* migrate the SYST parsing from setpeer() into a separate
		  remotesyst().  call remotesyst() only when login has been
		  successful some servers don't let you run SYST until you've
		  successfully logged in.
		* in fetch_ftp(), always call setpeer() with autologin
		  disabled, and use the following ftp_login() to DTRT.  this
		  prevents ftp from trying to login a second time if the
		  first autologin fails when connecting to a remote site
		  anonymously using autofetch.
		* reset unix_proxy and unix_server in cleanuppeer()
		* missed a function conversion in the KNF sweep...

Mon Jun 12 01:16:12 EST 2000	lukem

	* change lukemftp.h to check !HAVE_STRDUP instead of !HAVE_STRSUP.
	  fixes compile problem on systems which have strdup() as a macro.

	* merge ftp from NetBSD-current (20000612):
		from itojun: better fix for previous (doesn't need
		in_addr_t or u_int32_t)

Sun Jun 11 12:19:52 EST 2000	lukem

	* merge ftp from NetBSD-current (20000611):
		portability fixes for lukemftp:
		* initconn(): use in_addr_t instead of u_int32_t when
		  manipulating IPv6 addresses (and assume anything with ipv6
		  has in_addr_t; if not, i'll add an autoconf test for it)
		* ai_unmapped(): not all systems have sin_len; so only set
		  #ifdef BSD4_4
		* fix some lint

Mon Jun  5 21:10:31 EST 2000	lukem

	* released lukemftp 1.3

Mon Jun  5 19:53:49 EST 2000	lukem

	* convert various support files to ANSI C

	* look for strtoll() instead of strtoq()

	* update COPYRIGHT, THANKS, NEWS

	* merge ftp from NetBSD-current (20000605):
		- fix ai_unmapped() to be a no-op in the !def INET6 case
		- display `(-INET6)' at the end of the version string if
		  !def INET6
		- clarify in the man page that IPv6 support may not be present
		  (for lukemftp :)

	* ensure <vis.h> has VIS_WHITE et al

Sun Jun  4 18:00:07 EST 2000	lukem

	* merge ftp from NetBSD-current (20000604):
		- Change `ls' to use the `LIST' and not `NLST' FTP protocol
		  command.  Now that after many years on not caring we find
		  certain popular ftp servers are starting to obey RFC959 to
		  the letter of the law and will only return a list of
		  filenames (not directories or other filetypes) in the
		  output of `NLST', then `LIST' is more useful in this case.
		  (Note that the aforementioned pedanticness means that
		  filename completion isn't as useful as it could be...)
		  Fixes [bin/8937] by David A. Gatwood
		  <dgatwood@deepspace.mklinux.org>
		- convert to ANSI KNF
		- Add support for `fget localfile', which reads a list of
		  filenames to retrieve from localfile.  Based on work by
		  Darren Reed.
		- Update copyright dates.
		- s/strtoq/strtoll/ (the latter is standardised)
		- Add support for 'ftp -u url file ...', to upload a list of
		  files to given url.  Mostly based on [bin/10019] by Scott
		  Aaron Bamford <sab@ansic.net>
		- convert IPv4 mapped address (::ffff:10.1.1.1) into real IPv4
		  address before touching it.  IPv4 mapped address complicates
		  too many things in FTP protocol handling.
		- do not pass scoped IPv6 address notation on Host: directive,
		  since scope identifier is local to the originating node.
		  do not allow scoped IPv6 address notation in URL, if it is
		  via proxy. 
		- fixes from cgd:
		  * sanity check a length (otherwise certain bogus responses
		    can crash ftp)
		  * allow a transfer encoding type of `binary'; certain
		    firewall vendors return this bogus type... 
		- make debugging output unambiguous on IPv6 numeric addrs
		  (don't use host:port)
		- http://[::1]:8080/ is legal.
		- send Host: directive with RFC2732 bracket notation for IPv6
		  numeric, otherwise "host:port" is ambiguous to servers
		  (clarification will be submitted as update to RFC2732).
		- only use getaddrinfo() et al if both NI_NUMERICHOST *and*
		  INET6 are defined...  (allows --disable-ipv6 in lukemftp's
		  configure script to disable this as well, which is good for
		  testing when it appears getaddrinfo() is borken)
		- updated comment on IPv4 mapped address.  sync with kame.
		- Fix examples on using pipes in local filenames.  AFAICT,
		  ftp has always required `dir . |more' not as `dir |more'
		  treats `|more' as the remote filename. Resolves [bin/9922]
		  by Geoff Wing <mason@primenet.com.au>
		- ftp(1): treats IPv4 mapped destination as IPv4 peer, not
		  native IPv6 peer.  this does not support network with SIIT
		  translator.
		- inhibit too-noisy message for scoped address data transfer
		  (will be enabled in "debug" mode).
		- only use IPTOS_ setsockopt()s if they're defined (e.g, SunOS
		  doesn't).  from Havard.Eidnes@runit.sintef.no
		- allow IPv6 extended numeric address in host part.
		  (draft-ietf-ipngwg-scopedaddr-format-01.txt). fixes PR 9616.

	* merge libedit from NetBSD-current (20000604):
		- use strtol() (instead of atoi()) for sane error detection

Wed May 31 19:24:53 EST 2000	lukem

	* merge libedit from NetBSD-current (20000531):
		- Fix refresh glitches when using auto-margin.
		- Don't dump core on empty .editrc files.
		- el_insertstr takes a "const char *" not "char *" now as it
		  doesn't modify the argument.

Thu Feb  3 20:19:40 EST 2000	lukem

	* released lukemftp 1.2

Tue Feb  1 09:47:51 EST 2000	lukem

	* add --enable-ipv6 and --disable-ipv6 to configure

	* modify libedit/sig.? to use sigfunc instead of sig_t, and
	  deprecate autoconf tests for retsigtype and sig_t.
	  This fixes portability problems with Digital UNIX 5.0.

	* merge ftp from NetBSD-current (20000201):
		- define private type `sigfunc' as
			typedef void (*sigfunc) __P((int));
		  and replace use of sig_t and void (*)(int).
		  certain other OSes define sig_t differently to that (they
		  add extra arguments), and it causes problems due to
		  function mismatches, etc...

Wed Jan 26 22:54:38 EST 2000	lukem

	* search for tgetent() in -ltermcap then -lcurses and -lncurses

	* merge ftp from NetBSD-current (20000126):
		- roll back to using sscanf() instead of strptime() to parse
		  `yyyymmddhhmmss' strings, since the latter technically can't
		  parse dates without non alphanumerics between the elements
		  (even though NetBSD's strptime() copes).

Tue Jan 25 19:09:37 EST 2000	lukem

	* merge ftp from NetBSD-current (20000125):
		- complete_ambiguous(): be consistent about completing
		  unambiguous matches; if the word is already complete then
		  return CC_REFRESH so that the higher layer may append a
		  suffix if necessary. Fix from Launey Thomas <ljt@alum.mit.edu>
		- change references from draft-ietf-ipngwg-url-literal-01.txt
		  to RFC2732
		- work around bug in apache 1.3.9 which incorrectly puts a
		  trailing space after the chunksize.  noted by Jun-ichiro
		  itojun Hagino <itojun@itojun.org> in [bin/9096]
		- work around lame ftpd's that don't return a correct post-Y2K
		  date in the output of `MDTM'.  obviously the programmer of
		  aforementioned lame ftpd's did something like
			"19%02d", tm->tm_year
		  instead of
			"%04d", tm->tm_year + TM_YEAR_BASE
		  fixes [bin/9289] by jbernard@mines.edu

	* merge libedit from NetBSD-current (20000125):
		- PR/9244: Kevin Schoedel: libedit dumps bindings
		  inconsistently
		- PR/9243: Kevin Schoedel: libedit ignores repeat count
		- Add support for automatic and magic margins (from tcsh)
		  This makes the rightmost column usable on all programs
		  that use editline.

Tue Dec 21 08:59:22 EST 1999	lukem

	* update INSTALL notes for some systems

	* if sl_init() exists, check return value of sl_add() is int and
	  compile in a replacement copy if it's not the case

	* don't look for <stringlist.h> - always use local prototypes; older
	  NetBSD systems may have conflicting prototypes

Mon Dec 20 11:21:28 EST 1999	lukem

	* merge ftp from NetBSD-current (19991220):
	- Move version from ftp_var.h to version.h
	- Fix chunked support; probably broke after rate limiting was added.
	  Problem noticed/debugging assisted by giles lean
	  <giles@nemeton.com.au>.
	- remove unnecessary freeaddrinfo(res), since res0 was changed to be
	  freed earlier in itojun's last commit. fixes [bin/8948].
	- remove `const char *reason'; it was being assigned but not used.
	- fix memory leak in fetch_url (no freeaddrinfo was there).
	  sync with recent KAME.
	- separate out the main `data pump' loop into two: one that supports
	  rate limiting and one that doesn't. simplifies the code, and speeds
	  up the latter case a bit, at the expense of duplicating a few
	  lines...

Sun Nov 28 18:20:41 EST 1999	lukem

	* merge ftp from NetBSD-current (19991128):
	- implement xsl_init() and  xsl_add(); error checking forms of
	  sl_{init,add}()
	- fix bug where the second press of <TAB> on an empty word (i.e, list
	  all options) may have resulted in an strncmp() against NULL. 
	  (detected by _DIAGASSERT())
	- in cleanuppeer(), reset username to NULL after free()ing it.
	  fixes [bin/8870] by Wolfgang Rupprecht <wolfgang@wsrcc.com>
	- complete_remote(): use remglob("", ...) instead of remglob(".", ...),
	  for listings of the current working directory; some ftp servers don't
	  like `NLST .'.
	  [noted by Giles Lean <giles@nemeton.com.au>]
	- recvrequest(): treat remote=="" as remote==NULL when calling
	  command().  (to support the above change)
	- support `[user@]' in `[user@]host' and `[user@]host[:][path]'.
	  [based on idea (and initial code) from David Maxwell <david@fundy.ca>]
	- `idle' may be invoked without any args
	- reformat some comments
	- reformat usage string in program and man page
	- call updateremotepwd() after successful login, not after successful
	  connect
	- always call setsockopt(, IPPROTO_IP, IP_TOS, ) (et al); using #if
	  defined(IPPROTO_IP) doesn't work on certain foreign systems where
	  enums instead of #defines are used...
	  [noted by Matthias Pfaller <leo@dachau.marco.de>]

Mon Nov 15 23:01:58 EST 1999	lukem

	* released lukemftp 1.1

Mon Nov 15 09:07:01 EST 1999	lukem

	* merge libedit from NetBSD-current (19991115):
		- instead of using a private coord_t global variable to store
		  the size of the rprompt, use the previously unused coord_t
		  el->el_rprompt.p_pos

Sat Nov 13 14:42:22 EST 1999	lukem

	* support caching of results in AC_MSG_TRY_{COMPILE,LINK}
	  autoconf tests

	* add NEWS file

	* clarify copyright statement in COPYING

	* merge ftp from NetBSD-current (19991113):
		- implement `set rprompt'; right side version of `set prompt'.
		  depends on EL_RPROMPT support i added to editline(3).
		- allow $FTPPROMPT and $FTPRPROMPT to override defaults for
		  the relevant prompts
		- move `%' formatting code from prompt() to expandbuf().
		- implement `%.' and `%c', similar to the same % codes in
		  tcsh(1) (functionality I added to tcsh nearly 6 years ago),
		  except that `%.' always does `...trailing' and `%c' always
		  does `/<x>trailing'.
		- unknown `%foo' codes get printed as `%foo'
		- implement updateremotepwd(); update the global variable
		  `remotepwd' to contain the remote working directory.
		- add `set prompt', a user configurable prompt. (defaults to
		  `ftp> ').  the following escape characters a la tcsh(1) are
		  supported: %/, %m, %M, and %n.
		- add global var `username'; used by prompt code
		- fix a couple of minor memory leaks
		- bump version
		- prevent minor memory leak (unnecessary strdup)
		- implement restarting file:/// non-proxied http:// URLs
		  (with -R).
		- fix a semicolono which stopped file:/// from working
		- split the version string into product and version
		- be consistent about reporting the version between:
			+ status command
			+ about:version URL fetch
			+ User-agent sent in http requests
		- hookup(): when using getservbyname() (when getaddrinfo()
		  isn't available), if the provided port is a valid number
		  use that rather than trying to do getservbyname() against
		  it. fixes a problem on foreign systems noted by Chuck
		  Silvers <chuq@chuq.com>
		- support `about:version'. also display the version in the
		  output of `status'.

	* merge libedit from NetBSD-current (19991113):
		- implement printing a right-side prompt. code derived from
		  similar work I wrote for tcsh(1) three years ago.
		- implement EL_RPROMPT, which allows a setting/getting of a
		  function which returns a string to be used as the
		  right-side prompt.

	* replace manually managed config.h.in with acconfig.h and use
	  autoheader to generate the former.

	* add missing entry for `#undef write' in acconfig.h (for SOCKS)

	* configure.in:
		- use `LL' suffix on long long constant used to test
		  snprintf("%lld")
		- test for EL_RPROMPT instead of EL_EDITMODE, since the
		  former is is a newer required feature

	* in makelist, set LC_ALL="C", in case the locale confuses awk.
	  problem noted by Peter Seebach <seebs@plethora.net>

Wed Oct 27 07:00:00 UTC 1999	lukem

	* released 1.0

	* removed libedit/TEST/test.c; no need to distribute it

Mon Oct 25 21:59:54 EST 1999	lukem

	* released 1.0b7

	* put VERSION string into lukemftp.h, and display with the `status'
	  command

Mon Oct 25 11:36:59 EST 1999	lukem

	* merge ftp from NetBSD-current (19991025):
	- fix up confirm() (broke `a' and `p' in last commit)
	- simplify main loop (don't need `top' variable any more)
	- use a struct sockaddr_in6.sin6_addr for the result from inet_pton(),
	  rather than u_char buf[16]
	- add a few more comments

	new features:
	- add `usage'; displays the usage of a command.
	  implemented by calling the c_handler() with argc = 0, argv =
	  "funcname".
	- add `passive auto'; does the same as $FTPMODE=auto.
	- add `set [option value]'; display all options, or set an option to
	  a value.
	- add `unset option'; unset an option.
	- add getoptionvalue() to retrieve an option's value, and replace a few
	  global variables with calls to this.
	- implement cleanuppeer(), which resets various bits of state back to
	  `disconnected'. call in disconnect() and lostpeer().
	- support completing on `options'.
	- improve recovery after a SIGINT may have closed the connection.
	  XXX: there's still a couple to fix

	other stuff:
	- various consistency fixes in the man page.
	- ensure that the command usage strings in the code and man page
	  match reality.
	- mput/mget: check that the connection still exists before each xfer.
	- minor cosmetic changes in confirm().
	- set code correctly in sizecmd() and modtime()
	- don't need \n in err() strings.
	- change lostpeer to take an argument (rather than casting
	  (sig_t)lostpeer in signal handlers)
	- knf and whitespace police.

Sun Oct 24 17:02:59 EST 1999	lukem

	* merge libedit from NetBSD-current (19991024):
		- don't assume locales are not working - it may not be
		  the case
		- re_refresh(): cast the character passed to re_addc() to
		  unsigned char,  so we don't end up calling isprint() with
		  negative value when chars are signed and character value
		  is >= 128
		- Fix pointer arithmatic (caused problems on LP64, including
		  ftp dumping core when `edit' was turned off then on).
		  Problem solved by David Huggins-Daines <dhd@eradicator.org>

Tue Oct 12 18:05:21 EST 1999	lukem

	* install man page from ${srcdir} not from .

Tue Oct 12 17:00:41 EST 1999	lukem

	* released 1.0b6

	* merge from NetBSD-current (19991012):
	  a few user interface and cosmetic tweaks:
		- confirm(): move from util.c to cmds.c. display mnemonic
		  string in its prompt. add support for `q' (terminate
		  current xfer), `?' (show help list)
		- in various signal handlers, output a linefeed only if
		  fromatty.
		- if fgets(stdin) returned NULL (i.e, EOF), clearerr(stdin)
		  because you don't want future fgets to fail. this is not
		  done for the fgets() in the main command loop, since ftp
		  will quit at that point.
		- unless ftp is invoked with -a, don't retain the anonftp
		  setting between hosts (`ftp somehost:' sets anonftp, but
		  you don't want that to `stick' if you close that connection
		  and open a new one).

Mon Oct 11 23:06:38 EST 1999	lukem

	* check for working const

	* reorganise addition of -lukem to LIBS (was being added twice)

	* merge from netbsd-current:
		- use sigjmp_buf instead of jmp_buf for sigsetjmp() buffer

	* libedit: don't bother generating & compiling editline.c, since
	  its component parts are compiled anyway.

Sun Oct 10 12:08:39 EST 1999	lukem

	* released 1.0b5

	* in libedit, use xsignal_restart() (from src/util.c) instead of
	  signal(); the isn't guaranteed to work on some foreign systems
	  (e.g, IRIX) if sigaction() is used in the same program.

	* merge from netbsd-current:
		- use sigsetjmp()/siglongjump() instead of setjmp()/longjmp();
		  the latter don't save the signal mask on some foreign systems.
		- ensure signal handlers don't use stdio and do reset errno
		  if they don't exit with siglongjmp()
		- use a common SIGINT handler for {send,recv}request()
		- allow a second SIGINT during the "xfer aborted. waiting for
		  remote to finish abort." stage. if this occurs, just call
		  lostpeer() to close the connection.  whilst this might be
		  considered brutal, it's also extremely handy if you're
		  impatient or there's lossage at the remote end.

	* add preformatted manual page

	* fix --enable-editline

Wed Oct  6 10:19:00 EST 1999	lukem

	* released 1.0b4

	* don't defining SIGINFO to SIGQUIT if the former doesn't exist; the
	  code now supports both as a method of getting the transfer stats

	* rototill signal handling in the actual data xfer routines, and
	  specifically set SIGQUIT to psummary in each one, to override
	  editline's handler

Tue Oct  5 23:48:29 EST 1999	lukem

	* factor out SIGINFO setting into a handler that is always active
	  (but only prints out info if bytes > 0). only set the handler if
	  SIGINFO is defined

	* hijack SIGQUIT to be the same as SIGINFO

	* in {recv,send}request(), factor a lot of duplicated code out into
	  a `cleanup' section at the end

	* rework shell() a bit

	* enhancments from Marc Horowitz <marc@mit.edu> to improve
	  connection timeouts:
		- implement xsignal_restart(), which only sets the SA_RESTART
		  flag if specifically requested
		- xsignal() is now a wrapper to xsignal_restart(). INFO,
		  USR1, USR2 and WINCH are restartable, ALRM, INT, PIPE and
		  QUIT are not
		- improve getreply()'s timeout code to take advantage of the
		  above

	* improve wording of how globbing works for `classic' URLs (host:path)
	  suggested by John Refling <johnr@imageworks.com> in relation to PRs
	  [bin/8519] and [bin/8520]

	* always compile in the `edit' command even if NO_EDITCOMPLETE defined
	  it's just a no-op in the latter case, which is more consistent to
	  the users

	* always compile in about: support (i.e, remove NO_ABOUT).  i'm
	  entitled to some vanity in this program...

	* update copyrights

Mon Oct  4 10:57:41 EST 1999	lukem

	* Invoke ar with `cr' not `cq'

	* Use AC_PROG_RANLIB to find ranlib, and use it on the libraries

	* Remove `makelist' from dependency list for libedit files; re-running
	  configure shouldn't result in rebuilding libedit

	* Add support for --{en,dis}able-editcomplete (defaults to enabled),
	  which prevents libedit support from being compiled in.
	  From Chris G. Demetriou <cgd@netbsd.org>

Sun Oct  3 16:49:01 EST 1999	lukem

	* touch up the README

	* add COPYING, INSTALL, THANKS

	* whitespace consistency

	* in config.h, replace NO_QUAD with HAVE_QUAD_SUPPORT, and in
	  lukemftp.h define the former if the latter is non zero

	* change test against GETPGRP_VOID from #ifdef to #if

	* snprintf(): in the truncation case, ensure that the length
	  returned is the actual length, not the needed length

Sat Oct  2 00:41:34 EST 1999	lukem

	* fix more lossage with $(srcdir) / $(VPATH) stuff; seems to work now
	  when configured in a separate directory

	* actually test the correct variable when determining whether to run
	  AC_FUNC_GETPGRP

Fri Oct  1 19:32:22 EST 1999	lukem

	* released 1.0b3

	* use AC_PROG_MAKE_SET

	* determine setting of NO_QUAD with configure not lukemftp.h

	* if have long long and have snprintf, test that snprintf
	  supports %lld. if it doesn't use private version

	* change strtoq from returning off_t to returning long long

	* updates from NetBSD mainline:
		- only try epsv once per connection (i.e, don't bother again
		  if it fails)
		- improve description of rate command
		- fix up global vars; they're now externed in ftp_var.h
		  except when main.c includes it
		- remove "pathnames.h"

Fri Oct  1 10:08:43 EST 1999	lukem

	* updates from NetBSD mainline:
		- fix determining of homedir
		- parse_url(): fix checking of portnum
		- move kame copyrights after bsd/tnfi ones

	* released 1.0b2

	* add %lld and %qd support to snprintf() for displaying long long's

	* support VPATH and srcdir

Thu Sep 30 17:19:35 EST 1999	lukem

	* released 1.0b1

	* fix from NetBSD mainline: in empty() FD_ZERO the correct variable

Wed Sep 29 23:34:33 EST 1999	lukem

	* major rework; reimport code from NetBSD-current 1999/09/29 into
	  separate subdirectories and build from there. organisation is now:
		libedit		replacement libedit
		libukem		replacements for missing functions
		src		main ftp source

Mon Sep 27 00:43:12 EST 1999	lukem

	* released 1.0 a6

Sun Sep 26 17:17:05 EST 1999	lukem

	* released 1.0 a5

Sat Sep 25 00:58:28 EST 1999	lukem

	* released 1.0 a4

Fri Sep 24 17:07:07 EST 1999	lukem

	* released 1.0 a3

Fri Sep 24 16:18:29 EST 1999	lukem

	* released 1.0 a2

Tue Sep 21 11:38:49 EST 1999	lukem

	* import usr.src/bin/ftp and usr.src/lib/libedit sources from NetBSD
