Blob Blame History Raw
2014-05-06  Alexander V. Lukyanov <>

	* prefer fresh node over non-good and not responded one.
	* xarray.h: fixed a typo which could cause segfault.
	*, FileAccess.h, src/, src/Fish.h, src/,
	  Http.h,,, SFtp.h,, SSH_Access.h,, ftpclass.h: add last_disconnect_cause; display it
	  for 5 seconds in the status.

2014-04-09  Alexander V. Lukyanov <>

	*, SSH_Access.h: display last error message from ssh.

2014-04-07  Alexander V. Lukyanov <>

	* add EIO and EPIPE to the list of temp network errors.
	*, FileAccess.h,,,,
	  ftpclass.h: replace try_time with Timer reconnect_timer;
	  use temporary_network_error in FA::NotSerious.
	* detect name lookup error from ssh.

2014-03-26  Alexander V. Lukyanov <>

	*, Job.h: (FormatShortStatus) new virtual method; don't check
	  Deleted() for jobs in the lists; use xlist_for_each_safe when it's
	  possible to remove scanned node from the list.
	*, MirrorJob.h: implement FormatShortStatus.
	* use Speedometer::GetStrProper for final rate reporting.

2014-03-25  Alexander V. Lukyanov <>

	* pgetJob.h: fixed bytes and rate reporting via Get methods.
	*, Job.h: use xlist; add children_jobs list; (NumberOfChildrenJobs) new method.
	*, use NumberOfChildrenJobs to avoid counting "this" Job.

2014-03-24  Alexander V. Lukyanov <>

	* (MoveDataHere) set eof only when all data are exhausted.
	*, misc.h: (xhuman) new function.
	*, Job.h: (GetTransferRate) new method;
	  (GetBytesCount) count recursively over descendants.
	*, CopyJob.h, FileCopy.h: (GetTransferRate) implement;
	  (GetTimeSpent) don't count overlapped time intervals twice;
	  (GetBytesCount) count recursively for real time monitoring.
	*, MirrorJob.h: show real-time bytes transferred and
	  rate in the mirror job title.
	* try to parse as plain html when props format is unrecognized.

2014-03-18  Sami Farin <>

	  fix warnings

2014-03-18  Alexander V. Lukyanov <>

	* FileAccess.h, mkdirJob.h, FindJob.h: don't access the
	  FileAccessRefC ref in dtor, as the original FileAccessRef can be
	  already deleted.
	* don't add slash for plain files in URLs.

2014-03-17  Alexander V. Lukyanov <>

	* add hftp:decode setting.
	*, xarray.h: use xrealloc instead of realloc; truncate
	  xarray_m in dtor, so that proper dispose method is called.
	* use xfree for xmalloc'ed memory.

2014-03-14  Alexander V. Lukyanov <>

	* add another password prompt format for FreeBSD.

2014-03-13  Alexander V. Lukyanov <>

	*, FileAccess.h: get rid of direct delete calls.

2014-03-11  Alexander V. Lukyanov <>

	*, (http:accept-encoding, http:decode) new settings.

2014-03-04  Alexander V. Lukyanov <>

	*, CmdExec.h, keep track of parent CmdExec;
	  add 'exit parent' subcommand; flush command buffer when exiting.
	* don't send FSETSTAT when file modification time is unknown.

2014-02-13  Alexander V. Lukyanov <>

	* xarray.h, StringSet.h: (xarray_m) new template for malloc'ed
	  pointers; use it in StringSet.
	* xmap.h: (dispose) new method.

2014-02-12  Alexander V. Lukyanov <>

	* don't call ExpandTildeInCWD every time.
	* use a perfect hash for header handling.
	* clear source/target sets when looping.

2014-02-11  Alexander V. Lukyanov <>

	*, MirrorJob.h: fix transfer rate reporting for parallel
	  mode mirror (--parallel option).
	* (--env-password) new open option to take password from
	  LFTP_PASSWORD environment variable.

2014-02-04  Alexander V. Lukyanov <>

	*, ResMgr.h, move some methods to ResType;
	  make ResMgr a descendant of ResType; make type_value_list a pointer
	  to avoid calling a ctor for each static ResType.
	* use ~/.lftp/torrent/md directory; fix file permissions.
	*, FileAccess.h: use xlist and xmap to speed up FA
	  creation and deleting.

2014-01-24  Alexander V. Lukyanov <>

	* (pget:min-chunk-size) new setting with 1M by default.

2014-01-23  Alexander V. Lukyanov <>

	*,, don't add a slash if it's
	  already there.
	* slightly better hash.
	* xarray.h: (xarray_p::qsort) new method.
	* StringSet.h: (StringSet::qsort) new method.
	*, ResMgr.h,, use xlist and xmap to
	  manage settings (for better performance).
	*, Torrent.h: save metadata and load if needed;
	  (torrent:save-metadata) new setting.

2014-01-17  Alexander V. Lukyanov <>

	* allow UTC along with GMT in http timestamps.
	* fixed Content-Length handling after PROPFIND.

2014-01-16  Alexander V. Lukyanov <>

	* prefer responded nodes in search over not responded ones.
	*, Torrent.h: add shutting_down_timer to fix a hang on
	  unresponsive trackers.
	* TorrentTracker.h: use 30 if interval<30.

2014-01-16  Alexander V. Lukyanov <>

	* fixed error handling for new _Read semantics.

2014-01-15  Alexander V. Lukyanov <>

	* fixed rmdir for WebDAV by adding trailing slash to the path.

2014-01-10  Alexander V. Lukyanov <>

	*, Torrent.h: use SMTaskRef for FDCache.

2013-12-13  Alexander V. Lukyanov <>

	*, RateLimit.h, use RateLimit settings
	  to set maximum buffer size.
	*, xstring.h: (swap, set_length_no_z) new methods.
	*, buffer.h: (MoveDataHere) new method, optimize data
	  copying by swapping buffers.
	* tune read delaying; add comments.
	*, DummyProto.h, FileAccess.h,,,
	  Fish.h,, Http.h,, LocalAccess.h,,
	  SFtp.h,,,, ftpclass.h:
	  change FA::Read to use Buffer and MoveDataHere.
	*, PollVec.h: (FDSetNotReady) new method.

2013-12-12  Alexander V. Lukyanov <>

	* TimeDate.h: include sys/time.h to get struct timeval.
	* don't shrink read buffer size.
	*, ftpclass.h: use xfer:buffer-size for max_buf size;

2013-12-11  Alexander V. Lukyanov <>

	*, xstring.h: shrink buffer explicitly.
	*, PollVec.h: use select; (FDReady) new method.
	*, TimeDate.h: change to microsecond resolution.
	*, Timer.h: (GetTimeoutTV) new method.
	*, SMTask.h: use Timer::GetTimeoutTV; add resumed task to
	  the tail of new_tasks list.
	*, buffer.h: change buffer size tuning; remove last_got member;
	  don't call down->Do in BufferStacked; use last select result
	  to save a read() system call.
	* ftpclass.h: don't suspend control_recv so that control_sock gets
	  polled when delaying data read ops.
	* check last select result before reading.
	* use microseconds for delaying reads; don't reset delay
	  on data unavailability; don't increase delay when read returned
	  enough data.

2013-12-09  Alexander V. Lukyanov <>

	*, FileCopy.h: add a delay when Read returns too small
	  portions of data, it should decrease the number of syscalls.
	* fixed a mem leak (thanks to David Binderman).
	*, minor style changes.
	*, remove unused old code.
	* check Log::global for NULL, avoid SEGV on exit.

2013-12-06  Alexander V. Lukyanov <>

	* xheap.h: min-heap implementation with random remove.
	*, Timer.h, use xheap and xlist for Timer.

2013-12-05  Alexander V. Lukyanov <>

	*, Http.h: fixed ARRAY_INFO for the case of PROPFIND;
	  use symbolic error codes.

2013-12-04  Alexander V. Lukyanov <>

	* use Delete method for peers.
	*, MirrorJob.h: use SMTaskRef for ListInfo.
	*, Speedometer.h: don't inherit SMTask.
	*, FileCopy.h: don't use SMTaskRef for Speedometer.
	* SMTask.h: don't inherit SMTaskRef from Ref, make SMTask dtor
	* buffer.h: use plain Ref for Speedometer; make IOBuffer dtor protected.
	* FileAccess.h, ProcWait.h: make SMTask heirs dtors protected.

2013-12-03  Alexander V. Lukyanov <>

	*, buffer.h: (TuneGetSize) new method.
	* check Log::global for NULL.
	*, FileCopy.h: use TuneGetSize, fixed `verify' type.
	* FindJobDu.h, Fish.h, Http.h, HttpDir.h, PtyShell.h, SFtp.h:
	  use SMTaskRef for tasks.
	*, SMTask.h: use new xlist; add `deleted' list; add `new' list.

2013-12-02  Alexander V. Lukyanov <>

	* (CollectGarbage) fixed deleting list manipulation.

2013-11-29  Alexander V. Lukyanov <>

	*, don't call SMTask dtor directly.
	*, SMTask.h: add deleting list; use static array for stack.
	*, xarray.h: optimize space allocation by inlining some code.
	* don't spin on collected garbage.
	* DirColors.h: no need to inherit SMTask, use ResClient.
	* SMTask.h: make deleting, running and ref_count private;
	  (Deleted) new method.
	  use public methods of SMTask, don't use `deleting' member directly.

2013-11-27  Alexander V. Lukyanov <>

	* fixed ARRAY_INFO in keep-alive http connection.

2013-11-26  Alexander V. Lukyanov <>

	* show file name in error messages, if not there already.
	* don't check file size when the file is already complete;
	  handle the case of defined limit without file size.
	* use max of get/put positions in size checking, since
	  put_eof_pos is uninitialized yet.

2013-11-25  Alexander V. Lukyanov <>

	* add debug message on chunk sizes; handle 400/501 codes
	  to turn off PROPFIND in ARRAY_INFO mode.
	* clean up GetArrayInfo call condition, don't call it
	  if not needed.
	* free input and output in PrepareToDie.
	*, FileCopy.h: add check for file size at EOF.

2013-11-15  Alexander V. Lukyanov <>

	* fixed spinning when GetArrayInfo gives an error.
	*,, FindJob.h, FileSet.h: add find -l (--ls)
	  option to show long listing.

2013-11-11  Alexander V. Lukyanov <>

	* don't show verbose 100% peer completeness.

2013-11-08  Alexander V. Lukyanov <>

	* check reply type before casting, fixes a coredump.
	* improve status of complete torrents by showing ratio.

2013-11-07  Alexander V. Lukyanov <>

	* fixed a hang in ARRAY_INFO mode.

2013-10-10  Alexander V. Lukyanov <>

	* use human_readable for up/dn counters.

2013-10-08  Alexander V. Lukyanov <>

	*, (ftp:use-utf8) new setting.
	* don't start translation if source and target encodings
	  are the same.

2013-10-04  Alexander V. Lukyanov <>

	* fixed occasional hang in GenericParseListInfo,
	  when result!=NULL && old_mode!=mode.

2013-09-16  Alexander V. Lukyanov <>

	* compile in SetTranslator unconditionslly (for Ftp).
	*, Http.h: use PROPFIND for ARRAY_INFO if supported.
	*, Torrent.h, count dht announces, show the counters
	  in the status; don't count a peer complete until the metadata are
	  known; show next dht announce time.
	* kill the shell in dtor.

2013-08-30  Alexander V. Lukyanov <>

	* handle atotm parse error.
	*, TimeDate.h: fixed localtime cacheing.
	* (cd) automatically add slash if needed.
	*, LsCache.h, (UpdateFileSet) new method; use it.
	*, PatternSet.h: (AddFirst, GetFirstType) new methods.
	*, MirrorJob.h: add --file/-f and --target-directory/-O options.
	* buffer.h: allow IOBufferFileAccess creation with plain pointer.
	*, Http.h: don't log empty commands;
	  handle PROPFIND result of CHANGE_DIR op; add "quote PROPFIND" support
	  (mostly for debugging); don't send Content-Type for PROPFIND requests
	  if there is no request body; don't request file info if not needed in
	  ARRAY_INFO mode.
	* automatically detect xml file listing.
	* handle atotm errors.

2013-08-16  Alexander V. Lukyanov <>

	*, Speedometer.h: (GetStrProper) new method for proper unit names.
	* use Speedometer::GetStrProper for logging.
	*, use FD_CLOEXEC on descriptors.
	* fixed MLSD parsing for semicolons in file names.
	* allow NULL sets in certain places.
	*, MirrorJob.h: don't create empty directories with
	  --no-empty-dirs when all source files are filtered out.

2013-08-13  Alexander V. Lukyanov <>

	*, add woraround for wrong multiline
	  replies and ftp:strict-multiline setting.
	* add a workaround for RouterOS v6 - symlink as the root dir.

2013-08-05  Alexander V. Lukyanov <>

	* don't decode %xx for plain file names of meta-info.

2013-07-30  Alexander V. Lukyanov <>

	*, SFtp.h: request more information about symlink targets.

2013-07-29  Alexander V. Lukyanov <>

	* follow symlinks when requested.

2013-07-23  Alexander V. Lukyanov <>

	*, MirrorJob.h: add progress meter for parent mirrors.
	*, Job.h: (GetCmdLine) new virtual method.
	*, FileSet.h: (CountBytes) new method.
	* move line and all_lines along with connection.

2013-07-15  Alexander V. Lukyanov <>

	* attach.h: pass all three std fds.
	* simplify attach/detach logic; get rid of goto;
	  handle Detached condition.

2013-07-04  Alexander V. Lukyanov <>

	* don't use IPV6_V6ONLY if not defined.
	* (FileInfo::Merge) copy size properly.

2013-07-04  Alexander V. Lukyanov <>

	* recognize and ignore human readable sizes.

2013-05-30  Alexander V. Lukyanov <>

	* fixed segfault when there is no TERM env var.
	* fixed compilation with older zlib.

2013-05-28  Alexander V. Lukyanov <>

	*, buffer_zlib.h: implement inflator.
	*, Http.h: add support for gzip Content-Encoding.
	* buffer_zlib for proto-http.
	*, buffer.h: (SetTranslator) translate unread data.
	* buffer.h: (IsFull) new method.
	*, FileCopy.h: (FileCopyPeerMemory) new peer type;
	  use IOBuffer::SetMaxBuffered and IsFull.
	*, Torrent.h: use FileCopy for metainfo fetching.

2013-05-27  Alexander V. Lukyanov <>

	* (SFtpListInfo::Do) fixed return value (prevents an endless loop).
	* init date member; clean up date/size requesting in FileCopyPeerFA.

2013-05-21  Alexander V. Lukyanov <>

	* set size=NO_SIZE when the size could not be found.
	* allow info merging for files with the same basename.
	* fixed file correption and garbage logging by requiring
	  the file to have a size; improve error handling.

2013-05-20  Alexander V. Lukyanov <>

	* disconnect in more cases on Close.

2013-05-13  Alexander V. Lukyanov <>

	*, TorrentTracker.h: use xstring for InfoHash and

2013-05-07  Alexander V. Lukyanov <>

	* fixed NULL dereference when use-dht is off.

2013-04-18  Alexander V. Lukyanov <>

	*, Http.h: improve DirFile; add slash for directories in ARRAY_INFO.
	*, FileAccess.h,, FileCopy.h,,
	  FileSet.h,,, GetFileInfo.h,,,, NetAccess.h,, SFtp.h, use FileSet for ARRAY_INFO; add READLINK support in sftp.

2013-04-12  Alexander V. Lukyanov <>

	*, DHT.h,, Torrent.h: (DenounceDHT) new method; use it.
	*,, show .. and . in glob results.
	* add -a option for completion results display to show
	  dot files.

2013-03-13  Alexander V. Lukyanov <>

	* change reget to "resume transfer".

2013-03-11  Alexander V. Lukyanov <>

	* list all jobs from the top.
	* don't add empty line for no-session jobs.
	* fixed lookup by name.

2013-02-27  Alexander V. Lukyanov <>

	*, add SNI support.
	*, add cls -a option; don't filter out
	  . and .. by default.
	* Enter/Leave parent for proper debug context.
	* use Enter/Leave for proper debug context.
	* better status when shutting down.
	* TorrentTracker.{cc,h}: add UDP tracker IPv6 support as action 4;
	  fixed error handling; fixed loop range.

2013-02-26  Alexander V. Lukyanov <>

	*, Torrent.h: add numeric key for udp tracker.
	*, buffer.h: (Append(xstring)) new method.
	*, TorrentTracker.h: add udp tracker support.

2013-02-25  Alexander V. Lukyanov <>

	*, Torrent.h,, TorrentTracker.h:
	  split off TorrentTracker; add TrackerBackend class; prepare
	  for udp tracker implementation.
	* include stdlib.h for strtoll.
	*, DHT.h: add requests_in_flight node counter; clean up
	  nodes more aggresively; make just loaded nodes non-good.

2013-02-20  Alexander V. Lukyanov <>

	* add "jobs" command arguments description.

2013-02-15  Alexander V. Lukyanov <>

	*, CmdExec.h: (cmd:show-status) new setting.

2013-02-07  Alexander V. Lukyanov <>

	*,,,,,,,,, SMTask.h,,
	  add ready task list to optimize Schedule when there are too many suspended

2013-01-31  Alexander V. Lukyanov <>

	*, xstring.h: add flags in url_decode.
	* pass URL_DECODE_PLUS flag to decode '+' into space.
	* add uninstall-hook to remove modules and some empty directories.

2013-01-29  Alexander V. Lukyanov <>

	* (_url_decode) fixed decoding plus sign.
	*, Timer.h: (StopDelayed) new method.
	* don't call AnnounceDHT in StartTrackers, do it
	  only by timer; stop dht_announce_timer at the start; use Roll
	  method to set log context; decode magnet URL values properly.
	* refresh routes after loading the node cache; load the
	  cache quickly using Roll; add some debug log messages.

2013-01-25  Alexander V. Lukyanov <>

	* don't run at-exit-fg when backgrounded.
	* (append(const char*,size_t)) fixed a bug;
	  (_url_decode) decode plus to space.

2013-01-24  Alexander V. Lukyanov <>

	*,, attach.h,,,, lftp_rl.c,, misc.h:
	  (get_lftp_{config,data,cache}_dir) new functions; use them.
	* xdg-move: new script.
	*, CmdExec.h, (cmd:at-exit-fg) new setting.

2012-12-14  Alexander V. Lukyanov <>

	*, CmdExec.h,, make cmd:interactive tri-bool.

2012-12-13  Alexander V. Lukyanov <>

	* don't show status line unless interactive.

2012-12-04  Alexander V. Lukyanov <>

	* remove obsolete assert.

2012-12-03  Alexander V. Lukyanov <>

	* fixed coredump after trying to start a duplicate torrent.

2012-11-14  Alexander V. Lukyanov <>

	* fixed status message.
	*, buffer.h: limit maximum buffer size.
	* use buffer size limit; don't Resume on several methods;
	  fixed CWD for certain paths; fixed try count resetting on uploading.

2012-09-27  Alexander V. Lukyanov <>

	* add support for base32 btih in magnet.

2012-09-26  Alexander V. Lukyanov <>

	* call AtFinish after parsing an empty command.

2012-09-26  Christoph Junghans <>

	* use ".bundle" for Darwin.

2012-09-26  Alexander V. Lukyanov <>

	*, xstring.h: (ends_with) new method.

2012-09-24  Robert Story <>

	* fix a typo in error message and add a warning for
	  untrusted domains if dns:strict-dnssec is not set.

2012-08-30  Alexander V. Lukyanov <>

	* fixed termcap coredump.

2012-08-27  Alexander V. Lukyanov <>

	*, DHT.h: add rate limit; improve FindNodes by checking
	  PrefixMatch on every next route bucket.
	*, Torrent.h: add name.utf-8 and path.utf-8 support.
	*, DHT.h: remove name (unknown encoding); better printing
	  of route prefix; (DHT::KnownTorrent::AddPeer) new method.

2012-08-24  Alexander V. Lukyanov <>

	* fixed port byte order in compact.
	*, Torrent.h: split DHT off; save DHT to separate directory;
	  check peer duplication and black-listing after setting port.
	*, DHT.h: new files; send pings only when there is new node
	  candidate and bucket is full; limit ping rate; change disk-cache
	  format, save node_id too; handle changing node_id of remote nodes.
	*, network.h: (sockaddr_compact) new class.
	* call termcap functions from StatusLine ctor, not _init.

2012-08-22  Alexander V. Lukyanov <>

	* fixed set_compact for ipv6.
	*, Torrent.h: limit udp send rate; check POLLOUT before
	  sending a udp packet; tune dht timers; improve logging;
	  save node id in sent requests; try to send find request to all nodes
	  if no good nodes found; fixed route bucket splitting.
	*, ResMgr.h: (NumberPair) new type; support number power
	  suffix in ranges and pairs.

2012-08-20  Alexander V. Lukyanov <>

	*, network.h; make set_compact return bool.
	* Bencode.h: add lookup* methods.
	*, Torrent.h: init ping_lost_count properly; make ValidNodeId
	  call MakeNodeId, move masks info MakeNodeId; fixed route table refreshing;
	  check address type before using; use new lookup methods.

2012-08-16  Alexander V. Lukyanov <>

	* fixed ut_metadata total_size.
	*, xmap.h: (each_finished, exists) new methods.
	*, network.h: (set_compact(const char*,size_t)) new method.
	*, Torrent.h: added ut_pex extension; remember if the torrent
	  is private; remember is a peer is upload_only; (Seed) new method;
	  set tracker error only if last URL failed; disallow huge packets.
	*, network.h: (is_compatible) new method.

2012-08-16  Alexander V. Lukyanov <>

	* fixed typo.
	*, xstring.h: (begins_with, instr, hexdump_to) new methods;
	  improved dump() for invalid utf8 strings.
	* xarray.h: (xqueue_p) new class.
	*, Torrent.h: added timeout for tracker requests;
	  added support for tracker groups; new option --dht-bootstrap
	  for manual bootstrapping.
	* ftp-opie.c: use newer version from wget (fixes a bug on 64-bit hw).
	*, xstring.h: (hex_decode) new method.
	*, Torrent.h: use hex_decode; allow pure hash instead of
	  magnet links; make tracker Fail if no valid URLs found.

2012-08-15  Alexander V. Lukyanov <>

	*, Bencode.h: new ctor; Pack to xstring.
	*, Filter.h: (set_create_mode, set_lock) new methods,
	  do file locking if requested.
	*, misc.h, attach.h: (get_nodename) new function.
	*, xstring.h: add explicit clone ctor; (move_here) new
	*, xmap.h: (empty) new method; xmap_p now uses delete.
	* xarray.h: xarray_p now uses delete.
	*, network.h: (family, set_port, compact, compact_addr,
	  set_compact) new methods.
	*, Torrent.h: add DHT and magnet support.

2012-08-08  Alexander V. Lukyanov <>

	*, Torrent.h: add mt_metadata extension.

2012-08-07  Alexander V. Lukyanov <>

	*, Bencode.h: new ctor BeNode(const char *);
	  (ComputeLength, Pack, Format1) new methods.
	* buffer.h: add Put(char) method.
	* xmap.h: add add(const char*) method.
	*, Torrent.h: add LTEP and FAST Extensions.

2012-07-26  Alexander V. Lukyanov <>

	* send PROT after AUTH in any case, for servers
	  requiring a PROT command.

2012-07-25  Alexander V. Lukyanov <>

	* don't try to upload if ALLO fails.

2012-07-19  Alexander V. Lukyanov <>

	* fixed fatal error checking for gnutls.
	*, IdNameCache.h: allow numeric names.

2012-07-03  Alexander V. Lukyanov <>

	* tread decryption error as non-fatal.
	* define TELNET_* ad char constants, get rid of type casts.
	* fixed buffer size (string was truncated).
	*, add use-allprop settings.
	* fixed PROPFIND result parsing.

2012-05-30  Alexander V. Lukyanov <>

	* don't Feed at-finish commands if the command buffer is
	  not empty.
	*, FileFeeder.h: read by 4K.
	* set need_exact_time=true when the time is needed at all,
	  this removes complex and incomplete guess logic.

2012-04-23  Solar Designer <>

	* fix for large PIDs.

2012-04-20  Alexander V. Lukyanov <>

	* don't check hostname in openssl case with ssl:check-hostname off;
	  show a warning when hostname checking is disabled.

2012-03-26  Alexander V. Lukyanov <>

	*, Job.h,, Fix errors reported
	  by -Werror=format-security (Simon Ruderich <>)

2012-03-16  Alexander V. Lukyanov <>

	*, ftpclass.h: check USER reply against retry-530 RExp;
	  (Retry530) new method.
	* add "edit" command to the list of remote commands.

2012-03-13  Alexander V. Lukyanov <>

	*, Http.h: add support for status "429 Too Many Requests"
	  and Retry-After header; don't handle redirect for CONNECT method.
	* better handle extra server messages in sync mode.

2012-02-14  Alexander V. Lukyanov <>

	* fixed error reporting.
	* add explicit retracker support.

2012-01-24  Alexander V. Lukyanov <>

	* resume connection when moving it.
	*, ftpclass.h: add Suspend/Resume.

2012-01-23  Alexander V. Lukyanov <>

	*, Http.h: add Connection subclass.
	* fixed ascii mode size getting for local files.

2012-01-20  Alexander V. Lukyanov <>

	* fixed core dump on "local" command without

2012-01-17  Alexander V. Lukyanov <>

	* fixed compilation without ssl.

2011-12-28  Alexander V. Lukyanov <>

	*, ftpclass.h: fixed the case when home is unknown;
	  accept new cwd when real_cwd equals the new cwd.

2011-12-14  Alexander V. Lukyanov <>

	*, QueueFeeder.h: (JobCount) new method.
	*, CmdExec.h, new settings cmd:at-exit-bg,
	  cmd:at-finish, cmd:at-queue-finish.
	* MirrorJob.h, mkdirJob.h: use 0,1 exit codes.
	* fixed status command line.

2011-12-13  Alexander V. Lukyanov <>

	* fixed exit code of queue command.

2011-12-09  Alexander V. Lukyanov <>

	* follow local symlinks with -L option.

2011-12-06  Alexander V. Lukyanov <>

	* open files with CLOEXEC flag.
	*, misc.h,, (shell_encode) return xstring ref.

2011-11-18  Alexander V. Lukyanov <>

	* fixed IsoDateTime (added seconds).
	* lftp_rl.c: save timestamps in history; show them.

2011-11-16  Alexander V. Lukyanov <>

	* fixed "URL mismatch" message for root directory.

2011-11-09  Alexander V. Lukyanov <>

	* fixed NULL-crash on ssl.
	* (attach) check process existence; remove stale sockets.

2011-10-06  Alexander V. Lukyanov <>

	* save the buffer of target_dir using alloca.
	*, ResMgr.h: (ResValue::to_tri_bool, *::QueryTriBool)
	  new methods; use const for const methods; remove ifdef0'ed code.
	*, use QueryTriBool.
	*, new setting ftp:use-tvfs.

2011-09-22  Alexander V. Lukyanov <>

	  use ParsedURL for URL path verification; compare path to home
	  dir ~ properly; send first path component together with root
	  directory to ftp server; use reconnect if cannot change back to
	  home dir.

2011-09-16  Alexander V. Lukyanov <>

	* (ResMgr::Resource::ClosureMatch) try to match basename,
	  it helps matching torrent metadata urls to *.torrent pattern.

2011-09-15  Alexander V. Lukyanov <>

	* don't try to send stop to a failed tracker.

2011-08-01  Alexander V. Lukyanov <>

	* check for '###' before parsing ls line.
	* use a separate check for posix_fadvise.
	* attach.h: don't use "sun" name; define SUN_LEN macro if missing
	  (patch from
	* use gnutls_priority_set_direct instead of deprecated

2011-06-24  Alexander V. Lukyanov <>

	* print error when date-time spec is missed; remove
	  a hack with Combine.

2011-06-21  Alexander V. Lukyanov <>

	* check ifa_addr!=0.

2011-06-17  Alexander V. Lukyanov <>

	* attach without arguments; don't use long for pid.
	* attach.h: use unsigned for pid; better error handling.

2011-06-16  Alexander V. Lukyanov <>

	*, attach.h: new files.
	* (attach) new command, pass tty fd to a backgrounded lftp.
	* init reconnect_interval_current properly.
	* re-set SIGINT handler.
	* don't send FEAT after QUIT.

2011-06-10  Alexander V. Lukyanov <>

	*, CmdExec.h: when cmd:fail-exit is true, save the non-zero
	  exit code for the case of cmd:parallel>1 (patch by Fernando Gutierrez).

2011-06-08  Alexander V. Lukyanov <>

	* CmdExec.h: use ResClient to hook Reconfig (reported by Fernando
          Gutierrez <>).
	* parse buffered command even without a feeder, when
	  cmd:parallel>1 (patch by Fernando Gutierrez).
	* set exit_code to 0 when a job has been created
	  (patch by Fernando Gutierrez).

2011-05-10  Alexander V. Lukyanov <>

	*, xstring.h: (tmp_buf) new method.
	*,, get rid of static buffers.
	*, Torrent.h: auto set torrent:ipv6; better status.

2011-04-29  Alexander V. Lukyanov <>

        *, CmdExec.h,, CopyJob.h,,,, FileSetOutput.h,,
	  FindJob.h,,, Job.h,, MirrorJob.h,, QueueFeeder.h,, SleepJob.h,,, Torrent.h,,
	  mgetJob.h,, mkdirJob.h,, mvJob.h,,
	  pgetJob.h,,, xstring.h: replace PrintStatus with
	  FormatStatus; allow `jobs' output filtering; get rid of complex
	  alloca tricks.
	*, Torrent.h: don't show not connected peers by default
	  (jobs -vv still lists them); show validation rate and eta.

2011-04-22  Alexander V. Lukyanov <>

	*, (mirror:no-empty-dirs) new setting.
	* remove password from URLs before logging.

2011-04-11  Alexander V. Lukyanov <>

	* save tmp buffer, this fixes `cd -'.
	* (FileCopyPeerFA::Clone) copy orig_url.

2011-03-25  Alexander V. Lukyanov <>

	*, xstring.h: (url_decode, append_url_encoded) new methods.
	*, url.h: drop functions decode_string and encode_string.
	* network.h: use proper includes.
	*,,,,,,,,,,,,, MirrorJob.h,,, OutputJob.h,,,,,, misc.h,,,,, don't use sprintf, decode_string,
	  encode_string; drop xasprintf and xvasprintf.
	*, (ftp:use-ip-tos) new setting.

2011-03-16  Alexander V. Lukyanov <>

	*, SFtp.h: don't use uid_t and gid_t, may fix a problem
	  with sign expansion on some systems.

2011-03-09  Alexander V. Lukyanov <>

	*, Torrent.h: use fadvise during validation;
	  fixed fallocate call to pass correct file length;
	  optimized validation by removing realloc call.
	*, xstring.h: outline add_space; (get_space2) new method;
	  change get_space to take one arg.
	* optimize make_hash for hash_size==1.
	* use get_space2.
	* better wording in debug.

2011-03-03  Alexander V. Lukyanov <>

	* netkey.c: new file (from Ryan Thomas <>).
	*, ftpclass.h, add netkey support;
	  (ftp:netkey-allow) new setting (original patch from Ryan Thomas).

2011-02-24  Alexander V. Lukyanov <>

	* check for chunk[0] error, avoids a segfault.
	*, Torrent.h: (Torrent::CanAccept, NoTorrentCanAccept)
	  new methods; don't accept connections if no torrent can accept.

2011-02-10  Alexander V. Lukyanov <>

	* use curl version of openssl hostname check.
	*,, ResMgr.h, (xfer:log-file)
	  new setting (original patch by Timur Sufiev <>).

2011-02-08  Alexander V. Lukyanov <>

	* check CN in openssl (code taken from wget);
	  (cert_error) new flag.
	* rtrim error text.
	* allow selecting jobs in 'jobs' command.
	*, misc.h: (remove_tags) don't call strlen repeatedly;
	  (rtrim) new func.
	* don't fall back to plain connection when cert error found.
	*, network.h: (sockaddr_u::set_defaults) new method;
	  (Networker::SocketSinglePF) new method to bind to single protocol family.
	*, Torrent.h: add ipv6 support.
	* make ssl:verify-certificate on by default.

2011-02-08  Alexander V. Lukyanov <>

	* force SSL3 when ssl-auth is set to SSL (needed for
	  some ftp servers). Patch from Jiri Skala <>;
	  disable SSLv2 and weak ciphers (Ludwig Nussel <>);

2011-01-17  Alexander V. Lukyanov <>

	* check for null; set done when preparing to die.

2010-12-28  Alexander V. Lukyanov <>

	*, Torrent.h: detect and remove duplicate peers.
	* dir_file saving is not needed anymore (it uses
	* add remote symlink creation support.
	*, mvJob.h: add support for pre-removing target; better
	  status messages.

2010-12-17  Alexander V. Lukyanov <>

	*, FileAccess.h: new modes (LINK,SYMLINK);
	  (Open2) new method; make Rename, Mkdir, Chdir non-virtual.
	*, SFtp.h,, support ln.
	* handle new open modes in switches.
	*, mvJob.h: add link support.
	* (ln) new command.
	* use sftp v6 by default.
	* xstring.h: add inline strlen for xstring.

2010-12-15  Alexander V. Lukyanov <>

	* better trace messages; reset recv_rate on completion.

2010-11-24  Alexander V. Lukyanov <>

	* fixed setting of cmdline in new jobs.
	*, lftp_rl.c, fixed warnings
	  (patch from Openwall, Alexander Peslyak).
	* use CmdExec::is_space for parsing.
	* xstring.h: fixed compilation with non-gcc and old gcc compilers
	  (patch from Openwall, Vasiliy Kulikov).

2010-11-22  Alexander V. Lukyanov <>

	*, use parse_datetime instead of obsolete
	*, CmdExec.h: (AddNewJob) new method.
	*, ArgV.h: (Combine) add end index argument.
	* dispose tracker session when shutting down;
	  divide numwant to number of trackers going to request the peers;
	  better shutting down status; glob local torrent files; use AddNewJob
	  to create multiple torrent jobs.
	* call globfree even when no files found.

2010-11-19  Alexander V. Lukyanov <>

	*, Torrent.h: add multitracker support.

2010-11-15  Alexander V. Lukyanov <>

	* optimize b-search.
	* use tmp xstring.
	*, Torrent.h: (TorrentTracker) new class;
	  use posix_fallocate to pre-allocate disk space.

2010-10-19  Alexander V. Lukyanov <>

	*, CmdExec.h, new CmdExec ctor; `local' builtin.
	* allow continue of pget.
	*, Torrent.h: better diag msg; don't show `next tracker in'
	  msg when validating; allow starting of multiple torrents at once;
	  show torrent name in status; add torrent to listener earlier;
	  better handle shutting down of multiple torrents.
	* convert-mozilla-cookies: fix info duplication;
	* save status at the start.

2010-09-09  Alexander V. Lukyanov <>

	*, ftpclass.h: add TVFS support; send path components
	  separately as required by RFC1738 unless TVFS is declared by server.
	* fix assertion failure.

2010-09-01  Alexander V. Lukyanov <>

	* convert-netscape-cookies: add sqlite support.
	* use cached fset.
	* match * to in closure.

2010-08-17  Alexander V. Lukyanov <>

	* fixed coredump on --log=unopenable-file.
	*,,, carefully
	  save errno value.

2010-06-10  Alexander V. Lukyanov <>

	* fixed Reset for timer which have been just Stop()ped.
	* document (repeat) options.

2010-06-09  Alexander V. Lukyanov <>

	*, Torrent.h: don't try to re-download invalid piece
	  from the same peer; black-list peers with many invalid pieces.

2010-06-09  Claus K. Larsen <>

	* xstring.h: include unistd.h to workaround truncate64 problem on aix.

2010-06-04  gabriele balducci <>

	* fixed a problem with zeroed errno.

2010-06-02  Alexander V. Lukyanov <>

	* use no_status flag.
	* CopyJob.h: (NoStatus) accept optional parameter.
	* pass no_status flag.

2010-05-24  Alexander V. Lukyanov <>

	* fixed get/mget -c with xfer:clobber=no.

2010-05-20  Alexander V. Lukyanov <>

	* workaround for servers with LANG but without UTF8
	  (original patch by Henry Hu <>).

2010-04-30  Alexander V. Lukyanov <>

	*, FileCopy.h, (do_verify) new flag; unset it
	  for pget chunks.

2010-04-28  Alexander V. Lukyanov <>

	*, misc.h: (random_init, random01) new functions.
	* use them.
	*, TimeDate.h: (TimeDiff::valueOf) new static method.
	*, Timer.h: (AddRandom) new method for randomization.
	* randomize peer connections in time.

2010-04-19  Alexander V. Lukyanov <>

	* make xfer:clobber=no by default.
	*, FileCopy.h: fixed retries counting on upload;
	  track upload watermark.
	* handle 426 reply on upload specially;
	  retry FEAT after login on any 5xx reply but explicit unsup code.

2010-03-18  Alexander V. Lukyanov <>

	*, add setting xfer:auto-rename to control
	  server's suggested file name usage.

2010-03-09  Alexander V. Lukyanov <>

	* prolong y2k workaround for next 300 years.

2010-03-05  Alexander V. Lukyanov <>

	*, ftpclass.h: (ssl-copy-sid) new setting; added
	  recognition of "too many users" condition in Transient5XX method;
	  more const on methods; shutdown ssl properly after CCC command.
	* (ftp:ssl-copy-sid) new setting; update RETRY_530 list.
	*, Torrent.h: add black_list; refuse to start the same
	  torrent twice.

2010-02-05  Alexander V. Lukyanov <>

	*, FileAccess.h,, network.h: more const.
	* misc.h: (ListScanPtr) new macro.

2010-01-27  Alexander V. Lukyanov <>

	* resume transfer at the end when there is not status file
	  (fixes re-downloading of complete files and allows resuming of plain
	  transfers with pget).

2010-01-21  Alexander V. Lukyanov <>

	* more restrictions on suggested file name.
	* use suggested file name only if no such file exists.
	*, use O_EXCL when xfer:clobber is no.

2009-12-21  Alexander V. Lukyanov <>

	*, pgetJob.h: add PrepareToDie method (fixes a core dump
	  on "kill all").
	* don't use strlcpy.
	*, Torrent.h: fix a warning on x86_64; when shutting down,
	  terminate immediately on a new signal.

2009-12-18  Alexander V. Lukyanov <>

	* use xrealloc.
	* (dir_file) use xstring::get_tmp (fixes sftp rename).
	* add parser for lightttpd listing.

2009-11-17  Alexander V. Lukyanov <>

	*, lftp_rl.c, lftp_rl.h: new setting cmd:stifle-rl-history.

2009-11-17  Robert Story <>


2009-10-30  Robert Story <>

	* validate "no such name" answers.

2009-10-26  Alexander V. Lukyanov <>

	*, Resolver.h: use default dnssec context; cosmetics.

2009-10-23  Robert Story <>

	* check is_nil for numeric settings, prevents core dump
	  when accessing inexisting settings.
	*,, Resolver.h: add dnssec support.

2009-10-23  Alexander V. Lukyanov <>

	* use strtoll for signed numbers.

2009-10-16  Daniel Fazekas <>

	* fixed buffer size for human_readable.

2009-10-09  Alexander V. Lukyanov <>

	* better error messages; fixed exit code.
	* better error handling.
	*, get rid of HAVE_LSTAT.
	* include string.h

2009-09-23  Alexander V. Lukyanov <>

	*, Torrent.h: show tracker timer time left; don't connect
	  to passive peers; show torrent name as context.

2009-09-17  Alexander V. Lukyanov <>

	*, add missing headers for NetBSD.

2009-09-16  Alexander V. Lukyanov <>

	* fixed DataRecoder for the case of failed iconv_open;
	  retry iconv_open without //TRANSLIT.

2009-09-15  Alexander V. Lukyanov <>

	* fixed tilde handling.
	* ignore 'Status of' line.
	* don't reset activity timer on connect (the peer may
	  disconnect immediately).
	*,, network.h: don't bind data socket to
	  default address (fixes an infinite bind loop).

2009-08-18  Alexander V. Lukyanov <>

	*, Speedometer.h: (GetStrS) return "" when not valid.
	*, Torrent.h: better peer status; better traffic balance
	  between different torrents; handle IO-buffer errors; add settings
	  closure - name of the torrent; push uploaded data faster.

2009-08-11  Alexander V. Lukyanov <>

	* (print_cmd_index) better formatting.
	* CopyJob.h: pass FileTimestamp correctly.
	* fix prec comparision.

2009-08-10  Alexander V. Lukyanov <>

	* use SSL_OP_NO_TICKET to work with old servers.

2009-08-05  Alexander V. Lukyanov <>

	*, buffer.h: (Dump) new method.
	*, Torrent.h: (ScanPeers) new method; add key, ip params;
	  add --force-valid option to skip validating; add seed-min-peers
	  parameter; better debug messages.

2009-08-04  Alexander V. Lukyanov <>

	*, Speedometer.h: (GetStr) return "" when not valid.

2009-07-29  Jeroen Roovers <>

	* link cmd-torrent with liblftp-network.

2009-07-28  Alexander V. Lukyanov <>

	*, RateLimit.h: (Relaxed) new method.

2009-07-24  Alexander V. Lukyanov <>

	* fixed Put for large blocks with translation, make
	  scheduler run after putting some data into the buffer.

2009-07-23  Alexander V. Lukyanov <>

	* xmap.h: fixed xmap lookup returning zero.
	* fixed hash_size calculation.
	* speed-optimize by skipping Valid call.

2009-07-21  Alexander V. Lukyanov <>

	* xmap.h: (lookup_Lv) new method; make lookup const.
	* add short desc for torrent.
	* send signal to jobs.
	*, (SocketAccept) new method; move NonBlock and CloseOnExec here.
	*, FileAccess.h: ... from here.
	* use SocketAccept and SocketCreateTCP.
	* use SocketAccept.

2009-07-17  Alexander V. Lukyanov <>

	*,, CmdExec.h: (static_cmd_table_length) new const; use it;
	  fixed core dump on help command (reported by Ganael LAPLANCHE <>).
	  (torrent) new command.
	*, ProtoLog.h: new class.
	*, FileAccess.h: use ProtoLog; assume "file" protocol
	  by default.
	* strip interface name from hostname for ipv6.
	* (Kill) try a signal first.
	*, LocalAccess.h: use current cwd by default.
	*, NetAccess.h,, network.h: (Networker)
	  new class, use it; add is_* methods for IP address classes.
	*, Resolver.h: use ProtoLog.
	* use sockaddr_u methods.
	*, url.h: use xstring, more unsafe chars.
	* xarray.h: (allocate) new method; (RefQueue) new class.
	*, xstring.h: (append_padding, dump, dump_to, is_binary) new methods.
	*, xmap.h,, Error.h,, Torrent.h: new files.
	* add new files.

2009-06-11  Alexander V. Lukyanov <>

	* set time precision +-1 second on msdos fs (linux only).
	* xstring.h: add ctor(str,len).

2009-06-11  Jiri Skala <>

	* fixed decode_string return value (also fixes http ls).

2009-05-14  Alexander V. Lukyanov <>

	* fixed coredump when ssh gets killed.
	* show exec'd command status; fixed a deadlock msg.
	* fixed modes and umask (use octal as intended).

2009-05-13  Alexander V. Lukyanov <>

	* use line buffering for log file.

2009-05-07  Alexander V. Lukyanov <>

	* fflush stdout before fork().
	* use xstring::get_tmp to avoid clobbering buffer in
	  lc_to_utf8 and utf8_to_lc.

2009-04-29  Alexander V. Lukyanov <>

	* CopyJob.h: check for null ptr (fixes a core dump).

2009-04-27  Alexander V. Lukyanov <>

	*, CopyJob.h, fixed core dump on kill command.
	*, ftpclass.h: better handle unsupported EPSV command.
	* fixed a coredump on 'mput -d'.

2009-04-16  Alexander V. Lukyanov <>

	*, FileAccess.h: (MkdirMakeSet) new method.
	*, use it (fixes mkdir -p for sftp).

2009-04-10  Alexander V. Lukyanov <>

	* size_t fun.

2009-03-20  Alexander V. Lukyanov <>

	*, xarray.h,, CmdExec.h:
	  (xarray::insert_ordered, xarray::bsearch) new methods;
	  use them to add new commands.
	*, Speedometer.h, use xstring;
	  fixed eta display.
	* drop some unneeded isdigit calls; cast char to
	  unsigned char to prevent sign expansion.
	* use xstring.
	* optimize; cast char to unsigned char to prevent sign expansion.
	*, log.h: outline SetOutput.
	*, StringSet.h,, DummyProto.h: outline ctor/dtor.

2009-03-18  Alexander V. Lukyanov <>

	*, TimeDate.h: (toString) new method.
	* use it.
	*, SleepJob.h: show sleep time left.
	* fixed 'exit kill'.

2009-03-17  Alexander V. Lukyanov <>

	* set NOREST mode on specific error message;
	  unset epsv_supported if it actually isn't.
	* make ftp:prefer-epsv off by default.
	* fixed off-by-one -c bug.

2009-03-03  Alexander V. Lukyanov <>

	*, FileCopy.h: outline SetRange.
	* convert off_t to long long before passing to printf.
	* fix warning; pre-select both PROT modes.
	* fixed parsing of NT unix-like listings with one digit hour.

2009-02-02  Kevin Lo <>

	* silent some warnings.
	* lftp_pty.c: add missing headers for openpty(3) on OpenBSD.

2009-01-28  Jiri Skala <>

	* fixed a possible null dereference.

2009-01-27  Alexander V. Lukyanov <>

	* make it compile on old ipv6 systems.

2009-01-27  Arkadiusz Miskiewicz <>

	*, Resolver.h: add support for IPv6 scope for link-local addresses.

2009-01-27  Alexander V. Lukyanov <>

	*, ftpclass.h, (ftp:prefer-epsv) new setting;
	  fixed message for ignore-pasv-address; use EPSV when ftp:prefer-epsv
	  is true and it's supported.

2009-01-14  Alexander V. Lukyanov <>

	* shutdown ssl connection only when there is no data left.

2008-12-12  Alexander V. Lukyanov <>

	*, (ftp:trust-feat) new setting.

2008-11-27  Alexander V. Lukyanov <>

	*, add another proxy-auth-type: proxy-user@host.

2008-11-11  Alexander V. Lukyanov <>

	* fixed a memory corruption bug (occured in zmore).

2008-11-10  Justin Piszcz <>

	* add include sys/wait.h

2008-11-07  Alexander V. Lukyanov <>

	*,,, Job.h,,,, make AddWaiting set parent/fg.

2008-11-06  Alexander V. Lukyanov <>

	*, FileFeeder.h: use Ref.
	*, don't include lstat.h
	* call super::PrepareToDie.
	*, Job.h: use Ref for fg_data; don't call Done for running job;
	  add PrepareToDie method; use List macros; use xarray::search.
	*, CmdExec.h: add auto_terminate_in_bg; use resource names;
	  new setting cmd:move-background-detach.
	* add no-detach bg exit option.

2008-10-29  Alexander V. Lukyanov <>

	*, misc.h: (in_foreground_pgrp) new function.
	* use in_foreground_pgrp.
	* don't require ftp:acct when proxy settings provide an acct.

2008-10-01  Alexander V. Lukyanov <>

	* clone session properly - it fixed mirror -RP.
	*, lftp_ssl.h: (shutdown) new method.
	*, ftpclass.h: automatically try PROT P if enforced
	  by server.
	*, buffer_ssl.h: shutdown ssl when sending eof.

2008-08-23  Alexander V. Lukyanov <>

	* add another timeout check.
	* don't ignore UNKNOWN type entries; add debug.

2008-08-15  Alexander V. Lukyanov <>

	*, ResMgr.h: add number suffix support (i.e. 10k for 10240).
	*, use new number suffixes.
	* use new ResValue::to_number method.

2008-08-05  Alexander V. Lukyanov <>

	*, SMTask.h: add PrepareToDie virtual method.
	*, FileAccess.h,, FileCopy.h,,
	  GetFileInfo.h,, SleepJob.h,, SysCmdJob.h,, TreatFileJob.h,, echoJob.h,,
	  mgetJob.h: use PrepareToDie, use Refs.
	*, buffer.h: allow to make IOBufferFDStream with FDStream ref.
	*, PtyShell.h: use Refs.
	*, Job.h: use const in RemoveWaiting.

2008-07-23  Alexander V. Lukyanov <>

	* use gnulib's unsetenv.
	*, use gnulib's get_date.
	* link only liblftp-tasks with gnulib.
	* inc stddef.h.
	* hook md5 and glob from gnulib.

2008-05-27  Alexander V. Lukyanov <>

	*, don't include unneeded headers;
	  move assert.h where needed.
	* PollVec.h: include poll.h with CDECL.

2008-05-23  Alexander V. Lukyanov <>

	* ascii_ctype.h: use gnulib c-ctype.

2008-05-22  Alexander V. Lukyanov <>

	* use locale_charset.
	*, use lstat.h.
	*,, use inet_pton.

2008-05-16  Alexander V. Lukyanov <>

	*, ftpclass.h: outline some funcs; disable ALLO on 202 reply;
	  add support for two-arg SITE UTIME; add support for MFMT; new setting

2008-05-14  Alexander V. Lukyanov <>

	*, ftpclass.h: add ALLO check and set use-allo if unsupported.

2008-05-08  Alexander V. Lukyanov <>

	* fixed handling of missed strings in Status reply.

2008-05-06  Alexander V. Lukyanov <>

	* (MergeCookie) use xstring methods; fixed NULL dereference.
	*, xstring.h: xstring::skip_all new method.

2008-04-24  Alexander V. Lukyanov <>

	* fixed cwd tracking for ftps; fixed rate_limit allocation
	  for HTTP proxy; don't re-create data_iobuf when receiving data over
	  HTTP proxy, because we could lose some already received data (reported
	  by Arkady Sherman <>).

2008-04-08  Alexander V. Lukyanov <>

	* init size/time fields.
	* more debug messages; fill array_info even in case of error.
	*, don't use empty charset name.

2008-03-14  Alexander V. Lukyanov <>

	* make sftp:use-full-path on by default; validate it
	  properly as a boolean.

2008-03-13  Alexander V. Lukyanov <>

	* use time 12:00:00 when time is unknown (instead of 12:00:30).

2008-03-05  Alexander V. Lukyanov <>

	* handle stderr messages during file transfer.
	* add 303 and 307 codes (suggested by Stephane Chazelas <>).

2008-02-26  Alexander V. Lukyanov <>

	*, SSH_Access.h,, Fish.h,, SFtp.h,
	  split off the ssh interaction logic to separate module (SSH_Access).
	* add basename only if it is not already there.

2008-02-20  Alexander V. Lukyanov <>

	* fix spinning when fail-exit is triggered with non-empty
	  root cmd_buf.

2008-02-17  Alexander V. Lukyanov <>

	*, ftpclass.h, new setting ftp:ssl-shutdown-timeout;
	  wait for ssl shutdown after CCC (new wait state WAITING_CCC_SHUTDOWN);
	  move some timers and connection state variables to Connection class;
	  use xstring_c for some members.
	* FileAccess.h, NetAccess.h: use xstring_c for some members.

2008-02-16  Alexander V. Lukyanov <>

	*, ftpclass.h, ftp:proxy-auth-type replaces
	  old ftp:proxy-auth-joined setting; implement two more auth types:
	  joined-acct and open (partly based on patch from David Wolfe <>).

2008-02-15  Alexander V. Lukyanov <>

	*, network.h, (network.*) new files.
	* xarray.h: (search) new method.
	* Resolver.h, use new sockaddr_u methods;
	  don't add the same address multiple times; report found addrs.
	*, NetAccess.h: use new sockaddr_u methods.
	* workaround proftpd NLST bug; workaround for
	  a server bug sending single NL; simplify encode_eprt.

2008-02-06  Laurent MONIN <>

	* add open -s option, describe slot command syntax.

2008-02-06  Alexander V. Lukyanov <>

	* don't delete Ref (fixes double delete bug).

2008-01-31  Alexander V. Lukyanov <>

	*, ftpclass.h, (ftp:waiting-150-timeout) new setting;
	  limit time to wait for 150 reply; stop waiting for 150 reply after receiving
	  another reply.
	* (xfer:buffer-size) new setting.

2008-01-23  Alexander V. Lukyanov <>

	* always use passive mode for proxy_is_http==true;
	  use GetFlag function everywhere to test flags.

2008-01-21  Alexander V. Lukyanov <>

	* MirrorJob.h: use SMTaskRef properly (fixes kill all core dump).
	* don't use FSETSTAT to truncate the file on upload when
	  not needed (pos==0 can use open mode with truncation).
	* unset translation when charset is set to an empty string.
	*, SFtp.h, (sftp:use-full-path) new setting;
	  use sftp:charset properly; unset translation when charset eq "".

2008-01-17  Alexander V. Lukyanov <>

	* fixed hex printing of the handle.

2008-01-03  Alexander V. Lukyanov <>

	* use copy of va_list properly (fixes a coredump on some systems).
	* (encode) use xstring::get_tmp to allow several encode calls at once.
	* init link_target properly (fixes NULL pointer fault).

2007-12-28  Alexander V. Lukyanov <>

	  fixed constness for strchr, strrchr and strstr
	  (reported by Yann Rouillard <>).
	*, GetJob.h: don't decode URL escapes when no URL schema used.

2007-12-12  Alexander V. Lukyanov <>

	* workaround the case when transfer ends without data connection.

2007-12-12  Martin Nagy <>

	* (GetPercentDoneStr) prevent buffer overflow.

2007-11-13  Alexander V. Lukyanov <>

	*, xstring.h: make most xstring methods return *this;
	  new function get_tmp(s,n).
	* use new get_tmp.
	* xmalloc.h: add ().

2007-11-12  Alexander V. Lukyanov <>

	*, xstring.h: (get_tmp(const char*)) new function.
	* use it.
	*, FileAccess.h: optimize Log* methods.
	* count rm errors properly.

2007-11-08  Alexander V. Lukyanov <>

	* don't reset timeout_timer all the time.
	* make ftp:use-stat-for-list off by default.

2007-11-03  Alexander V. Lukyanov <>

	* (Log2) don't use %.*s (it mishandles invalid mb characters).
	*, SleepJob.h: repeat --weak new option.

2007-10-24  Alexander V. Lukyanov <>

	* don't accept incomplete comments.
	* set slot name before ChangeSession (fixes a glitch).
	*, ConnectionSlot.h: use FileAccessRef.
	*, use const for FindSession result.

2007-10-18  Alexander V. Lukyanov <>

	* set prot='P' for ftps if PROT command fails.
	*, IdNameCache.h: use Ref; use xstrcmp.

2007-10-15  Alexander V. Lukyanov <>

	* handle timeouts when 150 reply is not received yet.

2007-10-13  Alexander V. Lukyanov <>

	* fix `wait all'.

2007-10-12  Alexander V. Lukyanov <>

	* clear proxy_proto properly.
	* (TurnOffStatForList) new method; fine tune STAT for LIST
	  handling for some servers.

2007-10-09  Alexander V. Lukyanov <>

	* Ref.h: (get) new method.
	* workaround for OSF/1 compiler.

2007-10-08  Alexander V. Lukyanov <>

	* fix xstring::cat.
	* xarray.h: drop automatic cast to T*.
	*, Resolver.h: use explicit xarray::get.
	* fix type mismatch warning.

2007-10-01  Alexander V. Lukyanov <>

	* handle and log STAT errors properly.

2007-09-24  Alexander V. Lukyanov <>

	* fix for non-standard FEAT reply.
	*, SFtp.h: use timer to flush imcomplete data.

2007-09-21  Alexander V. Lukyanov <>

	* use xstring; (access_so) new function.

2007-09-20  Alexander V. Lukyanov <>

	*, LocalAccess.h: let other tasks run while doing
	  ListInfo; better status messages.
	* optimize translations; use xstring::format.
	* FileSet.h: (count, curr_index, curr_pct) new methods.

2007-09-17  Alexander V. Lukyanov <>

	* skip leading space in STAT reply.
	* add another server overload message.
	*, MirrorJob.h: (depth-first, no-empty-dirs, ascii)
	  new options.
	*, CmdExec.h, (CmdByIndex) return cmd name.

2007-09-12  Alexander V. Lukyanov <>

	* improve STAT reply handling.
	*, ArgV.h: (getopt_error_message) new method.
	* use getopt_error_message; don't pass longopt - unneeded;
	  (cls) remove options after time_style is used.

2007-09-12  Lamer <>

	*, (ssl:check-hostname) new setting.

2007-09-10  Alexander V. Lukyanov <>

	* use strtok instead of tokenize.
	*, misc.h: drop tokenize.
	*, CmdExec.h, use xarray for dyn_cmd_table.
	*, ColumnOutput.h: use RefArray for datum.
	*, FileAccess.h: outline DirList ctor and dtor.
	*, FileCopy.h,, FileGlob.h,,
	  FileSet.h: outline ctor/dtor.
	*, FindJob.h: use RefArray for stack.
	*, FindJobDu.h: use RefArray for size_stack; use Ref.
	*, xarray.h: (xqueue) new class; (xarray::chop,last,qsort,
	  move_here) new methods; (xarray_s) new class.
	* xstring.h, Ref.h: (_clear,_set,unset) new methods.
	* use xqueue for RespQueue.
	* use Refs, use xarray_s for stack.
	*, Job.h: use xarray for waiting; (AllWaitingFg) new method.
	*, define waiting_num.
	* use xarray.
	*, SMTask.h: use xarray for stack.
	* use url::encode.
	* fixup for new waiting.
	* when directory STAT reply includes 211- prefixes, strip them.

2007-09-02  Alexander V. Lukyanov <>

	* fixed typo leading to coredump.

2007-08-31  Alexander V. Lukyanov <>

	* set entity_size only for RETRIEVE mode; better handle 1xx replies.

2007-08-31  Craig Ruff <>

	* handle 125 reply as 150.

2007-08-30  Alexander V. Lukyanov <>

	* clone session when doing transfer (fixes -P).
	*, buffer.h: (Append, AppendTranslated) new methods.

2007-08-29  Alexander V. Lukyanov <>

	*, buffer.h: move Put_LL shortcut to IOBuffer.
	*, FileAccess.h: (expand_tilde) add start index arg;
	  (Path::Optimize) use xstrings, add a special case for optimization of url paths,
	  (Path::Change) use xstrings, expand single tilde in url.
	*, misc.h: dirname works with xstring.
	* use new dirname.
	* use new dirname; getfd in FileCopyPeerFDStream mode PUT, so that
	  it becomes IOReady.
	* use xstrings.
	*, xstring.h: (append(s,len), append(xstring)) new methods; fix set_substr;
	  (set_substr(i,len1,s,len2)) new method.

2007-08-24  Alexander V. Lukyanov <>

	*, xstring.h: (get_tmp, format, vformat, cat, join) new static methods.
	  use new xstring methods; prefer xstring::length over strlen.
	*, ftpclass.h: (ReceiveOneLine) new method; clean up ReceiveResp.
	* buffer.h: (Put(xstring&)) new method.

2007-08-23  Alexander V. Lukyanov <>

	* don't use put_ll_timer in ascii mode.

2007-08-20  Alexander V. Lukyanov <>

	*, FileAccess.h: new Log* methods.
	*, log.h: (vFormat) new method.
	*, RateLimit.h,, move RateLimit
	  implementation to a separate file.
	*, ftpclass.h: use new Log* methods; don't call getpeername
	  for just connected socket; wait for 150 reply before accessing data socket.
	*,,,,, use new Log* methods.
	* limit upload packet size.
	* increase cache size to 16Mb.

2007-08-16  Alexander V. Lukyanov <>

	* truncate xstring correctly.
	*,,, CmdExec.h: use Ref for top_exec.
	*, FileCopy.h, add transfer log support
	  and xfer:log setting.

2007-08-15  Alexander V. Lukyanov <>

	* xstring.h: disable clone and assign for xstring_ca.
	* use a clearer alloc condition.
	* simplify parser with xstring.
	*, xarray.h: (keep_extra) new member.

2007-08-14  Alexander V. Lukyanov <>

	*, FileSet.h: fix clone ctor, add Dump method.
	* use NO_DATE.
	* don't do ResetLocationDate in clone ctor - it leads
	  to loss of cwd; set correct real_cwd when handling of CWD reply.
	* save listing in cache with proper mode.
	* update copyright.
	* don't change TYPE unless needed.

2007-08-13  Alexander V. Lukyanov <>

	* xarray.h: zero terminate xarray_p.
	* correctly truncate xstring.
	* fixed list colouring (line parse).
	* optimize.

2007-08-10  Alexander V. Lukyanov <>

	* Ref.h, xarray.h, SMTash.h: make a base class _RefArray; new class
	  TaskRefArray; new class xarray_p; (xarray::borrow) new method.
	*, StringPool.h,, StringSet.h: use xarray_p.
	*, pgetJob.h: use TaskRefArray.
	*, ftpclass.h: check anonymous password for leading minus sign
	  before enabling stat-for-list.

2007-08-08  Alexander V. Lukyanov <>

	*, use xstring and StringSet.
	*, xarray.h: new files.
	* add xarray files.
	*, NetAccess.h,,,,
	  FileSet.h,, PollVec.h,, ColumnOutput.h,, Resolver.h: use xarray.
	* StringSet.h: (borrow) new method.
	* Ref.h: make RefArray a friend.

2007-08-06  Alexander V. Lukyanov <>

	* FileSet.h, (NotNewerThan, NotOlderThan, Subtract*) new methods.
	* use SubtractNotNewerThan and SubtractNotOlderThan.

2007-08-02  Alexander V. Lukyanov <>

	*,, NetAccess.h: increment retries on
	  soft transfer errors which do not cause disconnect; check retry
	  count before re-starting transfer.
	* increment saved retry count before next try.
	* remove obsolete code.
	*, log.h: use Ref; use xstring::vsetf.
	*, keyvalue.h: use xstring::appendf.
	*, use xstring.

2007-07-31  Alexander V. Lukyanov <>

	* set STORE_FAILED error properly in some cases.
	*, ftpclass.h, new setting ftp:use-stat-for-list.

2007-07-30  Alexander V. Lukyanov <>

	* clear handle on disconnect (fixes coredump).

2007-07-27  Alexander V. Lukyanov <>

	* add $$ eval substitution.
	*, xstring.h: (appendf, vappendf) new methods.

2007-07-26  Alexander V. Lukyanov <>

	* (eval) new command.

2007-07-26  Alexander V. Lukyanov <>

	*, ColumnOutput.h: use Refs.
	*, CopyJob.h: use Refs; allow to specify CopyJob creator
	  for CopyJobEnv.
	*, FileCopy.h: close session when it's not needed; suspend
	  only open sessions; new Clone methods; disallow negative buf size.
	*, FileSetOutput.h: use Refs; remember data source error.
	* Job.h: make JobRef===SMTaskRef.
	* OutputJob.h: remove unused members/methods.
	*, use new pget.
	* use JobRef.
	*, pgetJob.h: derive from CopyJob.

2007-07-25  Alexander V. Lukyanov <>

	*, ftpclass.h: allow to borrow active connection if last
	  connection failed.

2007-07-06  Alexander V. Lukyanov <>

	* fixed DataRecoder.
	* buffer.h: (PutRaw) new method.
	*, ftpclass.h: send encoded parts of url untranslated.
	*, url.h: (path_ptr) new method.

2007-06-15  Alexander V. Lukyanov <>

	* (CharsetValidate) return error without iconv.
	*, buffer.h: nicer conditionals.

2007-06-15  Jakob Truelsen <>

	*,,, buffer.h: allow compilation without iconv.

2007-06-08  Alexander V. Lukyanov <>

	* FileAccess.h: don't include LsCache.h.
	*, FileSet.h: const Count.
	* don't return NULL for empty pass.
	*, LocalAccess.h,, LsCache.h,, MirrorJob.h: use Refs.
	* xstring.h: (last_char) new method.
	* xmalloc.h: (alloca_append) new macro.
	*, url.h: (url::decode) new static method; make
	  url::dir_needs_trailing_slash support urls instead of just proto.
	* add trailing slash to urls when needed; keep url when doing cd ..
	* consult cache when deciding how to Chdir.
	* move peer cloning here from Http; cache FileSet.
	* don't add slash if url is known; cache dir status.

2007-06-04  Alexander V. Lukyanov <>

	*, buffer.h: make Unpack* const.
	* Ref.h: (get_non_const) new method; Cast<T> new template.
	*, SFtp.h: use Refs, use const where appropriate.

2007-05-31  Alexander V. Lukyanov <>

	* fixed Disconnect to unset buffers.
	* FileGlob.h: dir_list should not be Ref.
	*, xstring.h: (xstring_c::vset, xstring::setf) new methods.
	*,,, use xstring::setf.
	* use xstring_c::vset.
	* encode non-ascii chars; use setf.
	* better debug print.
	* fixed Read (broken when _Read was split off);
	  fixed handling of urls without path.

2007-05-24  Alexander V. Lukyanov <>

	* convert-netscape-cookies: use strict; better error message.

2007-05-22  Alexander V. Lukyanov <>

	*, ftpclass.h: use Ref for expect.
	*, xmalloc.h: 3-arg xstrset - new function.
	* xstring.h: (xstring_c::nset) new method.
	*,,,,,,,,, url.h: use xstring in ParsedURL.

2007-05-21  Alexander V. Lukyanov <>

	*, Http.h: (_Read) new private method to use in LogErrorText
	  (fixed incorrect resetting of retries).

2007-05-15  Alexander V. Lukyanov <>

	* FileAccess.h: use static_cast (as we use -fno-rtti).
	*, NetAccess.h: use Ref; split off RateLimit.
	* RateLimit.h: new file.
	*, change for Refs in NetAccess.
	*, Http.h: use Ref.
	* ProcWait.h: make dtor public.
	*, Resolver.h,, buffer_ssl.h,,
	  ftpclass.h: use Ref.

2007-04-27  Alexander V. Lukyanov <>

	*, FileAccess.h: more inlines; make dtor public.
	* StatusLine.h: make dtor public.
	* SMTask.h: make SMTaskRef inherit from Ref.

2007-04-25  Alexander V. Lukyanov <>

	* use explicit borrow().
	*, Fish.h,, SFtp.h: use Refs.
	* Ref.h: declare Ref::null; deny assignment from other Ref.
	* use Ref::null.
	* buffer.h: optimize ctors.

2007-04-21  Alexander V. Lukyanov <>

	* use new FileCopyPeerFA::New.
	*, CmdExec.h: use Ref for saved_session.
	*, ConnectionSlot.h: add const.
	*, DirColors.h: pass const Ref&.
	* use new DirList ctor.
	*, FileAccess.h: use Refs; (FileAccessRef::null) new
	*, FileCopy.h,, FileCopyFtp.h: use Refs;
	  const; Cast method.
	*, FileGlob.h,, Filter.h: use Refs.
	*, FileSet.h: use consts.
	*, FindJob.h,, Fish.h,, FtpDirList.h,, GetFileInfo.h, GetJob.h,,, OutputJob.h,, SFtp.h,, SleepJob.h,, buffer.h,,, mkdirJob.h: use Refs.
	*, change order of args to *DirList.
	* ftpclass.h,, history.h: add const.
	*, Job.h: use Refs in SessionJob; drop Reuse method.
	* pass 0 as session to DirList.
	*, use non-static Roll method.
	* SMTask.h: drop operator=(SMTaskRef&).

2007-04-18  Alexander V. Lukyanov <>

	* don't delete Refs.
	* CopyJob.h,, OutputJob.h: return ref to Ref instead of
	*, FileCopy.h: use Refs; make more virtual methods for fxp.
	* use the new virtual methods instead of ptr casting.
	*, FileSetOutput.h: (FileSetOutput::parse_res) new
	*, GetJob.h: use Ref and new FileCopyPeerFDStream ctor.
	*, SMTask.h: fixed Ref assignment; more info in PrintTasks.
	*, use FileSetOutput::parse_res.
	*, pgetJob.h: use new FileCopyPeerFDStream ctor.
	*, CatJob.h, use JobRef; pass const ref to JobRef.
	* FileCopyOutputJob.h, FileCopy.h, split off FileCopyOutputJob.h.

2007-04-13  Alexander V. Lukyanov <>

	* Ref.h: (Ref) new template class.
	* SMTask.h: (SMTaskRef) new template class.
	* Job.h: (JobRef) new template class.
	*, CatJob.h,, CmdExec.h,, CopyJob.h,, FileSetOutput.h,, FindJob.h,,
	  Job.h,, MirrorJob.h,, OutputJob.h,, TreatFileJob.h,, buffer.h,,, echoJob.h,, mgetJob.h,, mvJob.h,, pgetJob.h: use Ref.

2007-04-12  Alexander V. Lukyanov <>

	*, HttpDir.h,,, LsCache.h: use xstring.
	*, xstring.h: make vstrlen do va_copy.

2007-04-11  Alexander V. Lukyanov <>

	*, CmdExec.h, use Buffer for cmd_buf;
	  use xstring where needed; fix FIXME in WriteCmds and ReadCmds;
	*, buffer.h: make Get const; (Prepend) new method.
	*, MirrorJob.h,, PatternSet.h,, PtyShell.h,,, lftp_ssl.h:
	  use xstring.
	* ArgV.h: (CombineCmd) new method.
	*, CmdExec.h,, CopyJob.h,,
	  DummyProto.h,, FileCopy.h,, FileGlob.h,, Filter.h,, FindJob.h,,
	  FindJobDu.h,,, FtpDirList.h,,
	  GetFileInfo.h,, GetJob.h,, LocalDir.h,,, alias.h,, bookmark.h,,,,, history.h,,, mgetJob.h: use xstring.
	* lftp_rl.c, lftp_rl.h: const in filename_dequoting_function.
	* const mismatch.
	*, GetPass.h: use file descriptor instead of FILE;
	  use xstring; return const char*.
	*, ColumnOutput.h: use StringSet, xstring.
	*, xstring.h: (chomp, rtrim) new methods.

2007-04-09  Alexander V. Lukyanov <>

	* xstring.h: (eq, ne, xstring0::length) new methods.
	*, OutputJob.h: use xstring.

2007-04-06  Alexander V. Lukyanov <>

	*, xstring.h: allow truncate on unset xstrings; change
	  truncate_at so that it works on binary strings.
	*, FileSetOutput.h, use xstring;
	  disable FileSetOutput cloning and assignment.
	* xstring.h: (xstring_ca) new class for allocated strings.
	*, use it.
	*, CmdExec.h: use xstring; make unquote return result length.
	*, QueueFeeder.h, use xstring.
	* use xstring_ca.
	* don't add extra \001 for readline prompt.

2007-04-05  Alexander V. Lukyanov <>

	* xstring.h: disable cloning of xstring*.
	*,, avoid unnecessary xstring cloning.
	* FileAccess.h,, FileCopy.h,, FileSet.h,,, Filter.h,,
	  (FileTimestamp) new struct; use it where needed; submit even
	  imprecise timestamp from MirrorJob to CopyJob.

2007-04-04  Alexander V. Lukyanov <>

	* truncate key and value before reading next record.

2007-04-02  Alexander V. Lukyanov <>

	* use xstring.

2007-03-30  Alexander V. Lukyanov <>

	*, FileInfo::name is now xstring -
	  use get().
	*, xstring.h: move get_non_const to xstring0;
	  get rid of AUTO len (unused); make get_space public and make it
	  take granularity as argument; (set_length) new method.
	* (LogErrorText) get rid of unused code.
	* FileSet.h: use xstring_c for symlink.
	* allow set_allocated(0); simplify truncate.
	*, FileCopy.h,,,
	  buffer.h,, use xstring as base for Buffer;
	  in_buffer is gone; ZeroTerminate is too.
	*, xstring.h: append(char) new method; (borrow) new method.
	*, keyvalue.h: use xstring.

2007-03-29  Alexander V. Lukyanov <>

	*, xstring.h: (set_substr) new method.
	*,, FileSet.h,,,, mgetJob.h, use xstring in FileInfo.
	* support overlapping set.
	* xstring.h: add compact variant of xstring (xstring_c).
	*, Resolver.h: use xstring_c in cache.
	* xstring.h: add xstring_c::truncate.
	* allow overlapped xstrset.
	*, FileSetOutput.h,, ResMgr.h,
	  use xstring_c for resources.

2007-03-28  Alexander V. Lukyanov <>

	*, SleepJob.h: use xstring.
	*, xstring.h: add len member; support binary strings.
	*, SFtp.h: use xstring.
	*, Resolver.h: use xstring.

2007-03-26  Alexander V. Lukyanov <>

	* prevent double-delete of args in LocalDirList
	  (reported by Liu Yubao <>).
	*, cosmetics.
	* fixed core dump when target directory is not writable
	  (reported by Justin Piszcz <>).

2007-03-26  Alexander V. Lukyanov <>

	*,, Job.h,,,,, use xstring for cmdline.

2007-03-23  Alexander V. Lukyanov <>

	*, Fish.h: use StringSet for path_queue.
	*, StringSet.h: (LastString, Pop) new methods.
	*, NetRC.h: use xstring.
	* fixes for xstring in NetRC.
	*, pgetJob.h: use xstring.

2007-03-13  Alexander V. Lukyanov <>

	*, ftpclass.h: change line to xstring; drop line_len;
	  improve <NUL> handling; require <CR><NL> to end line.

2007-03-13  Alexander V. Lukyanov <>

	*, xstring.h,, xmalloc.h: split off xstring.
	*, FileAccess.h,, Fish.h,, Http.h,,, NetAccess.h,,,
	  ftpclass.h: use xstring.

2007-03-09  Alexander V. Lukyanov <>

	* misc.h: don't delete the object in ListDel.

2007-03-06  Alexander V. Lukyanov <>

	* tell target to find file size before requesting
	  source to get file information - this avoids HEAD when doing
	  `get -c' to local destination.
	*, Http.h: try to log error text if it is already available.
	*,, misc.h: move remove_tags to misc.
	*, buffer.h: (ZeroTerminate) new method.
	* xmalloc.h: (xstring) new class.

2007-02-27  Damon Harper <>

	*, MirrorJob.h: new option --only-existing.

2007-02-27  Alexander V. Lukyanov <>

        *,,,,,,,,,,,,,,,,,,,,,, use xstrset
	  to assign dynamic strings.
	* -p option has priority over the url.

2007-01-11  Alexander V. Lukyanov <>

	* use default closure feature of ResClient;
	  clear ls cache when ftp:list-options changes.
	*, xmalloc.h: (xstrset) new function.
	* use xstrset.

2007-01-06  Alexander V. Lukyanov <>

	*, misc.h,, Fish.h: move shell_encode to
	* use shell_encode to quote properly file names for shell;
	  this fixes potential security vulnerability when one generates a
	  script with mirror --script and then executes it.

2006-12-27  Alexander V. Lukyanov <>

	* Cache.h: (Cache::AddCacheEntry) new method.
	*, Resolver.h,, LsCache.h: use it.
	*, ResMgr.h: (ResClient) new base class for resource users.
	*, FileAccess.h, Resolver.h,,, Speedometer.h: use it.
	* misc.h: add list macros.

2006-12-18  Alexander V. Lukyanov <>

	*, Timer.h: reset timer when creating it from TimeInterval,
	  this fixes sleep command; (re_set) forced resetting; use it.

2006-12-14  Alexander V. Lukyanov <>

	* remove obsolete note about infinite cache size.

2006-12-10  Alexander V. Lukyanov <>

	*, SMTask.h: eliminate sched_total and the need to merge
	  multiple block vectors; tasks set the global SMTask::block directly.
	* (WaitDone) make it more robust - protect from deleting the
	  jobs we wait for.

2006-12-06  Alexander V. Lukyanov <>

	* reset timeout_timer when waiting for transfer
	  confirmation; reset it when sending a command after some idle
	  time; (Read) fixed check for null iobuf.
	* (Reset) reset only to a later time.

2006-11-28  Alexander V. Lukyanov <>

	*, MirrorJob.h: (--on-change) new option.
	*, log.h: optimize Log::Format for when the message is not
	  going to be output.
	*, buffer.h,, ftpclass.h: (DataTranslator) new
	class; use it in DirectedBuffer; (DataRecoder) new class for charset
	conversion; use DataTranslator in IOBufferTelnet; skip 3-byte telnet
	commands; optimize buffer data movement.

2006-10-10  Alexander V. Lukyanov <>

	* clear and reset cp when a sub-job finishes (fixes
	  coredump in mget).

2006-09-27  Alexander V. Lukyanov <>

	* use Delete on SMTask derivative Speedometer.
	* add debug print when deleting running task.
	* fixed coredump when path.url is null after Change.
	* Delete done CopyJob - fix a leak.

2006-08-29  Alexander V. Lukyanov <>

	*, FileSet.h,, MirrorJob.h,
	  new mirror option --skip-noaccess and setting mirror:skip-noaccess.
	  (FileSet::ExcludeUnaccessible) new method.

2006-08-22  Alexander V. Lukyanov <>

	*, CmdExec.h, QueueFeeder.h, add settings
	  cmd:parallel and cmd:queue-parallel; backout QueueFeeder changes;
	  drop queue --parallel option.

2006-08-22  Markus Schoder <>

	*,, QueueFeeder.h: add queue --parallel option.

2006-08-22  Alexander V. Lukyanov <>

	* SMTask.h: drop MakeRef macro, it makes trouble with multiple arg evaluation.

2006-08-08  Alexander V. Lukyanov <>

	*, add mirror:include-regex setting.

2006-08-07  Alexander V. Lukyanov <>

	*, FileSetOutput.h,,, FindJobDu.h: update for new human_readable; use enum
	  for long options.
	* use enum for long options.
	* load ssl keys for data connection.
	* new setting ftp:ssl-data-use-keys.

2006-08-04  Alexander V. Lukyanov <>

	* disable ssl on errors if not forced.
	* fix timer chain head corruption.

2006-08-02  Daniel Black <>

	* fix linking with modules and socks.
	*, CmdExec.h,, save url returned
	  from GetConnectURL from overwriting by next GetConnectURL call.
	* don't free cred if it was not allocated.

2006-08-01  Pascal Bleser <>

	* fixed install with modules.

2006-07-28  Alexander V. Lukyanov <>

	* fixed proto comparision when using hftp with ftp url scheme.

2006-07-27  Alexander V. Lukyanov <>

	*, FileSet.h: optimize FileSet::Merge.
	* make sure FileSet is properly sorted after tilde

2006-07-26  Alexander V. Lukyanov <>

	* change use_propfind_now in Reconfig.
	* add references to classes which are used in modules,
	  this fixes static compilation.
	* remove DirColors reference (in now).
	* better use of libtool capabilities.

2006-07-25  Alexander V. Lukyanov <>

	* use timestamp only if it's precise.
	* fix month off-by-one.
	* use SetSize so that seek_pos gets changed from FILE_END;
	  debug state changes.
	* use; don't use lib for includes.

2006-07-22  Nix  <>

        Adapt to synch with gnulib-20060722.

        * filemode.h needs CDECL guards.
        * (ChmodJob): mode_free() is gone, just free() now.
        * (GetMode): Adjust mode_adjust() prototype, keeping
        current behaviour by deactivating umasking (which is meaningless
        on remote systems in any case).
        * (CurrentFinished): mode_string() is now named strmode().
        * (RelativeMode): mode_change is now an array, not a
        linked list.
        * (append): mbswidth()'s flags have flipped.
        * (print_size): human_readable() and human_readable_inexact()
        have merged.
        * filemode.h needs CDECL guards.
        * (print): human_readable(), mode_string() and mbswidth
        flag changes as above.
        * (ShowRunStatus): mbswidth flag changes.
        * (update): Likewise.
        * (CMD): Likewise.
        * (squeeze_file_name): Likewise.

        * filemode.c: Synched with gnulib; moved to lib/.
        * human.c: Likewise.
        * modechange.c: Likewise.
        * xstrtol.c: Likewise.
        * xstrtoul.c: Likewise.

        * mbswidth.c: Synched with gnulib.
        * mbswidth.h: New, from gnulib.
        * wcwidth.h: Likewise.

        * (liblftp_tasks_la_SOURCES): Remove stuff that's
        moved to lib/.
        * (liblftp_jobs_la_SOURCES): This depends on
        * (INCLUDES): Include from lib/.

2006-07-18  Alexander V. Lukyanov <>

	* add --user and --password options for open.

2006-07-10  Alexander V. Lukyanov <>

	* use ascii mode for ls, as before.

2006-07-07  Alexander V. Lukyanov <>

	* update help for pget.

2006-07-06  Alexander V. Lukyanov <>

	*, lftp_ssl.h,, don't load keys/certs
	  for ftp data connection.

2006-07-05  Alexander V. Lukyanov <>

	* disable option reordering in repeat; small cleanup.
	* fix a coredump.

2006-07-04  Alexander V. Lukyanov <>

	*, FileAccess.h, (SetLimit) new method;
	  (UNKNOWN_POS) new constant; move FILE_END here.
	*, FileCopy.h: use SetLimit; move FILE_END to FileAccess.h.

2006-07-03  Alexander V. Lukyanov <>

	* CopyJob.h: (SetRangeLimit) new method.
	* FileCopy.h: (SetRangeLimit) new method; make SetRange seek when needed.
	*, pgetJob.h: add explicit start0 and limit0 members for chunk 0;
	  read position for chunk 0 before trying to fetch it (when pget_cont).

2006-06-30  Alexander V. Lukyanov <>

	*, ResMgr.h,, Cache.h: rename ResDecl to ResType;
	  make ResDecl a derived from ResType; make resources a static array
	  of structures (to save on constructors); make ResDecls class to
	  register bulk of ResType's.
	*, GetJob.h: add truncate_target_first flag (for pget).
	*, pgetJob.h,, support pget -c.

2006-06-28  Alexander V. Lukyanov <>

	*, GetJob.h,, pgetJob.h: simplify copy peer
	  creation; pass url from pget to CreateCopyPeer (this fixes
	  pget http://...?args).
	*, add use-allo setting.

2006-06-26  Alexander V. Lukyanov <>

	*,, FileCopy.h: support for ALLO command; get file size
	  for local sources in any case.
	* use GNU head if available for upload; use a larger bs for dd in upload
	  and count characters with wc -c (a great speed up for both cases). A fixed
	  version of script by Dmitry Butskoj <> was used (from mc).

2006-06-19  Alexander V. Lukyanov <>

	* handle prev_line==0 case (fixes coredump).

2006-06-16  Alexander V. Lukyanov <>

	*, SleepJob.h: new options for repeat (--while-ok, --until-ok).

2006-06-15  Alexander V. Lukyanov <>

	*, SleepJob.h, new options for repeat (--count, --delay).
	*, NetAccess.h, drop two arg SetSocketBuffer and
	  SetSocketMaxseg methods.
	*, ftpclass.h, move abor_close_timer to Ftp::Connection;
	  init it from resource ftp:abor-max-wait; read and discard data from aborted
	  data connection.

2006-06-14  Alexander V. Lukyanov <>

	* use TimeInterval two arg ctor.
	*, ftpclass.h: use abor_close_timer instead of abor_time;
	  use Time::Passed and TimeDiff vs int cmp.
	*, Timer.h: new method IsInfty; reset event when start==now.
	*, TimeDate.h: fix normalize for negative msec;
	  inline lt; new method Time::Passed; comparision of TimeDiff with
	  int seconds.
	*, SleepJob.h: use Timer.
	* don't use Ascii for quote, this fixes `quote POST'.

2006-06-13  Alexander V. Lukyanov <>

	*, DummyProto.h, : const everywhere.
	*, FileAccess.h: consts; drop url member; new cache; ClassCleanup.
	*, FileCopy.h,, Fish.h,,,,, Http.h,,,, LocalAccess.h,, NetAccess.h,, SFtp.h,,, ftpclass.h: const; new cache.
	*, Cache.h: new files; base Cache class.
	*, LsCache.h,, Resolver.h: use base Cache class.
	* add Cache files.
	*, ResMgr.h: consts.
	*, Timer.h: add ctor from resource/closure; drop iterators.
	* call FileAccess::ClassCleanup; ajust max tasks left.

2006-06-09  Alexander V. Lukyanov <>

	*,,,, cache is now enabled per host.
	*, LsCache.h: derive LsCache from Timer; drop expire_helper.
	*, ResMgr.h: add ResMgr::SimpleQuery(ResDecl); optimize queries.
	*, SMTask.h: add PrintTasks debug method.
	* TimeDate.h: add TimeInterval comparisions.
	*, Timer.h: add Iterate* methods; add TimeLeft method.
	* call PrintTasks from .tasks command.
	*, FileAccess.h,, NetAccess.h: make Connect
	  and ConnectVerify non-virtual; init timers in ResetLocationData.
	*, Timer.h: add ResetDelayed method; drop Reset(time_t).
	* buffer.h: make event_time of type Time.
	*, ftpclass.h: use Timer for STAT timing.

2006-05-26  Alexander V. Lukyanov <>

	* use correct ctor of Timer.
	*, IdNameCache.h: don't use Delete for Timer.
	* use Timer timeout and call Timer::ReconfigAll.
	* TimeDate.h: drop unneeded operators.
	*, Timer.h: don't inherit from SMTask for efficiency.
	* don't call Timer::Reconfig - not needed now.

2006-05-26  Alexander V. Lukyanov <>

	*, FileAccess.h: move Poll and CheckHangup to NetAccess;
	  drop event_time member and BumpEventTime method.
	*,,,, ftpclass.h: use
	  timeout_timer.Reset instead of BumpEventTime.
	*, NetAccess.h: drop timeout member; add timeout_timer;
	  drop duplicate member retries (fixes a bug).
	* TimeDate.h: make time_t operator const.
	*, Timer.h: allow Reset from Time or Timer; reset only to a
	  later time.

2006-05-25  Alexander V. Lukyanov <>

	*,,, NetAccess.h,, Resolver.h,,, ftpclass.h: use Timer for net:idle, dns:fatal-timeout.
	* ResMgr.h, TimeDate.h: add default TimeInterval{R,} ctors.
	* use TimeIntervalR to convert string to TimeInterval.
	* Timer.h, add const; new methods GetLastSetting, TimePassed,
	* misc.h: move MINUTE, HOUR, DAY to TimeDate.h.
	* change net:idle format to TimeInterval.
	* use SMTask::now.
	*, SMTask.h, use TimeInterval and Timer in RollAll.
	*, Timer.h: use TimeInterval in Set.

2006-05-24  Alexander V. Lukyanov <>

	*,,,,,,, explicitly request unix time.
	* use numeric TimeInterval ctor.
	*, ResMgr.h: split off TimeIntervalR from TimeInterval;
	  move TimeInterval to TimeDate.{cc,h}.
	* use TimeInterval::Finished method.
	*, SleepJob.h: use Time; TimeInterval::GetTimeout.
	* explicitly create TimeDiff.
	*, TimeDate.h: optimize time_tuple and Time methods;
	  move TimeInterval here.
	* use TimeIntervalR.
	* close aborted data connection in few seconds after ABOR;
	  don't use ABOR just after another command.
	* ftpclass.h: add abor_time and last_cmd_time members.

2006-05-19  Alexander V. Lukyanov <>

	* fixed dyn_cmd_table initialization - last static command
	  was overwritten due to off-by-one error.

2006-05-13  Alexander V. Lukyanov <>

	*,, add support for recoding in fish
	  and sftp (version<4); new settings fish:charset, sftp:charset.

2006-05-03  Alexander V. Lukyanov <>

	* fixed compilation without ssl.
	*, SMTask.h: fix compilation with some compilers (e.g. sun).
	* support auto-rename in get1.
	* FileCopy.h: add AutoRename method.
	* fixed extraction of suggested file name; fixed decoding
	  of chunked transfers when content-length is explicitly known.

2006-04-25  Alexander V. Lukyanov <>

	* add zlib version; wrap library line nicely.

2006-04-24  Alexander V. Lukyanov <>

	* init ssl layer after connection through http proxy is
	* pass port to FileAccess::New along with hostname, this
	  fixes opening sites with explicit port (it could either use default
	  port or spin).

2006-04-19  Alexander V. Lukyanov <>

	*, ArgV.h: include getopt.h in the header.
	* add defaults for session and cwd when creating CmdExec.
	*, FileAccess.h: make sure classes are inited; add port
	  argument for New method; do Connect in New.
	*, Job.h: add WaitDone method.
	* no need to include getopt.h.
	* ResMgr.h, add class_inited static member.
	* move history command to
	* handle PRET errors.
	* getdate.y: use plain free.
	* move history here; ClassInit's are called automatically now;
	  use Job::WaitDone.
	* log.h: add ShowNothing method.
	*, fixed for new interfaces.
	* new example.
	* new example.

2006-04-07  Alexander V. Lukyanov <>

	*, send password twice if needed, it handles the case
	  of a protected private key.

2006-04-05  Alexander V. Lukyanov <>

	* don't return MOVED if nothing changed, this
	  fixes rare spinning.
	*, CmdExec.h, rename top_exec to CmdExec::top;
	  add CmdExec::Exit method.
	* don't show status of deleted jobs.
	* add exit options: top, kill; accept exit code along
	  with options.

2006-03-31  Alexander V. Lukyanov <>

	* get exit_code before AtExit, so it is not changed by
	  cmd:at-exit commands.
	* workaround some servers' problem with size>2G.

2006-03-30  Alexander V. Lukyanov <>

	* make scheduler run after ssl handshake - this fixes
	  ftp upload hang when the file is empty.

2006-03-15  Alexander V. Lukyanov <>

	*, add mirror:dereference setting,
	  --no-dereference, --perms options.

2006-03-15  Alexander V. Lukyanov <>

	*, FindJob.h: add PROCESSING state, so Chdir
	  is not called continuously.
	* use Path::Change instead of Chdir.

2006-03-13  Alexander V. Lukyanov <>

	* don't create target file if source does not exist.
	* don't delete killed job right not; CollectGarbage after
	  KillAll or Cleanup, don't delete the jobs in loop.
	* Job.h: make Kill and KillAll static; add Cleanup method.
	* show done jobs before exit.
	* do Job::Cleanup before termination.
	* change http:use-propfind default to no.

2006-02-16  Alexander V. Lukyanov <>

	*, FileAccess.h: Close session in Chdir, VerifyPath
	  (fixed coredump).
	* avoid Chdir, as it Closes session.
	* use SMTask ref count.
	*, SMTask.h: (ref_count) new member.
	* remove unneeded abort().

2006-02-14  Alexander V. Lukyanov <>

	* fixed condition when exact time is needed for cls.

2006-02-08  Alexander V. Lukyanov <>

	* fixed a stupid bug with cls (time-style).
	* assign env TIME_STYLE to cmd:time-style.

2006-02-06  Alexander V. Lukyanov <>

	*, add cmd:time-style setting.

2006-01-23  Alexander V. Lukyanov <>

	*, Http.h: use PROPFIND for cd check before HEAD.

2006-01-15  Alexander V. Lukyanov <>

	*, FileSetOutput.h, add cls --time-style

2006-01-12  Alexander V. Lukyanov <>

	* fixed an abortion when cmd:remote-completion is false.
	* don't do shutdown/bye, as it makes problems with CCC.
	* use automake conditionals to select modules to build.

2005-12-28  Alexander V. Lukyanov <>

	*,,,,,,, handle return values (fix warnings).
	* install shared libs liblftp-tasks and liblftp-jobs;
	  don't make static libs when not needed.

2005-12-27  Alexander V. Lukyanov <>

	*,,,,,,, handle return values (fix warnings).
	*, ResMgr.h: add TimeInterval::Set method.
	*, add dns:max-retries setting; prefer
	  getaddrinfo if available; change dns:fatal-timeout to TimeInterval type.
	  output a warning when that error appears.
	* try to put available data in case of `get' error;
	  optimize line-buffering.
	*, misc.h: (memrchr) new function.
	*, ftpclass.h: (Connection::CloseDataSocket) new method;
	  close data socket in case of data connection error for the case
	  when error handling is delayed.

2005-12-22  Alexander V. Lukyanov <>

	* add libiconv version to `version' output.

2005-12-15  Alexander V. Lukyanov <>

	*, rmJob.h, don't remove directories
	  recursively when NO_RECURSION flag is set; drop rmdirJob class;
	  add rmJob::Rmdir method.
	* SMTask.h, (SMTask::DeleteLater) new method; use it.

2005-12-14  Alexander V. Lukyanov <>

	* fix netrc usage when no user name is given.
	* flush cache when changing charset.

2005-12-08  Alexander V. Lukyanov <>

	*, show all queued commands on `queue' command;
	  clear done jobs even if queue is stopped.

2005-12-04  Alexander V. Lukyanov <>

	*, ResMgr.h: support open ranges.

2005-12-02  Alexander V. Lukyanov <>

	* fix guess_year for month boundary.
	* another fix for sun c++ compiler.
	* use termcap.h if available and no curses; fix usage of tgetstr.

2005-11-30  Alexander V. Lukyanov <>

	*, MirrorJob.h: add --max-errors option.
	*, SFtp.h: add support for sftp version 5 and 6.

2005-11-29  Alexander V. Lukyanov <>

	*, FileCopy.h: add suggested_filename member; copy it
	  from get to put; add auto_rename member; prepare for automatic renaming.
	* fix compilation with Sun comiler.

2005-11-22  Alexander V. Lukyanov <>

	* set handshake_done for openssl - this fixes IOBufferSSL::Done().

2005-11-21  Alexander V. Lukyanov <>

	*, FileSet.h: add new filtering modes - SubtractNewerThan,
	*, MirrorJob.h: add --size-range and --older-than options.
	*, ResMgr.h: change Range to use long long; fixed a bug with
	  start/end reversed.

2005-11-18  Alexander V. Lukyanov <>

	*, ftpclass.h: allow PROT command to be used
	  after CCC; issue PROT before CCC if all transfers has to be
	  protected; open data ssl layer when PROT=P even after CCC.

2005-11-17  Alexander V. Lukyanov <>

	*, buffer.h: move doubling of IAC to proper level,
	  that is do it in IOBufferTelnet.

2005-11-11  Alexander V. Lukyanov <>

	* fixed handling of 334 reply to AUTH command.

2005-11-10  Alexander V. Lukyanov <>

	* fix compilation without ssl.
	* lftp_rl.c: fix compilation with some compilers.

2005-11-08  Alexander V. Lukyanov <>

	* fix compilation when dn_expand is not declared (e.g. HP-UX).
	* fix `open -u user URL'.
	*, ftpclass.h, add ftp:ssl-use-ccc setting.
	* shutdown ssl connection before destruction.

2005-10-25  Alexander V. Lukyanov <>

	* (hide_password) move to url.
	*, url.h: (hide_password) move here; (remove_password) new
	* use squeeze_file_name when showing cd status.
	* (squeeze_file_name) use url::remove_password.
	*, don't return MOVED if we had eof already -
	  this fixes a rare spinning.

2005-10-20  Alexander V. Lukyanov <>

	* add workaround for proftpd resetting data connection
	  when there is no files for NLST.

2005-10-19  Alexander V. Lukyanov <>

	*, check ReconnectAllowed() after host name

2005-10-18  Alexander V. Lukyanov <>

	* (get_lftp_home) return NULL if LFTP_HOME is empty.
	*,, lftp_rl.c: don't read/write anything to
	  user-specific files if get_lftp_home returns NULL.
	* swap default SameSiteAs and SameLocationAs, this
	  fixes loop in `open file:/path'.
	* (CollectGarbage) don't protect scan->next if it is NULL.

2005-10-18  Alexander V. Lukyanov <>

	*, SMTask.h: do delete the task in Delete if not running;
	  (CollectGarbage) protect next element in chain when deleting one task.
	* (BuryDoneJobs) avoid looping caused by Delete not
	  always deleting the task.
	*, misc.h: (get_lftp_home) new function.
	*,,, import-ncftp, import-netscape,, lftp_rl.c: use it (based on patch by Nikolai Weibull

2005-10-17  Alexander V. Lukyanov <>

	*, SMTask.h: simplify Schedule; make garbage collection
	  a separate function; don't delete the task in Delete, just mark
	  it for GC.
	* don't rely on Delete to delete the task, just mark
	  it for deletion.

2005-10-17  Paul TBBle Hampson <>

	* add missing initialization for add_newline.

2005-10-06  Alexander V. Lukyanov <>

	* use xfer:destination-directory only for get/mget,
	  not for put/mput.

2005-10-06  Alexander V. Lukyanov <>

	* fixed another coredump with KillAll/Schedule.

2005-10-05  Alexander V. Lukyanov <>

	*, Job.h: fixed core dump with KillAll.
	* fixed prefix path removing.

2005-10-01  Alexander V. Lukyanov <>

	* skip all spaces in FEAT reply to workaround some
	  broken servers.

2005-09-30  Alexander V. Lukyanov <>

	*, new setting xfer:destination-directory.

2005-09-27  Alexander V. Lukyanov <>

	* lftp_ssl.h: make handshake_done public.
	* do_handshake even when writing no data.
	*, buffer_ssl.h: call ssl->write even with no data
	  when handshake is not done yet; (Done) check handshake_done -
	  this fixes a bug with uploading empty files.
	* check buf->Done instead of Size.

2005-09-26  Alexander V. Lukyanov <>

	* simplify path combination; pre-encode %2F for hftp.
	* ignore special and closing tags; move workaround for
	  broken proxies to handle all links; specially handle empty paths.
	* don't change url when going up .. - simply drop it.

2005-09-22  Alexander V. Lukyanov <>

	* fixed exit code of slot command.

2005-09-19  Alexander V. Lukyanov <>

	* don't add basename of source dir if target is slot:
	  or bm: pseudo-url without trailing slash.
	* decode only non-urls.
	* fix path combination (avoid double slash); use new_cwd->url
	  when available.

2005-09-07  Alexander V. Lukyanov <>

	* free ca_list and crl_list when an error happens while
	  loading the certificates. This fixes a core dump.

2005-09-05  Alexander V. Lukyanov <>

	* fixed `open'; fixed a coredump
	  when a bookmark contained lots of quotable characters.

2005-08-12  Alexander V. Lukyanov <>

	* return PARSE_AGAIN if the command ends with \0,
	  which means it is incomplete.
	* use now instead of time().
	* use ShowN in Clear so that status line is not
	  continuously cleared while executing scripts.

2005-08-09  Alexander V. Lukyanov <>

	* don't try PROPFIND on a file to get file listing.

2005-08-05  Alexander V. Lukyanov <>

	*, MirrorJob.h: fixed --loop without --delete (the loop
	  was infinite if there were files to be deleted).

2005-08-04  Alexander V. Lukyanov <>

	*,, fixed a hang-up in http (and possibly
	  in other protocols).
	*, FileAccess.h: make Path::Change accept url-encoded
	  path too.
	* allow cd redirections to file.

2005-08-03  Alexander V. Lukyanov <>

	*, CmdExec.h: use FileAccess::Path for old_cwd.
	*, ConnectionSlot.h,, FindJob.h,, GetFileInfo.h, use FileAccess::Path.
	*, FileAccess.h: use cwd.url in GetFileURL; new method
	  PathVerify; set new_cwd->url in SetFileURL; use Path for saved_cwd;
	  modify url in Path::Change; unset is_file for some known directories;
	  implement operator== for Path; new method ChdirAccept.
	* modify url generation using cwd.url and cwd.is_file.
	* modify cd and open to work with file URLs;
	  fixed `source' command to return error code on bad files.
	*, history.h: save URL in cwd history if present;
	  add single argument Set method.
	*, url.h: (dir_needs_trailing_slash) new function.

2005-07-18  Alexander V. Lukyanov <>

	* don't request date/size information when not needed.

2005-07-06  Alexander V. Lukyanov <>

	* SFtp.h: fixed a seg fault on empty directories.
	* use replace_value.

2005-07-04  Alexander V. Lukyanov <>

	* make inet6 the first af to lookup.
	* add cmd:trace setting.

2005-06-29  Alexander V. Lukyanov <>

	* accept AUTH and REST with no arguments in FEAT reply;
	  use ftp:auto-passive-mode setting.
	* add ftp:auto-passive-mode setting.
	* workaround FreeBSD tcgetpgrp bug.

2005-06-28  Alexander V. Lukyanov <>

	*, FileAccess.h: (FileAccess::Path) new class.
	*,,,, use it properly.
	* (Path::ExpandTilde) fix NULL dereference.
	* use home_auto; call LsCache::SetDirectory.

2005-06-23  Alexander V. Lukyanov <>

	*, bookmarks.h, (bmk:auto-sync) new setting;
	  (list-p, load, save) new bookmark subcommands.

2005-06-22  Alexander V. Lukyanov <>

	*, FileCopy.h: (GetURL) new method; don't delete peers too
	  early, so info can be get from them after transfer.
	*, CopyJob.h,, FileCopy.h,,
	  FileSetOutput.h,, Fish.h,, FtpDirList.h,, Http.h,, HttpDir.h,, OutputJob.h,, SFtp.h,, SMTask.h,, buffer.h, (SuspendInternal, ResumeInternal, SuspendSlave,
	  ResumeSlave) new methods to simplify suspend/resume with slave tasks;
	  make suspend member private, use IsSuspended.
	*, CopyJob.h, Job.h, (GetBytesCount,
	  GetTimeSpent) make them virtual; (FormatBytesTimeRate) new method;
	  use it in mirror.

2005-06-21  Alexander V. Lukyanov <>

	*, CmdExec.h,, FileFeeder.h: add Fg/Bg methods
	  to CmdFeeder to allow passing terminal to subprocesses; allocate
	  FgData for FileFeeder.
	*, Filter.h: move cwd to FDStream; add GetCwd, SetProcGroup
	* PtyShell.h: make GetProcGroup const.
	* ProcWait.h: (GetState) return enum type.
	*, ResMgr.h: (FileExecutable) new method; optimize file checking.
	* use SetCwd instead of Chdir for setting cwd from history.
	* add Fedora-4 ca-bundle location.
	* fix gcc4 warning.
	*, FileCopy.h, new settings xfer:verify,
	  xfer:verify-command; verify completely received file.
	*, FileCopy.h: show verify status; fix problems with
	  xfer:verify=no; show only last line of verify error.
	*, Filter.h: (StdoutToNull) new method.
	* verify-file: add rpm support.

2005-06-16  Alexander V. Lukyanov <>

	* fix exit code for redirections.

2005-06-14  Alexander V. Lukyanov <>

	*,,, use BumpEventTime
	  instead of copying event_time in MoveConnectionHere, this fixes
	  timeout error when net:idle > net:timeout.
	*, Filter.h: move full_name to base class FDStream.
	*,, use new TimeInterval ctor.
	*, make net:timeout a TimeInterval.
	*, ResMgr.h: make TimeInterval ctor for ResValue.

2005-06-08  Alexander V. Lukyanov <>

	* improve status line.

2005-06-02  Alexander V. Lukyanov <>

	* don't add a slash for root directory.

2005-05-24  Alexander V. Lukyanov <>

	*, lftp_ssl.h: make it compatible with gnutls 1.0.x.

2005-05-20  Alexander V. Lukyanov <>

	* fix handling of file names starting with a tilde.

2005-05-19  Alexander V. Lukyanov <>

	* fix compilation on AIX 5.1
	* fixed minor problem with `lftp -u user --help'.

2005-05-18  Alexander V. Lukyanov <>

	* use dlsym to find library versions, this fixes
	  compilation with modules.
	*, lftp_ssl.h: (LoadCA, LoadCRL) new methods.
	* don't call lftp_ssl as it can be modular.

2005-05-17  Alexander V. Lukyanov <>

	*, buffer_ssl.h,, ftpclass.h,, fixed compilation without ssl.

2005-05-13  Alexander V. Lukyanov <>

	* fix coredump when symlink target is unknown.
	* set cert error if cert type is not supported.

2005-05-12  Alexander V. Lukyanov <>

	* add AS/400 parser, handle trailing slash in NLST.

2005-05-11  Alexander V. Lukyanov <>

	* allow V1 root crt.

2005-05-06  Alexander V. Lukyanov <>

	*, lftp_ssl.h: fixes compilation with openssl; add instance
	  to openssl code; improve temp error handling for gnutls.
	* improve version info.

2005-05-05  Alexander V. Lukyanov <>

	*, lftp_ssl.h: verify peer certificate chain with gnutls;
	  load CA and CRL globally; gnutls debugging support.
	* deinit ssl.
	* ssl:*-path are only available with openssl.

2005-04-29  Alexander V. Lukyanov <>

	*, replace atoll with sscanf.
	* do expand_home_relative on output file name.
	*, fix gcc4 warning.
	* add gnutls support.
	* use ssl->error member.
	*, lftp_ssl.h: implement basic gnutls support.

2005-04-29  Alexander V. Lukyanov <>

	*,, buffer_ssl.h,, ftpclass.h,, lftp_ssl.h,, misc.h: prepare for gnutls
	  usage - make lftp_ssl class.

2005-04-20  Alexander V. Lukyanov <>

	* (data_address_ok) don't return false if no checking
	  needed and getpeername fails; send CLNT before LANG and OPTS UTF8.

2005-04-11  Alexander V. Lukyanov <>

	* resume recv_buf in Close, this fixes a rare hang.

2005-04-07  Alexander V. Lukyanov <>

	* (SFtpListInfo::Do) check if done first, this fixes
	  looping in SMTask::Roll.

2005-04-06  Alexander V. Lukyanov <>

	* retry with LONG_LIST in case of any error with MP_LIST.
	* don't let parent mirror act in between our actions;
	  let other tasks run when ListInfo are created, this fixes mirror
	  multitasking when using listings from cache.

2005-04-05  Alexander V. Lukyanov <>

	*, MirrorJob.h: add --loop option.

2005-04-04  Alexander V. Lukyanov <>

	*, FileAccess.h,, buffer.h: (SetErrorCached) new method.
	* don't quote lftp -c argument when it is single.
	*,,,,, LsCache.h,, add negative cache support.
	* set use-propfind and use-mkcol when those methods are unsupported.

2005-04-01  Alexander V. Lukyanov <>

	* re-request missed data (could happen when file is growing).

2005-03-29  Alexander V. Lukyanov <>

	*, HttpDir.h, parse invalid XML as html,
	  this works around some servers that return plain index for PROPFIND.

2005-03-28  Alexander V. Lukyanov <>

	* interpret the rest of line after lftp -c as command.
	*,, HttpDir.h, use USE_EXPAT define.

2005-03-24  Alexander V. Lukyanov <>

	* fixed coredump when there is no files; added
	  handler for creator-displayname; check parent node for href.

2005-03-13  Alexander V. Lukyanov <>

	* prevent spinning when disk is full in IOBufferFDStream;
	  better saving of errno.
	*, Filter.h: allow passing errno value to MakeErrorText.

2005-03-11  Alexander V. Lukyanov <>

	* extract listing info for HttpListInfo.

2005-03-09  Alexander V. Lukyanov <>

	*, ftpclass.h: handle timeout when waiting for ack.
	* (strip_trailing_slashes) don't strip last slash in root directory.

2005-03-05  Alexander V. Lukyanov <>

	* don't strip trailing slash in OptimizePath.
	* send full URL in Destination header; fix Done for a number
	  of methods.
	*, misc.h: (strip_trailing_slashes) new function.
	* append basename of target ends with a slash.
	*, (ftp:ignore-pasv-address) new setting.
	*, Http.h: add support for `quote MOVE/COPY'.
	* set event_time in Open to prevent false timeout.

2005-03-01  Alexander V. Lukyanov <>

	* make TOS changes compile on solaris.

2005-03-01  Mark Schreiber <>

	*,, NetAccess.h: use TOS on ftp connections.

2005-02-25  Alexander V. Lukyanov <>

	* set C locale before time conversion (fixes Last-Modified
	* get time format at run time, not statically.
	*, add use-propfind and use-mkcol settings, turn
	  them off by default for hftp.

2005-02-23  Alexander V. Lukyanov <>

	*,, HttpDir.h, compile without
	* fix Buffered so that it does not return more than possible.
	* fix guess_year for timezone mismatches.

2005-02-10  Alexander V. Lukyanov <>

	* more verbose error for NOT_SUPP.
	* add NOT_SUPP error for MP_LIST mode.
	*,, HttpDir.h: add support for MP_LIST
	  transformation into human readable listing.
	* don't send further commands until data socket is
	  connected (in sync mode).

2005-02-08  Alexander V. Lukyanov <>

	* split off FileCopyPeerOutputJob.
	*, FileSet.h,, FileSetOutput.h, add support for reverse sorting.
	* blocking fix.
	* new file (split from
	* move some modules to libtasks, where they belong.

2005-02-04  Alexander V. Lukyanov <>

	*, FileAccess.h: move entity_content_type here; add
	*, FileSet.h: (allocated) new member; optimize memory
	*, Http.h: make atotm a static method; implement MP_LIST
	  as PROPFIND; extract entity charset.
	*, HttpDir.h: try MP_LIST; call ParseProps.
	* new file; implement ParseProps.

2005-02-03  Alexander V. Lukyanov <>

	* don't set error when optional STAT or FSTAT return error.
	* skip ./ in file names so that globbing works with tildes.
	* allow setting name to tail of itself.

2005-01-21  Alexander V. Lukyanov <>

	*,,,, cast `now' to
	  time_t explicitly to please some compilers.

2005-01-21  Thomas Glanzmann <>

	*,, change connect-program to work with
	  Solaris 9 ssh.

2005-01-21  Alexander V. Lukyanov <>

	* make reget more efficient by using larger block size and
	  dd skip.
	* declare dn_expand and dn_skipname if needed.

2005-01-11  Alexander V. Lukyanov <>

	*, fix buffer size handling for strftime.

2005-01-09  Alexander V. Lukyanov <>

	* fixed SITE UTIME and overloaded MDTM - send proper
	  modification time.

2005-01-04  Alexander V. Lukyanov <>

	* move Block'ing to Read and Write, this fixes spinning
	  if disk is full.
	* fix timeout handling when idle time > timeout.

2004-12-28  Alexander V. Lukyanov <>

	*, Http.h: (DirFile) new method; use MKCOL, MOVE, add Depth
	  header for DELETE and support 102 reply (WebDAV preliminary support).
	*, add mirror:set-permissions setting.

2004-12-17  Alexander V. Lukyanov <>

	* use get -O to reduce log size.
	* add -e for pget.

2004-12-16  Alexander V. Lukyanov <>

	* fixed mirror --no-symlinks.
	* fixed a core dump.

2004-12-01  Alexander V. Lukyanov <>

	* add debug message about EOF on data socket.
	* initialize reconnect_interval_current properly.

2004-11-26  Alexander V. Lukyanov <>

	* suspend/resume pty buffers too.

2004-11-19  Alexander V. Lukyanov <>

	* set TIOCOUTQ_tested so that it is not tested each time.
	* make ftps:initial-prot empty so that PROT would be always
	  used for ftps connections.

2004-11-18  Alexander V. Lukyanov <>

	* fix downloading of growing files.
	* fix excluding in SFtpListInfo (fixes e.g. mirror).

2004-11-16  Alexander V. Lukyanov <>

	*, don't call Do directly, use Roll.
	*, SMTask.h: use separate task stack, drop prev_current member.
	* fix Query for ftps:initial-prot; don't Close in ~Ftp.

2004-11-15  Alexander V. Lukyanov <>

	*, ftpclass.h,,, misc.h: send authorization
	  to http proxy in CONNECT requests.

2004-11-13  Alexander V. Lukyanov <>

	* fixed mkdir.
	* fixed file mode comparision.
	*, new setting ftps:initial-prot.

2004-11-03  Alexander V. Lukyanov <>

	* change command to RETRP to differentiate from plain RETR
	  in transfer continuation; modify shell command to speed up partial
	*, lftp_rl.c, lftp_rl.h: improve completion of aliases.

2004-11-03  Loic Le Loarer <>

	* add support for continue mode in fish protocol.

2004-11-01  Alexander V. Lukyanov <>

	* fix condition for unbound data socket (this fixes FXP).

2004-10-28  Alexander V. Lukyanov <>

	*, MirrorJob.h: add --no-symlinks option.
	* fixed Cache-Control combination - use comma instead of space.

2004-10-21  Alexander V. Lukyanov <>

	* fixed file removing with --delete-first option;
	  optimized done job deletion.

2004-10-20  Alexander V. Lukyanov <>

	* remove bogus assert.
	* fix permissions comarision; don't Roll parent mirror
	  if DONE (this fixes a mysterious corruption - looks like trouble
	  when MirrorJob's are deleted in wrong order).
	* add assert; check deleting before Roll loop.

2004-10-18  Alexander V. Lukyanov <>

	*, Fish.h,, SFtp.h: don't sent password several times,
	  as it most probably is incorrect.
	* CmdExec.h, (quotable, is_space, is_quote) add utility
	  functions; use them.
	* (copy_word_skip, skip_word) new functions; use them for
	  argument counting; better mirror -R completion.

2004-10-17  Alexander V. Lukyanov <>

	* fixed rare coredump when parent_mirror was referenced
	  from dtor, and it was already deleted.

2004-10-15  Alexander V. Lukyanov <>

	* prepend ./ to file names starting with - or ~
	*, FileCopy.h: fixed upload corruption bug.

2004-10-14  Alexander V. Lukyanov <>

	* don't chmod if not needed.
	*, (TrySuccess) new method; optimize
	  reconnect interval calculation, add reconnect_interval_curr member.
	*,,, use TrySuccess.

2004-10-04  Alexander V. Lukyanov <>

	* rough mirror -R handling.

2004-09-27  Alexander V. Lukyanov <>

	* don't send empty Cache-Control.

2004-09-22  Alexander V. Lukyanov <>

	* use ascii mode only for tty output by default.

2004-09-16  Alexander V. Lukyanov <>

	* fix endless loop in FileCopyPeerFDStream.
	* don't apply ftp:port-ipv4 to FXP.

2004-09-13  Alexander V. Lukyanov <>

	*, ftpclass.h: fix a core dump in FXP mode.

2004-09-09  Alexander V. Lukyanov <>

	*, fix FreeBSD sshd interaction (different password

2004-09-06  Alexander V. Lukyanov <>

	* reduce number of left over tasks after cleaning due to
	  Luke Macken modifications.

2004-09-06  Luke Macken <>

	*, SMTask.h,, SignalHook.h,, log.h:
	  add Cleanup methods.
	* use them.

2004-09-06  Alexander V. Lukyanov <>

	* use dn_expand if available.

2004-08-31  Alexander V. Lukyanov <>

	* make sure the file is created in FileCopyPeerFDStream
	  before setting done.

2004-08-30  Alexander V. Lukyanov <>

	* make nice orig_url in case of bm: scheme, so that
	  get `bm:<web-bookmark>/?arg=value' works well.

2004-08-23  Alexander V. Lukyanov <>

	* add closure to cache-control setting.
	* add hftp:cache-control.
	*, fail store if application tries to write more than
	  requested originally.

2004-08-12  Alexander V. Lukyanov <>

	*, Http.h, add http:authorization setting.

2004-08-03  Alexander V. Lukyanov <>

	*, buffer_std.h: new files.
	* add buffer_std.* files.
	*, use IOBuffer_STDOUT.
	* workaround solaris nfs bug in case of ENOSPC.
	* little optimization for timeout==0.
	* return proper error code.
	*, buffer.h: add generic IOBuffer::Do, remove
	  IOBufferFDStream::Do and IOBufferFileAccess::Do.
	* don't create FDStream for stdout in CMD(du).
	* don't bind data socket according to net:socket-bind-*;
	  move verbose debug for bind(); take control socket address if data
	  socket is not bound to a particular address.
	* new setting http:cache-control.
	* use new setting http:cache-control; handle 503 Gateway
	  timeout specially if only-if-cached is specified.
	* clear files info before getting.

2004-07-26  Alexander V. Lukyanov <>

	* handle network timeout after FEAT and in some other

2004-07-21  Alexander V. Lukyanov <>

	* don't send FEAT to proxy before login.

2004-07-13  Alexander V. Lukyanov <>

	*, SFtp.h: implemented slow start; handle passphrase prompt;
	  print in debug wire path.
	* proxy with combined auth supported.
	* new setting ftp:proxy-auth-joined; change
	  sftp:max-packets-in-flight to 16.

2004-07-08  Alexander V. Lukyanov <>

	* remove redundant output default.
	* set show_sl properly.

2004-06-12  Alexander V. Lukyanov <>

	* (ShowN) show status line immediately if update_timer

2004-06-10  Alexander V. Lukyanov <>

	* ArgV.h,, echoJob.h: use trio.h
	* apply ftp:port-range to passive connection too; increase
	  minimum amount of data to upload before retry counter is reset.

2004-06-07  Alexander V. Lukyanov <>

	* complete `bm:' urls.
	* fix url_file with file[0]=='~'.
	* unquote host name in valid_bm; don't re-check bm validity
	  after lookup.

2004-06-02  Marc Bevand <>

	* use long long to hold file size.

2004-06-01  Alexander V. Lukyanov <>

	* save old directory when no cd verification is done.

2004-05-31  Alexander V. Lukyanov <>

	* set copy_failed in NoFileCheck and TransferCheck on 4xx codes;
	  do CPSV only when copy_tls_connect is set.
	* fix compilation without ssl.

2004-05-28  Alexander V. Lukyanov <>

	* retry FEAT after login on 503 (invalid sequence of commands).
	* fill sa_len if present.
	*,,, new DECL tests and defines.
	*, bookmark.h,, CmdExec.h: move lftp_bookmarks.
	* accept CLNT with argument in FEAT reply.
	* (bm:) new URL scheme to refer to bookmarked URLs.

2004-05-27  Alexander V. Lukyanov <>

	* assume SSCN is supported without FEAT.

2004-05-26  Alexander V. Lukyanov <>

	*, FileCopyFtp.h: vary passive_ssl_connect to find
	  suitable combination of pasv/sscn.
	*, ftpclass.h: (copy_ssl_connect) new member; clean up
	  prot and sscn modes choice; don't disconnect on pasv and port errors.
	* (ftp:fxp-passive-sscn) new setting to choose initial
	  sscn mode of passive end of fxp.

2004-05-25  Alexander V. Lukyanov <>

	* drop eof flag if transfer returns error code after
	  data connection is closed.

2004-05-22  Alexander V. Lukyanov <>

	* increase sftp:max-packets-in-flight to 8.

2004-05-21  Alexander V. Lukyanov <>

	*, SMTask.h: get rid of static sched_scan; don't Merge empty
	* PollVec.h: (IsEmpty) new method.
	*, don't return MOVED if recv_buf contains data and
	  was not suspended (reduces cpu usage).
	* check if buffer was suspended before Resume.

2004-05-20  Alexander V. Lukyanov <>

	*, ftpclass.h: SSCN support added.
	* getdate.y: remove ^L as it confuses some broken compilers.
	* don't Add(0) more often than 10 times a second
	  (reduces cpu usage).

2004-05-18  Alexander V. Lukyanov <>

	*, FileCopyFtp.h: protect FXP if ssl-protect-fxp is
	  true for any of the two servers; try to turn off protection
	  if it fails.
	*, ftpclass.h: (copy_protect) new member.
	* ftp:ssl-protect-fxp can now have a closure.

2004-05-17  Alexander V. Lukyanov <>

	* wait until LANG/OPTS UTF8 complete before sending
	  more commands; activate specified charset if utf8 activation
	  fail; actually send CLNT and HOST commands; activate charset
	  from Reconfig only if no utf8 activation commands pending.
	* use ssl-protect-fxp in FXP mode; send CPSV even
	  if seems unsupported - no choice. (suggested by Tillmann Steinbrecher
	  <> w/patch).
	* (ftp:ssl-protect-fxp) new setting.

2004-05-11  Alexander V. Lukyanov <>

	* call ShowRunStatus only if necessary.
	*, PollVec.h: inline Empty method.
	*, SMTask.h: inline Enter/Leave methods.
	* (CanShowNow) new method.
	*, ftpclass.h: support CPSV; add utf8_activated flag;
	  added workaround for servers which refuse to do OPTS before login.

2004-05-07  Alexander V. Lukyanov <>

	* check use-mlsd and use-site-chmod before connecting.

2004-05-06  Alexander V. Lukyanov <>

	* fixed core dump in case of extra server reply; don't
	  unconditionally disconnect on 221 as some broken servers use it for
	  FEAT reply. (reported by Wang WenRui <>)

2004-05-04  SHIOTA Shoichi <>

	* don't write zero bytes to terminal - it can produce
	  unexpected results.

2004-04-29  Alexander V. Lukyanov <>

	* store zero sized files properly.

2004-04-28  Alexander V. Lukyanov <>

	* accept multiple AUTH lines in FEAT reply; check if
	  ssl is activavted before trying to make protected data connection.
	* retry after NOT_SUPP fast so that the status message
	  won't appear on the screen.

2004-04-22  Alexander V. Lukyanov <>

	*, FileSet.h: add UNKNOWN file type; handle Door type.
	* add UNKNOWN to switch.
	* ignore special files, don't treat them as errors.

2004-04-21  Alexander V. Lukyanov <>

	* (IsDirectory) use dirname_modify; check for MP_LIST
	  in cache; add assert.
	* fix comment; special case for tz=GMT for speed-up.
	* (FileInfo::parse_ls_line) new function, moved from with minor modifications; set longname in it.
	*, use FileInfo::parse_ls_line.
	* try to extract owner/group/nlinks from longname, use

2004-04-19  Alexander V. Lukyanov <>

	* fixed STAT command in FXP mode; fixed coredump when
	  disconnecting in FXP mode (when DataAbort disconnects too).
	* SFtp.h: fix mem leaks in Packet_WRITE and Packet_RENAME.
	* follow ftp:ssl-force even if ftp server does not
	  advertise AUTH in FEAT reply (reported by Nikos Mavroyanopoulos <>).

2004-04-16  Alexander V. Lukyanov <>

	* misc.h, (last_char) new utility function.
	*,,,,,, use last_char.
	* don't treat trailing slash as existing directory inidication.
	* check for trailing slash here instead of

2004-04-14  Alexander V. Lukyanov <>

	* don't enable mlsd by default.

2004-04-13  Alexander V. Lukyanov <>

	* don't check timeout if there should be no activity.
	* use install-data-hook to do cleaning after install.

2004-04-12  Alexander V. Lukyanov <>

	* use sscanf instead of atoll.

2004-04-09  Alexander V. Lukyanov <>

	*, ftpclass.h: support CLNT, HOST commands; send OPTS MLST;
	  translate data in MP_LIST mode.
	* ftp:client new resource.
	* support MLSD attrs UNIX.{owner,group,uid,gid};
	  workaround ncftpd bug - it does not append semicolon to last MLST fact.

2004-04-08  Alexander V. Lukyanov <>

	* send ACCT before FEAT after login.
	* don't disable writing when there are data pending,
	  this fixes spinning in cls|less.

2004-04-07  Alexander V. Lukyanov <>

	* fixed coredump when ftp:proxy does not have a protocol
	  specified; fixed assertion failure when using ftp over http proxy
	  with CONNECT method.

2004-04-06  Alexander V. Lukyanov <>

	* add "closed by the remote host" string to the transient

2004-04-05  Alexander V. Lukyanov <>

	* fix data packet debug message (s was not initialized);
	  call CheckTimeout properly, so that net timeout will be handled.
	*, ftpclass.h: move expect_t to Expect; make ExpectQueue
	  a friend so that it can access Expect; (Ftp::DisconnectNow) new method;
	  (Connection::AbortDataConnection, CloseAbortedDataConnection) new methods;
	  use DisconnectNow instead of setting quit_sent.
	* SFtp.h: make enums public so that it compiles with sun compiler.
	*, SFtp.h: move stuff around, make some friends/publics to make
	  it compile with sun compiler.

2004-04-04  Alexander V. Lukyanov <>

	*, SFtp.h: outline HasID as it fails to inline on certain
	  compilers (e.g. gcc-2.95.2).

2004-04-02  Alexander V. Lukyanov <>

	*, ftpclass.h: fix compilation without ssl; fixed coredump
	  in case of some network errors; copy error message before Disconnect,
	  so that it won't be lost and a freed memory won't be referenced.
	* add SOCKSLIBS to lftp_LDADD.

2004-03-25  Alexander V. Lukyanov <>

	* FileAccess.h: (MP_LIST) new mode for MLSD - Machine Parseable List;
	  (GetErrorCode) new method.
	*,,, handle MP_LIST.
	* send MLSD for MP_LIST.
	* use MP_LIST.
	* use MP_LIST, fallback to LONG_LIST if not supported.
	* ftp:list-empty-ok - new setting.

2004-03-25  Alexander V. Lukyanov <>

	* init all fields in FileInfo.
	* support MLSD; use parsers from ListInfo.
	* support MLSD.
	* SFtp.h: fix 2 mem leaks.
	* register protocol in module_init; add assert.
	* ftpclass.h, support MLSD.
	* new setting ftp:use-mlsd.

2004-03-19  Alexander V. Lukyanov <>

	* still wait for put confirmation to set file mtime
	  even if target file is already complete - this fixes repeated
	  transferring a file in mirror -c.
	* handle storing 0 bytes by skipping data connection
	  establishment and still set the file mtime.

2004-03-18  Alexander V. Lukyanov <>

	* set proper timeout for retry_time; better error handling
	  for port-range.
	* (DebugPrint) check for \r\n in the string.
	* use libtool for libtasks and libjobs; rename them.

2004-03-15  Alexander V. Lukyanov <>

	* fix a number of null refs; set auth_sent properly.
	* don't write trailing \0.

2004-03-13  Alexander V. Lukyanov <>

	* don't redisplay status line if not needed.
	* check loopback match in Handle_PASV; Connection
	  and ExpectQueue subclasses.
	* rewind args before calling builtin_open from builtin_lftp.

2004-03-04  Alexander V. Lukyanov <>

	*, misc.h: (dirname_modify) new function.
	* (Changed) use dirname_modify to fix bug with trailing

2004-03-02  Alexander V. Lukyanov <>

	* fix multiline error joining to eliminate all numeric
	  status codes except the first one.

2004-03-01  Alexander V. Lukyanov <>

	* rewind args before calling command-specific handler.
	* don't rewind args, it is not rewinded in CmdExec.
	* use all_lines in error reporintg; join multiline error
	  into single line.

2004-02-25  Alexander V. Lukyanov <>

	* nice progress bar.
	* init ind in ctor.
	* StatusLine.h: new Show methods to show StringSet.
	*, StringSet.h: (AppendFormat) new method.
	*,,, take over suspended sessions.

2004-02-24  Alexander V. Lukyanov <>

	* fix recursing.

2004-02-19  Alexander V. Lukyanov <>

	* don't write negative amount of chars.

2004-02-17  Alexander V. Lukyanov <>

	*, StringSet.h: new files; implement string array for StatusLine.
	*, ArgV.h: base on StringSet.
	* modify CombineQuoted based on StringSet.
	* send CONT to feeder process.
	*,,,,,,,,, mkdirJob.h:
	  fix ArgV const-ness.
	*, StatusLine.h: base on StringSet.
	* fix ArgV const-ness; implement `source -e' - execute output
	  of external command.
	* add StringSet.

2004-02-13  Alexander V. Lukyanov <>

	* new option --use-pget-n; implement using pget for
	  transfers; fixed bug which caused old files to be removed even
	  if -e option was not specified.
	* ArgV.h: allow appending numbers.
	* GetJob.h: (RemoveSourceFiles) add method named as in CopyJob.
	* pgetJob.h: make NewChunk protected.
	* add mirror:use-pget-n resource.

2004-02-12  Alexander V. Lukyanov <>

	*, StatusLine.h: support multiline status.
	* fix hang on data eof (introduced in last change set).
	* --ignore-size and --only-missing options added.
	*, netrc.h: allow user matching.
	* user netrc user matching; log netrc actions;
	  set password immediately to skip looking up netrc second time.

2004-02-09  Alexander V. Lukyanov <>

	* (SetNewerThan) try get_date first.
	* print get_date error.
	* fix mirror help; get1 --target-position instead of
	* getdate.y, getdate.h: save error string instead of printing.
	* ftpclass.h, drop log_resp and result; use data_iobuf
	  for QUOTE_CMD and all_lines for OPIE/SKEY.
	* move getdate.y and getdate.h to libtasks (it is used in
	  two separate modules).

2004-02-04  Alexander V. Lukyanov <>

	* (SkipHome) fix it to skip / too; handle ~.
	* SMTask.h, (Enter, Leave) new methods; now a task can
	  be run nested many times (int running); Schedule optimizations.
	* use Enter/Leave.
	*, log.h: add support for pid, time and context log prefixes.
	* enable pid, time and context on exit to bg.
	* move DataClose from Read to Do; use Enter/Leave to
	  show proper context.
	* modify DebugPrint to use prefixes of Log class;
	  use Enter/Leave in CleanupAll.
	* FileAccess.h: (GetLogContext) new method, use hostname as context.
	* add -t -c -p options for debug command; add range
	  options for get1.
	* Resolver.h: add GetLogContext method.

2004-01-28  Alexander V. Lukyanov <>

	*, NetAccess.h: (proxy_proto) new member.
	*, ftpclass.h: close data socket on temp transfer errors;
	  enum pasv_state instead of addr_received; http proxy support with
	  CONNECT method.
	* new setting ftp:use-hftp to select between GET and
	  CONNECT methods when ftp:proxy points to http:// url.

2004-01-24  Alexander V. Lukyanov <>

	*, --delete-first, not --remove-first;
	  update help text for mirror.
	* accept '' charset as 'char' (they are equivalent in
	  libiconv and '' seems to be supported by glibc).

2004-01-21  Alexander V. Lukyanov <>

	* FileSet.h, add SubtractNotDirs, SubtractSameType.
	*, MirrorJob.h: remove directories to be replaced with
	  plain files first (with --delete option); --remove-first option.
	* create bookmark file before calling editor.

2004-01-19  Alexander V. Lukyanov <>

	*, Http.h: extract content-type (not used yet).
	*, ftpclass.h: add rest_supported flag.

2004-01-18  Alexander V. Lukyanov <>

	* better charset test.
	* file:charset new setting; set it from nl_langinfo(CODESET).
	* move is_valid_reply to Packet class; drop unused is_valid_status.
	* use file:charset instead of unportable "char".

2004-01-16  Alexander V. Lukyanov <>

	* call TIOCSCTTY on FD 2 instead of FD 0, as it is a tty
	  even if use_pipes==true.
	*, ResMgr.h: (CharsetValidate) new static method.
	* allow translation.
	*, ftpclass.h: implement recoding from any server charset.
	* new setting ftp:charset.

2004-01-15  Alexander V. Lukyanov <>

	* buffer.h: use CDECL around iconv.h.
	* use const_cast.
	* add iconv library.

2004-01-15  Alexander V. Lukyanov <>

	* workaround solaris nfs bug in case of ENOSPC.

2004-01-15  Glenn Maynard <>

	* include errno.h early.

2004-01-14  Alexander V. Lukyanov <>

	* set entity size at end of transfer too, in case it was
	  not known at the beginning.
	* don't use non-portable S_IAMB macro.
	*, buffer.h: fixed translation by adding bool from_untranslated;
	  new class IOBufferStacked.
	* don't disconnect on some temporary errors, just re-send
	  the command after delay; (IOBufferTelnet) new class; use it;
	  (telnet_layer_send) new member; add site utime support; better status
	  for FEAT negotiation; add overloaded MDTM support.
	* (ftp:use-site-utime, ftp:use-mdtm-overloaded) new settings.

2004-01-14  Alexander V. Lukyanov <>

	* don't call NonFatalError, as it causes ProcWait to spin.
	* fix compilation with IRIX compiler.

2003-12-22  Alexander V. Lukyanov <>

	*, Http.h: add Buffered method; allow storing in https mode;
	  use NO_DATE and NO_SIZE constants.
	*, NetAccess.h: move SocketBuffered here from
	* more precise Buffered method.
	* add Buffered method.
	* add ErrorFatal method.
	*, ftpclass.h: read/write through buffer;
	  use NetAccess::SocketBuffered; follow RFC2640; FEAT, LANG, UTF8
	* new settings ftp:use-feat, ftp:use-lang.

2003-12-19  Alexander V. Lukyanov <>

	* (StoreStatus) return OK when not opened for storing.
	* skip storing past eof only if there is such file already;
	  do better line buffering at the cost of performance.

2003-12-17  Alexander V. Lukyanov <>

	* rename module_into to lftp_module_info to avoid
	  name conflict.

2003-12-17  albert chin <>

	* remove LOCALE_DIR, use datadir/locale instead.
	* FileAccess.h, CharReader.h, IdNameCache.h, FileFeeder.h: use enum
	  to declare integer constants.
	* include filemode.h after config.h.

2003-12-16  Alexander V. Lukyanov <>

	* fix core dump where first reply line is empty (reported by
	  Nalin Dahyabhai); remove incorrect parsing of status line in case
	  of 0.9 protocol; shutdown socket if sent uncomplete entity and
	  unset keep_alive; handle STORE in case of 0.9 protocol.
	* add CDECL around regex.h

2003-12-16  albert chin <>

	* Because we use libtool to build lftp, use $(LTLIBINTL)
	  for the gettext libraries.

2003-12-15  Mark Blackburn <>

	* skip \r character for dos-like script files.

2003-12-15  Alexander V. Lukyanov <>

	* fix a compilation error (reported by Albert Chin).
	* make base64 char table const.

2003-12-11  Alexander V. Lukyanov <>

	* handle the case when put retry seeks to the eof.
	* don't try to send empty body to non-zero offset; don't
	  shutdown socket when done sending data (PUT/POST) and data size
	  was known beforehand.
	* fixed compilation on AIX, where h_errno is a macro.

2003-12-08  Alexander V. Lukyanov <>

	*, buffer.h,, SFtp.h: (DirectedBuffer) new buffer
	  layer; add iconv support in DirectedBuffer, almost transparent.

2003-12-08  Alexander V. Lukyanov <>

	* (find_eol, try_csm_proxy) fix bugs found by
	  Solar Designer <> - increment *eol_size,
	  not eol_size; use proper %lld format for size; use larger
	  buffer for additional_file_info to store trailing \0; some
	  style mods; use %32s instead of %32c.

2003-12-08  Harnhammar, Ulf <>

	* (try_netscape_proxy, try_squid_eplf) fixed buffer overflows.

2003-12-01  Alexander V. Lukyanov <>

	*, buffer.h: move SMTask to IOBuffer.
	*, Delete -> delete for Buffer.
	*, FileCopy.h: use IOBuffer as base class for FileCopyPeer.
	* FindJob.h, FindJobDu.h,, Fish.h,, FtpDirList.h,
	  HttpDir.h,, LocalAccess.h,, Resolver.h:
	  use IOBuffer.
	*, NetAccess.h: use IOBuffer; FindHomeAuto in ctor.
	*, SFtp.h: fixed FSTAT request (protocol_version was duplicated);
	  fixed STAT/FSTAT for protocol v4 - add flags field.

2003-12-01  Alexander V. Lukyanov <>

	* fix possible freed memory access.
	* don't append basename of source to / destination.

2003-11-26  Alexander V. Lukyanov <>

	* add ftps to acceptable fxp protocols.
	*, report status from PtyShell.
	* close pipes correctly.
	*, buffer.h: add Status method.

2003-11-21  Alexander V. Lukyanov <>

	*,, allow args in connect-program
	  resource; move -a and -x options to connect-program.
	* rename lftp libs.

2003-11-20  Alexander V. Lukyanov <>

	* FileAccess.h, HttpDir.h: move LsOptions to FileAccess.h.
	*, FileSet.h: (EstimateMemory) new method.
	*, LsCache.h: cache FileSet along with listing.
	*, SFtp.h: more work. All is working now.
	*, ConnectionSlot.h: outline ctor/dtor to avoid warning.

2003-11-20  Alexander V. Lukyanov <>

	* add Reconfig to clone ctor.
	* allow 0x numbers.
	* ResMgr.h: use strtol.
	*, SFtp.h: use new resources.
	* new sftp resources.

2003-11-19  Alexander V. Lukyanov <>

	*, PtyShell.h: add pipe support, thus the ability to
	  separate data and interaction with ssh (passwords etc).
	*, buffer.h: pack/unpack - signed int, 64 bit, debugging.
	*, FileSet.h: add longname.
	*, NetAccess.h,, ftpclass.h: move home_auto
	  to NetAccess.
	*, SFtp.h: more work; ls works.
	* libpty; add sftp.

2003-11-14  Alexander V. Lukyanov <>

	* drop size/date if read pos>size.
	* FileCopy.h: (GetDescriptionForLog) new method.
	* add --sort=time for cls; add long options for open;
	  optional verification of cached dirs.
	*, CmdExec.h: optional verification of cached dirs.
	* define C_IN if undefined.
	*, buffer.h: pack/unpack methods added.

2003-11-11  Alexander V. Lukyanov <>

	*, ftpclass.h, new setting ftp:ssl-protect-list
	  to selectively protect listings; propagate pret_supported; set
	  real_pos to 0 always if REST fails.

2003-10-21  Alexander V. Lukyanov <>

	* handle long options in open command.

2003-10-03  Alexander V. Lukyanov <>

	* unblock signals upon restoring.
	* (update) support multibyte characters.
	* (GetETAStrFromTime) support multibyte characters.
	* (squeeze_file_name) support multibyte characters.
	*, ftpclass.h, add use_pret and
	  pret_supported flags, ftp:use-pret setting.
	* make more room for status, less for file name.

2003-10-02  Morgan Christiansson <>

	* send PRET before PASV command for distributed ftp servers.

2003-08-21  Alexander V. Lukyanov <>

	* (Disconnect) ignore replies when Disconnect is called,
	  call CloseRespQueue for that.
	* fixed fxp for zero sized files.

2003-08-11  Johannes Zellner <>

	  1) implemented the hftp protocol over a CSM proxy
	  2) hftp listings are colored according to DIRECTORY / SYMLINK
	  3) do NOT print hour:minute, if it wasn't specified in the
	     http proxy output

2003-07-15  Alexander V. Lukyanov <>

	*, ftpclass.h, add ftp:use-telnet-iac setting.

2003-07-10  Alexander V. Lukyanov <>

	* save cwd history before destroying last feeder (this
	  fixes a bug with saving last working directory).

2003-06-26  Alexander V. Lukyanov <>

	* (SetDirectory) use SetCwd to restore cwd, this fixes
	  a problem with home values without leading slash.
	*, GetJob.h: re-do file: handling.

2003-06-21  Alexander V. Lukyanov <>

	* optimize FileCopyPeerFDStream speed by writing out
	  data by portions of >=PUT_LL_MIN or by timeout 0.1 second.
	*, buffer.h: add put_ll_timer in IOBufferFDStream too.
	* remove unneeded type casting.
	* create FileCopyPeerFDStream for file: url scheme.
	  This fixes closing and re-opening output file when transfer
	  breaks and restarts. Besides, it is slightly faster.
	* turn off sending plain password in URI along with
	  Authorization in hftp.
	* Timer.h: add Stop method.
	*, ftpclass.h, new settings ftp:use-size
	  and ftp:use-mdtm.

2003-06-16  Alexander V. Lukyanov <>

	* set exit_code in CMD(help) (reported

2003-06-03  Alexander V. Lukyanov <>

	* don't assign NO_SIZE when SIZE returned 0.
	* set exit_code=0 properly in builtin_lftp
	  (reported by

2003-05-28  Alexander V. Lukyanov <>

	* send password always in hftp, even along with Authorization
	  header. This is required for some proxies (reported by Onno Benschop).
	* fixed catching of file size from 150 server message.
	* load and save histories only when user interaction happens.

2003-05-23  Alexander V. Lukyanov <>

	* move Exclude to after file type setting. This
	  fixes exclude/include of directories on local side.
	* new command `.tasks'.
	* don't show hidden commands in completion.
	*, ftpclass.h: fix borrowing not-logged-in connection.

2003-05-23  Diego Reyes <>

	* (DirReadable, FileReadable) fix a bug.

2003-05-14  Geoffrey Lee <>

	* fix a problem with empty path; change it to "/".

2003-04-30  Alexander V. Lukyanov <>

	* default mode for directories is 0775; raise sane
	  connection limit to insane 64.

2003-04-28  Alexander V. Lukyanov <>

	* fix hftp file information retrieval when use-head is off
	  (bug reported by Robert A. Thompson <>).

2003-04-15  AIDA Shinra <>

	* fix bug with unterminated string; add wwwoffle support.

2003-04-08  Alexander V. Lukyanov <>

	* fixes for --script (bug reported by Olaf Kaehler

2003-03-14  Alexander V. Lukyanov <>

	* use net:timeout when draining data socket on upload;
	  ignore 0 size reported by SIZE (for

2003-02-28  Alexander V. Lukyanov <>

	* close data connection when sending ABOR over ssl.
	* add --just-print and --dry-run options.
	*,, FileGlob.h,,,
	  (GlobURL::NewGlob) new method; save some glob options and use this.
	* buffer.h: increase GET_BUFSIZE.

2003-02-26  Alexander V. Lukyanov <>

	* fixed large file support (should have used off_t).
	* handle \r just in case.
	* set slot's cwd even if non-interactive.

2003-02-14  Alexander V. Lukyanov <>

	*, don't start "put" peer if target file
	  is already complete; don't get size multiple times (occasionally).
	* new options --log and --script. Implement producing
	  command log or script file with commands to do mirroring.
	* fix dead-lock when resuming fxp with passive source.

2003-02-11  Alexander V. Lukyanov <>

	* another workaround for proftpd.
	* re-get file size/date after redirect.

2003-02-10  Alexander V. Lukyanov <>

	* lower bind error message level; work around for proftpd;
	  don't send ABOR if disconnecting immediately (quit_sent).
	* handle EPIPE as temporary; properly initialize
	  array_cnt and array_ptr.

2003-01-27  Oskar Liljeblad <>

	*, FileSet.h, add cls sorting by date.

2003-01-19  Alexander V. Lukyanov <>

	* include sys/types.h as suggested by Camille Huot
	  <> to make it compile on OpenBSD.

2003-01-16  Alexander V. Lukyanov <>

	* don't check if `..', `.' and `/' are files.
	* don't set filetype to NORMAL, unset it instead when
	  following a link; fix compilation on solaris 2.6.

2003-01-10  Paul Lew <>

	* fix build on solaris 2.6.

2003-01-05  Alexander V. Lukyanov <>

	* add -a option for ls.
	* add -d option for lftp -f and lftp -c.

2002-12-25  Alexander V. Lukyanov <>

	* new settings net:socket-bind-ipv4 and net:socket-bind-ipv6.
	*, ResMgr.h: new method IPv6AddrValidate.
	*, NetAccess.h: new methods SocketCreate and SocketCreateTCP.
	*, use SocketCreateTCP.
	*, FileCopy.h: get size before starting a continuation
	  transfer and don't start the transfer if not needed.

2002-12-19  Alexander V. Lukyanov <>

	* check set!=NULL.

2002-12-18  Alexander V. Lukyanov <>

	* (GenericParseListInfo) handle ~ here.
	* (LocalListInfo) handle ~.
	* revert ~ change.
	* handle ~.
	* handle /dir with ./file concatenation nicely.
	* compilation fix for certain versions of cygwin.

2002-12-10  Alexander V. Lukyanov <>

	* handle ~ directories properly.
	* fix rename.
	* make verify-certificate off by default.

2002-10-23  Alexander V. Lukyanov <>

	* fixed wrong eta calculation (reported by Haas
	  Wernfried <>).

2002-10-23  Glenn Maynard <>

	* fix abort when output file is not writable.

2002-10-11  Alexander V. Lukyanov <>

	* change state to WAITING_STATE from
	  DATASOCKET_CONNECTING_STATE properly on DataClose().
	* (StoreStatus) check state; send a different store
	  command when entity_size==0 to avoid dd bug.

2002-09-30  Glenn Maynard <>

	* unset put_tz properly on set_tz(0).

2002-09-30  Alexander V. Lukyanov <>

	* call tzset for glibc.

2002-09-26  Albert Chin <>

	* fix const mismatch (found with HP C++).

2002-09-23  Alexander V. Lukyanov <>

	* keyvalue.h: make Pair public.
	* don't report percent if pos>size.

2002-09-09  Alexander V. Lukyanov <>

	* save readline history conditionally.

2002-09-05  Alexander V. Lukyanov <>

	* allow single LF as EOL (suggested by Peter Vreman
	  <>). Also recommended by RFC2616.

2002-09-04  Alexander V. Lukyanov <>

	*, IdNameCache.h: fixed a bug which caused a single
	  object to be put on two lists (rare); fixed a memory leak.
	  Reported by Tillmann Steinbrecher <>.

2002-09-03  Alexander V. Lukyanov <>

	* handle ENOSPC and EDQUOT specially when the file is
	  removed (nlink==0).
	*, lftp_rl.c, lftp_rl.h: read/write readline history.

2002-09-02  Glenn Maynard <>

	*, CopyJob.h, add and use dispname to hide
	  passwords in urls.
	*,, MirrorJob.h: add --ignore-time option.

2002-08-29  Alexander V. Lukyanov <>

	* set recursive properly. This fixes bug with DELE instead
	  of RMD.
	* handle PutEOF when InitCopy temporarily failed.
	* Job.h: (ClearStatus) new method.
	* use ClearStatus.
	* handle temporary pipe() error.
	* add ifdef USE_SSL around AuthArgValidate.

2002-08-28  Alexander V. Lukyanov <>

	* don't create LocalAccess directly (it breaks modularity).
	* check if output_fd really has an error.
	* allow FileCopyPeer to be broken, but not done.
	* create a temporary buffer if InitCopy don't succeed
	  at first (temporary error); prepare for pipe() tmp error handling.

2002-08-09  Alexander V. Lukyanov <>

	*, fixed core dump when Content-Disposition
	  is handled (suggested_filename was not properly initialized).
	* fix eta rounding (reported by Igor Zhbanov

2002-08-07  Glenn Maynard <>

	* use extern "C".

2002-08-06  Alexander V. Lukyanov <>

	* resume job in Fg.

2002-08-06  Glenn Maynard <>

	* disallow 0 as queue position.

2002-08-05  Alexander V. Lukyanov <>

	*, misc.h: split off terminfo stuff.
	*, lftp_tinfo.h: new files.
	* use new header lftp_tinfo.h.
	* add new files.

2002-08-02  Alexander V. Lukyanov <>

	* include termios.h for solaris 9.

2002-08-02  Alexander V. Lukyanov <>

	* append source basename to target if target ends with
	  a slash.

2002-08-01  Alexander V. Lukyanov <>

	* allow a path in slot pseudo-url.

2002-07-31  Alexander V. Lukyanov <>

	*, MirrorJob.h: do cd on source session first to check
	  if the directory exists. This fixes creation of directory if source
	  dir does not exist.

2002-07-31  Ayamura KIKUCHI <>

	* <curses.h> should be included before <term.h> on IRIX.

2002-07-31  Alexander V. Lukyanov <>

	*, CmdExec.h, allow per-slot queues;
	  support queue start/stop; rename has_queue to queue_feeder.
	*, CopyJob.h,, FileSetOutput.h,,
	  FindJob.h,, Job.h,, MirrorJob.h,,
	  QueueFeeder.h,, SleepJob.h,,
	  TreatFileJob.h,, mgetJob.h,, mkdirJob.h,, mvJob.h,, pgetJob.h: PrintStatus with explicit
	*,, FileSet.h: do SubtractDirs if not recursive.
	*,, FileAccess.h,,,, url.h: properly Clone session in ChangeSlot; add assert;
	  better slot: url support; better url_file.

2002-07-30  Alexander V. Lukyanov <>

	* don't do SetTryTime(0).
	* fix SetCwd; Clone session properly.
	* call ConnectionSlot::SetCwd when not verifying in cd.

2002-07-25  Alexander V. Lukyanov <>

	* provide errret for setupterm, so that it does not exit
	  on error, allowing lftp to work without valid TERM.
	* set slot in ChangeSession, fixes scache+slot combo.

2002-07-24  Alexander V. Lukyanov <>

	* no need for multiple functions slot-N.

2002-07-23  Glenn Maynard <>

*, misc.h: Add get_string_term_cap; tries both terminfo and termcap.
(We could probably get away with only termcap names, but it's nice to
have them side-by-side, since the terminfo names are more useful.), StatusLine.h: Add tsl/dsl cap support.  Used only if
*  cmd:term-status is blank.  Clear title in dtor, so we don't leave
 it behind if the user's shell (or invoking program) doesn't know
 to clear it.

* Delete the statusbar on exit, so it doesn't stick around
 if we move to background.  This triggers the title clear.  (It also
 ensures nothing gets written to the title--now the log--though I don't
 think that ever happens.)

2002-07-18  Alexander V. Lukyanov <>

	* don't clear signals if not interactive (suggested by
	  Glenn Maynard <>)
	*,,, NetAccess.h,, ResMgr.h,, separate rate limitations for download
	  and upload.

2002-07-17  Alexander V. Lukyanov <>

	*,, CmdExec.h: fix mem leak by eliminating
	  var_ls member (it was not freed).
	* count speed starting from first data byte.
	* propagete SIGINT to main lftp process.

2002-07-17  Alexander V. Lukyanov <>

	*,,, FileAccess.h: ftp:device-prefix
	  setting (default off).

2002-07-12  Glenn Maynard <>

	*, delete args properly. This fixes a coredump.
	* fix format string error.

2002-07-12  Glenn Maynard <>

*, OutputJob.h:
 Update comments.

 Let the input copier own output_fd, so it'll delete it when it's done
 with it as intended (fixing the delete->close fd->output finished code path).
 This also means we don't have to deal with fg_data in OutputJob (since
 the copier owns the fd, CopyJob will do it for us.)

 eof is gone.

 Store width/tty status so we don't need output_fd after initialization.
 (needed in order to let the copier own it)

 Reversed DontFailIfBroken parameter.

 Disable fail_if_broken correctly; leave incorrect one in place for now
 (see comments.)  Fixes broken pipe with zcat.

 Use Timer; fixes scheduler problems with updating the statusline.

 Clear the status line on init, since if we have a statusline and
 we start a filter we won't be able to clear it later (due to changed

*, StatusLine.h,, all ShowStatusLine users:
 When we've output to stdout recently, instead of refusing to print a
 statusline, instead tell the statusline to only send the next update to
 the title.  This gives us a title status during "cat", etc.

*,, StatusLine.h: Don't clear the title when
 we're clearing the statusline due to stdout.

* Override ShowRunStatus to call output->ShowStatusLine.  (Any
 job using an OutputJob should call ShowStatusLine() before it or a child
 displays a statusline; CopyJob, CatJob's child, was displaying a
 statusline without doing this.)

*, OutputJob.h, Don't reenable the statusbar for
 commands that stream data from the server, since that's annoying when
 the server is rate-limited per-second.

2002-07-10  Glenn Maynard <>

	* fd leak fixed.

2002-07-10  Alexander V. Lukyanov <>

	*,,, F_GETFL returns
	  flags as fcntl return value.

2002-07-10  Glenn Maynard <>

	*, CatJob.h,, ColumnOutput.h,,
	  CopyJob.h,, FileCopy.h,, FileSetOutput.h,, Filter.h, Job.h,,, OutputJob.h,,,, echoJob.h: OuputJob support.

2002-07-10  Alexander V. Lukyanov <>

	*, CmdExec.h,, ConnectionSlot.h,,,,, keyvalue.h,,, lftp_rl.h,, connection slot

2002-07-07  Alexander V. Lukyanov <>

	*,, FileAccess.h: (GetSuggestedFileName) new
	  method; handle Content-Disposition filename= in Http.

2002-07-07  Glenn Maynard <>

	*, MirrorJob.h: add FINISHING state; fix transfer_count
	  bug which led to more parallel transfers than was requested.

2002-07-06  Albert Chin <>

	* ChmodJob.h: make HP-UX C++ happy.

2002-06-18  Alexander V. Lukyanov <>

	*,,, SMTask.h,, buffer.h,, buffer_ssl.h,,, lftp_ssl.h, ssl certificate support.

2002-06-17  Glenn Maynard <>

	* pass timestamp to copier even if it is inaccurate.
	  This fixes mirror with servers not supporting MDTM.

2002-06-11  Alexander V. Lukyanov <>

	* copy vproto in clone ctor.
	*, allow ! to be backslash-quoted (for csh-history).
	*, ResMgr.h: new verificators: FileReadable, DirReadable.

2002-06-05  Alexander V. Lukyanov <>

	* set buf to 0 after xfree; this fixes double free.

2002-06-03  Glenn Maynard <>

	* free_ha is not actually needed.

2002-05-31  Alexander V. Lukyanov <>

	* (GetStatus) don't use fixed buffer - it can be overflowed.
	  (reported by Lethal Weapon <>).
	* move PROT and PBSZ commands to after USER/PASS.
	  Requested by Nick Leuta <>.

2002-05-29  Alexander V. Lukyanov <>

	* fixed pasv address fixation.
	* use xasprintf.

2002-05-20  Alexander V. Lukyanov <>

	* let the copyer run before the session to avoid unneeded

2002-05-16  Alexander V. Lukyanov <>

	* handle '100 Continue' independently of open mode.
	* free hostent structure from getipnodebyname;
	  create ResolverCache only when needed.

2002-05-14  Alexander V. Lukyanov <>

	* fix for terminals with am and with no xenl (a space
	  could be written in last column).
	* limit non-absolute Location handling to POST method.

2002-05-13  Michail Litvak <

	* check that addresses have proper length.

2002-05-08  Alexander V. Lukyanov <>

	* more generic non-absolute Location: handling; use url::is_url.

2002-05-07  Alexander V. Lukyanov <>

	* move to next peer if no greeting received.
	* handle redirection to non-absolute url specially.
	* change FAmode to RETRIEVE when redirecting from QUOTE_CMD.

2002-05-05  Alexander V. Lukyanov <>

	*, LsCache.h, add cache:enable, cache:expire
	  and cache:size settings.

2002-04-30  Alexander V. Lukyanov <>

	* add missing port to hftp request.
	* ignore any 550 error for NLST if no file name given.

2002-04-27  Glenn Maynard <>

	* add cache:cache-empty-listings.
	* buffer.h: add IsSaving().
	*, use alternative LsCache::Add.

2002-04-23  Alexander V. Lukyanov <>

	*, add ftp:fxp-force setting.
	* fix status in fxp mode.

2002-04-18  Glenn Maynard <>

	* Free waiting on dtor.
	*, GetFileInfo.h: fix comment.

2002-04-17  Alexander V. Lukyanov <>

	* create first target directory with all parent dirs.

2002-04-15  Glenn Maynard <>

	* remove unneeded return.

2002-04-08  Alexander V. Lukyanov <>

	* accept file size in 416 reply.

2002-04-08  Glenn Maynard <>

	* fix unneeded assert.

2002-03-26  Alexander V. Lukyanov <>

	* don't send CWD ~ when PWD failed.

2002-03-18  Alexander V. Lukyanov <>

	* explicit cast for Compaq C++.

2002-03-18  Alexander V. Lukyanov <>

	* don't flood stdout with waitpid errors, it can be
	  possible if lftp forks into background.

2002-03-15  Alexander V. Lukyanov <>

	* fix occasional spinning when mirror terminates.

2002-03-14  Alexander V. Lukyanov <>

	* if the time is in the past, assume it is for tomorrow.

2002-03-13  Alexander V. Lukyanov <>

	* don't clear hostname etc on lookup error.
	* (Chdir) handle cwd==0 correctly (reported by Glenn
	  Maynard <>).

2002-03-10  Alexander V. Lukyanov <>

	* add ifdef USE_SSL around data_ssl.

2002-02-27  Ayamura KIKUCHI <>

	*, locale.h is now included from config.h.

2002-02-26  Alexander V. Lukyanov <>

	* add TLS flag to status when data connection is secured.

2002-02-24  Alexander V. Lukyanov <>

	* flip copy_passive on any 425 reply.
	* ftpget: fix ' quoting.

2002-02-15  Alexander V. Lukyanov <>

	* restore line contents after each parser.

2002-02-12  Alexander V. Lukyanov <>

	*, CharReader.h: handle EINTR properly; try reading in
	  non-block mode instead of polling.

2002-02-11  Alexander V. Lukyanov <>

	* lftpget: more ' quoting. -v should work now.

2002-02-07  Alexander V. Lukyanov <>

	*, verify resource defaults in ResMgr::ClassInit.
	* modify transfer_count when MirrorJob becomes Done
	  and not in dtor.

2002-01-31  Alexander V. Lukyanov <>

	* don't call Do in ShowRunStatus, it can do bad side effects.
	* remove invalid assert.

2002-01-30  Alexander V. Lukyanov <>

	* give direct parent a priority to continue transfers.
	* better status for fxp transfers.

2002-01-29  Alexander V. Lukyanov <>

	*, LocalDir.h: add forgotten dtor.

2002-01-27  Glenn Maynard <>

	* implement du --block-size

2002-01-26  Alexander V. Lukyanov <>

	* add missing \n.

2002-01-24  Alexander V. Lukyanov <>

	*, lftp_ssl.h: workaround for improperly closed ssl
	  data connection.

2002-01-22  Alexander V. Lukyanov <>

	*, fix random SSL_write errors
	  (bad write retry); fix ftp spinning in ssl mode.
	* don't use AUTH TLS for ftp proxy.

2002-01-17  Glenn Maynard <>

	* add missing \n.

2002-01-14  Alexander V. Lukyanov <>

	* fixed coredump on unknown service.

2002-01-13  Alexander V. Lukyanov <>

	* handle null pointer.

2002-01-10  Alexander V. Lukyanov <>

	*, CatJob.h: use DontFailIfBroken.
	* (CurrentStatus) implemented; use stream->status;
	  use chdir to verify directories.

2002-01-10  Glenn Maynard <>

	*, FileCopy.h: (fail_if_broken) new member.
	* comments added; cosmetic changes.

2002-01-09  Alexander V. Lukyanov <>

	*, FileCopy.h: (FileCopyPeer::done) new member; use it;
	  (FileCopyPeerFDStream::Done) method removed.

2002-01-08  Alexander V. Lukyanov <>

	*, Job.h: (CheckForWaitLoop) new method.
	* (wait) use it.

2002-01-04  Alexander V. Lukyanov <>

	*, LocalDir.h: new files.
	*, CmdExec.h: use new LocalDirectory class; specify local
	  directory at CmdExec creation time.
	* use LocalDirectory.
	*, SleepJob.h: specify LocalDirectory at creation time;
	  use it to create CmdExec.
	* handle new CmdExec and SleepJob creation; allow lpwd
	* new CmdExec ctor.

2002-01-03  jfaith <>

	* (OrderValidate) fix off by one xmalloc bug.

2002-01-03  Alexander V. Lukyanov <>

	* don't stop process if there is a process group already;
	  don't call second->Done if !delete_second.
	* lftpget: quote single quote properly.
	* use fish:connect-program setting.
	* new fish setting; don't send referer by default.

2002-01-01  Alexander V. Lukyanov <>

	*, ftpclass.h: fix SendCWD to set correct check case.

2001-12-26  Alexander V. Lukyanov <>

	* ArgV.h: new ctor.
	*, CatJob.h: use ArgV to launch filters; always launch
	  global command if there is for_each filter.
	*, Filter.h: DeleteSecondaryStream new method; improve

2001-12-26  Glenn Maynard <>

	* correct message.

2001-12-25  Alexander V. Lukyanov <>

	* assume keep-alive for http/1.1 by default (reported by
	  Marc Lehmann).

2001-12-24  Alexander V. Lukyanov <>

	* reset real_cwd when someone does quote CWD and the like;
	  scan PWD reply for rightmost quote (suggested by Glenn Maynard);
	  separate method SendCWD.

2001-12-24  Glenn Maynard <>

	* StatusLine.h: make GetWidthDelayed const.

2001-12-24  Alexander V. Lukyanov <>

	* ignore SetDirectory with NULL argument.

2001-12-21  Alexander V. Lukyanov <>

	*, mkdirJob.h: use orig_session approach instead of
	*, FindJob.h: Fg/Bg methods.

2001-12-20  Alexander V. Lukyanov <>

	*, ArgV.h: (seek) new method.
	* seek args before TreatJob creation.
	*, ftpclass.h,, NetAccess.h,, Http.h,, Fish.h: get rid of takeover_time; use last_priority and
	  idle_start (idea of Glenn Maynard).
	* call PopResp before actual checking, so that Disconnect
	  can see empty RespQueue.
	* don't print dots where there is only 5 jobs queued.
	* more strict checking for squid ftp listings; handle TR
	  similarly to /TR.

2001-12-20  Glenn Maynard <>

	*, FileAccess.h: add last_priority member.
	*, ftpclass.h: tune log levels.

2001-12-19  Alexander V. Lukyanov <>

	* pass correct job count to plural().

2001-12-19  Glenn Maynard <>

	*, GetFileInfo.h: Use GetArrayInfo as a last-ditch effort
	  to get information.  Add most (hopefully all) branches of the basic
	  logic.  (It doesn't list cases where cache is wrong--that can happen
	  just about anywhere.)
	*, CmdExec.h: unquote, static buffer.
	*,, QueueFeeder.h: give queue feedback.

2001-12-18  Glenn Maynard <>

	* change XXX to TODO.
	* buffer.h: add GetPos() and vFormat.
	* FileCopyPeer can_seek and can_seek0 default to off;
	  enable it in the derived classes.
	* FileCopy.h: Allow re-disabling AllowWrite and finding out if a
	  FileCopy is line-buffered.

2001-12-18  Alexander V. Lukyanov <>

	*, FileCopy.h,, Filter.h: an attempt to
	  show correct status on disk full condition.

2001-12-17  Alexander V. Lukyanov <>

	* move SetCwd(origdir) to dtor; improve comment.
	* try to enable write access to file being appended.

2001-12-17  Glenn Maynard <>

	* queue --delete has no argument.

2001-12-17  Alexander V. Lukyanov <>

	*, MirrorJob.h: clean up removing/chmod-ing; allow them
	  to be excuted in parallel; start scripting support.
	*, GetJob.h, get -e option to remove target
	  file first.

2001-12-17  Alexander V. Lukyanov <>

	* encode ' in bookmarks.
	* quote ' properly.
	* handle mirror:parallel-transfer-count.
	*, bookmark.h,, keyvalue.h,
	  don't show bookmarked passwords on `bookmark list', replace them
	  with XXXX.

2001-12-15  Alexander V. Lukyanov <>

	* use default session's cwd as default url path.
	*, Fish.h,, Http.h: add ParseLongList method
	  (for Http - by Glenn Maynard).
	* call LsCache::SetDirectory.
	* don't delete exclude in non-root mirror; add -X/-I
	  options; handle default exclude setting mirror:exclude-regex;
	  don't exclude all directories if first pattern is include pattern.
	*, PatternSet.h: simplify matching; fix Glob matching.
	* remove mirror:include-regex.

2001-12-14  Alexander V. Lukyanov <>

	* Exclude appends / for directories before matching.
	*, PatternSet.h: match last directory components
	  in Glob::Match, e.g. abc/def/ matches def/*.zip.

2001-12-14  Alexander V. Lukyanov <>

	*, FileAccess.h,, FileSet.h,,
	  MirrorJob.h,,, PatternSet.h,, (PatternSet) new class. Use it for exclude/include.
	* fixed session leak in case of options error.

2001-12-14  Alexander V. Lukyanov <>

	* add forgotten SetError.
	* TimeDate.h: don't use time_t as operator arg, it confuses compaq c++.

2001-12-14  Albert Chin-A-Young <>

	* lftp_pty.c: add missing brace.
	* define unsetenv prototype if needed.

2001-12-13  Alexander V. Lukyanov <>

	*, FileAccess.h: (OptimizePath) new method; optimize
	  path to cd to in ExpandTildeInCWD.
	* try the file as directory even if showdir, to
	  return type info; use server returned error message; don't give up
	  if the file is not in FileSet; try directory to get error message
	  if we know from cache that there is no such file; try another
	  method only if we get NO_FILE error; strip all trailing slashes;
	  don't assume result!=0; don't descend to directory if showdir;
	  don't check verify_fn if was_directory; some xfree's added.
	* don't print anything if GetFileInfo returned no set.
	* remove double Usage from chmod help.

2001-12-13  Glenn Maynard <>

	* cosmetics.
	* fix mem leak; fix status.
	* move the ~ and / special case check after the initial
	* fix status message.

2001-12-13  Alexander V. Lukyanov <>

	* LsCache.h: rename Find to FindFileSet.
	* fixed test for fset reusability in FindFileSet;
	  fixed FindFileSet calling in IsDirectory - restore cwd first and
	  don't delete fset.

2001-12-11  Alexander V. Lukyanov <>

	* handle undefined mode correctly.
	* fix dirname_alloc to strip all trailing slashes and
	  return / for /file.
	*, FindJob.h, support URLs and ~ in find;
	  print URL if processing an URL.

2001-12-11  Glenn Maynard <>

	*, ChmodJob.h: Add relative paths, -v, -c, -R.  Maintain
          simple numeric mode interface.
	* make sure "cls -ld ." shows the directory, even
          without "show_dots".
	*, FindJob.h: Accept files as well as directories to NextDir().
          Pass top-level path to ProcessFile. Don't get listing if we don't need it.
	* print files with "du filename" even without -a.
	*, GetFileInfo.h: Make prefixing the path optional.
          Add member to find out whether the given path was a file or directory.
          Fix verification with ".." at the end of path.
          If ".." was requested (with show_dirs on), return "..", not the
          name of the directory, etc.
	*, TreatFileJob.h: Derive from FinderJob.  AddFile() no
          longer needed.
	* chmod, rm, rmdir updated.  Give find "." instead of "" by
	*, misc.h: Add dirname_alloc().  (Semantics are not exactly the
          same as dirname.)
	*, rmJob.h: Handle rm -r directly.
	* FileAccess.h: (GetPriority) new method.

2001-12-11  Alexander V. Lukyanov <>

	* set priority on newly created url_session.

2001-12-10  Alexander V. Lukyanov <>

	* don't assume the listing to be parseable; call free_fset
	  when listing is replaced with new one.
	*, mkdirJob.h,, MirrorJob.h: add Fg/Bg.
	*, MirrorJob.h, allow several directories
	  to be processed in parallel; new resources.
	* match trailing slash on directories in SortByPatternList;
	  make it case insensitive.

2001-12-10  Glenn Maynard <>

	*, LsCache.h, Add explicit filetype caching.
	*, Cache a single fileset.
	*, GetFileInfo.h: Fix up cache lookups. Call Close().

2001-12-07  Alexander V. Lukyanov <>

	*, FileCopy.h: (RemoveTargetFirst) new method; do it.
	*, MirrorJob.h: use RemoveTargetFirst; mirror -P
	  works again; fix NULL dereference in PrintStatus; don't derive
	  from SessionJob - use source_session member instead;
	  do mkdir in child mirror; new Statistics struct; add statistics
	  to parent mirror in child mirror's dtor.
	* TimeDate.h: rearrange inline functions to help compiler.

2001-12-05  Alexander V. Lukyanov <>

	* improve GenericParseListInfo status.
	*, buffer.h: allow a Speedometer to be associated with
	  Buffer class.

2001-12-05  Glenn Maynard <>

	*, FileSetOutput.h: Add Suspend(), Resume(), Fg(), Bg().
	* remove _GNU_SOURCE.

2001-12-05  Alexander V. Lukyanov <>

	* use alloca in IsDirectory; style.
	* fix eprintf calls - double parent led to NULL.

2001-12-05  Glenn Maynard <>

	* use LsCache::IsDirectory.
	*, LsCache.h: implement LsCache::IsDirectory.

2001-12-05  Alexander V. Lukyanov <>

	* FileAccess.h: (ParseLongList) new virtual method.
	* NetAccess.h: call session->ParseLongList by default from
	*, FtpListInfo.h, ftpclass.h: move parser to Ftp class.

2001-12-05  Alexander V. Lukyanov <>

	* CmdExec.h: include Glob.h.
	* DummyProto.h, little optimization; new MakeListInfo.
	*, FileAccess.h: ListInfo takes path; move Glob to
	  separate file.
	*, Glob.h: new files; new GenericGlob class uses ListInfo.
	*, FileSet.h: fix date copying; remove unused method.
	*, include Glob.h.
	*, Fish.h: use GenericGlob; new ListInfo ctor.
	* FtpListInfo.h: new ListInfo ctor.
	*, GetFileInfo.h: new ListInfo ctor; path renamed.
	*, Http.h: new ListInfo ctor.
	*, HttpDir.h: prepare for date filling; use GenericGlob.
	*, LocalAccess.h: new ListInfo ctor.
	* adjust for added/removed files.
	*, NetAccess.h: remove GenericParseGlob class; new ListInfo ctor.
	*, ftpclass.h: new ListInfo ctor.
	*, FtpGlob.h: removed files.

2001-12-04  Alexander V. Lukyanov <>

	*, NetAccess.h: improve GenericParseListInfo so that
	  multiple modes can be tried.
	*, FtpListInfo.h: make it subclass of GenericParseListInfo;
	  try to guess listing type quickly.
	*, FtpSplitList.h: files removed.

2001-12-03  Glenn Maynard <>

	* don't add type suffix if type is not defined.
	* lower disconnection message debug level if session
	  is closed.
	* add forgotten new FileInfo.
	* call UseCache; don't use type if it is not defined.

2001-11-30  Alexander V. Lukyanov <>

	* ftp:use-site-chmod setting; don't simulate eof for
	  anything but RETRIEVE; don't do MKD ..
	* ftp:use-site-chmod setting; mirror:order instead of
	  two different settings.
	*, MirrorJob.h: get rid of REVERSE; implement mirroring
	  between two sessions; recognize URLs.
	* don't show . as directory.
	* try MDTM if date_prec>0.
	* send content-length for mkdir.
	* suppress EEXIST error message; correctly handle mkdir -p.

2001-11-29  Glenn Maynard <>

	*,,, case insensitive
	  commands and aliases.

2001-11-26  Alexander V. Lukyanov <>

	*,,, Filter.h,,,,,,,
	  SMTask.h,,,, misc.h:
	  (NonFatalError) new function; use it; new setting xfer:full-disk-fatal;
	  use SMTask::now from guess_year.

2001-11-23  Glenn Maynard <>

	* fix query for ftp:web-mode.
	* Fixed wildcard silliness in CLS.  First, I meant
	  strpbrk, not strspn; second, it needs to handle escapes anyway, and
	  you already have a function to do that.
	* If a file "abc" exists, and we do "cls abc/def", fail.
	  Improve ENOENT and EACCES error messages.
	* Add path to FtpGlob status.
	*, Move some status stuff from
	  FtpListInfo to FtpSplitList.  (FtpSplitList was essentially doing
	  this stuff anyway, just not as intelligently.)
	* improve error message of cls.

2001-11-22  Alexander V. Lukyanov <>

	* fix - rmdir/rm were interchanged.

2001-11-21  Alexander V. Lukyanov <>

	*, ftpclass.h: don't assume peer!=0, copy control socket
	  name to member peer_sa.
	* remove obsolete commented out asserts.
	* set user, group, nlinks and mode in FileInfo class.

2001-11-20  Alexander V. Lukyanov <>

	*, DirColors.h: move resource definition to make it
	  compile on irix.
	* remove unneeded if's.
	* use IdNameCache.
	*, TimeDate.h: init Time from SMTask::now, this saves
	  a syscall.
	*, Timer.h: add ctor from TimeDiff.
	* call IdNameCacheCleanup.
	*, IdNameCache.h: new files.

2001-11-19  Alexander V. Lukyanov <>

	* don't set LC_NUMERIC. It breaks default float settings
	  on certain locales.
	* FileSetOutput.h: make it compile on irix.
	*, FileSet.h: (SubtractCurr) new method; cosmetics.
	* remove FileInfo copying.
	* remove files of unknown type from the set.
	* use va_copy, should help powerpc.

2001-11-15  Alexander V. Lukyanov <>

	*, DirColors.h: several new methods.
	* FileAccess.h: add color member to DirList.
	* don't print size when it is not defined.
	*, FtpDirList.h, add color ls support.

2001-11-15  Glenn Maynard <>

	*, FindJobDu.h, du --files implemented.
	*, ftp:ssl-allow-anonymous new setting;
	  add host closure for ftp:ssl-* settings.
	* optimize unix list parser by not copying FileInfo.

2001-11-15  Alexander V. Lukyanov <>

	*, MirrorJob.h: --allow-chown and -a - new options.
	*, FileSet.h: (LocalChown) new method.
	* add --allow-chown to mirror help.
	*, ftpclass.h: fix web-mode.

2001-11-14  Alexander V. Lukyanov <>

	*, FileSet.h: add rank member; sorting by it;
	  SortByPatternList new method of FileSet; get rid of DATE_UNPREC;
	  add date_prec member.
	*,, no more DATE_UNPREC.
	* fix uploading of empty files to file:.
	*, MirrorJob.h: no DATE_UNPREC, no explicit date precision;
	  sort to_transfer set by mirror:order-upload/order-download.
	* change mirror help.
	* define new mirror settings, remove precision ones.

2001-11-13  Alexander V. Lukyanov <>

	*, StringPool.h: new files. String cache implemented.
	*, FileSet.h: use them.
	*,, DirColors.h,,
	  FileSetOutput.h,,, move LS_COLORS
	  parsing and storing into separate class DirColors; use it.
	* support large file sizes.
	* use some additional information from listing (size, perms,
	  user, group, nlink).

2001-11-13  Glenn Maynard <>

	*, FileSet.h,, FileSetOutput.h,,

	*user and *group field to FileInfo, parser support in ParseFtpLongList_UNIX
	and LocalFile.

	Added link count; cls -l output now has all expected fields (except for
	the ACL indicator.)

	All cls -l fields can now be enabled individually, to let people disable
	them selectively.

	Cleaned cls "tips" a little (not enough); added a forgotton \n.

	cls will now remove entire fields if no files have it, instead of
	padding every file.  (ColumnOutput only does this for the left side of
	an entire entry.)

2001-11-13  Glenn Maynard <>

	*, FileSet.h: (PrependPath) new FileSet method.

	*, FileSetOutput.h,,,

	Added -d, --block-size, -h, and -k to cls.  Sizes now default to blocks
	of 1024 unless -l is given (full sizes in column-output display is too
	much; this also aligns with "ls -s".)  cls no longer has the
	trailing-slash problem.

	Parse cls-default before commandline arguments for cls, so they don't
	override explicit options.

	Changed CHANGE_DIR 550 to pri 4.

	Restore CWD in GetListInfo.  (Removed restore directory for cls.)

	Some du changes that aren't really needed; they're related to my
	attempts to make FinderJob work when given file arguments.  They won't
	cause problems without the FinderJob changes.

	* cosmetics.

	* (addf) fix memory leak.

2001-11-12  Alexander V. Lukyanov <>

	* remove NoClosure from net:connection-limit. Reported
	  by Piotr Krukowiecki <>.

2001-11-09  Alexander V. Lukyanov <>

	*, ResMgr.h,,, TimeDate.h,, Timer.h, make TimeInterval subclass of
	  TimeDiff; add resource support in Timer; fix Timer to stop
	  spinning once it is Stopped.

2001-11-09  Glenn Maynard <>

	* FileSet.h FileSetOutput.h
	FindJob.h TimeDate.h FindJobDu.h:

	Fixed "cls dir/ dir2/", etc (restore directory.)

	Fixed (my) memleak in FileSet (clear sorted list in Empty(); not sure why
	this doesn't appear with FileSetOutput.)

	Fixed cosmetic problem with FinderJob (status had [session status] twice.)

	Fixed ParseFtpLongList_UNIX: guess_year needs -1900.  Also, DST rolling
	around uncovered a bug; set the hour to something other than 0 if we
	don't know it, or DST -1 will end up changing the date.

	Fixed Time::time_t operator-.  Why -(int) and -(long)?  Also, haing
	both Set() and set() is strange (and I don't see what the difference is.)

	Added a bit to FinderJob:

	Allow adding to ListInfo()'s Need.

	FinderJob now expects a NextDir() by the child class's constructor.
	NextDir needs to call a virtual; we can't do that from the base
	constructor.  (I think it's a little more straightforward, too: always
	start a find with NextDir, instead of the first path being an

	Regular find command now accepts multiple arguments.

	Call Enter(dir) when entering a dir and Exit() when leaving;
	Call ProcessList(fileset) when we have a new fileset, to give opportunity
	for ops on the whole list, including sorting.

	Added find and du to remote completers.

2001-11-08  Alexander V. Lukyanov <>

	* set debug level 4 for `550 No files found' reply;
	  send QUIT from destructor.
	* optimize Format method, vsnprintf directly to buffer.
	* let the job run once before showing status.

2001-11-08  Glenn Maynard <>

	*, FileSet.h: Added a pattern-exclude() for FileSets.
	* Fish.h, Http.h, log.h: no need for StatusLine.
	* StatusLine doesn't update for the first 20ms.
	*, buffer.h: Added Buffer::Format().

2001-11-06  Alexander V. Lukyanov <>

	* include sys/types.h and sys/ioctl.h.
	*, TimeDate.h,, Timer.h: new files.
	*, CopyJob.h,, FileCopy.h,,,,,,
	  NetAccess.h,,, SMTask.h,,, Speedometer.h,, StatusLine.h,,,, misc.h: use new time classes.
	* (builtin_lcd) don't assume cwd!=0.
	* (EPLF) use TimeDate::IsoDateTime; add missing \n.

2001-11-05  Alexander V. Lukyanov <>

	* FileCopy.h: fix coredump on `mget -E'.
	*, accept single quote as well as double
	  quote, no difference between the two yet.

2001-10-30  Alexander V. Lukyanov <>

	* no need to convert cached data - it is done by other
	  copy peer; don't translate really debugging messages.
	* no need for crlf_to_lf.
	* don't show completion status right after the tab since
	  the listing can come from cache fast.

2001-10-29  Alexander V. Lukyanov <>

	* use dynamic allocation in set_tz; use unsetenv to unset TZ;
	  implement unsetenv is not available using environ array.
	* make it compile with irix compiler.

2001-10-27  Alexander V. Lukyanov <>

	* clean up; style.
	* style; restore eof behaviour.
	* rewrite mem_crlf and crlf_to_lf to make them more clear.

2001-10-27  Glenn Maynard <>

	*,, FtpDirList.h,, misc.h:
	  Speed up ascii mode transfer.
	* cosmetics.

2001-10-25  Alexander V. Lukyanov <>

	*, misc.h: (mktime_from_tz) new function.
	*, FtpListInfo.h: use it.
	* (ftp:timezone) new setting.

2001-10-25  Glenn Maynard <>

	*, FileSetOutput.h, -1 option for cls;
	  readded -q to help cls; added missing \n.
	*, misc.h: -rwxr-xr-t implies S_IXOTH; -rwxr-xr-T does not;
	  mktime_from_utc has a problem when isdst is -1; the returned time is
	  off by an hour if the local timezone is in DST.
	* assume unix server's timezone to be GMT.

2001-10-25  Alexander V. Lukyanov <>

	*, FileAccess.h,,,,,,, ResMgr.h,,,,,, ftpclass.h, (QueryBool) new functions, now lftp should compile with
	  a compiler without bool type.
	* check line length before comparing with yes/no/password;
	  remove extra xfree(home), fortunately home was null at that point.

2001-10-22  Alexander V. Lukyanov <>

	* fix local tilde completion.
	*, add fish:shell setting.
	*, include time.h first.
	* distribute convert-netscape-cookies.

2001-10-19  Alexander V. Lukyanov <>

	* fix typo in cls help. Reported by Nicolas Noble.
	* restore prompt and clear message on SIGINT.

2001-10-17  Alexander V. Lukyanov <>

	*, ftpclass.h: workaround for WarFTPD ABOR glitch.
	*, CopyJob.h,, FileCopy.h: NoStatusOnWrite added.
	* use it.
	*, FileSetOutput.h: fix recls.
	* (xasprinf) fix va_end argument.
	* make readline define correct rl_message prototype.
	* make it output precise date too.

2001-10-16  Alexander V. Lukyanov <>

	* use int to avoid warning.

2001-10-15  Alexander V. Lukyanov <>

	* use xfree.
	* FileAccess.h: add comment about ListInfo::GetResult.
	* fix memory leaks; use xfree.
	* cosmetics.

2001-10-15  Alexander V. Lukyanov <>

	*, misc.h: conding style; safety precautions (better checking
	  on vsnprintf return value); just double buffer size; include stdarg.h
	  in misc.h.

2001-10-15  Glenn F. Maynard <>

	*, ColumnOutput.h,, misc.h,

	Column output now treats width properly (using mbswidth().)

	Date output added to cls -l; uses locale-dependant date (like ls does.)

	Added xasprintf and xvasprintf.  (Trivial asprintf/vasprintf
	implementation so we don't need to deal with trio just for those.)

	Added some ColumnOutput support for date output (addf()).

	* fix warnings.
	* improve status.

2001-10-12  Alexander V. Lukyanov <>

	* optimize user/password extraction using strrchr.

2001-10-12  Jonas Jensen <>

	* allow @ in password.

2001-10-12  Alexander V. Lukyanov <>

	*, Fish.h: use PtyShell; answer ssh questions about (yes/no)
	  and password.
	* (Show) check timer even if newstr is equal to to_be_shown.
	*, PtyShell.h,, lftp_pty.h: new files.
	* ArgV.h: (Add) alias to Append.
	* add > to remote completion status.
	* don't add ./ to CWD in extreme case when PWD is not
	* (dir_file) don't return NULL if possible.
	*, Time.h: (ms) fixed integer overflow.

2001-10-10  Glenn F. Maynard <>

	*, StatusLine.h,, Time.h,

	added ms constructor for time; this gives us a free cast from int to
	Time, which means all of the ms operations can away (they're implicit.)

	Defined negative time values more clearly (in comments).  This usually
	doesn't matter.

	Fixed Time.h indentation.

2001-10-10  Alexander V. Lukyanov <>

	* (LocalFile) don't set name if already set. This fixes
	  LocalAccess' ListInfo and mirror.
	* treat AddTimeout(negative) as AddTimeout(0).

2001-10-09  Alexander V. Lukyanov <>

	*, ftpclass.h, more home_auto fixes;
	  SameLocationAs returns true even if o->home is null.

2001-10-09  Glenn F. Maynard <>

	*, Time.h,,,, StatusLine.h,, misc.h:

	Time and Timer classes in Time.{cc,h}.  Implemented only a
	couple operators; add others as required.  This can probably be fairly
	widely-used; I didn't implement it anywhere else, though.  It doesn't
	cast to anything; that just causes problems.

	Disabled short help for: rels renlist reget reput

	added references: [re]ls, [re]nlist, [re]get, [re]cls, [re]put
	Help is down to 23 lines (from 25.)  How about changing help to use
	ColumnOutput?  That might cut it down further.  (Due to the length of
	some short help, it might not, though--not on an 80x25, anyway.)

	Updated [c]ls help; it was too long.

	(xgettimeofday) new function. (cmd:status-interval) new setting.

2001-10-08  Alexander V. Lukyanov <>

	* fix site command broken by ls changes.
	* FileAccess.h,,, Http.h,, ftpclass.h:, NetAccess.h: new method ResetLocationData; reset
	  home_auto on Connect/Login/AnonymousLogin.
	* FileAccess.h,,, ftpclass.h: (FA::set_home) new
	  method; use it; (Ftp::PropagateHomeAuto) new method; use it; fixed
	  bug with unsynced home's.

2001-10-08  Glenn F. Maynard <>

	*,,, complete.h, lftp_rl.c:

	Reupdated my address.

	Add cls, recls and rels to list of remote-completers.

	Make local completion mimic remote completion by forming a FileSet.
	This simplifies completion, gets rid of ignore_non_dirs (which was
	causing some really obscure problems with completion adding one too
	many slashes--didn't track this down since ignore_non_dirs isn't used
	anymore) and gives us color (etc) for local completion.  I didn't
	actually delete ignore_non_dirs yet.

	Add status feedback for remote completion, in the message area.  If -q
	is given in cls_completion_default, this is disabled.  (This is also
	undocumented and slightly different from the effect -q is intended to
	have--but doesn't, since it's currently disabled--but it seems the most
	appropriate place to put this, since cls_completion_default honors just
	about every cls option; and even if status displaying was currently
	working for cls, job status wouldn't be appropriate for completion
	since it'd mangle the line.)  I'll hold off on documenting this until -q
	is fixed for cls (unless it turns out that it just can't reasonably be done,
	but I'm optimistic.)

	Keep glob_res around after completion until the next completion or the
	next command; this lets us use it to do our own completion result

	Handle our own completion results; this also gives us optimized column
	widths for all completions, not just filenames.

	Fixed color reset bug.

	Glitch: we don't honor the user's completion-ignore-case readline
	setting.  We can't get access to it portably.  It's not too big a deal;
	adding -i to cls-completion-default has the same effect, and honoring
	both of them would probably be a little confusing anyway.

2001-10-05  Alexander V. Lukyanov <>

	* fix memory leak; change \e to \\e.
	* fix coredump when LS_COLORS is unset.
	* misc.h: add comment on Subst.
	* set top_exec to zero after deletion, this fixes a coredump
	  at exit.
	* remove bzcat, bzmore and cls from command index,
	  it has become too long for 25 linear display.

2001-10-05  Glenn F. Maynard <>

	*,, ColumnOutput.h,, FileSet.h,, FileSetOutput.h,, Filter.h,,, ResMgr.h,,, misc.h:

	ColumnOutput.{cc,h}: column display, originally from FileUtils.  I've
	cleaned it up substantially, generalized color support, class-ized it
	and some other stuff.

	Moved FDStream::width() to; nuked isatty().

	tokenize() bugfixes.

	Added TriBoolValidate; Bool with a third ("Auto").  Feel free to think
	of a better name.

	Don't give ls's job a blank name; results in unsightly empty `' in

	Add sorting to FileSets.  A second array of pointers (aliasing the main
	list) is created when the list is sorted; the list can't be modified if
	the list is sorted (so we don't have to keep track of how the list is
	sorted.)  Multiple-level sorting is possible (sort by name then
	directories-first, for example.)  This method doesn't have to touch much
	of FileSet and keeps the binary-search-insert intact.  (If needed, it
	could be made to allow adds after sorting by simply dumping new entries
	on the end of the sorted list, so new entries aren't sorted.)

	FileSet::operator[] uses the sorted list, if available.

	FindByName uses FindGEIndByName, making that function O(log n) rather
	than O(n).

	A bunch of static, very cut-and-paste code from for parsing

	FileSetPrint class.

2001-10-03  Glenn F. Maynard <>

	*, ArgV.h,,, DummyProto.h,, FileAccess.h,, FileSet.h,,
	Filter.h,,,,,, keyvalue.h,, misc.h:

	New ArgV constructor, to take a string and tokenize it. code to do the real work.  (This could possibly be improved
	to make it usable for the main tokenizer.) code to do \x, etc. substitution, and code elsewhere to use
	this.  (This would have been the third time this could would have been
	duplicated, so I merged it.)

	DummyNoProto for MakeListInfo, same as MakeDirList.

	Option for Glob to ignore case.

	isatty() and width() for FDStream.  (isatty() could be done away with,
	as it doesn't really save any code being a 1-liner; width() is more

	Move make-FileInfo-from-local-file into FileInfo::LocalFile().

	Dumb QueueFeeder bugfix (of my own bug, of course.)

	Made a bunch of KeyValue functions const.  (Not completely correctly:
	when returning a member value like those do, there really should be both
	a const and non-const version ...)

2001-10-02  Aaron Schrab <>

	*,, move va_end so that it is called always.

2001-10-01  Aaron Schrab <>

	*,, call va_start multiple
	  times when needed, fixes powerpc coredumps.

2001-10-01  Alexander V. Lukyanov  <>

	* remove unneeded _().

2001-09-12  Alexander V. Lukyanov  <>

	* sometimes CWD was not sent after reconnection
	  because of missing set_real_cwd - fix it.

2001-09-10  Alexander V. Lukyanov  <>

	* lftp_rl.c: print * for modified lines in history (like in bash).
	*, use retry-530-anonymous as an additional
	  regexp for retry-530.

2001-09-10  Glenn F. Maynard <>

	*, lftp_rl.c, lftp_rl.h: implement history command.

2001-08-28  Alexander V. Lukyanov  <>

	* retry with use_fork=false; don't create pipe if

2001-08-27  Alexander V. Lukyanov  <>

	* (MoveConnectionHere) set home if null.

2001-08-27  Glenn F. Maynard <>

	*, FileSet.h, FileAccess.h, remove the FileSet
	  sort stuff.  It's superfluous now.
	* fix a minor UI bug with queue -d.

2001-08-22  Alexander V. Lukyanov  <>

	* remove erroneous assert, handle error.
	*, ftpclass.h: (home_auto) new member; support ftp:home
	* add ftp:home, update ftp:retry-530.
	* verify default value with supplied validator.

2001-08-20  Alexander V. Lukyanov  <>

	* fixed ftp:ssl-auth validation.
	* improve abort for passive mode - connect data socket
	  if it is not connected yet.

2001-08-16  Wolfram Gloger <>

	* include stdlib.h; use labs instead of abs.

2001-08-15  Alexander V. Lukyanov  <>

	*, declare inet_aton if needed.

2001-08-07  Alexander V. Lukyanov  <>

	* fix memory allocation error.

2001-07-30  Alexander V. Lukyanov  <>

	* format queue help at 80 columns.
	* little correction for RAND_MAX.
	* call Get once, maybe fix for math exception.

2001-07-26  Glenn F. Maynard <>

	*, CmdExec.h,,, queue
	  editing support (QueueFeeder class).
	*, QueueFeeder.h: new files.

2001-07-25  Alexander V. Lukyanov  <>

	* fix mem leak (reported by Glenn F. Maynard).
	* break normal execution if Error().
	* workaround for range end ==-1.

2001-07-24  Glenn F. Maynard <>

	* make url protocol case insensitive.

2001-07-24  Alexander V. Lukyanov  <>

	* fix CONNECT_VERIFY in case of borrowed connection.
	* check find -d argument for being a number.

2001-07-19  Glenn F. Maynard <>

	*, FindJob.h, add find --maxdepth option.

2001-07-19  Glenn F. Maynard <>

	*, CmdExec.h, implement queue editing -
	  queue -s and queue -e commands.

2001-07-18  Alexander V. Lukyanov  <>

	*, ftpclass.h, allow to choose AUTH argument;
	  ftp:ssl-auth new variable.

2001-07-14  Alexander V. Lukyanov  <>

	* make it compile with irix compiler.
	* add MacWebStar parser.

2001-07-09  Alexander V. Lukyanov  <>

	* make it work without ssl.

2001-07-09  Glenn F. Maynard <>

	*, FileSet.h: speed-optimization using binary search.

2001-07-06  Alexander V. Lukyanov  <>

	* little speed-optimization in squeeze_file_name.

2001-07-03  Alexander V. Lukyanov  <>

	*, FileAccess.h,, ftpclass.h:
	  get rid of group/gpass.
	*,,, use case-insensitive
	  hostname comparision.
	*, Http.h: support CONNECT method for https over http proxy.

2001-07-02  Alexander V. Lukyanov  <>

	* update SRV support for RFC2782.
	* add roxen listing support; reorganize.

2001-06-30  Alexander V. Lukyanov  <>

	* use host=localhost for urls like file:///path.

2001-06-26  Alexander V. Lukyanov  <>

	* fix closure generation for user==0.
	* fix for cwd==0.
	* get rid of data_buf; handle identity encoding.
	*, Fish.h: more work.

2001-06-19  Alexander V. Lukyanov  <>

	* new settings ftp:port-ipv4, ftp:acct, ftp:site-group.
	*, ftpclass.h: support for ACCT, SITE GROUP,
	  and for ftp:port-ipv4.
	*, ResMgr.h: IPv4AddrValidate new validator.

2001-06-18  Alexander V. Lukyanov  <>

	* handle 416 reply code.
	*, ProcWait.h, (ProcWait::DeleteAll) new method;
	  use it.
	*, modconfig.h, include Fish.

2001-06-12  Alexander V. Lukyanov  <>

	* fix restart in fxp mode.
	*, HttpDir.h,, NetAccess.h: (GenericParseGlob)
	  new class; use it.
	*, Fish.h: implement Glob, ListInfo.
	* better status for fxp.

2001-06-07  Alexander V. Lukyanov  <>

	*, FileAccess.h: NO_USER new GetFileURL option.
	* don't put user name in Referer.

2001-06-04  Alexander V. Lukyanov  <>

	* fix `debug 9 -o log'.
	* handle Serv-U reply to STAT command.
	* some more work.

2001-06-01  Alexander V. Lukyanov  <>

	*, Http.h: implement Cleanup and CleanupThis methods.
	*, ftpclass.h: get rid of ftp_chain and ftp_next.

2001-05-30  Alexander V. Lukyanov  <>

	* fix a memory leak in use-fork=no mode.

2001-05-29  Alexander V. Lukyanov  <>

	*,, Job.h,, SMTask.h,, SleepJob.h:
	  add notification for moving to background; terminate some never-ending
	  jobs before moving to bg.
	* change default for ftp:fix-pasv-address to true.
	*, Http.h: support keep-alive for chunked transfer-encoding.
	*, ftpclass.h: fix reget for non-existent files.
	* report number of addresses.
	* tune Schedule for recursive calling by setting sched_scan
	  to current.

2001-05-29  albert chin (

	*,,, use trio functions if needed.

2001-05-29  Alexander V. Lukyanov  <>

	* (vars_generator) special generator for variable
	  names to match variable name using ResMgr::VarNameCmp.

2001-05-29  Nicolas Noble <>

	*,, ResMgr.h: add variable name completion

2001-05-24  Alexander V. Lukyanov  <>

	*, MirrorJob.h: support `mirror -R -c'.
	* some more patterns for retry-530.

2001-05-15  Alexander V. Lukyanov  <>

	* new settings ftp:retry-530 and ftp:retry-530-anonymous.
	  This settings should be useful to distinguish between overloaded
	  server (temporary condition) and incorrect password (permanent
	* retry on server reply 530 for PASS command if text
	  matches above regular expressions. Retry ftp login quickly on next
	  address if the server has many (works well on, for
	*, ResMgr.h: improved fuzzy variable name matching. Exact
	  prefix and exact name after prefix are taken into account separately.
	  E.g. http:pro is not ambigous now between http:proxy and https:proxy.
	*, misc.h: move re_match here.

2001-05-10  Alexander V. Lukyanov  <>

	* delete status_line in dtor.
	* CmdExec.h: SetStatusLine new method.
	*, FileAccess.h: SessionPool:ClearAll new method.
	* fix rpm build, add buffer_ssl.h to sources; strip modules.
	* don't call ReconfigAll in ResDecl dtor.
	*, SMTask.h: TaskCount new method.
	* delete most tasks, print warning if some extra left.

2001-05-04  Alexander V. Lukyanov  <>

	*, NetAccess.h: (HandleTimeout) new function.
	*, ftpclass.h: redefine HandleTimeout to set quit_sent
	  (fixes non-fatal deadlock).
	* allow open "" and empty bookmarks.
	* don't use user name in anon-pass (suggested by
	  Eduardo Perez Ureta <>).

2001-04-17  Alexander V. Lukyanov  <>

	*,, fix overflows.
	*, lftp_rl.c, lftp_rl.h, alias.h: make it compile with

2001-04-04  Alexander V. Lukyanov  <>

	*,, move CDECL to modconfig.h.
	* set tm_isdst to -1 (automatic DST).
	* don't add extra / to Referer.
	* use libtool to build modules;
	* remove unneeded N_.
	*, ResMgr.h: add dtor for ResDecl.
	*, Resolver.h: move resources to;
	  remove ClassInit.
	*, SMTask.h: add DeleteAll method.
	*, buffer.h: move IOBufferSSL to separate files.
	*, buffer_ssl.h: new files.
	* lftp_ssl.h: add ifdef USE_SSL.
	* automatically init Log::global.
	* modconfig.h: add MODULE_NETWORK; prototype for module_init.
	* move resources from here.

2001-03-22  Alexander V. Lukyanov  <>

	* set default for dns:cache-expire to 1h.

2001-03-20  Alexander V. Lukyanov  <>

	* ignore certain lock errors.
	* install modules into pkglibdir/version dir.
	*, http:referer, hftp:use-type new settings.

2001-03-13  Alexander V. Lukyanov  <>

	* add \n to connect: message.
	* do Exclude.
	* update help for `module'.
	* search modules in module:path.
	* init module:path from env LFTP_MODULE_PATH.

2001-03-13  Arkadiusz Miskiewicz <>

	*, Job.h: undef printf (for new glibc).

2001-03-13  Glenn F. Maynard <>

	*, CmdExec.h,, StatusLine.h: support for
	  terminal titlebar.

2001-02-23  Alexander V. Lukyanov  <>

	* (MakePrompt) fix \NNN recognition (reported by
	  Glenn F. Maynard)

2001-02-13  Alexander V. Lukyanov  <>

	* accept perms string 11 char long.
	* accept last + in perms string as ACL tag.
	* open command file in ascii mode.
	*,,, NetAccess.h,
	  create RateLimit with closure.

2001-02-07  Alexander V. Lukyanov  <>

	* fix rare spinning when parent process terminates.
	* don't bind data socket to loopback address.

2001-02-04  Alexander V. Lukyanov  <>

	* fix Combine when proto==NULL.

2001-02-03  Alexander V. Lukyanov  <>

	*,,,,,,,, use E_RETRY macro.
	* FileCopy.h: drop size information if pos>size.

2001-01-25  Alexander V. Lukyanov  <>

	* print error to debug output from Http::Read.
	* add timeout when displaying status of several jobs in cycle.
	* more space in status line for eta.

2001-01-12  Alexander V. Lukyanov  <>

	* fix opie/skey reply.
	* some fixes for PUT and `100 Continue'.

2000-12-20  Alexander V. Lukyanov  <>

	* also use ':' as user/pass separator.
	*, ftp:fix-pasv-address setting.

2000-12-18  Alexander V. Lukyanov  <>

	*,, misc.h, move mktime_from_utc to
	* correct array size.
	* add cmd:save-cwd-history setting.
	* show up to 99 seconds eta in seconds.

2000-12-08  Chmouel Boudjnah <>

	*,, add bzcat and bzmore support.

2000-12-01  Alexander V. Lukyanov  <>

	* hftp:use-authorization.
	* send port in Host: header; hftp:use-authorization new

2000-11-27  Alexander V. Lukyanov  <>

	*, FileAccess.h,,, ftpclass.h,, NetAccess.h: (ProtocolSubstitution) new virtual
	  method; check net:no-proxy before changing ftp to hftp.

2000-11-20  Alexander V. Lukyanov  <>

	* implement [ipv6::address]:port as specified by rfc2732.
	* fix local tilde globbing.

2000-11-14  Alexander V. Lukyanov  <>

	*, bookmark.h,, don't wait for
	  lock forever; print warning if locking fails.

2000-11-05  Alexander V. Lukyanov  <>

	*, history.h: add flag of modification.

2000-10-24  Alexander V. Lukyanov  <>

	* set last_bg in queue.
	* lftpget: set max-redirections.

2000-10-23  Alexander V. Lukyanov  <>

	* set event_time in Read/Write.
	* use `now' instead of time().

2000-10-19  Alexander V. Lukyanov  <>

	* don't call Poll on data socket (no real need).
	* FileSet.h, eliminate only_newer argument, use ignore mask.
	* use the new ignore mask values; don't assume only-newer
	  for reverse mirror.

2000-10-16  Alexander V. Lukyanov  <>

	* fix mput for directory case (continue loop instead
	  of returning).

2000-10-15  Alexander V. Lukyanov  <>

	* use service name `ftps' for ftps; don't queue up
	  too much MDTM/SIZE commands in sync mode.

2000-10-12  Alexander V. Lukyanov  <>

	*, FileAccess.h: fix globbing for tilde; optimize
	  the case when pattern does not contain wildcards.
	*, some code moved to
	* call NoInhibitTilde.

2000-10-12  Alexander V. Lukyanov  <>

	*, FileAccess.h,, FtpSplitList.h,, Glob::add cleanup.
	* fix completion for filenames starting with tilde.
	*, ftpclass.h: fix for old gcc (ftps undefined).

2000-10-04  Alexander V. Lukyanov  <>

	* handle CONNECT_VERIFY in CONNECTED state.
	* Disconnect before Connect.

2000-10-03  Alexander V. Lukyanov  <>

	* use C compiler to compile modules, it should use c++
	  for c++ files automatically.
	* use extern "C" for regex.h, this fixes linking for some

2000-09-29  Alexander V. Lukyanov  <>

	* fix for `ls|head'.
	*, ftp:bind-data-socket new setting;
	  fix for assert(rate_limit!=0).
	*, url.h: provisions for not using rfc1738 for ftp urls.

2000-09-23  Alexander V. Lukyanov  <>

	* fix lcd & in queue.
	* fix cmd:move-background handling when there is no jobs.

2000-09-22  Alexander V. Lukyanov  <>

	* fix cd & in queue.

2000-09-21  Arkadiusz Miskiewicz <>

	* fix addr_received initialization for ipv6.

2000-09-21  Alexander V. Lukyanov  <>

	* aliases for https and ftps.

2000-09-19  Alexander V. Lukyanov  <>

	* fix error on some compilers (e.g. irix).

2000-09-15  Alexander V. Lukyanov  <>

	* fix yet another hang bug (hopefully last).

2000-09-14  Alexander V. Lukyanov  <>

	* move out of CONNECTING_DATA_SOCKET after DataClose
	  (fixes rare `bad file number' error).
	* propagate remove_source_files to submirrors.

2000-09-12  Alexander V. Lukyanov  <>

	* include modconfig.h. (fixes module compilation).

2000-09-11  Alexander V. Lukyanov  <>

	* handle eof on ssl connection properly.

2000-09-08  Alexander V. Lukyanov  <>

	* don't remember path=/ in cookies; skip all spaces
	  before a cookie.

2000-09-07  Alexander V. Lukyanov  <>

	*, MirrorJob.h: support for redirection.
	* move `cd' out ot translated string.
	  don't rely on MODULE.
	* don't define MODULE.

2000-09-05  Alexander V. Lukyanov  <>

	*, GetJob.h: restore mode on new file.

2000-09-05  Matthias Andree <>

	* reformat EPLF even if mtime if absent.

2000-08-30  Alexander V. Lukyanov  <>

	*, ftpclass.h: try PORT if connect fails after fixing
	  pasv address.
	* really skip rest of body from recv_buf; call recv_buf->Do.

2000-08-29  Alexander V. Lukyanov  <>

	* fix error handling for port-range; bind local address
	  to data socket in passive mode (helps for rare case of routing change).

2000-08-26  Nicolas Noble <>

	* fix N_ for queue help.

2000-08-26  Alexander V. Lukyanov  <>

	*, CmdExec.h: follow redirections in `cd'.
	*, add forgotten plural.
	* define RTLD_GLOBAL to 0 if needed.
	* set path=/ by default for http urls.
	*, move string out of #define to help
	  xgettext to extract it (reported by Nicolas Noble).
	* allow //path (required by posix and needed for
	  novell). Reported by Andreas Quitzow <>.
	*, ftpclass.h: fix ssl support (tested on ftpd-tls).

2000-08-25  Alexander V. Lukyanov  <>

	* set *_ssl_connected after SSL_connect.

2000-08-24  Alexander V. Lukyanov  <>

	* ftpclass.h, Fish.h: fix last comma in enum.
	* ResMgr.h: make ResMgr::Resource public.

2000-08-23  Alexander V. Lukyanov  <>

	* fix Seek of FileCopyPeerFDStream. This fixes
	  problem with downloading from REST uncapable servers.

2000-08-21  Alexander V. Lukyanov  <>

	* if server returned address from private network
	  and its own address is not in private network, don't beleave it
	  and use original server address.

2000-08-20  Alexander V. Lukyanov  <>

	*, ftpclass.h: check data port for ftps-data; all_lines
	  new member; check all_lines for auto-sync-mode; fix ftps connection
	* make use-site-idle off by default; validate https:proxy.
	* fix unterminated comment handling; handle bsd-like
	  ftp listings from apache proxy.

2000-08-13  Alexander V. Lukyanov  <>

	* (MergeCookies) null-terminate cookie properly.

2000-08-06  Alexander V. Lukyanov  <>

	*, ftpclass.h: support for ssl (AUTH TLS).
	* new settings ftp:ssl-allow, ssl-force, ssl-protect-data;
	  allow https for http:proxy; set https:proxy by https_proxy.
	* move Https::New to ifdef; fix cookie closure match.

2000-08-04  Alexander V. Lukyanov  <>

	*, Http.h: init https properly; rework cookie sending/receiving,
	  now cookies are joined from all matching closures, path is
	  also checked; use lftp_ssl_new; don't disconnect in some cases.
	*, ResMgr.h: (QueryNext) new method for cookies merging.
	* use service lftp_ssl* functions.
	*, ftpclass.h: send SITE IDLE.
	* new setting ftp:use-site-idle.
	* quote ;& properly.
	* increment error_count when cd fails.

2000-07-31  Alexander V. Lukyanov  <>

	* add ] to list of wildcards.
	* fix coredump on empty directories.
	* fix filename quotation.
	*, lftp_ssl.h: new files.

2000-07-30  Alexander V. Lukyanov  <>

	*, FileAccess.h: res_prefix new member.
	*,, Fish.h,,, use new IOBuffer.
	*, Http.h: implement https; use IOBuffer.
	* skip comments in html; use IOBuffer.
	*, buffer.h: IOBuffer class; IOBufferSSL for ssl IO.
	* add https:proxy setting.

2000-07-29  Alexander V. Lukyanov  <>

	* fix # quoting.

2000-07-28  Alexander V. Lukyanov  <>

	*, FileCopy.h: don't create file in reget until data are
	*, buffer.h: get_size new method; getsize_and_seek_end removed.

2000-07-27  Alexander V. Lukyanov  <>

	*, ResMgr.h: NoClosure validator.
	*,,,,, use NoClosure where needed.
	* add closure for cmd:default-protocol and
	* add http:post-content-type; validate http:put-method.
	* use http:post-content-type.
	* (FileSet::Merge) fix long standing bug, which caused
	  rare coredumps on completion.

2000-07-26  Alexander V. Lukyanov  <>

	* apply non-absolute redirection to orig_url.
	*, ResMgr.h: regexp validator.
	*, ftp:auto-sync-mode setting.

2000-07-25  Alexander V. Lukyanov  <>

	*, MirrorJob.h: count errors; (ExitCode) implemented.
	* use getipnodebyname when available (for solaris8).
	* handle "" in PWD reply; fix NextPeer selection.
	* don't reset peer_curr on Resolve.
	* fix eta.

2000-07-21  Alexander V. Lukyanov  <>

	* fix duplicate error messages.
	* help update: mirror -P, exit bg.

2000-07-20  Alexander V. Lukyanov  <>

	*, FileAccess.h: (GetVisualProto, SetVisualProto)
	  new methods; handle http proxy on creation of ftp session.
	* use ftp:proxy if session was created as ftp.
	* check for ftp too.
	* create new session everytime.
	* check ftp:proxy for http://.

2000-07-19  Alexander V. Lukyanov  <>

	*, Job.h: support for several jobs being waited for
	  (preparation for mirror --parallel).
	*, CmdExec.h,,,,,, according to
	*, MirrorJob.h: --parallel option (finally!).
	*, CatJob.h, auto ascii for cat; wait all
	  for new waiting scheme.
	*, CopyJob.h: support several CopyJob's in CopyJobEnv.
	*, Job.h: (WaitForAllChildren) new method for `wait all'.

2000-07-18  Alexander V. Lukyanov  <>

	* FileAccess.h, use FileSet in Glob.
	*, FileSet.h,,, FtpGlob.h,, FtpListInfo.h,,,
	  HttpDir.h,, change for FileSet in Glob.
	* FileSet from Glob; append / for directories (finally!).

2000-07-17  Alexander V. Lukyanov  <>

	* don't pass REG_NOSUB to regexec, this fixes
	  coredump on BSD. Reported by Andriy I Pilipenko <>

2000-07-16  Alexander V. Lukyanov  <>

	* invalidate dir listing cache on chmod.
	*, Http.h: implement Suspend, Resume; resume and Roll
	  recv_buf on Close.
	* SMTask.h: (IsSuspended) new method.
	* resume in_FA before Close.

2000-07-14  Alexander V. Lukyanov  <>

	* (SocketNumericAddress) use SocketAddrLen, this fixes
	  a problem with solaris8.
	* set real_pos=0 when no_ranges==true.
	* fix `open -u ... -p ... bookmark_name'.

2000-07-13  Alexander V. Lukyanov  <>

	*, ftpclass.h: (SendArrayInfoRequests) new method;
	  fix gcc-2.96 error; fix a coredump; add asserts.
	* fix rels.

2000-07-12  Alexander V. Lukyanov  <>

	* don't query for accept* if hftp.
	* fix deadlock.

2000-07-11  Alexander V. Lukyanov  <>

	* fix error with gcc-2.96.

2000-07-10  Alexander V. Lukyanov  <>

	* fix potential memory leak.

2000-07-07  Alexander V. Lukyanov  <>

	*, ask for password for ftp:proxy.
	* workaround for redirections without "\n\n";
	  check if all data arrived before disconnecting; set body_size=0
	  on "204 No Content"; handle "100 Continue".

2000-07-04  Alexander V. Lukyanov  <>

	*, FileAccess.h: (FileAccess::ClassInit) new function;
	  move calls of Ftp::ClassInit there.
	* call FileAccess::ClassInit.
	*, Filter.h: add stderr_to_stdout flag.
	  fix printing for off_t.

2000-07-03  Alexander V. Lukyanov  <>

	* fix compilation problem on IRIX.

2000-06-29  Alexander V. Lukyanov  <>

	* don't Open NULL file, use "".

2000-06-26  Alexander V. Lukyanov  <>

	* use lstat instead of stat on local file before mkdir.
	*, Job.h: (FindAnyChild) new method.
	*, CmdExec.h, support for `wait all'.
	* fix RETR reply handling (was broken in A00625 snapshot).
	* don't use |= on bool.

2000-06-25  Alexander V. Lukyanov  <>

	* limit max-retries by default.
	* fix 4xx handling in file access (broken by recent changes).

2000-06-23  Alexander V. Lukyanov  <>

	* (StrError) optimize; add error text to "Login failed".
	*, NetAccess.h, net:persist-retries new setting.
	*, ftpclass.h: rework of reply handling; persist support.

2000-06-22  Alexander V. Lukyanov  <>

	*, FileCopy.h: log redirections; fix init of redirections;
	  (FileCopyPeerFA::Init) new method.
	*, new settings http:accept, http:accept-charset,

2000-06-21  Alexander V. Lukyanov  <>

	*, CmdExec.h,, new setting
	  cmd:move-background; (Feeder::RealEOF) new method.
	*, FileAccess.h, Http.h,,,
	  FileCopy.h: new setting xfer:max-redirections; redirection support;
	  in http code - check for 20X code before using size/date.

2000-06-18  Alexander V. Lukyanov  <>

	* use strncasecmp for special cookie checking; handle domain=.

2000-06-15  Alexander V. Lukyanov  <>

	*,, Fish.h,,,,, ftpclass.h: use off_t in many places.

2000-06-10  Alexander V. Lukyanov  <>

	* new setting xfer:make-backup.

2000-06-09  Alexander V. Lukyanov  <>

	* use 2*rate as default limit-max.

2000-06-08  Alexander V. Lukyanov  <>

	*, CopyJob.h,, FileAccess.h,,
	  FileCopy.h, FileSet.h,, Filter.h,, Http.h,,,, Speedometer.h,, buffer.h,, ftpclass.h,, misc.h,, pgetJob.h, plural.c, plural.h: large file size support.

2000-06-07  Alexander V. Lukyanov  <>

	* apply `;type=' to hftp urls too.
	* chmod files if needed before continuing download.
	* xmalloc.h: add alloca_strdup2 macro.
	* workaround IRIX CC and Unixware c++ bug by converting
	  array to plain variables. (debugged and workaround proposed by
	  Eugene Exarevsky <>)

2000-06-01  Alexander V. Lukyanov  <>

	* better status line; quote more special symbols.
	* fix positioning in FileCopyPeerFDStream.
	* change op in FinderJob_Cmd ctor.
	* don't pass user data as format, use %s.
	* fix kill all.
	* remove remote directories in reverse mode; fix chmod.

2000-05-25  Alexander V. Lukyanov  <>

	* fix quote-post; fix spurious 'Op not supp' messages and
	* fix symlinks parsing in squid ftp listing.

2000-05-23  Alexander V. Lukyanov  <>

	* implement `quote set-cookie'; don't retry POST op if
	  some data were sent; implement `quote POST path data'.
	* Http.h: (post, post_data) new members.

2000-05-22  Alexander V. Lukyanov  <>

	*, Http.h, add http:set-cookies var.
	* (xstrdup) correct spare allocation when str==0.

2000-05-20  Alexander V. Lukyanov  <>

	* remove `-' from default anon password.

2000-05-19  Alexander V. Lukyanov  <>

	* use getaddrinfo only if gethostbyname2 is not available.
	* (remove_tags) don't remove anchor tags; add debug.
	* fix few bugs concerned with keep-alive support.

2000-05-13  Alexander V. Lukyanov  <>

	* disconnect on 421/221 reply without sending QUIT.
	* use getaddrinfo if available. (original patch
	  from Brandon Hume)

2000-05-11  Alexander V. Lukyanov  <>

	* use vsnprintf only if available.
	* move vsnprintf declaration to xstring.h.
	*, ftpclass.h, wait for QUIT reply before
	  closing the socket; ftp:use-quit new setting.

2000-05-04  Alexander V. Lukyanov  <>

	*, xmalloc.h: add spare parameter to xstrdup.
	* workaround some bugs in apache proxy.
	*,, use new xstrdup parameter.
	*, Http.h, add http:put-content-type setting;
	  fix Http::Send buffer allocation.
	*, misc.h: optimize month_names.
	* don't say Running when doing nothing.
	*, FileAccess.h: move retries here; don't reset try_time
	  on open; GetTryTime, SetTryTime, GetRetries, SetRetries new/moved here.
	*, NetAccess.h: ...from here.
	*, FileCopy.h: get/set try_time and retries on store retry.

2000-05-02  Alexander V. Lukyanov  <>

	* (Disconnect) don't set state before check.
	*, CmdExec.h: use TERM as closure for cmd:prompt.

2000-05-01  Alexander V. Lukyanov  <>

	* support http:put-method; don't use locale for sending
	  Last-Modified header line; add \n to Last-Modified line;
	  don't use keep-alive for PUT; fix coredump on ^C on PUT.
	* add http:put-method.
	*, misc.h: export month_names.

2000-04-30  Alexander V. Lukyanov  <>

	*, Http.h: finish keep-alive support.
	* return from GetBetterConnection if a connection breaks.

2000-04-29  Alexander V. Lukyanov  <>

	* add Cookie support; allow disabling user-agent.
	* new setting http:cookie.
	* simplify FileCopyPeerFA creation.
	*, FileAccess.h,, url.h,,, FileCopy.h: use original URL when sending HTTP request,
	  this allows requesting URLs containing e.g. '?'.

2000-04-26  Alexander V. Lukyanov  <>

	* don't disable ranges always, check condition before

2000-04-23  Alexander V. Lukyanov  <>

	* handle old servers version 0.9 correctly.
	* actually commit the change for ^Z handling in `cd' command.

2000-04-20  Alexander V. Lukyanov  <>

	* query http:user-agent explicitly.
	* fix compilation problem.
	* fix stall problem with glob.
	* DummyProto.h,, pgetJob.h: fix warnings.

2000-04-19  Alexander V. Lukyanov  <>

	*, fix SetError(SEE_ERRNO) usage.
	* add -T option.
	* update mirror help.

2000-04-15  Alexander V. Lukyanov  <>

	*, FileSet.h: use class TimeInterval; add loose_prec arg.
	*, MirrorJob.h: add --loose-time-prec; handle new mirror:
	* ResMgr.h: make some TimeInterval methods const.
	* lower priority of messages for failed MDTM.
	* new settings mirror:time-prec and loose-time-prec.

2000-04-14  Alexander V. Lukyanov  <>

	* workaround for `class' in nameser.h (freebsd3.2).
	* (TransferCheck) fix wrong error handling in passive
	  STORE mode, it lead to infinite loops.

2000-04-12  Alexander V. Lukyanov  <>

	*, CmdExec.h, add cmd:interactive setting.
	* encode special characters in bookmark target.
	* (readline_from_file) treat ^C as empty line, not eof.

2000-04-09  Alexander V. Lukyanov  <>

	* workaround gcc alloca misfeature.

2000-04-06  Alexander V. Lukyanov  <>

	* better error messages.

2000-04-03  Alexander V. Lukyanov  <>

	* return m, not STALL.
	*, Http.h, add http:user-agent setting.
	*, MirrorJob.h: add --Remove-source-files option.
	* fix small memory leak.
	* resume CopyJob, maybe this fixes rare pget hang.

2000-03-29  Alexander V. Lukyanov  <>

	* disconnect even if control_sock==-1.
	* add O_BINARY for windows.

2000-03-27  Alexander V. Lukyanov  <>

	*, MirrorJob.h: check --no-perms in reverse mirror;
	  take umask into account in reverse mirror (unless --no-umask
	  is specified).
	*, Http.h: when there is "Accept-Ranges: none", don't send
	  Ranges: again; catch size of the file when Ranges: did not work;
	  workaround squid feature when server does not support Ranges:
	  but squid emulates it and thus lftp gets timeout.
	*, FileCopy.h: emulate eof when regetting a file which
	  is already complete and source does not support restarting.

2000-03-24  Alexander V. Lukyanov  <>

	* Job.h: (SetParentFg) new method.
	*,,,,,,, use it.
	* lftpget: -u is obsolete.
	* set use_cache in child MirrorJob.

2000-03-23  Alexander V. Lukyanov  <>

	* cast to int to avoid ambiguity on HP/UX.

2000-03-22  Alexander V. Lukyanov  <>

	*,, don't call macro alloca_strdup
	  on complex expressions.
	* remove default value in function definition; count
	  rate when draining `put' in CONFIRM_STORE.
	* include math.h for irix.
	* apply cwd in reverse mode.

2000-03-21  Alexander V. Lukyanov  <>

	*, ftpclass.h: allow \n in file names, substitute it
	  with \0; clean up command sending.

2000-03-20  Alexander V. Lukyanov  <>

	* add debug messages.
	* initialize bytes_received; add debug messages;
	  simulate eof if pos>=entity_size.
	* fix bug in TR handling, introduced yesterday.
	* fix no-proxy handling, always use proxy for hftp.
	* fix no-proxy handling.

2000-03-19  Alexander V. Lukyanov  <>

	* treat table row as a whole line; remove tags before
	  parsing. (this helps to parse boa_indexer indices, e.g.
	*, recognize permissions in EPLF listing.
	*, misc.h: (format_perms) new function.
	* treat cat "" as raw LIST.
	* make passive mode the default.

2000-03-17  Alexander V. Lukyanov  <>

	* debug code added.
	*, FindJob.h: (quiet) new member; use it; set child jobs fg
	  if needed.
	* rm -f.
	* don't delay session re-usage if connection limit is not

2000-03-16  Alexander V. Lukyanov  <>

	* call srandom if range is full.
	* don't fail if port not available, but rather wait
	  and retry.
	* (command) handle args->count()==1.

2000-03-15  Alexander V. Lukyanov  <>

	*, ftpclass.h: disallow filenames with NL;
	  call ReuseAddress if could not get available port.
	* (Rename) assign file1 before Open; (Open) don't Close
	  if not needed.
	* ignore EINTR from write.
	*, NetAccess.h: (ReuseAddress) new method.

2000-03-14  Alexander V. Lukyanov  <>

	*, add ftp:web-mode.

2000-03-12  Alexander V. Lukyanov  <>

	* (DataAbort) disregard replies for commands sent
	  before ABOR.

2000-03-10  Alexander V. Lukyanov  <>

	* disallow double ABOR, disconnect instead.

2000-03-09  Alexander V. Lukyanov  <>

	* (GetBetterConnection) don't touch CONNECTING_STATE.
	* fix prompt space allocation.
	* declare random if needed.

2000-03-07  Alexander V. Lukyanov  <>

	*, ResMgr.h: add Range class.
	* add ftp:port-range.
	* use port-range to bind data socket.

2000-03-06  Alexander V. Lukyanov  <>

	*, FileAccess.h: make IsConnected int; simpler
	  IsBetterThan implementation.
	* Http.h, ftpclass.h: better IsConnected - assign to conneting state
	  connect level 1.

2000-03-05  Alexander V. Lukyanov  <>

	* use NO_SIZE and NO_DATE.
	* save size in entity_size and simulate eof on pos>=size;
	  send proper offset for REST.
	*, NetAccess.h: add takeover_time.
	*, ftpclass.h: don't use taken-over connection immediately
	  if priority<1; pass connection count to GetBetterConnection.

2000-03-02  Alexander V. Lukyanov  <>

	* don't take over a connection if it has NOREST_MODE;
	  check if connection_limit is reached before interrupting a transfer.
	* -E for get, put, mget, mput.

2000-03-01  Alexander V. Lukyanov  <>

	*, CopyJob.h,,, FileCopy.h,, Job.h,,,,
	  implement net:connection-limit and net:connection-takeover
	  settings; add Fg/Bg where needed.

2000-02-29  Alexander V. Lukyanov  <>

	* explain termination when cwd is not accessible.
	*, FileAccess.h: (priority) new member; (SetPriority);
	  (FirstSameSite, NextSameSite) new methods.
	* (OpenSession) mark current task as moved.
	* Http.h: (IsConnected) implemented.
	*, NetAccess.h: (CountConnections) new method;
	  (connection_limit, connection_takeover) new members.
	*, SMTask.h: add a dummy init_task so that current!=0.

2000-02-28  Alexander V. Lukyanov  <>

	*, ftpclass.h: remember last REST position and do `REST 0'
	  if last REST was >0 (for broken? ftp servers that don't reset REST).
	* (PrintStatus) improved.
	* get size and offset after calling super::Do, because
	  the copier can be changed by it.

2000-02-27  Alexander V. Lukyanov  <>

	* fix typo in mput help.

2000-02-24  Alexander V. Lukyanov  <>

	*, Job.h, (Job::ListOneJob, Job::PrintJobTitle) new
	  methods; use them.

2000-02-23  Alexander V. Lukyanov  <>

	*, ftpclass.h: raise log level of CWD reply to 3.
	* log directory if verbose>=3; show directory in status.
	*, misc.h: (squeeze_file_name) new function (from CopyJob).
	* use it.

2000-02-22  Alexander V. Lukyanov  <>

	* implement LOCAL_DIR mode; recognize -O;
	  use LOCAL_DIR for lcd.
	* add OS2 list parser.

2000-02-20  Alexander V. Lukyanov  <>

	*, CmdExec.h, (saved_session) new member;
	  save old session while new host name is verified and restore on error.
	* nullify cwd too on bad host name error.
	* (Rename) correct typo (which caused core dumps).

2000-02-19  Alexander V. Lukyanov  <>

	* count Buffered() change even when input buffer is empty.
	* protect from rate<0.

2000-02-17  Alexander V. Lukyanov  <>

	* workaround server's y2k bug in MDTM.
	  (reported by Robert de Bath <>)

2000-02-15  Alexander V. Lukyanov  <>

	* (SuspendJob) print a better status for CopyJobEnv.
	* reduce initial rate period to 2 seconds.

2000-02-14  Alexander V. Lukyanov  <>

	* close data socket when switching to no-rest mode.
	* strip quotes from refresh URL.

2000-02-12  Alexander V. Lukyanov  <>

	  call xfree everywhere.
	* use xfree and xgetcwd.
	* don't dup2 to fd 1.
	* add task_count and debug.
	* use TimeoutS.
	*, ftpclass.h: add FreeResult method.
	* (xgetcwd) call xmalloc_register_block.
	*, xmalloc.h: count memory blocks;
	  add xmalloc_register_block.
	* workaround gcc bug, this fixes mem leak.
	* clean up gotos.
	*, lftp_rl.c, lftp_rl.h: readline result must be freed;
	  register it with xmalloc_register_block.

2000-02-12  Alexander V. Lukyanov  <>

	* fix memory leaks.
	* use xfree.
	* help for repeat.
	*, xmalloc.h: outline xstrdup; MEM_DEBUG it.
	*, ArgV.h: fix memory leak. Allocate memory in chunks.
	*, FileAccess.h,, Filter.h,
	  don't include ArgV.h in header.
	* LsCache.h, don't dup memory in Find method.
	*,, use new LsCache::Find.
	* url.h: start implementing class url.

2000-02-11  Alexander V. Lukyanov  <>

	* print rate using Speedometer::GetStr.

2000-02-09  Alexander V. Lukyanov  <>

	*, CopyJob.h: don't use putchar; print summary when Done().
	* don't use putchar.
	* don't print empty line.

2000-02-08  Alexander V. Lukyanov  <>

	* don't show rate when put==0.
	* remove ftpget.o.
	*, SMTask.h: (current) new static member; empty all block's
	  before calling all Do's.
	* (DelayingMessage) use current->Timeout.
	* PollVec.h: add GetTimeout for debugging.
	* use current->Timeout.
	* use TimeoutS.

2000-02-06  Alexander V. Lukyanov  <>

	* (PrintStatus) special case for CopyJobEnv in queue mode.

2000-02-04  Alexander V. Lukyanov  <>

	* if waitpid fails, check pid existence.

2000-02-02  Alexander V. Lukyanov  <>

	* add -O option to help.
	* declare strptime if needed.
	* handle "port theft" message in fxp mode.
	* check for reversing passive-source fixed; add
	* add missing \n.

2000-02-01  Alexander V. Lukyanov  <>

	* CopyJob.h: add GetETAStrSFromTime.
	*, FileCopy.h: split off Speedometer;
	  add GetETAStrSFromTime; pass reource name to Speedometer.
	* call cp->GetETAStrSFromTime.
	* set old path before cd, so that after `open url'
	  `cd -' works; add --use-cache to mirror help.
	*, Speedometer.h: new files; accept resource name
	  instead of period.
	* don't change state to ERROR at all (because process
	  can still run after waitpid fails)
	* more verbose status.
	*, FtpSplitList.h: measure rate.
	* show only li->Status(); add use_cache member;

2000-01-31  Alexander V. Lukyanov  <>

	* FileAccess.h, add NO_PASSWORD option for GetFileURL.
	* use NO_PASSWORD; encode paths in cwd_history.
	*, NetAccess.h: (ReconnectInterval, DelayingMessage) new
	*, use DelayingMessage.
	* show job number for queue's current job.
	* improve completion for queue command.
	* improve help for queue.

2000-01-30  Alexander V. Lukyanov  <>

	* flush buffer in case of error.
	* don't spin on error or done.
	* add debug code.
	* add assert; remove obsolete code.
	* handle waitpid errors better.

2000-01-29  Alexander V. Lukyanov  <>

	* check for "timed out" in reply; check if data were
	  sent or received before 5xx reply; don't spin on errors (not a bug).
	*, PollVec.h: simplify.
	*,,,,,,,,, don't use block directly.
	* check if output file is normal before renaming it.
	*, Http.h: remove redundant CheckTimeout;
	  don't use block directly.
	*, NetAccess.h: bool CheckTimeout; don't use block
	*, SMTask.h: use simplified PollVec.

2000-01-28  Alexander V. Lukyanov  <>

	* workaround for dos paths.
	* unixware does not have IN6_ARE_ADDR_EQUAL - workaround.

2000-01-27  Alexander V. Lukyanov  <>

	* CharReader.h,,,, FileAccess.h,, FileCopy.h,,,,,,,,, Job.h,,, LsCache.h,,,
	  NetAccess.h, PollVec.h,, ProcWait.h,,
	  Resolver.h,, SMTask.h,, StatusLine.h,
	  buffer.h,,, ftpclass.h, log.h,, (SMTask::Delete, SMTask::Roll) new methods; use them
	  everywhere; prohibit direct SMTask destruction by making destructors
	  protected; (SMTask::deleting) new member; don't show rate if it is
	  not valid; don't call SMTask::Do directly; (NetAccess::Close) new
	* turn on sync mode when 331 precedes 220. (for vftpd)

2000-01-26  Alexander V. Lukyanov  <>

	* md5.c: check for HAVE_ENDIAN_H
	* options for glob; add help for glob and find.
	* compilation fix for solaris251.

2000-01-25  Alexander V. Lukyanov  <>

	* runtime test for TIOCOUTQ.

2000-01-22  Alexander V. Lukyanov  <>

	*,, TreatFileJob.h,,
	  mkdirJob.h, recognize urls.
	* cmd:default-protocol new setting.
	*, DummyProto.h: add DummyNoProto class.
	* use ParsedURL::Combine; get password from .netrc
	  if not present; create DummyNoProto if protocol is not supported;
	  (GlobURL) find url prefix and use it; make StrError virtual.
	* FileAccess.h: see above.
	* now there is no need to handle unsupported protocol.
	*, FileCopyFtp.h: save/restore try_time.
	* compare DATE_UNPREC too.
	*, LocalAccess.h: ignore AnonymousLogin and Login;
	  improve globbing.
	* revert the change from 1998-10-13 - don't ignore date.
	* NetAccess.h: add GetTryTime.
	*, Resolver.h: add dns:use-fork setting; pass data over
	  a Buffer.
	* add cmd:default-protocol; change protocol in open
	  if current one is file; use .netrc not only for ftp; add option -O
	  for get, put, mget, mput; use output_file_name.
	* in local completion check for URLs too.
	* disallow empty home; (ReplyLogPriority) new method;
	  handle 221 reply as 421.
	* ftpclass.h: set try_time in SetCopyMode.
	*, mgetJob.h: (make_directory) new method; use output_file_name;
	  support for -O.
	*, misc.h: (url_file) new function; (output_file_name) new
	*, url.h: (url::path_index) new function;
	  (ParsedURL::Combine) new method.

2000-01-19  Alexander V. Lukyanov  <>

	* check file names for slashes.
	* make percent using ranges.

2000-01-17  Alexander V. Lukyanov  <>

	* don't use netrc if protocol is specified.
	* don't use s6_addr32, use s6_addr instead (for
	* suppress status in Echo if output uses stdout.
	*, FileCopy.h: reconfig Speedometers.

2000-01-15  Alexander V. Lukyanov  <>

	* FileAccess.h: move NO_DATE, NO_SIZE here.
	* FileCopy.h: from here.
	* (FileCopyPeerFA::GetStatus) don't return status if
	  session is not open.
	* parse EPLF listing and show it pretty.
	* parse EPLF listing.
	* misc.h: move find_char here.
	* from here; parse EPLF listings from squid.
	* use NO_SIZE and NO_DATE macros.
	* md5.c: don't compile anything if HAVE_MD5.

2000-01-13  Alexander V. Lukyanov  <>

	* (OpenSession) set correct pos in PUT mode;
	  don't call SaveRollback in PUT mode; handle eof in fxp PUT.
	* SMTask.h: ensure STALL|MOVED==MOVED.
	*, ftpclass.h: make FlushSendQueue and ReceiveResp
	  return flag indicating progress; OR it with m in Ftp::Do;
	  fix condition of Disconnect in copy mode; fix SwitchToState
	  to not ignore severe errors in copy mode; outline New;
	  (SendCmd2) new method; use it everywhere; new settings use-stat,
	* fix spinning on & in file names when no &amp; etc match.
	* FileCopy.h: make bytes_count protected.
	* increment bytes_count.
	*, Http.h,, LocalAccess.h: outline (New).
	* optimize cmd_user; update description for user;
	  update copyright string for year 2000.
	* new settings ftp:use-stat, ftp:stat-interval.

2000-01-12  Alexander V. Lukyanov  <>

	*, ftpclass.h, fixes for FXP.
	* don't set pos to FILE_END; don't try to figure out
	  position in fxp mode; don't try to fake eof in PUT mode;
	  (RateReset) new method.
	* FileCopy.h: (SetFXP) accept argument.
	*, FileCopyFtp.h: allow switching passive_source;
	  revert to plain copy if both cases fail; call RateReset; allow
	  store when necessary.
	*, ftpclass.h: check PORT reply, switch copy_passive
	  if it fails; add support for delayed STOR in copy mode; don't
	  check data address in copy mode.

2000-01-11  Alexander V. Lukyanov  <>

	* cast off const for solaris 2.5.1.
	*, Filter.h: allow Input/OutputFilter from ArgV.
	*, LocalAccess.h: accept current system cwd as default;
	  log errors; implemented LocalDirList.
	* don't append var_ls if empty.
	* set pos in FileCopyPeerFA::Seek.

2000-01-10  Alexander V. Lukyanov  <>

	* check use-fxp for both sessions.
	* remove FtpCopy.{cc,h}.
	* get rid of ftpcopy.
	*, NetAccess.h,,,
	  support no_proxy environment variable; net:no-proxy setting.

2000-01-09  Alexander V. Lukyanov  <>

	*, FileCopyFtp.h: new files
	  (FXP implementation over FileCopy class).
	  use FileCopy::New; update year.
	*, DummyProto.h,, FileAccess.h,,,,, NetAccess.h,,
	  SMTask.h,,,,, misc.h, update year.
	*, FileCopy.h: support for fxp; (New) new method;
	  (RateAdd) new method; (..Peer::CannotSeek) new method; (GetSession)
	  new method; (SetFXP) new method.
	* add FileCopyFtp.{cc,h}.
	* buffer.h: (SetPos) new method.
	* register FXP creator.
	* ftpclass.h: add FXP support methods.
	* new fxp resources (ftp:use-fxp, ftp:fxp-passive-source).

2000-01-08  Alexander V. Lukyanov  <>

	* NetAccess.h,,, (SocketConnect,
	  SocketAddrLen) new methods; use them. This fixes a problem on NetBSD.

2000-01-07  Alexander V. Lukyanov  <>

	*, FileCopy.h: prepare for fxp; reuse session in New
	  if told so; don't request date many times.
	*, ftpclass.h: support STAT while doing fxp.
	* SMTask.h: (TimeoutS) new method.

2000-01-06  Alexander V. Lukyanov  <>

	* include netinet/tcp.h conditionally.
	* #if 0 dead code.
	* send Last-Modified in STORE mode.
	* include arpa/nameser.h and resolv.h conditionally;
	  conditionally compile functions depending on HAVE_RES_SEARCH.
	* use / if HOME is not set.
	* same.
	* don't create ./.lftp if HOME is not set.
	* fail if HOME is not set.

2000-01-05  Alexander V. Lukyanov  <>

	*, FileAccess.h: (pass_open) new member;
	  (InsecurePassword) new method; (GetFileURL) include password if
	  pass_open is true; (OpenMode) new method.
	* don't check session pos if it is not properly opened;
	  use OpenSession in Put_LL.
	* `pwd -p' to show password; call InsecurePassword
	  when password is entered on command line; forbid recursive bookmarks;
	  use ascii mode for ls.
	* don't hide password if pass_open.
	* don't strip CRs.
	* better handle PUT errors.

2000-01-04  Alexander V. Lukyanov  <>

	*, FileAccess.h: delete args in DirList; outline virtual
	  functions; remove CopyOptions.
	*, DummyProto.h: implement DummyDirList.
	*, FileCopy.h: handle errors in DirList.
	* ftpclass.h: remove CopyOptions.

2000-01-03  Alexander V. Lukyanov  <>

	*, misc.h: (percent) new function.
	* use it.
	* use it - and thus avoid integer overflow.
	  (reported by Slama YA).

2000-01-02  Alexander V. Lukyanov  <>

	* check if line_buffer!=0 (by Slama YA)

2000-01-01  Alexander V. Lukyanov  <>

	* CopyJob.h: add GetETA(long remainder) method.
	*, Job.h: (ListOneJobRecursively) new method; list waiting
	  job before others.
	* expand tilde (finally).
	*, pgetJob.h: re-implement PrintStatus method.
	* init need_seek.
	* add queue help.

1999-12-30  Alexander V. Lukyanov  <>

	* fix SetPasswordGlobal.

1999-12-28  Alexander V. Lukyanov  <>

	*, FileCopy.h: implemet LineBuffered; handle EPIPE.
	*, use LineBuffered.
	* implement SqueezeName.

1999-12-28  Alexander V. Lukyanov  <>

	* CopyJob.h: put back FDStream for stdout creation.
	* FileCopy.h: no cache does not mean `don't save to cache'.
	* redo quote and site commands.
	* advance pos in QUOTE_CMD mode; append file name
	  to error message if it is not mentioned already.
	* remove QuoteJob.{cc,h}, XferJob.{cc,h}
	  (XferJob is dead - long live FileCopy)
	* handle ? specially.
	*, FileAccess.h: (SetPasswordGlobal) new method;
	  make NoGlob to produce empty list if pattern contains wildcards.
	* use it.
	* few improvements.

1999-12-27  Alexander V. Lukyanov  <>

	*, CopyJob.h: add op member for CopyJob.
	* add ls caching support; (FileCopyPeerDirList) new class.
	* remove, LsJob.h, ftpget.
	* supply op for CopyJob.
	*, buffer.h: (SaveRollback) new method; define GET_BUFSIZE.
	* new ls, nlist; supply op for CopyJob.
	* supply op for CopyJob.

1999-12-26  Alexander V. Lukyanov  <>

	*, CmdExec.h: use GlobURL.
	* (GetFileURL) handle file starting with '~';
	  (GlobURL::GetResult) implemented.
	* FileAccess.h: few methods for GlobURL added.
	* handle updir errors; handle dir starting with '~'.
	*, GetJob.h: (NoProtoSrc, NoProtoDst) new methods;
	  handle reverse transfers (put).
	*, LocalAccess.h: preserve home by ignoring Connect();
	  support ascii transfers.
	* remove, mputJob.h,, PutJob.h,, FileXfer.h.
	* don't include PutJob.h.
	* don't include PutJob.h, mputJob.h; move put, mput, mget
	  functionality to cmd_get; update help; use GlobURL;
	  support `login URL'.
	*, mgetJob.h: support mput.
	* url.h: (is_url) new method.
	* use GlobURL.
	* don't open session if seek_pos>=size.
	* correct accounting.

1999-12-26  Alexander V. Lukyanov  <>

	* help update; support get -a for ascii mode;
	  don't use ascii mode for zcat and zmore.
	*, CopyJob.h: ascii support in CopyJobEnv; add SetDate and
	  SetSize methods.
	*, FileCopy.h: init can_seek0; add FileCopyPeerFA::NewGet,
	  NewPut methods.
	* use CopyJob.
	* use NewPut.
	* allocate enough memory for file: urls.

1999-12-25  Alexander V. Lukyanov  <>

	*, ChangeLog,, CopyJob.h,,
	  FileAccess.h,, FileCopy.h,, Filter.h,, GetJob.h,,,,
	  mgetJob.h,, pgetJob.h: lots of changes - get, mget, pget
	  now work with new FileCopyEnv class.

1999-12-24  Alexander V. Lukyanov  <>

	* support ascii conversion.
	* ignore -u for compatibility.
	* beware of stale pointers, use job number instead.

1999-12-22  Alexander V. Lukyanov  <>

	*,, CatJob.h: add ascii mode.
	* handle ~ as absolute path in check for icon.

1999-12-22  Robert de Bath <>

	*, FileAccess.h,,,, rehash debug levels.

1999-12-22  Alexander V. Lukyanov  <>

	* don't show job info as ? if there is no info.
	*, CatJob.h: use new architecture w/ CopyJobEnv.
	*, CopyJob.h: (CopyJobEnv) new class; misc tweaks.
	*, FileCopy.h: add features for cat command.
	* new cat command creation.

1999-12-21  Alexander V. Lukyanov  <>

	* (DataAbort) Disconnect in copy mode if ABOR is disabled.

1999-12-21  Robert de Bath <>

	* correction for ReconnectAllowed

1999-12-20  Alexander V. Lukyanov  <>

	*, CopyJob.h: add methods for creating different copiers:
	  NewGet, NewPut, NewEcho.
	* use CopyJob::NewEcho.
	*, FileCopy.h: new methods in Speedometer: GetStr, GetStrS,
	  GetETAStr, GetETAStrS; use them in FileCopy; add bytes_count,
	  start_time, end_time for accounting; fix FileCopyPeerString; add
	  Done to FileCopyPeerFDStream to wait for stream->Done.
	* little fix in ReconnectAllowed.

1999-12-19  Alexander V. Lukyanov  <>

        * decode &amp; and similar; don't accept ~ for ListInfo.
	* FileCopy.h,, (GetFgData) implemented;
	  fill CopyJob::fg_data; handle NeedSizeDateBeforehand.
	* FileAccess.h, Http.h: add NeedSizeDateBeforehand.

1999-12-18  Alexander V. Lukyanov  <>

	* get1 command.
	* move xfer:eta-terse to CopyJob.
	*, FtpCopy.h: save retries count.
	*, CopyJob.h: first version.
	*, FileCopy.h: finished.
	* correct calculations in extreme cases
	  (reported by Robert de Bath)
	*, FileAccess.h: expand tilde in file and file1 too.
	  (ExpandTildeStatic) new method; New from ParsedURL; propagate
	* handle size==0 in Write; expand tilde for ARRAY_INFO;
	  correct test for ftp:rest-stor.
	* handle size==0 in Write; send port to proxy;
	  encode hostname; in error message append / conditionally.
	* url.h: add more URL_*_UNSAFE.

1999-12-14  Alexander V. Lukyanov  <>

	* Filter.h, add can_seek method.
	*, buffer.h: add UnSkip method.

1999-12-13  Alexander V. Lukyanov  <>

	* LocalAccess.h: remove error_code (it is defined in super class) -
	  this fixes error handling in file: urls.
	* set size and date to -1 in case of error;
	  fill opt_size and opt_date.
	* FileAccess.h: IOReady checks IsOpen.
	* IOReady checks IsOpen.
	*, buffer.h: add pos member; de-virtualize Skip.
	* don't close -1; correct default file permissions.

1999-12-11  Alexander V. Lukyanov  <>

	* check use-abor before sending ABOR.
	* use SMTask::now.
	* include time.h

1999-12-10  Alexander V. Lukyanov  <>

	*,, fix ftp url handling (%2F for root)
	  (reported by Robert de Bath <>)
	* url.h: no need to specify \033 in URL_UNSAFE; define URL_PATH_UNSAFE.
	* avoid // for ftp urls.
	* use URL_PATH_UNSAFE; specially hanle ~/ for ftp urls.
	* move parse_perms and parse_month...
	*, misc.h:; implement parse_year_or_time, guess_year.
	* better handling for ftp urls; ascii support.
	* handle apache proxy ftp listings.
	* add ftp:use-abor.

1999-12-09  Alexander V. Lukyanov  <>

	* don't close session too early when deleting.
	*, buffer.h: add SetError method, use it.

1999-12-06  Alexander V. Lukyanov  <>

	* check if GetBetterConnection(0) succeeded. (bug report from
	  Robert de Bath <>).

1999-12-04  Alexander V. Lukyanov  <>

	* new resources reconnect-interval-multiplier/max;
	  reconnect-interval renamed to reconnect-interval-base.
	*, ResMgr.h: (FloatValidate) new method.
	*, NetAccess.h: (ReconnectAllowed) (NextTry) new methods;
	  implement reconnect-interval-multiplier/max.
	* use ReconnectAllowed and NextTry.
	* disallow spaces in bookmark names.
	*, ftpclass.h: (IOReady) implemented; check for space
	  in last line of multiline response; use is_ascii_digit;
	  use ReconnectAllowed and NextTry.
	* FileAccess.h: (IOReady) new method.

1999-11-26  Alexander V. Lukyanov  <>

	* FileAccess.h,, add Glob::NoMatchPeriod
	  method; use it for completion.

1999-11-22  Alexander V. Lukyanov  <>

	* try_time=0 is the same as DontSleep().
	* support ConnectVerify; remove some unneeded statements.
	*, NetAccess.h: move ConnectVerify here; remove
	  relookup-always setting.
	*,, ftpclass.h: remove relookup-always.

1999-11-19  Alexander V. Lukyanov  <>

	* move aborted_data_sock along with control_sock.
	* make sure to restore old cwd.

1999-11-16  Alexander V. Lukyanov  <>

	* don't decrease sync_wait on 1xx replies.

1999-11-15  Alexander V. Lukyanov  <>

	* (ExtractPWD) don't return alloca'ed space, strdup it.

1999-11-14  Alexander V. Lukyanov  <>

	*, CmdExec.h: (SuspendJob) new method; (PrintStatus)
	  don't print all queued commands if not verbose, print current
	  queue command status if ^Z (v==0).

1999-11-11  Alexander V. Lukyanov  <>

	*, ftpclass.h: add site_chmod_supported flag.

1999-11-09  Alexander V. Lukyanov  <>

	* properly set info.size and info.time if mdtm or size
	  are not supported.
	* fix infinite loop on bad symlinks.

1999-11-07  Alexander V. Lukyanov  <>

	*, ftpclass.h: allow moving a connection with buffered
	  data or expected responses; (sync_wait) new member for number of
	  commands in flight.

1999-11-04  Alexander V. Lukyanov  <>

	*, FileAccess.h: (RereadManual) new method to stop
	  the driver wasting data when REST is not supported;
	  (norest_manual) new member; (device_prefix_len) new protected method;
	  use it in Chdir.
	* implement files_only.
	*, use RereadManual.
	* support norest_manual.
	* ascii_ctype.h: add to_ascii_lower.
	*, buffer.h: (Empty) new method.
	* use DirectoriesOnly for `cd' command.
	*, ftpclass.h: better support for vms; remember that
	  MDTM or SIZE is not supported; implement ftp:rest-stor setting;
	  add closure to ftp:rest-list setting.
	* ftp:rest-stor setting.

1999-11-02  Alexander V. Lukyanov  <>

	*, FileAccess.h,, FtpGlob.h,,
	  FtpListInfo.h,, FtpSplitList.h,
	  redesign FtpGlob class to use FtpListInfo class; FtpListInfo now
	  uses more specialized FtpSplitList instead of FtpGlob;
	  (Glob::dirs_only) new member, implemented simple type filter.

1999-10-22  Alexander V. Lukyanov  <>

	* Http.h, (use_head) new member; hftp:use-head new setting;
	  use GET instead of HEAD if !use_head.
	* (hftp:use-head) new setting.

1999-10-21  Alexander V. Lukyanov  <>

	* compare ftp:// with hftp:// properly.

1999-10-20  Alexander V. Lukyanov  <>

	* (AnonymousLogin) reset cwd and home.
	* Http.h, add HFtp::Login; don't send password in URI.
	* do Login after Connect, not reverse.

1999-10-19  Alexander V. Lukyanov  <>

	* set hour/minute to 0 if they are not available.
	* avoid memory leak in encode_string; add support for
	  non-anonymous ftp over http.
	* (url::encode_string) don't malloc buffer;
	  quote all if quote==0.

1999-10-19  Alexander V. Lukyanov  <>

	* don't send data in STORE mode until header is sent.
	  (reported by Brian Ristuccia)

1999-10-13  Alexander V. Lukyanov  <>

	* don't skip line begin early; parse Mini-Proxy listings.
	* try getfd() before utime(), it might create the file.
	  (this is a workaround for getting empty files, a full solution
	  would be to block on close of output file.)
	* (glob_quote) remove extra quoting. This fixes completion
	  for files with spaces in name.

1999-10-13  Alexander V. Lukyanov  <>

	* pass canonic resource name to Reconfig.

1999-10-12  Alexander V. Lukyanov  <>

	*, call Reconfig after session change;
	  (do_cd) exit_code=0 if check is not needed.

1999-10-11  Alexander V. Lukyanov  <>

	* check file info for validity.
	* don't dump core on eol==0.

1999-10-10  Alexander V. Lukyanov  <>

	* don't open local file early if !cont.

1999-10-09  Alexander V. Lukyanov  <>

	* call mkdir(...,0777) to let user choose umask.
	* prepare for better handling of unsupported SIZE/MDTM.

1999-10-08  Alexander V. Lukyanov  <>

	*, FileAccess.h, low level ascii-mode

1999-10-07  Alexander V. Lukyanov  <>

	* don't free peer, it is freed in parent class, and so
	  don't free proxy* (the later was harmless since proxy was set to 0).
	* use ClearPeer.
	* actually assign c.
	* better handle symlinks.

1999-10-05  Alexander V. Lukyanov  <>

	* handle Netscape-proxy listing; handle parse errors
	* use SOCKS4 define.
	* use URL closure on several settings.

1999-10-04  Alexander V. Lukyanov  <>

	* (delarg) decrement ind if needed.
	* HttpDir.h, (LsOptions) new class, use it, implement
	  -F ls option, accept -alC but ignore them for now.

1999-10-02  Alexander V. Lukyanov  <>

	* fix type mismatch on 64-bit machines.
	* don't depend on rlstdc.h

1999-10-01  Alexander V. Lukyanov  <>

	* cast ResValue to (const char *) to avoid ambiguity.

1999-09-30  Alexander V. Lukyanov  <>

	* remove _() from "%s: %s\n".

1999-09-30  Alexander V. Lukyanov  <>

	*, FileAccess.h,, ftpclass.h,
	  (CleanupAll, CleanupThis) new methods; use it in cmd_close.

1999-09-30  Alexander V. Lukyanov  <>

	*, log.h: extra info in debug output when it goes
	  to a file. (suggested by Caleb Epstein <>)

1999-09-30  Albert Chin-A-Young <>

	* module.c: fix // comment

1999-09-29  Alexander V. Lukyanov  <>

	* ResMgr.h: include time.h for time_t.

1999-09-27  Alexander V. Lukyanov  <>

	* strip leading slash in links to /~user.

1999-09-27  Alexander V. Lukyanov  <>

	* create rate_limit for STORE mode.
	* close fd 0; call setsid.

1999-09-20  Alexander V. Lukyanov  <>

	*, MirrorJob.h: use TimeInterval.
	*, misc.h: drop decode_delay.
	* (TimeInterval ctor) handle one more error case.

1999-09-20  Alexander V. Lukyanov  <>

	* define _XOPEN_SOURCE 500 for linux.

1999-09-19  Alexander V. Lukyanov  <>

	* don't print messages when lftp is not foreground
	* ResMgr.h: add TimeInterval(time_t) constructor.
	*, SleepJob.h: use TimeInterval; support `sleep forever'.
	*,, LsCache.h: use TimeInterval.

1999-09-19  Alexander V. Lukyanov  <>

	*, ResMgr.h: new resource type TimeInterval.
	*, Resolver.h: settings cache-{enable,expire,size}.
	* (set) print more meaningful message for invalid values.

1999-09-18  Alexander V. Lukyanov  <>

	*, SleepJob.h: add repeat functionality;
	  implement PrintStatus.
	* add repeat command.
	* module.c: another module alias.
	* remove unneeded poll call.
	* remove unneeded error checks.

1999-09-15  Alexander V. Lukyanov  <>

	* (SessionJob::PrintStatus) check if session!=0.

1999-09-14  Alexander V. Lukyanov  <>

	* check if ipv6 is supported at runtime.
	* better message for system errors, correctly adjust
	* (NextPeer) fix off-by-one error; set try_time.
	*, move reconnect delay before Resolve, to avoid
	  double lookup in case of relookup_always; handle error of socket
	  creation better, skip address and report error verbosely.

1999-09-14  Alexander V. Lukyanov  <>

	* unsuspend session; few corrections in size handling;
	  don't try to use size of pipe.

1999-09-12  Alexander V. Lukyanov  <>

	* when adding first RateLimit, reset global pool.

1999-09-12  Alexander V. Lukyanov  <>

	*, NetAccess.h: implement RateLimit class; use it.
	*, use RateLimit.
	* new resources net:limit-total-rate
	  and net:limit-total-max.
	* create Log::global.

1999-09-10  Alexander V. Lukyanov  <>

	* recognize host names in the form proto,hostname and
	  lookup address in specified protocol family, e.g. inet6,
	  (Note: this won't work over proxies)
	* add xfer:clobber setting; don't overwrite files if it is

1999-09-08  Alexander V. Lukyanov  <>

	*, NetAccess.h: drop first_lookup.
	*, MirrorJob.h: don't get just appeared files, check
	  that size/date has not changed before overwrite/append;
	  build local file set before remote one.
	*, FileSet.h: (SubstractNotIn) new method; optimize
	  other Substract* methods; make FindByName const.

1999-08-31  Alexander V. Lukyanov  <>

	* add missing \n
	* fix previous change not to close data_sock.
	* call SayConnectingTo.
	*, complete.h: move remote_completion here.
	*, CmdExec.h,,, log.h: make debug output
	  clear/redraw the prompt.

1999-08-26  Alexander V. Lukyanov  <>

	*, FileAccess.h,, Http.h,,,, ftpclass.h: split off NetAccess class;
	  use Resolver cache; add Resolve method; move rate limiter to
	*, Resolver.h: implement cache.
	*, LsCache.h: allow adding from Buffer class.
	* use new LsCache::Add method varianth; handle symlinks.
	* remove debug level restriction.
	*, buffer.h: make GetSaved const.
	* add NetAccess.
	*, NetAccess.h: new files.
	*, SMTask.h,,, CmdExec.h:
	  Reconfig now takes arg.

1999-08-26  Alexander V. Lukyanov  <>

	* improve completion of file names with wildcards.

1999-08-25  Alexander V. Lukyanov  <>

	* handle 225 and 226 replies in TransferCheck.
	* use cwd in error message if file=="".

1999-08-24  Alexander V. Lukyanov  <>

	* reset try_time on certain failures: greeting, user,
	  pass, to sleep proper time before reconnect.

1999-08-21  Alexander V. Lukyanov  <>

	* improve support for squid's ftp listings;
	  support symlinks.
	* target; use -nostdlib to reduce size,
	  this works unless there are static constructors.
	*, move at and sleep commands to
	  to allow modularity.
	* modconfig.h: add MODULE_CMD_SLEEP.

1999-08-20  Alexander V. Lukyanov  <>

	* module.c: provide module aliases.
	* revert last change.

1999-08-20  Alexander V. Lukyanov  <>

	*, Http.h, implement hftp protocol (ftp over http);
	  parse squid's ftp listings.
	* load proto-http when hftp is requested.
	* hftp resources added; set ftp:proxy if environment
	  variable ftp_proxy points to ftp proxy.

1999-08-18  Alexander V. Lukyanov  <>

	* buffer.h, allow saving data; (Save, GetSaved) new methods.
	*, HttpDir.h,, FtpDirList.h: save data in
	  Buffer ubuf, members (upos, from_cache) become obsolete.

1999-08-18  Jim Pick <>

	* LsCache.h,, FtpDirList.h: don't try to cache
	  anything if cache is off; don't cache too large objects (by lav)

1999-08-18  Alexander V. Lukyanov  <>

	* local completion after redirection.

1999-08-17  Alexander V. Lukyanov  <>

	*, Job.h: provide useful default ShowRunStatus method.
	  (e.g. helps `at' command)

1999-08-16  Alexander V. Lukyanov  <>

	*, ArgV.h: make several methods const.
	*, CmdExec.h, chain all CmdExec's; allow
	  several queues to exist; (FindQueue) new method; (FeedArgV) new
	  method; synchronize cwd's of queue and main CmdExec.

1999-08-16  Alexander V. Lukyanov  <>

	* (cmd_queue) print usage; set exit_code.

1999-08-12  Alexander V. Lukyanov  <>

	* CmdExec.h,, implement simple command queue;
	  (CmdExec::queue) new static member; (queue) new command.

1999-08-12  Alexander V. Lukyanov  <>

	* paranoia check.

1999-08-11  Alexander V. Lukyanov  <>

	* try to catch "Too many open files" server error;
	  check for the substring in file name too; remove old code for
	  switching to sync mode.

1999-08-11  Alexander V. Lukyanov  <>

	* lftpget: options -c -v -d.
	* change level of Connecting message.

1999-08-10  Alexander V. Lukyanov  <>

	* lftpget: turn off final rate printing.
	* don't reset time on unchanged files - it can be bad
	  if time-prec>0 and files have really changed but have the same size.
	  (reported by Oscar Y Takeshita)

1999-08-09  Alexander V. Lukyanov  <>

	* (HttpDirList::Do) use proper prefix for ls -f.

1999-08-08  Alexander V. Lukyanov  <>

	* only try to get info for href links.

1999-08-06  Alexander V. Lukyanov  <>

	* (cmd_get) decode %xx in default output file name.
	* XferJob.h: disable non_strict_urls (too complex).

1999-08-06  Alexander V. Lukyanov  <>

	*, ftpclass.h, add ftp:rest-list setting.
	* Job.h, more useful Job::AcceptSig.
	* improve AcceptSig.
	* assign jobno and cmdline to sub-CmdExec.

1999-08-05  Alexander V. Lukyanov  <>

	* modconfig.h: enable proto-ftp module for real.

1999-08-05  Alexander V. Lukyanov  <>

	* ArgV.h, (ArgV::CombineQuoted) new method.
	* fix `at' command to quote the command to execute.
	* use CombineQuoted.

1999-08-05  Alexander V. Lukyanov  <>

	* fix NT listing parser for the case of file name
	  with spaces.

1999-08-04  Alexander V. Lukyanov  <>

	*,,,,,, StatusLine.h,,,,, (StatusLine::Clear) new method;
	  use it everywhere, this avoids warning in new gcc.
	  Don't call Clear when Done(), it will be cleared anyway by upper
	  level job (it was race anyway).

1999-08-04  Alexander V. Lukyanov  <>

	* StatusLine.h,,,
	  (StatusLine::GetWidthDelayed) new method; use it to reduce number
	  of ioctl calls.

1999-08-04  Alexander V. Lukyanov  <>

	* (NoCache) open with proper mode.
	* handle another listing format.

1999-08-02  Alexander V. Lukyanov  <>

	*, declare res_search, vsnprintf if prototypes
	  are missing.

1999-07-29  Alexander V. Lukyanov  <>

	* ignore SIGXFSZ, want to get EFBIG.

1999-07-24  Alexander V. Lukyanov  <>

	* send `Accept: */*', it is needed for some http servers.

1999-07-20  Alexander V. Lukyanov  <>

	* make it compile on sunos551.
	*, FindJob.h: fix core dump on output stall;
	  add PrintStatus method.
	* lftpget: set verbose; unset at-exit; print usage.

1999-07-19  Alexander V. Lukyanov  <>

	* lftpget: new file.
	* install and distribute lftpget.

1999-07-16  Alexander V. Lukyanov  <>

	* fixed bug caused by cut-n-paste. This fixes spinning
	  when output stalls.
	* include netinet/in.h

1999-07-15  Alexander V. Lukyanov  <>

	* fix handling of HREF=/

1999-07-15  Alexander V. Lukyanov  <>

	* (glob) rewind args before calling original command.
	  (fixes coredump for mrm without args)

1999-07-12  Alexander V. Lukyanov  <>

	* don't search for SRV RR if address is numeric.

1999-07-11  Alexander V. Lukyanov  <>

	* lftp_rl.c: improve lftp_rl_clear.

1999-07-10  Alexander V. Lukyanov  <>

	* CmdExec.h: (CmdFeeder::clear) new method; (CmdExec::feeder_called)
	  new member.
	* set feeder_called; call feeder->clear in top_vfprintf.
	* (va_Report) print even in background.
	* redisplay before waiting for key.
	* (ReadlineFeeder::clear) implemented.
	* lftp_rl.c, lftp_rl.h: (lftp_rl_clear, lftp_rl_redisplay_maybe) new

1999-07-10  Alexander V. Lukyanov  <>

	* add nlist to list of commands taking remote file as
	  an argument.

1999-07-10  Alexander V. Lukyanov  <>

	*, Job.h: (GetConnectURL) virtual new method. (ListDoneJobs)
	  compare urls and print job url if different.

1999-07-10  Alexander V. Lukyanov  <>

	*, Job.h,, CmdExec.h: add top_vfprintf method;
	  modify vfprintf method to call top_vfprintf; in (class CmdExec)
	  redefine only top_vfprintf.

1999-07-06  Alexander V. Lukyanov  <>

	* support base href, refresh, take list of tags from wget;
	  show relative icon links in ls.
	* HttpDir.h: (class HttpDirList) add base_href member.
	* set home to / properly.

1999-07-05  Alexander V. Lukyanov  <>

	* cd and lcd without arguments go to home.
	* (LookupOne) fix to actually use argument.

1999-07-04  Alexander V. Lukyanov  <>

	* use new Resolver constructor; fix relookup
	  in case of net:relookup-always=true to lookup only after
	  trying last address.
	* finish SRV support; don't close stderr.
	* don't include netdb.h

1999-07-04  Alexander V. Lukyanov  <>

	*, Resolver.h: about to support SRV dns records.
	* use new Resolver constructor.

1999-07-04  Darren Stuart Embry <>

	* (GetFileURL) prepend colon before port name.

1999-06-29  Artur Frysiak <>

	* send User-Agnet header.

1999-06-26  Alexander V. Lukyanov  <>

	* organize a list of tag/link pairs; add AREA/HREF pair.

1999-06-26  Alexander V. Lukyanov  <>

	* FileAccess.h, Http.h: (FA::UseCache) new method.
	*, use it in rels.
	* send Cache-Control too.

1999-06-25  Alexander V. Lukyanov  <>

	*, Http.h, implement http:cache (pragma:no-cache)

1999-06-25  Alexander V. Lukyanov  <>

	* workaround for readline bug (reported by
	  <>); make few functions static.

1999-06-24  Alexander V. Lukyanov  <>

	* translate time units in one place; add optional verbose
	  eta reporting (from Ben Winslow <>).

1999-06-23  Alexander V. Lukyanov  <>

	* fix never-ending-transfer problem with servers
	  not supporintg ranges.

1999-06-22  Alexander V. Lukyanov  <>

	*, HttpDir.h: extract link target from <frame src=;
	  support `ls -f file.html' to extract links from file.

1999-06-19  Alexander V. Lukyanov  <>

	* more precise eta reporting.
	* prevent coredump on url.path==0.
	* add missing eprintf argument.

1999-06-18  Alexander V. Lukyanov  <>

	* add sleep help

1999-06-15  Alexander V. Lukyanov  <>

	* set http:proxy to getenv(http_proxy) initially.

1999-06-15  Alexander V. Lukyanov  <>

	*, ftpclass.h: remove prehistoric methods DataReady
	  and Block.

1999-06-08  Alexander V. Lukyanov  <>

	* fix for ftpcopy in passive mode.

1999-06-04  Alexander V. Lukyanov  <>

	* prevent coredump when short_desc!=0 && long_desc==0.

1999-06-02  Alexander V. Lukyanov  <>

	* module.c: handle case with RTLD_NOW undefined (SunOS4)
	*, correct format string.

1999-06-01  Alexander V. Lukyanov  <>

	* remove module before its re-creation.
	* ascii_ctype.h: add is_ascii_xdigit.
	*, Http.h: support for keep-alive getting info; support
	  for chunked transfer encoding.
	* always encode control characters.

1999-05-31  Alexander V. Lukyanov  <>

	*, Http.h: hook up HttpListInfo
	*, HttpDir.h: HttpListInfo implemented
	* fixed bug with setting precise file time.
	* untranslate some messages which indicate bug in app.
	* completion for new commands; add cache completion;
	  reset SIGINT count so that interrupted completion does not clear
	  line; call Open from GetInfoArray, Rename to avoid code duplication.
	*, PutJob.h: add entity_date member; set date after Open.
	* don't use Poll; set file time in StoreStatus.
	* CmdExec.h: extern bookmark_subcmd, cache_subcmd.
	* don't save line for every 213 response - this fixes
	  quote stat .
	*, CatJob.h: removed globbing support,
	  now glob cat can be used.
	* use string_alloca; add slash for new bookmarks.
	* fix workarounds to check original; move workaround
	  for "no /" bug here from

1999-05-26  Alexander V. Lukyanov  <>

	*, MirrorJob.h: do chmod on remote files.
	* (glob, chmod) new commands.
	*, rmJob.h: use TreatFileJob as base class.
	*, TreatFileJob.h,, ChmodJob.h: new files.
	*, ArgV.h: (insarg) new method.
	* support chmod.
	* support chmod; tune overloaded server recognition.
	* FileAccess.h, CHANGE_MODE new open mode;
	  (Chmod) new method.
	* quote cmd line before adding it to history.
	*, CmdExec.h: (BUILTIN_GLOB) new builtin;
	  (needs_quotation) new method.
	* (Status) implemented.
	* (ShowRunStatus) implemented.
	* implement FtpDirList::Status; check ubuf==0 before usage.
	* handle chmod.
	* keyvalue.h: make Pair protected
	*, ResMgr.h: outline ResDecl constructor.
	* clean const usage; optimize.
	* use true/false for bool.

1999-05-22  Alexander V. Lukyanov  <>

	* make better function pointer casts.
	*, ResMgr.h,, keyvalue.h: few fixes for other
	*, FileSet.h: initialize FileInfo::data; outline few funcs.
	*, xmalloc.h: outline xfree to simplify debugging.
	* (dir_file) handle file==0.
	*, HttpDir.h: remove prefix if present; workaround apache
	* use NO_PATH.
	*, FileAccess.h: (GetFileURL) new method; rename NO_CWD
	  to NO_PATH.
	*, url.h: add proto_required option; don't assign const char *
	  to char *.

1999-05-20  Alexander V. Lukyanov  <>

	*, HttpDir.h: new files.
	* use const; readline wrappers.
	* include complete.h, lftp_rl.h
	* complete.h: renamed from lftp.h
	* lftp_rl.c, lftp_rl.h: new files.
	* use const; use FinderJob.
	*, FindJob.h: rename class FindJob to FinderJob, to avoid
	  conflict with Job::FindJob method.
	*, ArgV.h: don't call getopt, because its prototype is
	* remove unused variable
	* use const; satisfy non-gcc compilers in case(file->...)
	* don't include readline.
	* close session in ~FileInputBuffer.
	*, Http.h: fix LONG_LIST mode to restart transfer;
	  change SendRequest to accept file name; add Connect method;
	  add MakeDirList, MakeGlob methods.
	* CmdExec.h, use const char * where needed; remove
	  CmdExec:: inside CmdExec definition.
	*, ResMgr.h: make ResMgr::Resource public; add
	  ResourceCompare method.
	*, keyvalue.h: make KeyValueDB::Pair public; add
	  KeyValueDB::KeyCompare method.
	*,,, XferJob.h,,
	  pgetJob.h,, FileFeeder.h,, CatJob.h,,
	  use const char * where needed.
	* avoid gcc'ism.
	* Filter.h: kill a warning
	*, FileSet.h: (Add) merge info if already added.
	  (SortByName) mew method; few consts; add associated data.
	*, SignalHook.h: declare signal_handler type.
	*, use alloca instead of variable size
	*, ftpclass.h: fix sscanf to work with int's instead of
	  members of struct tm; add const to several pointers; declare
	  friend struct expected_response properly for other compilers.
	  Fix bug with wrong address family for data socket in rare cases.
	  Add more error messages; assertions.
	* LsCache.h: declare friend class ExpireHelper properly for other
	*, misc.h: add static for inline basename_ptr, use const as
	  main version.
	* no need for ctype.h
	* ascii_ctype.h: new file
	* use ArgV for LsJob
	*, LsJob.h: use ArgV
	*, FtpDirList.h: use ArgV
	* FileAccess.h: pass ArgV to MakeDirList; add const; kill a warning.

1999-05-19  Albert Chin-A-Young <>

	* ftp-opie.c, module.c, getdate.y: include xalloca.h to allow
	  compilation by Sun C compiler.

1999-05-17  Alexander V. Lukyanov  <>

	*, XferJob.h: (CanShowRate) new function; optimize timeout.
	* encode some unsafe chars in url
	*, url.h: take extra argument for unsafe chars.
	*,, use the changed Glob::Status.
	* change Status to include session status.
	* change timeout to fatal-timeout
	*, FtpDirList.h: new files
	*, LsCache.h: add const
	*, LsJob.h: support for DirList.
	* unset hostname if resolution cannot be done.
	*, ftpclass.h: add FtpDirList support, unset hostname
	  if resolution cannot be done.
	* buffer.h, allow for FileInputBuffer to read data from
	  a session; support suspend/resume.
	* SignalHook.h: fix for some compilers/systems
	* add net: variables; removed duplicates in ftp: and http:;
	  make ftp:anon-pass visible.
	* check for socket errors every time;
	  query net:variable too.
	* FileAccess.h: (DirList::DirList) create the buffer.
	* ResMgr.h: (ResValue::is_nil) new method.

1999-04-30  Alexander V. Lukyanov  <>

	*, Http.h: complete support for put (untested).
	* move DefaultAnonPass to
	* add set -a, set -d support; last_bg is default for wait.
	* use ResMgr::ClassInit
	* support SOCKS, use ResMgr::ClassInit
	* initialize default for ftp:anon-user;
	  add ResMgr::ClassInit.
	* use total_xferred in CurrETA.
	*, XferJob.h: add offset argument for CurrETA
	* add last_bg member
	* create empty FileSet to avoid NULL access; handle L
	  in file permissions.
	* run session after Chdir to avoid 'idle' status
	* FileAccess.h: add virtual class DirList
	*, ResMgr.h: support for printing with defaults/only defaults
	* ArgV.h: add getindex method

1999-04-22  Alexander V. Lukyanov  <>

	* don't go uplevel if there are cd/list errors.
	*, FtpListInfo.h: change format-specific
	  parsers to process single line at a time; copy line
	  before processing.
	* remove poll on input file.
	*, XferJob.h, remove obsolete slow status
	  line update.
	*, CmdExec.h: remove obsolete ls-in-completion
	*, StatusLine.h: implement delayed update.
	* move res_save_passwords to top level.

1999-04-15  Alexander V. Lukyanov  <>

	* use INET6 instead of AF_INET6
	* check if LocalAccess has been created
	* add missing \n at end of input file
	* add mv to list of remote commands
	* add lpwd command
	* more verbose status
	* more verbose status; remove unused has_wildcards
	* more verbose status
	* FileAccess.h: (ArrayInfoPercentDone) new method
	* more verbose status
	* more verbose status

1999-03-29  Alexander V. Lukyanov  <>

	* fix handling of long lists
	*, FileAccess.h: add Glob::add_force
	* handle cd errors, deal with documents with no length
	* (Do) fix stupid bug introduced by Glob change

1999-03-27  Alexander V. Lukyanov  <>

	*, Http.h: add Location handling, get whole header on errors,
	  misc improvements.
	*, Resolver.h: use FileInputBuffer to be reliable.
	*, use NoGlob as last resort.
	* do glob always (because FtpGlob is now smart)
	* support MakeGlob==0
	* FileAccess.h, implemented Glob::HasWildcards,
	  Glob::UnquoteWildcards, new class NoGlob.
	* correct status lines and rate calculations.
	*, FtpGlob.h: fnmatch inside of add(), don't access ftp
	  server if there are no wildcards.
	* list parsing restructured; added NT list parser
	* (Glob) do chdir to cwd before glob.

1999-03-17  Alexander V. Lukyanov  <>

	* support modules
	*, Http.h: many changes, still unfinished.
	*, FtpGlob.h: new files
	*, LocalAccess.h: implement LocalGlob; more verbose
	  error messages.
	* don't call obsolete ListInfo::ClassInit
	*, ftpclass.h: always copy resolved address
	  to connected session along with socket; implement SameSiteAs,
	*, LsCache.h: implemented partial cache flush.
	*, FileAccess.h: add class FileAccessOperation;
	  move ListInfo here; add class Glob; move class Protocol here;
	  call LsCache flushing routines on certain operations;
	  add SameSiteAs method (almost th same sa SameLocationAs,
	  but don't check cwd).
	* use Glob
	* use FileAccess::New, don't include obsolete headers
	*, don't include rglob.h, localize
	*, FtpListInfo.h: use FtpGlob
	*, CatJob.h,, mgetJob.h,, mrmJob.h:
	  use new class Glob.
	* MirrorJob.h, don't include ListInfo.h;
	  use FileAccess::New; explicitly use UseCache(false).
	* FindJob.h: don't include ListInfo.h
	* ListInfo.h,,, ProtoList.h: removed; contents
	  moved to FileAccess
	* use only 40 chars for file name; print eta in jobs output
	* use FileAccess::New; add list address to version output;
	  add --help and --version to `help lftp' output.
	*, SignalHook.h: don't use static arrays; add ClassInit
	* use FileAccess::New

1999-02-23  Alexander V. Lukyanov  <>

	* Basic auth, new resource usage
	* modular proto-ftp support
	* use Protocol::Register
	* module support, new resource usage
	* module command, --no-umask in help for mirror,
	  use single quotes in 'bookmark edit' shell command.
	* DummyProto.h: add Reconfig
	*, ResMgr.h: renamed Query to SimpleQuery, add complex
	  Query method.
	*, Resolver.h: add ClassInit
	*, resource.h: new files
	*, FileAccess.h: move traffic shaper here, add Query and
	  Reconfig methods; add closure member.
	* ProtoList.h: add static Register member
	*, ListInfo.h: add ClassInit
	* don't use StateToError
	*, MirrorJob.h: implement --no-umask, apply umask
	  by default.
	* use op instead of args->a0().

1999-02-04  Alexander V. Lukyanov  <>

	*,, CmdExec.h: module support
	* module support
	* don't use cmd_table directly
	*, misc.h: (decode_delay) moved here
	* don't create LocalListInfo directly, module support
	* module support
	* module support
	* call SetTime and SetDate
	*, module.h, modconfig.h: new files
	*, Http.h: new files
	*, buffer.h: (FileInputBuffer) new class; (Errno) new method;
	  (EventTime) new method.
	*, FileAccess.h: (default_cwd) new member; stuff from
	  ftpclass; (SetTime, SetDate) new methods.
	* ftpclass.h, move traffic shaper and other common with
	  Http things to FileAccess.
	* SMTask.h: add Timeout and Block methods for convenience
	* don't run suspended tasks.

1999-01-23  Alexander V. Lukyanov  <>

	* fix Report condition
	* change format for EPSV response
	* set flags on pipe (O_NONBLOCK, FD_CLOEXEC); check
	  for non-fatal errors.

1999-01-21  Alexander V. Lukyanov  <>

	*, Resolver.h: use string portname
	* FileAccess.h, use string portname; implement base
	*,,, use symbolic port
	  in Connect.
	* ftpclass.h, use string portname and proxy_port;
	  print "connecting..." messages for ipv6; set peer_curr properly to
	  less than peer_num; parse EPSV response correctly - search for '('.
	* always report to non-tty
	*, CmdExec.h: add cmd:verbose, useful for scripts.
	* set peer_curr properly <peer_num.

1999-01-19  Alexander V. Lukyanov  <>

	* merge pollfd's with the same descriptor (workaround for
	  problems in some systems' poll)
	* support for multiple addresses and ipv6; fixed bugs in
	  CloseRespQueue; don't check port in passive mode.
	* ftpclass.h: support for multiple addresses and ipv6
	*, Resolver.h: support for multiple addresses, multiple
	  address families, dns:order variable.
	* check for multiple colons (ipv6 numeric)

1999-01-08  Alexander V. Lukyanov  <>

	* check for mirror -N
	*, CmdExec.h: add BUILTIN_NONE, reset builtin to it.
	* (do_open) (do_cd) don't verify host or cwd if background
	*, ftpclass.h: (FindLastCWD) new method;
	  remove target_cwd; (CloseRespQueue) handle CHECK_{USER,PASS}*
	  correctly, don't ignore them; fix waiting for cwd to
	  proper directory.

1998-12-22  Alexander V. Lukyanov  <>

	* correct bytes count when position changes (negative
	  count is obviously incorrect)
	* plural.c: use absolute value
	* fix to exit if initial open fails (that from lftp call)
	* cmd:fail-exit to exit if a command fails.

1998-12-19  Alexander V. Lukyanov  <>

	* (path_match) treat empty pattern specially
	*, CmdExec.h: (AtExit) new function, (cmd:at-exit) new
	* call top_exec->AtExit() and wait before exit
	* (do_lftp) feed "||exit" only if have fed command;
	  (do_bookmark) don't add empty bookmark or bookmark with empty

1998-12-17  Alexander V. Lukyanov  <>

	* clear waiting properly

1998-12-04  Alexander V. Lukyanov  <>

	* use socklen_t instead of ADDRLEN_TYPE; correct Buffered.
	* use socklen_t instead of ADDRLEN_TYPE.
	* (Offset) implemented, used; (CountBytes) use Buffered
	  and session_buffered to correct transfer rate.
	* XferJob.h: (Offset) new method, (session_buffered) new member
	* ftpclass.h, (Buffered) new method
	* FileAccess.h: (Buffered) new virtual method

1998-12-03  Alexander V. Lukyanov  <>

	* add i18n for K/s etc.
	* (open) create new session if current protocol is dummy
	* (GetConnectURL) return empty url for dummy protocol
	* (main) use DummyProto instead of Ftp.
	*, DummyProto.h: (new files) dummy protocol, will help
	  in future to support dynamic loadable protocols.
	* xmalloc.h: don't rely on memcpy return value
	* when follow_links don't remove dangling links

1998-11-27  Alexander V. Lukyanov  <>

	* remove extra \n
	* (Reconfig) call ResetBytes to reset accumulated count
	* call UpdateNow in ReconfigAll

1998-11-25  Alexander V. Lukyanov  <>

	* add i18n for eta
	*,, rglob.h, Job.h, LsCache.h,,,, rmJob.h,, QuoteJob.h,,
	  LsJob.h,,,,,,,,,, remove
	  dependency on ftpclass.h, use FileAccess.h instead; use FA.
	* support i18n; use FA
	* FileAccess.h: add FA shortcut to FileAccess
	* cast void* to char*
	*,, use const char *, avoid error with
	  new egcs
	*, ftpclass.h: use enum for various response checks;
	  clear resp queue on Close; associate path with CWD response handle.
	* use &CmdExec::do_... to compile with recent egcs
	* set exit_code to zero when cd or open is stopped.

1998-11-22  Alexander V. Lukyanov  <>

	* CmdExec.h: add ~CmdFeeder destructor, this fixes problem with
	  feeders not destroyed, open fd's in particular.

1998-11-20  Alexander V. Lukyanov  <>

	*, ftpclass.h: don't try to handle anon users specially,
	  it did not work anyway; one has to use anon-user and anon-pass
	* ignore default; handle comments
	* include sys/time.h
	* add `command' command; replace args->a0() with op in
	  several places.
	*, CmdExec.h: (BUILTIN_EXEC_RESTART) new builtin.
	*, ArgV.h: (delarg) new method

1998-11-18  Alexander V. Lukyanov  <>

	* add start_time_ms, end_time_ms; use now and now_ms.
	* check Poll return value for -1
	* updated help for rm, mirror.
	*, ftpclass.h: ftp:limit-rate, ftp:limit-max new settings;
	  traffic limit implemented (BytesAllowed, BytesUsed, BytesReset);
	  allow passing data peer address to data_address_ok for verification
	  of PASV response; scan PASV response for address (as recommended in
	  RFC1123; thanks to Michael Handler <> for patch);
	  verify data peer address in passive mode; check return value of Poll
	  for -1; (AbortedClose, ControlClose) new functions; rearrange code
	  in Read; clear lookup_done in SetProxy only if proxy changed.
	* log SIGTERM when in background.
	* use static now.
	*, SMTask.h: add static members: now, now_ms; (UpdateNow)
	  new static method; call UpdateNow from Schedule.
	* don't call Disconnect from CheckHangup; return -1
	  from Poll if hangup.

1998-11-12  Alexander V. Lukyanov  <>

	* set time only on directories; get sets it on files;
	  don't print report messages if there is parent_mirror, this
	  fixes multiple messages in nested directories after fg.
	*, FileSet.h: add option to set time for only directories.
	*, ftpclass.h: add aborted_data_sock member; don't
	  close data connection right after sending ABOR, wait for answer;
	  send only first byte before ABOR as OOB to workaround recv()
	  braindamage; clear lookup_done in Reconfig since proxy could change.
	* set verify_path, verify_host; handle ^Z in open/cd
	* use verify_path, verify_host
	* CmdExec.h: (verify_path, verify_host) new members

1998-11-05  Alexander V. Lukyanov  <>

	*,,,,,,,,,, buffer.h,
	  xmalloc.h, use xstring.h instead of string.h to improve
	* (Fg, Bg) protect against infinite recursion

1998-10-31  Alexander V. Lukyanov  <>

	* (Format) implemented, added sl_cleared flag.
	* enable log when verbose
	* add state check in ACCEPTING_STATE, fixes rare coredump.
	  socket-maxseg experimental setting for TCP_MAXSEG. Print errors from
	* add assert(fd>=0).

1998-10-27  Alexander V. Lukyanov  <>

	* (do_mirror) fix include/exclude setting, add -L option
	* fix follow_symlinks handling, clear MODE, SIZE, etc.
	* check for 4xx response for REST
	* ftpclass.h: comment fix
	* fix setting dst_size (was -2, need 0)

1998-10-23  Alexander V. Lukyanov  <>

	* fix exclude/include, implement follow_symlinks
	* (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
	* fix logging after tty disconnect, clear tty flag
	* implement follow_symlinks semantics
	*, ListInfo.h: add follow_symlinks flag
	*, MirrorJob.h: add RETR_SYMLINKS flag
	* getdate.y, getdate.h: new files (replace parsetime*)

1998-10-13  Alexander V. Lukyanov  <>

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

1998-10-07  Alexander V. Lukyanov  <>

	* 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  <>

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

1998-09-15  Alexander V. Lukyanov  <>

	*, 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.h: outline next() and curr().
	*, ArgV.h: make getcurr return 0 after getnext returns 0
	* add rm -r support
	*, misc.h: (xgetcwd) new function
	*, CmdExec.h: don't execute commands if chdir failed;
	  (FeedQuoted, unquote) new methods
	* disable timeout for ftpcopy, remove NoWait.
	* SleepJob.h, save and restore cwd, set parent of exec
	* include config.h

1998-09-08  Alexander V. Lukyanov  <>

	* (MakePrompt) add \@ handling
	* limit debug level to 0-9 range
	* (Format) add \0 for empty case

1998-09-06  Alexander V. Lukyanov  <>

	* don't ignore NO_FILE
	*, 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.h: add 'verify' to Chdir
	*, FindJob.h: support depth-first search, don't verify cd's

1998-09-05  Alexander V. Lukyanov  <>

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

1998-08-31  Alexander V. Lukyanov  <>

	* 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  <>

	* fix setting op when args->count()==1
	* ArgV.h: add GetV method
	*, SignalHook.h: move to posix sigaction; add old_saved[]
	*, ProcWait.h: add SIGCHLD_handler, chain, destructor
	*, log.h: new files (log facility)
	* use SIGCHLD_handler, use Log
	*, SleepJob.h: new files (sleep and at commands)
	* parsetime.y, parsetime-lex.l, parsetime-i.h: new files (from at-3.1.7)
	*, FtpCopy.h: new files (copy between ftp servers)
	* call Bg() and Fg() for waiting
	* avoid "total xxx" in completion
	* use int for base_dir_len
	*, FileAccess.h: use new log facility
	* use new log facility
	*, CmdExec.h: get rid of old debugging, Bg, Fg;
	  add new commands
	* use new log facility; add new commands
	*, XferJob.h, add eta reporting
	  (original by
	*, 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  <>

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

1998-08-17  Alexander V. Lukyanov  <>

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

1998-08-17  Alexander V. Lukyanov  <>

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

Fri Aug 14 19:00:54 MSD 1998  Alexander V. Lukyanov <>

	* CmdExec.h, (suspend) new command
	* 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'.
	* fix warning about old_type; improve
	  error reporting; ignore extra 2xx responses for buggy servers
	* fg.h, (cont) new function; (Fg) cont the process even
	  if we don't own the terminal.
	*, SysCmdJob.h: (AcceptSig) implemented; (~) call
	  Bg() to release terminal properly, kill process in destructor
	* (Kill) check if process still running

Mon Aug  3 19:18:51 MSD 1998  Alexander V. Lukyanov <>

	* (mirror) increase verbose instead of setting to 1
	* (PASV_Catch) fix for broken servers returning 0,0,0,0

Wed Jul 29 17:35:15 MSD 1998  Alexander V. Lukyanov <>

	* (~CmdExec) clear debug_shell if destroying it
	* CmdExec.h: make debug_shell public
	* (do_debug) don't set debug_shell
	* (main) set debug_shell to top_exec
	Note: debug subsystem must be rewritten
	* remote completion by default for mirror
	*, 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 <>

	* verify address before port

Thu Jul 23 00:54:11 MSD 1998  Alexander V. Lukyanov <>

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

Mon Jul 20 21:04:06 MSD 1998  Alexander V. Lukyanov <>

	*, Filter.h: new broken() method
	* 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 <>

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

Mon Jun 22 16:31:09 MSD 1998  Alexander V. Lukyanov <>

	*, 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 <>

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

Sun Jun 14 14:28:09 MSD 1998  Alexander V. Lukyanov <>

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

Thu Jun 11 16:55:57 MSD 1998  Alexander V. Lukyanov <>

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

Tue Jun  9 19:25:50 MSD 1998  Alexander V. Lukyanov <>

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

Fri Jun  5 17:24:04 MSD 1998  Alexander V. Lukyanov <>

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

Fri Jun  5 15:19:31 MSD 1998

	* (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 <>

	* (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 <>

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

Wed Jun  3 17:18:04 MSD 1998  Alexander V. Lukyanov <>

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

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

Mon May 25 23:42:14 MSD 1998  Alexander V. Lukyanov <>

	* close session in destructor (fixes coredump)

Mon May 25 23:24:09 MSD 1998  Alexander V. Lukyanov <>

	* use status_line even if !interactive

Mon May 25 15:52:08 MSD 1998  Alexander V. Lukyanov <>

	* FileAccess.h, add WITH_PASSWORD flag to GetConnectURL

Sun May 24 23:30:00 MSD 1998  Alexander V. Lukyanov <>

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

Sun May 24 23:00:16 MSD 1998  Alexander V. Lukyanov <>

	* 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 <>

	* pass newer_than to child mirror jobs
	* (SubtractOlderThan) subtract only plain files

Thu May 21 22:56:22 MSD 1998  Alexander V. Lukyanov <>

	* (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 <>

	* FileAccess.h: make Login() virtual
	* (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 <>

	* fix for new buffer allocation

Tue May 19 16:53:36 MSD 1998  Alexander V. Lukyanov <>

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

Fri May 15 19:25:49 MSD 1998  Alexander V. Lukyanov <>
	* don't use errno in GetPass() error message

Fri May 15 18:17:31 MSD 1998  Alexander V. Lukyanov <>

	* 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 <>

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

Fri May 15 16:49:35 MSD 1998  Alexander V. Lukyanov <>
	* (ReconfigAll): add NoWait

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

Tue May 12 22:24:38 MSD 1998  Alexander V. Lukyanov <>

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

Tue May 12 21:45:02 MSD 1998  Alexander V. Lukyanov <>

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

Tue May 12 19:19:54 MSD 1998  Alexander V. Lukyanov <>

	*, ftpclass.h: tune memory use

Tue May 12 19:00:06 MSD 1998  Alexander V. Lukyanov <>

	*, xmalloc.h: support for debug

Tue May 12 16:31:07 MSD 1998  Alexander V. Lukyanov <>

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

Mon May 11 01:08:37 MSD 1998  Alexander V. Lukyanov <>

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

Sat May  9 01:47:41 MSD 1998  Alexander V. Lukyanov <>

	* 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 <>

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

Thu May  7 21:55:17 MSD 1998  Alexander V. Lukyanov <>

	* fix alias_field calculation

Wed May  6 21:13:41 MSD 1998  Alexander V. Lukyanov <>

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

Wed May  6 20:38:55 MSD 1998  Alexander V. Lukyanov <>

	* (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 <>

	* (bookmark): add `bookmark edit' command