summaryrefslogtreecommitdiff
path: root/windll
diff options
context:
space:
mode:
Diffstat (limited to 'windll')
-rw-r--r--windll/contents37
-rw-r--r--windll/example.c375
-rw-r--r--windll/example.h54
-rw-r--r--windll/resource.h16
-rw-r--r--windll/structs.h28
-rw-r--r--windll/vb/VBZIP.vbw2
-rw-r--r--windll/vb/VBZipBas.bas455
-rw-r--r--windll/vb/Vbzip.vbp34
-rw-r--r--windll/vb/Vbzipfrm.frm130
-rw-r--r--windll/vb/readmeVB.txt35
-rw-r--r--windll/visualc/dll/zip32.dsp168
-rw-r--r--windll/visualc/dll/zip32.dsw29
-rw-r--r--windll/visualc/dll/zip32.mak858
-rw-r--r--windll/visualc/lib/zip32.dsp162
-rw-r--r--windll/visualc/lib/zip32.dsw29
-rw-r--r--windll/visualc/lib/zip32.mak586
-rw-r--r--windll/windll.c174
-rw-r--r--windll/windll.h61
-rw-r--r--windll/windll.rc115
-rw-r--r--windll/windll.txt132
-rw-r--r--windll/windll16.def15
-rw-r--r--windll/windll32.def15
-rw-r--r--windll/ziplib.def15
-rw-r--r--windll/zipver.h15
24 files changed, 3540 insertions, 0 deletions
diff --git a/windll/contents b/windll/contents
new file mode 100644
index 0000000..c063c26
--- /dev/null
+++ b/windll/contents
@@ -0,0 +1,37 @@
+Contents of the "windll" sub-archive for Zip 2.31 and later:
+
+ contents this file
+ windll16.def definition file for 16-bit Zip DLL
+ windll32.def definition file for 32-bit Zip DLL
+ windll.c Contains the entry point for the DLL, "fake" printing,
+ and password functions.
+ windll.h header file for both 16 and 32-bit DLLs.
+ zipver.h versioning information for resource file, and also
+ used by WiZ application itself.
+ windll.rc resource file for both 16 and 32-bit DLLs
+ windll.txt simplistic explanation of how to use DLL.
+ structs.h header file used by both the dll and by WiZ which defines
+ several structures passed to the dll.
+ example.c a very simplistic example of how to load the dll, and make
+ a call into it.
+ example.h header file for example.c
+
+ visualc\dll <dir> contains Visual C++ 6.0 project and make files for
+ zip32 dll.
+ visualc\lib <dir> contains Visual C++ 6.0 project and make files for
+ zip32 static library.
+ vb-orig <dir> contains old version of a Visual Basic frontend example
+ using zip32.dll
+ vb <dir> new version of the Visual Basic dll frontend example,
+ many bugfixes and enhancements
+
+The dll and static library port was developed and tested under Microsoft
+Visual C++ 6.0. The former support for the Borland C++ compilers has been
+discontinued; bcc-compiled DLLs are not universally usable because of their
+requirements for special Borland runtime libs (and probably some calling
+convention specialities).
+Compilation for 16-bit Windows 3.x is no longer supported.
+
+Last updated February 22, 2005
+
+Mike White, Christian Spieler
diff --git a/windll/example.c b/windll/example.c
new file mode 100644
index 0000000..05939af
--- /dev/null
+++ b/windll/example.c
@@ -0,0 +1,375 @@
+/*
+ Copyright (c) 1990-2005 Info-ZIP. All rights reserved.
+
+ See the accompanying file LICENSE, version 2004-May-22 or later
+ (the contents of which are also included in zip.h) for terms of use.
+ If, for some reason, both of these files are missing, the Info-ZIP license
+ also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html
+*/
+/*
+ A very simplistic example of how to load the zip dll and make a call into it.
+ Note that none of the command line options are implemented in this example.
+
+ */
+
+#ifndef WIN32
+# define WIN32
+#endif
+#define API
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <time.h>
+#include <string.h>
+#ifdef __BORLANDC__
+#include <dir.h>
+#else
+#include <direct.h>
+#endif
+#include "example.h"
+#include "zipver.h"
+
+#ifdef WIN32
+#include <commctrl.h>
+#include <winver.h>
+#else
+#include <ver.h>
+#endif
+
+#ifdef WIN32
+#define ZIP_DLL_NAME "ZIP32.DLL\0"
+#else
+#define ZIP_DLL_NAME "ZIP16.DLL\0"
+#endif
+
+#define DLL_WARNING "Cannot find %s."\
+ " The Dll must be in the application directory, the path, "\
+ "the Windows directory or the Windows System directory."
+#define DLL_VERSION_WARNING "%s has the wrong version number."\
+ " Insure that you have the correct dll's installed, and that "\
+ "an older dll is not in your path or Windows System directory."
+
+int hFile; /* file handle */
+
+ZCL ZpZCL;
+LPZIPUSERFUNCTIONS lpZipUserFunctions;
+HANDLE hZUF = (HANDLE)NULL;
+HINSTANCE hUnzipDll;
+HANDLE hFileList;
+ZPOPT ZpOpt;
+#ifdef WIN32
+DWORD dwPlatformId = 0xFFFFFFFF;
+#endif
+HINSTANCE hZipDll;
+
+
+/* Forward References */
+_DLL_ZIP ZipArchive;
+_ZIP_USER_FUNCTIONS ZipInit;
+ZIPSETOPTIONS ZipSetOptions;
+
+void FreeUpMemory(void);
+int WINAPI DummyPassword(LPSTR, int, LPCSTR, LPCSTR);
+int WINAPI DummyPrint(char far *, unsigned long);
+int WINAPI WINAPI DummyComment(char far *);
+
+#ifdef WIN32
+BOOL IsNT(VOID);
+#endif
+
+/****************************************************************************
+
+ FUNCTION: Main(int argc, char **argv)
+
+****************************************************************************/
+#ifdef __BORLANDC__
+# ifdef WIN32
+#pragma argsused
+# endif
+#endif
+int main(int argc, char **argv)
+{
+LPSTR szFileList;
+char **index, *sz;
+int retcode, i, cc;
+DWORD dwVerInfoSize;
+DWORD dwVerHnd;
+char szFullPath[PATH_MAX];
+#ifdef WIN32
+char *ptr;
+#else
+HFILE hfile;
+OFSTRUCT ofs;
+#endif
+HANDLE hMem; /* handle to mem alloc'ed */
+
+if (argc < 3)
+ return 0; /* Exits if not proper number of arguments */
+
+hZUF = GlobalAlloc( GPTR, (DWORD)sizeof(ZIPUSERFUNCTIONS));
+if (!hZUF)
+ {
+ return 0;
+ }
+lpZipUserFunctions = (LPZIPUSERFUNCTIONS)GlobalLock(hZUF);
+
+if (!lpZipUserFunctions)
+ {
+ GlobalFree(hZUF);
+ return 0;
+ }
+
+lpZipUserFunctions->print = DummyPrint;
+lpZipUserFunctions->password = DummyPassword;
+lpZipUserFunctions->comment = DummyComment;
+
+/* Let's go find the dll */
+#ifdef WIN32
+if (SearchPath(
+ NULL, /* address of search path */
+ ZIP_DLL_NAME, /* address of filename */
+ NULL, /* address of extension */
+ PATH_MAX, /* size, in characters, of buffer */
+ szFullPath, /* address of buffer for found filename */
+ &ptr /* address of pointer to file component */
+ ) == 0)
+#else
+hfile = OpenFile(ZIP_DLL_NAME, &ofs, OF_SEARCH);
+if (hfile == HFILE_ERROR)
+#endif
+ {
+ char str[256];
+ wsprintf (str, DLL_WARNING, ZIP_DLL_NAME);
+ printf("%s\n", str);
+ FreeUpMemory();
+ return 0;
+ }
+#ifndef WIN32
+else
+ lstrcpy(szFullPath, ofs.szPathName);
+_lclose(hfile);
+#endif
+
+/* Now we'll check the zip dll version information */
+dwVerInfoSize =
+ GetFileVersionInfoSize(szFullPath, &dwVerHnd);
+
+if (dwVerInfoSize)
+ {
+ BOOL fRet, fRetName;
+ char str[256];
+ LPSTR lpstrVffInfo; /* Pointer to block to hold info */
+ LPSTR lszVer = NULL;
+ LPSTR lszVerName = NULL;
+ UINT cchVer = 0;
+
+ /* Get a block big enough to hold the version information */
+ hMem = GlobalAlloc(GMEM_MOVEABLE, dwVerInfoSize);
+ lpstrVffInfo = GlobalLock(hMem);
+
+ /* Get the version information */
+ GetFileVersionInfo(szFullPath, 0L, dwVerInfoSize, lpstrVffInfo);
+ fRet = VerQueryValue(lpstrVffInfo,
+ TEXT("\\StringFileInfo\\040904E4\\FileVersion"),
+ (LPVOID)&lszVer,
+ &cchVer);
+ fRetName = VerQueryValue(lpstrVffInfo,
+ TEXT("\\StringFileInfo\\040904E4\\CompanyName"),
+ (LPVOID)&lszVerName,
+ &cchVer);
+ if (!fRet || !fRetName ||
+ (lstrcmpi(lszVer, ZIP_DLL_VERSION) != 0) ||
+ (lstrcmpi(lszVerName, COMPANY_NAME) != 0))
+ {
+ wsprintf (str, DLL_VERSION_WARNING, ZIP_DLL_NAME);
+ printf("%s\n", str);
+ FreeUpMemory();
+ return 0;
+ }
+ /* free memory */
+ GlobalUnlock(hMem);
+ GlobalFree(hMem);
+ }
+else
+ {
+ char str[256];
+ wsprintf (str, DLL_VERSION_WARNING, ZIP_DLL_NAME);
+ printf("%s\n", str);
+ FreeUpMemory();
+ return 0;
+ }
+/* Okay, now we know that the dll exists, and has the proper version
+ * information in it. We can go ahead and load it.
+ */
+hZipDll = LoadLibrary(ZIP_DLL_NAME);
+#ifndef WIN32
+if (hZipDll > HINSTANCE_ERROR)
+#else
+if (hZipDll != NULL)
+#endif
+ {
+ (_DLL_ZIP)ZipArchive = (_DLL_ZIP)GetProcAddress(hZipDll, "ZpArchive");
+ (ZIPSETOPTIONS)ZipSetOptions = (ZIPSETOPTIONS)GetProcAddress(hZipDll, "ZpSetOptions");
+ if (!ZipArchive || !ZipSetOptions)
+ {
+ char str[256];
+ wsprintf (str, "Could not get entry point to %s", ZIP_DLL_NAME);
+ MessageBox((HWND)NULL, str, "Info-ZIP Example", MB_ICONSTOP | MB_OK);
+ FreeUpMemory();
+ return 0;
+ }
+ }
+else
+ {
+ char str[256];
+ wsprintf (str, "Could not load %s", ZIP_DLL_NAME);
+ printf("%s\n", str);
+ FreeUpMemory();
+ return 0;
+ }
+
+(_ZIP_USER_FUNCTIONS)ZipInit = (_ZIP_USER_FUNCTIONS)GetProcAddress(hZipDll, "ZpInit");
+if (!ZipInit)
+ {
+ printf("Cannot get address of ZpInit in Zip dll. Terminating...");
+ FreeLibrary(hZipDll);
+ FreeUpMemory();
+ return 0;
+ }
+if (!(*ZipInit)(lpZipUserFunctions))
+ {
+ printf("Application functions not set up properly. Terminating...");
+ FreeLibrary(hZipDll);
+ FreeUpMemory();
+ return 0;
+ }
+
+/* Here is where the action starts */
+ZpOpt.fSuffix = FALSE; /* include suffixes (not yet implemented) */
+ZpOpt.fEncrypt = FALSE; /* true if encryption wanted */
+ZpOpt.fSystem = FALSE; /* true to include system/hidden files */
+ZpOpt.fVolume = FALSE; /* true if storing volume label */
+ZpOpt.fExtra = FALSE; /* true if including extra attributes */
+ZpOpt.fNoDirEntries = FALSE; /* true if ignoring directory entries */
+ZpOpt.fVerbose = FALSE; /* true if full messages wanted */
+ZpOpt.fQuiet = FALSE; /* true if minimum messages wanted */
+ZpOpt.fCRLF_LF = FALSE; /* true if translate CR/LF to LF */
+ZpOpt.fLF_CRLF = FALSE; /* true if translate LF to CR/LF */
+ZpOpt.fJunkDir = FALSE; /* true if junking directory names */
+ZpOpt.fGrow = FALSE; /* true if allow appending to zip file */
+ZpOpt.fForce = FALSE; /* true if making entries using DOS names */
+ZpOpt.fMove = FALSE; /* true if deleting files added or updated */
+ZpOpt.fUpdate = FALSE; /* true if updating zip file--overwrite only
+ if newer */
+ZpOpt.fFreshen = FALSE; /* true if freshening zip file--overwrite only */
+ZpOpt.fJunkSFX = FALSE; /* true if junking sfx prefix*/
+ZpOpt.fLatestTime = FALSE; /* true if setting zip file time to time of
+ latest file in archive */
+ZpOpt.fComment = FALSE; /* true if putting comment in zip file */
+ZpOpt.fOffsets = FALSE; /* true if updating archive offsets for sfx
+ files */
+ZpOpt.fDeleteEntries = FALSE; /* true if deleting files from archive */
+ZpOpt.fRecurse = 0; /* subdir recursing mode: 1 = "-r", 2 = "-R" */
+ZpOpt.fRepair = 0; /* archive repair mode: 1 = "-F", 2 = "-FF" */
+ZpOpt.Date = NULL; /* Not using, set to NULL pointer */
+getcwd(szFullPath, PATH_MAX); /* Set directory to current directory */
+ZpOpt.szRootDir = szFullPath;
+
+ZpZCL.argc = argc - 2; /* number of files to archive - adjust for the
+ actual number of file names to be added */
+ZpZCL.lpszZipFN = argv[1]; /* archive to be created/updated */
+
+/* Copy over the appropriate portions of argv, basically stripping out argv[0]
+ (name of the executable) and argv[1] (name of the archive file)
+ */
+hFileList = GlobalAlloc( GPTR, 0x10000L);
+if ( hFileList )
+ {
+ szFileList = (char far *)GlobalLock(hFileList);
+ }
+index = (char **)szFileList;
+cc = (sizeof(char *) * ZpZCL.argc);
+sz = szFileList + cc;
+
+for (i = 0; i < ZpZCL.argc; i++)
+ {
+ cc = lstrlen(argv[i+2]);
+ lstrcpy(sz, argv[i+2]);
+ index[i] = sz;
+ sz += (cc + 1);
+ }
+ZpZCL.FNV = (char **)szFileList; /* list of files to archive */
+
+/* Set the options */
+ZipSetOptions(&ZpOpt);
+
+/* Go zip 'em up */
+retcode = ZipArchive(ZpZCL);
+if (retcode != 0)
+ printf("Error in archiving\n");
+
+GlobalUnlock(hFileList);
+GlobalFree(hFileList);
+FreeUpMemory();
+FreeLibrary(hZipDll);
+return 1;
+}
+
+void FreeUpMemory(void)
+{
+if (hZUF)
+ {
+ GlobalUnlock(hZUF);
+ GlobalFree(hZUF);
+ }
+}
+
+#ifdef WIN32
+/* This simply determines if we are running on NT */
+BOOL IsNT(VOID)
+{
+if(dwPlatformId != 0xFFFFFFFF)
+ return dwPlatformId;
+else
+/* note: GetVersionEx() doesn't exist on WinNT 3.1 */
+ {
+ if(GetVersion() < 0x80000000)
+ {
+ (BOOL)dwPlatformId = TRUE;
+ }
+ else
+ {
+ (BOOL)dwPlatformId = FALSE;
+ }
+ }
+return dwPlatformId;
+}
+#endif
+
+/* Password entry routine - see password.c in the wiz directory for how
+ this is actually implemented in Wiz. If you have an encrypted file,
+ this will probably give you great pain. Note that none of the
+ parameters are being used here, and this will give you warnings.
+ */
+int WINAPI DummyPassword(LPSTR p, int n, LPCSTR m, LPCSTR name)
+{
+return 1;
+}
+
+/* Dummy "print" routine that simply outputs what is sent from the dll */
+int WINAPI DummyPrint(char far *buf, unsigned long size)
+{
+printf("%s", buf);
+return (unsigned int) size;
+}
+
+
+/* Dummy "comment" routine. See comment.c in the wiz directory for how
+ this is actually implemented in Wiz. This will probably cause you
+ great pain if you ever actually make a call into it.
+ */
+int WINAPI DummyComment(char far *szBuf)
+{
+szBuf[0] = '\0';
+return TRUE;
+}
diff --git a/windll/example.h b/windll/example.h
new file mode 100644
index 0000000..0061d5e
--- /dev/null
+++ b/windll/example.h
@@ -0,0 +1,54 @@
+/*
+ Copyright (c) 1990-2005 Info-ZIP. All rights reserved.
+
+ See the accompanying file LICENSE, version 2004-May-22 or later
+ (the contents of which are also included in zip.h) for terms of use.
+ If, for some reason, both of these files are missing, the Info-ZIP license
+ also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html
+*/
+/*
+ Example header file
+*/
+#ifndef _EXAMPLE_H
+#define _EXAMPLE_H
+
+#include <windows.h>
+#include <assert.h> /* required for all Windows applications */
+#include <stdlib.h>
+#include <stdio.h>
+#include <commdlg.h>
+#include <dlgs.h>
+#include <windowsx.h>
+
+#ifndef EXPENTRY
+#define EXPENTRY WINAPI
+#endif
+
+#include "structs.h"
+
+/* Defines */
+#ifndef MSWIN
+#define MSWIN
+#endif
+
+typedef int (WINAPI * _DLL_ZIP)(ZCL);
+typedef int (WINAPI * _ZIP_USER_FUNCTIONS)(LPZIPUSERFUNCTIONS);
+typedef BOOL (WINAPI * ZIPSETOPTIONS)(LPZPOPT);
+
+/* Global variables */
+
+extern LPZIPUSERFUNCTIONS lpZipUserFunctions;
+
+extern HINSTANCE hZipDll;
+
+extern int hFile; /* file handle */
+
+/* Global functions */
+
+int WINAPI DisplayBuf(char far *, unsigned long int);
+extern _DLL_ZIP ZipArchive;
+extern _ZIP_USER_FUNCTIONS ZipInit;
+extern ZIPSETOPTIONS ZipSetOptions;
+
+#endif /* _EXAMPLE_H */
+
diff --git a/windll/resource.h b/windll/resource.h
new file mode 100644
index 0000000..be10954
--- /dev/null
+++ b/windll/resource.h
@@ -0,0 +1,16 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by windll.rc
+//
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NO_MFC 1
+#define _APS_NEXT_RESOURCE_VALUE 101
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1000
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/windll/structs.h b/windll/structs.h
new file mode 100644
index 0000000..f3c11a5
--- /dev/null
+++ b/windll/structs.h
@@ -0,0 +1,28 @@
+/*
+ Copyright (c) 1990-2005 Info-ZIP. All rights reserved.
+
+ See the accompanying file LICENSE, version 2004-May-22 or later
+ (the contents of which are also included in zip.h) for terms of use.
+ If, for some reason, both of these files are missing, the Info-ZIP license
+ also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html
+*/
+#ifndef _ZIP_STRUCTS_H
+#define _ZIP_STRUCTS_H
+
+#ifndef Far
+# define Far far
+#endif
+
+/* Porting definations between Win 3.1x and Win32 */
+#ifdef WIN32
+# define far
+# define _far
+# define __far
+# define near
+# define _near
+# define __near
+#endif
+
+#include "../api.h"
+
+#endif /* _ZIP_STRUCTS_H */
diff --git a/windll/vb/VBZIP.vbw b/windll/vb/VBZIP.vbw
new file mode 100644
index 0000000..907a008
--- /dev/null
+++ b/windll/vb/VBZIP.vbw
@@ -0,0 +1,2 @@
+Form1 = 22, 22, 668, 535, , 22, 22, 456, 360, C
+VBZipBas = 68, 5, 691, 512,
diff --git a/windll/vb/VBZipBas.bas b/windll/vb/VBZipBas.bas
new file mode 100644
index 0000000..18ec77a
--- /dev/null
+++ b/windll/vb/VBZipBas.bas
@@ -0,0 +1,455 @@
+Attribute VB_Name = "VBZipBas"
+
+Option Explicit
+
+'---------------------------------------------------------------
+'-- Please Do Not Remove These Comments!!!
+'---------------------------------------------------------------
+'-- Sample VB 5 code to drive zip32.dll
+'-- Contributed to the Info-ZIP project by Mike Le Voi
+'--
+'-- Contact me at: mlevoi@modemss.brisnet.org.au
+'--
+'-- Visit my home page at: http://modemss.brisnet.org.au/~mlevoi
+'--
+'-- Use this code at your own risk. Nothing implied or warranted
+'-- to work on your machine :-)
+'---------------------------------------------------------------
+'--
+'-- The Source Code Is Freely Available From Info-ZIP At:
+'-- http://www.cdrom.com/pub/infozip/infozip.html
+'--
+'-- A Very Special Thanks To Mr. Mike Le Voi
+'-- And Mr. Mike White Of The Info-ZIP
+'-- For Letting Me Use And Modify His Orginal
+'-- Visual Basic 5.0 Code! Thank You Mike Le Voi.
+'---------------------------------------------------------------
+'--
+'-- Contributed To The Info-ZIP Project By Raymond L. King
+'-- Modified June 21, 1998
+'-- By Raymond L. King
+'-- Custom Software Designers
+'--
+'-- Contact Me At: king@ntplx.net
+'-- ICQ 434355
+'-- Or Visit Our Home Page At: http://www.ntplx.net/~king
+'--
+'---------------------------------------------------------------
+'
+' This is the original example with some small changes. Only
+' use with the original Zip32.dll (Zip 2.3). Do not use this VB
+' example with Zip32z64.dll (Zip 3.0).
+'
+' 4/29/2004 Ed Gordon
+
+'---------------------------------------------------------------
+' Usage notes:
+'
+' This code uses Zip32.dll. You DO NOT need to register the
+' DLL to use it. You also DO NOT need to reference it in your
+' VB project. You DO have to copy the DLL to your SYSTEM
+' directory, your VB project directory, or place it in a directory
+' on your command PATH.
+'
+' A bug has been found in the Zip32.dll when called from VB. If
+' you try to pass any values other than NULL in the ZPOPT strings
+' Date, szRootDir, or szTempDir they get converted from the
+' VB internal wide character format to temporary byte strings by
+' the calling interface as they are supposed to. However when
+' ZpSetOptions returns the passed strings are deallocated unless the
+' VB debugger prevents it by a break between ZpSetOptions and
+' ZpArchive. When Zip32.dll uses these pointers later it
+' can result in unpredictable behavior. A kluge is available
+' for Zip32.dll, just replacing api.c in Zip 2.3, but better to just
+' use the new Zip32z64.dll where these bugs are fixed. However,
+' the kluge has been added to Zip 2.31. To determine the version
+' of the dll you have right click on it, select the Version tab,
+' and verify the Product Version is at least 2.31.
+'
+' Another bug is where -R is used with some other options and can
+' crash the dll. This is a bug in how zip processes the command
+' line and should be mostly fixed in Zip 2.31. If you run into
+' problems try using -r instead for recursion. The bug is fixed
+' in Zip 3.0 but note that Zip 3.0 creates dll zip32z64.dll and
+' it is not compatible with older VB including this example. See
+' the new VB example code included with Zip 3.0 for calling
+' interface changes.
+'
+' Note that Zip32 is probably not thread safe. It may be made
+' thread safe in a later version, but for now only one thread in
+' one program should use the DLL at a time. Unlike Zip, UnZip is
+' probably thread safe, but an exception to this has been
+' found. See the UnZip documentation for the latest on this.
+'
+' All code in this VB project is provided under the Info-Zip license.
+'
+' If you have any questions please contact Info-Zip at
+' http://www.info-zip.org.
+'
+' 4/29/2004 EG (Updated 3/1/2005 EG)
+'
+'---------------------------------------------------------------
+
+
+'-- C Style argv
+'-- Holds The Zip Archive Filenames
+' Max for this just over 8000 as each pointer takes up 4 bytes and
+' VB only allows 32 kB of local variables and that includes function
+' parameters. - 3/19/2004 EG
+'
+Public Type ZIPnames
+ zFiles(0 To 99) As String
+End Type
+
+'-- Call Back "String"
+Public Type ZipCBChar
+ ch(4096) As Byte
+End Type
+
+'-- ZPOPT Is Used To Set The Options In The ZIP32.DLL
+Public Type ZPOPT
+ Date As String ' US Date (8 Bytes Long) "12/31/98"?
+ szRootDir As String ' Root Directory Pathname (Up To 256 Bytes Long)
+ szTempDir As String ' Temp Directory Pathname (Up To 256 Bytes Long)
+ fTemp As Long ' 1 If Temp dir Wanted, Else 0
+ fSuffix As Long ' Include Suffixes (Not Yet Implemented!)
+ fEncrypt As Long ' 1 If Encryption Wanted, Else 0
+ fSystem As Long ' 1 To Include System/Hidden Files, Else 0
+ fVolume As Long ' 1 If Storing Volume Label, Else 0
+ fExtra As Long ' 1 If Excluding Extra Attributes, Else 0
+ fNoDirEntries As Long ' 1 If Ignoring Directory Entries, Else 0
+ fExcludeDate As Long ' 1 If Excluding Files Earlier Than Specified Date, Else 0
+ fIncludeDate As Long ' 1 If Including Files Earlier Than Specified Date, Else 0
+ fVerbose As Long ' 1 If Full Messages Wanted, Else 0
+ fQuiet As Long ' 1 If Minimum Messages Wanted, Else 0
+ fCRLF_LF As Long ' 1 If Translate CR/LF To LF, Else 0
+ fLF_CRLF As Long ' 1 If Translate LF To CR/LF, Else 0
+ fJunkDir As Long ' 1 If Junking Directory Names, Else 0
+ fGrow As Long ' 1 If Allow Appending To Zip File, Else 0
+ fForce As Long ' 1 If Making Entries Using DOS File Names, Else 0
+ fMove As Long ' 1 If Deleting Files Added Or Updated, Else 0
+ fDeleteEntries As Long ' 1 If Files Passed Have To Be Deleted, Else 0
+ fUpdate As Long ' 1 If Updating Zip File-Overwrite Only If Newer, Else 0
+ fFreshen As Long ' 1 If Freshing Zip File-Overwrite Only, Else 0
+ fJunkSFX As Long ' 1 If Junking SFX Prefix, Else 0
+ fLatestTime As Long ' 1 If Setting Zip File Time To Time Of Latest File In Archive, Else 0
+ fComment As Long ' 1 If Putting Comment In Zip File, Else 0
+ fOffsets As Long ' 1 If Updating Archive Offsets For SFX Files, Else 0
+ fPrivilege As Long ' 1 If Not Saving Privileges, Else 0
+ fEncryption As Long ' Read Only Property!!!
+ fRecurse As Long ' 1 (-r), 2 (-R) If Recursing Into Sub-Directories, Else 0
+ fRepair As Long ' 1 = Fix Archive, 2 = Try Harder To Fix, Else 0
+ flevel As Byte ' Compression Level - 0 = Stored 6 = Default 9 = Max
+End Type
+
+'-- This Structure Is Used For The ZIP32.DLL Function Callbacks
+Public Type ZIPUSERFUNCTIONS
+ ZDLLPrnt As Long ' Callback ZIP32.DLL Print Function
+ ZDLLCOMMENT As Long ' Callback ZIP32.DLL Comment Function
+ ZDLLPASSWORD As Long ' Callback ZIP32.DLL Password Function
+ ZDLLSERVICE As Long ' Callback ZIP32.DLL Service Function
+End Type
+
+'-- Local Declarations
+Public ZOPT As ZPOPT
+Public ZUSER As ZIPUSERFUNCTIONS
+
+'-- This Assumes ZIP32.DLL Is In Your \Windows\System Directory!
+'-- (alternatively, a copy of ZIP32.DLL needs to be located in the program
+'-- directory or in some other directory listed in PATH.)
+Private Declare Function ZpInit Lib "zip32.dll" _
+ (ByRef Zipfun As ZIPUSERFUNCTIONS) As Long '-- Set Zip Callbacks
+
+Private Declare Function ZpSetOptions Lib "zip32.dll" _
+ (ByRef Opts As ZPOPT) As Long '-- Set Zip Options
+
+Private Declare Function ZpGetOptions Lib "zip32.dll" _
+ () As ZPOPT '-- Used To Check Encryption Flag Only
+
+Private Declare Function ZpArchive Lib "zip32.dll" _
+ (ByVal argc As Long, ByVal funame As String, _
+ ByRef argv As ZIPnames) As Long '-- Real Zipping Action
+
+'-------------------------------------------------------
+'-- Public Variables For Setting The ZPOPT Structure...
+'-- (WARNING!!!) You Must Set The Options That You
+'-- Want The ZIP32.DLL To Do!
+'-- Before Calling VBZip32!
+'--
+'-- NOTE: See The Above ZPOPT Structure Or The VBZip32
+'-- Function, For The Meaning Of These Variables
+'-- And How To Use And Set Them!!!
+'-- These Parameters Must Be Set Before The Actual Call
+'-- To The VBZip32 Function!
+'-------------------------------------------------------
+Public zDate As String
+Public zRootDir As String
+Public zTempDir As String
+Public zSuffix As Integer
+Public zEncrypt As Integer
+Public zSystem As Integer
+Public zVolume As Integer
+Public zExtra As Integer
+Public zNoDirEntries As Integer
+Public zExcludeDate As Integer
+Public zIncludeDate As Integer
+Public zVerbose As Integer
+Public zQuiet As Integer
+Public zCRLF_LF As Integer
+Public zLF_CRLF As Integer
+Public zJunkDir As Integer
+Public zRecurse As Integer
+Public zGrow As Integer
+Public zForce As Integer
+Public zMove As Integer
+Public zDelEntries As Integer
+Public zUpdate As Integer
+Public zFreshen As Integer
+Public zJunkSFX As Integer
+Public zLatestTime As Integer
+Public zComment As Integer
+Public zOffsets As Integer
+Public zPrivilege As Integer
+Public zEncryption As Integer
+Public zRepair As Integer
+Public zLevel As Integer
+
+'-- Public Program Variables
+Public zArgc As Integer ' Number Of Files To Zip Up
+Public zZipFileName As String ' The Zip File Name ie: Myzip.zip
+Public zZipFileNames As ZIPnames ' File Names To Zip Up
+Public zZipInfo As String ' Holds The Zip File Information
+
+'-- Public Constants
+'-- For Zip & UnZip Error Codes!
+Public Const ZE_OK = 0 ' Success (No Error)
+Public Const ZE_EOF = 2 ' Unexpected End Of Zip File Error
+Public Const ZE_FORM = 3 ' Zip File Structure Error
+Public Const ZE_MEM = 4 ' Out Of Memory Error
+Public Const ZE_LOGIC = 5 ' Internal Logic Error
+Public Const ZE_BIG = 6 ' Entry Too Large To Split Error
+Public Const ZE_NOTE = 7 ' Invalid Comment Format Error
+Public Const ZE_TEST = 8 ' Zip Test (-T) Failed Or Out Of Memory Error
+Public Const ZE_ABORT = 9 ' User Interrupted Or Termination Error
+Public Const ZE_TEMP = 10 ' Error Using A Temp File
+Public Const ZE_READ = 11 ' Read Or Seek Error
+Public Const ZE_NONE = 12 ' Nothing To Do Error
+Public Const ZE_NAME = 13 ' Missing Or Empty Zip File Error
+Public Const ZE_WRITE = 14 ' Error Writing To A File
+Public Const ZE_CREAT = 15 ' Could't Open To Write Error
+Public Const ZE_PARMS = 16 ' Bad Command Line Argument Error
+Public Const ZE_OPEN = 18 ' Could Not Open A Specified File To Read Error
+
+'-- These Functions Are For The ZIP32.DLL
+'--
+'-- Puts A Function Pointer In A Structure
+'-- For Use With Callbacks...
+Public Function FnPtr(ByVal lp As Long) As Long
+
+ FnPtr = lp
+
+End Function
+
+'-- Callback For ZIP32.DLL - DLL Print Function
+Public Function ZDLLPrnt(ByRef fname As ZipCBChar, ByVal x As Long) As Long
+
+ Dim s0 As String
+ Dim xx As Long
+
+ '-- Always Put This In Callback Routines!
+ On Error Resume Next
+
+ s0 = ""
+
+ '-- Get Zip32.DLL Message For processing
+ For xx = 0 To x
+ If fname.ch(xx) = 0 Then
+ Exit For
+ Else
+ s0 = s0 + Chr(fname.ch(xx))
+ End If
+ Next
+
+ '----------------------------------------------
+ '-- This Is Where The DLL Passes Back Messages
+ '-- To You! You Can Change The Message Printing
+ '-- Below Here!
+ '----------------------------------------------
+
+ '-- Display Zip File Information
+ '-- zZipInfo = zZipInfo & s0
+ Form1.Print s0;
+
+ DoEvents
+
+ ZDLLPrnt = 0
+
+End Function
+
+'-- Callback For ZIP32.DLL - DLL Service Function
+Public Function ZDLLServ(ByRef mname As ZipCBChar, ByVal x As Long) As Long
+
+ ' x is the size of the file
+
+ Dim s0 As String
+ Dim xx As Long
+
+ '-- Always Put This In Callback Routines!
+ On Error Resume Next
+
+ s0 = ""
+ '-- Get Zip32.DLL Message For processing
+ For xx = 0 To 4096
+ If mname.ch(xx) = 0 Then
+ Exit For
+ Else
+ s0 = s0 + Chr(mname.ch(xx))
+ End If
+ Next
+ ' Form1.Print "-- " & s0 & " - " & x & " bytes"
+
+ ' This is called for each zip entry.
+ ' mname is usually the null terminated file name and x the file size.
+ ' s0 has trimmed file name as VB string.
+
+ ' At this point, s0 contains the message passed from the DLL
+ ' It is up to the developer to code something useful here :)
+ ZDLLServ = 0 ' Setting this to 1 will abort the zip!
+
+End Function
+
+'-- Callback For ZIP32.DLL - DLL Password Function
+Public Function ZDLLPass(ByRef p As ZipCBChar, _
+ ByVal n As Long, ByRef m As ZipCBChar, _
+ ByRef Name As ZipCBChar) As Integer
+
+ Dim prompt As String
+ Dim xx As Integer
+ Dim szpassword As String
+
+ '-- Always Put This In Callback Routines!
+ On Error Resume Next
+
+ ZDLLPass = 1
+
+ '-- If There Is A Password Have The User Enter It!
+ '-- This Can Be Changed
+ szpassword = InputBox("Please Enter The Password!")
+
+ '-- The User Did Not Enter A Password So Exit The Function
+ If szpassword = "" Then Exit Function
+
+ '-- User Entered A Password So Proccess It
+ For xx = 0 To 255
+ If m.ch(xx) = 0 Then
+ Exit For
+ Else
+ prompt = prompt & Chr(m.ch(xx))
+ End If
+ Next
+
+ For xx = 0 To n - 1
+ p.ch(xx) = 0
+ Next
+
+ For xx = 0 To Len(szpassword) - 1
+ p.ch(xx) = Asc(Mid(szpassword, xx + 1, 1))
+ Next
+
+ p.ch(xx) = Chr(0) ' Put Null Terminator For C
+
+ ZDLLPass = 0
+
+End Function
+
+'-- Callback For ZIP32.DLL - DLL Comment Function
+Public Function ZDLLComm(ByRef s1 As ZipCBChar) As Integer
+
+ Dim xx%, szcomment$
+
+ '-- Always Put This In Callback Routines!
+ On Error Resume Next
+
+ ZDLLComm = 1
+ szcomment = InputBox("Enter the comment")
+ If szcomment = "" Then Exit Function
+ For xx = 0 To Len(szcomment) - 1
+ s1.ch(xx) = Asc(Mid$(szcomment, xx + 1, 1))
+ Next xx
+ s1.ch(xx) = Chr(0) ' Put null terminator for C
+
+End Function
+
+'-- Main ZIP32.DLL Subroutine.
+'-- This Is Where It All Happens!!!
+'--
+'-- (WARNING!) Do Not Change This Function!!!
+'--
+Public Function VBZip32() As Long
+
+ Dim retcode As Long
+
+ On Error Resume Next '-- Nothing Will Go Wrong :-)
+
+ retcode = 0
+
+ '-- Set Address Of ZIP32.DLL Callback Functions
+ '-- (WARNING!) Do Not Change!!!
+ ZUSER.ZDLLPrnt = FnPtr(AddressOf ZDLLPrnt)
+ ZUSER.ZDLLPASSWORD = FnPtr(AddressOf ZDLLPass)
+ ZUSER.ZDLLCOMMENT = FnPtr(AddressOf ZDLLComm)
+ ZUSER.ZDLLSERVICE = FnPtr(AddressOf ZDLLServ)
+
+ '-- Set ZIP32.DLL Callbacks
+ retcode = ZpInit(ZUSER)
+ If retcode = 0 Then
+ MsgBox "Zip32.dll did not initialize. Is it in the current directory " & _
+ "or on the command path?", vbOKOnly, "VB Zip"
+ Exit Function
+ End If
+
+ '-- Setup ZIP32 Options
+ '-- (WARNING!) Do Not Change!
+ ZOPT.Date = zDate ' "12/31/79"? US Date?
+ ZOPT.szRootDir = zRootDir ' Root Directory Pathname
+ ZOPT.szTempDir = zTempDir ' Temp Directory Pathname
+ ZOPT.fSuffix = zSuffix ' Include Suffixes (Not Yet Implemented)
+ ZOPT.fEncrypt = zEncrypt ' 1 If Encryption Wanted
+ ZOPT.fSystem = zSystem ' 1 To Include System/Hidden Files
+ ZOPT.fVolume = zVolume ' 1 If Storing Volume Label
+ ZOPT.fExtra = zExtra ' 1 If Including Extra Attributes
+ ZOPT.fNoDirEntries = zNoDirEntries ' 1 If Ignoring Directory Entries
+ ZOPT.fExcludeDate = zExcludeDate ' 1 If Excluding Files Earlier Than A Specified Date
+ ZOPT.fIncludeDate = zIncludeDate ' 1 If Including Files Earlier Than A Specified Date
+ ZOPT.fVerbose = zVerbose ' 1 If Full Messages Wanted
+ ZOPT.fQuiet = zQuiet ' 1 If Minimum Messages Wanted
+ ZOPT.fCRLF_LF = zCRLF_LF ' 1 If Translate CR/LF To LF
+ ZOPT.fLF_CRLF = zLF_CRLF ' 1 If Translate LF To CR/LF
+ ZOPT.fJunkDir = zJunkDir ' 1 If Junking Directory Names
+ ZOPT.fGrow = zGrow ' 1 If Allow Appending To Zip File
+ ZOPT.fForce = zForce ' 1 If Making Entries Using DOS Names
+ ZOPT.fMove = zMove ' 1 If Deleting Files Added Or Updated
+ ZOPT.fDeleteEntries = zDelEntries ' 1 If Files Passed Have To Be Deleted
+ ZOPT.fUpdate = zUpdate ' 1 If Updating Zip File-Overwrite Only If Newer
+ ZOPT.fFreshen = zFreshen ' 1 If Freshening Zip File-Overwrite Only
+ ZOPT.fJunkSFX = zJunkSFX ' 1 If Junking SFX Prefix
+ ZOPT.fLatestTime = zLatestTime ' 1 If Setting Zip File Time To Time Of Latest File In Archive
+ ZOPT.fComment = zComment ' 1 If Putting Comment In Zip File
+ ZOPT.fOffsets = zOffsets ' 1 If Updating Archive Offsets For SFX Files
+ ZOPT.fPrivilege = zPrivilege ' 1 If Not Saving Privelages
+ ZOPT.fEncryption = zEncryption ' Read Only Property!
+ ZOPT.fRecurse = zRecurse ' 1 or 2 If Recursing Into Subdirectories
+ ZOPT.fRepair = zRepair ' 1 = Fix Archive, 2 = Try Harder To Fix
+ ZOPT.flevel = zLevel ' Compression Level - (0 To 9) Should Be 0!!!
+
+ '-- Set ZIP32.DLL Options
+ retcode = ZpSetOptions(ZOPT)
+
+ '-- Go Zip It Them Up!
+ retcode = ZpArchive(zArgc, zZipFileName, zZipFileNames)
+
+ '-- Return The Function Code
+ VBZip32 = retcode
+
+End Function
+
diff --git a/windll/vb/Vbzip.vbp b/windll/vb/Vbzip.vbp
new file mode 100644
index 0000000..b5e5827
--- /dev/null
+++ b/windll/vb/Vbzip.vbp
@@ -0,0 +1,34 @@
+Type=Exe
+Form=Vbzipfrm.frm
+Module=VBZipBas; VBZipBas.bas
+IconForm="Form1"
+Startup="Form1"
+HelpFile=""
+Title="VBZIP"
+ExeName32="VBZIP.exe"
+Path32="..\..\.."
+Command32=""
+Name="Project1"
+HelpContextID="0"
+CompatibleMode="0"
+MajorVer=1
+MinorVer=0
+RevisionVer=0
+AutoIncrementVer=0
+ServerSupportFiles=0
+VersionCompanyName="Mike"
+CompilationType=-1
+OptimizationType=0
+FavorPentiumPro(tm)=0
+CodeViewDebugInfo=0
+NoAliasing=0
+BoundsCheck=0
+OverflowCheck=0
+FlPointCheck=0
+FDIVCheck=0
+UnroundedFP=0
+StartMode=0
+Unattended=0
+Retained=0
+ThreadPerObject=0
+MaxNumberOfThreads=1
diff --git a/windll/vb/Vbzipfrm.frm b/windll/vb/Vbzipfrm.frm
new file mode 100644
index 0000000..de323cd
--- /dev/null
+++ b/windll/vb/Vbzipfrm.frm
@@ -0,0 +1,130 @@
+VERSION 5.00
+Begin VB.Form Form1
+ AutoRedraw = -1 'True
+ Caption = "Form1"
+ ClientHeight = 3150
+ ClientLeft = 60
+ ClientTop = 345
+ ClientWidth = 6570
+ BeginProperty Font
+ Name = "MS Sans Serif"
+ Size = 9.75
+ Charset = 0
+ Weight = 700
+ Underline = 0 'False
+ Italic = 0 'False
+ Strikethrough = 0 'False
+ EndProperty
+ LinkTopic = "Form1"
+ ScaleHeight = 3150
+ ScaleWidth = 6570
+ StartUpPosition = 1 'CenterOwner
+End
+Attribute VB_Name = "Form1"
+Attribute VB_GlobalNameSpace = False
+Attribute VB_Creatable = False
+Attribute VB_PredeclaredId = True
+Attribute VB_Exposed = False
+
+Option Explicit
+
+'---------------------------------------------------------------
+'-- Please Do Not Remove These Comments!!!
+'---------------------------------------------------------------
+'-- Sample VB 5 code to drive zip32.dll
+'-- Contributed to the Info-ZIP project by Mike Le Voi
+'--
+'-- Contact me at: mlevoi@modemss.brisnet.org.au
+'--
+'-- Visit my home page at: http://modemss.brisnet.org.au/~mlevoi
+'--
+'-- Use this code at your own risk. Nothing implied or warranted
+'-- to work on your machine :-)
+'---------------------------------------------------------------
+'--
+'-- The Source Code Is Freely Available From Info-ZIP At:
+'-- http://www.cdrom.com/pub/infozip/infozip.html
+'--
+'-- A Very Special Thanks To Mr. Mike Le Voi
+'-- And Mr. Mike White Of The Info-ZIP project
+'-- For Letting Me Use And Modify His Orginal
+'-- Visual Basic 5.0 Code! Thank You Mike Le Voi.
+'---------------------------------------------------------------
+'--
+'-- Contributed To The Info-ZIP Project By Raymond L. King
+'-- Modified June 21, 1998
+'-- By Raymond L. King
+'-- Custom Software Designers
+'--
+'-- Contact Me At: king@ntplx.net
+'-- ICQ 434355
+'-- Or Visit Our Home Page At: http://www.ntplx.net/~king
+'--
+'---------------------------------------------------------------
+' This is the original VB example (with some changes) for use
+' with Zip32.dll (Zip 2.31) but not Zip32z64.dll (Zip 3.0).
+'
+' Minor changes to use current directory and VB project files
+' for the example and to turn off encryption.
+'
+' The VB example provided with Zip 3.0 is more extensive. Even
+' if you plan to use the updated zip32.dll instead of the new
+' zip32z64.dll (Zip 3.0), there may be some things you might find
+' useful in the VB example there.
+'
+' 2/27/2005 Ed Gordon
+'---------------------------------------------------------------
+
+Private Sub Form_Click()
+
+ Dim retcode As Integer ' For Return Code From ZIP32.DLL
+
+ Cls
+
+ '-- Set Options - Only The Common Ones Are Shown Here
+ '-- These Must Be Set Before Calling The VBZip32 Function
+ zDate = vbNullString
+ 'zDate = "2005-1-31"
+ 'zExcludeDate = 1
+ 'zIncludeDate = 0
+ zJunkDir = 0 ' 1 = Throw Away Path Names
+ zRecurse = 0 ' 1 = Recurse -r 2 = Recurse -R 2 = Most Useful :)
+ zUpdate = 0 ' 1 = Update Only If Newer
+ zFreshen = 0 ' 1 = Freshen - Overwrite Only
+ zLevel = Asc(9) ' Compression Level (0 - 9)
+ zEncrypt = 0 ' Encryption = 1 For Password Else 0
+ zComment = 0 ' Comment = 1 if required
+
+ '-- Select Some Files - Wildcards Are Supported
+ '-- Change The Paths Here To Your Directory
+ '-- And Files!!!
+ ' Change ZIPnames in VBZipBas.bas if need more than 100 files
+ zArgc = 2 ' Number Of Elements Of mynames Array
+ zZipFileName = "MyFirst.zip"
+ zZipFileNames.zFiles(0) = "vbzipfrm.frm"
+ zZipFileNames.zFiles(1) = "vbzip.vbp"
+ zRootDir = "" ' This Affects The Stored Path Name
+
+ ' Older versions of Zip32.dll do not handle setting
+ ' zRootDir to anything other than "". If you need to
+ ' change root directory an alternative is to just change
+ ' directory. This requires Zip32.dll to be on the command
+ ' path. This should be fixed in Zip 2.31. 1/31/2005 EG
+
+ ' ChDir "a"
+
+ '-- Go Zip Them Up!
+ retcode = VBZip32
+
+ '-- Display The Returned Code Or Error!
+ Print "Return code:" & Str(retcode)
+
+End Sub
+
+Private Sub Form_Load()
+
+ Me.Show
+
+ Print "Click me!"
+
+End Sub
diff --git a/windll/vb/readmeVB.txt b/windll/vb/readmeVB.txt
new file mode 100644
index 0000000..f1fc19f
--- /dev/null
+++ b/windll/vb/readmeVB.txt
@@ -0,0 +1,35 @@
+On Windows open this file in WordPad.
+
+Contents of the "windll/vb" sub-archive
+
+This directory contains a Visual Basic project example for
+using the zip32.dll library. This project updates the Zip 2.3 VB
+project example and includes some bug fixes and many additional notes
+but is still compatible with zip32.dll. See the comments in the form
+and project files for details. It has been tested on VB 5 and VB6.
+
+Zip 2.31 itself has bug fixes as well, including some related to the
+dll, and you should now use a version of zip32.dll from that. This
+dll includes a fix for the VB dll bug where Date, szRootDir, and
+szTempDir were not passed in correctly and setting these to anything
+but NULL could impact the dll and maybe crash it. You can tell which
+version you have by right clicking on zip32.dll in a file listing,
+looking at properties, selecting the Version tab, and verifying the
+Product Version is at least 2.31.
+
+A new dll is available as part of the new Zip 3.0 beta. A new
+VB project included with that release now supports Zip64 and large
+files and it fixes even more bugs but is not backward compatible
+with zip32.dll. You will need the new dll zip32z64.dll to use that
+VB project, which can be compiled from the Zip 3.0 source. See
+windll/VBz64 in that release for details.
+
+Note that the files may saved in unix format with carriage returns
+stripped. These must be restored before the project can be successfully
+used. This can be done by using the -a option to unzip. Another way to
+do this is to open each file in WordPad, select and cut a line, paste
+the line back, and save the file. This will force WordPad to format
+the entire file.
+
+Ed Gordon
+3/1/2005
diff --git a/windll/visualc/dll/zip32.dsp b/windll/visualc/dll/zip32.dsp
new file mode 100644
index 0000000..91d01d8
--- /dev/null
+++ b/windll/visualc/dll/zip32.dsp
@@ -0,0 +1,168 @@
+# Microsoft Developer Studio Project File - Name="zip32" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=zip32 - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "zip32.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "zip32.mak" CFG="zip32 - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "zip32 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "zip32 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\Release\app"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "_WINDOWS" /D "WIN32" /YX /FD /c
+# ADD CPP /nologo /Zp4 /MT /W3 /GX /O2 /I "..\..\.." /I "..\..\..\WINDLL" /I "..\..\..\WIN32" /D "NDEBUG" /D "_WINDOWS" /D "WIN32" /D "NO_ASM" /D "WINDLL" /D "MSDOS" /D "USE_ZIPMAIN" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG" /d "WIN32"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /machine:I386
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\Debug\app"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "_DEBUG" /D "_WINDOWS" /D "WIN32" /YX /FD /c
+# ADD CPP /nologo /Zp4 /MTd /W3 /Gm /GX /ZI /Od /I "..\..\..\ZIP" /I "..\..\..\WINDLL" /I "..\..\..\WIN32" /D "_DEBUG" /D "_WINDOWS" /D "WIN32" /D "NO_ASM" /D "WINDLL" /D "MSDOS" /D "USE_ZIPMAIN" /FR /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG" /d "WIN32"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# SUBTRACT LINK32 /map
+
+!ENDIF
+
+# Begin Target
+
+# Name "zip32 - Win32 Release"
+# Name "zip32 - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\..\api.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\crc32.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\crctab.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\crypt.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\deflate.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\fileio.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\globals.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\win32\nt.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\trees.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\ttyio.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\util.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\win32\win32.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\win32\win32zip.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\windll\windll.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\windll\windll.rc
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\windll\windll32.def
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\zip.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\zipfile.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\zipup.c
+# End Source File
+# End Target
+# End Project
diff --git a/windll/visualc/dll/zip32.dsw b/windll/visualc/dll/zip32.dsw
new file mode 100644
index 0000000..cb9248d
--- /dev/null
+++ b/windll/visualc/dll/zip32.dsw
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "zip32"=.\zip32.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/windll/visualc/dll/zip32.mak b/windll/visualc/dll/zip32.mak
new file mode 100644
index 0000000..c3e33a6
--- /dev/null
+++ b/windll/visualc/dll/zip32.mak
@@ -0,0 +1,858 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on zip32.dsp
+!IF "$(CFG)" == ""
+CFG=zip32 - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to zip32 - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "zip32 - Win32 Release" && "$(CFG)" != "zip32 - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "zip32.mak" CFG="zip32 - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "zip32 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "zip32 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+OUTDIR=.\..\Release\app
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\..\Release\app
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\zip32.dll"
+
+!ELSE
+
+ALL : "$(OUTDIR)\zip32.dll"
+
+!ENDIF
+
+CLEAN :
+ -@erase "$(INTDIR)\api.obj"
+ -@erase "$(INTDIR)\crc32.obj"
+ -@erase "$(INTDIR)\crctab.obj"
+ -@erase "$(INTDIR)\crypt.obj"
+ -@erase "$(INTDIR)\deflate.obj"
+ -@erase "$(INTDIR)\fileio.obj"
+ -@erase "$(INTDIR)\globals.obj"
+ -@erase "$(INTDIR)\nt.obj"
+ -@erase "$(INTDIR)\trees.obj"
+ -@erase "$(INTDIR)\ttyio.obj"
+ -@erase "$(INTDIR)\util.obj"
+ -@erase "$(INTDIR)\vc50.idb"
+ -@erase "$(INTDIR)\win32.obj"
+ -@erase "$(INTDIR)\win32zip.obj"
+ -@erase "$(INTDIR)\windll.obj"
+ -@erase "$(INTDIR)\windll.res"
+ -@erase "$(INTDIR)\zip.obj"
+ -@erase "$(INTDIR)\zipfile.obj"
+ -@erase "$(INTDIR)\zipup.obj"
+ -@erase "$(OUTDIR)\zip32.dll"
+ -@erase "$(OUTDIR)\zip32.exp"
+ -@erase "$(OUTDIR)\zip32.lib"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+ if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /Zp4 /MT /W3 /GX /O2 /I "..\..\.." /I "..\..\..\WINDLL" /I "..\..\..\WIN32" /D "NDEBUG" /D "_WINDOWS" /D "WIN32" /D "NO_ASM" /D "WINDLL" /D\
+ "MSDOS" /D "USE_ZIPMAIN" /Fp"$(INTDIR)\zip32.pch" /YX\
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP_OBJS=.\Release/
+CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
+RSC=rc.exe
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\windll.res" /d "NDEBUG" /d "WIN32"
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\zip32.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib\
+ /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\zip32.pdb" /machine:I386\
+ /def:"..\..\..\windll\windll32.def" /out:"$(OUTDIR)\zip32.dll"\
+ /implib:"$(OUTDIR)\zip32.lib"
+DEF_FILE= \
+ "..\..\..\windll\windll32.def"
+LINK32_OBJS= \
+ "$(INTDIR)\api.obj" \
+ "$(INTDIR)\crc32.obj" \
+ "$(INTDIR)\crctab.obj" \
+ "$(INTDIR)\crypt.obj" \
+ "$(INTDIR)\deflate.obj" \
+ "$(INTDIR)\fileio.obj" \
+ "$(INTDIR)\globals.obj" \
+ "$(INTDIR)\nt.obj" \
+ "$(INTDIR)\trees.obj" \
+ "$(INTDIR)\ttyio.obj" \
+ "$(INTDIR)\util.obj" \
+ "$(INTDIR)\win32.obj" \
+ "$(INTDIR)\win32zip.obj" \
+ "$(INTDIR)\windll.obj" \
+ "$(INTDIR)\windll.res" \
+ "$(INTDIR)\zip.obj" \
+ "$(INTDIR)\zipfile.obj" \
+ "$(INTDIR)\zipup.obj"
+
+"$(OUTDIR)\zip32.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+OUTDIR=.\..\Debug\app
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\..\Debug\app
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\zip32.dll"
+
+!ELSE
+
+ALL : "$(OUTDIR)\zip32.dll"
+
+!ENDIF
+
+CLEAN :
+ -@erase "$(INTDIR)\api.obj"
+ -@erase "$(INTDIR)\crc32.obj"
+ -@erase "$(INTDIR)\crctab.obj"
+ -@erase "$(INTDIR)\crypt.obj"
+ -@erase "$(INTDIR)\deflate.obj"
+ -@erase "$(INTDIR)\fileio.obj"
+ -@erase "$(INTDIR)\globals.obj"
+ -@erase "$(INTDIR)\nt.obj"
+ -@erase "$(INTDIR)\trees.obj"
+ -@erase "$(INTDIR)\ttyio.obj"
+ -@erase "$(INTDIR)\util.obj"
+ -@erase "$(INTDIR)\vc50.idb"
+ -@erase "$(INTDIR)\vc50.pdb"
+ -@erase "$(INTDIR)\win32.obj"
+ -@erase "$(INTDIR)\win32zip.obj"
+ -@erase "$(INTDIR)\windll.obj"
+ -@erase "$(INTDIR)\windll.res"
+ -@erase "$(INTDIR)\zip.obj"
+ -@erase "$(INTDIR)\zipfile.obj"
+ -@erase "$(INTDIR)\zipup.obj"
+ -@erase "$(OUTDIR)\zip32.dll"
+ -@erase "$(OUTDIR)\zip32.exp"
+ -@erase "$(OUTDIR)\zip32.ilk"
+ -@erase "$(OUTDIR)\zip32.lib"
+ -@erase "$(OUTDIR)\zip32.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+ if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /Zp4 /MTd /W3 /Gm /GX /Zi /Od /I "..\..\.." /I\
+ "..\..\..\WINDLL" /I "..\..\..\WIN32" /D "_DEBUG" /D "_WINDOWS" /D "WIN32" /D\
+ "NO_ASM" /D "WINDLL" /D "MSDOS" /D "USE_ZIPMAIN"\
+ /Fp"$(INTDIR)\zip32.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP_OBJS=.\Debug/
+CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
+RSC=rc.exe
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\windll.res" /d "_DEBUG" /d "WIN32"
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\zip32.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib\
+ /nologo /subsystem:windows /dll /incremental:yes\
+ /pdb:"$(OUTDIR)\zip32.pdb" /debug /machine:I386\
+ /def:"..\..\..\windll\windll32.def" /out:"$(OUTDIR)\zip32.dll"\
+ /implib:"$(OUTDIR)\zip32.lib" /pdbtype:sept
+DEF_FILE= \
+ "..\..\..\windll\windll32.def"
+LINK32_OBJS= \
+ "$(INTDIR)\api.obj" \
+ "$(INTDIR)\crc32.obj" \
+ "$(INTDIR)\crctab.obj" \
+ "$(INTDIR)\crypt.obj" \
+ "$(INTDIR)\deflate.obj" \
+ "$(INTDIR)\fileio.obj" \
+ "$(INTDIR)\globals.obj" \
+ "$(INTDIR)\nt.obj" \
+ "$(INTDIR)\trees.obj" \
+ "$(INTDIR)\ttyio.obj" \
+ "$(INTDIR)\util.obj" \
+ "$(INTDIR)\win32.obj" \
+ "$(INTDIR)\win32zip.obj" \
+ "$(INTDIR)\windll.obj" \
+ "$(INTDIR)\windll.res" \
+ "$(INTDIR)\zip.obj" \
+ "$(INTDIR)\zipfile.obj" \
+ "$(INTDIR)\zipup.obj"
+
+"$(OUTDIR)\zip32.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
+
+!IF "$(CFG)" == "zip32 - Win32 Release" || "$(CFG)" == "zip32 - Win32 Debug"
+SOURCE=D:\wiz\zip\api.c
+DEP_CPP_API_C=\
+ "..\..\..\api.h"\
+ "..\..\..\crypt.h"\
+ "..\..\..\revision.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\windll\structs.h"\
+ "..\..\..\windll\windll.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\api.obj" : $(SOURCE) $(DEP_CPP_API_C) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=D:\wiz\zip\crc32.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_CRC32=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\crc32.obj" : $(SOURCE) $(DEP_CPP_CRC32) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_CRC32=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\crc32.obj" : $(SOURCE) $(DEP_CPP_CRC32) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=D:\wiz\zip\crctab.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_CRCTA=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\crctab.obj" : $(SOURCE) $(DEP_CPP_CRCTA) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_CRCTA=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\crctab.obj" : $(SOURCE) $(DEP_CPP_CRCTA) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=D:\wiz\zip\crypt.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_CRYPT=\
+ "..\..\..\api.h"\
+ "..\..\..\crypt.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\ttyio.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\crypt.obj" : $(SOURCE) $(DEP_CPP_CRYPT) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_CRYPT=\
+ "..\..\..\api.h"\
+ "..\..\..\crypt.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\ttyio.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\crypt.obj" : $(SOURCE) $(DEP_CPP_CRYPT) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=D:\wiz\zip\deflate.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_DEFLA=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\deflate.obj" : $(SOURCE) $(DEP_CPP_DEFLA) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_DEFLA=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\deflate.obj" : $(SOURCE) $(DEP_CPP_DEFLA) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=D:\wiz\zip\fileio.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_FILEI=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\fileio.obj" : $(SOURCE) $(DEP_CPP_FILEI) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_FILEI=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\fileio.obj" : $(SOURCE) $(DEP_CPP_FILEI) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=D:\wiz\zip\globals.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_GLOBA=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\globals.obj" : $(SOURCE) $(DEP_CPP_GLOBA) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_GLOBA=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\globals.obj" : $(SOURCE) $(DEP_CPP_GLOBA) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=D:\wiz\zip\Win32\nt.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_NT_C10=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\nt.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\nt.obj" : $(SOURCE) $(DEP_CPP_NT_C10) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_NT_C10=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\nt.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\nt.obj" : $(SOURCE) $(DEP_CPP_NT_C10) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=D:\wiz\zip\trees.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_TREES=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\trees.obj" : $(SOURCE) $(DEP_CPP_TREES) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_TREES=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\trees.obj" : $(SOURCE) $(DEP_CPP_TREES) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=D:\wiz\zip\ttyio.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_TTYIO=\
+ "..\..\..\api.h"\
+ "..\..\..\crypt.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\ttyio.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\ttyio.obj" : $(SOURCE) $(DEP_CPP_TTYIO) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_TTYIO=\
+ "..\..\..\api.h"\
+ "..\..\..\crypt.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\ttyio.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\ttyio.obj" : $(SOURCE) $(DEP_CPP_TTYIO) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=D:\wiz\zip\util.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_UTIL_=\
+ "..\..\..\api.h"\
+ "..\..\..\ebcdic.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\util.obj" : $(SOURCE) $(DEP_CPP_UTIL_) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_UTIL_=\
+ "..\..\..\api.h"\
+ "..\..\..\ebcdic.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\util.obj" : $(SOURCE) $(DEP_CPP_UTIL_) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=D:\wiz\zip\Win32\win32.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_WIN32=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\win32\win32zip.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\win32.obj" : $(SOURCE) $(DEP_CPP_WIN32) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_WIN32=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\win32\win32zip.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\win32.obj" : $(SOURCE) $(DEP_CPP_WIN32) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=D:\wiz\zip\Win32\win32zip.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_WIN32Z=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\nt.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\win32\win32zip.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\win32zip.obj" : $(SOURCE) $(DEP_CPP_WIN32Z) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_WIN32Z=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\nt.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\win32\win32zip.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\win32zip.obj" : $(SOURCE) $(DEP_CPP_WIN32Z) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=D:\wiz\zip\windll\windll.c
+DEP_CPP_WINDL=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\windll\structs.h"\
+ "..\..\..\windll\windll.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\windll.obj" : $(SOURCE) $(DEP_CPP_WINDL) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=D:\wiz\zip\windll\windll.rc
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+
+"$(INTDIR)\windll.res" : $(SOURCE) "$(INTDIR)"
+ $(RSC) /l 0x409 /fo"$(INTDIR)\windll.res" /i "\wiz\zip\windll" /d "NDEBUG" /d\
+ "WIN32" $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+
+"$(INTDIR)\windll.res" : $(SOURCE) "$(INTDIR)"
+ $(RSC) /l 0x409 /fo"$(INTDIR)\windll.res" /i "\wiz\zip\windll" /d "_DEBUG" /d\
+ "WIN32" $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=D:\wiz\zip\zip.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_ZIP_C=\
+ "..\..\..\api.h"\
+ "..\..\..\crypt.h"\
+ "..\..\..\revision.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\ttyio.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\windll\structs.h"\
+ "..\..\..\windll\windll.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\zip.obj" : $(SOURCE) $(DEP_CPP_ZIP_C) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_ZIP_C=\
+ "..\..\..\api.h"\
+ "..\..\..\crypt.h"\
+ "..\..\..\revision.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\ttyio.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\windll\structs.h"\
+ "..\..\..\windll\windll.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\zip.obj" : $(SOURCE) $(DEP_CPP_ZIP_C) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=D:\wiz\zip\zipfile.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_ZIPFI=\
+ "..\..\..\api.h"\
+ "..\..\..\revision.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\zipfile.obj" : $(SOURCE) $(DEP_CPP_ZIPFI) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_ZIPFI=\
+ "..\..\..\api.h"\
+ "..\..\..\revision.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\zipfile.obj" : $(SOURCE) $(DEP_CPP_ZIPFI) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=D:\wiz\zip\zipup.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_ZIPUP=\
+ "..\..\..\api.h"\
+ "..\..\..\crypt.h"\
+ "..\..\..\revision.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\win32\zipup.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\zipup.obj" : $(SOURCE) $(DEP_CPP_ZIPUP) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_ZIPUP=\
+ "..\..\..\api.h"\
+ "..\..\..\crypt.h"\
+ "..\..\..\revision.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\win32\zipup.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\zipup.obj" : $(SOURCE) $(DEP_CPP_ZIPUP) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+
+!ENDIF
+
diff --git a/windll/visualc/lib/zip32.dsp b/windll/visualc/lib/zip32.dsp
new file mode 100644
index 0000000..d23896c
--- /dev/null
+++ b/windll/visualc/lib/zip32.dsp
@@ -0,0 +1,162 @@
+# Microsoft Developer Studio Project File - Name="zip32" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=zip32 - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "zip32.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "zip32.mak" CFG="zip32 - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "zip32 - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "zip32 - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\Release\libs"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_WINDOWS" /D "WIN32" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\..\.." /I "..\..\..\win32" /I "..\..\..\windll" /D "NDEBUG" /D "_WINDOWS" /D "WIN32" /D "NO_ASM" /D "WINDLL" /D "MSDOS" /D "USE_ZIPMAIN" /D "ZIPLIB" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\Debug\libs"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "_DEBUG" /D "_WINDOWS" /D "WIN32" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /Z7 /Od /I "..\..\.." /I "..\..\..\win32" /I "..\..\..\windll" /D "_DEBUG" /D "_WINDOWS" /D "WIN32" /D "NO_ASM" /D "WINDLL" /D "MSDOS" /D "USE_ZIPMAIN" /D "ZIPLIB" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409
+# ADD RSC /l 0x409
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "zip32 - Win32 Release"
+# Name "zip32 - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\..\api.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\crc32.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\crctab.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\crypt.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\deflate.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\fileio.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\globals.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\win32\nt.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\trees.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\ttyio.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\util.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\win32\win32.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\win32\win32zip.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\windll\windll.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\windll\windll.rc
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\zip.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\zipfile.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\windll\ziplib.def
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\zipup.c
+# End Source File
+# End Target
+# End Project
diff --git a/windll/visualc/lib/zip32.dsw b/windll/visualc/lib/zip32.dsw
new file mode 100644
index 0000000..cb9248d
--- /dev/null
+++ b/windll/visualc/lib/zip32.dsw
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "zip32"=.\zip32.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/windll/visualc/lib/zip32.mak b/windll/visualc/lib/zip32.mak
new file mode 100644
index 0000000..4ea7923
--- /dev/null
+++ b/windll/visualc/lib/zip32.mak
@@ -0,0 +1,586 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on zip32.dsp
+!IF "$(CFG)" == ""
+CFG=zip32 - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to zip32 - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "zip32 - Win32 Release" && "$(CFG)" != "zip32 - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "zip32.mak" CFG="zip32 - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "zip32 - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "zip32 - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+OUTDIR=.\..\Release\libs
+INTDIR=.\Release
+# Begin Custom Macros
+OutDir=.\..\Release\libs
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\zip32.lib"
+
+!ELSE
+
+ALL : "$(OUTDIR)\zip32.lib"
+
+!ENDIF
+
+CLEAN :
+ -@erase "$(INTDIR)\api.obj"
+ -@erase "$(INTDIR)\crc32.obj"
+ -@erase "$(INTDIR)\crctab.obj"
+ -@erase "$(INTDIR)\crypt.obj"
+ -@erase "$(INTDIR)\deflate.obj"
+ -@erase "$(INTDIR)\fileio.obj"
+ -@erase "$(INTDIR)\globals.obj"
+ -@erase "$(INTDIR)\nt.obj"
+ -@erase "$(INTDIR)\trees.obj"
+ -@erase "$(INTDIR)\ttyio.obj"
+ -@erase "$(INTDIR)\util.obj"
+ -@erase "$(INTDIR)\vc50.idb"
+ -@erase "$(INTDIR)\win32.obj"
+ -@erase "$(INTDIR)\win32zip.obj"
+ -@erase "$(INTDIR)\windll.obj"
+ -@erase "$(INTDIR)\zip.obj"
+ -@erase "$(INTDIR)\zipfile.obj"
+ -@erase "$(INTDIR)\zipup.obj"
+ -@erase "$(OUTDIR)\zip32.lib"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+ if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "..\..\.." /I "..\..\..\WIN32" /I\
+ "..\..\..\WINDLL" /D "NDEBUG" /D "_WINDOWS" /D "WIN32" /D "NO_ASM" /D\
+ "WINDLL" /D "MSDOS" /D "USE_ZIPMAIN" /D "ZIPLIB"\
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP_OBJS=.\Release/
+CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\zip32.bsc"
+BSC32_SBRS= \
+
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\zip32.lib"
+LIB32_OBJS= \
+ "$(INTDIR)\api.obj" \
+ "$(INTDIR)\crc32.obj" \
+ "$(INTDIR)\crctab.obj" \
+ "$(INTDIR)\crypt.obj" \
+ "$(INTDIR)\deflate.obj" \
+ "$(INTDIR)\fileio.obj" \
+ "$(INTDIR)\globals.obj" \
+ "$(INTDIR)\nt.obj" \
+ "$(INTDIR)\trees.obj" \
+ "$(INTDIR)\ttyio.obj" \
+ "$(INTDIR)\util.obj" \
+ "$(INTDIR)\win32.obj" \
+ "$(INTDIR)\win32zip.obj" \
+ "$(INTDIR)\windll.obj" \
+ "$(INTDIR)\zip.obj" \
+ "$(INTDIR)\zipfile.obj" \
+ "$(INTDIR)\zipup.obj"
+
+"$(OUTDIR)\zip32.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+ $(LIB32) @<<
+ $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+OUTDIR=.\..\Debug\libs
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\..\Debug\libs
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\zip32.lib"
+
+!ELSE
+
+ALL : "$(OUTDIR)\zip32.lib"
+
+!ENDIF
+
+CLEAN :
+ -@erase "$(INTDIR)\api.obj"
+ -@erase "$(INTDIR)\crc32.obj"
+ -@erase "$(INTDIR)\crctab.obj"
+ -@erase "$(INTDIR)\crypt.obj"
+ -@erase "$(INTDIR)\deflate.obj"
+ -@erase "$(INTDIR)\fileio.obj"
+ -@erase "$(INTDIR)\globals.obj"
+ -@erase "$(INTDIR)\nt.obj"
+ -@erase "$(INTDIR)\trees.obj"
+ -@erase "$(INTDIR)\ttyio.obj"
+ -@erase "$(INTDIR)\util.obj"
+ -@erase "$(INTDIR)\vc50.idb"
+ -@erase "$(INTDIR)\win32.obj"
+ -@erase "$(INTDIR)\win32zip.obj"
+ -@erase "$(INTDIR)\windll.obj"
+ -@erase "$(INTDIR)\zip.obj"
+ -@erase "$(INTDIR)\zipfile.obj"
+ -@erase "$(INTDIR)\zipup.obj"
+ -@erase "$(OUTDIR)\zip32.lib"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+ if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MLd /W3 /GX /Z7 /Od /I "..\..\.." /I "..\..\..\WIN32" /I\
+ "..\..\..\WINDLL" /D "_DEBUG" /D "_WINDOWS" /D "WIN32" /D "NO_ASM" /D\
+ "WINDLL" /D "MSDOS" /D "USE_ZIPMAIN" /D "ZIPLIB"\
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP_OBJS=.\Debug/
+CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\zip32.bsc"
+BSC32_SBRS= \
+
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\zip32.lib"
+LIB32_OBJS= \
+ "$(INTDIR)\api.obj" \
+ "$(INTDIR)\crc32.obj" \
+ "$(INTDIR)\crctab.obj" \
+ "$(INTDIR)\crypt.obj" \
+ "$(INTDIR)\deflate.obj" \
+ "$(INTDIR)\fileio.obj" \
+ "$(INTDIR)\globals.obj" \
+ "$(INTDIR)\nt.obj" \
+ "$(INTDIR)\trees.obj" \
+ "$(INTDIR)\ttyio.obj" \
+ "$(INTDIR)\util.obj" \
+ "$(INTDIR)\win32.obj" \
+ "$(INTDIR)\win32zip.obj" \
+ "$(INTDIR)\windll.obj" \
+ "$(INTDIR)\zip.obj" \
+ "$(INTDIR)\zipfile.obj" \
+ "$(INTDIR)\zipup.obj"
+
+"$(OUTDIR)\zip32.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+ $(LIB32) @<<
+ $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ENDIF
+
+
+!IF "$(CFG)" == "zip32 - Win32 Release" || "$(CFG)" == "zip32 - Win32 Debug"
+SOURCE=..\..\..\api.c
+DEP_CPP_API_C=\
+ "..\..\..\api.h"\
+ "..\..\..\crypt.h"\
+ "..\..\..\revision.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\windll\structs.h"\
+ "..\..\..\windll\windll.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\api.obj" : $(SOURCE) $(DEP_CPP_API_C) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\crc32.c
+DEP_CPP_CRC32=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\crc32.obj" : $(SOURCE) $(DEP_CPP_CRC32) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\crctab.c
+DEP_CPP_CRCTA=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\crctab.obj" : $(SOURCE) $(DEP_CPP_CRCTA) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\crypt.c
+DEP_CPP_CRYPT=\
+ "..\..\..\api.h"\
+ "..\..\..\crypt.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\ttyio.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\crypt.obj" : $(SOURCE) $(DEP_CPP_CRYPT) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\deflate.c
+DEP_CPP_DEFLA=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\deflate.obj" : $(SOURCE) $(DEP_CPP_DEFLA) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\fileio.c
+DEP_CPP_FILEI=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\fileio.obj" : $(SOURCE) $(DEP_CPP_FILEI) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\globals.c
+DEP_CPP_GLOBA=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\globals.obj" : $(SOURCE) $(DEP_CPP_GLOBA) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\Win32\nt.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_NT_C10=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\nt.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\nt.obj" : $(SOURCE) $(DEP_CPP_NT_C10) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_NT_C10=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\nt.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\nt.obj" : $(SOURCE) $(DEP_CPP_NT_C10) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=..\..\..\trees.c
+DEP_CPP_TREES=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\trees.obj" : $(SOURCE) $(DEP_CPP_TREES) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\ttyio.c
+DEP_CPP_TTYIO=\
+ "..\..\..\api.h"\
+ "..\..\..\crypt.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\ttyio.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\ttyio.obj" : $(SOURCE) $(DEP_CPP_TTYIO) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\util.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_UTIL_=\
+ "..\..\..\api.h"\
+ "..\..\..\ebcdic.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\util.obj" : $(SOURCE) $(DEP_CPP_UTIL_) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_UTIL_=\
+ "..\..\..\api.h"\
+ "..\..\..\ebcdic.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\util.obj" : $(SOURCE) $(DEP_CPP_UTIL_) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=..\..\..\Win32\win32.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_WIN32=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\win32\win32zip.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\win32.obj" : $(SOURCE) $(DEP_CPP_WIN32) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_WIN32=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\win32\win32zip.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\win32.obj" : $(SOURCE) $(DEP_CPP_WIN32) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=..\..\..\Win32\win32zip.c
+
+!IF "$(CFG)" == "zip32 - Win32 Release"
+
+DEP_CPP_WIN32Z=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\nt.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\win32\win32zip.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\win32zip.obj" : $(SOURCE) $(DEP_CPP_WIN32Z) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ELSEIF "$(CFG)" == "zip32 - Win32 Debug"
+
+DEP_CPP_WIN32Z=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\nt.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\win32\win32zip.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\win32zip.obj" : $(SOURCE) $(DEP_CPP_WIN32Z) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+!ENDIF
+
+SOURCE=..\..\..\windll\windll.c
+DEP_CPP_WINDL=\
+ "..\..\..\api.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\windll\structs.h"\
+ "..\..\..\windll\windll.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\windll.obj" : $(SOURCE) $(DEP_CPP_WINDL) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\zip.c
+DEP_CPP_ZIP_C=\
+ "..\..\..\api.h"\
+ "..\..\..\crypt.h"\
+ "..\..\..\revision.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\ttyio.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\windll\structs.h"\
+ "..\..\..\windll\windll.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\zip.obj" : $(SOURCE) $(DEP_CPP_ZIP_C) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\zipfile.c
+DEP_CPP_ZIPFI=\
+ "..\..\..\api.h"\
+ "..\..\..\revision.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\zipfile.obj" : $(SOURCE) $(DEP_CPP_ZIPFI) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\..\zipup.c
+DEP_CPP_ZIPUP=\
+ "..\..\..\api.h"\
+ "..\..\..\crypt.h"\
+ "..\..\..\revision.h"\
+ "..\..\..\tailor.h"\
+ "..\..\..\win32\osdep.h"\
+ "..\..\..\win32\zipup.h"\
+ "..\..\..\zip.h"\
+ "..\..\..\ziperr.h"\
+
+
+"$(INTDIR)\zipup.obj" : $(SOURCE) $(DEP_CPP_ZIPUP) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+
+!ENDIF
+
diff --git a/windll/windll.c b/windll/windll.c
new file mode 100644
index 0000000..7da7304
--- /dev/null
+++ b/windll/windll.c
@@ -0,0 +1,174 @@
+/*
+ Copyright (c) 1990-1999 Info-ZIP. All rights reserved.
+
+ See the accompanying file LICENSE, version 1999-Oct-05 or later
+ (the contents of which are also included in zip.h) for terms of use.
+ If, for some reason, both of these files are missing, the Info-ZIP license
+ also may be found at: ftp://ftp.cdrom.com/pub/infozip/license.html
+*/
+/*
+ * windll.c by Mike White loosly based on Mark Adler's zip.c
+ */
+#include <windows.h>
+#include <process.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <ctype.h>
+#include "../zip.h"
+#include "windll.h"
+
+HINSTANCE hCurrentInst;
+#ifdef ZIPLIB
+/* DLL Entry Point */
+#ifdef __BORLANDC__
+#pragma argsused
+/* Borland seems to want DllEntryPoint instead of DllMain like MSVC */
+#define DllMain DllEntryPoint
+#endif
+#ifdef WIN32
+BOOL WINAPI DllMain( HINSTANCE hInstance,
+ DWORD dwReason,
+ LPVOID plvReserved)
+#else
+int WINAPI LibMain( HINSTANCE hInstance,
+ WORD wDataSegment,
+ WORD wHeapSize,
+ LPSTR lpszCmdLine )
+#endif
+{
+#ifndef WIN32
+/* The startup code for the DLL initializes the local heap(if there is one)
+ with a call to LocalInit which locks the data segment. */
+
+if ( wHeapSize != 0 )
+ {
+ UnlockData( 0 );
+ }
+hCurrentInst = hInstance;
+return 1; /* Indicate that the DLL was initialized successfully. */
+#else
+BOOL rc = TRUE;
+switch( dwReason )
+ {
+ case DLL_PROCESS_ATTACH:
+ // DLL is loaded. Do your initialization here.
+ // If cannot init, set rc to FALSE.
+ hCurrentInst = hInstance;
+ break;
+
+ case DLL_PROCESS_DETACH:
+ // DLL is unloaded. Do your cleanup here.
+ break;
+ default:
+ break;
+ }
+return rc;
+#endif
+}
+
+#ifdef __BORLANDC__
+#pragma argsused
+#endif
+int FAR PASCAL WEP ( int bSystemExit )
+{
+return 1;
+}
+#endif /* ZIPLIB */
+
+LPSTR szCommentBuf;
+HANDLE hStr;
+
+void comment(unsigned int comlen)
+{
+unsigned int i;
+if (comlen > 65534L)
+ comlen = (unsigned int) 65534L;
+hStr = GlobalAlloc( GPTR, (DWORD)65535L);
+if ( !hStr )
+ {
+ hStr = GlobalAlloc( GPTR, (DWORD) 2);
+ szCommentBuf = GlobalLock(hStr);
+ szCommentBuf[0] = '\0';
+ return;
+ }
+
+szCommentBuf = GlobalLock(hStr);
+if (comlen)
+ {
+ for (i = 0; i < comlen; i++)
+ szCommentBuf[i] = zcomment[i];
+ szCommentBuf[comlen] = '\0';
+ }
+else
+ szCommentBuf[0] = '\0';
+free(zcomment);
+zcomment = malloc(1);
+*zcomment = 0;
+lpZipUserFunctions->comment(szCommentBuf);
+return;
+}
+
+#define STDIO_BUF_SIZE 16384
+
+int __far __cdecl printf(const char *format, ...)
+{
+va_list argptr;
+HANDLE hMemory;
+LPSTR pszBuffer;
+int len;
+
+va_start(argptr, format);
+hMemory = GlobalAlloc(GMEM_MOVEABLE, STDIO_BUF_SIZE);
+WinAssert(hMemory);
+if (!hMemory)
+ {
+ return 0;
+ }
+pszBuffer = (LPSTR)GlobalLock(hMemory);
+WinAssert(pszBuffer);
+len = wvsprintf(pszBuffer, format, argptr);
+va_end(argptr);
+WinAssert(strlen(pszBuffer) < STDIO_BUF_SIZE);
+len = lpZipUserFunctions->print(pszBuffer, len);
+GlobalUnlock(hMemory);
+GlobalFree(hMemory);
+return len;
+}
+
+/* fprintf clone for code in zip.c, etc. */
+int __far __cdecl fprintf(FILE *file, const char *format, ...)
+{
+va_list argptr;
+HANDLE hMemory;
+LPSTR pszBuffer;
+int len;
+
+va_start(argptr, format);
+hMemory = GlobalAlloc(GMEM_MOVEABLE, STDIO_BUF_SIZE);
+WinAssert(hMemory);
+if (!hMemory)
+ {
+ return 0;
+ }
+pszBuffer = GlobalLock(hMemory);
+WinAssert(pszBuffer);
+len = wvsprintf(pszBuffer, format, argptr);
+va_end(argptr);
+WinAssert(strlen(pszBuffer) < STDIO_BUF_SIZE);
+if ((file == stderr) || (file == stdout))
+ {
+ len = lpZipUserFunctions->print(pszBuffer, len);
+ }
+else
+ len = write(fileno(file),(char far *)(pszBuffer), len);
+GlobalUnlock(hMemory);
+GlobalFree(hMemory);
+return len;
+}
+
+void __far __cdecl perror(const char *parm1)
+{
+printf(parm1);
+}
+
+
diff --git a/windll/windll.h b/windll/windll.h
new file mode 100644
index 0000000..fc20027
--- /dev/null
+++ b/windll/windll.h
@@ -0,0 +1,61 @@
+/*
+ Copyright (c) 1990-1999 Info-ZIP. All rights reserved.
+
+ See the accompanying file LICENSE, version 1999-Oct-05 or later
+ (the contents of which are also included in zip.h) for terms of use.
+ If, for some reason, both of these files are missing, the Info-ZIP license
+ also may be found at: ftp://ftp.cdrom.com/pub/infozip/license.html
+*/
+/*
+ WiZ 1.0 header file for zip dll
+*/
+#ifndef _WINDLL_H
+#define _WINDLL_H
+
+#include "structs.h"
+
+#ifndef MSWIN
+#define MSWIN
+#endif
+
+#ifndef USE_ZIPMAIN
+# define USE_ZIPMAIN
+#endif
+
+#ifndef NDEBUG
+# define WinAssert(exp) \
+ {\
+ if (!(exp))\
+ {\
+ char szBuffer[40];\
+ sprintf(szBuffer, "File %s, Line %d",\
+ __FILE__, __LINE__) ;\
+ if (IDABORT == MessageBox((HWND)NULL, szBuffer,\
+ "Assertion Error",\
+ MB_ABORTRETRYIGNORE|MB_ICONSTOP))\
+ FatalExit(-1);\
+ }\
+ }
+
+#else
+# define WinAssert(exp)
+#endif
+
+#define cchFilesMax 4096
+
+extern int WINAPI ZpArchive(ZCL C);
+extern HWND hGetFilesDlg;
+extern char szFilesToAdd[80];
+extern char rgszFiles[cchFilesMax];
+BOOL WINAPI CommentBoxProc(HWND hwndDlg, WORD wMessage, WPARAM wParam, LPARAM lParam);
+BOOL PasswordProc(HWND, WORD, WPARAM, LPARAM);
+void CenterDialog(HWND hwndParent, HWND hwndDlg);
+void comment(unsigned int);
+
+extern LPSTR szCommentBuf;
+extern HANDLE hStr;
+extern HWND hWndMain;
+void __far __cdecl perror(const char *);
+
+#endif /* _WINDLL_H */
+
diff --git a/windll/windll.rc b/windll/windll.rc
new file mode 100644
index 0000000..23adef4
--- /dev/null
+++ b/windll/windll.rc
@@ -0,0 +1,115 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#define APSTUDIO_HIDDEN_SYMBOLS
+#include "windows.h"
+#undef APSTUDIO_HIDDEN_SYMBOLS
+#include "zipver.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifndef _MAC
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,1,0,0
+ PRODUCTVERSION 2,3,1,0
+ FILEFLAGSMASK 0x3L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x1L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904e4"
+ BEGIN
+ VALUE "Comments", "\0"
+ VALUE "CompanyName", "Info-ZIP\0"
+ VALUE "FileDescription", "Info-ZIP's Zip dll\0"
+ VALUE "FileVersion", "2.31\0"
+ VALUE "InternalName", "Zip32\0"
+ VALUE "LegalCopyright", "Info-ZIP 2005\0"
+ VALUE "LegalTrademarks", "\0"
+ VALUE "OriginalFilename", "ZIP32.DLL\0"
+ VALUE "PrivateBuild", "\0"
+ VALUE "ProductName", "Info-ZIP's WiZ\0"
+ VALUE "ProductVersion", "2.31\0"
+ VALUE "SpecialBuild", "\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1252
+ END
+END
+
+#endif // !_MAC
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
+ "#include ""windows.h""\r\n"
+ "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
+ "#include ""zipver.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+#endif // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/windll/windll.txt b/windll/windll.txt
new file mode 100644
index 0000000..2166412
--- /dev/null
+++ b/windll/windll.txt
@@ -0,0 +1,132 @@
+The code set out below is not intended to be compiled, but is only intended as
+a very simplistic pointer to how to load and call the dll. You will have to
+look in the files referenced below for actual, working code.
+
+There are two entry points that use the structure shown below:
+
+BOOL WINAPI ZpSetOptions(ZPOPT) and
+ZPOPT WINAPI ZpGetOptions(void)
+
+typedef struct {
+LPSTR Date; /* Date to include after */
+LPSTR szRootDir; /* Directory to use as base for zipping */
+LPSTR szTempDir; /* Temporary directory used during zipping */
+BOOL fTemp; /* Use temporary directory '-b' during zipping */
+BOOL fSuffix; /* include suffixes (not implemented in WiZ) */
+BOOL fEncrypt; /* encrypt files */
+BOOL fSystem; /* include system and hidden files */
+BOOL fVolume; /* Include volume label */
+BOOL fExtra; /* Exclude extra attributes */
+BOOL fNoDirEntries; /* Do not add directory entries */
+BOOL fExcludeDate; /* Exclude files earlier than specified date */
+BOOL fIncludeDate; /* Include only files earlier than specified date */
+BOOL fVerbose; /* Mention oddities in zip file structure */
+BOOL fQuiet; /* Quiet operation */
+BOOL fCRLF_LF; /* Translate CR/LF to LF */
+BOOL fLF_CRLF; /* Translate LF to CR/LF */
+BOOL fJunkDir; /* Junk directory names */
+BOOL fGrow; /* Allow appending to a zip file */
+BOOL fForce; /* Make entries using DOS names (k for Katz) */
+BOOL fMove; /* Delete files added or updated in zip file */
+BOOL fDeleteEntries; /* Delete files from zip file */
+BOOL fUpdate; /* Update zip file--overwrite only if newer */
+BOOL fFreshen; /* Freshen zip file--overwrite only */
+BOOL fJunkSFX; /* Junk SFX prefix */
+BOOL fLatestTime; /* Set zip file time to time of latest file in it */
+BOOL fComment; /* Put comment in zip file */
+BOOL fOffsets; /* Update archive offsets for SFX files */
+BOOL fPrivilege; /* Use privileges (WIN32 only) */
+BOOL fEncryption; /* TRUE if encryption supported, else FALSE.
+ this is a read-only flag */
+int fRecurse; /* Recurse into subdirectories. 1 => -r, 2 => -R */
+int fRepair; /* Repair archive. 1 => -F, 2 => -FF */
+char fLevel; /* Compression level (0 - 9) */
+} ZPOPT, _far *LPZPOPT;
+
+BOOL WINAPI ZpSetOptions(ZPOPT);
+
+This call will simply set the options in the zip dll until such time as
+another call to this function is made. This must be made before the initial
+call to make or update an archive.
+
+ZPOPT WINAPI ZpGetOptions(void);
+
+The call will return the above structure from the dll, with the fEncryption
+flag set to the appropriate value based on whether encryption is supported
+in this dll or not. It is currently used in WiZ only to determine if
+encryption is actually supported.
+
+The main entry point is ZpArchive(ZCL) where the structure shown below
+is passed to the DLL when it is called.
+
+typedef struct {
+int argc; = Count of files to zip
+LPSTR lpszZipFN; = Archive file name
+char **FNV; = file names to zip up. Think of this an argv
+} ZCL, _far *LPZCL;
+
+
+For examples of how the actual calls to the dll were set up in WiZ, look in
+the file makezip.c in the WiZ source directory.
+
+For examples of how the actual loading and unloading of the dll's themselves
+was done, look in wizmain.c in the WiZ source directory. Note that WiZ looks
+specifically for a particular version number of the dll, and also expects to
+find the company name to be Info-ZIP. This is to protect from getting different
+versions of the dll loaded, with resulting unknown behavior.
+
+There is a very simplistic example of how to load and call into the dll in
+example.c and example.h. Note that this example does not implement any
+command line switches at all, and is merely intended as a guide for those
+brave enough to enter a new world.
+
+There are four additional (at the moment) entry points:
+
+ZpInit, defined as
+
+int WINAPI ZpInit(ZIPUSERFUNCTIONS far * lpZipUserFunc);
+
+where ZIPUSERFUNCTIONS is defined as below.
+
+ZpVersion, defined as
+
+ZpVer * ZpVersion(void);
+
+where ZpVer is defined as:
+
+typedef struct _ZpVer {
+ ulg structlen; /* length of the struct being passed */
+ ulg flag; /* bit 0: is_beta bit 1: uses_zlib */
+ char *betalevel; /* e.g., "g BETA" or "" */
+ char *date; /* e.g., "4 Sep 95" (beta) or "4 September 1995" */
+ char *zlib_version; /* e.g., "0.95" or NULL */
+ _zip_version_type zip;
+ _zip_version_type os2dll;
+ _zip_version_type windll;
+} ZpVer;
+
+See api.c for exactly what ZpVersion does, but the short version of
+what it does is return the unzip and dll versions in the ZpVer structure.
+The structure typedef's are in api.h
+
+The typedef's for the function pointers in the structure ZIPUSERFUNCTIONS
+are shown immediately below.
+
+typedef int (WINAPI DLLPRNT) (LPSTR, unsigned long);
+typedef int (WINAPI DLLPASSWORD) (LPSTR, int, LPCSTR, LPCSTR);
+typedef int (WINAPI DLLSERVICE) (LPCSTR, unsigned long);
+typedef int (WINAPI DLLCOMMENT) (LPSTR);
+
+typedef struct {
+DLLPRNT *print; = pointer to application's print function.
+DLLCOMMENT *comment; = pointer to application's function for processing
+ comments.
+DLLPASSWORD *password; = pointer to application's function for processing
+ passwords.
+DLLSERVICE *ServiceApplication; = Optional callback function for processing
+ messages, relaying information.
+} ZIPUSERFUNCTIONS, far * LPZIPUSERFUNCTIONS;
+
+Last revised January 5, 1999.
+
+Mike White
diff --git a/windll/windll16.def b/windll/windll16.def
new file mode 100644
index 0000000..1173b5f
--- /dev/null
+++ b/windll/windll16.def
@@ -0,0 +1,15 @@
+;module-definition file for Windows Zip DLL -- used by link.exe
+LIBRARY ZIP16 ; Library module name
+DESCRIPTION 'Windows Info-ZIP Zip DLL 1.01 by Info-ZIP, Mike White 1996'
+
+CODE PRELOAD FIXED
+
+DATA PRELOAD MOVEABLE
+
+EXPORTS
+ ZpArchive
+ ZpVersion
+ ZpInit
+ ZpSetOptions
+ ZpGetOptions
+
diff --git a/windll/windll32.def b/windll/windll32.def
new file mode 100644
index 0000000..cd2e021
--- /dev/null
+++ b/windll/windll32.def
@@ -0,0 +1,15 @@
+;module-definition file for Windows Zip DLL -- used by link.exe
+LIBRARY ZIP32 ; Library module name
+DESCRIPTION 'Windows Info-ZIP Zip DLL 1.01 by Info-ZIP, Mike White 1997'
+
+;CODE PRELOAD FIXED
+
+;DATA PRELOAD MOVEABLE
+
+EXPORTS
+ ZpArchive
+ ZpVersion
+ ZpInit
+ ZpSetOptions
+ ZpGetOptions
+
diff --git a/windll/ziplib.def b/windll/ziplib.def
new file mode 100644
index 0000000..0fcd139
--- /dev/null
+++ b/windll/ziplib.def
@@ -0,0 +1,15 @@
+;module-definition file for Windows Zip DLL -- used by link.exe
+LIBRARY ZIP32 ; Library module name
+DESCRIPTION 'Windows Info-ZIP Zip Library 1.02 by Info-ZIP, Mike White 1997'
+
+CODE PRELOAD FIXED
+
+DATA PRELOAD MOVEABLE
+
+EXPORTS
+ ZpArchive
+ ZpVersion
+ ZpInit
+ ZpSetOptions
+ ZpGetOptions
+
diff --git a/windll/zipver.h b/windll/zipver.h
new file mode 100644
index 0000000..c4b41f6
--- /dev/null
+++ b/windll/zipver.h
@@ -0,0 +1,15 @@
+/*
+ Copyright (c) 1990-2005 Info-ZIP. All rights reserved.
+
+ See the accompanying file LICENSE, version 2004-May-22 or later
+ (the contents of which are also included in zip.h) for terms of use.
+ If, for some reason, both of these files are missing, the Info-ZIP license
+ also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html
+*/
+#ifndef __zipver_h /* prevent multiple inclusions */
+#define __zipver_h
+
+#define ZIP_DLL_VERSION "2.31\0"
+#define COMPANY_NAME "Info-ZIP\0"
+
+#endif /* __zipver_h */