Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. _______________________________________________________________________________
  2.  
  3.    This is the Windows CE Info-ZIP port README, last updated 17 September 2003.
  4. _______________________________________________________________________________
  5.  
  6.    Copyright and Disclaimer
  7. _______________________________________________________________________________
  8.  
  9. Copyright
  10.  
  11.      All the source files for Pocket UnZip are copyrighted by Info-ZIP.
  12.      For details on terms and conditions look into the LICENSE file
  13.      that should be part of the source distribution.
  14.      The original author Steve P. Miller has gracefully allowed to
  15.      put his own source contributions for "Pocket UnZip" under the
  16.      Info-ZIP license.
  17.  
  18. Disclaimer
  19.  
  20.      All project files are provided "as is" with no guarantee of
  21.      their correctness.  The authors are not liable for any outcome
  22.      that is the result of using this source.  The source for Pocket
  23.      UnZip has been placed in the public domain to help provide an
  24.      understanding of its implementation.  You are hereby granted
  25.      full permission to use this source in any way you wish, except
  26.      to alter Pocket UnZip itself.  For comments, suggestions, and
  27.      bug reports, please write to stevemil@pobox.com or to the
  28.      generic Info-ZIP e-mail address Zip-Bugs@lists.wku.edu.
  29.  
  30. _______________________________________________________________________________
  31.  
  32.    About the Windows CE Port (known as "Pocket UnZip")
  33. _______________________________________________________________________________
  34.  
  35. The Windows CE port, known as Pocket UnZip, is designed to run on Microsoft's
  36. Windows CE operating system.  The port is completely contained in the files
  37. listed above.  There were very few minor modifications made to the Info-ZIP
  38. code in order for this port to work.  This was possible because the Info-ZIP
  39. code is fairly generic and also because several hooks have already been placed
  40. in the code from past Windows ports.  The Windows CE port leverages off of
  41. these efforts for two reasons.  Mainly, I wanted to avoid modifying the
  42. Info-ZIP core code since people don't like it when your changes break other
  43. ports.  Second, this makes the Windows CE port easy to upgrade when fixes and
  44. features are released by the Info-ZIP group.
  45.  
  46. The port is made up of the project file (punzip.dsp), one global header
  47. (punzip.h), three main source modules (winmain.cpp/h, intrface.cpp/h,
  48. and wince.cpp/h), the resource script files (punzip.rc, punzip.rcv, and
  49. resource.h), several resources (punzip.ic2, zipfile.ic2, imglist.2bp,
  50. ilmask.bmp, toolbar.2bp, punzip.ico, zipfile.ico, imglist.bmp, and
  51. toolbar.bmp), and the help file (punzip.htp).
  52.  
  53. The application's entry point is WinMain(), which is located in winmain.cpp
  54. (what a surprise).  winmain.cpp basically contains all the Windows code and
  55. the user interface.  It knows nothing about the Info-ZIP code or things like
  56. the Globals struct.  That stuff is the job of the intrface module.
  57. intrface.cpp implements an easy (or at least easier) to understand interface
  58. to the Info-ZIP routines.  It also handles all the callbacks from Info-ZIP
  59. and relays the appropriate information back to the code in winmain.cpp.
  60. The final module is wince.cpp.  This module implements all the Win32 APIs
  61. and C runtime functions that are called by the rest of the code, but are
  62. not natively implemented on Windows CE.  Most all of this module is excluded
  63. for NT native builds.
  64.  
  65. Two preprocessor defines are used in conjunction with several defines from
  66. the Info-ZIP code and from other ports.  The two that are specific to the
  67. Windows CE port are:
  68.  
  69.      POCKET_UNZIP   Always set for the Windows CE port (CE and NT).
  70.      _WIN32_WCE     Set for Windows CE native; not set for Windows NT native.
  71.  
  72. These three defines are the minimum defines that must be addressed by the
  73. project file in order to build this port.  This port's main header, punzip.h,
  74. gets included by all the Info-ZIP source files when POCKET_UNZIP is defined.
  75. punzip.h in turn ensures that all the other relevant Info-ZIP defines are set
  76. to correctly build the port.  If you wish to alter the Info-ZIP defines used
  77. to build this port, you can do so by altering punzip.h.
  78.  
  79. There are quite a few _WIN32_WCE checks throughout the source files for this
  80. port.  These checks allow the application to build natively for Windows NT for
  81. debugging purposes, and just because it can with little effort due to the
  82. similarities between the Windows CE API and the Windows NT API. Any non-Windows
  83. CE code is assumed to be for Windows NT only.  This project currently will not
  84. work on Windows 95 because Windows CE is mostly UNICODE, and this port assumes
  85. that all Win32 calls to the operating system take UNICODE parameters.  I could
  86. scatter a few dozen "#ifdef UNICODE" checks around and make it work on Windows
  87. 95, but I see no reason to complicate this port's code for that reason since
  88. there is already a Windows 95 port of the Info-ZIP code.
  89.  
  90. _______________________________________________________________________________
  91.  
  92.    Building the Windows CE Port (known as "Pocket UnZip")
  93. _______________________________________________________________________________
  94.  
  95. At the time this README was written, Microsoft just released Visual C++ for
  96. Windows CE version 1.0.  This development kit uses the the standard Microsoft
  97. Visual C++ version 5.0 or 6.0 development environment and project files
  98. (DSP files). To build Windows CE binaries of Pocket UnZip, you will need
  99. version 1.0 or later of Visual C++ for Windows CE.
  100.  
  101. This port's project file, punzip.dsp, contains the information for building all
  102. the various binaries.  These include Windows NT native, Windows CE native for
  103. Hitachi SH-3 processors, and Windows CE native for MIPS processors.  All
  104. projects have Debug and Retail flavors as well.  The following table lists the
  105. Windows CE devices and which binary they run:
  106.  
  107.      Manufacturer             CPU             Binary
  108.      ---------------------    ------------    ------
  109.      Philips Electronics      MIPS R3910      MIPS
  110.      NEC Corp.                NEC VR4101      MIPS
  111.      Casio Computer Co.       Hitachi SH-3    SH-3
  112.      Compaq Computer Corp.    Hitachi SH-3    SH-3
  113.      Hewlett-Packard Co.      Hitachi SH-3    SH-3
  114.      Hitachi Ltd.             Hitachi SH-3    SH-3
  115.      LG Electronics Inc.      Hitachi SH-3    SH-3
  116.  
  117. The revision of this port made for UnZip 5.51 does now also provide a project
  118. file for use with Microsoft's free "Visual C++ embedded 3.0" development system
  119. for Windows CE.
  120.  
  121. Pocket UnZip should build out of the box.  If you have just unzipped the
  122. Info-ZIP's UnZip sources, you should have a root directory with the core
  123. Info-ZIP files in it and several subdirectories under it for the various
  124. ports, one of which is the WinCE directory.  The project files punzip.dsp
  125. are located in the subdirectory vc5 resp. vc6 below the wince directory.
  126. Open the punzip.dsp file from the subdirectory matching your Visual C++
  127. base version.  The project file uses all the files in the WinCE
  128. subdirectory as well as the following files in the Info-ZIP root:
  129.  
  130.      api.c        crypt.h      globals.c    process.c    unzip.h
  131.      consts.h     ebcdic.h     globals.h    ttyio.c      unzpriv.h
  132.      crc32.c      explode.c    inflate.c    ttyio.h      unzvers.h
  133.      crc32.h      extract.c    inflate.h    unreduce.c   zip.h
  134.      crypt.c      fileio.c     list.c       unshrink.c
  135.  
  136. _______________________________________________________________________________
  137.  
  138.    Contacting the Authors
  139. _______________________________________________________________________________
  140.  
  141. The Info-ZIP group is made up of dozens of people, past and present, who
  142. have devoted countless hours to providing the public with free and portable
  143. compression software.  The author of the Windows CE port, Pocket UnZip, is
  144. Steve P. Miller.
  145.  
  146. If you have questions, comments, suggestions, or bug reports concerning Pocket
  147. UnZip itself, you can write Steve Miller at:
  148.  
  149.      stevemil@pobox.com
  150.  
  151. If you find a bug that appears to be more Info-ZIP related (i.e. the actual
  152. decompression part of Pocket UnZip), you can send mail to:
  153.  
  154.      Zip-Bugs@lists.wku.edu
  155.  
  156. For all other general discussion type questions or comments, you can send mail
  157. to (as well as join) the following mailing list:
  158.  
  159.      Info-Zip@lists.wku.edu
  160.  
  161. See the main UnZip README file for info on how to join the latter list.
  162.  
  163. _______________________________________________________________________________
  164.  
  165. Beginning with UnZip 5.51, the source distribution contains a second port for
  166. WinCE, providing a "command line UnZip tool" for batch processing on Windows CE
  167. systems.
  168. This port was contributed in September 2002 by:
  169.     Simon Roberts
  170.     IBM Global Services, EMEA
  171.     Phone: (INT 44- 2392 )(UK  02392 ) 563937: Tie-line(UK): 25-3937
  172.     Notes: Simon Roberts/UK/IBM@IBMGB
  173.     Internet: Simon_Roberts@uk.ibm.com
  174.  
  175. The tight integration of this contribution into the main UnZip distribution
  176. code required some reorganization and was carried out by the UnZip maintenance
  177. coordinator Christian Spieler.
  178.  
  179. The build of the Win CE command line program requires compiling
  180. and linking together the following source modules:
  181.  
  182.     wince/wcemain.c             main entry point
  183.     unzip.c                     unzip command line interface
  184.     crc32.c                     CRC-32 calculation
  185.     crypt.c                     decryption support
  186.     extract.c                   general archive extraction handling
  187.     fileio.c                    internal I/O helper routines
  188.     globals.c                   global communication resources setup
  189.     list.c                      archive listing
  190.     match.c                     wildcard pattern matching
  191.     process.c                   general archives processing code
  192.     ttyio.c                     interactive console I/O
  193.     explode.c                   decompression for "Imploded" data (LZ77)
  194.     inflate.c                   decompression for "Deflate" methods
  195.     unreduce.c                  decompression for "Reduced" data
  196.     unshrink.c                  decompression for "Shrunk" data (LZW)
  197.     wince/intrface.cpp          WinCE specific UnZip code
  198.     wince/wince.cpp             WinCE specific C RTL lib replacements
  199.  
  200. These source modules depend on the following header files:
  201.  
  202.     zip.h                       wrapper for unzip.h used by some modules
  203.     unzip.h                     main UnZip project header
  204.     unzpriv.h                   extended defines for project internals
  205.     globals.h                   global resource structures
  206.     wince/wcecfg.h              Windows CE specific configuration
  207.     wince/wince.h               WinCE C(++) library roundups
  208.  
  209.     consts.h                    global constant data
  210.     crc32.h                     CRC-32 calculation interface
  211.     crypt.h                     decryption interface
  212.     ebcdic.h                    ASCII <--> EBCDIC translation
  213.     ttyio.h                     console I/O interface
  214.     unzvers.h                   version/release information
  215.     wince/intrface.h            public entities in wince/intrface.cpp
  216.  
  217.