2008-10-15 Steve Huntley <stephen.huntley@alum.mit.edu>
authorSteve Huntley <stephen.huntley@alum.mit.edu>
Fri, 16 Oct 2009 05:40:13 +0000 (05:40 +0000)
committerSteve Huntley <stephen.huntley@alum.mit.edu>
Fri, 16 Oct 2009 05:40:13 +0000 (05:40 +0000)
vfs::template package update ver. 1.5.3:

* templatevfs.tcl: Incorporated AK's fix below.
* collatevfs.tcl: ensured binary file contents got written
correctly, and ensured that not only file contents but
also file attributes were updated to all write targets.

ChangeLog
library/template/collatevfs.tcl
library/template/templatevfs.tcl

index 7192e3edbfe7e5573f05a7007efaa365e91bf2c7..7ffceaf562603a7db8fbfb2490e8adb3351491bd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-10-15  Steve Huntley  <stephen.huntley@alum.mit.edu>
+
+       vfs::template package update ver. 1.5.3:
+
+       * templatevfs.tcl: Incorporated AK's fix below.
+       * collatevfs.tcl: ensured binary file contents got written
+       correctly, and ensured that not only file contents but 
+       also file attributes were updated to all write targets.
+
 2009-07-06  Andreas Kupries  <andreask@activestate.com>
 
        * library/template/templatevfs.tcl (memchan): Fix result for
index 45616bb4e374771dfee339f547882025ae6b7209..770f11e5c2d21322ce1e741eb7721f6770ddfdb9 100644 (file)
@@ -5,7 +5,7 @@ collatevfs.tcl --
 
 Written by Stephen Huntley (stephen.huntley@alum.mit.edu)
 License: Tcl license
-Version 1.5
+Version 1.5.3
 
 A collate/broadcast/collect/catchup virtual filesystem.  Requires the template vfs in templatevfs.tcl.
 
@@ -78,7 +78,6 @@ mount -read C:/install/package/images FTP:/pub/releases/package/images -collect
 }
 
 package require vfs::template 1.5
-package provide vfs::template::collate 1.5.2
 
 namespace eval ::vfs::template::collate {
 
@@ -93,7 +92,10 @@ foreach templateProc [namespace eval ::vfs::template {info procs}] {
 proc close_ {channel} {
        upvar root root relative relative
        foreach file [lrange [WriteFile $root $relative close] 1 end] {
+               if ![WriteTest $file] {continue}
+               file mkdir [file dirname $file]
                set f [open $file w]
+               fconfigure $f -translation binary
                seek $channel 0
                fcopy $channel $f
                close $f
@@ -102,17 +104,18 @@ proc close_ {channel} {
 }
 proc file_atime {file time} {
        upvar root root relative relative
-       set file [AcquireFile $root $relative]
-       file atime $file $time
+       foreach file [WriteFile $root $relative open] {
+               file atime $file $time
+       }
 }
 proc file_mtime {file time} {
        upvar root root relative relative
-       set file [AcquireFile $root $relative]
-       file mtime $file $time
+       foreach file [WriteFile $root $relative open] {
+               file mtime $file $time
+       }
 }
 proc file_attributes {file {attribute {}} args} {
        upvar root root relative relative
-       set file [AcquireFile $root $relative]
        if {($relative == {}) && ([string map {-read 1 -write 1 -collect 1 -catchup 1} $attribute] == 1)} {
                set attribute [string range $attribute 1 end]
                if {$args == {}} {eval return \$::vfs::template::collate::${attribute}(\$root)}
@@ -120,6 +123,13 @@ proc file_attributes {file {attribute {}} args} {
                set ::vfs::template::collate::catchup [file isdirectory [lindex $::vfs::template::collate::catchupstore 0]]
                return
        }
+       if {$args != {}} {
+               foreach file [WriteFile $root $relative open] {
+                       file attributes $file $attribute $args
+               }
+               return
+       }
+       set file [AcquireFile $root $relative]
        set returnValue [eval file attributes \$file $attribute $args]
        if {($relative == {}) && ($attribute == {})} {set returnValue [concat $returnValue [list -read $::vfs::template::collate::read($root) -write $::vfs::template::collate::write($root) -collect $::vfs::template::collate::collect($root) -catchup $::vfs::template::collate::catchupstore($root)]]}
        return $returnValue
@@ -353,5 +363,9 @@ proc WriteFile {root relative action} {
        return $returnValue
 }
 
+proc WriteTest {args} {
+       return 1
+}
+
 }
 # end namespace ::vfs::template::collate
index ccd04c58c7fb79f377bfe256b5e65c5e5dae14fd..d0aee6410c19fe257c15b82e96da13d9b745fba5 100644 (file)
@@ -550,7 +550,7 @@ proc memchan {args} {
                set chan [uplevel 1 ::memchan $args]
                return $chan
        } else {
-           return [eval [linsert $args 0 ::vfs::memchan]]
+               return [eval [linsert $args 0 ::vfs::memchan]]
        }
 }