home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume31 / unzip50 / part10 < prev    next >
Encoding:
Text File  |  1992-08-22  |  59.2 KB  |  1,354 lines

  1. Newsgroups: comp.sources.misc
  2. From: zip-bugs@cs.ucla.edu (Info-ZIP group)
  3. Subject:  v31i113:  unzip50 - Info-ZIP portable UnZip, version 5.0, Part10/14
  4. Message-ID: <1992Aug24.025724.25125@sparky.imd.sterling.com>
  5. X-Md4-Signature: cdd89425358d52baa5888763c678e518
  6. Date: Mon, 24 Aug 1992 02:57:24 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: zip-bugs@cs.ucla.edu (Info-ZIP group)
  10. Posting-number: Volume 31, Issue 113
  11. Archive-name: unzip50/part10
  12. Supersedes: unzip: Volume 29, Issue 31-42
  13. Environment: UNIX, VMS, OS/2, MS-DOS, MACINTOSH, WIN-NT, LINUX, MINIX, COHERENT AMIGA?, !ATARI, symlink, SGI, DEC, Cray, Convex, Amdahl, Sun
  14.  
  15. #! /bin/sh
  16. # This is a shell archive.  Remove anything before this line, then feed it
  17. # into a shell via "sh file" or similar.  To overwrite existing files,
  18. # type "sh file -c".
  19. # The tool that generated this appeared in the comp.sources.unix newsgroup;
  20. # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
  21. # Contents:  Contents History.500 MSDOS/bcc/unzip.prj.UU
  22. #   MSDOS/bcc/unzip_cr.prj.UU MSDOS/bcc/zipinfo.prj.UU OS2/os2unzip.c
  23. # Wrapped by kent@sparky on Sun Aug 23 21:09:35 1992
  24. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  25. echo If this archive is complete, you will see the following message:
  26. echo '          "shar: End of archive 10 (of 14)."'
  27. if test -f 'Contents' -a "${1}" != "-c" ; then 
  28.   echo shar: Will not clobber existing file \"'Contents'\"
  29. else
  30.   echo shar: Extracting \"'Contents'\" \(2945 characters\)
  31.   sed "s/^X//" >'Contents' <<'END_OF_FILE'
  32. XContents of the UnZip 5.0 archive (the OS-specific subdirectories at the
  33. Xend contain their own Contents listings):
  34. X
  35. X  Contents    this file
  36. X  Readme    what UnZip is; general information
  37. X  Where        where Zip/UnZip and encryption/decryption support can be found
  38. X  History.500    new features and fixes in this release
  39. X  ZipRules    Info-ZIP guidelines on contributions to the cause
  40. X  BUGS        known bugs, problems, and (possible) features to be added
  41. X  unzip.1    UnZip manual page, nroff format
  42. X  unzip.doc    UnZip manual page, human-readable format
  43. X  zipinfo.1    ZipInfo manual page, nroff format
  44. X  zipinfo.doc    ZipInfo manual page, human-readable format
  45. X  funzip.1     FUnZip manual page, nroff format
  46. X  funzip.doc     FUnZip manual page, human-readable format
  47. X  CONTRIBS    list of contributors to UnZip
  48. X  COPYING    copyrights and distribution policy
  49. X  crypt.c       NOT INCLUDED:  see "Where" file for sites
  50. X  envargs.c    code to read options from UNZIP environment var. (required*)
  51. X  explode.c    code for exploding (required)
  52. X  extract.c    high-level extraction and decryption code (required)
  53. X  file_io.c    file manipulation and password code (required)
  54. X  funzip.c     filter unzip:  extracts in a Unix pipe (not fully supported)
  55. X  inflate.c    code for inflating (required)
  56. X  mapname.c    code to map filenames between different OS's (required)
  57. X  match.c    pattern-matching code for filename wildcards (required*)
  58. X  misc.c    various support routines (required*)
  59. X  unreduce.c    code for unReducing (required)
  60. X  unshrink.c    code for unShrinking (required)
  61. X  unzip.c    main UnZip driver code (required)
  62. X  unzip.h    main UnZip header file (required*)
  63. X  zip.h        header for using crypt.c with UnZip (required for decryption)
  64. X  zipinfo.c    zipfile information utility (useful, but optional)
  65. X  Makefile    main Unix and OS/2 makefile (required)
  66. X  AMIGA/    support files for compiling on Amiga (not recently tested)
  67. X  ATARI/    support files for compiling v4.1 on Atari ST
  68. X  MAC/        support files for compiling on Macintosh
  69. X  MSDOS/    support files for compiling under MS-DOS
  70. X  NT/        support files for compiling under Windows NT
  71. X  OS2/        support files for compiling under OS/2
  72. X  VMS/        support files for compiling under VMS
  73. X
  74. XFiles marked "required*" are also needed to compile ZipInfo.  There are Unix
  75. Xand MS-DOS targets to make ZipInfo in Makefile (zipinfo, zi_indigo, zi_gcc, 
  76. Xzi_dos).  FUnZip is a new, last-minute program of limited capabilities; for
  77. Xnow, it can only extract the first member in a zipfile from stdin and send
  78. Xit to stdout, and only if the member is either deflated or stored.  It will 
  79. Xprobably have evolved by the time you read this, and it may even be absorbed 
  80. Xinto UnZip itself.
  81. X
  82. XThe Atari ST support is in the form of patches against UnZip 4.1; there
  83. Xare more details in the ATARI sub-archive Contents file.  Amiga support
  84. Xhas not been tested since version 4.1 or earlier (the makefiles, however,
  85. Xhave been updated to reflect the new code structure, and any changes
  86. Xrequired shouldn't be TOO extensive).
  87. END_OF_FILE
  88.   if test 2945 -ne `wc -c <'Contents'`; then
  89.     echo shar: \"'Contents'\" unpacked with wrong size!
  90.   fi
  91.   # end of 'Contents'
  92. fi
  93. if test -f 'History.500' -a "${1}" != "-c" ; then 
  94.   echo shar: Will not clobber existing file \"'History.500'\"
  95. else
  96.   echo shar: Extracting \"'History.500'\" \(11988 characters\)
  97.   sed "s/^X//" >'History.500' <<'END_OF_FILE'
  98. XUnZip version 5.0, 22 August 1992
  99. X
  100. XNew features, you betcha:
  101. X
  102. X - inflation [Mark Adler]
  103. X - unimploding (exploding) rewritten--much faster, no copyright restrictions
  104. X    [Mark Adler]
  105. X - updated makefiles for inflation and explosion [Jean-loup Gailly, Glenn
  106. X    Andrews, Mark Adler, CN, ...]
  107. X - multiple password guessing [CN, Mark Adler]
  108. X - OS/2:  extended attributes code, including decompression [Kai Uwe Rommel]
  109. X - MS-DOS:  Quick C makefile [Richard Seay]
  110. X - new public domain version of match.c to replace copyrighted SEA version
  111. X    [J. Kercheval, David Kirschbaum]
  112. X - INBUFSIZ may be changed on compile line (e.g., -DINBUFSIZ=8192) [Steve
  113. X    Salisbury]
  114. X - Mac:  new extra-field resource fork stuff [Johnny Lee]
  115. X - VMS:  f*def.h header files included within VMSmunch.h for neatness [CN]
  116. X - new zipinfo formats (well, slightly different), including the default,
  117. X    allowing longer filenames without wrapping [CN]
  118. X - special file perms (sticky bits, etc.) now restored properly (with excep-
  119. X    tion of compressed symlinks, as noted in BUGS) [Mark Adler, CN]
  120. X - Linux support [Humberto Ortiz-Zuazaga]
  121. X - MS-DOS:  gcc support (DJ DeLorie's) [Onno van der Linden]
  122. X - UNZIP/ZIPINFO environment variable support [CN, Bill Davidsen]
  123. X - smarter zipinfo defaults, including optional header and totals lines [CN]
  124. X - zipinfo OS/2 EA information [Kai Uwe Rommel]
  125. X - Convex C-120, C-210 targets added [Rafal Maszkowski]
  126. X - signal handler for restoring echo if ^C during password, catch segmentation
  127. X    violations/bus errors [Mark Adler, CN]
  128. X - VMS:  RMS services used for (nearly) everything, instead of QIO/ACP [Igor]
  129. X - MS-DOS:  Borland C++ makefile to replace individual unzip{_cr}, zipinfo 
  130. X    ones [Alvin Koh, David Kirschbaum]
  131. X - MS-DOS:  new Turbo C project files and zipinfo batch file [Charles Scripter]
  132. X - VMS:  added overwrite/create-new capability for existing files [Igor]
  133. X - Cray scc v3.0 target added [CN]
  134. X - Olivetti X/OS target added [Fulvio Marino]
  135. X - OS/2:  makefile.os2 provided in lieu of OS/2 targets in Makefile [Kai Uwe]
  136. X - "all" and "install" targets added to main Makefile [CN, Mark, Alvin Koh]
  137. X - MS-DOS:  massive Windows port (only patches to existing source included;
  138. X    also need stand-alone Windows sources from wunz12sr.zip) [Robert Heath,
  139. X    Johnny Lee]
  140. X - OS/2:  added support for Watcom C/386 9.0, in addition to Microsoft C 6.0,
  141. X    IBM C Set/2, and gcc/emx [Kai Uwe]
  142. X - AT&T 6300+/SysV target added [Peter Mauzey]
  143. X - Windows NT port [David Feinleib]
  144. X - reprompt for overwrite instead of assuming "n" if user error [Mark, Mike
  145. X    Freeman]
  146. X - new (*very* new) funzip.c:  read zipfile from stdin, extract first member
  147. X    to stdout (now includes decryption, too) [Mark]
  148. X - funzip man page, Where file [CN]
  149. X - 386BSD 0.1 support added [Onno van der Linden]
  150. X
  151. XBugs fixed:
  152. X
  153. X - MS-DOS:  incorrect use of FP_ macros in dateformat() fixed [Steve Salisbury]
  154. X - dateformat() only called once now [Steve Salisbury, CN]
  155. X - "#if defined(x) || defined(y)" causes problems with some compilers (Borland
  156. X    C++ 3); globally replaced with "#if (defined(x) || defined(y))" [Alvin Koh]
  157. X - "Deflating" message corrected to "Inflating" [James Birdsall]
  158. X - GNU C prototype conflicts fixed (crypt.c, file_io.c) [Jean-loup Gailly]
  159. X - OS/2:  stderr needs fflush for IBM C Set/2 compiler (as did Amiga); added
  160. X    for all compilers except Mac Progammer's Workbench [CN, Jon Saxton]
  161. X - VMS:  multiple-dot filenames now converted properly [Igor Mandrichenko]
  162. X - decryption version:  time.h now only included in unzip.h, not crypt.c
  163. X    (requires crypt.c "v1.5" or later) [CN, Jean-loup Gailly]
  164. X - changed use of obsolescent S_IEXEC to S_IXUSR [Humberto Ortiz-Zuazaga]
  165. X - SCO optimization bug in unshrink fixed [Onno van der Linden]
  166. X - aviion target moved to _sysv section of makefile for password echoing
  167. X    [CN, Benjamin Goldsteen]
  168. X - less reliance on __STDC__; now using zip's MODERN and PROTO macros [CN,
  169. X    Mark Adler, ...]
  170. X - stdlib.h not included for buggy compilers which define __STDC__ anyway
  171. X    (GNU C, Apollo) [CN]
  172. X - MS-DOS:  multiple dots in filenames handled correctly [CN]
  173. X - corrected explode(), matche_...() prototypes [various people]
  174. X - changed zipinfo targets in Makefile to use ln or copy rather than
  175. X    mv/rename for misc_.c [Kjetil J{\o}rgenson]
  176. X - corrected (or attempted to correct) zipinfo project files for Borland
  177. X    (misc_.obj, -DZIPINFO) [CN, Jean-loup]
  178. X - updated BCC .mak files for unzip 5.0 [Alvin Koh]
  179. X - MS-DOS:  rewrote msc_dos target in Makefile to get back under DOS 128-
  180. X    character command-line limit (I hope) [CN]
  181. X - Unix:  use "unix" predefined macro instead of -DUNIX [CN]
  182. X - VMS:  revision dates once again set properly
  183. X - added typecasts, etc., to get rid of nearly all warnings [CN, Charles
  184. X    Scripter, Mark Adler]
  185. X - fixed "zipfile corrupt" bug for empty zipfiles [CN]
  186. X - OS/2, Unix:  high-order (European) characters allowed in filenames [Kai Uwe,
  187. X    CN]
  188. X - MS-DOS:  patches for TC 2.0 and BC++ 3.0 preprocessors and for TCC and BCC
  189. X    themselves to handle Unix-style line endings (LF) correctly (in MSDOS sub-
  190. X    archive) [Onno van der Linden]
  191. X - added missing <signal.h> [Igor, Kai Uwe, Jean-loup, many others]
  192. X - modified sysv target and unzip.h to allow SysV-ish Suns to compile right
  193. X    [CN]
  194. X - removed some SysV.4 warnings [Jean-loup]
  195. X - OS/2:  added comments in zipinfo and man page to forestall queries about
  196. X    "EA's stored not equal to what dir reports" [CN, Kai Uwe]
  197. X - patches for RS/6000 + AIX [Trevor Paquette]
  198. X - OS/2:  "smart" upper/lowercasing depending on national language code page
  199. X    [Kai Uwe]
  200. X - updated VMS, MS-DOS, and AMIGA sub-archives for release [CN]
  201. X - fixed zi_gcc makefile target [CN, Bo Kullmar]
  202. X - fixed size_t/extent bug for non-ANSI compilers [CN]
  203. X - fixed zipinfo EOL bug [CN]
  204. X - updated OS2 sub-archive and main Makefile (OS/2 targets, crypt, etc.) for
  205. X    release [CN]
  206. X - added typecasts to get rid of remaining inflate/explode warnings [CN]
  207. X - MS-DOS:  updated BCC project files [Alvin Koh]
  208. X - Mac, MTS:  fixed work-area initialization bug and added missing isascii
  209. X    definition [Antoine Verheijen]
  210. X - Mac:  updated Think C resource file [Antoine]
  211. X - fixed (I hope) couple of conversion warnings in extract.c [CN, Charles]
  212. X - updated NoGate error message (PAK 2.51) [CN, Keith Petersen]
  213. X - VMS:  corrected gcc XAB definition problem; cleaned up make_unzip_gcc.com
  214. X    [Igor, Mike Freeman, CN]
  215. X - MS-DOS:  fixed msc_dos target in Makefile [Piet W. Plomp]
  216. X - fixed sco_dos stack overflow bug and allowed zipinfo to be compiled as well,
  217. X    provisionally (UNZIPS variable) [Bill Davidsen, CN]
  218. X - OS/2:  added -DMSC to msc target in makefile.os2 (and msc_os2 in Makefile),
  219. X    removed -Fb, changed some icc settings; removed references to main Makefile
  220. X    [Kai Uwe, CN]
  221. X - OS/2:  simplified default unzip.h defines [Kai Uwe]
  222. X - OS/2, MS-DOS:  reversed meaning of -s (now spaces allowed by default) [CN,
  223. X    Kai Uwe]
  224. X - OS/2:  changed extra-field format to official PKWare format [Kai Uwe]
  225. X - typecast all NULLs appropriately to avoid AIX warnings [CN, Trevor Paquette,
  226. X    Christopher Tjon]
  227. X - changed zfwrite definition in crypt.c to match zip's [Jean-loup]
  228. X - fixed some WinNT problems [Dave Feinleib, CN]
  229. X - fixed SysV.4 warning regarding signal.h placement [Jean-loup]
  230. X - fixed c120 target and renamed NMAX to N_MAX inflate.c to avoid Convex
  231. X    redefinition warning [CN, Rafal Maszkowski]
  232. X - fixed bad comment line in Makefile [Mark, CN]
  233. X - fixed memcpy/byte-ordering problem in memextract() [CN, Kai Uwe]
  234. X - updated funzip (1.1) [Mark]
  235. X - updated unzip/zipinfo error message to include Norwegian ZIPSPLIT as
  236. X    well as Atari STZIP [CN]
  237. X - fixed zi_gcc Makefile target; added fu_gcc target [CN]
  238. X - finished unzip and zipinfo man pages (I think) [CN]
  239. X - OS/2:  minor national language code fix [Kai Uwe]
  240. X - initialized all unzip and zipinfo global flags to zero (buggy Sun compiler)
  241. X    [CN, Frank van der Linden]
  242. X - reformatted .man pages slightly; renamed to .doc [CN, Jean-loup]
  243. X - renamed Mac Think C makefiles and VMS command files so names will be unique
  244. X    if extracted under MS-DOS; renamed Turbo C zipinfo.bat to zi_make.bat [CN,
  245. X    Jean-loup]
  246. X - fixed illegal escape sequence in unzip.1 (caused NeXT segmentation viol.)
  247. X    [Mark]
  248. X
  249. XVersion info extracted from WizUnZip patches to unzip.c:
  250. X
  251. X  /* History:
  252. X   * 01/27/92  1.0    Original.
  253. X   * 04/12/92  1.1    Added separate handle and buffer for outout.
  254. X   *                  Change outout's typing to byte _far *.
  255. X   *                  Apology: I did some of the wacky things I did
  256. X   *                  with buffers and pointers because I kept running 
  257. X   *                  out of local memory in the Windows version.--rah.
  258. X   * 06/30/92  1.2    Cleaned up source code.
  259. X   *                  Added drag-drop, hiding status window,
  260. X   *                  faster unzipping, updated to Unzip 5.0 source
  261. X   */
  262. X
  263. XVersion info extracted from new match.c (formerly filmatch.c):
  264. X
  265. X   File: filmatch.c
  266. X   Author: J. Kercheval
  267. X   Created: Thu, 03/14/1991  22:22:01
  268. X   [from WILDF114.ZIP, SIMTEL20]
  269. X
  270. X   EPSRevision History
  271. X
  272. X   J. Kercheval  Wed, 02/20/1991  22:29:01  Released to Public Domain
  273. X   J. Kercheval  Fri, 02/22/1991  15:29:01  fix '\' bugs (two :( of them)
  274. X   J. Kercheval  Sun, 03/10/1991  19:31:29  add error return to matche()
  275. X   J. Kercheval  Sun, 03/10/1991  20:11:11  add is_valid_pattern code
  276. X   J. Kercheval  Sun, 03/10/1991  20:37:11  beef up main()
  277. X   J. Kercheval  Tue, 03/12/1991  22:25:10  Released as V1.1 to Public Domain
  278. X   J. Kercheval  Thu, 03/14/1991  22:22:25  remove '\' for DOS file parsing
  279. X   J. Kercheval  Thu, 03/28/1991  20:58:27  include filmatch.h
  280. X
  281. X   v1.2 Toad Hall Tweak, Apr 92
  282. X
  283. X - Adapting to Info-ZIP unzip (to replace SEA's match() code).
  284. X   Why?  To avoid any future copyright problems.  (Hopefully one day
  285. X   we'll have EVERYTHING built of public domain code.)
  286. X   An even greater hope: that this new code added functionality
  287. X   and didn't break *too* many old applications.
  288. X
  289. X - Incorporating FILMATCH.H code herein.
  290. X - Consolidated all test code at the end (#ifdef'ed out, of course)
  291. X   so we can throw it all away when we're done playing.
  292. X - Swapping *string and *pattern to match previous match() parms.
  293. X - [GRR:  renamed from "filmatch.c" to "match.c" to avoid changing
  294. X   all of the unzip makefiles]
  295. X
  296. X   From the previous match()'s comments:
  297. X
  298. X   "The match() routine recursively compares a string to a "pattern" (regular
  299. X   expression), returning TRUE if a match is found or FALSE if not.
  300. X   This version is specifically for use with unzip.c:  as did the previous
  301. X   SEA's match(), it leaves the case (upper, lower, or mixed) of the string
  302. X   alone, but converts any uppercase characters in the pattern to lowercase
  303. X   if indicated by the global var pInfo->lcflag (which is to say, string is
  304. X   assumed to have been converted to lowercase already, if such was
  305. X   necessary)."
  306. X
  307. X   Since the above has approached or exceeded unintelligibility
  308. X   (why use small words when big ones will do?), scan down for "lcflag"
  309. X   and see what the code does.
  310. X
  311. X   David Kirschbaum
  312. X   Toad Hall
  313. X
  314. X   File: filmatch.h
  315. X   Author: J. Kercheval
  316. X   Created: Thu, 03/14/1991  22:24:34
  317. X
  318. X   EPSRevision History
  319. X
  320. X   J. Kercheval  Wed, 02/20/1991  22:28:37  Released to Public Domain
  321. X   J. Kercheval  Sun, 03/10/1991  18:02:56  add is_valid_pattern
  322. X   J. Kercheval  Sun, 03/10/1991  18:25:48  add error_type in is_valid_pattern
  323. X   J. Kercheval  Sun, 03/10/1991  18:47:47  error return from matche()
  324. X   J. Kercheval  Tue, 03/12/1991  22:24:49  Released as V1.1 to Public Domain
  325. X   J. Kercheval  Thu, 03/14/1991  22:25:00  remove '\' for DOS file matching
  326. X   J. Kercheval  Thu, 03/28/1991  21:03:59  add in PATTERN_ESC & MATCH_LITERAL
  327. X
  328. X==================
  329. X
  330. XThese changes occurred in beta versions 5.0a to 5.0p.  This list may have 
  331. Xleft out some bugfixes and even some features...the brain cell is going, 
  332. Xfolks (as Mark would say).  Apologies, etc., but I did muh best....
  333. X
  334. XGreg Roelofs (a.k.a. Cave Newt)
  335. END_OF_FILE
  336.   if test 11988 -ne `wc -c <'History.500'`; then
  337.     echo shar: \"'History.500'\" unpacked with wrong size!
  338.   fi
  339.   # end of 'History.500'
  340. fi
  341. if test -f 'MSDOS/bcc/unzip.prj.UU' -a "${1}" != "-c" ; then 
  342.   echo shar: Will not clobber existing file \"'MSDOS/bcc/unzip.prj.UU'\"
  343. else
  344.   echo shar: Extracting \"'MSDOS/bcc/unzip.prj.UU'\" \(10866 characters\)
  345.   sed "s/^X//" >'MSDOS/bcc/unzip.prj.UU' <<'END_OF_FILE'
  346. Xbegin 666 MSDOS/bcc/unzip.prj
  347. XM5'5R8F\@0R!0<F]J96-T($9I;&4@&@ !#1(7 1H  0<R $8(R0 "  $ R@ "
  348. XM    RP "  $ S  "  $ S0 "  ( S@ "    O L"    O0L"    O@L"    
  349. XMOPL"  $ T@ "  $ TP "  $ U  "  , U@ " $  UP "  $ V  "  $ \0 !
  350. XM  #R  $  /,  0 !]  !  'U  $  ?8 !   @   ]P !  #X  $  /D  0  
  351. XM^@ "   @L 0"   "\  "    U@L!  #7"P$  -@+ @   -D+ 0  V@L" !  
  352. XMVPL"  0 ^P !  "T#P$  /P  0 !_0 !  #^  $  /\  0    $!  $! 0$ 
  353. XM  ,! 0  ! $!   % 0$   8! 0 !!P$! !D( 0$ 9 D! 0 @"@$!   + 0$ 
  354. XM  P! 0  #0$!   . 0$   \! 0  $ $!  $1 0$  : / 0  H0\!  &B#P$ 
  355. XM *,/ 0 !I \!  &E#P$  :8/ 0 !IP\!  &H#P$  + / 0  L0\!  &R#P$ 
  356. XM ;,/ 0  J0\!  "J#P$  ZL/ 0  K \!  "M#P$  *X/ 0  KP\!  "U#P$ 
  357. XM +8/ 0  $@$!  $3 0$  !0! 0  %0$!  $6 0$  !<!!   @   & $!   9
  358. XM 0(    : 0$  !L! 0  ' $!  $= 0$  !X! 0 #'P$!  $@ 0$  "(! 0  
  359. XM(P$!   D 0$  "4! 0  )@$" /]_)P$  "L! @   &L" 0  6P(!  %= @$ 
  360. XM 5X" 0 !8@(!  %C @$  60" 0 !90(!  %F @$  6<" 0 !: (!  !M @$ 
  361. XM 6X" 0 !;P(!  %Q @$  7," 0 !=0(!  !V @$  7<" 0 !> (!  %Y @$ 
  362. XM 7H" 0 !>P(!  %\ @$  (X" 0 !?0(!  %^ @$  7\" 0 !@ (!  &! @$ 
  363. XM 8(" 0 !@P(!  &$ @$  84" 0 !A@(!  &' @$  8@" 0 !B@(!  &+ @$ 
  364. XM 8T" 0 !D (!  &1 @$  9(" 0 !DP(!  $$$ $  040 0 !!A !  $'$ $ 
  365. XM 0@0 0 !+0%$                                                
  366. XM                                            +@&  $,Z7$)#7$E.
  367. XM0TQ51$4 3%5$10                                              
  368. XM                                                            
  369. XM                                        +P&  $,Z7$)#7$Q)0@!<
  370. XM3$E"                                                        
  371. XM                                                            
  372. XM                                    , $$ #,R   Q 04 ,C4    R
  373. XM 04 ,3 P   S 7\  %]-4T,                                     
  374. XM                                                            
  375. XM                                                            
  376. XM     #0!'@ J                                       U 1X *@  
  377. XM                                    -@$> "H                 
  378. XM                     #<!'@ J                                
  379. XM       X 1X *@                                      .0$> "H 
  380. XM                                     #H!'@ J                
  381. XM                       [ 1X *@                              
  382. XM        / $> "H                                      #T!'@ J
  383. XM                                       ^ 1X *@              
  384. XM                        /P$> "H                             
  385. XM         $ !@                                               
  386. XM                                                            
  387. XM                                                            
  388. XM     $$!?P                                                  
  389. XM                                                            
  390. XM                                                            
  391. XM1 $( #,R-S8W    10$( #@Q.3(     1@%_                        
  392. XM                                                            
  393. XM                                                            
  394. XM                          !# 04 +D,   !' 0(   #__P  ,P &  $ 
  395. XMV83=& H U0@ ?D=215                                          
  396. XM     &=R97                                                  
  397. XM                                                    +6XK("1-
  398. XM14TH-C0I("1.3U-705 @)%!23TU05" D0T%0($U31RA'4D50,DU31REV;VED
  399. XM("HN8R                                                      
  400. XM                                                            
  401. XM                                                            
  402. XM                  #(_P%^5'5R8F\@07-S96UB;&5R                
  403. XM                5$%330                                      
  404. XM                                                            
  405. XM   O35@@+UI)("]/("1405--                                    
  406. XM                                                            
  407. XM                                                            
  408. XM                                                            
  409. XM                             ,G_ %1U<F)O('Y$96)U9V=E<@      
  410. XM                          !T9                               
  411. XM                                                            
  412. XM             "1%6$5.04U%                                    
  413. XM                                                            
  414. XM                                                            
  415. XM                                                            
  416. XM                                        RO\ 5'5R8F\@?E!R;V9I
  417. XM;&5R                                 '1P<F]F                
  418. XM                                                            
  419. XM                        )$5814Y!344                         
  420. XM                                                            
  421. XM                                                            
  422. XM                                                            
  423. XM                                                  #+_P%2?F5S
  424. XM;W5R8V4@0V]M<&EL97(                             4D,         
  425. XM                                                            
  426. XM                                   D4D,                     
  427. XM                                                            
  428. XM                                                            
  429. XM                                                            
  430. XM                                                            
  431. XM ,S_ 7Y);7!O<G0@3&EB<F%R:6%N                              !)
  432. XM35!,24(                                                     
  433. XM                                             "1)35!,24(     
  434. XM                                                            
  435. XM                                                            
  436. XM                                                            
  437. XM                                                            
  438. XM            S?___P                                          
  439. XM                                                            
  440. XM                                                            
  441. XM                                                            
  442. XM                                                            
  443. XM                                                            
  444. XM                                                            
  445. XM                         #4 I@0  !X F83=&#@6  !<E   / 4  %5.
  446. XM6DE0+D, 54Y:25 N0P                                          
  447. XM                                             @ #  0      "\ 
  448. XMFX3=&&<!   ?    @@   $5.5D%21U,N0P!53EI)4%Q53EI)4#4P2UQ"0T-<
  449. XM14Y605)'4RY#                                                
  450. XM        "@ )  @  P   #$ HX3=&* 6  "  @  & ,  $584$Q/1$4N0P!5
  451. XM3EI)4%Q53EI)4#4P2UQ"0T-<15A03$]$12Y#                        
  452. XM                                %@ 5 !0  @   #<      /______
  453. XM____     $585%)!0U0N0P!53EI)4%Q53EI)4#4P2UQ%6%1204-4+D,     
  454. XM                                                        'P >
  455. XM !T !0   #, IH3=&(<#  #D    /00  $9)3$5?24\N0P!,15])3RY#    
  456. XM                                                            
  457. XM                    !0 &  <      #4 SH3=&& 1  !* 0  PP,  $E.
  458. XM1DQ!5$4N0P!53EI)4%Q53EI)4#4P2UQ)3D9,051%+D,                 
  459. XM                                            (  A "( !    "$ 
  460. XMJ(3=&)<#  #%    =P$  $U!4$Y!344N0P!03D%-12Y#                
  461. XM                                                            
  462. XM        "P ,  T      "  JH3=&(8"        - (  $U!5$-(+D, 34%4
  463. XM0T@N0P                                                      
  464. XM                                #@ / !       !8 K83=&'$&  ""
  465. XM!   U (  $U)4T,N0P!<34E30RY#                                
  466. XM                                                        $0 2
  467. XM !,      !H L(3=&(P#   B P  U0   %5.4D5$54-%+D, 14150T4N0P  
  468. XM                                                            
  469. XM                    %P 8 !D      !P LX3=&&$#   (    NP   %5.
  470. XM4TA224Y++D, 2%))3DLN0P                                      
  471. XM                                            &@ ; !P     @#8 
  472. XM2 @X    :P>&!SL(__________________________________^A!RP(__\=
  473. XM"( "$ B\!P0(! +7!X@!] ?7!>0'_ )X U '- <5!_<&VP:_!J,&A 9K!E,&
  474. XMO06B!88%^P1W!7 $[ 3T WD![@!J 7( <@   !0 - "CK-@8! "CK-@8&   
  475. XM&&L7$@  &&L7 P  &&L7 @  &&L7(@  &&L7(P  &&L7)   &&L7)0  &&L7
  476. XM)@  &&L7)P  &&L7*   &&L7*0  &&L7*@  &&L7*P  &&L7+   &&L7+0  
  477. XM&&L7+@  &&L7__\ &&L7   4 #8 1Z3!& 0 HZS8&!@  !AK%Q(  !AK%P, 
  478. XM !AK%P(  !AK%R(  !AK%R,  !AK%R0  !AK%R4  !AK%R8  !AK%R<  !AK
  479. XM%R@  !AK%RD  !AK%RH  !AK%RL  !AK%RP  !AK%RT  !AK%RX  !AK%___
  480. XM !AK%_]'I,$824Y&3$%412Y# /^CK-@815A44D%#5"Y#    %  ? ,:;NA@$
  481. XM *.LV!@8   8:Q<2   8:Q<#   8:Q<"   8:Q<B   8:Q<C   8:Q<D   8
  482. XM:Q<E   8:Q<F   8:Q<G   8:Q<H   8:Q<I   8:Q<J   8:Q<K   8:Q<L
  483. XM   8:Q<M   8:Q<N   8:Q?__P 8:Q<  !0 '0 ' ;H8! "CK-@8&   &&L7
  484. XM$@  &&L7 P  &&L7 @  &&L7(@  &&L7(P  &&L7)   &&L7)0  &&L7)@  
  485. XM&&L7)P  &&L7*   &&L7*0  &&L7*@  &&L7*P  &&L7+   &&L7+0  &&L7
  486. XM+@  &&L7__\ &&L7   4 !D CJS8& 0 HZS8&!@  !AK%Q(  !AK%P,  !AK
  487. XM%P(  !AK%R(  !AK%R,  !AK%R0  !AK%R4  !AK%R8  !AK%R<  !AK%R@ 
  488. XM !AK%RD  !AK%RH  !AK%RL  !AK%RP  !AK%RT  !AK%RX  !AK%___ !AK
  489. XM%P  %  7 $R^N1@$ *.LV!@8   8:Q<2   8:Q<#   8:Q<"   8:Q<B   8
  490. XM:Q<C   8:Q<D   8:Q<E   8:Q<F   8:Q<G   8:Q<H   8:Q<I   8:Q<J
  491. XM   8:Q<K   8:Q<L   8:Q<M   8:Q<N   8:Q?__P 8:Q<  !0 %0"CK-@8
  492. XM! "CK-@8&   &&L7$@  &&L7 P  &&L7 @  &&L7(@  &&L7(P  &&L7)   
  493. XM&&L7)0  &&L7)@  &&L7)P  &&L7*   &&L7*0  &&L7*@  &&L7*P  &&L7
  494. XM+   &&L7+0  &&L7+@  &&L7__\ &&L7   4 !, #778& 0 HZS8&!@  !AK
  495. XM%Q(  !AK%P,  !AK%P(  !AK%R(  !AK%R,  !AK%R0  !AK%R4  !AK%R8 
  496. XM !AK%R<  !AK%R@  !AK%RD  !AK%RH  !AK%RL  !AK%RP  !AK%RT  !AK
  497. XM%RX  !AK%___K-@8&   %  R $>DP1@$ *.LV!@8   8:Q<2   8:Q<#   8
  498. XM:Q<"   8:Q<B   8:Q<C   8:Q<D   8:Q<E   8:Q<F   8:Q<G   8:Q<H
  499. XM   8:Q<I   8:Q<J   8:Q<K   8:Q<L   8:Q<M   8:Q<N   8:Q?__P 8
  500. XM:Q?_1Z3!&$584$Q/1$4N0P   !0 , "J8K@8! "CK-@8&   &&L7$@  &&L7
  501. XM P  &&L7 @  &&L7(@  &&L7(P  &&L7)   &&L7)0  &&L7)@  &&L7)P  
  502. XM&&L7*   &&L7*0  &&L7*@  &&L7*P  &&L7+   &&L7+0  &&L7+@  &&L7
  503. XM__\ &&L7_ZIBN!A%3E9!4D=3+D, _P 8:Q=#.EQ"0UQ)3D-,541%7$Q)34E4
  504. XM4RY( /\ &&L70SI<0D-<24Y#3%5$15Q&0TY43"Y( /\ &&L70SI<0D-<24Y#
  505. XM3%5$15Q424U%+D@    4 !L (8?8& 0 HZS8&!@  !AK%Q(  !AK%P,  !AK
  506. XM%P(  !AK%R(  !AK%R,  !AK%R0  !AK%R4  !AK%R8  !AK%R<  !AK%R@ 
  507. XM !AK%RD  !AK%RH  !AK%RL  !AK%RP  !AK%RT  !AK%RX  !AK%___1$5<
  508. XM4_\ &&L70SI<0D-<24Y#3%5$15Q)3RY( /\ &&L70SI<0D-<24Y#3%5$15Q$
  509. XM3U,N2 #_ !AK%T,Z7$)#7$E.0TQ51$5<4UE37%1)345"+D@ _P 8:Q=#.EQ"
  510. XM0UQ)3D-,541%7%-44DE.1RY( /\ &&L70SI<0D-<24Y#3%5$15Q35$1,24(N
  511. XM2 #_ !AK%T,Z7$)#7$E.0TQ51$5<4U1$1$5&+D@ _P 8:Q=#.EQ"0UQ)3D-,
  512. XM541%7%-94UQ35$%4+D@ _P 8:Q=#.EQ"0UQ)3D-,541%7%-94UQ465!%4RY(
  513. XM /\ &&L70SI<0D-<24Y#3%5$15Q324=.04PN2 #_ !AK%T,Z7$)#7$E.0TQ5
  514. XM1$5<15)23D\N2 #_ !AK%T,Z7$)#7$E.0TQ51$5<0U194$4N2 #_ !AK%T,Z
  515. XM7$)#7$E.0TQ51$5<7TY53$PN2 #_ !AK%T,Z7$)#7$E.0TQ51$5<7T1%1E,N
  516. XM2 #_ !AK%T,Z7$)#7$E.0TQ51$5<4U1$24\N2 #_(8?8&%5.6DE0+D, _\:;
  517. XMNAA53E-(4DE.2RY# /\' ;H854Y214150T4N0P#_CJS8&$U)4T,N0P#_3+ZY
  518. XM&$U!5$-(+D, _Z.LV!A-05!.04U%+D, _PUUV!A&24Q%7TE/+D, _Z.LV!A5
  519. XM3EI)4"Y( #< :0 C    : !G &8 90!D &, 3@!/ %  8@!A &  7P!> %T 
  520. XM7 !; %H 40!2 %, 60!8 %< 5@!5 %0 2 !) $H 30!, $L 2           
  521. X>                                  #__P  
  522. Xend
  523. END_OF_FILE
  524.   if test 10866 -ne `wc -c <'MSDOS/bcc/unzip.prj.UU'`; then
  525.     echo shar: \"'MSDOS/bcc/unzip.prj.UU'\" unpacked with wrong size!
  526.   else
  527.     echo shar: Uudecoding \"'MSDOS/bcc/unzip.prj'\" \(7860 characters\)
  528.     cat MSDOS/bcc/unzip.prj.UU | uudecode
  529.     if test 7860 -ne `wc -c <'MSDOS/bcc/unzip.prj'`; then
  530.       echo shar: \"'MSDOS/bcc/unzip.prj'\" uudecoded with wrong size!
  531.     else
  532.       rm MSDOS/bcc/unzip.prj.UU
  533.     fi
  534.   fi
  535.   # end of 'MSDOS/bcc/unzip.prj.UU'
  536. fi
  537. if test -f 'MSDOS/bcc/unzip_cr.prj.UU' -a "${1}" != "-c" ; then 
  538.   echo shar: Will not clobber existing file \"'MSDOS/bcc/unzip_cr.prj.UU'\"
  539. else
  540.   echo shar: Extracting \"'MSDOS/bcc/unzip_cr.prj.UU'\" \(11377 characters\)
  541.   sed "s/^X//" >'MSDOS/bcc/unzip_cr.prj.UU' <<'END_OF_FILE'
  542. Xbegin 666 MSDOS/bcc/unzip_cr.prj
  543. XM5'5R8F\@0R!0<F]J96-T($9I;&4@&@ !#1(7 1H  0<R $8(R0 "  $ R@ "
  544. XM    RP "  $ S  "  $ S0 "  ( S@ "    O L"    O0L"    O@L"    
  545. XMOPL"  $ T@ "  $ TP "  $ U  "  , U@ " $  UP "  $ V  "  $ \0 !
  546. XM  #R  $  /,  0 !]  !  'U  $  ?8 !   @   ]P !  #X  $  /D  0  
  547. XM^@ "   @L 0"   "\  "    U@L!  #7"P$  -@+ @   -D+ 0  V@L" !  
  548. XMVPL"  0 ^P !  "T#P$  /P  0 !_0 !  #^  $  /\  0    $!  $! 0$ 
  549. XM  ,! 0  ! $!   % 0$   8! 0 !!P$! !D( 0$ 9 D! 0 @"@$!   + 0$ 
  550. XM  P! 0  #0$!   . 0$   \! 0  $ $!  $1 0$  : / 0  H0\!  &B#P$ 
  551. XM *,/ 0 !I \!  &E#P$  :8/ 0 !IP\!  &H#P$  + / 0  L0\!  &R#P$ 
  552. XM ;,/ 0  J0\!  "J#P$  ZL/ 0  K \!  "M#P$  *X/ 0  KP\!  "U#P$ 
  553. XM +8/ 0  $@$!  $3 0$  !0! 0  %0$!  $6 0$  !<!!   @   & $!   9
  554. XM 0(    : 0$  !L! 0  ' $!  $= 0$  !X! 0 #'P$!  $@ 0$  "(! 0  
  555. XM(P$!   D 0$  "4! 0  )@$" /]_)P$  "L! @   &L" 0  6P(!  %= @$ 
  556. XM 5X" 0 !8@(!  %C @$  60" 0 !90(!  %F @$  6<" 0 !: (!  !M @$ 
  557. XM 6X" 0 !;P(!  %Q @$  7," 0 !=0(!  !V @$  7<" 0 !> (!  %Y @$ 
  558. XM 7H" 0 !>P(!  %\ @$  (X" 0 !?0(!  %^ @$  7\" 0 !@ (!  &! @$ 
  559. XM 8(" 0 !@P(!  &$ @$  84" 0 !A@(!  &' @$  8@" 0 !B@(!  &+ @$ 
  560. XM 8T" 0 !D (!  &1 @$  9(" 0 !DP(!  $$$ $  040 0 !!A !  $'$ $ 
  561. XM 0@0 0 !+0%$                                                
  562. XM                                            +@&  $,Z7$)#7$E.
  563. XM0TQ51$4 3%5$10                                              
  564. XM                                                            
  565. XM                                        +P&  $,Z7$)#7$Q)0@!<
  566. XM3$E"                                                        
  567. XM                                                            
  568. XM                                    , $$ #,R   Q 04 ,C4    R
  569. XM 04 ,3 P   S 7\ 0U)94%0                                     
  570. XM                                                            
  571. XM                                                            
  572. XM     #0!'@ J                                       U 1X *@  
  573. XM                                    -@$> "H                 
  574. XM                     #<!'@ J                                
  575. XM       X 1X *@                                      .0$> "H 
  576. XM                                     #H!'@ J                
  577. XM                       [ 1X *@                              
  578. XM        / $> "H                                      #T!'@ J
  579. XM                                       ^ 1X *@              
  580. XM                        /P$> "H                             
  581. XM         $ !@                                               
  582. XM                                                            
  583. XM                                                            
  584. XM     $$!?P                                                  
  585. XM                                                            
  586. XM                                                            
  587. XM1 $( #,R-S8W    10$( #@Q.3(     1@%_                        
  588. XM                                                            
  589. XM                                                            
  590. XM                          !# 04 +D,   !' 0(   #__P  ,P &  $ 
  591. XM_87=& H U0@ ?D=215                                          
  592. XM     &=R97                                                  
  593. XM                                                    +6XK("1-
  594. XM14TH-C0I("1.3U-705 @)%!23TU05" D0T%0($U31RA'4D50,DU31REV;VED
  595. XM("HN8R                                                      
  596. XM                                                            
  597. XM                                                            
  598. XM                  #(_P%^5'5R8F\@07-S96UB;&5R                
  599. XM                5$%330                                      
  600. XM                                                            
  601. XM   O35@@+UI)("]/("1405--                                    
  602. XM                                                            
  603. XM                                                            
  604. XM                                                            
  605. XM                             ,G_ %1U<F)O('Y$96)U9V=E<@      
  606. XM                          !T9                               
  607. XM                                                            
  608. XM             "1%6$5.04U%                                    
  609. XM                                                            
  610. XM                                                            
  611. XM                                                            
  612. XM                                        RO\ 5'5R8F\@?E!R;V9I
  613. XM;&5R                                 '1P<F]F                
  614. XM                                                            
  615. XM                        )$5814Y!344                         
  616. XM                                                            
  617. XM                                                            
  618. XM                                                            
  619. XM                                                  #+_P%2?F5S
  620. XM;W5R8V4@0V]M<&EL97(                             4D,         
  621. XM                                                            
  622. XM                                   D4D,                     
  623. XM                                                            
  624. XM                                                            
  625. XM                                                            
  626. XM                                                            
  627. XM ,S_ 7Y);7!O<G0@3&EB<F%R:6%N                              !)
  628. XM35!,24(                                                     
  629. XM                                             "1)35!,24(     
  630. XM                                                            
  631. XM                                                            
  632. XM                                                            
  633. XM                                                            
  634. XM            S?___P                                          
  635. XM                                                            
  636. XM                                                            
  637. XM                                                            
  638. XM                                                            
  639. XM                                                            
  640. XM                                                            
  641. XM                         #4 $@4  !X TX7=&#@6  !>E   / 4  %5.
  642. XM6DE0+D, 54Y:25 N0P                                          
  643. XM                                             @ #  0      !0 
  644. XMU87=&)X"   ,    (P$  $-265!4+D, 15Q53EI)4%Q53EI)4#4P2UQ#4EE0
  645. XM5"Y#                                                        
  646. XM        (P D "4  @   "\ UX7=&&<!   ?    @@   $5.5D%21U,N0P!5
  647. XM3EI)4%Q53EI)4#4P2UQ"0T-<14Y605)'4RY#                        
  648. XM                                "@ )  @      #$ X(7=&* 6  " 
  649. XM @  & ,  $584$Q/1$4N0P!53EI)4%Q53EI)4#4P2UQ"0T-<15A03$]$12Y#
  650. XM                                                        %@ 5
  651. XM !0      #< YH7=&.@0  "N!   U@,  $585%)!0U0N0P!53EI)4%Q53EI)
  652. XM4#4P2UQ%6%1204-4+D,                                         
  653. XM                    'P > !T      #, Z(7=&(T$   ! 0  /00  $9)
  654. XM3$5?24\N0P!,15])3RY#                                        
  655. XM                                            !0 &  <      #4 
  656. XM[H7=&& 1  !* 0  PP,  $E.1DQ!5$4N0P!53EI)4%Q53EI)4#4P2UQ)3D9,
  657. XM051%+D,                                                     
  658. XM        (  A "(      "$ \87=&)<#  #%    =P$  $U!4$Y!344N0P!0
  659. XM3D%-12Y#                                                    
  660. XM                                "P ,  T      "  \X7=&(8"    
  661. XM    - (  $U!5$-(+D, 34%40T@N0P                              
  662. XM                                                        #@ /
  663. XM !       !8 ]H7=&'$&  ""!   U (  $U)4T,N0P!<34E30RY#        
  664. XM                                                            
  665. XM                    $0 2 !,      !H ^87=&(P#   B P  U0   %5.
  666. XM4D5$54-%+D, 14150T4N0P                                      
  667. XM                                            %P 8 !D      !P 
  668. XM^X7=&&$#   (    NP   %5.4TA224Y++D, 2%))3DLN0P              
  669. XM                                                            
  670. XM        &@ ; !P     @#8 1 DX    9PB""#<)____________________
  671. XM____[@-]!2X&.0:=""@)F@49"6H!# FX"  )[@#3"'( \ A&!N (Y@%B DP(
  672. XM, @1"/,'UP>[!Y\'@ =G!T\'-0<:!_X& 07O!H4$X 9: ]$&W@+"!@D$<@  
  673. XM !0 'P#&F[H8! "CK-@8&   &&L7$@  &&L7 P  &&L7 @  &&L7(@  &&L7
  674. XM(P  &&L7)   &&L7)0  &&L7)@  &&L7)P  &&L7*   &&L7*0  &&L7*@  
  675. XM&&L7*P  &&L7+   &&L7+0  &&L7+@  &&L7__\ &&L7   4 !T !P&Z& 0 
  676. XMHZS8&!@  !AK%Q(  !AK%P,  !AK%P(  !AK%R(  !AK%R,  !AK%R0  !AK
  677. XM%R4  !AK%R8  !AK%R<  !AK%R@  !AK%RD  !AK%RH  !AK%RL  !AK%RP 
  678. XM !AK%RT  !AK%RX  !AK%___ !AK%P  %  9 (ZLV!@$ *.LV!@8   8:Q<2
  679. XM   8:Q<#   8:Q<"   8:Q<B   8:Q<C   8:Q<D   8:Q<E   8:Q<F   8
  680. XM:Q<G   8:Q<H   8:Q<I   8:Q<J   8:Q<K   8:Q<L   8:Q<M   8:Q<N
  681. XM   8:Q?__P 8:Q<  !0 %P!,OKD8! "CK-@8&   &&L7$@  &&L7 P  &&L7
  682. XM @  &&L7(@  &&L7(P  &&L7)   &&L7)0  &&L7)@  &&L7)P  &&L7*   
  683. XM&&L7*0  &&L7*@  &&L7*P  &&L7+   &&L7+0  &&L7+@  &&L7__\ &&L7
  684. XM   4 !4 HZS8& 0 HZS8&!@  !AK%Q(  !AK%P,  !AK%P(  !AK%R(  !AK
  685. XM%R,  !AK%R0  !AK%R4  !AK%R8  !AK%R<  !AK%R@  !AK%RD  !AK%RH 
  686. XM !AK%RL  !AK%RP  !AK%RT  !AK%RX  !AK%___ !AK%P  %  V $>DP1@$
  687. XM *.LV!@8   8:Q<2   8:Q<#   8:Q<"   8:Q<B   8:Q<C   8:Q<D   8
  688. XM:Q<E   8:Q<F   8:Q<G   8:Q<H   8:Q<I   8:Q<J   8:Q<K   8:Q<L
  689. XM   8:Q<M   8:Q<N   8:Q?__P 8:Q<  !@ $P -==@8! "CK-@8&   &&L7
  690. XM$@  &&L7 P  &&L7 @  &&L7(@  &&L7(P  &&L7)   &&L7)0  &&L7)@  
  691. XM&&L7)P  &&L7*   &&L7*0  &&L7*@  &&L7*P  &&L7+   &&L7+0  &&L7
  692. XM+@  &&L7#@  &&L7__\7)   &&L7)0  &&L7)@  &&L7)P  _P 8:Q=#.EQ"
  693. XM0UQ)3D-,541%7$-/3DE/+D@    4 #0 HZS8& 0 HZS8&!@  !AK%Q(  !AK
  694. XM%P,  !AK%P(  !AK%R(  !AK%R,  !AK%R0  !AK%R4  !AK%R8  !AK%R< 
  695. XM !AK%R@  !AK%RD  !AK%RH  !AK%RL  !AK%RP  !AK%RT  !AK%RX  !AK
  696. XM%___ !AK%P  %  R $>DP1@$ *.LV!@8   8:Q<2   8:Q<#   8:Q<"   8
  697. XM:Q<B   8:Q<C   8:Q<D   8:Q<E   8:Q<F   8:Q<G   8:Q<H   8:Q<I
  698. XM   8:Q<J   8:Q<K   8:Q<L   8:Q<M   8:Q<N   8:Q?__P 8:Q<  !0 
  699. XM, "J8K@8! "CK-@8&   &&L7$@  &&L7 P  &&L7 @  &&L7(@  &&L7(P  
  700. XM&&L7)   &&L7)0  &&L7)@  &&L7)P  &&L7*   &&L7*0  &&L7*@  &&L7
  701. XM*P  &&L7+   &&L7+0  &&L7+@  &&L7__\ &&L7_P 8:Q=#.EQ"0UQ)3D-,
  702. XM541%7%!23T-%4U,N2    !@ $0"!BZ\8$ #JNIX8! "CK-@8&   &&L7$@  
  703. XM&&L7 P  &&L7 @  &&L7(@  &&L7(P  &&L7)   &&L7)0  &&L7)@  &&L7
  704. XM)P  &&L7*   &&L7*0  &&L7*@  &&L7*P  &&L7+   &&L7+0  &&L7+@  
  705. XM&&L7#P  &&L7__]K%RL  !AK%RP  !AK%RT _^JZGAA:25 N2 #_@8NO&$-2
  706. XM65!4+D,    4 !L (8?8& 0 HZS8&!@  !AK%Q(  !AK%P,  !AK%P(  !AK
  707. XM%R(  !AK%R,  !AK%R0  !AK%R4  !AK%R8  !AK%R<  !AK%R@  !AK%RD 
  708. XM !AK%RH  !AK%RL  !AK%RP  !AK%RT  !AK%RX  !AK%___ !AK%_______
  709. XM24Y&3$%412Y# /______15A44D%#5"Y# /______15A03$]$12Y# /______
  710. XM14Y605)'4RY# /______0SI<0D-<24Y#3%5$15Q,24U)5%,N2 #______T,Z
  711. XM7$)#7$E.0TQ51$5<1D-.5$PN2 #______T,Z7$)#7$E.0TQ51$5<5$E-12Y(
  712. XM /______0SI<0D-<24Y#3%5$15Q)3RY( /______0SI<0D-<24Y#3%5$15Q$
  713. XM3U,N2 #______T,Z7$)#7$E.0TQ51$5<4UE37%1)345"+D@ ______]#.EQ"
  714. XM0UQ)3D-,541%7%-44DE.1RY( /______0SI<0D-<24Y#3%5$15Q35$1,24(N
  715. XM2 #______T,Z7$)#7$E.0TQ51$5<4U1$1$5&+D@ ______]#.EQ"0UQ)3D-,
  716. XM541%7%-94UQ35$%4+D@ ______]#.EQ"0UQ)3D-,541%7%-94UQ465!%4RY(
  717. XM /______0SI<0D-<24Y#3%5$15Q324=.04PN2 #______T,Z7$)#7$E.0TQ5
  718. XM1$5<15)23D\N2 #______T,Z7$)#7$E.0TQ51$5<0U194$4N2 #______T,Z
  719. XM7$)#7$E.0TQ51$5<7TY53$PN2 #______T,Z7$)#7$E.0TQ51$5<7T1%1E,N
  720. XM2 #______T,Z7$)#7$E.0TQ51$5<4U1$24\N2 #______U5.6DE0+D, ____
  721. XM__]53E-(4DE.2RY# /______54Y214150T4N0P#______TU)4T,N0P#_____
  722. XM_TU!5$-(+D, ______]-05!.04U%+D, ______]&24Q%7TE/+D, ______]5
  723. XM3EI)4"Y( #< <@ F    <0!P &\ ;@!M &P 5P!8 %D :P!J &D : !G &8 
  724. XM90!D &, 6@!; %P 8@!A &  7P!> %T 40!2 %, 5@!5 %0 4 !/ $X 3@  
  725. XG                                              #__P  
  726. Xend
  727. END_OF_FILE
  728.   if test 11377 -ne `wc -c <'MSDOS/bcc/unzip_cr.prj.UU'`; then
  729.     echo shar: \"'MSDOS/bcc/unzip_cr.prj.UU'\" unpacked with wrong size!
  730.   else
  731.     echo shar: Uudecoding \"'MSDOS/bcc/unzip_cr.prj'\" \(8229 characters\)
  732.     cat MSDOS/bcc/unzip_cr.prj.UU | uudecode
  733.     if test 8229 -ne `wc -c <'MSDOS/bcc/unzip_cr.prj'`; then
  734.       echo shar: \"'MSDOS/bcc/unzip_cr.prj'\" uudecoded with wrong size!
  735.     else
  736.       rm MSDOS/bcc/unzip_cr.prj.UU
  737.     fi
  738.   fi
  739.   # end of 'MSDOS/bcc/unzip_cr.prj.UU'
  740. fi
  741. if test -f 'MSDOS/bcc/zipinfo.prj.UU' -a "${1}" != "-c" ; then 
  742.   echo shar: Will not clobber existing file \"'MSDOS/bcc/zipinfo.prj.UU'\"
  743. else
  744.   echo shar: Extracting \"'MSDOS/bcc/zipinfo.prj.UU'\" \(8364 characters\)
  745.   sed "s/^X//" >'MSDOS/bcc/zipinfo.prj.UU' <<'END_OF_FILE'
  746. Xbegin 666 MSDOS/bcc/zipinfo.prj
  747. XM5'5R8F\@0R!0<F]J96-T($9I;&4@&@ !#1(7 1H  0<R $8(R0 "  $ R@ "
  748. XM    RP "  $ S  "  $ S0 "  ( S@ "    O L"    O0L"    O@L"    
  749. XMOPL"  $ T@ "  $ TP "  $ U  "  , U@ " $  UP "  $ V  "  $ \0 !
  750. XM  #R  $  /,  0 !]  !  'U  $  ?8 !   @   ]P !  #X  $  /D  0  
  751. XM^@ "   @L 0"   "\  "    U@L!  #7"P$  -@+ @   -D+ 0  V@L" !  
  752. XMVPL"  0 ^P !  "T#P$  /P  0 !_0 !  #^  $  /\  0    $!  $! 0$ 
  753. XM  ,! 0  ! $!  $% 0$   8! 0 !!P$! !D( 0$ 9 D! 0 @"@$!   + 0$ 
  754. XM  P! 0  #0$!   . 0$   \! 0  $ $!  $1 0$  : / 0  H0\!  &B#P$ 
  755. XM *,/ 0 !I \!  &E#P$  :8/ 0 !IP\!  &H#P$  + / 0  L0\!  &R#P$ 
  756. XM ;,/ 0  J0\!  "J#P$  ZL/ 0  K \!  "M#P$  *X/ 0  KP\!  "U#P$ 
  757. XM +8/ 0  $@$!  $3 0$  !0! 0  %0$!  $6 0$  1<!!   @   & $!   9
  758. XM 0(    : 0$  !L! 0  ' $!  $= 0$  !X! 0 #'P$!  $@ 0$  "(! 0  
  759. XM(P$!   D 0$  "4! 0  )@$" /]_)P$  "L! @   &L" 0  6P(!  %= @$ 
  760. XM 5X" 0 !8@(!  %C @$  60" 0 !90(!  %F @$  6<" 0 !: (!  !M @$ 
  761. XM 6X" 0 !;P(!  %Q @$  7," 0 !=0(!  %V @$  7<" 0 !> (!  %Y @$ 
  762. XM 7H" 0 !>P(!  %\ @$  8X" 0 !?0(!  %^ @$  7\" 0 !@ (!  &! @$ 
  763. XM 8(" 0 !@P(!  &$ @$  84" 0 !A@(!  &' @$  8@" 0 !B@(!  &+ @$ 
  764. XM 8T" 0 !D (!  &1 @$  9(" 0 !DP(!  $$$ $  040 0 !!A !  $'$ $ 
  765. XM 0@0 0 !+0%$                                                
  766. XM                                            +@&  $,Z7$)#7$E.
  767. XM0TQ51$4 3%5$10                                              
  768. XM                                                            
  769. XM                                        +P&  $,Z7$)#7$Q)0@!<
  770. XM3$E"                                                        
  771. XM                                                            
  772. XM                                    , $$ #,R   Q 04 ,C4    R
  773. XM 04 ,3 P   S 7\ 6DE024Y&3P!?7TU30P                          
  774. XM                                                            
  775. XM                                                            
  776. XM     #0!'@ J                                       U 1X *@  
  777. XM                                    -@$> "H                 
  778. XM                     #<!'@ J                                
  779. XM       X 1X *@                                      .0$> "H 
  780. XM                                     #H!'@ J                
  781. XM                       [ 1X *@                              
  782. XM        / $> "H                                      #T!'@ J
  783. XM                                       ^ 1X *@              
  784. XM                        /P$> "H                             
  785. XM         $ !@                                               
  786. XM                                                            
  787. XM                                                            
  788. XM     $$!?P                                                  
  789. XM                                                            
  790. XM                                                            
  791. XM1 $( #,R-S8W    10$( #@Q.3(     1@%_                        
  792. XM                                                            
  793. XM                                                            
  794. XM                          !# 04 +D,   !' 0(   #__P  ,P &  $ 
  795. XM<8;=& H U0@ ?D=215                                          
  796. XM     &=R97                                                  
  797. XM                                                    +6XK("1-
  798. XM14TH-C0I("1.3U-705 @)%!23TU05" D0T%0($U31RA'4D50,DU31REV;VED
  799. XM("HN8R                                                      
  800. XM                                                            
  801. XM                                                            
  802. XM                  #(_P%^5'5R8F\@07-S96UB;&5R                
  803. XM                5$%330                                      
  804. XM                                                            
  805. XM   O35@@+UI)("]/("1405--                                    
  806. XM                                                            
  807. XM                                                            
  808. XM                                                            
  809. XM                             ,G_ %1U<F)O('Y$96)U9V=E<@      
  810. XM                          !T9                               
  811. XM                                                            
  812. XM             "1%6$5.04U%                                    
  813. XM                                                            
  814. XM                                                            
  815. XM                                                            
  816. XM                                        RO\ 5'5R8F\@?E!R;V9I
  817. XM;&5R                                 '1P<F]F                
  818. XM                                                            
  819. XM                        )$5814Y!344                         
  820. XM                                                            
  821. XM                                                            
  822. XM                                                            
  823. XM                                                  #+_P%2?F5S
  824. XM;W5R8V4@0V]M<&EL97(                             4D,         
  825. XM                                                            
  826. XM                                   D4D,                     
  827. XM                                                            
  828. XM                                                            
  829. XM                                                            
  830. XM                                                            
  831. XM ,S_ 7Y);7!O<G0@3&EB<F%R:6%N                              !)
  832. XM35!,24(                                                     
  833. XM                                             "1)35!,24(     
  834. XM                                                            
  835. XM                                                            
  836. XM                                                            
  837. XM                                                            
  838. XM            S?___P                                          
  839. XM                                                            
  840. XM                                                            
  841. XM                                                            
  842. XM                                                            
  843. XM                                                            
  844. XM                                                            
  845. XM                         #4 L@$  !< :8;=&!,@  "4&   ' 8  %I)
  846. XM4$E.1D\N0P!024Y&3RY#                                        
  847. XM                                             @ #  0      "< 
  848. XM:X;=&&<!   ?    @@   $5.5D%21U,N0P!53EI)4%Q53EI)4#4P2UQ%3E9!
  849. XM4D=3+D,                                                     
  850. XM        "P ,  T  @   "D ;8;=&) "        - (  $U!5$-(+D, 34%4
  851. XM0T@N0P                                                      
  852. XM                                !0 &  <      !4 <(;=&*P#  !J
  853. XM    U (  $U)4T,N0P!<34E30RY#                                
  854. XM                                                        "  )
  855. XM  H     @#8 7P0J    ] -0!$,$__________________\/!/__________
  856. XM________-@16 "H$*@+9 [X#HP.' V@#2@,N Q(#]@+7 KX"I@(0 O4!V0%.
  857. XM <H!T@!6    %  6 (ZLV!@$ *.LV!@,   8:Q<"   8:Q<8   8:Q<9   8
  858. XM:Q<:   8:Q<;   8:Q<<   8:Q<=   8:Q<>   8:Q<?   8:Q<@   8:Q<A
  859. XM   8:Q<B   8:Q<C   8:Q<D   8:Q<E   8:Q<F   8:Q?__P 8:Q<  !0 
  860. XM% !,OKD8! "CK-@8#   &&L7 @  &&L7&   &&L7&0  &&L7&@  &&L7&P  
  861. XM&&L7'   &&L7'0  &&L7'@  &&L7'P  &&L7(   &&L7(0  &&L7(@  &&L7
  862. XM(P  &&L7)   &&L7)0  &&L7)@  &&L7__\ &&L7   4 "@ JF*X& 0 HZS8
  863. XM& P  !AK%P(  !AK%Q@  !AK%QD  !AK%QH  !AK%QL  !AK%QP  !AK%QT 
  864. XM !AK%QX  !AK%Q\  !AK%R   !AK%R$  !AK%R(  !AK%R,  !AK%R0  !AK
  865. XM%R4  !AK%R8  !AK%___:Q<= /^J8K@814Y605)'4RY# /\ &&L70SI<0D-<
  866. XM24Y#3%5$15Q,24U)5%,N2 #_ !AK%T,Z7$)#7$E.0TQ51$5<1D-.5$PN2 #_
  867. XM !AK%T,Z7$)#7$E.0TQ51$5<5$E-12Y(    %  # /FMV!@$ *.LV!@,   8
  868. XM:Q<"   8:Q<8   8:Q<9   8:Q<:   8:Q<;   8:Q<<   8:Q<=   8:Q<>
  869. XM   8:Q<?   8:Q<@   8:Q<A   8:Q<B   8:Q<C   8:Q<D   8:Q<E   8
  870. XM:Q<F   8:Q?__T1%7%/_ !AK%T,Z7$)#7$E.0TQ51$5<24\N2 #_ !AK%T,Z
  871. XM7$)#7$E.0TQ51$5<1$]3+D@ _P 8:Q=#.EQ"0UQ)3D-,541%7%-94UQ424U%
  872. XM0BY( /\ &&L70SI<0D-<24Y#3%5$15Q35%))3D<N2 #_ !AK%T,Z7$)#7$E.
  873. XM0TQ51$5<4U1$3$E"+D@ _P 8:Q=#.EQ"0UQ)3D-,541%7%-41$1%1BY( /\ 
  874. XM&&L70SI<0D-<24Y#3%5$15Q365-<4U1!5"Y( /\ &&L70SI<0D-<24Y#3%5$
  875. XM15Q365-<5%E015,N2 #_ !AK%T,Z7$)#7$E.0TQ51$5<4TE'3D%,+D@ _P 8
  876. XM:Q=#.EQ"0UQ)3D-,541%7$524DY/+D@ _P 8:Q=#.EQ"0UQ)3D-,541%7$-4
  877. XM65!%+D@ _P 8:Q=#.EQ"0UQ)3D-,541%7%].54Q,+D@ _P 8:Q=#.EQ"0UQ)
  878. XM3D-,541%7%]$1493+D@ _P 8:Q=#.EQ"0UQ)3D-,541%7%-41$E/+D@ ____
  879. XM__]-25-#+D, ______]-051#2"Y# /______54Y:25 N2 #______UI)4$E.
  880. XM1D\N0P W "H #@   "D *  G "8 )0 D ", (@ A "  'P > !X         
  881. X*        __\     
  882. Xend
  883. END_OF_FILE
  884.   if test 8364 -ne `wc -c <'MSDOS/bcc/zipinfo.prj.UU'`; then
  885.     echo shar: \"'MSDOS/bcc/zipinfo.prj.UU'\" unpacked with wrong size!
  886.   else
  887.     echo shar: Uudecoding \"'MSDOS/bcc/zipinfo.prj'\" \(6040 characters\)
  888.     cat MSDOS/bcc/zipinfo.prj.UU | uudecode
  889.     if test 6040 -ne `wc -c <'MSDOS/bcc/zipinfo.prj'`; then
  890.       echo shar: \"'MSDOS/bcc/zipinfo.prj'\" uudecoded with wrong size!
  891.     else
  892.       rm MSDOS/bcc/zipinfo.prj.UU
  893.     fi
  894.   fi
  895.   # end of 'MSDOS/bcc/zipinfo.prj.UU'
  896. fi
  897. if test -f 'OS2/os2unzip.c' -a "${1}" != "-c" ; then 
  898.   echo shar: Will not clobber existing file \"'OS2/os2unzip.c'\"
  899. else
  900.   echo shar: Extracting \"'OS2/os2unzip.c'\" \(8668 characters\)
  901.   sed "s/^X//" >'OS2/os2unzip.c' <<'END_OF_FILE'
  902. X/* Unix/HPFS filename translation for FAT file systems */
  903. X/*  (with special unzip modifications:  sflag) */
  904. X
  905. X/* also includes lots of EA code for OS/2 */
  906. X
  907. X/* Author: Kai Uwe Rommel */
  908. X
  909. X#include "unzip.h"
  910. X
  911. X#define INCL_NOPM
  912. X#define INCL_DOSNLS
  913. X#define INCL_DOSERRORS
  914. X#define ULONG _ULONG
  915. X#include <os2.h>
  916. X#undef ULONG
  917. X
  918. X#ifdef __WATCOMC__
  919. Xunsigned char __near _osmode = OS2_MODE;
  920. X#endif
  921. X
  922. X
  923. X#define EAID     0x0009
  924. X
  925. X
  926. Xextern int tflag, quietflg;
  927. X
  928. X
  929. Xtypedef struct
  930. X{
  931. X  USHORT nID;
  932. X  USHORT nSize;
  933. X  ULONG lSize;
  934. X}
  935. XEAHEADER, *PEAHEADER;
  936. X
  937. X
  938. X#ifndef __32BIT__
  939. X
  940. Xtypedef struct
  941. X{
  942. X  ULONG oNextEntryOffset;
  943. X  BYTE fEA;
  944. X  BYTE cbName;
  945. X  USHORT cbValue;
  946. X  CHAR szName[1];
  947. X}
  948. XFEA2, *PFEA2;
  949. X
  950. Xtypedef struct
  951. X{
  952. X  ULONG cbList;
  953. X  FEA2 list[1];
  954. X}
  955. XFEA2LIST, *PFEA2LIST;
  956. X
  957. X#endif
  958. X
  959. X
  960. X#ifndef __32BIT__
  961. X#define DosSetPathInfo(p1, p2, p3, p4, p5) \
  962. X        DosSetPathInfo(p1, p2, p3, p4, p5, 0)
  963. X#define DosQueryPathInfo(p1, p2, p3, p4) \
  964. X    DosQPathInfo(p1, p2, p3, p4, 0)
  965. X#define DosMapCase DosCaseMap
  966. X#define DosQueryCtryInfo DosGetCtryInfo
  967. X#endif
  968. X
  969. X
  970. X#ifndef ZIPINFO
  971. X
  972. X
  973. Xextern int sflag;  /* user wants to allow spaces (e.g., "EA DATA. SF") */
  974. X
  975. Xvoid ChangeNameForFAT(char *name)
  976. X{
  977. X  char *src, *dst, *next, *ptr, *dot, *start;
  978. X  static char invalid[] = ":;,=+\"[]<>| \t";
  979. X
  980. X  if ( isalpha(name[0]) && (name[1] == ':') )
  981. X    start = name + 2;
  982. X  else
  983. X    start = name;
  984. X
  985. X  src = dst = start;
  986. X  if ( (*src == '/') || (*src == '\\') )
  987. X    src++, dst++;
  988. X
  989. X  while ( *src )
  990. X  {
  991. X    for ( next = src; *next && (*next != '/') && (*next != '\\'); next++ );
  992. X
  993. X    for ( ptr = src, dot = NULL; ptr < next; ptr++ )
  994. X      if ( *ptr == '.' )
  995. X      {
  996. X        dot = ptr; /* remember last dot */
  997. X        *ptr = '_';
  998. X      }
  999. X
  1000. X    if ( dot == NULL )
  1001. X      for ( ptr = src; ptr < next; ptr++ )
  1002. X        if ( *ptr == '_' )
  1003. X          dot = ptr; /* remember last _ as if it were a dot */
  1004. X
  1005. X    if ( dot && (dot > src) &&
  1006. X         ((next - dot <= 4) ||
  1007. X          ((next - src > 8) && (dot - src > 3))) )
  1008. X    {
  1009. X      if ( dot )
  1010. X        *dot = '.';
  1011. X
  1012. X      for ( ptr = src; (ptr < dot) && ((ptr - src) < 8); ptr++ )
  1013. X        *dst++ = *ptr;
  1014. X
  1015. X      for ( ptr = dot; (ptr < next) && ((ptr - dot) < 4); ptr++ )
  1016. X        *dst++ = *ptr;
  1017. X    }
  1018. X    else
  1019. X    {
  1020. X      if ( dot && (next - src == 1) )
  1021. X        *dot = '.';           /* special case: "." as a path component */
  1022. X
  1023. X      for ( ptr = src; (ptr < next) && ((ptr - src) < 8); ptr++ )
  1024. X        *dst++ = *ptr;
  1025. X    }
  1026. X
  1027. X    *dst++ = *next; /* either '/' or 0 */
  1028. X
  1029. X    if ( *next )
  1030. X    {
  1031. X      src = next + 1;
  1032. X
  1033. X      if ( *src == 0 ) /* handle trailing '/' on dirs ! */
  1034. X        *dst = 0;
  1035. X    }
  1036. X    else
  1037. X      break;
  1038. X  }
  1039. X
  1040. X  for ( src = start; *src != 0; ++src )
  1041. X    if ( (strchr(invalid, *src) != NULL) ||
  1042. X         ((*src == ' ') && !sflag) )  /* allow spaces if user wants */
  1043. X        *src = '_';
  1044. X}
  1045. X
  1046. X
  1047. Xint IsFileNameValid(char *name)
  1048. X{
  1049. X  HFILE hf;
  1050. X#ifdef __32BIT__
  1051. X  ULONG uAction;
  1052. X#else
  1053. X  USHORT uAction;
  1054. X#endif
  1055. X
  1056. X  switch( DosOpen(name, &hf, &uAction, 0, 0, FILE_OPEN,
  1057. X                  OPEN_ACCESS_READONLY | OPEN_SHARE_DENYNONE, 0) )
  1058. X  {
  1059. X  case ERROR_INVALID_NAME:
  1060. X  case ERROR_FILENAME_EXCED_RANGE:
  1061. X    return FALSE;
  1062. X  case NO_ERROR:
  1063. X    DosClose(hf);
  1064. X  default:
  1065. X    return TRUE;
  1066. X  }
  1067. X}
  1068. X
  1069. X
  1070. Xint GetCountryInfo(void)
  1071. X{
  1072. X    COUNTRYINFO ctryi;
  1073. X    COUNTRYCODE ctryc;
  1074. X#ifdef __32BIT__
  1075. X    ULONG cbInfo;
  1076. X#else
  1077. X    USHORT cbInfo;
  1078. X#endif
  1079. X
  1080. X  ctryc.country = ctryc.codepage = 0;
  1081. X
  1082. X  if ( DosQueryCtryInfo(sizeof(ctryi), &ctryc, &ctryi, &cbInfo) != NO_ERROR )
  1083. X    return 0;
  1084. X
  1085. X  return ctryi.fsDateFmt;
  1086. X}
  1087. X
  1088. X
  1089. Xlong GetFileTime(char *name)
  1090. X{
  1091. X#ifdef __32BIT__
  1092. X  FILESTATUS3 fs;
  1093. X#else
  1094. X  FILESTATUS fs;
  1095. X#endif
  1096. X  USHORT nDate, nTime;
  1097. X
  1098. X  if ( DosQueryPathInfo(name, 1, (PBYTE) &fs, sizeof(fs)) )
  1099. X    return -1;
  1100. X
  1101. X  nDate = * (USHORT *) &fs.fdateLastWrite;
  1102. X  nTime = * (USHORT *) &fs.ftimeLastWrite;
  1103. X
  1104. X  return ((ULONG) nDate) << 16 | nTime;
  1105. X}
  1106. X
  1107. X
  1108. Xvoid SetPathInfo(char *path, UWORD moddate, UWORD modtime, int flags)
  1109. X{
  1110. X  union {
  1111. X    FDATE fd;               /* system file date record */
  1112. X    UWORD zdate;            /* date word */
  1113. X  } ud;
  1114. X  union {
  1115. X    FTIME ft;               /* system file time record */
  1116. X    UWORD ztime;            /* time word */
  1117. X  } ut;
  1118. X  FILESTATUS fs;
  1119. X  USHORT nLength;
  1120. X  char szName[CCHMAXPATH];
  1121. X
  1122. X  strcpy(szName, path);
  1123. X  nLength = strlen(szName);
  1124. X  if (szName[nLength - 1] == '/')
  1125. X    szName[nLength - 1] = 0;
  1126. X
  1127. X  if ( DosQueryPathInfo(szName, FIL_STANDARD, (PBYTE) &fs, sizeof(fs)) )
  1128. X    return;
  1129. X
  1130. X  ud.zdate = moddate;
  1131. X  ut.ztime = modtime;
  1132. X  fs.fdateLastWrite = fs.fdateCreation = ud.fd;
  1133. X  fs.ftimeLastWrite = fs.ftimeCreation = ut.ft;
  1134. X
  1135. X  if ( flags != -1 )
  1136. X    fs.attrFile = flags; /* hidden, system, archive, read-only */
  1137. X
  1138. X  DosSetPathInfo(szName, FIL_STANDARD, (PBYTE) &fs, sizeof(fs), 0);
  1139. X}
  1140. X
  1141. X
  1142. Xtypedef struct
  1143. X{
  1144. X  ULONG cbList;               /* length of value + 22 */
  1145. X#ifdef __32BIT__
  1146. X  ULONG oNext;
  1147. X#endif
  1148. X  BYTE fEA;                   /* 0 */
  1149. X  BYTE cbName;                /* length of ".LONGNAME" = 9 */
  1150. X  USHORT cbValue;             /* length of value + 4 */
  1151. X  BYTE szName[10];            /* ".LONGNAME" */
  1152. X  USHORT eaType;              /* 0xFFFD for length-preceded ASCII */
  1153. X  USHORT eaSize;              /* length of value */
  1154. X  BYTE szValue[CCHMAXPATH];
  1155. X}
  1156. XFEALST;
  1157. X
  1158. X
  1159. Xint SetLongNameEA(char *name, char *longname)
  1160. X{
  1161. X  EAOP eaop;
  1162. X  FEALST fealst;
  1163. X
  1164. X  if ( _osmode == DOS_MODE )
  1165. X    return 0;
  1166. X
  1167. X  eaop.fpFEAList = (PFEALIST) &fealst;
  1168. X  eaop.fpGEAList = NULL;
  1169. X  eaop.oError = 0;
  1170. X
  1171. X  strcpy(fealst.szName, ".LONGNAME");
  1172. X  strcpy(fealst.szValue, longname);
  1173. X
  1174. X  fealst.cbList  = sizeof(fealst) - CCHMAXPATH + strlen(fealst.szValue);
  1175. X  fealst.cbName  = (BYTE) strlen(fealst.szName);
  1176. X  fealst.cbValue = sizeof(USHORT) * 2 + strlen(fealst.szValue);
  1177. X
  1178. X#ifdef __32BIT__
  1179. X  fealst.oNext   = 0;
  1180. X#endif
  1181. X  fealst.fEA     = 0;
  1182. X  fealst.eaType  = 0xFFFD;
  1183. X  fealst.eaSize  = strlen(fealst.szValue);
  1184. X
  1185. X  return DosSetPathInfo(name, FIL_QUERYEASIZE,
  1186. X                        (PBYTE) &eaop, sizeof(eaop), 0);
  1187. X}
  1188. X
  1189. X
  1190. Xint IsEA(void *extra_field)
  1191. X{
  1192. X  EAHEADER *pEAblock = (PEAHEADER) extra_field;
  1193. X  return extra_field != NULL && pEAblock -> nID == EAID;
  1194. X}
  1195. X
  1196. X
  1197. Xvoid SetEAs(char *path, void *eablock)
  1198. X{
  1199. X  EAHEADER *pEAblock = (PEAHEADER) eablock;
  1200. X#ifdef __32BIT__
  1201. X  EAOP2 eaop;
  1202. X  PFEA2LIST pFEA2list;
  1203. X#else
  1204. X  EAOP eaop;
  1205. X  PFEALIST pFEAlist;
  1206. X  PFEA pFEA;
  1207. X  PFEA2LIST pFEA2list;
  1208. X  PFEA2 pFEA2;
  1209. X  ULONG nLength2;
  1210. X#endif
  1211. X  USHORT nLength;
  1212. X  char szName[CCHMAXPATH];
  1213. X
  1214. X  if ( !IsEA(eablock) )
  1215. X    return;
  1216. X
  1217. X  if ( _osmode == DOS_MODE )
  1218. X    return;
  1219. X
  1220. X  strcpy(szName, path);
  1221. X  nLength = strlen(szName);
  1222. X  if (szName[nLength - 1] == '/')
  1223. X    szName[nLength - 1] = 0;
  1224. X
  1225. X  if ( (pFEA2list = (PFEA2LIST) malloc((size_t) pEAblock -> lSize)) == NULL )
  1226. X    return;
  1227. X
  1228. X  if ( memextract((char *) pFEA2list, pEAblock -> lSize,
  1229. X              (char *) (pEAblock + 1), 
  1230. X          pEAblock -> nSize - sizeof(pEAblock -> lSize)) )
  1231. X  {
  1232. X    free(pFEA2list);
  1233. X    return;
  1234. X  }
  1235. X
  1236. X#ifdef __32BIT__
  1237. X  eaop.fpGEA2List = NULL;
  1238. X  eaop.fpFEA2List = pFEA2list;
  1239. X#else
  1240. X  pFEAlist  = (PVOID) pFEA2list;
  1241. X  pFEA2 = pFEA2list -> list;
  1242. X  pFEA  = pFEAlist  -> list;
  1243. X
  1244. X  do
  1245. X  {
  1246. X    nLength2 = pFEA2 -> oNextEntryOffset;
  1247. X    nLength = sizeof(FEA) + pFEA2 -> cbName + 1 + pFEA2 -> cbValue;
  1248. X
  1249. X    memcpy(pFEA, (PCH) pFEA2 + sizeof(pFEA2 -> oNextEntryOffset), nLength);
  1250. X
  1251. X    pFEA2 = (PFEA2) ((PCH) pFEA2 + nLength2);
  1252. X    pFEA = (PFEA) ((PCH) pFEA + nLength);
  1253. X  }
  1254. X  while ( nLength2 != 0 );
  1255. X
  1256. X  pFEAlist -> cbList = (PCH) pFEA - (PCH) pFEAlist;
  1257. X
  1258. X  eaop.fpGEAList = NULL;
  1259. X  eaop.fpFEAList = pFEAlist;
  1260. X#endif
  1261. X
  1262. X  eaop.oError = 0;
  1263. X  DosSetPathInfo(szName, FIL_QUERYEASIZE, (PBYTE) &eaop, sizeof(eaop), 0);
  1264. X
  1265. X  if (!tflag && (quietflg < 2))
  1266. X    printf(" (%ld bytes EA's)", pFEA2list -> cbList);
  1267. X
  1268. X  free(pFEA2list);
  1269. X}
  1270. X
  1271. X
  1272. XULONG SizeOfEAs(void *extra_field)
  1273. X{
  1274. X  EAHEADER *pEAblock = (PEAHEADER) extra_field;
  1275. X
  1276. X  if ( extra_field != NULL && pEAblock -> nID == EAID )
  1277. X    return pEAblock -> lSize;
  1278. X
  1279. X  return 0;
  1280. X}
  1281. X
  1282. X
  1283. X#endif /* !ZIPINFO */
  1284. X
  1285. X
  1286. Xstatic unsigned char cUpperCase[256], cLowerCase[256];
  1287. Xstatic BOOL bInitialized;
  1288. X
  1289. Xstatic void InitNLS(void)
  1290. X{
  1291. X  unsigned nCnt, nU;
  1292. X  COUNTRYCODE cc;
  1293. X
  1294. X  bInitialized = TRUE;
  1295. X
  1296. X  for ( nCnt = 0; nCnt < 256; nCnt++ )
  1297. X    cUpperCase[nCnt] = cLowerCase[nCnt] = (unsigned char) nCnt;
  1298. X
  1299. X  cc.country = cc.codepage = 0;
  1300. X  DosMapCase(sizeof(cUpperCase), &cc, (PCHAR) cUpperCase);
  1301. X
  1302. X  for ( nCnt = 0; nCnt < 256; nCnt++ )
  1303. X  {
  1304. X    nU = cUpperCase[nCnt];
  1305. X    if (nU != nCnt && cLowerCase[nU] == (unsigned char) nU)
  1306. X      cLowerCase[nU] = (unsigned char) nCnt;
  1307. X  }
  1308. X
  1309. X  for ( nCnt = 'A'; nCnt <= 'Z'; nCnt++ )
  1310. X    cLowerCase[nCnt] = (unsigned char) (nCnt - 'A' + 'a');
  1311. X}
  1312. X
  1313. X
  1314. Xint IsUpperNLS(int nChr)
  1315. X{
  1316. X  if (!bInitialized)
  1317. X    InitNLS();
  1318. X  return (cUpperCase[nChr] == (unsigned char) nChr);
  1319. X}
  1320. X
  1321. X
  1322. Xint ToLowerNLS(int nChr)
  1323. X{
  1324. X  if (!bInitialized)
  1325. X    InitNLS();
  1326. X  return cLowerCase[nChr];
  1327. X}
  1328. END_OF_FILE
  1329.   if test 8668 -ne `wc -c <'OS2/os2unzip.c'`; then
  1330.     echo shar: \"'OS2/os2unzip.c'\" unpacked with wrong size!
  1331.   fi
  1332.   # end of 'OS2/os2unzip.c'
  1333. fi
  1334. echo shar: End of archive 10 \(of 14\).
  1335. cp /dev/null ark10isdone
  1336. MISSING=""
  1337. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ; do
  1338.     if test ! -f ark${I}isdone ; then
  1339.     MISSING="${MISSING} ${I}"
  1340.     fi
  1341. done
  1342. if test "${MISSING}" = "" ; then
  1343.     echo You have unpacked all 14 archives.
  1344.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1345. else
  1346.     echo You still must unpack the following archives:
  1347.     echo "        " ${MISSING}
  1348. fi
  1349. exit 0
  1350. exit 0 # Just in case...
  1351.