New in 1.1

* Applied patch by Mark Schreiber that checks for errno.h in
* Less picky
* sysconfdir setting from configure honored (thanks to Toru TAKAMIZU)
* alternative SSH port now accepted (thanks Henk Csaba)
* Applied patch from Eduard Bloch that adds a setting for user
  configurable SSH options
* Uses standard SI prefixes for binary multiples (KiB, MiB, GiB) in
  transfer progress
* Fixed bug when pressing Ctrl-D in user input (ask), reported by Robin Breathe
* Applied patch by Thomas Habets, fixing a file descriptor leak
* Fixed the "-s" parameter for the "fxp" command (patch by Julien Antille)
* Included the large file support patch by Eduard Block
* Applied patch from Eduard Block that improved the help command
* Applied patch from Martin Pitt that fixes the errno.h problem in makepath.c

New in 1.0

* bumped version to 1.0 (at last!)
* applied patch from John Fremlin that adds an option to disable the
  dots (...) while waiting for directory download when completing
* compare filesize & -date if file already exists (suggested by Steve Grecni)
* added cache timeout feature (suggested by Cameron W Johnston)
* made sftp:// an alias to ssh:// (suggested by Marcel Prisi)
* put --append didn't work in ssh mode, fixed
* fxp now uses other connection as default target (if there are
  exactly two open connections) (suggested by Phyber)
* fixed get/put/fxp/rm on directories with apostrophes and other chars
  that need to be quoted (reported by Morra)
* bookmark -u (w/o host) now also updates the saved bookmarks file
* added option auto_bookmark_update: specifies handling of updating
  existing bookmarks (suggested by Aleksander Adamowski)
* the ltag command now ignores multiples just as tag does
* only tries to parse MLSD if MLSD command given
* directory listing can now partly fail (if not all lines failed, yafc
  will show the files that it could parse),
* support for iso date and time format in unix directory listing
  (YYYY-MM-DD HH:mm)
* added option --skip-empty to get/put/fxp (skips empty files)
* added config option transfer_first_mask (transfers specified files
  before other files)
* fixed bug in ssh put: --resume truncated file (reported by Eduard Bloch)
* upgraded to latest autoconf/automake
* new autoconf checks for Kerberos based on code from the Arla project
* now check for Kerberos by default

New in 0.7.10

* fixed segfault in list.c

New in 0.7.9

* Changed get -o function; if the argument ends with a slash it is
  always considered a directory, if only one file is transferred and the
  destination already exists and is a directory the file is put in that
  directory (thanks David Harris)

* the "long command" setting now also applies to connection attempts (thanks Aubin Paul)

* put, rm, untag, cat and ltag functions now handles quoted characters
  correctly (thanks to Mark Schreiber)

* fixed segfault with bookmarks without login (thanks Markus Dobel)

New in 0.7.8

* Fixed segfault when issuing "bookmark -u" without being connected.
* Went around issue in PureFTPd when listing files using
  MLSD. PureFTPd doesn't recognize directory arguments with spaces.

New in 0.7.7

* Applied patch from Decklin Foster, fixing segfault on connecting with a
  'default' statement in config file (reported by Ari Pollak)

New in 0.7.6

* Replaced yafc.spec from Ryan Weaver with one by Mandrake (untested!)
* applied patch from Eduardo Pérez, now yafc by default doesn't send
  email address as anonymous password
* fixed bug with mkdir/rmdir in wrong directory in ssh mode
* 'yafc ssh://hostname -u' now asks for username
* fixed wrong number of days per month
* removed -o options to ssh when connecting in ssh mode
* added bookmark option 'noupdate' and bookmark -u option (toggles force
  disable auto update of bookmark)

New in 0.7.5

* fixed reconnection loop (reported by Johan Renström)
* put didn't transfer .dotdirectories (reported by Alan Hagge)
* get -a (append) wasn't recognized (reported by Decklin Foster)

New in 0.7.4

* Fixed segfault in DOS directory listings (thanks Cort Tompkins)
* Fixed alias %-expansion off-by-one bug, %1 is now the first arg (thanks Jens Askengren)
* Fixed parse error in some weird directory listings (thanks Matthew Gabeler-Lee)

New in 0.7.3

* Fixed segfault when doing a 'alias l', where l is an ambiguous alias (thanks Ari Pollak)

New in 0.7.2

* Applied patch from Mark Screiber, fixing 'yafc -a unresolvablehost' bug
* Fixed bug with binary transfers being in ascii mode after reconnect
* Support for MLSD directory listings
* removed 'help cmd', use 'cmd --help' instead
* removed filesize and flush commands

New in 0.7.1

* removed bignum functions from src/ftp/bufaux.[ch] (depended on openssl)
* added checks for data types
* added per-url sftp setting (specifies path to remote sftp-server program)
* new option to open: --sftp=PATH to remote sftp-server program
* added check for pipe/socketpair in
* fixed sorting bug in 'ls' introduced in version 0.7

New in 0.7

* Applied patch from Tim Mooney, adding support for MIT Kerberos 5
* Added support for readline 4.2
* Automatic reconnection if connection timed out
* new option: autoreconnect true/false
* new command: reopen
* SSH2 support (incorporated code from sftp/OpenSSH)
   try "open ssh://username@host"
* new option: ssh_program (path to local ssh program)
* new option: sftp_server_program (path to remote sftp-server program)
* now stores protocol in bookmarks file
* updates bookmarks if protocol changed (eg, from "ftp" to "ssh")
* ls now always sorts on name (if no other sort method is specified)
* 'ls -r' now works (lists in reversed name order)
* 'ls .' now works
* new option: reverse_dns, do reverse DNS lookups? (thanks Ari Pollak)
* cleanups for old readline 2.0
* removed gettext support (not used anyway)
* defaults to passive mode
* new default transfer_string
* transfers are now verbose by default (use --quiet to turn off progress bar)

New in 0.6.6

* fixed site command (didn't recognize args correctly) (thanks Clemens Ender)
* fixed connect retry bug in login.c (thanks Matthew Gabeler-Lee)
* fixed compile error when not using readline (thanks Jason Lunz)
* "ls ./" didn't get cache hit

New in 0.6.5

* changed default value for auto_bookmark to yes
* added option --type={ascii|binary} to cat
* forgot a fflush() in cat (cat didn't work on binary files) (thanks Decklin)
* fixed broken alias zpage in yafcrc.sample + added (b)zcat alias
* removed arguments to site command (thanks to Robert Hahn)
* 'get/put onefile -o othername' instead of 'get/put onefile -o otherdir'
     confused? look in the manual... (thanks to Skyper Sorg)
* use_passive_mode in config file was ignored (thanks to Ari Pollak)
* new option: transfer_xterm_string (thanks to Ari Pollak)
* removed swedish po-file (I don't have time to maintain it)
* check for circular include statements in config file
* bookmarks are now always kept in ~/.yafc/bookmarks
* cleanups; moved small generic funcs to utils.c
* even more manual updates
* protlevel is now updated in bookmarks

New in 0.6.4

* removed lib/setproctitle.[ch] due to licensing problems (thanks Decklin)
* moved src/bashline.[ch] to lib/
* updated manpage
* more manual updates
* zcat removed (use 'cat | zcat' or 'cat | bunzip2 -c')

New in 0.6.3

* removed nokrb option in bookmarks
* added option --mechanism=MECH to open command (and removed --krb/--nokrb)
* always using private protlevel in kauth
* fix for DOS style paths (w/backslashes)
* some manual updates
* added per-url passive mode setting in bookmarks
* added per-url mechanism setting in bookmarks

New in 0.6.2

* sets nokrb option if AUTH unknown
* added bookmark --delete
* implemented luntag
* fixed bug in local taglist saving/loading
* fixed alias bug (segfault)
* DOS LIST-output directory filename bug fixed
* DOS LIST-output y2k issue fixed (now assumes 21th century if YY < 70)

New in 0.6.1

* bug in recursive put fixed (didn't create directories correctly)

New in 0.6

* fixed long-standing kerberos problems (now also supports NAT)
* cleanups
* --mask=GLOB and --rx-mask=REGEXP options (get, put and fxp)
   (transfers only files matching a pattern, useful in recursion)
* --dir-mask=GLOB and --dir-rx-mask=REGEXP options (get, put and fxp)
   (enters only directories matching a pattern, useful in recursion)
* auto bookmarking doesn't overwrite bookmarks w/different hosts
   but creates different versions
* Kerberos 5 support (Heimdal, through GSSAPI)
* FxP support (not thouroughly tested)

New in 0.5.8

* fixed segfault when listing unreadable directories
* #ifdef'd setproctitle calls

New in 0.5.7

* endless loop in rc.c fixed
* abbreviation for set-variables
* bug in DOS directory listing with filenames w/spaces
* removed C++-style comments in strq.c
* swapped order of -lreadline and -l{terminal lib} in
* removed --help option for cd command
* added a man page (Thanks to Decklin Foster)
* tag didn't ignore multiple copies of same filename
* better remote tilde path handling (ls ~ didn't work)
* added option --workdir=DIR for setting the working directory (default ~/.yafc)

New in 0.5.6

* added --help option for untag
* added *.md5 to ascii_transfer_mask
* now parses system-wide /etc/yafcrc on startup
  + doesn't create default ~/.yafc/yafcrc on first run
* rglob.c: didn't update directory cache properly
* segfault in get/put if connection timed out
* tag now ignores multiple copies of same filename
* removed the visual tag interface (it didn't work anyway)
* bookmark multiples are always replaced (instead of skipped)
* rfile.c: files in root directory had two slashes (//file instead of /file)
* transfer was aborted after suspend

New in 0.5.5

* only first alias in a multiple command command line was expanded
* fixed bug in switch command, arguments were ignored
* cat now supports wildcards

New in 0.5.4

* support for MacOS WebStar ftp server
* fixed the rels alias error from 0.5.3

New in 0.5.3

* info manual updates
* rc.c: empty string (ie "") in config file caused errors
* completion.c: completion breaks at ';'
* cache --touch now has optional directory argument(s)
* error in alias expansion parameters (%1,%*) when used
   with an alias including several commands
* yafcrc.sample: error in rels alias
* fixed buffer overflow in ftp reply

New in 0.5.2

* Applied patch from Ryan Weaver for rpm spec file
* configure script unsets CDPATH variable
* info manual updates

New in 0.5.1

* yafc "resets" the xterm title to $TERM on exit/suspend
* get --preserve now also on directories
* get --preserve handles suid/sgid/sticky bits
* tried to fix problems with DOS-paths
* new option --clear to tag and ltag command
* local taglist is also saved
* yafcrc.sample: proxy hosts should be separated with colon (':')
* configure creates a yafc.spec file for rpm building (thanks to Ryan Weaver)

New in 0.5.0

* awful bug in redirection code fixed
* EPLF support (Easily Parsed LIST Format)
* quoting fixes
* made (mostly) all commands accept --help option

New in 0.4.9 (released 1999-11-08)

* proxy support! untested, please report if you test it
* url accepts option --no-encoding
* ftpsend.c (ftp_list): fixed bug that caused yafc to hang on ls
* fixed bug in lib/glob.yafc.h, didn't compile on Tru64 Unix
* error in get --newer: didn't correctly compare filetimes in GMT

New in 0.4.8 (released 1999-10-14)

* xterm title is now printed immediately when yafc is continued
   after a suspend
* updated Texinfo manual a little
* removed the man page
* user is asked if to continue interrupted transfer even
   if -f flag is given
* more verbose report in nohup mail
* src/ removed tag.h, not used
* saves taglist on disconnect + loads on connect
* new option: load_taglist yes/no/ask
* changed default answer in get/put if file already exists to [R]esume
* same syntax for defining aliases on command line as in yafcrc
* made the tag command accept options; --info and --list
  + removed taglist and taginfo commands
* made the cache command accept options;
   ie, 'cache clear' -> 'cache --clear', try 'cache --help'
* added taglist completion for untag command
* removed -al parameter to LIST command for ls

New in 0.4.7 (released 1999-09-12)

* support for dos-style directory listings
* trace files now works with multiple connections
* applied patch from Leonid Zeitlin 
   this fixes (color) escape codes in transfer_string by
   enclosing them in %{ and %} pairs like the prompts
* option 'prompt_on_disconnect' in yafcrc removed (not used)
* fixed segfault in completion for the 'switch' command
* local filename completion for '!' command

New in 0.4.6 (released 1999-08-03)

* visual (remote) tagging interface using newt library
   this is experimental, tell me if you like it!
   it is activated by the 'tag' command, without arguments

* Yafc can now have multiple connections open
   use the new 'switch' command to switch between them
   (no, you can't fxp files between them, yet)
* new prompt codes: %c (number of open connections) and 
   %C (current connection number)

* started adding documentation in Texinfo format

* added yafcrc options:
   xterm_title[123]: set title of xterm window
   xterm_title_terms: $TERM's which can handle xterm escape sequences

* applied patch from Mike Wayne  adding -w, --wait=TIME
   cmdline option to yafc (overrides connect_wait_time option in yafcrc)
* list.c: added sorting on time (-t option) to ls
* new command: url (shows the current url)
* new command: source (reads a config file)

* removed the 'lcat' command (use alias lcat !cat instead)
* removed the 'page' command (use alias page "cat %* | $PAGER" instead)
* removed the 'zpage' command (use alias zpage "zcat %* | $PAGER" instead)
* removed the 'pager' keyword from yafcrc since it's no longer used

* rc.c: bookmark alias abbreviation bug fixed
* commands.c: (z)cat now always transfers files in binary mode
* commands.c: zcat now handles bzip2 compressed files
* command.c: fixed %-parameters to aliases; redirections are not replaced
* alias.c: fixed problem with alias to ! (eg, alias date !date didn't work)
* completion.c: fixed segfault if trying remote completion when not loggedin
* put.c: changed short option from -S to -R (--resume) to be consistent with get
* put.c: added [r]esume to ask-string if file already exists
* open now recognizes --noalias as it should
* shortpath.c: fixed a bug (yeah, no kidding)
* rc.c: didn't recognize 'sendmail_path' and 'debug' keywords in yafcrc

New in 0.4.5

* added special alias parameters; %1,%2,...,%n and %* which is replaced
   with the nth argument to the alias, %* replaces all alias arguments
* new option in yafcrc: use_env_string
* multiple commands can now be entered at the command line, separated with ';'
* new option to open, --noalias, which disables bookmark alias lookup,
   the --noauto option disables autologin but allows bookmark aliases
* new option to get, --chmod=PERM, which changes permissions on local files
   same arguments as to GNU chmod(1) command
* new option go get, --chgrp=GROUP, changes group of transferred files
* new options to user, --nokrb and --krb, same as in open
* sort in ls (-X, -U, -S, -r, --reverse options to ls)
* new option to ls, --dirs-first, shows directories first

* fiddled a lot with quoting and completion code,
   included quotion functions from bash
* rfile.c: segfault if server didn't send group info (like ls -o or ls -lG)
* login.c: user --help fixed
* yafc should now compile on FreeBSD (tested on i386 3.1-RELEASE)
* now always builds with GNU glob
   put crashed on FreeBSD because the wrong glob.h header file was included
* rc.c: 'verbose on' in yafcrc didn't work
* put.c: printed 'get' instead of 'put' in env. string
* transfer.c: visual progress bar filled screen with #'s on very large files
* ftp.c (ftp_rename): didn't update directory cache

New in 0.4.4

* input.c: online help in ask() (appends a '?' char to the keystring)
* more checks for libresolv and libnsl
* changed -r switch for ls to -R (--recursive) like /bin/ls
* 'ls -l --color' now tries to colorize any links found
* applied patch from Mike Wayne , adding option tilde in yafcrc
* the quote command now doesn't require to be loggedin
* bookmark.c: fixed bug in saving password
* login.c: didn't connect if connect_attempts was set to 0 (zero)
* can now set connect_attempts to -1 for unlimited number of retries

New in 0.4.3

* tab completion should work on symlinks now
* ls now recognizes screen width
* allows redirection characters anywhere in the command line
* auto_bookmark now updates the bookmark if changed
* added bookmark tab completion
* added option in yafcrc: auto_bookmark_silent
* bookmarks can now be abbreviated
* added -N, --literal option for ls
* added -p, --preserve option for put (tries to preserve attributes)

* Mike Wayne  contributed a perl script to convert NcFTP's
   bookmarks into yafc bookmarks.


* ftp.c: forgot to close a filedescriptor
* syshdr.h: #include 
* rglob.c: didn't unquote spaces
* rlutil.c: replaced char_is_quoted() function with the one from bash source
    completion should work better with double- or single-quoted filenames
* commands.c: arguments to '!' and 'shell' are now unquoted by the shell
* get.c, put.c: didn't expand tilde for --output argument

New in 0.4.2

* added an auto_bookmark option to the rcfile
   disabled by default, use 'auto_bookmark yes/no/ask' to turn it on
* nlist command now recognizes arguments
* lscolors.c: changed default color settings to be consistent with GNU ls

bugs fixed:

* ftp.c (ftp_read_directory): cached path not always absolute
* get.c, put.c: removed --test option (wasn't properly implemented anyway)
* redir.c: segfault on "!" command (thanks Jason Gibson )
* main.c: --noauto option to yafc wasn't recognized
* rc.c: ignored multiple spaces in a row (thanks Mike Wayne )
* transfer.c: transfer strings should print ok now (I think)
* bookmark.c: stupid typo, never asked whether to save password or not
* bookmark.c: bookmark --list implemented
* shortpath.c: null pointer removed (thanks Christophe Tardy )
* get.c: improved handling of links (ie, less buggy :)
* get.c: oops, forgot to print '-d, --no-dereference' in syntax
     (copies symbolic links as symbolic links)
* put.c: 'put *' now puts _all_ files, including .dotfiles
* prompt.c: segfault if %u, %~ etc given in prompt1 and prompt2
* ftpsend.c (ftp_putfile): swapped remote/local filename printed
   so %R in transfer_string actually means _source_ file and %L _target_ file
* ltag.c: local tagging rewritten
* transfer.c: didn't print total size if ascii transfer
* args.c (args_unquote): removes zero-length args
* lscolors.c: fixed segfault in init_colors

New in 0.4.1 (first announcement on

* I hope the code now has stabilized (no total rewrites anymore :-)

* redir.c: added '>>', '|&', '>&' and '>>&' type redirection
* doc/yafc.1: updated (still incomplete)


* ftp/rfile.c (rfile_parse): handles special devices
* commands.c, ftp.c: help command now recognizes argument
* bookmark.c: didn't always save directory
* commands.c (cmd_chmod): better verbosity
* ftp.c (ftp_set_trace): changed buffering of tracefile to unbuffered
* rglob.c (rglob_glob): faking file if no wildcards and dir not cached
* get.c: --preserve now changes timestamp (as it should)

New in 0.4.0

* total rewrite since 0.3.4
* back to C again :-)
* added trace functionality
* ctrl-c handling
* better ABOR handling
* URL parsing now handles directories better (the url-path)
  (the "/" between the host (or port) and the url-path is NOT part of the
   url-path, no encoding of special characters are done though)
* yafc can send mail to the user when a nohupped transfer is finished
* if SIGHUP received, continues transfers in background, nohupped

* much more...