forked from KolibriOS/kolibrios
e9b1c1bac6
git-svn-id: svn://kolibrios.org@6725 a494cfbc-eb01-0410-851d-a64ba20cac60
217 lines
11 KiB
Plaintext
217 lines
11 KiB
Plaintext
_______________________________________________________________________________
|
|
|
|
This is the Windows CE Info-ZIP port README, last updated 17 September 2003.
|
|
_______________________________________________________________________________
|
|
|
|
Copyright and Disclaimer
|
|
_______________________________________________________________________________
|
|
|
|
Copyright
|
|
|
|
All the source files for Pocket UnZip are copyrighted by Info-ZIP.
|
|
For details on terms and conditions look into the LICENSE file
|
|
that should be part of the source distribution.
|
|
The original author Steve P. Miller has gracefully allowed to
|
|
put his own source contributions for "Pocket UnZip" under the
|
|
Info-ZIP license.
|
|
|
|
Disclaimer
|
|
|
|
All project files are provided "as is" with no guarantee of
|
|
their correctness. The authors are not liable for any outcome
|
|
that is the result of using this source. The source for Pocket
|
|
UnZip has been placed in the public domain to help provide an
|
|
understanding of its implementation. You are hereby granted
|
|
full permission to use this source in any way you wish, except
|
|
to alter Pocket UnZip itself. For comments, suggestions, and
|
|
bug reports, please write to stevemil@pobox.com or to the
|
|
generic Info-ZIP e-mail address Zip-Bugs@lists.wku.edu.
|
|
|
|
_______________________________________________________________________________
|
|
|
|
About the Windows CE Port (known as "Pocket UnZip")
|
|
_______________________________________________________________________________
|
|
|
|
The Windows CE port, known as Pocket UnZip, is designed to run on Microsoft's
|
|
Windows CE operating system. The port is completely contained in the files
|
|
listed above. There were very few minor modifications made to the Info-ZIP
|
|
code in order for this port to work. This was possible because the Info-ZIP
|
|
code is fairly generic and also because several hooks have already been placed
|
|
in the code from past Windows ports. The Windows CE port leverages off of
|
|
these efforts for two reasons. Mainly, I wanted to avoid modifying the
|
|
Info-ZIP core code since people don't like it when your changes break other
|
|
ports. Second, this makes the Windows CE port easy to upgrade when fixes and
|
|
features are released by the Info-ZIP group.
|
|
|
|
The port is made up of the project file (punzip.dsp), one global header
|
|
(punzip.h), three main source modules (winmain.cpp/h, intrface.cpp/h,
|
|
and wince.cpp/h), the resource script files (punzip.rc, punzip.rcv, and
|
|
resource.h), several resources (punzip.ic2, zipfile.ic2, imglist.2bp,
|
|
ilmask.bmp, toolbar.2bp, punzip.ico, zipfile.ico, imglist.bmp, and
|
|
toolbar.bmp), and the help file (punzip.htp).
|
|
|
|
The application's entry point is WinMain(), which is located in winmain.cpp
|
|
(what a surprise). winmain.cpp basically contains all the Windows code and
|
|
the user interface. It knows nothing about the Info-ZIP code or things like
|
|
the Globals struct. That stuff is the job of the intrface module.
|
|
intrface.cpp implements an easy (or at least easier) to understand interface
|
|
to the Info-ZIP routines. It also handles all the callbacks from Info-ZIP
|
|
and relays the appropriate information back to the code in winmain.cpp.
|
|
The final module is wince.cpp. This module implements all the Win32 APIs
|
|
and C runtime functions that are called by the rest of the code, but are
|
|
not natively implemented on Windows CE. Most all of this module is excluded
|
|
for NT native builds.
|
|
|
|
Two preprocessor defines are used in conjunction with several defines from
|
|
the Info-ZIP code and from other ports. The two that are specific to the
|
|
Windows CE port are:
|
|
|
|
POCKET_UNZIP Always set for the Windows CE port (CE and NT).
|
|
_WIN32_WCE Set for Windows CE native; not set for Windows NT native.
|
|
|
|
These three defines are the minimum defines that must be addressed by the
|
|
project file in order to build this port. This port's main header, punzip.h,
|
|
gets included by all the Info-ZIP source files when POCKET_UNZIP is defined.
|
|
punzip.h in turn ensures that all the other relevant Info-ZIP defines are set
|
|
to correctly build the port. If you wish to alter the Info-ZIP defines used
|
|
to build this port, you can do so by altering punzip.h.
|
|
|
|
There are quite a few _WIN32_WCE checks throughout the source files for this
|
|
port. These checks allow the application to build natively for Windows NT for
|
|
debugging purposes, and just because it can with little effort due to the
|
|
similarities between the Windows CE API and the Windows NT API. Any non-Windows
|
|
CE code is assumed to be for Windows NT only. This project currently will not
|
|
work on Windows 95 because Windows CE is mostly UNICODE, and this port assumes
|
|
that all Win32 calls to the operating system take UNICODE parameters. I could
|
|
scatter a few dozen "#ifdef UNICODE" checks around and make it work on Windows
|
|
95, but I see no reason to complicate this port's code for that reason since
|
|
there is already a Windows 95 port of the Info-ZIP code.
|
|
|
|
_______________________________________________________________________________
|
|
|
|
Building the Windows CE Port (known as "Pocket UnZip")
|
|
_______________________________________________________________________________
|
|
|
|
At the time this README was written, Microsoft just released Visual C++ for
|
|
Windows CE version 1.0. This development kit uses the the standard Microsoft
|
|
Visual C++ version 5.0 or 6.0 development environment and project files
|
|
(DSP files). To build Windows CE binaries of Pocket UnZip, you will need
|
|
version 1.0 or later of Visual C++ for Windows CE.
|
|
|
|
This port's project file, punzip.dsp, contains the information for building all
|
|
the various binaries. These include Windows NT native, Windows CE native for
|
|
Hitachi SH-3 processors, and Windows CE native for MIPS processors. All
|
|
projects have Debug and Retail flavors as well. The following table lists the
|
|
Windows CE devices and which binary they run:
|
|
|
|
Manufacturer CPU Binary
|
|
--------------------- ------------ ------
|
|
Philips Electronics MIPS R3910 MIPS
|
|
NEC Corp. NEC VR4101 MIPS
|
|
Casio Computer Co. Hitachi SH-3 SH-3
|
|
Compaq Computer Corp. Hitachi SH-3 SH-3
|
|
Hewlett-Packard Co. Hitachi SH-3 SH-3
|
|
Hitachi Ltd. Hitachi SH-3 SH-3
|
|
LG Electronics Inc. Hitachi SH-3 SH-3
|
|
|
|
The revision of this port made for UnZip 5.51 does now also provide a project
|
|
file for use with Microsoft's free "Visual C++ embedded 3.0" development system
|
|
for Windows CE.
|
|
|
|
Pocket UnZip should build out of the box. If you have just unzipped the
|
|
Info-ZIP's UnZip sources, you should have a root directory with the core
|
|
Info-ZIP files in it and several subdirectories under it for the various
|
|
ports, one of which is the WinCE directory. The project files punzip.dsp
|
|
are located in the subdirectory vc5 resp. vc6 below the wince directory.
|
|
Open the punzip.dsp file from the subdirectory matching your Visual C++
|
|
base version. The project file uses all the files in the WinCE
|
|
subdirectory as well as the following files in the Info-ZIP root:
|
|
|
|
api.c crypt.h globals.c process.c unzip.h
|
|
consts.h ebcdic.h globals.h ttyio.c unzpriv.h
|
|
crc32.c explode.c inflate.c ttyio.h unzvers.h
|
|
crc32.h extract.c inflate.h unreduce.c zip.h
|
|
crypt.c fileio.c list.c unshrink.c
|
|
|
|
_______________________________________________________________________________
|
|
|
|
Contacting the Authors
|
|
_______________________________________________________________________________
|
|
|
|
The Info-ZIP group is made up of dozens of people, past and present, who
|
|
have devoted countless hours to providing the public with free and portable
|
|
compression software. The author of the Windows CE port, Pocket UnZip, is
|
|
Steve P. Miller.
|
|
|
|
If you have questions, comments, suggestions, or bug reports concerning Pocket
|
|
UnZip itself, you can write Steve Miller at:
|
|
|
|
stevemil@pobox.com
|
|
|
|
If you find a bug that appears to be more Info-ZIP related (i.e. the actual
|
|
decompression part of Pocket UnZip), you can send mail to:
|
|
|
|
Zip-Bugs@lists.wku.edu
|
|
|
|
For all other general discussion type questions or comments, you can send mail
|
|
to (as well as join) the following mailing list:
|
|
|
|
Info-Zip@lists.wku.edu
|
|
|
|
See the main UnZip README file for info on how to join the latter list.
|
|
|
|
_______________________________________________________________________________
|
|
|
|
Beginning with UnZip 5.51, the source distribution contains a second port for
|
|
WinCE, providing a "command line UnZip tool" for batch processing on Windows CE
|
|
systems.
|
|
This port was contributed in September 2002 by:
|
|
Simon Roberts
|
|
IBM Global Services, EMEA
|
|
Phone: (INT 44- 2392 )(UK 02392 ) 563937: Tie-line(UK): 25-3937
|
|
Notes: Simon Roberts/UK/IBM@IBMGB
|
|
Internet: Simon_Roberts@uk.ibm.com
|
|
|
|
The tight integration of this contribution into the main UnZip distribution
|
|
code required some reorganization and was carried out by the UnZip maintenance
|
|
coordinator Christian Spieler.
|
|
|
|
The build of the Win CE command line program requires compiling
|
|
and linking together the following source modules:
|
|
|
|
wince/wcemain.c main entry point
|
|
unzip.c unzip command line interface
|
|
crc32.c CRC-32 calculation
|
|
crypt.c decryption support
|
|
extract.c general archive extraction handling
|
|
fileio.c internal I/O helper routines
|
|
globals.c global communication resources setup
|
|
list.c archive listing
|
|
match.c wildcard pattern matching
|
|
process.c general archives processing code
|
|
ttyio.c interactive console I/O
|
|
explode.c decompression for "Imploded" data (LZ77)
|
|
inflate.c decompression for "Deflate" methods
|
|
unreduce.c decompression for "Reduced" data
|
|
unshrink.c decompression for "Shrunk" data (LZW)
|
|
wince/intrface.cpp WinCE specific UnZip code
|
|
wince/wince.cpp WinCE specific C RTL lib replacements
|
|
|
|
These source modules depend on the following header files:
|
|
|
|
zip.h wrapper for unzip.h used by some modules
|
|
unzip.h main UnZip project header
|
|
unzpriv.h extended defines for project internals
|
|
globals.h global resource structures
|
|
wince/wcecfg.h Windows CE specific configuration
|
|
wince/wince.h WinCE C(++) library roundups
|
|
|
|
consts.h global constant data
|
|
crc32.h CRC-32 calculation interface
|
|
crypt.h decryption interface
|
|
ebcdic.h ASCII <--> EBCDIC translation
|
|
ttyio.h console I/O interface
|
|
unzvers.h version/release information
|
|
wince/intrface.h public entities in wince/intrface.cpp
|
|
|