+2008-03-04 Steve Huntley <stephen.huntley@alum.mit.edu>
+
+ vfs::template package update ver. 1.5.2:
+
+ * templatevfs.tcl, deltavfs.tcl, versionvfs.tcl, quotavfs.tcl, fishvfs.tcl:
+ added workaround to memchan bug that shows up when tclkit used.
+ * pkgIndex.tcl, tclIndex: moved auto_index edits from former to latter
+ to conform to Tcl package management standard practice.
+
2008-02-26 Steve Huntley <stephen.huntley@alum.mit.edu>
vfs::template package update ver. 1.5.1:
Written by Stephen Huntley (stephen.huntley@alum.mit.edu)
License: Tcl license
-Version 1.5.1
+Version 1.5.2
A delta virtual filesystem. Requires the template vfs in templatevfs.tcl.
if ![file exists $fileName] {set newFile 1}
set fileName $file
set channelID [Reconstitute $fileName]
- if [string equal $channelID {}] {set channelID [open $fileName $mode] ; close $channelID ; set channelID [::vfs::memchan]}
+ if [string equal $channelID {}] {set channelID [open $fileName $mode] ; close $channelID ; set channelID [memchan]}
if $newFile {catch {file attributes $fileName -permissions $permissions}}
return $channelID
}
fconfigure $f -translation binary
set copyInstructions [read $f]
close $f
- set fileToConstruct [::vfs::memchan]
+ set fileToConstruct [memchan]
tpatch $targetFile $copyInstructions $fileToConstruct
catch {close $targetFile}
set targetFile $fileToConstruct
Written by Stephen Huntley (stephen.huntley@alum.mit.edu)
License: Tcl license
- Version 1.5
+ Version 1.5.2
Usage: mount ?-volume? \
?-cache <number>? \ # cache retention seconds
set command "ls -l '$file' | ( read a b c d x e\; echo \$x )"
if {([catch {set fileSize [Transport $root $command]}]) && ($mode == "r")} {error "couldn't open \"$file\": no such file or directory" "no such file or directory" {POSIX ENOENT {no such file or directory}}}
- set channelID [::vfs::memchan]
+ set channelID [memchan]
# file must exist after open procedure, ensure it:
set command "touch -a '$file'"
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.
-package ifneeded vfs::template 1.5.1 [list source [file join $dir templatevfs.tcl]]
+if {[lsearch -exact $::auto_path $dir] == -1} {
+ lappend ::auto_path $dir
+}
-set ::auto_index(::vfs::template::mount) [list package require vfs::template 1.5.1]
-set ::auto_index(::vfs::template::collate::mount) [list source [file join $dir collatevfs.tcl]]
-set ::auto_index(::vfs::template::quota::mount) [list source [file join $dir quotavfs.tcl]]
-set ::auto_index(::vfs::template::version::mount) [list source [file join $dir versionvfs.tcl]]
-set ::auto_index(::vfs::template::version::delta::mount) [list source [file join $dir deltavfs.tcl]]
-set ::auto_index(::vfs::template::chroot::mount) [list source [file join $dir chrootvfs.tcl]]
-set ::auto_index(::vfs::template::fish::mount) [list source [file join $dir fishvfs.tcl]]
-
-package ifneeded fileutil::globfind 1.5 [list source [file join $dir globfind.tcl]]
-package ifneeded trsync 1.0 [list source [file join $dir tdelta.tcl]]
+package ifneeded vfs::template 1.5.2 [list source [file join $dir templatevfs.tcl]]
Written by Stephen Huntley (stephen.huntley@alum.mit.edu)
License: Tcl license
-Version 1.5.1
+Version 1.5.2
A quota-enforcing virtual filesystem. Requires the template vfs in templatevfs.tcl.
set ::vfs::template::quota::quota($root) [array get quotaArray]
# Use memchan to store edits so edit can be rejected if it violates size quotas:
- set memchannel [vfs::memchan]
+ set memchannel [memchan]
fconfigure $channel -translation binary
fconfigure $memchannel -translation binary
seek $channel 0
--- /dev/null
+# Tcl autoload index file, version 2.0
+# This file is generated by the "auto_mkindex" command
+# and sourced to set up indexing information for one or
+# more commands. Typically each line is a command that
+# sets an element in the auto_index array, where the
+# element name is the name of a command and the value is
+# a script that loads the command.
+
+set auto_index(::vfs::template::mount) [list package require vfs::template 1.5.2]
+set auto_index(::vfs::template::collate::mount) [list source [file join $dir collatevfs.tcl]]
+set auto_index(::vfs::template::quota::mount) [list source [file join $dir quotavfs.tcl]]
+set auto_index(::vfs::template::version::mount) [list source [file join $dir versionvfs.tcl]]
+set auto_index(::vfs::template::version::delta::mount) [list source [file join $dir deltavfs.tcl]]
+set auto_index(::vfs::template::chroot::mount) [list source [file join $dir chrootvfs.tcl]]
+set auto_index(::vfs::template::fish::mount) [list source [file join $dir fishvfs.tcl]]
Written by Stephen Huntley (stephen.huntley@alum.mit.edu)
License: Tcl license
-Version 1.5.1
+Version 1.5.2
The template virtual filesystem is designed as a prototype on which to build new virtual
filesystems. Only a few simple, abstract procedures have to be overridden to produce a new
vfs::posixError load
unset vfs::posix(load)
-package provide vfs::template 1.5.1
+package provide vfs::template 1.5.2
namespace eval ::vfs::template {
eval [eval list ::tk::dialog::file::chooseDir:: $args]
}
+# workaround for bug in tclkit:
+proc memchan {args} {
+ if {$::tcl_platform(platform) == "windows"} {
+ package require Memchan
+ set chan [uplevel 1 ::memchan $args]
+ return $chan
+ } else {
+ return ::vfs::memchan $args
+ }
+}
+
}
# end namespace eval ::vfs::template
Written by Stephen Huntley (stephen.huntley@alum.mit.edu)
License: Tcl license
-Version 1.5.1
+Version 1.5.2
A versioning virtual filesystem. Requires the template vfs in templatevfs.tcl.
if {$fileName == [file join $path $relative]} {
set fileName [VFileNameEncode [file join $path $relative]]\;[VCreateTag $root]
close [open $fileName $mode]
- set channelID [vfs::memchan]
+ set channelID [memchan]
set ::vfs::template::version::filestats($channelID) "filename [list $fileName] hash [list $hash]"
return $channelID
}
fconfigure $f -translation binary
set hash [Hash $f]
close $f
- set filed [vfs::memchan]
+ set filed [memchan]
if {[string index $mode 0] == "a"} {
set f [open $fileName r]
fconfigure $f -translation binary