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.
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.
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)
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.
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.
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.
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.
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.
A fix for some DNS resolution problems on Linux.
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).
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.
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.
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.
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.
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)
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
--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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
Fixes for AIX 4.1
Bug in put -R fixed.
Bug fixed that caused pdir/pls to act like ls.
Fixes for SunOS.
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.
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.
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.