summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/zipfs.321
-rw-r--r--generic/tclBootVfs.h24
-rw-r--r--generic/tclZipfs.c6
-rw-r--r--generic/tclZipfs.h48
-rw-r--r--generic/zcrypt.h131
-rw-r--r--tools/mkVfs.tcl198
-rw-r--r--tools/mkzip.tcl5
-rw-r--r--unix/Makefile.in4
-rw-r--r--win/Makefile.in6
-rw-r--r--win/makefile.vc4
10 files changed, 113 insertions, 334 deletions
diff --git a/doc/zipfs.3 b/doc/zipfs.3
index 6846f58..a3b3da8 100644
--- a/doc/zipfs.3
+++ b/doc/zipfs.3
@@ -1,24 +1,18 @@
'\"
'\" Copyright (c) 2015 Jan Nijtmans <jan.nijtmans@gmail.com>
'\" Copyright (c) 2015 Christian Werner <chw@ch-werner.de>
+'\" Copyright (c) 2017 Sean Woods <yoda@etoyoc.com>
'\"
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-'\"
+'\"
.TH Tclzipfs 3 8.7 Tcl "Tcl Library Procedures"
.so man.macros
.BS
.SH NAME
-Tclzipfs_Init, Tclzipfs_SafeInit, Tclzipfs_Mount, Tclzipfs_Unmount \- handle ZIP files as VFS
+Tclzipfs_Mount, Tclzipfs_Unmount \- handle ZIP files as VFS
.SH SYNOPSIS
.nf
-\fB#include <tclZipfs.h>\fR
-.sp
-int
-\fBTclzipfs_Init\fR(\fIinterp\fR)
-.sp
-int
-\fBTclzipfs_SafeInit\fR(\fIinterp\fR)
.sp
int
\fBTclzipfs_Mount\fR(\fIinterp, zipname, mntpt, passwd\fR)
@@ -38,15 +32,6 @@ Name of a mount point.
An (optional) password.
.BE
.SH DESCRIPTION
-\fBTclzipfs_Init()\fR performs one-time initialization of the file system
-and registers it process wide. Additionally, a package named \fIzipfs\fR
-is provided and supplemental Tcl commands are created in the given
-interpreter \fIinterp\fR.
-.PP
-\fBTclzipfs_SafeInit()\fR is the version of \fBTclzipfs_Init()\fR for
-safe interpreters. It exposes only uncritical supplemental Tcl commands
-in the given interpreter \fIinterp\fR.
-.PP
\fBTclzipfs_Mount()\fR mount the ZIP archive \fIzipname\fR on the mount
point given in \fImntpt\fR using the optional ZIP password \fIpasswd\fR.
Errors during that process are reported in the interpreter \fIinterp\fR.
diff --git a/generic/tclBootVfs.h b/generic/tclBootVfs.h
deleted file mode 100644
index 1cb7c23..0000000
--- a/generic/tclBootVfs.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#include <tcl.h>
-#include "tclInt.h"
-#include "tclFileSystem.h"
-
-#ifndef MODULE_SCOPE
-# define MODULE_SCOPE extern
-#endif
-
-#define TCLVFSBOOT_INIT "main.tcl"
-#define TCLVFSBOOT_MOUNT "/zvfs"
-
-/* Make sure the stubbed variants of those are never used. */
-#undef Tcl_ObjSetVar2
-#undef Tcl_NewStringObj
-#undef Tk_Init
-#undef Tk_MainEx
-#undef Tk_SafeInit
-
-MODULE_SCOPE int Tcl_Zvfs_Boot(const char *,const char *,const char *);
-MODULE_SCOPE int Zvfs_Init(Tcl_Interp *);
-MODULE_SCOPE int Zvfs_SafeInit(Tcl_Interp *);
-MODULE_SCOPE int Tclkit_Packages_Init(Tcl_Interp *);
-
-
diff --git a/generic/tclZipfs.c b/generic/tclZipfs.c
index 9d74890..fe4553e 100644
--- a/generic/tclZipfs.c
+++ b/generic/tclZipfs.c
@@ -4,7 +4,7 @@
* Implementation of the ZIP filesystem used in TIP 430
* Adapted from the implentation for AndroWish.
*
- * Coptright (c) 2016 Sean Woods <yoda@etoyoc.com>
+ * Coptright (c) 2016-2017 Sean Woods <yoda@etoyoc.com>
* Copyright (c) 2013-2015 Christian Werner <chw@ch-werner.de>
*
* See the file "license.terms" for information on usage and redistribution of
@@ -26,7 +26,7 @@
#ifdef HAVE_ZLIB
#include "zlib.h"
-#include "zcrypt.h"
+#include "crypt.h"
#define ZIPFS_VOLUME "zipfs:/"
#define ZIPFS_VOLUME_LEN 7
@@ -235,7 +235,7 @@ static const char pwrot[16] = {
* Table to compute CRC32.
*/
-static const unsigned int crc32tab[256] = {
+static const unsigned long crc32tab[256] = {
0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
diff --git a/generic/tclZipfs.h b/generic/tclZipfs.h
deleted file mode 100644
index f7da3bd..0000000
--- a/generic/tclZipfs.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * tclZipfs.h --
- *
- * This header file describes the interface of the ZIPFS filesystem
- *
- * Copyright (c) 2013-2015 Christian Werner <chw@ch-werner.de>
- *
- * See the file "license.terms" for information on usage and redistribution of
- * this file, and for a DISCLAIMER OF ALL WARRANTIES.
- */
-
-#ifndef _ZIPFS_H
-#define _ZIPFS_H
-
-#include "tcl.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef ZIPFSAPI
-# define ZIPFSAPI extern
-#endif
-
-#ifdef BUILD_tcl
-# undef ZIPFSAPI
-# define ZIPFSAPI DLLEXPORT
-#endif
-
-ZIPFSAPI int TclZipfs_Mount(Tcl_Interp *interp, const char *zipname,
- const char *mntpt, const char *passwd);
-ZIPFSAPI int TclZipfs_Unmount(Tcl_Interp *interp, const char *zipname);
-ZIPFSAPI int TclZipfs_Init(Tcl_Interp *interp);
-ZIPFSAPI int TclZipfs_SafeInit(Tcl_Interp *interp);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _ZIPFS_H */
-
-/*
- * Local Variables:
- * mode: c
- * c-basic-offset: 4
- * fill-column: 78
- * End:
- */
diff --git a/generic/zcrypt.h b/generic/zcrypt.h
deleted file mode 100644
index eb9865b..0000000
--- a/generic/zcrypt.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/* crypt.h -- base code for crypt/uncrypt ZIPfile
-
-
- Version 1.01e, February 12th, 2005
-
- Copyright (C) 1998-2005 Gilles Vollant
-
- This code is a modified version of crypting code in Infozip distribution
-
- The encryption/decryption parts of this source code (as opposed to the
- non-echoing password parts) were originally written in Europe. The
- whole source package can be freely distributed, including from the USA.
- (Prior to January 2000, re-export from the US was a violation of US law.)
-
- This encryption code is a direct transcription of the algorithm from
- Roger Schlafly, described by Phil Katz in the file appnote.txt. This
- file (appnote.txt) is distributed with the PKZIP program (even in the
- version without encryption capabilities).
-
- If you don't need crypting in your application, just define symbols
- NOCRYPT and NOUNCRYPT.
-
- This code support the "Traditional PKWARE Encryption".
-
- The new AES encryption added on Zip format by Winzip (see the page
- http://www.winzip.com/aes_info.htm ) and PKWare PKZip 5.x Strong
- Encryption is not supported.
-*/
-
-#define CRC32(c, b) ((*(pcrc_32_tab+(((int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8))
-
-/***********************************************************************
- * Return the next byte in the pseudo-random sequence
- */
-static int decrypt_byte(unsigned long* pkeys, const unsigned int* pcrc_32_tab)
-{
- unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an
- * unpredictable manner on 16-bit systems; not a problem
- * with any known compiler so far, though */
-
- temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2;
- return (int)(((temp * (temp ^ 1)) >> 8) & 0xff);
-}
-
-/***********************************************************************
- * Update the encryption keys with the next byte of plain text
- */
-static int update_keys(unsigned long* pkeys,const unsigned int* pcrc_32_tab,int c)
-{
- (*(pkeys+0)) = CRC32((*(pkeys+0)), c);
- (*(pkeys+1)) += (*(pkeys+0)) & 0xff;
- (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1;
- {
- register int keyshift = (int)((*(pkeys+1)) >> 24);
- (*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift);
- }
- return c;
-}
-
-
-/***********************************************************************
- * Initialize the encryption keys and the random header according to
- * the given password.
- */
-static void init_keys(const char* passwd,unsigned long* pkeys,const unsigned int* pcrc_32_tab)
-{
- *(pkeys+0) = 305419896L;
- *(pkeys+1) = 591751049L;
- *(pkeys+2) = 878082192L;
- while (*passwd != '\0') {
- update_keys(pkeys,pcrc_32_tab,(int)*passwd);
- passwd++;
- }
-}
-
-#define zdecode(pkeys,pcrc_32_tab,c) \
- (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab)))
-
-#define zencode(pkeys,pcrc_32_tab,c,t) \
- (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c))
-
-#ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED
-
-#define RAND_HEAD_LEN 12
- /* "last resort" source for second part of crypt seed pattern */
-# ifndef ZCR_SEED2
-# define ZCR_SEED2 3141592654UL /* use PI as default pattern */
-# endif
-
-static int crypthead(const char* passwd, /* password string */
- unsigned char* buf, /* where to write header */
- int bufSize,
- unsigned long* pkeys,
- const unsigned int* pcrc_32_tab,
- unsigned long crcForCrypting)
-{
- int n; /* index in random header */
- int t; /* temporary */
- int c; /* random byte */
- unsigned char header[RAND_HEAD_LEN-2]; /* random header */
- static unsigned calls = 0; /* ensure different random header each time */
-
- if (bufSize<RAND_HEAD_LEN)
- return 0;
-
- /* First generate RAND_HEAD_LEN-2 random bytes. We encrypt the
- * output of rand() to get less predictability, since rand() is
- * often poorly implemented.
- */
- if (++calls == 1)
- {
- srand((unsigned)(time(NULL) ^ ZCR_SEED2));
- }
- init_keys(passwd, pkeys, pcrc_32_tab);
- for (n = 0; n < RAND_HEAD_LEN-2; n++)
- {
- c = (rand() >> 7) & 0xff;
- header[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, c, t);
- }
- /* Encrypt random header (last two bytes is high word of crc) */
- init_keys(passwd, pkeys, pcrc_32_tab);
- for (n = 0; n < RAND_HEAD_LEN-2; n++)
- {
- buf[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, header[n], t);
- }
- buf[n++] = (unsigned char)zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 16) & 0xff, t);
- buf[n++] = (unsigned char)zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 24) & 0xff, t);
- return n;
-}
-
-#endif
diff --git a/tools/mkVfs.tcl b/tools/mkVfs.tcl
index e670775..cbfb81e 100644
--- a/tools/mkVfs.tcl
+++ b/tools/mkVfs.tcl
@@ -1,99 +1,99 @@
-proc cat fname {
- set fname [open $fname r]
- set data [read $fname]
- close $fname
- return $data
-}
-
-proc pkgIndexDir {root fout d1} {
-
- puts [format {%*sIndexing %s} [expr {4 * [info level]}] {} \
- [file tail $d1]]
- set idx [string length $root]
- foreach ftail [glob -directory $d1 -nocomplain -tails *] {
- set f [file join $d1 $ftail]
- if {[file isdirectory $f] && [string compare CVS $ftail]} {
- pkgIndexDir $root $fout $f
- } elseif {[file tail $f] eq "pkgIndex.tcl"} {
- puts $fout "set dir \${VFSROOT}[string range $d1 $idx end]"
- puts $fout [cat $f]
- }
- }
-}
-
-###
-# Script to build the VFS file system
-###
-proc copyDir {d1 d2} {
-
- puts [format {%*sCreating %s} [expr {4 * [info level]}] {} \
- [file tail $d2]]
-
- file delete -force -- $d2
- file mkdir $d2
-
- foreach ftail [glob -directory $d1 -nocomplain -tails *] {
- set f [file join $d1 $ftail]
- if {[file isdirectory $f] && [string compare CVS $ftail]} {
- copyDir $f [file join $d2 $ftail]
- } elseif {[file isfile $f]} {
- file copy -force $f [file join $d2 $ftail]
- if {$::tcl_platform(platform) eq {unix}} {
- file attributes [file join $d2 $ftail] -permissions 0644
- } else {
- file attributes [file join $d2 $ftail] -readonly 1
- }
- }
- }
-
- if {$::tcl_platform(platform) eq {unix}} {
- file attributes $d2 -permissions 0755
- } else {
- file attributes $d2 -readonly 1
- }
-}
-
-if {[llength $argv] < 3} {
- puts "Usage: VFS_ROOT TCLSRC_ROOT PLATFORM"
- exit 1
-}
-set TCL_SCRIPT_DIR [lindex $argv 0]
-set TCLSRC_ROOT [lindex $argv 1]
-set PLATFORM [lindex $argv 2]
-set TKDLL [lindex $argv 3]
-set TKVER [lindex $argv 4]
-
-puts "Building [file tail $TCL_SCRIPT_DIR] for $PLATFORM"
-copyDir ${TCLSRC_ROOT}/library ${TCL_SCRIPT_DIR}
-
-if {$PLATFORM == "windows"} {
- set ddedll [glob -nocomplain ${TCLSRC_ROOT}/win/tcldde*.dll]
- puts "DDE DLL $ddedll"
- if {$ddedll != {}} {
- file copy $ddedll ${TCL_SCRIPT_DIR}/dde
- }
- set regdll [glob -nocomplain ${TCLSRC_ROOT}/win/tclreg*.dll]
- puts "REG DLL $ddedll"
- if {$regdll != {}} {
- file copy $regdll ${TCL_SCRIPT_DIR}/reg
- }
-} else {
- # Remove the dde and reg package paths
- file delete -force ${TCL_SCRIPT_DIR}/dde
- file delete -force ${TCL_SCRIPT_DIR}/reg
-}
-
-# For the following packages, cat their pkgIndex files to tclIndex
-file attributes ${TCL_SCRIPT_DIR}/tclIndex -readonly 0
-set fout [open ${TCL_SCRIPT_DIR}/tclIndex a]
-puts $fout {#
-# MANIFEST OF INCLUDED PACKAGES
-#
-set VFSROOT $dir
-}
-if {$TKDLL ne {} && [file exists $TKDLL]} {
- file copy $TKDLL ${TCL_SCRIPT_DIR}
- puts $fout [list package ifneeded Tk $TKVER "load \$dir $TKDLL"]
-}
-pkgIndexDir ${TCL_SCRIPT_DIR} $fout ${TCL_SCRIPT_DIR}
-close $fout
+proc cat fname {
+ set fname [open $fname r]
+ set data [read $fname]
+ close $fname
+ return $data
+}
+
+proc pkgIndexDir {root fout d1} {
+
+ puts [format {%*sIndexing %s} [expr {4 * [info level]}] {} \
+ [file tail $d1]]
+ set idx [string length $root]
+ foreach ftail [glob -directory $d1 -nocomplain -tails *] {
+ set f [file join $d1 $ftail]
+ if {[file isdirectory $f] && [string compare CVS $ftail]} {
+ pkgIndexDir $root $fout $f
+ } elseif {[file tail $f] eq "pkgIndex.tcl"} {
+ puts $fout "set dir \${VFSROOT}[string range $d1 $idx end]"
+ puts $fout [cat $f]
+ }
+ }
+}
+
+###
+# Script to build the VFS file system
+###
+proc copyDir {d1 d2} {
+
+ puts [format {%*sCreating %s} [expr {4 * [info level]}] {} \
+ [file tail $d2]]
+
+ file delete -force -- $d2
+ file mkdir $d2
+
+ foreach ftail [glob -directory $d1 -nocomplain -tails *] {
+ set f [file join $d1 $ftail]
+ if {[file isdirectory $f] && [string compare CVS $ftail]} {
+ copyDir $f [file join $d2 $ftail]
+ } elseif {[file isfile $f]} {
+ file copy -force $f [file join $d2 $ftail]
+ if {$::tcl_platform(platform) eq {unix}} {
+ file attributes [file join $d2 $ftail] -permissions 0644
+ } else {
+ file attributes [file join $d2 $ftail] -readonly 1
+ }
+ }
+ }
+
+ if {$::tcl_platform(platform) eq {unix}} {
+ file attributes $d2 -permissions 0755
+ } else {
+ file attributes $d2 -readonly 1
+ }
+}
+
+if {[llength $argv] < 3} {
+ puts "Usage: VFS_ROOT TCLSRC_ROOT PLATFORM"
+ exit 1
+}
+set TCL_SCRIPT_DIR [lindex $argv 0]
+set TCLSRC_ROOT [lindex $argv 1]
+set PLATFORM [lindex $argv 2]
+set TKDLL [lindex $argv 3]
+set TKVER [lindex $argv 4]
+
+puts "Building [file tail $TCL_SCRIPT_DIR] for $PLATFORM"
+copyDir ${TCLSRC_ROOT}/library ${TCL_SCRIPT_DIR}
+
+if {$PLATFORM == "windows"} {
+ set ddedll [glob -nocomplain ${TCLSRC_ROOT}/win/tcldde*.dll]
+ puts "DDE DLL $ddedll"
+ if {$ddedll != {}} {
+ file copy $ddedll ${TCL_SCRIPT_DIR}/dde
+ }
+ set regdll [glob -nocomplain ${TCLSRC_ROOT}/win/tclreg*.dll]
+ puts "REG DLL $ddedll"
+ if {$regdll != {}} {
+ file copy $regdll ${TCL_SCRIPT_DIR}/reg
+ }
+} else {
+ # Remove the dde and reg package paths
+ file delete -force ${TCL_SCRIPT_DIR}/dde
+ file delete -force ${TCL_SCRIPT_DIR}/reg
+}
+
+# For the following packages, cat their pkgIndex files to tclIndex
+file attributes ${TCL_SCRIPT_DIR}/tclIndex -readonly 0
+set fout [open ${TCL_SCRIPT_DIR}/tclIndex a]
+puts $fout {#
+# MANIFEST OF INCLUDED PACKAGES
+#
+set VFSROOT $dir
+}
+if {$TKDLL ne {} && [file exists $TKDLL]} {
+ file copy $TKDLL ${TCL_SCRIPT_DIR}
+ puts $fout [list package ifneeded Tk $TKVER "load \$dir $TKDLL"]
+}
+pkgIndexDir ${TCL_SCRIPT_DIR} $fout ${TCL_SCRIPT_DIR}
+close $fout
diff --git a/tools/mkzip.tcl b/tools/mkzip.tcl
deleted file mode 100644
index ba10908..0000000
--- a/tools/mkzip.tcl
+++ /dev/null
@@ -1,5 +0,0 @@
-###
-# Wrapper to allow access to Tcl's zvfs::mkzip command from Makefiles
-###
-source [file join [file dirname [file normalize [info script]]] .. library zvfstools zvfstools.tcl]
-zvfs::mkzip {*}$argv
diff --git a/unix/Makefile.in b/unix/Makefile.in
index ee3ed75..5f4e125 100644
--- a/unix/Makefile.in
+++ b/unix/Makefile.in
@@ -373,7 +373,6 @@ GENERIC_HDRS = \
$(GENERIC_DIR)/tclInt.h \
$(GENERIC_DIR)/tclIntDecls.h \
$(GENERIC_DIR)/tclIntPlatDecls.h \
- $(GENERIC_DIR)/tclZipfs.h \
$(GENERIC_DIR)/tclTomMath.h \
$(GENERIC_DIR)/tclTomMathDecls.h \
$(GENERIC_DIR)/tclOO.h \
@@ -962,7 +961,6 @@ install-headers:
@for i in $(GENERIC_DIR)/tcl.h $(GENERIC_DIR)/tclDecls.h \
$(GENERIC_DIR)/tclOO.h $(GENERIC_DIR)/tclOODecls.h \
$(GENERIC_DIR)/tclPlatDecls.h \
- $(GENERIC_DIR)/tclZipfs.h \
$(GENERIC_DIR)/tclTomMath.h \
$(GENERIC_DIR)/tclTomMathDecls.h ; \
do \
@@ -1333,7 +1331,7 @@ tclZlib.o: $(GENERIC_DIR)/tclZlib.c
$(CC) -c $(CC_SWITCHES) $(ZLIB_INCLUDE) $(GENERIC_DIR)/tclZlib.c
tclZipfs.o: $(GENERIC_DIR)/tclZipfs.c
- $(CC) -c $(CC_SWITCHES) $(ZLIB_INCLUDE) $(GENERIC_DIR)/tclZipfs.c
+ $(CC) -c $(CC_SWITCHES) $(ZLIB_INCLUDE) -I$(ZLIB_DIR)/contrib/minizip $(GENERIC_DIR)/tclZipfs.c
tclTest.o: $(GENERIC_DIR)/tclTest.c $(IOHDR) $(TCLREHDRS)
$(CC) -c $(APP_CC_SWITCHES) $(GENERIC_DIR)/tclTest.c
diff --git a/win/Makefile.in b/win/Makefile.in
index 8d5aa5a..1a88cc8 100644
--- a/win/Makefile.in
+++ b/win/Makefile.in
@@ -502,6 +502,11 @@ testMain.${OBJEXT}: tclAppInit.c
tclMain2.${OBJEXT}: tclMain.c
$(CC) -c $(CC_SWITCHES) -DBUILD_tcl -DTCL_ASCII_MAIN @DEPARG@ $(CC_OBJNAME)
+# TIP #430, ZipFS Support
+tclZipfs.${OBJEXT}: $(GENERIC_DIR)/tclZipfs.c
+ $(CC) -c $(CC_SWITCHES) $(ZLIB_INCLUDE) -I$(ZLIB_DIR)/contrib/minizip $(GENERIC_DIR)/tclZipfs.c
+
+
# TIP #59, embedding of configuration information into the binary library.
#
# Part of Tcl's configuration information are the paths where it was installed
@@ -642,7 +647,6 @@ install-libraries: libraries install-tzdata install-msgs
@echo "Installing header files";
@for i in "$(GENERIC_DIR)/tcl.h" "$(GENERIC_DIR)/tclDecls.h" \
"$(GENERIC_DIR)/tclOO.h" "$(GENERIC_DIR)/tclOODecls.h" \
- "$(GENERIC_DIR)/tclZipfs.h" \
"$(GENERIC_DIR)/tclPlatDecls.h" \
"$(GENERIC_DIR)/tclTomMath.h" \
"$(GENERIC_DIR)/tclTomMathDecls.h"; \
diff --git a/win/makefile.vc b/win/makefile.vc
index 19e1e2d..c8713fe 100644
--- a/win/makefile.vc
+++ b/win/makefile.vc
@@ -959,8 +959,9 @@ $(TMP_DIR)\tclWinTest.obj: $(WINDIR)\tclWinTest.c
$(TMP_DIR)\tclZlib.obj: $(GENERICDIR)\tclZlib.c
$(cc32) $(TCL_CFLAGS) -I$(COMPATDIR)\zlib -DBUILD_tcl -Fo$@ $?
+### TIP #430 ZipFS Support
$(TMP_DIR)\zipfs.obj: $(GENERICDIR)\zipfs.c
- $(cc32) $(TCL_CFLAGS) -I$(COMPATDIR)\zlib -DBUILD_tcl -Fo$@ $?
+ $(cc32) $(TCL_CFLAGS) -I$(COMPATDIR)\zlib -I$(COMPATDIR)\zlib\contrib\minizip -DBUILD_tcl -Fo$@ $?
$(TMP_DIR)\tclPkgConfig.obj: $(GENERICDIR)\tclPkgConfig.c
$(cc32) -DBUILD_tcl $(TCL_CFLAGS) \
@@ -1135,7 +1136,6 @@ install-libraries: tclConfig install-msgs install-tzdata
@$(CPY) "$(GENERICDIR)\tclDecls.h" "$(INCLUDE_INSTALL_DIR)\"
@$(CPY) "$(GENERICDIR)\tclOO.h" "$(INCLUDE_INSTALL_DIR)\"
@$(CPY) "$(GENERICDIR)\tclOODecls.h" "$(INCLUDE_INSTALL_DIR)\"
- @$(CPY) "$(GENERICDIR)\tclZipfs.h" "$(INCLUDE_INSTALL_DIR)\"
@$(CPY) "$(GENERICDIR)\tclPlatDecls.h" "$(INCLUDE_INSTALL_DIR)\"
@$(CPY) "$(GENERICDIR)\tclTomMath.h" "$(INCLUDE_INSTALL_DIR)\"
@$(CPY) "$(GENERICDIR)\tclTomMathDecls.h" "$(INCLUDE_INSTALL_DIR)\"