Hex Artifact Content

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.