slackbuilds_ponce/development/tclvfs/patches/06-zipfix.patch

42 lines
1.1 KiB
Diff
Raw Normal View History

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