aboutsummaryrefslogtreecommitdiff
path: root/development/tclvfs/patches/06-zipfix.patch
diff options
context:
space:
mode:
authorZbigniew Baniewski <zb@ispid.com.pl>2011-01-09 01:41:17 -0200
committerRobby Workman <rworkman@slackbuilds.org>2011-01-10 15:04:24 -0600
commit8f2a74049e62a940513263708d1e74c38a0c7589 (patch)
tree60febd336d80124dba181b88bff2bf00bab107c0 /development/tclvfs/patches/06-zipfix.patch
parent82ad914bfc534949325cbb7fa3fe362ceac4c312 (diff)
development/tclvfs: Added (virtial filesystem extension for Tcl)
Signed-off-by: Niels Horn <niels.horn@slackbuilds.org>
Diffstat (limited to 'development/tclvfs/patches/06-zipfix.patch')
-rw-r--r--development/tclvfs/patches/06-zipfix.patch41
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
+