2009-02-02  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	* dir.c (ftpfs_refresh_node): Use st_mtim.tv_sec members instead
	of st_mtime.  Also compare st_mtim.tv_nsec members.

2007-11-13  Thomas Schwinge  <tschwinge@gnu.org>

	* netfs.c (netfs_attempt_utimes): Adapt to ``struct stat'' changes.

2006-07-11  Samuel Thibault  <samuel.thibault@ens-lyon.org>

	* node.c (ftpfs_create_node): Check the result from hurd_ihash_add().
	Add E to the hash table instead of NEW.

2005-06-14  Hugues Larrive  <hugues.larrive@gmail.com>

	* ftpfs.c (parse_startup_opt): User names may contain a @, so take
	the last @ of FTPFS_REMOTE_FS.
	* host.c (split_server_name): User names may contain a @, so take
	the last @ of P.

2003-08-17  Marcus Brinkmann  <marcus@gnu.org>

	* ftpfs.h: Include <hurd/ihash.h>.
	(struct ftpfs): Change type of INODE_MAPPINGS to struct
	hurd_ihash.
	(struct ftpfs_dir_entry): Change type of INODE_LOCP to
	hurd_ihash_locp_t.
	* node.c (ftpfs_create_node): Call hurd_ihash_add, not ihash_add.
	(netfs_node_norefs): Call hurd_ihash_locp_remove, not
	ihash_locp_remove.
	* fs.c: Include <stddef.h>.
	(ftpfs_create): Call hurd_ihash_init, not hurd_ihash_create.
	Call hurd_ihash_destroy on error.

2002-10-18  Moritz Schulte  <moritz@duesseldorf.ccc.de>

        * dir.c (ftpfs_dir_lookup): Initialize NES.entry.

2002-05-13  Roland McGrath  <roland@frob.com>

	* dir.c (ftpfs_refresh_node): Set NODE->nn_translated appropriately.

2002-05-13  Marcus Brinkmann  <marcus@gnu.org>

	* ftpfs.c (netfs_server_name, netfs_server_version): New
	variables.

2002-05-08  Roland McGrath  <roland@frob.com>

	* conn.c (ftpfs_get_ftp_conn): Cast to uintptr_t before void *.
	* ftpfs.c (cntl_debug): Vice versa.

2002-04-13  Moritz Schulte  <moritz@chaosdorf.de>

	* ftpfs.c: Include <sys/stat.h>
	(main): Stat the underlying node and initialize the root node's
	stat information.

	* dir.c (ftpfs_refresh_node): If refreshing the root node, simply
	use the old stat information.

2002-03-11  Roland McGrath  <roland@frob.com>

	* ftpfs.c (parse_startup_opt): If given one argument with no :,
	use "/" as the remote root.

2001-12-29  Roland McGrath  <roland@frob.com>

	* netfs.c (netfs_attempt_statfs): Implement this,
	returning all zeros except for f_type and f_fsid.

2001-12-22  Roland McGrath  <roland@frob.com>

	* fs.c (ftpfs_create): Move braces around to avoid warning.

2001-02-12  Marcus Brinkmann  <marcus@gnu.org>

	* ftpfs.c: Include <version.h>.  Add global variable
	ARGP_PROGRAM_VERSION.  Add period to DOC.

2001-01-07  Marcus Brinkmann  <marcus@gnu.org>

	* dir.c (ftpfs_dir_create): Fix last change (calloc invocation).

2000-12-21  Marcus Brinkmann  <marcus@gnu.org>

	* dir.c (ftpfs_dir_create): New macro INIT_HTABLE_LEN to
	specify initialize htable_len. New variable htable,
	allocate memory to it with calloc before acquiring a node
	reference. If this fails, return any allocated memory and
	return with ENOMEM. Set new->htable_len to INIT_HTABLE_LEN
	and new->htable to htable. Don't bzero htable anymore, as
	we use calloc.

2000-07-26  Mark Kettenis  <kettenis@gnu.org>

	* Makefile (HURDLIBS): Reorder libs such that the threads lib
	comes before the ports lib.  This makes sure the functions in
	libthreads properly override the stubs in libports with the new
	dynamic linker semantics in glibc 2.2.

1999-07-10  Roland McGrath  <roland@baalperazim.frob.com>

	* netfs.c: Add #include <sys/mman.h> for munmap decl.
	* ccache.c: Likewise.

1999-07-09  Thomas Bushnell, BSG  <tb@mit.edu>

	* ccache.c (ccache_read): Use mmap instead of vm_allocate.
	* netfs.c (get_dirents): Likewise.

1999-07-03  Thomas Bushnell, BSG  <tb@mit.edu>

	* ccache.c (ccache_read): Use munmap instead of vm_deallocate.
	(ccache_invalidate): Likewise.
	(ccache_free): Likewise.
	* netfs.c (get_dirents): Likewise.

Sun Jan 31 18:33:55 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* netfs.c (netfs_attempt_utimes): Implement new possibility that
	ATIME or MTIME might be null.

1998-10-20  Roland McGrath  <roland@baalperazim.frob.com>

	* ftpfs.c (netfs_append_args): Add braces to silence gcc warning.
	* netfs.c (get_dirents): Likewise.
	(netfs_get_dirents): Likewise.
	* dir.c (ftpfs_refresh_node): Likewise.
	(ftpfs_dir_lookup): Likewise.

1998-09-04  Roland McGrath  <roland@baalperazim.frob.com>

	* ftpfs.c (netfs_append_args): Use %ld for time_t and %Zu for size_t.

1997-09-09  Miles Bader  <miles@gnu.ai.mit.edu>

	* ftpfs.c (parse_runtime_opt): New function.
	(runtime_argp): Use it.
	(netfs_append_args): Fix printed name of --node-cache-size.

	* dir.c (delete): Immediately free entries without nodes.

1997-08-29  Miles Bader  <miles@gnu.ai.mit.edu>

	* ftpfs.c (parse_startup_opt): Report an error if no filesystem is
	supplied.

1997-08-27  Miles Bader  <miles@gnu.ai.mit.edu>

	* ftpfs.c (parse_common_opt): Turn on debugging when there *aren't*
	any errors...

1997-08-22  Miles Bader  <miles@gnu.ai.mit.edu>

	* ftpfs.c (parse_common_opt): Release DEBUG_LOCK even if we get an
	error.

1997-08-19  Miles Bader  <miles@gnu.ai.mit.edu>

	* ftpfs.c (netfs_maxsymlinks): Initialize to 12.

	* ccache.c (ccache_read): Always update CC->max to something
	reasonable after a transfer.

1997-08-18  Miles Bader  <miles@gnu.ai.mit.edu>

	* ftpfs.c (debug_stream, debug_stream_name): New variables.
	(cntl_debug): Print to DEBUG_STREAM.
	(debug_lock): New variable (was local to cntl_debug).
	(parse_common_opt): Accept a FILE argument to --debug.
	(netfs_append_args): Print FILE argument to --debug.

1997-08-15  Miles Bader  <miles@gnu.ai.mit.edu>

	* netfs.c (netfs_attempt_mkfile): Unlock DIR.

	* dir.c (ftpfs_dir_null_lookup): New function.
	(ftpfs_dir_lookup): Handle "" lookups like ".".
	* ftpfs.h (ftpfs_dir_null_lookup): New declaration.
	* fs.c (ftpfs_create): Use ftpfs_dir_null_lookup instead of
	ftpfs_dir_lookup.

	* dir.c (ftpfs_dir_lookup): Set E's name timestamp for noent entries.
	(ftpfs_refresh_node): Record ENOENT entries.
	(refresh_dir): Add PRESERVE_ENTRY parameter; all callers changed.

1997-08-14  Miles Bader  <miles@gnu.ai.mit.edu>

	* ftpfs.c (ftpfs_ftp_hooks): Use ports_self_interrupted to check
	for interrupts.
	* ccache.c (ccache_read): Likewise.

1997-08-12  Miles Bader  <miles@gnu.ai.mit.edu>

	* ftpfs.c (main): Supply the FSID argument to ftpfs_create.
	* dir.c (update_entry): Set E->stat.st_fsid & st_fstype.
	(ftpfs_next_inode): Variable removed.
	* ftpfs.h (struct ftpfs ): Add FSID & NEXT_INODE fields.
	(ftpfs_create): Add FSID parameter.
	* fs.c (ftpfs_create): Add FSID parameter.  Initialize FSID &
	NEXT_INODE fields.

1997-08-11  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir.c (sweep): Don't delete entries that have the NOENT flag set.
	(refresh_dir): Ensure there are entries for `.' and `..'.

1997-08-09  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir.c (struct new_entry_state): DIR_PFX & DIR_PFX_LEN fields removed.
	(update_new_entry): Don't futz with NAME anymore.

	* ftpfs.c (ftpfs_hooks): Initialize INTERRUPT_CHECK Field.
	* ccache.c (ccache_read): Check for thread cancelation.

1997-08-08  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir.c (update_ordered_entry): Correctly handle a non-empty list.
	Only insert E in the ordered entry list if it's not already there.
	(refresh_dir): Don't clear the ordered entry list.
	Only reset bulk stat detection state if actually doing a bulk stat.
	Initialize DFS.prev_entry_next_p instead of DFS.prev_entry.
	(struct dir_fetch_state): Replace PREV_ENTRY by PREV_ENTRY_NEXT_P.
	(lookup): Grow the hash table when it gets large.
	(rehash): Zero the new hash table.

	* dir.c (path_append): Macro removed.
	(ftpfs_dir_lookup, ftpfs_refresh_node): Use ftp_conn_append_name
	instead of path_append.
	Don't set dir_pfx fields in RES anymore.
	(update_old_entry): Don't futz with NAME anymore.
	(struct refresh_entry_state): DIR_PFX & DIR_PFX_LEN fields removed.

1997-08-07  Miles Bader  <miles@gnu.ai.mit.edu>

	* ftpfs.c (DEFAULT_NAME_TIMEOUT): New macro.
	(DEFAULT_DIR_TIMEOUT, DEFAULT_DIRENT_TIMEOUT): Macros removed.
	(OPT_NAME_TIMEOUT): New macro.
	(OPT_DIR_TIMEOUT, OPT_DIRENT_TIMEOUT): Macros removed.
	(common_options, parse_common_opt, netfs_append_args, main):
	Replace --dir-timeout & --dirent-timeout by --name-timeout.
	Add --bulk-stat-period and --bulk-stat-threshold options.
	(netfs_append_args): Output --debug.

	* ftpfs.h (struct ftpfs_params): Remove dirent_timeout and
	dir_timeout fields.  Add name_timeout field.
	* dir.c (ftpfs_dir_lookup): dirent_timeout parameter renamed to
	name_timeout and dirent_timestamp field renamed to name_timestamp.
	(lookup): Initialize timestamps.
	* ftpfs.h (struct ftpfs_dir): timestamp renamed to stat_timestamp.
	Add name_timestamp field.
	(struct ftpfs_dir_entry): dirent_timestamp renamed to name_timestamp.

	* dir.c (update_ordered_name): New function.
	(refresh_dir): Use ftp_conn_get_names instead of huge wodge of code.
	Update new timestamps.

1997-08-06  Miles Bader  <miles@gnu.ai.mit.edu>

	* dir.c (update_entry): Allow ST to be zero.  Don't leak memory
	when updating symlink info.  Change return type to void.  Remove
	NO_LOCK parameter.
	(update_ordered_entry, update_old_entry, update_new_entry): Update
	calls to update_entry.
	(refresh_dir): Add UPDATE_STATS parameter, and only fetch names if
	it's zero.
	(ftpfs_dir_refresh, ftpfs_refresh_node, ftpfs_dir_lookup): Supply
	UPDATE_STATS argument to refresh_dir.

	* host.c (split_server_name): Enable password parsing.

	* dir.c (lookup): Initialize the NODE field.
