Overview
| Comment: | Fix seek operations with native zlib support. Without this fix creating images from gif files inside a starkit would frequently fail with an error message of: couldn't read GIF header from file XXX. | 
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive | 
| Timelines: | family | ancestors | descendants | both | trunk | 
| Files: | files | file ages | folders | 
| SHA1: | 95d3afb4e9045cd508af705836450ccf | 
| User & Date: | sbron on 2011-07-16 13:59:52 | 
| Other Links: | manifest | tags | 
Context
| 2011-07-17 | ||
| 19:56 | Add a test for the zip seek bugfix (95d3afb4e9) check-in: 0ebd562749 user: sbron tags: trunk | |
| 2011-07-16 | ||
| 13:59 | Fix seek operations with native zlib support. Without this fix creating images from gif files inside a starkit would frequently fail with an error message of: couldn't read GIF header from file XXX. check-in: 95d3afb4e9 user: sbron tags: trunk | |
| 2011-07-07 | ||
| 17:21 | Updated to not switch back to dynamic linking if static linking has been requested check-in: cb7271fcc4 user: rkeene tags: trunk | |
Changes
Modified tclvfs/patches/8.6/tclvfs-20080503-supportnativezlib.diff from [92fbee3f6e] to [7076e29d82].
| 
 | 
 | | | | > > > > > > > > > > > > > > > | | 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-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 +122,26 @@
 		return $pos
 	    }
 	    read {
+                if {$::vfs::zlibPkg} {
+                   set zputcmd fill
+                   set zgetcmd drain
+                } else {
 | 
| ︙ | ︙ | |||
| 43 44 45 46 47 48 49 | 
-		    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
 | | | 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 +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]
 | 
| ︙ | ︙ |