kolibrios/programs/fs/unzip60/wince/README
siemargl e9b1c1bac6 unzip initial commit
git-svn-id: svn://kolibrios.org@6725 a494cfbc-eb01-0410-851d-a64ba20cac60
2016-11-18 13:40:05 +00:00

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