fget 1.3.3 - 5/13/05
----------

- fixed include file problem for cygwin
  (thanks to Roland Romero <rolandromero@laposte.net> for the bug report)
- misc code cleanups in fget code (added lots of comments)
- added fget "-S" option

-----------------------------------------------------------------------------

fget 1.3.2 - 11/6/04
----------

- fixed netio module to ignore return value from shutdown(2)
  (thanks to Russell C Cole <Russell.C.Cole@noaa.gov> for the bug report)
- fixed dircache to check for expired entries at every call, not just
  when adding a new entry from the server
  (thanks to Kevin Hendrix <khendrix@knobias.com> for the bug report)
- fixed list_parse_unix.c to check for "No such file or directory"
  error messages
  (thanks to Nerijus Baliunas <nerijus@users.sourceforge.net> for the
  bug report)
- various Makefile fixes

-----------------------------------------------------------------------------

fget 1.3.1 - 8/14/04
----------

- minor portability fixes in netio module
  (based on patch from Jim Pirzyk <pirzyk@uiuc.edu>)
- fixed ftp_read() and ftp_write() to fail with EBADF if the ftpfile
  handle was not opened for reading or writing, respectively
- fixed ftp_lseek() and ftp_open() to fail with ENOSYS instead of EINVAL
  for known but unsupported arguments
- fixed ftp_site_open() to fail with ENOSYS for unsupported mode argument
- fixed all libfget functions to return EAGAIN if attempting to send a
  request while the data connection is open
- fixed ftp_close() and ftp_quit() to check return value from underlying
  netio layer
- man page improvements:
  - added "DATA CONNECTIONS" section to libfget(3) man page
  - documented possible errno values for each function
  - rewrote ftp_glob(3) man page

-----------------------------------------------------------------------------

fget 1.3.0 - 7/18/04
----------

- fixed ftp_readdir() to not start again from the beginning of the
  directory if called again once it reaches the end
- changed send/recv hook interface to pass the FTP handle to hook functions
  (allows applications to see which FTP handle the hook was called from)

-----------------------------------------------------------------------------

fget 1.3.dev4 - 6/26/04
-------------

- API changes:
  - added ftp_site_open() function
  - removed flags argument from ftp_site() function

-----------------------------------------------------------------------------

fget 1.3.dev3 - 6/19/04
-------------

- documentation improvements:
  - split up man pages to improve readability
  - added examples to ftp_connect(3), ftp_open(3), and ftp_opendir(3) man pages
  - updated libfget(3) man page to list RFC compliance
- API changes:
  - added ftp_unlink() function
  - changed ftp_remove() to be a front-end to ftp_unlink() and ftp_rmdir()
  - changed semantics of FTP_OPT_IO_TIMEOUT option: timeout is now
    disabled with -1, not 0
  - renamed FTP_OPT_USE_MLSD to FTP_OPT_USE_MLST to be consistent with
    FEAT response
- Makefile changes:
  - fixed installation problems in top-level Makefile.in
  - fixed doc/Makefile.in to automatically determine what ".so" links
    are required for each man page
- fget program changes:
  - fget no longer passes FTPGLOB_NOCHECK to ftp_glob() when evaluating
    URLs from the command line or from a URL file
  - changed semantics of "-t" option to match underlying
    FTP_OPT_IO_TIMEOUT library option
- internal changes:
  - moved all network I/O code into new general-purpose netio module
  - fixed option code to store all boolean options in a single bitmask
  - moved definition of BIT_* macros to compat.h
  - added MSG_OOB capability to netio module
    (removed write() and send() calls in _ftp_data_abort())

-----------------------------------------------------------------------------

fget 1.3.dev2 - 4/25/04
-------------

- API changes:
  - new interface for setting FTP data connection TYPE:
    - removed ftp_open_ascii() and FTP_SITE_DATACONN_ASCII
    - added ftp_type() function
  - changed return type of ftp_read() and ftp_write() to ssize_t
  - changed return type of ftp_lseek() to off_t
  - better ABOR handling:
    - by default, libfget now simply closes the ftp-data connection
      instead of trying to send ABOR
    - added FTP_OPT_USE_ABOR option to enable use of ABOR
- fget program changes:
  - passive mode is now on by default (matches new library default)
- documentation fixes:
  - updated ftp_set_options(3) man page
  - improved ftp_stat(3) man page
- bug fixes:
  - fixed small memory leak in directory cache code
  - fixed _ftp_wait() to check for POLLHUP
    (thanks to Stephen Weiss <sweiss@c-scape.com> for pointing this out)
  - fixed ftp_lseek() to send REST command after PORT/PASV but before RETR
  - fixed data connection code to handle cases where the server thinks
    that the service request has already completed before we attempt to
    abort it (both via ABOR, and via simply closing the data connection)
- internal changes:
  - changed LIST code to assume Unix-style directory format by default
  - moved EOF detection and ABOR handling into ftpdata.c
    (it now uses poll() and recv() with MSG_PEEK to decide if ABOR is needed)
  - ftp_open() in O_RDONLY mode no longer tries to ftp_stat() the file
  - ftp_chdir() now checks the text of the error message to distinguish
    between ENOENT and ENOTDIR for a 550 response code
  - once connected, the sockets for both the control and data connections
    are no longer non-blocking
  - the SO_REUSEADDR socket option is no longer set for the data connection
  - ftp_lseek() now returns without doing anything if the file is already
    at the requested offset
  - changed _ftp_wait() to set poll() / select() timeout to 0 if
    timeout argument is -1

-----------------------------------------------------------------------------

fget 1.3.dev1 - 2/24/04
-------------

- API changes:
  - changed ftp_site() to use stdargs interface
  - removed fs_filename and fs_linkname fields from struct ftpstat
  - changed ftp_url_parse() to support ";type=<typecode>" URL syntax
- thread safety:
  - changed ftp_connect() to use gethostbyname_r() and getservbyname_r()
  - changed _ftp_list_parse_unix() to use localtime_r()
  - applications can check the value of libfget_is_thread_safe at run-time
- internal changes:
  - libfget now uses PASV mode by default
  - set sane option defaults in ftp_connect()
  - changed _ftp_list() to use CWD instead of passing path name to LIST
    request whenever possible (avoids problems with some servers)
  - split list parsing functions into their own files
  - added bare-bones list parsing function for djb's EPLF
  - added bare-bones MLST/MLSD support
    (disabled by default - use FTP_OPT_USE_MLSD option to enable)
  - choose list parsing function once for the whole connection instead
    of deciding as each line is parsed
  - changed _ftp_list_parse_unix() to check for weird output from
    Heimdal FTP server (should never happen, but we check just in case)
  - more directory cache improvements
- packaging and documentation:
  - added libfget(3) man page
  - added test suite framework

-----------------------------------------------------------------------------

fget 1.3.dev0 - 1/16/04
-------------

- packaging and portability:
  - changed default socklen_t typedef to int
  - updated autoconf macros
  - updated README file
- bugs:
  - removed duplicate getsockname() call from lib/ftpdata.c
  - internal architecture change: moved path resolution code out of
    directory cache and into ftp_realpath()
  - fixed Unix directory parsing code to avoid truncating the final digits
    of the file size when group field is not specified and the size is
    greater than 8 digits
- API changes:
  - ftp_readdir() may now return entries for "." and ".."
  - removed FGET_COMPAT and FTP_URL_COMPAT backwards-compatibility macros
  - changed macro names to indicate which function they are used for:
	FTP_ROUNDROBIN		=> FTP_CONNECT_DNS_RR
	FTP_FASTCLOSE		=> FTP_QUIT_FAST
	FTP_DATACONN		=> FTP_SITE_DATACONN
  - added support for ASCII-mode file transfers:
    - new ftp_open_ascii() function
    - new FTP_SITE_DATACONN_ASCII flag for ftp_site() function
  - added extensible option mechanism:
    - new ftp_set_options() and ftp_get_options() functions
    - removed old functions:
	ftp_get_flags()
	ftp_set_flags()
	ftp_get_cache_max_size()
	ftp_set_cache_max_size()
	ftp_get_cache_expire_time()
	ftp_set_cache_expire_time()
	ftp_get_io_timeout()
	ftp_set_io_timeout()
	ftp_set_sendhook()
	ftp_set_recvhook()
    - changed ftp_connect() to take variable number of args for setting options
  - changed send and recv hook prototype to take an app data pointer argument
  - prepended a '_' to all internal function names
    (helps avoid namespace collisions with apps and other libs)

