home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #19 / NN_1992_19.iso / spool / comp / sources / misc / 3863 < prev    next >
Encoding:
Text File  |  1992-08-23  |  59.4 KB  |  1,360 lines

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