Artifact 991c9c6c1f919e3d2b9bead5476df1661d848c1c:
0000: 42 69 6e 61 72 79 20 66 69 6c 65 73 20 74 63 6c Binary files tcl
0010: 76 66 73 2d 32 30 30 38 30 35 30 33 2e 6f 72 69 vfs-20080503.ori
0020: 67 2f 6c 69 62 72 61 72 79 2f 2e 76 66 73 6c 69 g/library/.vfsli
0030: 62 2e 74 63 6c 2e 73 77 70 20 61 6e 64 20 74 63 b.tcl.swp and tc
0040: 6c 76 66 73 2d 32 30 30 38 30 35 30 33 2d 32 72 lvfs-20080503-2r
0050: 73 6b 2f 6c 69 62 72 61 72 79 2f 2e 76 66 73 6c sk/library/.vfsl
0060: 69 62 2e 74 63 6c 2e 73 77 70 20 64 69 66 66 65 ib.tcl.swp diffe
0070: 72 0a 64 69 66 66 20 2d 75 4e 72 20 74 63 6c 76 r.diff -uNr tclv
0080: 66 73 2d 32 30 30 38 30 35 30 33 2e 6f 72 69 67 fs-20080503.orig
0090: 2f 6c 69 62 72 61 72 79 2f 76 66 73 6c 69 62 2e /library/vfslib.
00a0: 74 63 6c 20 74 63 6c 76 66 73 2d 32 30 30 38 30 tcl tclvfs-20080
00b0: 35 30 33 2d 32 72 73 6b 2f 6c 69 62 72 61 72 79 503-2rsk/library
00c0: 2f 76 66 73 6c 69 62 2e 74 63 6c 0a 2d 2d 2d 20 /vfslib.tcl.---
00d0: 74 63 6c 76 66 73 2d 32 30 30 38 30 35 30 33 2e tclvfs-20080503.
00e0: 6f 72 69 67 2f 6c 69 62 72 61 72 79 2f 76 66 73 orig/library/vfs
00f0: 6c 69 62 2e 74 63 6c 09 32 30 30 36 2d 30 39 2d lib.tcl.2006-09-
0100: 31 34 20 31 36 3a 33 39 3a 35 37 2e 30 30 30 30 14 16:39:57.0000
0110: 30 30 30 30 30 20 2d 30 35 30 30 0a 2b 2b 2b 20 00000 -0500.+++
0120: 74 63 6c 76 66 73 2d 32 30 30 38 30 35 30 33 2d tclvfs-20080503-
0130: 32 72 73 6b 2f 6c 69 62 72 61 72 79 2f 76 66 73 2rsk/library/vfs
0140: 6c 69 62 2e 74 63 6c 09 32 30 31 30 2d 30 39 2d lib.tcl.2010-09-
0150: 31 37 20 31 36 3a 30 33 3a 34 39 2e 30 30 30 30 17 16:03:49.0000
0160: 30 30 30 30 30 20 2d 30 35 30 30 0a 40 40 20 2d 00000 -0500.@@ -
0170: 35 2c 36 20 2b 35 2c 31 34 20 40 40 0a 20 0a 20 5,6 +5,14 @@. .
0180: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a namespace eval :
0190: 3a 76 66 73 20 7b 0a 20 20 20 20 20 76 61 72 69 :vfs {. vari
01a0: 61 62 6c 65 20 7a 73 65 71 20 30 09 3b 23 20 75 able zseq 0.;# u
01b0: 73 65 64 20 74 6f 20 67 65 6e 65 72 61 74 65 20 sed to generate
01c0: 74 65 6d 70 20 7a 73 74 72 65 61 6d 20 63 6d 64 temp zstream cmd
01d0: 20 6e 61 6d 65 73 0a 2b 20 20 20 20 76 61 72 69 names.+ vari
01e0: 61 62 6c 65 20 7a 6c 69 62 50 6b 67 20 30 20 20 able zlibPkg 0
01f0: 3b 23 20 55 73 65 20 54 63 6c 20 38 2e 36 2b 20 ;# Use Tcl 8.6+
0200: 7a 6c 69 62 20 63 6f 6d 6d 61 6e 64 2c 20 6f 72 zlib command, or
0210: 20 7a 6c 69 62 20 70 61 63 6b 61 67 65 0a 2b 7d zlib package.+}
0220: 0a 2b 0a 2b 0a 2b 23 20 57 6f 72 6b 20 77 69 74 .+.+.+# Work wit
0230: 68 20 74 68 65 20 54 63 6c 20 38 2e 36 2b 20 62 h the Tcl 8.6+ b
0240: 75 69 6c 74 2d 69 6e 20 7a 6c 69 62 20 63 6f 6d uilt-in zlib com
0250: 6d 61 6e 64 20 6f 72 20 74 68 65 20 7a 6c 69 62 mand or the zlib
0260: 20 70 61 63 6b 61 67 65 2c 20 69 66 20 61 76 61 package, if ava
0270: 69 6c 61 62 6c 65 0a 2b 63 61 74 63 68 20 7b 0a ilable.+catch {.
0280: 2b 09 70 61 63 6b 61 67 65 20 70 72 65 73 65 6e +.package presen
0290: 74 20 7a 6c 69 62 0a 2b 09 73 65 74 20 3a 3a 76 t zlib.+.set ::v
02a0: 66 73 3a 3a 7a 6c 69 62 50 6b 67 20 31 0a 20 7d fs::zlibPkg 1. }
02b0: 0a 20 0a 20 23 20 66 6f 72 20 62 61 63 6b 77 61 . . # for backwa
02c0: 72 64 73 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 rds compatibilit
02d0: 79 0a 40 40 20 2d 31 31 30 2c 31 39 20 2b 31 31 y.@@ -110,19 +11
02e0: 38 2c 32 36 20 40 40 0a 20 09 09 72 65 74 75 72 8,26 @@. ..retur
02f0: 6e 20 24 70 6f 73 0a 20 09 20 20 20 20 7d 0a 20 n $pos. . }.
0300: 09 20 20 20 20 72 65 61 64 20 7b 0a 2b 20 20 20 . read {.+
0310: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if
0320: 7b 24 3a 3a 76 66 73 3a 3a 7a 6c 69 62 50 6b 67 {$::vfs::zlibPkg
0330: 7d 20 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 } {.+
0340: 20 20 20 20 20 20 20 20 73 65 74 20 7a 70 75 74 set zput
0350: 63 6d 64 20 66 69 6c 6c 0a 2b 20 20 20 20 20 20 cmd fill.+
0360: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 set
0370: 20 7a 67 65 74 63 6d 64 20 64 72 61 69 6e 0a 2b zgetcmd drain.+
0380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0390: 7d 20 65 6c 73 65 20 7b 0a 2b 20 20 20 20 20 20 } else {.+
03a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 set
03b0: 20 7a 70 75 74 63 6d 64 20 70 75 74 0a 2b 20 20 zputcmd put.+
03c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
03d0: 20 73 65 74 20 7a 67 65 74 63 6d 64 20 67 65 74 set zgetcmd get
03e0: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .+
03f0: 20 20 7d 0a 20 09 09 73 65 74 20 72 20 22 22 0a }. ..set r "".
0400: 20 09 09 73 65 74 20 6e 20 24 61 31 0a 20 09 09 ..set n $a1. ..
0410: 23 70 75 74 73 20 73 74 64 65 72 72 20 22 20 77 #puts stderr " w
0420: 61 6e 74 20 24 6e 20 7a 20 24 7a 63 6d 64 20 70 ant $n z $zcmd p
0430: 6f 73 20 24 70 6f 73 20 69 6c 65 6e 20 24 69 6c os $pos ilen $il
0440: 65 6e 22 0a 20 09 09 69 66 20 7b 24 6e 20 2b 20 en". ..if {$n +
0450: 24 70 6f 73 20 3e 20 24 69 6c 65 6e 7d 20 7b 20 $pos > $ilen} {
0460: 73 65 74 20 6e 20 5b 65 78 70 72 20 7b 24 69 6c set n [expr {$il
0470: 65 6e 20 2d 20 24 70 6f 73 7d 5d 20 7d 0a 20 09 en - $pos}] }. .
0480: 09 77 68 69 6c 65 20 7b 24 6e 20 3e 20 30 7d 20 .while {$n > 0}
0490: 7b 0a 2d 09 09 20 20 20 20 69 66 20 7b 5b 24 7a {.-.. if {[$z
04a0: 63 6d 64 20 66 69 6c 6c 5d 20 3d 3d 20 30 7d 20 cmd fill] == 0}
04b0: 7b 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 {.+
04c0: 20 20 20 20 20 20 20 69 66 20 7b 21 5b 65 6f 66 if {![eof
04d0: 20 24 69 66 64 5d 7d 20 7b 0a 20 09 09 20 20 20 $ifd]} {. ..
04e0: 20 20 20 20 20 73 65 74 20 63 20 5b 65 78 70 72 set c [expr
04f0: 20 7b 24 63 6c 65 6e 20 2d 20 5b 74 65 6c 6c 20 {$clen - [tell
0500: 24 69 66 64 5d 7d 5d 0a 20 09 09 09 69 66 20 7b $ifd]}]. ...if {
0510: 24 63 20 3e 20 34 30 39 36 7d 20 7b 20 73 65 74 $c > 4096} { set
0520: 20 63 20 34 30 39 36 20 7d 0a 20 09 09 09 73 65 c 4096 }. ...se
0530: 74 20 64 61 74 61 20 5b 72 65 61 64 20 24 69 66 t data [read $if
0540: 64 20 24 63 5d 0a 20 09 09 09 23 70 75 74 73 20 d $c]. ...#puts
0550: 22 66 69 6c 6c 65 64 20 24 63 20 5b 73 74 72 69 "filled $c [stri
0560: 6e 67 20 6c 65 6e 67 74 68 20 24 64 61 74 61 5d ng length $data]
0570: 22 0a 2d 09 09 09 24 7a 63 6d 64 20 66 69 6c 6c ".-...$zcmd fill
0580: 20 24 64 61 74 61 0a 2d 09 09 20 20 20 20 7d 0a $data.-.. }.
0590: 2d 09 09 20 20 20 20 73 65 74 20 64 61 74 61 20 -.. set data
05a0: 5b 24 7a 63 6d 64 20 64 72 61 69 6e 20 24 6e 5d [$zcmd drain $n]
05b0: 0a 2b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .+
05c0: 20 20 20 20 20 20 20 20 20 20 24 7a 63 6d 64 20 $zcmd
05d0: 24 7a 70 75 74 63 6d 64 20 24 64 61 74 61 0a 2b $zputcmd $data.+
05e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
05f0: 20 20 20 20 7d 0a 2b 09 09 20 20 20 20 73 65 74 }.+.. set
0600: 20 64 61 74 61 20 5b 24 7a 63 6d 64 20 24 7a 67 data [$zcmd $zg
0610: 65 74 63 6d 64 20 24 6e 5d 0a 20 09 09 20 20 20 etcmd $n]. ..
0620: 20 23 70 75 74 73 20 73 74 64 65 72 72 20 22 20 #puts stderr "
0630: 72 65 61 64 20 5b 73 74 72 69 6e 67 20 6c 65 6e read [string len
0640: 67 74 68 20 24 64 61 74 61 5d 22 0a 20 09 09 20 gth $data]". ..
0650: 20 20 20 69 66 20 7b 24 64 61 74 61 20 65 71 20 if {$data eq
0660: 22 22 7d 20 62 72 65 61 6b 0a 20 09 09 20 20 20 ""} break. ..
0670: 20 61 70 70 65 6e 64 20 72 20 24 64 61 74 61 0a append r $data.
0680: 40 40 20 2d 31 34 31 2c 38 20 2b 31 35 36 2c 31 @@ -141,8 +156,1
0690: 32 20 40 40 0a 20 20 20 20 20 7d 0a 20 0a 20 20 2 @@. }. .
06a0: 20 20 20 70 72 6f 63 20 76 66 73 3a 3a 7a 73 74 proc vfs::zst
06b0: 72 65 61 6d 20 7b 6d 6f 64 65 20 69 66 64 20 63 ream {mode ifd c
06c0: 6c 65 6e 20 69 6c 65 6e 7d 20 7b 0a 2d 09 73 65 len ilen} {.-.se
06d0: 74 20 63 6e 61 6d 65 20 5f 7a 73 74 72 65 61 6d t cname _zstream
06e0: 5f 5b 69 6e 63 72 20 3a 3a 76 66 73 3a 3a 7a 73 _[incr ::vfs::zs
06f0: 65 71 5d 0a 2d 09 7a 6c 69 62 20 73 24 6d 6f 64 eq].-.zlib s$mod
0700: 65 20 24 63 6e 61 6d 65 0a 2b 20 20 20 20 20 20 e $cname.+
0710: 20 20 69 66 20 7b 24 3a 3a 76 66 73 3a 3a 7a 6c if {$::vfs::zl
0720: 69 62 50 6b 67 7d 20 7b 0a 2b 20 20 20 20 20 20 ibPkg} {.+
0730: 20 20 20 20 20 20 73 65 74 20 63 6e 61 6d 65 20 set cname
0740: 5f 7a 73 74 72 65 61 6d 5f 5b 69 6e 63 72 20 3a _zstream_[incr :
0750: 3a 76 66 73 3a 3a 7a 73 65 71 5d 0a 2b 20 20 20 :vfs::zseq].+
0760: 20 20 20 20 20 20 20 20 20 7a 6c 69 62 20 73 24 zlib s$
0770: 6d 6f 64 65 20 24 63 6e 61 6d 65 0a 2b 20 20 20 mode $cname.+
0780: 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 2b 20 } else {.+
0790: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 63 set c
07a0: 6e 61 6d 65 20 5b 7a 6c 69 62 20 73 74 72 65 61 name [zlib strea
07b0: 6d 20 24 6d 6f 64 65 5d 0a 2b 20 20 20 20 20 20 m $mode].+
07c0: 20 20 7d 0a 20 09 73 65 74 20 63 6d 64 20 5b 6c }. .set cmd [l
07d0: 69 73 74 20 3a 3a 76 66 73 3a 3a 7a 73 74 72 65 ist ::vfs::zstre
07e0: 61 6d 5f 68 61 6e 64 6c 65 72 20 24 63 6e 61 6d am_handler $cnam
07f0: 65 20 24 69 66 64 20 24 63 6c 65 6e 20 24 69 6c e $ifd $clen $il
0800: 65 6e 20 73 24 6d 6f 64 65 5d 0a 20 09 73 65 74 en s$mode]. .set
0810: 20 66 64 20 5b 72 65 63 68 61 6e 20 24 63 6d 64 fd [rechan $cmd
0820: 20 32 5d 0a 20 09 73 65 74 20 3a 3a 76 66 73 3a 2]. .set ::vfs:
0830: 3a 5f 7a 73 74 72 65 61 6d 5f 70 6f 73 28 24 66 :_zstream_pos($f
0840: 64 29 20 30 0a d) 0.