diff options
Diffstat (limited to 'development/tclvfs/patches/06-zipfix.patch')
-rw-r--r-- | development/tclvfs/patches/06-zipfix.patch | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/development/tclvfs/patches/06-zipfix.patch b/development/tclvfs/patches/06-zipfix.patch new file mode 100644 index 0000000000000..8ca6e1c1ae9ce --- /dev/null +++ b/development/tclvfs/patches/06-zipfix.patch @@ -0,0 +1,41 @@ +Patch by Victor Wagner (modified by Sergei Golovan for archives less +than 512 bytes long) fixes zip vfs to work with prepended executable. + +--- tclvfs-1.3-20080503.orig/library/zipvfs.tcl ++++ tclvfs-1.3-20080503/library/zipvfs.tcl +@@ -113,7 +113,8 @@ + set translation [fconfigure $nfd -translation] + fconfigure $nfd -translation binary + +- seek $zipfd $sb(ino) start ++ upvar #0 zip::$zipfd cb ++ seek $zipfd [expr {$sb(ino)+$cb(base)}] start + zip::Data $zipfd sb data + + puts -nonewline $nfd $data +@@ -370,6 +371,7 @@ + + seek $fd $n end + set hdr [read $fd $len] ++ set read [string length $hdr] + set pos [string first "PK\05\06" $hdr] + if {$pos == -1} { + if {$at >= $sz} { +@@ -384,7 +386,7 @@ + } + + set hdr [string range $hdr [expr $pos + 4] [expr $pos + 21]] +- set pos [expr [tell $fd] + $pos - 512] ++ set pos [expr [tell $fd] + $pos - $read] + + binary scan $hdr ssssiis \ + cb(ndisk) cb(cdisk) \ +@@ -445,7 +447,7 @@ + + zip::EndOfArchive $fd cb + +- seek $fd $cb(coff) start ++ seek $fd [expr {$cb(coff)+$cb(base)}] start + + set toc(_) 0; unset toc(_); #MakeArray + |