2008-03-04 Steve Huntley <stephen.huntley@alum.mit.edu>
authorSteve Huntley <stephen.huntley@alum.mit.edu>
Tue, 4 Mar 2008 21:38:05 +0000 (21:38 +0000)
committerSteve Huntley <stephen.huntley@alum.mit.edu>
Tue, 4 Mar 2008 21:38:05 +0000 (21:38 +0000)
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.

ChangeLog
library/template/deltavfs.tcl
library/template/fishvfs.tcl
library/template/pkgIndex.tcl
library/template/quotavfs.tcl
library/template/tclIndex [new file with mode: 0644]
library/template/templatevfs.tcl
library/template/versionvfs.tcl

index ee6424b7886c819cc99b3b3d9cec7199ba49ec92..a386be6cfa09ac3eea11dea6225db5fbe9c38a50 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+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:
index 499fcd0e9e84533742ddda14754cde26c49ed607..8d26ec0f459fbc895584d7fd94201f4867956a67 100644 (file)
@@ -5,7 +5,7 @@ deltavfs.tcl --
 
 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.
 
@@ -136,7 +136,7 @@ proc open_ {file mode} {
        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
 }
@@ -267,7 +267,7 @@ proc Reconstitute {fileName} {
                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
index 64d2a4ea06d51f6a9c0d6fef0493d47994c048a0..3ea8d27164723bc08d1c96b2669583741e127df6 100644 (file)
@@ -13,7 +13,7 @@ fishvfs.tcl --
  
        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
@@ -331,7 +331,7 @@ proc open_ {file mode} {
        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'"
index 4a44cf7b375532f3eddb35347729f29403b5a838..fed201e746e84b43f51a3c561ce16a3af4e93117 100644 (file)
@@ -8,16 +8,9 @@
 # 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]]
 
index e258b90944edac0b8f3075e58d3ff2d292473611..5ef9c99f97775e4c0e6d56a27e84a2093a66d3a8 100644 (file)
@@ -5,7 +5,7 @@ quotavfs.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.
 
@@ -202,7 +202,7 @@ if $newFile {
        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
diff --git a/library/template/tclIndex b/library/template/tclIndex
new file mode 100644 (file)
index 0000000..443c5c7
--- /dev/null
@@ -0,0 +1,15 @@
+# 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]]
index 386df88513921040cecf3660ef387baf150fe670..8c99227640ff2500ab1bc1a21985f338df113eb0 100644 (file)
@@ -7,7 +7,7 @@ templatevfs.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
@@ -54,7 +54,7 @@ set vfs::posix(load) x
 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 {
 
@@ -543,6 +543,17 @@ proc tk_chooseDirectory {args} {
        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
 
index aff036c95a394e24cacec1b6f50ad0d032bbdcd4..7add5620b34b384010ce49e62c72e461d7bf8350 100644 (file)
@@ -5,7 +5,7 @@ versionvfs.tcl --
 
 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.
 
@@ -298,7 +298,7 @@ proc open_ {file mode} {
        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
        }
@@ -309,7 +309,7 @@ proc open_ {file mode} {
        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