2010-12-30 Steve Huntley <stephen.huntley@alum.mit.edu>
authorSteve Huntley <stephen.huntley@alum.mit.edu>
Fri, 31 Dec 2010 04:56:44 +0000 (04:56 +0000)
committerSteve Huntley <stephen.huntley@alum.mit.edu>
Fri, 31 Dec 2010 04:56:44 +0000 (04:56 +0000)
* library/zipvfs.tcl: Wojciech Kocjan contributed tweaks to my latest
"Frankenstein" patch, which I incorporated.

ChangeLog
library/zipvfs.tcl

index 33c27733df79554ed2144fed28b900268d030089..f2957a4b46a1d96cc7930349f40599e9bddbd099 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2010-12-30  Steve Huntley  <stephen.huntley@alum.mit.edu>
+
+       * library/zipvfs.tcl: Wojciech Kocjan contributed tweaks to my latest
+       "Frankenstein" patch, which I incorporated.
+
 2010-12-30  Steve Huntley  <stephen.huntley@alum.mit.edu>
 
        * pkgIndex.tcl.in, vfs.tcl: Switched "package require Tcl 8.4" statement
index ac0e0bb4d61a72995490b8b04bd06221f1071621..65b6a39598fd352dcd6b375ac0133e4d2b124374 100644 (file)
@@ -154,7 +154,7 @@ proc vfs::zip::open {zipfd name mode permissions} {
                set nfd [vfs::memchan]
                fconfigure $nfd -translation binary
 
-               zip::Data $zipfd sb data
+               set data [zip::Data $zipfd sb 0]
 
                puts -nonewline $nfd $data
 
@@ -454,13 +454,14 @@ proc zip::EndOfArchive {fd arr} {
        }
     }
 
-    set hdr [string range $hdr [expr $pos + 4] [expr $pos + 21]]
+     set hdrlen [string length $hdr]
+     set hdr [string range $hdr [expr $pos + 4] [expr $pos + 21]]
  
-     set seekstart [expr {wide([tell $fd]) + $pos - 512}]
-     if {$seekstart < 0} {
-         set seekstart 0
+     set pos [expr {wide([tell $fd]) + $pos - $hdrlen}]
+     if {$pos < 0} {
+         set pos 0
      }
-     set pos [expr {$seekstart + $pos}]
 
     binary scan $hdr ssssiis \
        cb(ndisk) cb(cdisk) \