switch to vfs::{crc,memchan,zip}
authorJean-Claude Wippler <jcw@equi4.com>
Thu, 25 Apr 2002 16:35:09 +0000 (16:35 +0000)
committerJean-Claude Wippler <jcw@equi4.com>
Thu, 25 Apr 2002 16:35:09 +0000 (16:35 +0000)
ChangeLog
library/mk4vfs.tcl
library/vfsUtils.tcl
library/zipvfs.tcl

index 79d6b129f2ca766e53b8249152926816a2b3e545..c40c468809b23b49728d41c0ab1e56ed4d0089af 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,8 @@
 2002-04-25  Jean-Claude Wippler <jcw@equi4.com>
-       * library/zipvfs.tcl: removed dependencies on pink, switched
-       to "zlib" command (now available in critlib and in tclkit)
+       * library/*vfs.tcl: switching to vfs::{crc,memchan,zip}
        * library/vfsUtils.tcl: fixed env to be global, added unset
-       so unmounting cleans up its list of mounted file systems
+       so unmounting cleans up its list of mounted file systems,
+       define Trf/memchan-based versions of vfs::{crc,memchan,zip}
        * library/{scripdoc.tcl,vfs.tcl}: removed, tclkit specific
        * library/pkgIndex.tcl: drop packages "scripdoc" and "vfslib"
 
index 6ce39c873abe8cb72760499e02361983757b0885..080015aa36a9ea49a1edcfdbd10255868033ea3e 100644 (file)
@@ -5,90 +5,6 @@
 # $Id$
 #
 
-# uses Pink for zip and md5 replacements, this avoids the dependency on Trf
-
-  package ifneeded Trf 1.3 {
-    package require pink
-    package provide Trf 1.3
-  
-    proc zip {flag value data} {
-      switch -glob -- "$flag $value" {
-       {-mode d*} { set mode decompress }
-       {-mode c*} { set mode compress }
-       default    { error "usage: zip -mode {compress|decompress} data" }
-      }
-      return [pink zlib $mode $data]
-    }
-  
-    proc crc {data} {
-      return [pink zlib crc32 $data]
-    }
-  
-    proc md5 {data} {
-      set cmd [pink md5]
-      $cmd update $data
-      set result [$cmd digest]
-      rename $cmd ""
-      return $result
-    }
-  }
-
-# this replacement is for memchan, used for simple (de)compression
-
-  package ifneeded Memchan 0.1 {
-    package require rechan
-    package provide Memchan 0.1
-  
-    proc _memchan_handler {cmd fd args} {
-      upvar #0 ::_memchan_buf($fd) _buf
-      upvar #0 ::_memchan_pos($fd) _pos
-      set arg1 [lindex $args 0]
-      
-      switch -- $cmd {
-       seek {
-         switch [lindex $args 1] {
-           1 - current { incr arg1 $_pos }
-           2 - end { incr arg1 [string length $_buf]}
-         }
-         return [set _pos $arg1]
-       }
-       read {
-         set r [string range $_buf $_pos [expr { $_pos + $arg1 - 1 }]]
-         incr _pos [string length $r]
-         return $r
-       }
-       write {
-         set n [string length $arg1]
-         if { $_pos >= [string length $_buf] } {
-           append _buf $arg1
-         } else { # the following doesn't work yet :(
-           set last [expr { $_pos + $n - 1 }]
-           set _buf [string replace $_buf $_pos $last $arg1]
-           error "mk4vfs: sorry no inline write yet"
-         }
-         incr _pos $n
-         return $n
-       }
-       close {
-         unset _buf _pos
-       }
-       default {
-         error "Bad call to memchan replacement handler: $cmd"
-       }
-      }
-    }
-    
-    proc memchan {} {
-      set fd [rechan _memchan_handler 6]
-      #fconfigure $fd -translation binary -encoding binary
-      
-      set ::_memchan_buf($fd) ""
-      set ::_memchan_pos($fd) 0
-      
-      return $fd
-    }
-  }
-    
 namespace eval vfs::mk4 {}
 
 proc vfs::mk4::Mount {what local args} {
@@ -465,7 +381,7 @@ proc mk4vfs::do_close {fd mode cur} {
         # this was a duplicate close!!! 12-10-2001
         #close $fd
         _memchan_handler close $fd
-        set cdata [zip -mode compress $data]
+        set cdata [vfs::zip -mode compress $data]
         set len [string length $data]
         set clen [string length $cdata]
         if { $clen < $len } {
index ee4a1ed4983764a66a56c647c13b8f66d9f30748..8b9af31f2758e011731f49dd9e9be1bbbc7bbac6 100644 (file)
@@ -15,10 +15,10 @@ proc ::vfs::memchan {args} {
     uplevel 1 ::memchan $args
 }
 
-# This can be overridden to use a different zlib implementation
-proc ::vfs::zlib {args} {
+# This can be overridden to use a different crc implementation
+proc ::vfs::crc {args} {
     ::package require Trf
-    uplevel 1 ::zlib $args
+    uplevel 1 ::crc $args
 }
 
 # This can be overridden to use a different zip implementation
index 830a592586fd49af23b1bdf122a18ca1b11aa01d..9533705a594ad94f20ee8d82cb5717578e0e8865 100644 (file)
@@ -299,7 +299,7 @@ proc zip::Data {fd arr {varPtr ""} {verify 0}} {
     }
     return
     if { $verify } {
-       set ncrc [vfs::zlib crc32 $data]
+       set ncrc [vfs::crc $data]
        if { $ncrc != $sb(crc) } {
            tclLog [format {%s: crc mismatch: expected 0x%x, got 0x%x} \
                    $sb(name) $sb(crc) $ncrc]