Posted to tcl by patthoyts at Tue Mar 10 13:00:19 GMT 2009view raw
- Avoid using the core 8.6 zlib code for vfs::zstream until we can seek it.
- (used by mk4vfs)
- Index: library/vfslib.tcl
- ===================================================================
- RCS file: /cvsroot/tclvfs/tclvfs/library/vfslib.tcl,v
- retrieving revision 1.10
- diff -u -r1.10 vfslib.tcl
- --- library/vfslib.tcl 22 Jan 2009 15:10:10 -0000 1.10
- +++ library/vfslib.tcl 19 Feb 2009 20:05:52 -0000
- @@ -34,7 +34,7 @@
- # Also provide an abstract zlib streaming channel transform using the core
- # zlib command (8.6) or the tclkit zlib package.
- #
- -if {[package vsatisfies [package provide Tcl] 8.6]} {
- +if {[package vsatisfies [package provide Tcl] 8.9]} {
- proc vfs::zstream {mode ifd clen ilen} {
- return [zlib push $mode $ifd]
- @@ -251,32 +251,24 @@
- variable ::vfs::zseq 0 ;# used to generate temp zstream cmd names
- - # vfs::zstream --
- - # wrapper to manage a stacked zlib channel. If we have the core
- - # zlib implementation then make use of that. Otherwise we can use
- - # rechan and the tclkit zlib package to do the same thing.
- + # vfs::zstream --
- + #
- + # Create a read-only seekable compressed channel using rechan and
- + # the streaming mode of zlib.
- #
- # mode - compress or decompress
- # ifd - input channel (should be binary)
- # clen - size of compressed data in bytes
- # ilen - size of decompressed data in bytes
- - # Result:
- - # A stacked channel then handles compression for us.
- #
- - if {[package vsatisfies [package provide Tcl] 8.6]} {
- - proc vfs::zstream {mode ifd clen ilen} {
- - return [zlib push $mode $ifd]
- - }
- - } else {
- - proc vfs::zstream {mode ifd clen ilen} {
- - set cname _zstream_[incr ::vfs::zseq]
- - zlib s$mode $cname
- - fconfigure $ifd -translation binary
- - set cmd [list ::vfs::zstream_handler $cname $ifd $clen $ilen s$mode]
- - set fd [rechan $cmd 2]
- - set ::vfs::_zstream_pos($fd) 0
- - return $fd
- - }
- + proc vfs::zstream {mode ifd clen ilen} {
- + set cname _zstream_[incr ::vfs::zseq]
- + zlib s$mode $cname
- + fconfigure $ifd -translation binary
- + set cmd [list ::vfs::zstream_handler $cname $ifd $clen $ilen s$mode]
- + set fd [rechan $cmd 2]
- + set ::vfs::_zstream_pos($fd) 0
- + return $fd
- }
- }