- fix compile time problem with gcc 3.4 and the gcc-3.3.3 of SuSE 9.1.
- the --eat-leading-spaces option allows ftpcopy and ftpls to deal with
some FTP servers showing sometimes more than one space before the file
- the --data-connect-retries allows ftpcopy and ftpls to more than once
try to connect to the data port of an FTP server. By default they now
try 5 times, but that may change again. Note that this does not mean
that ftpcopy retries when a connection is lost.
- the --in-exclude-file option to ftpcopy allows to put the include and
exclude patterns in a file.
# --tolower was't taken into account for the in/exclude matching.
# the symlink handling of ftpcopy was broken and worked by luck only.
# ftpls wasn't able to print big file sizes correctly.
- the usual amount of portability workarounds, this time featuring
another place to find the publicfile ftpd, a workaround for systems
by default using right/UTC for UTC (instead of the more common
posix/UTC) and another shell breaking the self check by trying to
inform the user that a command was killed by an alarm signal (which,
in case you wonder, was exactly what i wanted).
- the package should now compile again on systems not recognizing IPv6.
- the URL parser used refused URLs w/o a trailing path.
- the --raw option erronously wanted an argument.
- portability fixes.
- package/install may be run multiple times.
- ftpls didn't append a trailing / to html output.
- package/build script to compile and check the package, not doing any
installation or changing symbolic links.
- the listing parser is more careful not to eat leading spaces.
- another self check fix.
- self check improvements:
* the self check now works on reiserfs or other file systems not preserving
the order of files.
* the environment isn't cleared before the self check starts.
- enhancements to the --progress option: it know uses the window size instead
of a fixed limit of 80, and makes sure that the 100% message is printed.
- the programs now include a work-around for the "illegal redirect" problem
in case they are used behind some NAT gateway.
- --mdtm was broken.
- work around "set -e" brokenness in pdksh.
- smaller dns library changes to allow to share resolv.conf between machines
not having all the same IPvX stacks and to use 127.0.0.1 as nameserver of
last resort, not only ::1.
- download resume implemented. use the --no-resume option to disable it.
- a new option: `--report', to print a progress report on the standard
- work around glibc-2.3 stub function for futimes(), which broke ftpcopy.
- IPv6 is now supported.
- new options --v6 and --v4 to limit command and data connections to
this IP protocol. This does not affect DNS queries.
- internal development release.
- a new option: `--max-depth LEVELS', to descend only up to LEVELS levels
of directories, in ftpcopy and ftpls.
- another workaround for a strange server implementation.
- removed two sources of imperfect error messages.
- a new option: `--max-size BYTES', to limit the maximum file size.
- smaller bug fixes.
- ftpcopy will no longer reget files when the ftp server has changed it's
date representation (/bin/ls style listings).
- replaced dns library by latest (and public domain) version.
- rewrote the FTP listing parser completely, thereby removing the last
piece of code not public domain or *GPL.
WARNING: If it would be a big problem for you if ftpcopy regets all
files, then be careful and use the -n option the first time you run
ftpcopy-0.5.0 (or keep an eye on it while it runs). It's possible that
the new parser still has some bugs, especially in the time handling.
This didn't hit me, though.
- internal cleanup.
- parallel make possible.
- bugfix: the setenv replacement code crashed.
- removed a number of portability issues.
- --dry-run now shows what would be deleted, too.
- worked around a number of server problems, including an MLSx parse error.
- ftpcopy now compiles on Apples OS X.
- implemented --rate-limit option for ftpcopy.
- fixed a bug in ftpls recursive mode causing it to chop the first character
of the directory name.
- fixed two compile time problems which probably didn't hurt too many people.
- added a --raw option to ftpls to make it print the directory listings
without any modifications.
- added a --print-dir option to ftpls to make it print directory names
before their content.
- worked around a ftp server which closed the data connection without having
sent a single byte.
- reordered and grouped --longhelp and --help output.
- added --login-sleep option. It affects the time to sleep after a
failed connect or login. The default is the fixed value used before (5).
- added --max-deletes option to control how many files will be deleted
at the end of a single run. The default is unlimited.
- fixed a bug in the MLSD processing.
- added --ignore-time option to not download files if the modification
time has changed.
- added --ignore-size option to not download files if the size has changed.
- ftpls will no longer follow endless symbolic link loops.
- the workaround for missing utimes() didn't work. Impact: 0.4.2 didn't
compile on such systems (fix: trivial).
- the package now compiles even if utimes() is not available.
- fixed some hypotetical compiler / library incompatibilities.
- if ftpcopy detects that a file locally exists, but it is a link
on the remote server, then create a link locally.
- add support for MLSD (a new listing format, please get and read
draft-ietf-ftpext-mlst-13.txt from your favourite internet drafts
- GNU fileutils 3.16 "touch -t" expects different format than newer
versions. Impact: Self check failed. Workaround: do not use "touch -t"
- added --mdtm option to ftpcopy as a workaround for servers with
traditional ftp listings using time zones other than UTC.
- switch to new build/package system. The package now conforms
to slashpackage (http://cr.yp.to/slashpackage.html and
Distributors: read http://www.ohse.de/uwe/ftpcopy/dist.html.
- fixed two file descriptor leaks in ftpcopy.
- ftpcopy --bps logs the transfer rates after successful downloads.
- added a --timeout option to ftpls and ftpcopy.
- don't allow the FTP server do redirect PASV to other hosts or
ports < 1024 (with the exception of port 20).
- added a --tolower option to ftpcopy, to change all local file and
directory names to lowercase.
- fixed some error messages.
- added a --recursive option to ftpls.
- temporary files are created in the target directory.
- added a --force-select option to ftpcopy and ftpls to allow them
to be used with the socks5 reference implementation, which does
not support the poll system call.
Note: the clients are not, and will never, socks-friendly. They
need a directly reachable DNS resolver. This option just allows
them to work with runsocks.
- fixed a bug in the handling of the top level remote and local directory.
spotted by <firstname.lastname@example.org>.
- removed the --remove-dir and --keep-dir options from ftpcopy.
The behaviour of --remove-dir is now default. --keep-dir is gone,
and --remove-dir is the right way to do things anyway.
- fixed ftpcopy behaviour in case a file has been changed into
a directory or vice versa. It used to stop with an error message,
now it does the right thing.
- added a testsuite. Read more about this in the INSTALL file.
- fixed a number of bugs. Too many, to be honest, but none of them
seems to have hurt anybody before. See ChangeLog.
- added --dry-run option.
- fixed, once again, the output of --help, --version and error messages.
- ftpcopy failed to copy an initial remote directory on a wu-ftpd
server if that directory contained exactly one file. ftpcopy also
failed to copy empty directories.
- ftpcopy didn't create the local directory if the first entity to
be copied might have been a file.
- ftpcopy no longer uses lstat to compare file size and date during
downloads. stat() is more appropriate. (Spotted by Nagy Erno <email@example.com>
a long time ago)
- implemented a --interactive option in ftpcopy and ftpls.
ftpls will read the directory to be listed from the standard input.
ftpcopy will read both the remote directory to be copied and the local
directory which shall contain the copy from stdin, on directory on
each line. Both programs exit on end-of-file.
- fixed output of --version and error messages. (this didn't hit everyone)
- documented ftpcopys default of the local directory to the current
- made that default only apply if the "-n" option is used.
NOTE: if you didn't specify a target directory and didn't use
the "-n" option before then you need to add a "." argument now.
This change was done to make sure that "ftpcopy ftp://whereever/"
doesn't eat your home directory if you happen to be in that now.
You can override this security check by providing a "." argument.
- Fixed a file system portability problem. Impact: wrong timestamps on
mirrors. Thanks to Felix von Leitner <firstname.lastname@example.org>.$
- implemented option to deal with FTP "ACCT".
- No validity check on remote files names was done.
Impact: security breach if the FTP server uses names like
../../../../etc/passwd. Solution: ignore files with / in the name.
Note: don't run ftpcopy as root, anyway.
- The programs try to deal more nicely with ^z.
- There's a mailing list for ftpcopy. To subscribe send mail to
- don't kill old proftpd servers, don't waste bandwithd.
- understands the listing format of ftp.nai.com.
- a number of environment variables may influence where "make install"
puts the files. See http://www.ohse.de/uwe/uoinstall.html for
- ftpcopy logged empty wildcard expression in case of exclusion.
- the tools can be told to not log in (--user="").
- a new script, "ftpcp", acts like `ftpcopy -n "$@"'
- bugfix: directory deletions didn't work.
- new option: --include (like and unlike --exclude)
- new option: --list-options XXX
for options to be given to the list commands.
- new option: --tries (maximum number of connect and
log in attempts).
- portability enhancements.
- reduced package size by not using autoconf & automake anymore.
- ftpcopy now works if the path to the target is a relative one
(that is, "ftpcopy ... ./newdir" no works).
- ftpls can now be used not only to list directories, but also
to list files.
- portability enhancements.
- bug fixes.
- new program ftpls
- ftpcopy now understands URLs.
- ftpcopy doesn't need a local directory anymore, it tries to
save the file in the current directory.
- ftpcopy: a new option "-m / --max-days" to restricted downloading
to files not older than a given amount of days.
- ftpcopy: a new option "-x / --exclude", may be used to stop
downloading of files matching a wildcard, or entering directories
matching a wildcard.
- some interoperability fixes (traditional FTP servers).
* Release 0.1.2
* ftpcopy.c: implemented option to deal with symbolic links
on broken ftp servers.
implemented option to only create the directory hierarchie
(together with the option mentioned above it will also
create symbolic links).
deal with multiline FTP responses.
fixed a bug in the symlink creation function (used by EPLF
and traditional stuff).
use null terminated strings everywhere.
* Release 0.1.1
(0.1.0 was used internally)