kit, then hacked on by Matt Thomas <matt@3am-software.com>, then by me.
This runs, but it's in serious need of cleaning and/or a fair bit of
reworking. See the README file for more information, and a list of things
to do.
* implement 'progress bar/meter' (inspired by ncftp). use 'progress' to
toggle on. it will display current file size to 5 digits, automatically
determining suffix (up to 16384 P (petabytes) == 2^64).
* 'ls' now uses NLST (unadorned listing), a la older ftp clients. 'dir'
still does LIST (long listing). idea from John Nemeth <jnemeth@cue.bc.ca>
bug fixes:
* return first line of reply in reply_string[] from getreply(), instead
of last line. This fixes [bin/741] (parsing of SYST), and also means
that SIZE and MDTM messages will be parsed correctly if they're longer
than 1 line.
* parse URL-style auto-ftps that have no filename correctly
(e.g, ftp://host, ftp://host/, ftp://host/dir/). pointed out by
Jaromir Dolecek <dolecek@saruman.ics.muni.cz>
* pass the correct size array in 2nd arg of utimes() when setting the
modification time
friedman@gnu.ai.mit.edu (Noah Friedman) made to his modified ftp:
- implement "lpwd" - local pwd
- implement "preserve" - toggle preserving of file modification
times on retrieved files
- allow for explicit "on" or "off" arg to toggle commands
- "exit" synonym for "quit", "msend" synonym for "mput"
- in confirmation mode, allow 'a' (yes to rest of current command),
and 'p' (turn off prompt mode, as if 'prompt off' was done,
effective immediately)
- "modtime" returns time formatted as localtime, not GMT
Bug fixes:
- check for extraneous args on commands
- cleanup const usage, line formatting
- create 0 length temporary file in remglob() to prevent symlink games
(from OpenBSD)
- check length of filename of ~/.netrc (from OpenBSD)
If a user wishes to change a password on a system running YP, and
the master server is not running rpc.yppasswdd, chpass(1) would fail,
even if the user had a local entry. Fix this by checking for local
entry if master is not running rpc.yppasswd iff we defaulted to using
YP (not invoked with "-y").
XXX Unlike the similar change to passwd(1), this one duplicates some
XXX code (makes an attempt to contact rpc.yppasswdd early). This is
XXX a side-effect of the structure of this program. chpass(1) could
XXX use a re-write.
If a user wishes to change a password on a system running YP, and
the master server is not running rpc.yppasswdd, passwd(1) would fail,
even if the user had a local entry. Fix this by checking for local
entry if master is not running rpc.yppasswd iff we defaulted to using
YP (not invoked as "yppasswd" or with "-y").
Printing only those with the name "intr" is too restrictive, because it
means that devices can only have one interrupt, which makes little
sense for many devices and absolutely no sense for several common busses.
- don't echo 'ACCT' parameter when debugging (a la 'PASS')
- Fix checking of directory access for "/foo", the parent
directory is "/", not "" (from FreeBSD)
- remove trailing whitespace on lines
- add any missing NetBSD tags
- cleanups to man page, includinging sorting options description
feature additions:
- variable sized hash marks (from [bin/683], but done in the hash command
as an optional arg)
- more user-friendly transfer time printing (from FreeBSD, with mods)
- '-p' command line option to jump into PASV mode (closes [bin/2857],
but with an option rather than checking argv[0])
- SIGINFO support for printing xfer stats when sending/receiving requests
- '-P port' for changing the port to connect to (from thorpej@netbsd.org)
- '-a': bypass normal login, and try anonymous login (from OpenBSD
via thorpej)
- autofetch files via url (ftp://...) or "classic" (host:/file)
(from OpenBSD via thorpej)
- 'ftp' synonymous with 'open' (from FreeBSD)
-o (the reverse of this, also the default)
- use vis(3) in vputc() instead of handcrufted function (from OpenBSD).
- move gecos expansion into expandusername() (a la sendmail's buildfname).
A generic version of this last bit in libutil would be useful...
- cleanup the code, fix prototypes, etc.
- don't allow quotes in terminal names (for -s and -S) as they confuse
the shell. whitespace is currently forbidden for the same reason.
as there isn't any orthoganol way of escaping this, forbid it all,
which makes [bin/306] unfixable.
- use str(r)char instead of (r)index