ftp::List returns a different result when called with "" and ".". I modified ftpvfs.tcl:
proc vfs::ftp::cachedList {fd dir} {
variable cacheList
variable cacheListingsFor
if { ![string compare $dir .] } {
set dir {}
}
# Caches response to prevent going back to the ftp server
# for common use cases: foreach {f} [glob *] { file stat $f s }
if...
When [glob]bing a filesystem, it is the
[matchindirectory] command of a tclvfs
driver that does the work.
The matchindirectory commands of
ftpvfs, mk4vfs, tarvfs, webdavvfs, and
zipvfs all build up their return lists by
[lappend]ing the return of a
[file join $actualpath ].
If begins with ~ then the
behavior of [file join] will result in the
$actualpath pref.