Version 67 of tclvfs

Updated 2004-10-29 03:20:31 by CMCc

TclVFS is the extension that exposes the core level Virtual File System (VFS) layer, now part of Tcl/Tk (8.4a5 is required, 8.4.1.1 or newer for best possible operation, using Tcl 8.4.3 or 8.4.4 would be a good idea.). The current version of the tclvfs extension is 1.3.0


Home page on SourceForge:

        http://sourceforge.net/projects/tclvfs/

This package is part of the ActiveTcl Batteries Included distribution.


VFS links


Actual VFSs

Possible VFSs


See also VFS. The C extension is now very robust and well tested. But, distributed with tclvfs are a large number of virtual filesystem implementations (in pure Tcl). Many of these still need a lot of work (but since it is pure Tcl, lots of people should be able to help). Current tcl implementations include: zip, mk4, namespace, tar, ftp, http, webdav, tk filesystems.

        package ifneeded vfs::ftp 1.0 
        package ifneeded vfs::http 0.5
        package ifneeded vfs::mk4 1.6 
        package ifneeded vfs::ns 0.5 
        package ifneeded vfs::tar 0.9
        package ifneeded vfs::test 1.0
        package ifneeded vfs::urltype 1.0
        package ifneeded vfs::webdav 0.1
        package ifneeded vfs::zip 1.0 
        package ifneeded vfs::tk 0.5

tclvfs relies on Memchan or some equivalent to 'open' (or 'load' or 'source') any file.

Contributions of binary versions of tclvfs to be placed on sourceforge much appreciated.


SEH Robust and well-tested perhaps, but contains a deadly crashing bug when attempting to close a file opened for write. See [L1 ]

There are some idiosyncrasies in writing a tclvfs, save some time by checking tclvfs gotchas


Readonly - writable - translucent ... see vfs filesystem configuration


LV When using a Starkit, one accesses files within the starkit via TclVFS. Please list here some of the differences one will see when accessing files via TclVFS rather than accessing them via a normal file system.

For instance, file ownership and permissions are not supported within many (most? all?) the VFS modules.

A user reports on comp.lang.tcl that when accessing files via VFS on Windows, the file names are case sensitive.

Vince adds that each filesystem module can choose whether to be case-sensitive or not. Most are, I believe, implemented in a case sensitive fashion. I'd be interested to know how, say vfs::ftp works when the relevant ftp site is running on a windows server (not case sensitive)...


Please help develop the tclvfs package further!

lv Question: can anyone provide an example of how one could use the vfs package to poke around a gzipped tar file?

Also, can tcl and tclvfs together be used to poke around a starkit?


tclvfs now contains the first vague attempts at a 'webdav' implementation in Tcl.

"... a remark by Jean Claude, Steve Landers and perhaps someone else discussing the fact that shared libraries had to be written out to a real file system before many OSes would dynamically load the library." -- Indeed that is true, and Tcl's core provides transparent support for a copy-to-temp-then-load behaviour as default. It would be nice to be able to load directly, and this is discussed here: loading from memory.

Matthias Hoffmann: The above mentioned automatic copy-to-temp-then-load-feature isn't working always with tclkit-win32(-sh).exe: if launched from within the command.com-Shell (not cmd.exe!), the temp-folder is defined as c:/winnt/temp, which could not be accessed (permission denied) with user privilegs (of course, the temp-folder has to be user specific in a multi user environment). But maybe this phenomen is unique to our server-farm...


Desired features:

  • sftp (secureftp) is not supported, and would be a nice addition.
  • bzip2 is not supported, and would be a nice addition, it offers great compression ratios

In a recent web search I noticed some misinformation about 'load foo.dll' not working inside a .zip, and how it can't possibly work and is impossible and .... Tclvfs is designed to allow this to work just fine, and will transparently copy the .dll to the native temporary directory and load it there (and arrange for it to be deleted on exit). If any of this doesn't work it is a bug and should be reported!


[ Category Package | Category VFS ]