1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
|
diff -uNr tclvfs-20080503.orig/library/vfslib.tcl tclvfs-20080503-2rsk/library/vfslib.tcl
--- tclvfs-20080503.orig/library/vfslib.tcl 2006-09-14 16:39:57.000000000 -0500
+++ tclvfs-20080503-2rsk/library/vfslib.tcl 2010-09-17 16:03:49.000000000 -0500
diff -uNr tclvfs-20080503.orig/library/vfslib.tcl tclvfs-20080503-3rsk/library/vfslib.tcl
--- tclvfs-20080503.orig/library/vfslib.tcl 2011-07-16 15:31:29.000000000 +0200
+++ tclvfs-20080503-3rsk/library/vfslib.tcl 2011-07-16 15:32:28.000000000 +0200
@@ -5,6 +5,14 @@
namespace eval ::vfs {
variable zseq 0 ;# used to generate temp zstream cmd names
+ variable zlibPkg 0 ;# Use Tcl 8.6+ zlib command, or zlib package
+}
+
+
+# Work with the Tcl 8.6+ built-in zlib command or the zlib package, if available
+catch {
+ package present zlib
+ set ::vfs::zlibPkg 1
}
# for backwards compatibility
@@ -94,8 +102,12 @@
}
# to seek back, rewind, i.e. start from scratch
if {$a1 < $pos} {
- rename $zcmd ""
- zlib $imode $zcmd
+ if {$::vfs::zlibPkg} {
+ rename $zcmd ""
+ zlib $imode $zcmd
+ } else {
+ $zcmd reset
+ }
seek $ifd 0
set pos 0
}
@@ -110,19 +118,26 @@
@@ -110,19 +122,26 @@
return $pos
}
read {
+ if {$::vfs::zlibPkg} {
+ set zputcmd fill
+ set zgetcmd drain
+ } else {
|
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
-
+
|
- set data [$zcmd drain $n]
+ $zcmd $zputcmd $data
+ }
+ set data [$zcmd $zgetcmd $n]
#puts stderr " read [string length $data]"
if {$data eq ""} break
append r $data
@@ -141,8 +156,12 @@
@@ -141,8 +160,12 @@
}
proc vfs::zstream {mode ifd clen ilen} {
- set cname _zstream_[incr ::vfs::zseq]
- zlib s$mode $cname
+ if {$::vfs::zlibPkg} {
+ set cname _zstream_[incr ::vfs::zseq]
|