NcFTP Change Log:
================

3.2.7, 2024-01-01

   + Portability fixes from Florian Weimer <fweimer@redhat.com>.

   + Fix parsing MLSD listings with absolute pathnames for files.

   + Default to automatic resumption of downloads.


3.2.6, 2016-12-04

   + If a recursive download operation is also requested with delete mode,
     attempt to remove empty directories after all files have completed
     successfully.

   + No longer trying to utime() after every single block on downloads,
     which could cause noticable performance degradation when the local
     filesystem was not local.

   + Changed behavior of resuming downloads where the timestamp wasn't
     preserved (because of the utime change, above). The new behavior is
     to resume the download when the local copy has a recent timestamp
     (less than a week).

   + You can now disable use of MFMT like you could similarly disable
     SITE UTIME (e.g., "-o noMFMT" and "-o noSITE_UTIME").

   + Now able to use sendfile() for uploads, on Linux/FreeBSD/Mac.
     Progress reports work too, with a small performance penalty.
     Ncftpput has a "-s" option to toggle whether it is used (defaults
     to on in ncftpput and ncftpbatch, off in ncftp).

   + Ncftpbatch/spooler now use larger buffers for pathnames, allowing
     for deeper directory trees.

   + Ncftpbatch/spooler now interpret a received SIGUSR1 as a hint to
     exit when the current file has finished.

   + Ncftpbatch/spooler now interpret a received SIGUSR2 to request it
     to stop sleeping and recheck the queue immediately.

   + Ncftpbatch/spooler's spool files now allow for you to specify that
     the local and/or remote file be renamed after a successful transfer.

   + Ncftpbatch/spooler now a little less chatty by reducing the number
     of PWD/CWD operations.

   + Ncftpbatch/spooler now log some xfer stats in its general log file,
     and ncftpspooler has a new "-x" option to specify a separate
     xfer log file.

   + Ncftpbatch/spooler now use a larger default maximum for its log
     file (10 MiB rather than 200 kB), and ncftpspooler has an -O command
     line option that can set this limit. Use "-O 0" for no maximum.

   + Ncftpbatch/spooler now try to present time in local timezone rather
     than UTC where possible.

   + Ncftpbatch/spooler now support multiple items per transaction
    (spool) file.


3.2.5, 2011-01-01

   + Fixed a problem on Mac OS X Snow Leopard for universal binary support. 

   + ncftpls now prefers that you omit the leading dash when you use the -x
     option.  For example, if you wanted to try "ls -lrt", then try doing
     "ncftpls -x lrt" rather than "ncftpls -x -lrt".

   + If a server's MLSx output returns both the "UNIX.mode" and the "perm"
     parameters, UNIX.mode will take precedence (Thanks, Jay Kulpinski).

   + confirm-close is now off by default.


3.2.4.1, 2010-05-16

   + Fixed a bug in Ncftpget/put/ls which could ignore the username (-u)
     and password (-p) command line parameters.


3.2.4, 2010-04-07

   + Ncftpget and ncftpput can now read $HOME/.ncftp/bookmarks and take a
     bookmark name in place of a hostname.  If the hostname specified is 
     not fully qualified (i.e. does not contain a period), then bookmarks
     will be queried; if no bookmarks match, then a local hostname is
     assumed.  Bookmarks are also queried for the config file option,
     -f, when the file specified by -f does not exist.

   + Compatibility fixes for FreeBSD 8.

   + Support for local validation of DNSSEC when combined with libraries
     available from the DNSSEC Tools project (Thanks, Robert Story).

   + Microsoft disabled recursive directory listings altogether when fixing
     KB975254 (Thanks, Andrew Coggeshall).  When entire directories are
     downloaded, instead of using "LIST -R" for one efficient listing of
     all files, the directories are manually traversed with one directory
     listing for each subdirectory.  This will improve reliability of
     recursive downloads, except for the case when their are circular
     symbolic links (which is why "LIST -R" had been favored, which the
     server can easily handle).

   + Compatibility fixes for Mac OS X for building from source code
     (Thanks, Mathieu Rene)



3.2.3, 2009-07-28

   + Large File Support has been updated internally to use newer APIs,
     rather than the transitional API.

   + You can now specify an IP address for binding the local end of
     sockets.  Useful if you need connections to originate from a
     specific IP on the system.

   + Bug fixed where binding an ephemeral port number in a specified
     range (rare) may not have used all available retries for binding.

   + Local writes now "retry" when the write returns less than the full
     number of bytes specified, and will call write() again to write
     out the remaining bytes.  This bug is very rare since local write
     almost always write out the full number of bytes.  This bug may
     have been limited to a particular type of filesystem.

   + Using a higher resolution timer on Windows, so that the timer
     no longer wraps over after a month.

   + The minimum version of Windows that the source code will now
     compile on is Windows 2000, although with a little tweaking you
     could compile for Windows NT 4 again.

   + Compatibility fix for Mac OS X when compiling from source to build
     universal binaries (Thanks, Toshi NAGATA)

   + Compatibility fix for FreeBSD, where a connection attempt may
     have failed with "Operation now in progress."

   + Fixed a bug where the global firewall pref files were not read
     if the user's home directory was the root directory.

   + Using MFMT command to set remote timestamps, if available, in
     preference to SITE UTIME or MDTM.

   + New configure flag, --enable-ssp, will turn on stack smashing
     protection (if available by compiler) by adding to CFLAGS.

   + Host, user, and pass fields have been increased in size.

   + Bug fixed where the firewall preference files were ignored for
     the root user.

   + Ncftpls now has a "-Z" option that will disable doing the actual
     directory listing.  This is useful for use with the "-Y" option
     to send a raw FTP command without doing a listing.


3.2.2, 2008-08-18

  + Fixed an assertion failure in NcFTP's "help" command that appeared
    in a 2008-08-09 release.

  + PASV mode will now be retried, in case of a transient failure.
    (Thanks, Steven Frank).

  + The directory listing parser now can recognize dates in the format
    of YYYY-mm-dd HH:MM[:SS].

  + Fixed feature detection for WS_FTP servers.

  + Workaround bug in REST on WS_FTP 6.0 (Thanks, Dan Nelson).

  + Fixed a problem where doing a get on a remote file that did not exist,
    but a file by the same name existed locally, would err out but truncate
    the local file anyway.

  + Fix for ncftpget on Windows to write in binary to stdout when needed
    (Thanks, Michael Langguth).

  + HOME, END, and DEL keys may work on more terminal types
    (Thanks, Anton Khramov).

  + You can now type just ".." or the absolute path of a directory in
    the ncftp command shell to "cd" to the directory (Thanks, Anton
    Khramov).

  + Added command aliases "mv" and "ll" which alias to "rename" and "dir"
    respectively (Thanks, Anton Khramov).

  + ncftpbatch now has an -L option to specify the name of a log file
    to write progress meter output to.  Combined with "tail -f", this can
    be used to monitor a batch file transfer in progress.

  + On Mac OS X, the configure script will now try to build universal
    binaries by default.  If you don't want that, pass --disable-universal
    to configure.

  + The default connect timeout has been reduced from 30 to 10 seconds to 
    reflect the increase in the typical user's network speed.


3.2.1, 2007-07-29

  + Now a little more tolerant of FTP servers who send their internal network
    IP addresses in their PASV response.  When this is detected, it will be
    ignored and the data connection will connect to the same IP that is used
    for the control connection.

  + Resuming of uploads can now work for servers that do not support
    REST + STOR.  The APPE command will be used instead.

  + Fixed problem with Resume All [R!] in ncftp, which was just appending
    to subsequent files rather than resuming them.  (Thanks, Terry Brown)

  + ncftpput for version 3.2.0 did not work correctly when both -f
    and -c/-C were used.  This has now been fixed.  In addition, the
    host command line argument is optional when the config file specifies
    the host.

  + Various small fixes.


3.2.0, 2006-08-05

  + Fixed problem where ncftpbatch may requeue downloads when the local file
    was the same as the remote file.

  + ncftpls has been enhanced so that using the new -m option will
    have it try a machine-readable list command.  These commands need to be
    implemented on the remote server for it to work.

  + ncftpls can now try to attempt to filter the files with a wildcard
    with the new -i option.  For this option to work, this functionality
    must be properly implemented in the FTP server software.

  + ncftpls can also now behave similar to /usr/bin/find, with the new -g
    option.  When invoked with -gg, it appends a slash to directory pathnames
    so you can distinguish files from directories.

  + Fixed a problem with ASCII translation where a CR+LF may not have
    been converted to the local text EOLN format if the CR+LF was split
    over an internal block boundary.  The ASCII translation code has
    been rewritten so it is also more tolerant of malformatted text,
    such as CR+CR+LF end-of-lines.
 
  + You can now edit remote files, thanks to <jess AT thrysoee.dk>.  The
    new "edit" command downloads to a temporary file, runs your $EDITOR,
    and uploads any changes back to the remote server.  Naturally this
    requires both read and write permission on the remote server.

  + Handling "~" in paths a little better.  Try to expand it to the
    remote home directory for remote commands, and the local home directory
    for local commands.

  + Progress meters now output to stderr.  This eliminates a problem
    when using ncftpput with "-c" mode, which would result in a corrupted
    file.

  + More careful about trimming the $HOME/.ncftp/log file so it does not
    get too small.

  + You can now resume uploads when uploading into a temporary file
    (e.g. ncftpput's -S and -T options for using a temporary suffix or prefix).

  + The utility programs' "-X" option has been enhanced so it will
    automatically translate some /usr/bin/ftp commands into the raw RFC 959
    FTP protcool commands that are required for this feature.

  + Fixes for Cygwin.

  + Some fixes for largefile support on Windows.

  + You can now resume transfers in ASCII mode, rather than just binary.

  + Fixed a problem with recursive uploads for Windows.

  + Opening a site with a bookmark no longer assumes that the server's
    software has the same configuration (i.e. if it did not support SIZE
    before, it now checks for SIZE each time rather than assuming each
    time the site is opened that the server does not support SIZE).

  + You can now use an empty password if your user account does not have
    a password.

  + Fixed a problem in the "ls" implementation for international
    month names.

  + Fixed a bug where Type of Service socket options were being set
    with IPPROTO_TCP instead of IPPROTO_IP.


3.1.9, 2005-04-06

  + Renamed internal library function getline() to gl_getline()
    to avoid namespace collision with glibc.

  + Renamed internal library function Duration() to FTPDuration()
    to avoid namespace collision on Mac OS X.

  + Recognize additional error response codes to SITE UTIME, to prevent
    using it if the server doesn't support it.

  + If the server does not support setting timestamps in MDTM, quit
    trying it if it fails the first time.

  + Do not allow control characters such as NUL, CR, LF in FTP URLs, to
    avoid command injection as described by
    Albert Puigsech Galicia <ripe AT 7a69ezine.org>.

  + Fixed a problem where a timed-out transfer may have been detected
    but still locked up the process (Thanks, IWAI, Masaharu).

  + Ncftpget and ncftpput now accept a "-C" parameter which is similar
    to the "-c" option (ftp "cat" mode), where stdin (stdout) is not used
    and the filename is specified as a parameter instead.  This is useful
    if you don't want to specify a password on the command line.

  + Ncftpput now allows the "-m" option in conjunction with the "-c" or "-C"
    options.

  + Small compatibility fixes for Mac OS X, Solaris 10, Linux.


3.1.8.1, 2004-07-27

  + A fix for some DNS resolution problems on Linux.


3.1.8, 2004-07-07

  + Ncftpget, ncftpput, and ncftpls now try to erase the arguments to the
    -u/-p/-j (user, password, account) options so they do not show in
    a "ps" command (Thanks, Konstantin Gavrilenko).

  + Recognize broken IBM mainframe FTP servers and work around them.

  + Working around a problem with ProFTPD 1.2.9 and later which would
    cause recursive downloads to fail.

  + Fixed a bug where ncftpput in recursive mode could lock up if you
    used a trailing slash on the directory to upload.

  + For the malicious server problem that was addressed in 3.1.5, enhanced
    the fix for better compatibility with mainframe FTP servers.

  + Ncftpget, ncftpput, and ncftpls, and ncftp's open command now accept
    an additional advanced option (-o) which lets you do things like disable
    NcFTP's use of SITE UTIME, FEAT, HELP SITE, etc.

  + Several HP-UX 10 compatibility bugs fixed (Thanks, Laurent FAILLIE).

  + A couple of looping problems with ncftpbatch fixed (Thanks, George Goffe).

  + Bug fixed with the upload socket buffer not being set (Thanks, ybobble).

  + The utility programs now accept "-" for the config file name used
    with "-f" to denote standard input (Thanks, Jeremy Monin).

  + Bug fixed with ncftpput when using both -c and -A (Thanks, Ken Woodmansee).
 
  + Support for boldface text in Windows version (Thanks, Adam Gates).


3.1.7, 2004-01-07

  + Fixed a memory leak introduced in 3.1.6.

  + Fixed problem where it was assumed that daylight saving's time occurred
    at the same time each year for all timezones.

  + Bug fixed with running a shell escape.
  
  + Ncftpget now uses passive-with-fall-back-to-port mode like ncftpput and
    ncftpls.
  
  + Problem fixed with "ls -a" where occasionally a row with ".." and another
    file would be omitted.
  
  + Ncftpbatch now uses the UTC timezone for spool files.
  
  + The configure script can now detect when the config.cache file has been
    improperly recycled from a machine with a different OS.
  
  + The Windows version now uses the USERPROFILE environment variable, if it
    was set, as the location of the user's home directory.

  + Recognize broken DG/UX servers and work around them.


3.1.6, 2003-08-25

  + Fixed an important bug that was causing socket leaks on Windows.

  + Added support for GCC 3.4 precompiled headers.

  + Aborting transfers is now more robust.

  + Re-fixed a problem where high ASCII characters at the NcFTP prompt
    could cause it to exit.

  + Bug fixed where timeouts may not have worked.

  + To the improved ASCII handling from 3.1.5, added another case where we
    workaround files sent by a buggy FTP server implementation whose
    files have CR+CR+LF end-of-lines.

  + More fixes related to the above, as well as few other fixes from
    Martin Storsj.

  + Bug fixed where an upload filename could have been limited to 127
    characters.

  + Firewall exception hosts are no longer case sensitive.

  + Bug fixed in ncftpput's "-c" option so it works with the "-f" option
    (Thanks, ITO Tsuyoshi).

  + Ncftpbatch will now try to temporarily skip a failing host in the
  current run (Thanks, Eric Engstrom).

  + Bug fixed where a several minute delay would be incurred if you
    tried to transfer a file that did not exist.

  + For the malicious server problem that was addressed in 3.1.5, enhanced
    the fix for better compatibility with Serv-U and WS_FTP servers.


3.1.5, 2002-10-13

  + Problem fixed where a malicious or trojaned FTP server could send back
    pathnames with directories different from the directory requested.
    For example, if you did:
      cd /pub ;
      get *.zip
    the malicious server could
    send back a pathname like ../../../some/other/dir/filename.here
    rather than pathnames such as filename.zip and trick NcFTP into writing
    into a different local pathname if your user privileges had permission
    to write it.

    For details, see the CERT Vulnerability Note, at
      http://www.kb.cert.org/vuls/id/210409

 + Bug fixed where cd messages from remote server were not being displayed.

 + It's now possible to capture the output of the progress reports from
   ncftpget/put by redirecting descriptor(s) to a file.  Previous releases
   required a "tty" to enable progress reports.

 + Compatibility fixes for AIX, Linux, Mac OS X, IRIX 6.2 and SunOS 4.

 + Be less pedantic about incorrectly formatted multi-line responses.

 + Bug fixed where NcFTP could hang at exit.

 + For ASCII transfers, try harder to handle non-native end-of-line formats.


3.1.4, 2002-07-02

 + Bug fixed in Win32 port which could cause NcFTP to mis-parse output
   from Roxen FTP servers.

 + We now try to have ncftpbatch leave a core file for debugging if it
   exits with SIGSEGV, SIGBUS, or SIGILL.

 + Fixed(?) an elusive bug which had been present for the past few versions
   which could cause ncftpbatch to infinite loop or sleep too long.

 + New configure flag, --disable-ccdv.

 + Compatibility fixes for C++ and Linux.

 + Fixed a socket leak and a crash on Win32.

 + A few minor fixes for firewall logins (Thanks, Jochen Schnapka).

 + By default, proxy connections for PORT are no longer allowed.  This is
   mostly an extra security precaution, to eliminate cases where someone
   could hijack a data connection by connecting to us after we issue PORT
   but before the server could connect to us.

 + ncftpls now accepts a "-R" flag which is equivalent to "-x -lR".
 
 + Bugs fixed in configure script for our "--with-*" arguments
   (Thanks, David Kaelbling).

 + A few new firewalls (permutations of type 1).  (Thanks, Felix Buenemann)


3.1.3, 2002-03-27

 + Bug fixed on Solaris where a socket could be left in non-blocking mode.
 
 + Ls parsing is now more forgiving of weird /bin/ls implementations (AIX).

 + Be more lenient on broken server implementations which include extra
   blank lines in the control connection conversation.

 + Fix for ncftpget which was exiting with code 3 if URL mode was used
   and the file already existed.

 + Fix for resume prompts which in some cases was printing dates in the
   format like "Sun Feb 20:02:15 CST 2002" instead of
   "Sun Feb 24 20:02:15 CST 2002".  (I.e. the day of the month was
   missing.)

 + Compatibility fixes for IRIX 5.x and AIX 4.2.x.

 + Compatibility fixes for Cygwin
   (Thanks, Charles Wilson <cwilson AT ece.gatech.edu>).

 + Some extra debugging information is now logged to the trace logs.

 + When running the Windows bookmark editor in standalone mode, the
   program may not have launched NcFTP correctly with the selected
   bookmark (Thanks, Jochen.Erwied AT mbs-software.de).


3.1.2, 2002-01-30:

 + A fix for the local hostname detection code which could result with only
   the first character of the domain appended, rather than the entire domain
   (Thanks, Bernhard Sadlowski <sadlowsk AT mathematik.uni-bielefeld.de>).

 + Another bug fixed in local hostname detection where looking up the host
   by IP address was not done correctly.

 + Fixed a few portability problems on HP-UX 10.20 which were introduced
   in 3.1.0.

 + Fixed bug with readdir_r usage on Solaris, which could cause crashes
   when doing "put -R", among other things.

 + On Linux, use gethostbyname2_r() to specify that we only want IPv4
   addresses returned.

 + Reversing behavior from 3.1.0 where we did a shutdown() on the half
   of the socket that wasn't used.  We suspect this was causing some
   firewalls and routers to panic and assume the whole connection was
   to be closed.

 + Bug fixed where an unresolvable hostname caused a pointless connection
   attempt which would fail.

 + Shell utilities now print an error message when incompatible flags
   are used in conjunction with "-b" or "-c".

 + A few fixes for ncftpbatch.

 + Numerous fixes for SOCKS5.


3.1.1, 2001-12-23:

 + Fixed bugs with our use of gethostbyname_r/addr_r on Linux.

 + Fixed bugs with our implementation of stat64() on Windows, which caused
   problems when querying information about local directories.
 
 + Source distributions now include install-sh again.

 + Bug fixed with Win32 version of ncftpbookmarks, which could look
   in $HOME/.ncftp rather than $HOME/ncftp.  Many Win32 users weren't
   affected, since the HOME environment variable is not always set.


3.1.0, 2001-12-17:

+ ACCT is now always sent if the server requests it and you're going
  through the firewall.

+ Bug fixed where puts could delay a few seconds unnecessarily after
  the file had been sent.

+ Bug fixed where passwords were saved if you chose to autosave bookmarks.
  NcFTP also makes an effort to avoid saving passwords in the history
  and trace files if you foolishly use passwords on your command lines.

+ Bug fixed on Win32 port where putting a file that did not exist could
  cause a crash.

+ The "-r" (recursive) flag is back for "bgget" and "bgput".  We now spool
  the directory by creating individual spool files for each file in the
  directory, which should increase reliability and usability of this feature.

+ The binary packages should be a bit leaner, since ncftpls wasn't getting
  stripped.

+ Library optimizations should result in less unneeded code included with
  programs that use the libraries.  The binaries should be smaller as a
  result.

+ Recursive uploading has been substantially reworked.  "put -R" should now
  work better, especially on the Win32 port.  Arbitrary pathname sizes have
  also been removed, so directory trees should only be limited by available
  memory and stack space.

+ Huge number of lint fixes.  NcFTP now compiles cleanly on several
  platforms even with extra warning options enabled.

+ Large number of internal changes to the configure scripts.

+ Using my cool hack, "ccdv", in Makefiles.  Originally this became a
  necessity since some platforms could have $CFLAGS 4 or 5 lines long!
  Besides streamlining the build process so that lint warnings can
  easily be spotted, the builds are pleasing to the eye with ANSI color
  if your $TERM supports it.

+ Fixed bug where Win32 $HOME bug fixed for 3.0.4 wasn't fixed for
  ncftpbookmarks.

+ Fixes for large file support for the Win32 port.

+ Bugs fixed in Win32 port of ncftpbatch.

+ A few bug fixes for getline.

+ The default ASCII extensions list no longer include ".sh", since Sun
  apparently distributes the JDK as a shell script with binary data
  appended.


3.0.4, 2001-10-24:

+ Workaround new "feature" of glibc which defines printf as a macro if
  gcc is version 2.97 or later.

+ Bug fixed from 3.0.3 that caused ^Z (suspend) to quit ncftp when it
  was brought back to the foreground.

+ Bug fixed where large file support (LFS) was disabled on most systems.

+ New "ncftpspooler" utility program (actually a hard link to
  "ncftpbatch") serves as a "Global batch FTP job processor daemon."

+ The utility program ncftpget now has a "-c" flag like ncftpput has.

+ Utility programs can now accept more than one -W/-X/-Y option, if
  multiple commands are needed.

+ When changing directories, programs will try to change to the full path
  first, then fall back to using "change one subdir at a time" mode.

+ Bug fixed where using the "delete local file after upload" option
  and the "upload into temp file, then rename" option, the local file
  would get deleted anyway if the rename failed.

+ Compatibility fixes for HP-UX.

+ Internal limits increased to handle longer command lines and more parameters.

+ Improvement to the reliability of the Win32 version by using the
  _snprintf and _vsnprintf functions rather than sprintf and vsprintf.

+ A few more tweaks for MS-DOS pathname compatibility.

+ A tweak for better compatibility with Microsoft IIS.

+ A few tweaks for Cygwin support.

+ Fixes for --sysconfdir configure option courtesy of Christian Wiesgerber.

+ SOCKS5 is back in, but we don't support it.

+ Improved Y2K bug detection in remote servers.

+ Changed naming format for bgget/put spool files.  The contents are now
  documented; see the ncftpspooler man page.

+ Bug fixed in Win32 port which used $HOME rather than $HOME/ncftp as the
  UNIX equivalent of the $HOME/.ncftp directory.  Since most folks won't
  have a $HOME environment variable on Win32, you'll probably not notice
  the change.


3.0.3, 2001-04-11:

+ Preference options can now be "file" completed on the command line with
  the set/show/prefs commands.

+ NcFTP directory changes are now always one subdirectory at a time, for
  better portability on remote servers with non-UNIX filesystems.

+ NcFTP tries to maintain the current directory itself, like /bin/ksh and
  Bash do, which means that symlinks remain part of the current working
  directory when possible.  For example, on ftp.freesoftware.com if your
  current directory is /pub and you "cd linux", NcFTP will use /pub/linux
  as the current directory, even though the canonical directory on the
  server is /.0/linux.  This is also useful for things like Linux's
  Kernel.org mirrors, so if you bgget a kernel.tar.gz file the "virtual"
  current directory is used rather than a specific-machine's layout.

+ Mac OS X support added.  No Mac or Aqua specific features yet.

+ NcFTP now has an option to automatically use ASCII mode for transfers
  if the file's extension corresponds to a textual data file type.

+ Using homegrown gl_getpass in place of getpass() and getpassphrase for
  all platforms, not just Windows..

+ Incorporating a few getline suggestions from Ken Cox.

+ Configuration tweaks for Cygwin port.

+ Removed some arbitrary buffer size limits.

+ Lint fixes.

+ Curses configuration fixes for HP-UX.

+ Shell utilities now have a "-bb" flag which is just like "-b" only
  the job is submitted only (and no ncftpbatch is spawned).

+ More problems fixed with interaction with Windows FTP servers.

+ Better compatibility with non-standard extensions to the FTP which
  allow for TCP Large Windows (specifically, SITE BUFSIZE).

+ Win32 port had a bug which leaked file handles.

+ Miscellaneous Win32 port fixes.

+ Changed default anonymous password to NcFTP@, since no one really cares
  any more about using a real e-mail address.

+ Bug fixed where some types of servers' features might not be queried.

+ Fixed some inconsistencies with the -a and -A flags among NcFTP and the
  shell utilities.  "-a" is now ASCII mode across the board, and "-A" is
  the flag to use for append mode (which not many people use anyway).

+ Bug fixed where the flag for delete after upload (-DD) was being
  ignored.

+ You can now do "set yes-i-know-about-NcFTPd yes" from a NcFTP prompt to get
  it to quit plugging NcFTPd every 7th time you run the program.

+ Like the system-wide /etc/ncftp.firewall and /etc/ncftp.firewall.fixed
  files for global preferences, there is now the equivalent for regular
  preference files (/etc/ncftp.prefs_v3 and /etc/ncftp.prefs_v3.fixed).

+ The ncftpbatch spool files now support some additional options for sending
  additional FTP commands.  The options are called "pre-command",
  "post-command", and "per-file-command".  This is useful if you need to
  send some odd SITE command before transfer, for example.

+ Similarly, ncftpget and ncftpput have new -W/-X/-Y switches so you can
  send pre/each/post commands.  (i.e. "-W SITE MY_WEIRD_IBM_MAINFRAME_OPTION").

+ Bug fixed where NcFTP was not taking advantage of re-using a currently
  open host when exiting and launching ncftpbatch.  If you bgget a file
  from within NcFTP, then exit while the host is still connected,
  ncftpbatch is supposed to inherit that existing context without having
  to reopen the host.

+ When using a URL with ncftpget, you can do "-a" to have it use ASCII.
  Prior versions forced to you use the little-known URL syntax to specify
  ASCII mode (btw, example of that is "ftp://ftp.foo.com/pub/README.TXT;a")

+ Bug fixed where our handling of the TCP_NODELAY option was not getting
  enabled.

+ A few tweaks for C++ compatibility.


3.0.2, 2000-10-18:

+ Fixed bug introduced in 3.0.1 which stripped off the leading slash
  for the directory parameter of ncftpget and ncftpput.

+ Problem where NcFTP would not timeout a hung data transfer fixed.

+ Improved support for large files (> 2 GB).

+ Increased some internal buffers to handle longer response lines.

+ Pagers are now enabled on the Win32 port.

+ Format bug in quote and site commands fixed.

+ Possibly fix problem with Solaris 2.5 complaining about "pollable
  event."

+ Win32 port bug fixed where NcFTP was not stripping off the quotation
  marks on your HOME or NCFTPDIR environment variable.

+ Fixed bug where your firewall information could be ignored.

+ Utilities now accept a "-j" flag for an account (ACCT) if you need
  to use that in addition to a USER and PASSword.

+ License has been changed.


3.0.1, 2000-03-27:

+ ncftpput has been changed to cd to the destination directory on the
  remote host before storing files.  In addition, it does it one
  subdirectory node at a time, like URL mode does for ncftpget.

+ Bug fixed where the "ncftpbookmarks --dimensions-terse" hack could
  be closed and generate a SIGPIPE which caused it to exit uncleanly,
  and possibly leave the terminal state hosed.

+ Added a snippet from Felix von Leitner <leitner AT fefe.de> to get the
  terminal width fairly painlessly, so the aforementioned hack should
  not be necessary in many cases.

+ Dtterm and vt220 added to the short list of vt100ish term types.

+ Win32 version bug fixed where ncftpbookmarks was not honoring the
  HOME enviornment variable, instead writing data to the install
  directory under Program Files.

+ Win32 version now uses Wise installer instead of InstallShield.


3.0.0, 2000-03-19:

+ New "redial-delay" preference setting, so you can easily set it and
  forget it rather than doing "-r 30" on each open.

+ NcFTP's "file exists" prompt now includes options to apply the same
  action to all files in the batch.  This should alleviate concerns by
  users who didn't want to babysit NcFTP through a large batch of files
  which exist locally.

+ Work around Y2K bug in old wu-ftpd servers.

+ Work around broken Novell 5.00 ftp servers.

+ Fixed a getline problem where entering a character with the high-bit
  set would cause NcFTP to exit.

+ NcFTP now no longer complains when you redirect a file into it as stdin.

+ NcFTP's getline now recognizes alternate escape sequences for the arrow
  keys.

+ NcFTP now allows a user to cancel an mget at the "file exists" prompt.

+ Continue redialing if the server returns a bad user reply, since
  some servers do their "too many users logged in check" at that time.

+ Try harder to display remote connect banner.

+ Fixed bug in remote mkdir which would fail if the subdirectory was in
  the root directory.

+ A few small memory leaks plugged.

+ Try to remove extraneous slashes from paths when possible, since Win32
  doesn't like them.

+ Win32 version tries harder to sleep the actual number of seconds
  requested even if means busy waiting, since Sleep() may return
  immediately if the system has nothing else to do.

+ Win32 version now checks for a HOME or NCFTPDIR environment variable.

+ Win32 version of ncftpbookmarks no longer locks up when trying to
  send a bookmark back to NcFTP.

+ The firewall password no longer echoes to the screen on the Win32 version.

+ NcFTP tries harder to get the actual screen width so that getline
  can use the whole line for input.  ncftpbookmarks has to be built
  and installed where NcFTP can find it for this ugly hack to work.

+ NcFTP now sends your anonymous password to batch jobs, rather than
  having NcFTPBatch compute a default value.

+ Shell utilities now default to PASV-then-PORT mode like NcFTP does,
  rather than use PORT only.

+ NcFTPGet and Put are now better about reporting a server error,
  rather than simply printing the worthless "could not start data
  transfer" message.

+ Getline now handles emacs ^W sequence.


Beta21, 1999-10-03:

+ Included HTML versions of the manual pages.  This is mostly for the
  Win32 port.

+ Bug fixed in ncftpls which was printing lines with \r\n instead of
  just \n.

+ NcFTP 3 is now covered by the Artistic License.  See the LICENSE.txt
  file for details.

+ The "prefs" file is now called "prefs_v3" for better coexistence with
  NcFTP 2.


Beta20, 1999-09-29:

+ Win32 (Windows 95/98/NT) supported natively!  You can download a pre-fab
  Setup, or build it yourself from the same source base that is used for
  UNIX.

+ Readline is out, Getline is in!

+ Using my "sio" library in conjunction with LibNcFTP.  This was done
to be consistent with other platforms, which don't use alarm() and
signal handline.

+ Change of licensing.  Specifically, GPL was shown the door.  NcFTP is,
has always been, and will continue to be free software.

+ Firewall type 6 bug fixed.

+ "put -f" fixed.

+ When the server asks for a password, NcFTP will print the text, in case
  you need that for a one-time password scheme like S/Key.

+ "get -R" asks for all files by using the equivalent of /bin/ls -lRa on
  the remote server.

+ A couple of small fixes for Cygwin, although in light of native support
  for Windows this seems moot.


Beta19, 1999-06-09:

+ Changed behavior so when auto-resume is off (still the default)
  NcFTP will automatically continue without prompting if the remote
  file's size and timestamp exactly match an existing local file.
  This will make auto-resume=no a more friendly default, since you'll
  still get prompted when the files differ, but won't bother you
  like beta 18 did if the files are the same.

+ Bug fixed where "get -f" on an existing file would still have the
  existing file prompt come up.

+ Work around bug with "-s" linker flag on IRIX 6.5.

+ Small fixes to support Mac OS X Server.

+ Using inet_ntop function if available to work around IRIX 
  DNS resolution problems.

+ NcFTP's "rm -r" fixed to better handle empty directories and .dotfiles.

+ Using SITE RETRBUFSIZE/RBUFSIZ/STORBUFSIZE/SBUFSIZ commands, if
  available, to try and coordinate large TCP window support between
  client and server.

+ Special case the IIS FTP server, so if it prints directory listings
  in DOS mode, then NcFTP can parse them for file completion.

+ A few more changes for Cygwin/32.

+ Workaround definition of "lines" by AIX headers.

+ Yet another permutation of firewall added.

+ NcFTP 3 now keeps a simple transfer log like NcFTP 2 did.

+ Bug fixed in ncftpbatch which was looping if the file to get already
  existed and was identical to the remote file.

+ Local commands now work better with wildcards.

+ Bug fixed where one of the firewall handlers was not prompting you
  for your firewall password.

+ Bug fixed where logging in succeeded but NcFTP could not "pwd"
  caused a crash.

+ You can now "ncftp -F" to dump a new firewall configuration template
  to stdout.


Beta18, 1999-02-19:

+ Bug fixed which caused downloads from servers other than wu-ftpd and
  NcFTPd to skip the first byte in the file.

+ NcFTP's new prompting-before-transferring feature had a bug which
  occasionally caused it to detect a non-existant remote file as
  existant.


Beta17, 1999-02-09:

+ New feature:  NcFTP now prompts you by default when you try to
  get/put a file that already exists.  

+ A few resume bugs fixed in both get and put.

+ New "jobs" command to list any running "ncftpbatch" tasks.

+ Shell utilities now honor the ~/.ncftp/firewall file so they
  can use the firewall settings.

+ If you're using the global version of the .firewall file,
  as /etc/ncftp.firewall, you can also set the "passive" setting
  in there.

+ Better large-file support for FreeBSD.

+ Capitulated to using the "install" utility in the Makefile.

+ Using autoconf-2.13 and new functionality to assist in configuring
  for UNIX on Win32 environments.

+ Avoiding problems in Solaris 7 headers which cause curses to not
  be autodetected.

+ Various improvements in FTP engine, including new support for
  proposed FTP standard..

+ TCP Large Window support, for those of you with obnoxiously large
  pipes to the internet.  Use the new "so-bufsize" option for "set",
  and "-B" options with ncftpget/put.

+ NcFTP now notes the server type, when possible, and works-around
  problems with certain ones.


Beta16, 1998-11-30:

+ NcFTP now does timestamp checking in addition to size checking to
  determine when to reget/reput.  NcFTP 2 did this, but NcFTP 3 will
  not be as aggressive to reduce the number of timezone synchronization
  problems.

+ Fixed a problem where if the remote server suddenly disconnected
  NcFTP would report the wrong error.

+ NcFTP tries to print a message when it doesn't need to get a file.

+ Fixed more problems related to NcFTP being inconsistent about printing
  startup messages and responses from the remote server.

+ User names, passwords, and accounts maximum length extended.

+ NcFTP now tries reput by default (ncftpput still does not).

+ Bug fixed in ncftpbatch which caused relative directory paths on
  the second and successive transfers on the same host to fail.

+ ncftpbatch now unspools an entry if a directory did not exist at
  connect time.

+ Account option added to shell utilties.

+ More readline band-aids.


Beta15(2), 1998-11-10:

+ --bindir change was not pointing to ncftpbatch correctly.

+ "get -R -a" is now detected and treated as "get -R".

+ getpassphrase() function is used in place of getpass(), where available.


Beta15, 1998-11-05:

+ NcFTP can now cope with cd'ing to unreadable directories.

+ The curses support (i.e. ncftpbookmarks) is now much more portable (for
  example, FreeBSD 3, SunOS 4, BSD/OS).  Still, your best bet is to install
  ncurses if you can.  At least one system's curses (HP-UX) compiles fine
  but doesn't work worth jack, so use ncurses there.

+ Firewall not being used correctly when you ran NcFTP with a host from the
  shell command-line.

+ Bug fixed where 32 spaces were being printed before running the pager.

+ configure now recognizes --bindir.

+ NcFTP now tries to print "server said" for a server related error,
  so NcFTP quits getting blamed for server problems.

+ More readline band-aids.

+ Rare problem fixed where a null pointer was being passed to a socket
  library function was causing core dumps and, in some cases, kernel
  panics.

+ Problem fixed with the new auto-TAR feature if the directory to download
  was a first level directory.

+ When auto-TAR mode is on, you can tell in the progress meter.

+ When auto-TAR is used for the first time, a one-time message is printed.

+ Bug fixed when using -R with a directory URL.

+ Doing a better job about displaying login and welcome messages.

+ Memory leak found and fixed.

+ Failed logins as non-anonymous no longer continue redialing and refailing.

+ Problem fixed where firewall user's firewall password could be logged
  in the trace log.

+ URLs displayed include the port number, if non-standard.

+ ncftpbatch resets it's exponential waiting period.

+ Problem fixed where uploading invalid files wasn't considered an error.

+ Local filesystem commands (lmkdir, etc) weren't handling files with
  spaces in them correctly.


Beta14, 1998-06-24:

+ Firewall Type 5 now works.

+ "cd" command now properly recognizes a wildcard.

+ NcFTP was failing to report an error when a wildcard did not match anything.

+ Progress reports on downloads had a bug where it wouldn't update as often
  as it should have been.

+ A "put" on a short file is now more likely to errout with a timeout
  error when the remote host is not responsive.

+ Bookmarks and commands now readline-complete without regards to case
  sensitivity.


Beta13, 1998-06-21:

+ Big change again -- NcFTP now automatically tries to take advantage of
  servers that do on-the-fly TAR.  NcFTP can dynamically fallback to the
  regular, non-TAR method when needed, so this should be somewhat
  transparent.  You can tell when NcFTP uses TAR when the progress
  meter shows only a directory being downloaded, instead of individual
  items within the directory tree.  Of course the advantage to using
  TAR mode is that the exact timestamps, permissions, etc can be
  preserved, as well as reducing the number of total connections to the
  server.

+ Bug fixed for regular get -R mode, which was causing failures on
  some servers.

+ There is a now a "local directory" field for bookmarks.  This is only
  settable using the Bookmark Editor.

+ Bug fixed where NcFTP wouldn't always fallback to PORT from PASV.

+ Bug fixed where NcFTP was not handling relative pathnames with more
  than one node correctly  (i.e. "foo" was okay, but "foo/bar" was not.)

+ The "-@" flag has been enhanced a little so it accepts a few more
  types of date/time specifications.

+ Bug fixed where NcFTP could be fooled into thinking a bookmark was not
  saved.

+ Trying harder to print the host list if the Bookmark Editor is not
  installed.

+ Main usage message was not always printed.

+ Small tweaks to the progress meters.

+ Shell utilities now identify themselves using CLNT command.

+ Completion bug fixed where a "/" was being appended for bookmarks and
  commands.


Beta12, 1998-06-04:

+ Big change -- curses is back, in limited form.  The bookmark editor
  runs as the fullscreen applet that NcFTP 2.4 has.  It is a separate
  program now (ncftpbookmarks) which is run by NcFTP (or you can run
  it in stand-alone mode).  Note that if you have problems getting
  the curses support to work, you do NOT have to build ncftpbookmarks.
  To do that, remove the config.cache file and
  "./configure --disable-curses".

+ Bookmark completion and command name completion added.

+ Recursive remote deletes are now possible (i.e. rm -r).

+ Shell command ("!") back.

+ Bug fixed where NcFTP would ignore ls output from OS/2 servers.

+ Bug fixed where a trailing slash was confusing put -R.

+ Bug fixed where a trailing slash was confusing file completion.

+ ncftpget and ncftpput now have a "-b" flag which lets you submit
  a batch job to ncftpbatch.  Now you don't need to run ncftp,
  open the site, and do bgget commands.

+ NcFTP now accepts URLs with the open command.

+ A bit more lenient when using directory URLs with NcFTP without the
  proper trailing slash.

+ Various small configure script bugs fixed.


Beta11, 1998-05-10:

+ Another problem with Auto-resume-downloads fixed.

+ The xterm title setting feature is now configurable from "prefs" and
  is off by default.

+ Problem fixed where files newer than the current date could be listed
  as the year before.

+ Small firewall support problem fixed.


Beta10, 1998-05-03:

+ Several problems with Auto-resume-downloads fixed.

+ Several problems with Redial fixed.  It is on by default -- let me know
  the specifics if it fails.

+ Problem fixed where a multiple get would try re-downloading files
  over and over again.

+ Problem fixed where if a multiple get failed the files that were downloaded
  successfully were deleted.

+ Bug fixed where "get -R" would create files as directories.

+ Master source drive lost -- some things had to be restored from backup
  and rebuilt entirely (such as the configure script stuff).  So, many things
  which were fixed may suddenly be un-fixed again.

+ Readline completion works with local directories and remote symlinks.

+ NcFTP recovers better from aborted transfers.

+ New signal handling, which will hopefully have the same behavior across
  platforms.

+ A few minor firewall problems fixed.

+ You can now have system-wide firewall settings stored in /etc/ncftp.firewall
  and /etc/ncftp.firewall.fixed, if you create them from a ~/.ncftp/firewall
  file.

+ You can now spool transfers to FTP servers on non-standard ports.

+ NcFTP now changes your xterm window title.

+ Bug fixed with spool files using the firewall's IP number.

+ ncftpbatch now works on case-insensitive filesystems.

+ configure's readline check now runs the test program to be sure it was
  linked correctly.


Beta9, 1998-01-25:

+ Bug fixed that was introduced in b8 that caused a crash after a transfer.

+ Readline completion with <TAB><TAB> should work better.

+ Bookmark lookups changed to full bookmark name only.

+ Configure bug where scanf("%qd") wasn't checked right.


Beta8, 1998-01-18:

+ Bug fix that broke the firewall support that used to work in Beta 6.

+ Bug fixes with RESTarting.

+ Smarter about using 64-bit or 32-bit mode (long longs or longs).

+ Yet another firewall added.

+ Fixes for HP-UX.

+ Readline 2.1 dependency worked around, so that Readline 2.0 is useable.

+ Unsupported -J flag added to use an ACCT name.

+ Uses NcFTPd's new "CLNT" command to specify FTP client type.

+ Hack so "open -u host" works like it did in earlier versions of NcFTP.


Beta7, 1997-12-28:

+ Should now be able to retrieve very large files (> 2 gig), depending
  on the libc and OS.

+ Namespace collision with GNU libc fixed (errno field).

+ get -R xxx now creates a ./xxx directory instead of dropping xxx/* 
  in the local directory.

+ New firewall type added.

+ Many file completion tweaks.

+ Another bug fixed where ASCII mode was getting turned on.

+ If you use a firewall, the firewall is now responsible for resolving
  host names.

+ Bug fixed with bgget/bgput with absolute pathnames.

+ Plug frequency reduced.

+ Bug fixed where command-line switches were not overriding bookmark settings.

+ Bug fixed where "set" commands were not taking effect until the current
  connection was closed.

+ StatBar progress meter revised.

+ ncftp_batch back-off revised.

+ ncftpget transfer type bug fixed.


Beta6, 1997-11-21:

+ Bookmark command bug fixed.

+ Bug with bookmarks fixed that could save the transfer type as ASCII.

+ Symlink hidden command added (only works with NcFTPd).

+ Including man page for ncftpls

+ Mkdir dirties cache

+ site and quote fixed


Beta5, 1997-11-19:

+ Fixes for AIX 4.1

+ Bug in put -R fixed.


Beta4, 1997-11-18:

+ Bug fixed that caused pdir/pls to act like ls.

+ Fixes for SunOS.

+ ncftpls added.

+ The philbar is back; you can now choose it as a progress meter
  if you don't like the statbar.

+ Checking for ncftpbatch before trying to run it.


Beta3, 1997-11-17:

+ Try not to use Readline when it is older than 2.0, or when its headers
  aren't installed correctly.

+ Fix for get -R, which could cause a crash during the post-downloading
  cleanup.

+ A little extra tracing for the firewall code.


Beta2, 1997-11-15:

+ Fix for unrecognized ls flags that would cause a crash.

+ NcFTP 3.0 prefers GNU Readline version 2.1, but it should now also
  work with version 2.0.

+ A few portability/lint fixes.
