1998-10-23  Alexander V. Lukyanov  <lav@yars.free.net>

	* FtpListInfo.cc: fix exclude/include, implement follow_symlinks
	* commands.cc: (do_lftp) call do_open only if no lftp-specific options
	  were found; (do_mirror) add --dereference (-L) option;
	  (do_at) use get_date function
	* log.cc: fix logging after tty disconnect, clear tty flag
	* LocalAccess.cc: implement follow_symlinks semantics
	* ListInfo.cc, ListInfo.h: add follow_symlinks flag
	* MirrorJob.cc, MirrorJob.h: add RETR_SYMLINKS flag
	* getdate.y, getdate.h: new files (replace parsetime*)

1998-10-13  Alexander V. Lukyanov  <lav@yars.free.net>

	* complete.cc: fix remote completion (automatic class was deleted too
	  early); fix typo.
	* commands.cc: (do_mirror) don't use ONLY_NEWER for reverse mirror.
	* FileSet.cc, FileSet.h: (SameAs) add ignore argument,
	  (SubtractSame) same.
	* MirrorJob.cc: ignore date in reverse mode. (HandleFile) skip: label;
	  report errors in mkdir
	* ftpclass.cc: check only first digit in response.
	* parsetime.y: use mktime_from_utc for portability

1998-10-07  Alexander V. Lukyanov  <lav@yars.free.net>

	* ftpclass.cc: prevent re-entering to Disconnect, this fixes stack
	  overflow. (FlushSendQueue) new method. close control_sock if connect
	  failed. check for try_time==0. Change default for verify-address,
	  seems quite a bit of servers fail the check.

1998-10-03  Alexander V. Lukyanov  <lav@yars.free.net>

	* complete.cc: bookmark completion. cleanup.
	* CmdExec.cc: make FeedQuoted insert quotes, (GetFullCommandName) new
	  method.
	* keyvalue.h: (CurrentKey) (CurrentValue) (Next) (Rewind) new methods,
	  (current) new member
	* bookmark.h, bookmark.cc: (Rewind) new method, comment unused List()
	* history.h: (Rewind) new method
	* PutJob.cc, PutJob.h: (delete_files) new member, use it.
	* FindJob.cc: quote arguments and use --
	* mputJob.cc: recognize -e
	* FtpCopy.cc: include url in status
	* commands.cc: remove unused unquote(), fix do_lftp to call do_open.
	* FileAccess.cc: encode url parts
	* url.h, url.cc: (url) new class, (url::decode_sctring)
	  (url::encode_string) new functions, use the functions.
	* ftpclass.cc: typo corrected
	* GetJob.cc, GetJob.h: (RemoveBackupFile) new function
	* pgetJob.cc: use RemoveBackupFile

1998-09-15  Alexander V. Lukyanov  <lav@yars.free.net>

	* FindJob.cc, FindJob.h: add FindJob_Cmd class;
	  (class FindJob) use_cache, init_dir - new members, NextDir - new
	  method; show status in WAIT state, don't show it in CD.
	* FileSet.cc, FileSet.h: outline next() and curr().
	* ArgV.cc, ArgV.h: make getcurr return 0 after getnext returns 0
	* commands.cc: add rm -r support
	* misc.cc, misc.h: (xgetcwd) new function
	* CmdExec.cc, CmdExec.h: don't execute commands if chdir failed;
	  (FeedQuoted, unquote) new methods
	* ftpclass.cc: disable timeout for ftpcopy, remove NoWait.
	* SleepJob.h, SleepJob.cc: save and restore cwd, set parent of exec
	* FindJob.cc: include config.h

1998-09-08  Alexander V. Lukyanov  <lav@yars.free.net>

	* CmdExec.cc: (MakePrompt) add \@ handling
	* commands.cc: limit debug level to 0-9 range
	* keyvalue.cc: (Format) add \0 for empty case

1998-09-06  Alexander V. Lukyanov  <lav@yars.free.net>

	* rglob.cc: don't ignore NO_FILE
	* ftpclass.cc, ftpclass.h: remove unused ChdirStatus,
	  ignore NO_FILE for NLST and simulate eof; don't set state
	  in SwitchToState if we have failed smth (or else infinite loop
	  is possible).
	* FileAccess.cc, FileAccess.h: add 'verify' to Chdir
	* FindJob.cc, FindJob.h: support depth-first search, don't verify cd's

1998-09-05  Alexander V. Lukyanov  <lav@yars.free.net>

	* ListInfo.cc, ListInfo.h: add 'need' and 'use_cache' members
	* XferJob.cc, LsCache.cc: use #l# for longs in plural()
	* lftp.cc: use ProcWait::Signal
	* buffer.cc, buffer.h: new files
	* FindJob.cc, FindJob.h: new files
	* SignalHook.cc, SignalHook.h: add Block, Unblock, Default methods
	* commands.cc: use decode_delay in sleep, add CMD(find)
	* MirrorJob.cc: request ALL_INFO
	* FileSet.h: add ALL_INFO
	* misc.cc: support dir_file(dir_file(),)
	* FtpListInfo.cc: handle 'need' and 'use_cache'. If there were no
	  errors in long list, don't get short one. count errors in
	  ParseLongList_UNIX.
	* FileAccess.h: add GetFile method, include ListInfo.h
	* Resolver.h: include string.h
	* CmdExec.h: add CMD(find)
	* ProcWait.h, ProcWait.cc: add Signal method
	* Filter.h, Filter.cc: add closed member to avoid spawning a process
	  when done and waiting for termination; block SIGCHLD while spawning
	  process to prevent races.
	* SysCmdJob.cc: same for SIGCHLD
	* FtpCopy.cc: fix rolling stick :)
	* FIleSet.h: add ALL_INFO
	* mgetJob.cc: don't use cache for rglob

1998-08-31  Alexander V. Lukyanov  <lav@yars.free.net>

	* ftpclass.cc: fix connection leak in GetBetterConnection (missing
	  return); add conditions to DataAbort to avoid unneeded ABOR;
	  close data connection in Read on EOF to avoid ABOR;
	  SwitchToState - remove bogus condition for COPY_FAILED

1998-08-28  Alexander V. Lukyanov  <lav@yars.free.net>

	* FileXfer.cc: fix setting op when args->count()==1
	* ArgV.h: add GetV method
	* SignalHook.cc, SignalHook.h: move to posix sigaction; add old_saved[]
	* ProcWait.cc, ProcWait.h: add SIGCHLD_handler, chain, destructor
	* log.cc, log.h: new files (log facility)
	* lftp.cc: use SIGCHLD_handler, use Log
	* SleepJob.cc, SleepJob.h: new files (sleep and at commands)
	* parsetime.y, parsetime-lex.l, parsetime-i.h: new files (from at-3.1.7)
	* FtpCopy.cc, FtpCopy.h: new files (copy between ftp servers)
	* Job.cc: call Bg() and Fg() for waiting
	* complete.cc: avoid "total xxx" in completion
	* FtpListInfo.cc: use int for base_dir_len
	* FileAccess.cc, FileAccess.h: use new log facility
	* ftpget.cc: use new log facility
	* CmdExec.cc, CmdExec.h: get rid of old debugging, Bg, Fg;
	  add new commands
	* commands.cc: use new log facility; add new commands
	* XferJob.cc, XferJob.h, pgetJob.cc: add eta reporting
	  (original by jaeger@tekniq.net)
	* ftpclass.cc, ftpclass.h: add COPY_FAILED state, DataAbort method,
	  abort data connection properly, send QUIT before control socket
	  close, copy_* members for ftpcopy support, FlushSendQueue flushes
	  all optionally

1998-08-19  Alexander V. Lukyanov  <lav@yars.free.net>

	* lftp.cc: (ReadlineFeeder) added ctty (is control tty) member;
	  removed hung-up check, since readline() should report eof in
	  the case; modified check for background state.
	* SMTask.cc: (Schedule) fix block collecting to exclude already
	  running tasks.

1998-08-17  Alexander V. Lukyanov  <lav@yars.free.net>

	* lftp.cc: (ReadlineFeeder::NextCmd) check for hung-up terminal

1998-08-17  Alexander V. Lukyanov  <lav@yars.free.net>

	* fg.cc: add debug printf's
	* Job.h, Job.cc: make Fg() and Bg() outline virtual
	* lftp.cc: (ReadlineFeeder::NextCmd) don't call readline()
	  if in background; (main) call top_exec->Fg() to make it foreground.
	* CmdExec.cc, CmdExec.h: (Fg, Bg) new functions; call waiting->Fg()
	  for only foreground jobs

Fri Aug 14 19:00:54 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* CmdExec.h, commands.cc: (suspend) new command
	* GetJob.cc: rename old file to file~ if it exists, and remove
	  backup upon getting the new file; this is useful for accidently
	  forgotten 're' or '-c'.
	* ftpclass.cc: fix warning about old_type; improve
	  error reporting; ignore extra 2xx responses for buggy servers
	* fg.h, fg.cc: (cont) new function; (Fg) cont the process even
	  if we don't own the terminal.
	* SysCmdJob.cc, SysCmdJob.h: (AcceptSig) implemented; (~) call
	  Bg() to release terminal properly, kill process in destructor
	* ProcWait.cc: (Kill) check if process still running

Mon Aug  3 19:18:51 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* commands.cc: (mirror) increase verbose instead of setting to 1
	* ftpclass.cc: (PASV_Catch) fix for broken servers returning 0,0,0,0

Wed Jul 29 17:35:15 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* CmdExec.cc: (~CmdExec) clear debug_shell if destroying it
	* CmdExec.h: make debug_shell public
	* commands.cc: (do_debug) don't set debug_shell
	* lftp.cc: (main) set debug_shell to top_exec
	Note: debug subsystem must be rewritten
	* complete.cc: remote completion by default for mirror
	* ftpclass.cc, ftpclass.h: ReadyCheck, check for m$ server and turn on
	  sync mode if it was not; check for hostname==""

Fri Jul 24 16:45:41 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* ftpclass.cc: verify address before port

Thu Jul 23 00:54:11 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* mkdirJob.cc: include plural.h, one more message is preprocessed
	  by plural().
	* FileAccess.cc: (expand_tilde) fix memmove bound violation in
	  shrink case

Mon Jul 20 21:04:06 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* Filter.cc, Filter.h: new broken() method
	* XferJob.cc: use it to prevent spinning when output is broken
	  and data is not available yet

Wed Jul  1 11:31:22 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* ftpclass.cc, ftpclass.h: rename some settings for better sorting;
	  (verify-port) new setting, (data_port_verify) new member;
	  set buffer size in Reconfig; some tweaks
	* commands.cc: set arg1 in cd command for status line when dir=="-"

Mon Jun 22 16:31:09 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* ftpclass.cc, ftpclass.h: fix data_address_ok DebugPrint's;
	  add ftp:socket-buffer variable to tune tcp window

Thu Jun 18 18:19:20 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* alias.cc, alias.h: (Format) new function
	* commands.cc: use it
	* complete.cc: ls hack - ignore "total xxx", don't add /

Sun Jun 14 14:28:09 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* MirrorJob.cc: if file type is unknown and local directory exists,
	  assume the remote file is a directory
	* ResMgr.cc, ResMgr.h: (Format) new function
	* commands.cc: use ResMgr::Format
	* ftpclass.cc, ftpclass.h: address-verify - new setting;
	  (data_address_ok) new function

Thu Jun 11 16:55:57 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* Filter.cc: expand tilde in file name.
	* misc.cc, misc.h: (expand_home_relative) take and return const
	* commands.cc: use const for expand_home_relative
	* LocalAccess.cc: (Write) fix to adjust pos correctly
	* CmdExec.cc: (completion_use_ls) new member, new setting
	  cmd:ls-in-completion; use host name for ls-default.
	* complete.cc: several fixes, use complation_use_ls.

Tue Jun  9 19:25:50 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* XferJob.cc: plural support
	* MirrorJob.cc: report not deleted files if flag set;
	  (SetRX) new method, replaces SetInclude and SetExclude;
	  plural support
	* commands.cc: (do_mirror) support several -i/-x; add optional
	  argument for --verbose; use new interface to MirrorJob
	* lftp.cc: (ReadlineFeeder) fix memory leak
	* xmalloc.h: (xfree) not report xfree(0) when debugging

Fri Jun  5 17:24:04 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* commands.cc: update help for bookmark, fix bo import to look in
	  proper directory.

Fri Jun  5 15:19:31 MSD 1998

	* ftpclass.cc: (Ftp(Ftp*)) copy anon_user/anon_pass if available
	(StrError) don't translate string that can't be seen by user

Fri Jun  5 14:42:15 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* commands.cc: (do_pwd) print url, allow redirection,
	  (do_open) prepend cmd_to_exec before bookmark expansion,
	  (do_bookmark) add import subcommand, complain if bookmark to delete
	  does not exist.

Fri Jun  5 14:37:26 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* complete.cc: try to use cached LONG_LIST for completion
	* LsCache.cc: (Lookup) don't copy out contents of cache if d==NULL

Wed Jun  3 17:18:04 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* CmdExec.cc, CmdExec.h: (save_passwords) new member,
	  (bmk:save-passwords) new setting
	* commands.cc: use save_passwords, (echo) new command
	* CatJob.cc: if output==0 use stdout

Fri May 29 18:32:47 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>
	* XferJob.cc, XferJob.h: add xfer:use_urls, unstrict urls

Mon May 25 23:42:14 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* FtpListInfo.cc: close session in destructor (fixes coredump)

Mon May 25 23:24:09 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* CmdExec.cc: use status_line even if !interactive

Mon May 25 15:52:08 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* FileAccess.h, FileAccess.cc: add WITH_PASSWORD flag to GetConnectURL

Sun May 24 23:30:00 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* CmdExec.h: make print_cmd_help non static, (do_lftp) new
	  function
	* commands.cc: (do_lftp) new function, remove -f option from
	  do_open, print_cmd_help changes, `open' help change
	* lftp.cc: use do_lftp (indirectly)

Sun May 24 23:00:16 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* CmdExec.cc: don't reference status_line when it's zero,
	  change status for cd and open commands

Sat May 23 03:06:25 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* MirrorJob.cc: pass newer_than to child mirror jobs
	* FileSet.cc: (SubtractOlderThan) subtract only plain files

Thu May 21 22:56:22 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* ftpclass.cc: (mktime_from_utc) new function (from wget)
	  (ConvertFtpDate) use mktime_from_utc instead of old hack.

Thu May 21 22:21:50 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* FileAccess.h: make Login() virtual
	* ftpclass.cc: (Login) new function, add anon-user/anon-pass,
	  (SameConnection) new function, differenciate connections with,
	  different anonymous login. (DefaultAnonUser) new function,
	  (ClassInit) set default anon-pass, (anon_user) new member
	* ftpclass.h: same

Thu May 21 13:55:20 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* PutJob.cc: fix for new buffer allocation

Tue May 19 16:53:36 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* commands.cc: (find_command) new function (from vars.cc)
	* vars.cc, vars.h: remove

Fri May 15 19:25:49 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>
	* commands.cc: don't use errno in GetPass() error message

Fri May 15 18:17:31 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* Resolver.cc: handle timeout, fix sleep, (Reconfig) new function
	* Resolver.h: (timeout) new member, (Reconfig) new decl

Fri May 15 18:11:44 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* ResMgr.cc: (ResDecl::Query) new function
	* ResMgr.h: (ResValue) new class
	* ftpclass.cc: (Reconfig) use it, (ResQuery) remove
	* ftpclass.h: (ResQuery) remove, (SetFlag) take bool arg
	* CmdExec.cc: (Reconfig) use it, (ResQuery) remove
	* CmdExec.h: (ResQuery) remove

Fri May 15 16:49:35 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>
	* SMTask.cc (ReconfigAll): add NoWait

Fri May 15 16:31:14 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>
	* LsJob.cc: Fix cached listing printing
	* LsJob.h: remove unused variable cache_buffer_ptr

Tue May 12 22:24:38 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* ftpclass.cc: move pass hiding	here, where it belongs, show pass
	  when s/key is used or anonymous
	* FileAccess.cc: ...and remove from here

Tue May 12 21:45:02 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* XferJob.cc, XferJob.h: add support for variable sized buffer
	* CatJob.cc, CatJob.h: add support for cat'ing from memory
	* command.cc: (bookmark) use CatJob for bookmark list
	* bookmark.cc, bookmark.h: add Format

Tue May 12 19:19:54 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* ftpclass.cc, ftpclass.h: tune memory use

Tue May 12 19:00:06 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* xmalloc.cc, xmalloc.h: support for debug

Tue May 12 16:31:07 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* keyvalue.cc: (Format) new function
	  (Write) use Format
	* keyvalue.h: ajust accordingly

Mon May 11 01:08:37 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* commands.cc: (open) use password from .netrc if user name matches

Sat May  9 01:47:41 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* ftpclass.c: add "S/Key MD5" string to list of skey strings
	  (make_skey_reply) use `result' to catch multiline responses.

Fri May  8 02:47:11 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* ftpclass.cc, ftpclass.h: add force_skey, allow_skey defaults to yes
	  (make_skey_reply) rewrite, add otp-md5 string
	* ftpclass.cc: wait for pass prompt only when user given (no anon)

Thu May  7 21:55:17 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* parsecmd.cc: fix alias_field calculation

Wed May  6 21:13:41 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* ftpclass.cc (make_skey_reply): implement (base from wget) and use it;
	  (skey_pass, allow_skey): new members of class Ftp
	* ftpclass.h: likewise
	* Makefile.am: add md5.c, md5.h, ftp-opie.c to sources

Wed May  6 20:38:55 MSD 1998  Alexander V. Lukyanov <lav@yars.free.net>

	* ftpclass.cc (LoginCheck): assume non-fatal error when
	got RESP_LOGIN_FAILED, but without "Login incorrect" string.

Wed May  6 15:19:00 MSD 1998 Alexander V. Lukyanov <lav@yars.free.net>

	* commands.cc (bookmark): add `bookmark edit' command
