1997-08-22 Miles Bader * ftpfs.c (parse_common_opt): Release DEBUG_LOCK even if we get an error. 1997-08-19 Miles Bader * 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 * 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 * 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 * ftpfs.c (ftpfs_ftp_hooks): Use ports_self_interrupted to check for interrupts. * ccache.c (ccache_read): Likewise. 1997-08-12 Miles Bader * 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 * 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 * 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 * 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 * 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 * 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.