home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / sources / misc / 3851 < prev    next >
Encoding:
Text File  |  1992-08-22  |  61.4 KB  |  1,707 lines

  1. Newsgroups: comp.sources.misc
  2. Path: sparky!kent
  3. From: zip-bugs@cs.ucla.edu (Info-ZIP group)
  4. Subject:  v31i101:  zip19 - Info-ZIP portable Zip, version 1.9, Part09/11
  5. Message-ID: <1992Aug23.064947.29627@sparky.imd.sterling.com>
  6. Followup-To: comp.sources.d
  7. X-Md4-Signature: 21a7f40fe6ce3bc3b1189116643da76f
  8. Sender: kent@sparky.imd.sterling.com (Kent Landfield)
  9. Organization: Sterling Software
  10. References: <csm-v31i093=zip19.014410@sparky.IMD.Sterling.COM>
  11. Date: Sun, 23 Aug 1992 06:49:47 GMT
  12. Approved: kent@sparky.imd.sterling.com
  13. Lines: 1692
  14.  
  15. Submitted-by: zip-bugs@cs.ucla.edu (Info-ZIP group)
  16. Posting-number: Volume 31, Issue 101
  17. Archive-name: zip19/part09
  18. Supersedes: zip: Volume 23, Issue 88-96
  19. Environment: UNIX, VMS, OS/2, MS-DOS, MACINTOSH, WIN-NT, LINUX, MINIX, XOS, !AMIGA, ATARI, symlink, SGI, DEC, Cray, Convex, Amdahl, Sun, PC
  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:  atari/makefile.st infozip.who mac/macfile.c mac/macstat.c
  28. #   makefile msdos/makefile.msc.UU msdos/match.asm os2/match32.asm.UU
  29. #   vms/VMSmunch.h vms/vaxclib.opt
  30. # Wrapped by kent@sparky on Sun Aug 23 01:00:46 1992
  31. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  32. echo If this archive is complete, you will see the following message:
  33. echo '          "shar: End of archive 9 (of 11)."'
  34. if test -f 'atari/makefile.st' -a "${1}" != "-c" ; then 
  35.   echo shar: Will not clobber existing file \"'atari/makefile.st'\"
  36. else
  37.   echo shar: Extracting \"'atari/makefile.st'\" \(1949 characters\)
  38.   sed "s/^X//" >'atari/makefile.st' <<'END_OF_FILE'
  39. X# Makefile for Zip, ZipNote and ZipSplit for
  40. X# Atari ST with Turbo C 2.0.
  41. X
  42. X# To use, do "make -f makefile.st"
  43. X
  44. X# ------------- Turbo C -------------
  45. XTCHOME=\TC
  46. X
  47. XCFLAGS=-A -G -I$(TCHOME)\INCLUDE -DATARI_ST
  48. XUTILFLAGS=-DUTIL $(CFLAGS)
  49. XCC=tcc
  50. XLD=tlink
  51. XLDFLAGS= -S=8192
  52. X
  53. X# variables
  54. XOBJZ = zip.o zipfile.o zipup.o fileio.o util.o globals.o atari.o
  55. XOBJI = deflate.o trees.o bits.o
  56. X
  57. XOBJU = zipfile_.o zipup_.o fileio_.o util_.o globals.o
  58. XOBJN = zipnote.o  $(OBJU)
  59. XOBJS = zipsplit.o $(OBJU)
  60. X
  61. Xzips:    zip.prg zipnote.prg zipsplit.prg
  62. X    echo done
  63. X
  64. Xatari.o: atari.c
  65. X    $(CC) -c $(CFLAGS) atari.c
  66. X
  67. Xzip.o:    zip.h ziperr.h tailor.h revision.h zip.c
  68. X    $(CC) -c $(CFLAGS) zip.c
  69. X
  70. Xzipfile.o:    zip.h ziperr.h tailor.h zipfile.c
  71. X    $(CC) -c $(CFLAGS) zipfile.c
  72. X
  73. Xzipup.o:    zip.h ziperr.h tailor.h revision.h zipup.c
  74. X    $(CC) -c $(CFLAGS) zipup.c
  75. X
  76. Xfileio.o:    zip.h ziperr.h tailor.h fileio.c
  77. X    $(CC) -c $(CFLAGS) fileio.c
  78. X
  79. Xutil.o:    zip.h ziperr.h tailor.h util.c
  80. X    $(CC) -c $(CFLAGS) util.c
  81. X
  82. Xglobals.o:    zip.h ziperr.h tailor.h globals.c
  83. X    $(CC) -c $(CFLAGS) globals.c
  84. X
  85. Xzipnote.o:    zip.h ziperr.h tailor.h revision.h zipnote.c
  86. X    $(CC) -c $(CFLAGS) zipnote.c
  87. X
  88. Xzipsplit.o:    zipsplit.c zip.h ziperr.h tailor.h revision.h
  89. X    $(CC) -c $(CFLAGS) zipsplit.c
  90. X
  91. Xdeflate.o:    zip.h ziperr.h tailor.h deflate.c
  92. X    $(CC) -c $(CFLAGS) deflate.c
  93. X
  94. Xtrees.o:    zip.h ziperr.h tailor.h trees.c
  95. X    $(CC) -c $(CFLAGS) trees.c
  96. X
  97. Xbits.o:        zip.h ziperr.h tailor.h bits.c
  98. X    $(CC) -c $(CFLAGS) bits.c
  99. X
  100. Xzipfile_.o:    zipfile.c zip.h ziperr.h tailor.h
  101. X    $(CC) -c $(UTILFLAGS) -Ozipfile_.o zipfile.c
  102. X
  103. Xzipup_.o:    zipup.c zip.h ziperr.h tailor.h
  104. X    $(CC) -c $(UTILFLAGS) -Ozipup_.o zipup.c
  105. X
  106. Xfileio_.o:    fileio.c zip.h ziperr.h tailor.h
  107. X    $(CC) -c $(UTILFLAGS) -Ofileio_.o fileio.c
  108. X
  109. Xutil_.o:    util.c zip.h ziperr.h tailor.h
  110. X    $(CC) -c $(UTILFLAGS) -Ofileio_.o fileio.c
  111. X
  112. Xzip.prg: $(OBJZ) $(OBJI)
  113. X    $(LD) $(LDFLAGS) -C=zip.lnk -O=$@
  114. X
  115. Xzipnote.prg: $(OBJN)
  116. X    $(LD) $(LDFLAGS) -C=zipn.lnk -O=$@
  117. X
  118. Xzipsplit.prg: $(OBJS)
  119. X    $(LD) $(LDFLAGS) -C=zips.lnk -O=$@
  120. END_OF_FILE
  121.   if test 1949 -ne `wc -c <'atari/makefile.st'`; then
  122.     echo shar: \"'atari/makefile.st'\" unpacked with wrong size!
  123.   fi
  124.   # end of 'atari/makefile.st'
  125. fi
  126. if test -f 'infozip.who' -a "${1}" != "-c" ; then 
  127.   echo shar: Will not clobber existing file \"'infozip.who'\"
  128. else
  129.   echo shar: Extracting \"'infozip.who'\" \(6165 characters\)
  130.   sed "s/^X//" >'infozip.who' <<'END_OF_FILE'
  131. XThese members of the INFO-ZIP group contributed to the development and
  132. Xtesting of portable Zip.  They are responsible for whatever works in Zip.
  133. XWhatever doesn't work is solely the fault of the authors of Zip (Mark Adler,
  134. XRich Wales, Jean-loup Gailly, Kai Uwe Rommel and Igor Mandrichenko).
  135. XBill Davidsen provided the envargs code. If you have contributed and
  136. Xyour name has been forgotten, please send a reminder to the zip-bugs
  137. Xaddress given in the Readme file.
  138. X
  139. XMark Adler              madler@tybalt.caltech.edu       NeXT 2.x
  140. XGlenn J. Andrews        oper1%drcv06.decnet@drcvax.af.mil       VAX VMS
  141. XTom Betz                marob!upaya!tbetz@phri.nyu.edu  SCO Xenix 2.3.1
  142. XJames Birdsall          jwbirdsa@amc.com                AT&T 3B1
  143. XWim Bonner              27313853@WSUVM1.CSC.WSU.EDU     HP 9000/840a HPUX
  144. XPaul Borman             prb@cray.com                    Cray-X/YMP,2 UNICOS 6-8
  145. XLeslie C. Brown         lbrown@BRL.MIL                  Pyramid MIS-4
  146. XRalf Brown              ralf@b.gp.cs.cmu.edu            Pyramid MIS-4
  147. XPietro Caselli          zaphod@petruz.sublink.org       Minix 1.5.10
  148. XBill Davidsen           davidsen@crdos1.crd.ge.com      Xenix (on what?)
  149. XDaniel Deimert          daniel@hexagon.se               zeus3.21 Zilog S8000
  150. XJames P. Dugal          jpd@usl.edu                     Pyramid 90X OSx4.1
  151. X"Evil Ed"               esaffle@gmuvax2.gmu.edu         Ulrix-32 V3.1 (Rev. 9)
  152. XDavid A. Feinleib       t-davefe@microsoft.com          Windows NT
  153. XGreg Flint              afc@klaatu.cc.purdue.edu        ETA-10P* hybrid Sys V
  154. XJeff Foy                jfoy@glia.biostr.washington.edu IRIX Sys V Rel 3.3.1
  155. XMike Freeman            freeman@watsun.cc.columbia.edu  Vax VMS
  156. XKevin M. Fritz          kmfritz@apgea.army.mil          Turbo C++ 1.0
  157. XJean-loup Gailly        jloup@chorus.fr                 MS-DOS Microsoft C 5.1
  158. XScott D. Galloway       sgallowa@letterkenn-emh1.army.mil   Sperry 5000 SysV.3
  159. XGeorge Grimes           grimes@netcom.com               Apollo Domain SR10.4
  160. XHunter Goatley          goathunter@WKUVX1.BITNET        Vax VMS
  161. XArnt Gulbrandsen        agulbra@pvv.unit.no             Linux
  162. XDavid Gundlach          david@rolf.stat.uga.edu         Sun SS1+ SunOS 4.1
  163. XBob Hardy               hardy@lucid.com                 Power C on MSDOS
  164. XPeter Jones             jones@mips1.info.uqam.ca        MIPS UMIPS 4.0
  165. XKjetil W. J{\o}rgensen  jorgens@lise.unit.no            OSF/1
  166. XBruce Kahn              bkahn@archive.webo.dg.com       MS-DOS Microsoft C 5.1
  167. XJonathan I. Kamens      jik@pit-manager.mit.edu         ultrix on DECstation
  168. XBob Kemp                Robert.V.Kemp@att.com           AT&T 3B2 SysV 3.2v2
  169. XEarl Kiech              KIECH@utkvx.utk.edu             VAX VMS V5.4-1A
  170. XDavid Kirschbaum        kirsch@usasoc.soc.mil           He got us all in this
  171. X                                                        mess in the first place
  172. XBo Kullmar              bk@kullmar.se                   DNIX 5.2, 5.3
  173. XHarry Langenbacher      harry@neuron6.Jpl.Nasa.Gov      Sun SS1+ SunOS 4.1
  174. XMichael D. Lawler       mdlawler@bsu-cs.bsu.edu         Mt.Xinu BSD 4.3 on VAX
  175. XJohnny Lee              johnnyl@microsoft.com           Microsoft C 7.0
  176. XDavid Lemson            lemson@ux1.cso.uiuc.edu         Sequent Dynix 3.0.17
  177. XOnno van der Linden     vdlinden@fwi.uva.nl             SCO Unix 3.2.0
  178. X                                                        BC++ 3.0, djgcc 1.06
  179. XWarner Losh             imp@Solbourne.COM               packing algorithm help
  180. XJohn Lundin             lundin@urvax.urich.edu          VAX VMS
  181. XIgor Mandrichenko       mandrichenko@m10.ihep.su        VAX VMS
  182. XCliff Manis             root@csoftec.csf.com            SCO 2.3.1 (386)
  183. XFulvio Marino           fulvio@iconet.ico.olivetti.it   X/OS 2.3 & 2.4
  184. XBill Marsh              bmarsh@cod.nosc.mil             SGI Iris 4D35
  185. XPeter Mauzey            ptm@mtdcc.att.com               AT&T 6300
  186. XRafal Z. Maszkowski     <rzm%pltumk11.bitnet@mvs.oac.ucla.edu> Bug report
  187. XRobert McBroom (?)      rm3@ornl.gov                    DECsystem 5810
  188. XHumberto Ortiz-Zuazaga  zuazaga@ucunix.san.uc.edu       Linux
  189. XJames E. O'Dell         jim@fpr.com                     MacOS
  190. XWilliam O'Shaughnessy   williamo@hpcupt1.cup.hp.com     HPUX
  191. XEnrico Renato Palmerini palmer@vxscaq.cineca.it         UNISYS 7000 Sys 5 r2.3
  192. XKeith Petersen          w8sdz@simtel20.army.mil         Maintainer of Info-ZIP
  193. X                                                        Pyramid UCB OSx4.4c
  194. XDavid A Rasmussen       dave@convex.csd.uwm.edu         Convex C220 with 9.0 OS
  195. XMichael Regoli          mr@cica.indiana.edu             Ultrix 3.1 VAX 8650
  196. X                                                        BSD 4.3 IBM RT/125
  197. X                                                        BSD 4.3 MicroVAX 3500
  198. X                                                        SunOS 4.0.3 Sun 4/330
  199. XRick Rodgers            rodgers@maxwell.mmwb.ucsf.EDU   Unix man page
  200. XGreg Roelofs            roe2@midway.uchicago.edu        SunOS 4.1.1,4.1.2 Sun 4
  201. X                                                        Unicos 5.1--6.1.5 Cray
  202. X                                                        OS/2 1.3 MS C 6.0
  203. X                                                        Ultrix 4.1,4.2 DEC 5810
  204. X                                                        VMS 5.2, 5.4 VAX 8600
  205. X                                                        Irix 3.3.2, SGI Iris 4D
  206. X                                                        UTS 1.2.4 Amdahl 5880
  207. XKai Uwe Rommel          rommel@informatik.tu-muenchen.de        OS/2
  208. XJon Saxton              jrs@panix.com                   Microsoft C 6.0
  209. XSteve Salisbury         stevesa@microsoft.com           Microsoft C 6.0
  210. XMartin Schulz           martin@indian.cs.unb.ca         Atari ST
  211. XDave Sisson             daves@vtcosy.cns.vt.edu         AIX 1.1.1 PS/2 & 3090
  212. XRon Srodawa             srodawa@vela.acs.oakland.edu    SCO Xenix/386 2.3.3
  213. XBertil Stenstr|m        stenis@heron.qz.se              HP-UX 7.0 HP9000/835
  214. XAntoine Verheijen    antoine@sysmail.ucs.ualberta.ca envargs fix
  215. XArjan de Vet            devet@info.win.tue.nl           SunOS 4.1, MSC 5.1
  216. XRich Wales              wales@cs.ucla.edu               SunOS 4.0.3 Sun-3/50
  217. END_OF_FILE
  218.   if test 6165 -ne `wc -c <'infozip.who'`; then
  219.     echo shar: \"'infozip.who'\" unpacked with wrong size!
  220.   fi
  221.   # end of 'infozip.who'
  222. fi
  223. if test -f 'mac/macfile.c' -a "${1}" != "-c" ; then 
  224.   echo shar: Will not clobber existing file \"'mac/macfile.c'\"
  225. else
  226.   echo shar: Extracting \"'mac/macfile.c'\" \(6797 characters\)
  227.   sed "s/^X//" >'mac/macfile.c' <<'END_OF_FILE'
  228. X/*---------------------------------------------------------------------------
  229. X
  230. X  macfile.c
  231. X
  232. X  This source file is used by the mac port to support commands not available
  233. X  directly on the Mac, i.e. mkdir().
  234. X  It also helps determine if we're running on a Mac with HFS and a disk
  235. X  formatted for HFS (HFS - Hierarchical File System; compared to its predecessor,
  236. X  MFS - Macintosh File System).
  237. X  
  238. X  ---------------------------------------------------------------------------*/
  239. X
  240. X#include "unzip.h"
  241. X
  242. X#ifdef MACOS
  243. X#ifndef FSFCBLen
  244. X#define FSFCBLen    (*(short *)0x3F6)
  245. X#endif
  246. X
  247. Xstatic short wAppVRefNum;
  248. Xstatic long lAppDirID;
  249. Xint hfsflag;            /* set if disk has hierarchical file system */
  250. X
  251. Xstatic int IsHFSDisk(short wRefNum)
  252. X{
  253. X    /* get info about the specified volume */
  254. X    if (hfsflag == true) {
  255. X        HParamBlockRec    hpbr;
  256. X        Str255 temp;
  257. X        short wErr;
  258. X        
  259. X        hpbr.volumeParam.ioCompletion = 0;
  260. X        hpbr.volumeParam.ioNamePtr = temp;
  261. X        hpbr.volumeParam.ioVRefNum = wRefNum;
  262. X        hpbr.volumeParam.ioVolIndex = 0;
  263. X        wErr = PBHGetVInfo(&hpbr, 0);
  264. X
  265. X        if (wErr == noErr && hpbr.volumeParam.ioVFSID == 0
  266. X            && hpbr.volumeParam.ioVSigWord == 0x4244) {
  267. X                return true;
  268. X        }
  269. X    }
  270. X
  271. X    return false;
  272. X} /* IsHFSDisk */
  273. X
  274. Xvoid macfstest(int vrefnum)
  275. X{
  276. X    Str255 st;
  277. X
  278. X    /* is this machine running HFS file system? */
  279. X    if (FSFCBLen <= 0) {
  280. X        hfsflag = false;
  281. X    }
  282. X    else
  283. X    {
  284. X        hfsflag = true;
  285. X    }
  286. X
  287. X    /* get the file's volume reference number and directory ID */
  288. X    if (hfsflag == true) {
  289. X        WDPBRec    wdpb;
  290. X        OSErr err = noErr;
  291. X
  292. X        if (vrefnum != 0) {
  293. X            wdpb.ioCompletion = false;
  294. X            wdpb.ioNamePtr = st;
  295. X            wdpb.ioWDIndex = 0;
  296. X            wdpb.ioVRefNum = vrefnum;
  297. X            err = PBHGetVol(&wdpb, false);
  298. X        
  299. X            if (err == noErr) {
  300. X                wAppVRefNum = wdpb.ioWDVRefNum;
  301. X                lAppDirID = wdpb.ioWDDirID;
  302. X            }
  303. X        }
  304. X
  305. X        /* is the disk we're using formatted for HFS? */
  306. X        hfsflag = IsHFSDisk(wAppVRefNum);
  307. X    }
  308. X    
  309. X    return;
  310. X} /* mactest */
  311. X
  312. Xint macmkdir(char *path, short nVRefNum, long lDirID)
  313. X{
  314. X    OSErr    err = -1;
  315. X
  316. X    if (path != 0 && strlen(path)<256 && hfsflag == true) {
  317. X        HParamBlockRec    hpbr;
  318. X        Str255    st;
  319. X
  320. X        CtoPstr(path);
  321. X        if ((nVRefNum == 0) && (lDirID == 0))
  322. X        {
  323. X            hpbr.fileParam.ioNamePtr = st;
  324. X            hpbr.fileParam.ioCompletion = NULL;
  325. X            err = PBHGetVol((WDPBPtr)&hpbr, false);
  326. X            nVRefNum = hpbr.wdParam.ioWDVRefNum;
  327. X            lDirID = hpbr.wdParam.ioWDDirID;
  328. X        }
  329. X        else
  330. X        {
  331. X            err = noErr;
  332. X        }
  333. X        if (err == noErr) {
  334. X            hpbr.fileParam.ioCompletion = NULL;
  335. X            hpbr.fileParam.ioVRefNum = nVRefNum;
  336. X            hpbr.fileParam.ioDirID = lDirID;
  337. X            hpbr.fileParam.ioNamePtr = (StringPtr)path;
  338. X            err = PBDirCreate(&hpbr, false);
  339. X        }    
  340. X        PtoCstr(path);
  341. X    }
  342. X
  343. X    return (int)err;
  344. X} /* mkdir */
  345. X
  346. Xvoid ResolveMacVol(short nVRefNum, short *pnVRefNum, long *plDirID, StringPtr pst)
  347. X{
  348. X    if (hfsflag)
  349. X    {
  350. X        WDPBRec  wdpbr;
  351. X        Str255   st;
  352. X        OSErr    err;
  353. X
  354. X        wdpbr.ioCompletion = (ProcPtr)NULL;
  355. X        wdpbr.ioNamePtr = st;
  356. X        wdpbr.ioVRefNum = nVRefNum;
  357. X        wdpbr.ioWDIndex = 0;
  358. X        wdpbr.ioWDProcID = 0;
  359. X        wdpbr.ioWDVRefNum = 0;
  360. X        err = PBGetWDInfo( &wdpbr, false );
  361. X        if ( err == noErr )
  362. X        {
  363. X            if (pnVRefNum)
  364. X                *pnVRefNum = wdpbr.ioWDVRefNum;
  365. X            if (plDirID)
  366. X                *plDirID = wdpbr.ioWDDirID;
  367. X            if (pst)
  368. X                BlockMove( st, pst, st[0]+1 );
  369. X        }
  370. X    }
  371. X    else
  372. X    {
  373. X        if (pnVRefNum)
  374. X            *pnVRefNum = nVRefNum;
  375. X        if (plDirID)
  376. X            *plDirID = 0;
  377. X        if (pst)
  378. X            *pst = 0;
  379. X    }
  380. X}
  381. X
  382. Xshort macopen(char *sz, short nFlags, short nVRefNum, long lDirID)
  383. X{
  384. X    OSErr   err;
  385. X    Str255  st;
  386. X    char    chPerms = (!nFlags) ? fsRdPerm : fsRdWrPerm;
  387. X    short   nFRefNum;
  388. X
  389. X    CtoPstr( sz );
  390. X    BlockMove( sz, st, sz[0]+1 );
  391. X    PtoCstr( sz );
  392. X    if (hfsflag)
  393. X    {
  394. X        if (nFlags > 1)
  395. X            err = HOpenRF( nVRefNum, lDirID, st, chPerms, &nFRefNum);
  396. X        else
  397. X            err = HOpen( nVRefNum, lDirID, st, chPerms, &nFRefNum);
  398. X    }
  399. X    else
  400. X    {
  401. X        /*
  402. X         * Have to use PBxxx style calls since the high level
  403. X         * versions don't support specifying permissions
  404. X         */
  405. X        ParamBlockRec    pbr;
  406. X
  407. X        pbr.ioParam.ioNamePtr = st;
  408. X        pbr.ioParam.ioVRefNum = gnVRefNum;
  409. X        pbr.ioParam.ioVersNum = 0;
  410. X        pbr.ioParam.ioPermssn = chPerms;
  411. X        pbr.ioParam.ioMisc = 0;
  412. X        if (nFlags >1)
  413. X            err = PBOpenRF( &pbr, false );
  414. X        else
  415. X            err = PBOpen( &pbr, false );
  416. X        nFRefNum = pbr.ioParam.ioRefNum;
  417. X    }
  418. X    if ( err )
  419. X        return -1;
  420. X    else
  421. X        return nFRefNum;
  422. X}
  423. X
  424. Xshort maccreat(char *sz, short nVRefNum, long lDirID, OSType ostCreator, OSType ostType)
  425. X{
  426. X    OSErr   err;
  427. X    Str255  st;
  428. X    FInfo   fi;
  429. X
  430. X    CtoPstr( sz );
  431. X    BlockMove( sz, st, sz[0]+1 );
  432. X    PtoCstr( sz );
  433. X    if (hfsflag)
  434. X    {
  435. X        err = HGetFInfo( nVRefNum, lDirID, st, &fi );
  436. X        if (err == fnfErr)
  437. X            err = HCreate( nVRefNum, lDirID, st, ostCreator, ostType );
  438. X        else if (err == noErr)
  439. X        {
  440. X            fi.fdCreator = ostCreator;
  441. X            fi.fdType = ostType;
  442. X            err = HSetFInfo( nVRefNum, lDirID, st, &fi );
  443. X        }
  444. X    }
  445. X    else
  446. X    {
  447. X        err = GetFInfo( st, nVRefNum, &fi );
  448. X        if (err == fnfErr)
  449. X            err = Create( st, nVRefNum, ostCreator, ostType );
  450. X        else if (err == noErr)
  451. X        {
  452. X            fi.fdCreator = ostCreator;
  453. X            fi.fdType = ostType;
  454. X            err = SetFInfo( st, nVRefNum, &fi );
  455. X        }
  456. X    }
  457. X    if (err == noErr)
  458. X        return noErr;
  459. X    else
  460. X        return -1;
  461. X}
  462. X
  463. Xshort macread(short nFRefNum, char *pb, unsigned cb)
  464. X{
  465. X    long    lcb = cb;
  466. X
  467. X    (void)FSRead( nFRefNum, &lcb, pb );
  468. X
  469. X    return (short)lcb;
  470. X}
  471. X
  472. Xshort macwrite(short nFRefNum, char *pb, unsigned cb)
  473. X{
  474. X    long    lcb = cb;
  475. X
  476. X    (void)FSWrite( nFRefNum, &lcb, pb );
  477. X
  478. X    return (short)lcb;
  479. X}
  480. X
  481. Xshort macclose(short nFRefNum)
  482. X{
  483. X    return FSClose( nFRefNum );
  484. X}
  485. X
  486. Xlong maclseek(short nFRefNum, long lib, short nMode)
  487. X{
  488. X    ParamBlockRec   pbr;
  489. X
  490. X    if (nMode == SEEK_SET)
  491. X        nMode = fsFromStart;
  492. X    else if (nMode == SEEK_CUR)
  493. X        nMode = fsFromMark;
  494. X    else if (nMode == SEEK_END)
  495. X        nMode = fsFromLEOF;
  496. X    pbr.ioParam.ioRefNum = nFRefNum;
  497. X    pbr.ioParam.ioPosMode = nMode;
  498. X    pbr.ioParam.ioPosOffset = lib;
  499. X    (void)PBSetFPos(&pbr, 0);
  500. X    return pbr.ioParam.ioPosOffset;
  501. X}
  502. X
  503. X#endif /* MACOS */
  504. END_OF_FILE
  505.   if test 6797 -ne `wc -c <'mac/macfile.c'`; then
  506.     echo shar: \"'mac/macfile.c'\" unpacked with wrong size!
  507.   fi
  508.   # end of 'mac/macfile.c'
  509. fi
  510. if test -f 'mac/macstat.c' -a "${1}" != "-c" ; then 
  511.   echo shar: Will not clobber existing file \"'mac/macstat.c'\"
  512. else
  513.   echo shar: Extracting \"'mac/macstat.c'\" \(5863 characters\)
  514.   sed "s/^X//" >'mac/macstat.c' <<'END_OF_FILE'
  515. X#ifdef THINK_C
  516. X#define MACOS
  517. X#include    <pascal.h>
  518. X#endif
  519. X#ifdef MPW
  520. X#define MACOS
  521. X#include    <Files.h>
  522. X#include    <Errors.h>
  523. X#define FSFCBLen    (*(short *)0x3F6)
  524. X#define CtoPstr c2pstr
  525. X#define PtoCstr p2cstr
  526. X#endif
  527. X
  528. X#ifdef MACOS
  529. X#include    <string.h>
  530. X#include    "macstat.h"
  531. Xint macstat(char *path, struct stat *buf, short nVRefNum, long lDirID );
  532. X
  533. X#define unixTime(t) ((t) = ((t) < (time_t)0x7c25b080) ? 0 : (t) - (time_t)0x7c25b080)
  534. X
  535. X/* assume that the path will contain a Mac-type pathname, i.e. ':'s, etc. */
  536. Xint macstat(char *path, struct stat *buf, short nVRefNum, long lDirID )
  537. X{
  538. X    char    temp[256];
  539. X    short   nVRefNumT;
  540. X    long    lDirIDT;
  541. X    short   fIsHFS = false;
  542. X    OSErr   err;
  543. X    short   fUseDefault = ((nVRefNum == 0) && (lDirID == 0));
  544. X
  545. X    if (buf == (struct stat *)0L || path == (char *)0L) {
  546. X        SysBeep(1);
  547. X        return -1;
  548. X    }
  549. X
  550. X    if (path[0] == '\0' || strlen(path)>255) {
  551. X        return -1;
  552. X    }
  553. X
  554. X    if ( fUseDefault )
  555. X    {
  556. X        if (GetVol((StringPtr)&temp[0], &nVRefNumT) != noErr) {
  557. X            SysBeep(1);
  558. X            return -1;
  559. X        }
  560. X    }
  561. X
  562. X    /* get info about the specified volume */
  563. X    if (FSFCBLen > 0)   /* HFS Disk? */
  564. X    {
  565. X        HParamBlockRec    hpbr;
  566. X
  567. X        if ( fUseDefault )
  568. X        {
  569. X            WDPBRec wdpb;
  570. X    
  571. X            wdpb.ioCompletion = 0;
  572. X            wdpb.ioNamePtr = (StringPtr)temp;
  573. X            err = PBHGetVol(&wdpb, 0);
  574. X            nVRefNumT = wdpb.ioWDVRefNum;
  575. X            lDirIDT = wdpb.ioWDDirID;
  576. X        }
  577. X        else
  578. X        {
  579. X            nVRefNumT = nVRefNum;
  580. X            lDirIDT = lDirID;
  581. X            err = noErr;
  582. X        }
  583. X        if (err == noErr)
  584. X        {
  585. X            hpbr.volumeParam.ioCompletion = 0;
  586. X            hpbr.volumeParam.ioNamePtr = (StringPtr)temp;
  587. X            hpbr.volumeParam.ioVRefNum = nVRefNumT;
  588. X            hpbr.volumeParam.ioVolIndex = 0;
  589. X            err = PBHGetVInfo(&hpbr, 0);
  590. X
  591. X            if (err == noErr && hpbr.volumeParam.ioVFSID == 0
  592. X                && hpbr.volumeParam.ioVSigWord == 0x4244) {
  593. X                    fIsHFS = true;
  594. X            }
  595. X        }
  596. X    }
  597. X
  598. X
  599. X    /* number of links, at least in System 6.0x, 0 */
  600. X    buf->st_nlink = 0;
  601. X    /* user id */
  602. X    buf->st_uid = 0;
  603. X    /* group id */
  604. X    buf->st_gid = 0;
  605. X
  606. X    if (fIsHFS == true)   /* HFS? */
  607. X    {
  608. X        CInfoPBRec  cPB;
  609. X        HParamBlockRec  hPB;
  610. X
  611. X        /* get information about file */
  612. X        cPB.hFileInfo.ioCompletion = (ProcPtr)0L;
  613. X        CtoPstr(path);
  614. X        strncpy(temp,path, path[0]+1);
  615. X        PtoCstr(path);
  616. X        cPB.hFileInfo.ioNamePtr = (StringPtr)temp;
  617. X        cPB.hFileInfo.ioVRefNum = nVRefNumT;
  618. X        cPB.hFileInfo.ioDirID = lDirIDT;
  619. X        cPB.hFileInfo.ioFDirIndex = 0;
  620. X
  621. X        err = PBGetCatInfo(&cPB, false); 
  622. X
  623. X        if (err != noErr) {
  624. X            if (err != fnfErr) {
  625. X                SysBeep(1);
  626. X            }
  627. X            return -1;
  628. X        }
  629. X        
  630. X        /* Type of file: directory or regular file + access */
  631. X        buf->st_mode = (cPB.hFileInfo.ioFlAttrib & ioDirMask) ? S_IFDIR : S_IFREG |
  632. X                       (cPB.hFileInfo.ioFlAttrib & 0x01) ? S_IREAD : (S_IREAD | S_IWRITE);
  633. X        
  634. X        /* last access time, modification time and creation time(?) */
  635. X        buf->st_atime = buf->st_mtime = cPB.hFileInfo.ioFlMdDat;
  636. X        buf->st_ctime = cPB.hFileInfo.ioFlCrDat;
  637. X        /* dev number */
  638. X        buf->st_dev = (long)cPB.hFileInfo.ioVRefNum;
  639. X        /* inode number */
  640. X        buf->st_ino = cPB.hFileInfo.ioDirID;
  641. X        /* size of file - use only the data fork */
  642. X        buf->st_size = cPB.hFileInfo.ioFlLgLen;
  643. X
  644. X        /* size of disk block */
  645. X        hPB.volumeParam.ioCompletion = (ProcPtr)0L;
  646. X        hPB.volumeParam.ioNamePtr = (StringPtr)temp;
  647. X        hPB.volumeParam.ioVRefNum = nVRefNumT;
  648. X        hPB.volumeParam.ioVolIndex = 0;
  649. X
  650. X        err = PBHGetVInfo(&hPB, false);
  651. X
  652. X        if (err != noErr) {
  653. X            SysBeep(1);
  654. X            return -1;
  655. X        }
  656. X            
  657. X        buf->st_blksize = cPB.hFileInfo.ioFlPyLen / hPB.volumeParam.ioVAlBlkSiz;
  658. X    }
  659. X    else    /* MFS? */
  660. X    {
  661. X        ParamBlockRec   pPB;
  662. X        ParamBlockRec   hPB;
  663. X
  664. X        CtoPstr(path);
  665. X        strncpy(temp, path, path[0]+1);
  666. X        PtoCstr(path);
  667. X        pPB.fileParam.ioCompletion = (ProcPtr)0;
  668. X        pPB.fileParam.ioNamePtr = (StringPtr)temp;
  669. X        pPB.fileParam.ioVRefNum = nVRefNumT;
  670. X        pPB.fileParam.ioFVersNum = 0;
  671. X        pPB.fileParam.ioFDirIndex = 0;
  672. X
  673. X        err = PBGetFInfo(&pPB, false);
  674. X
  675. X        if (err != noErr) {
  676. X            SysBeep(1);
  677. X            return -1;
  678. X        }
  679. X
  680. X        /* Type of file: either directory or regular file + access */
  681. X        buf->st_mode = (pPB.fileParam.ioFlAttrib & ioDirMask) ? S_IFDIR : S_IFREG;
  682. X                       (pPB.fileParam.ioFlAttrib & 0x01) ? S_IREAD : (S_IREAD | S_IWRITE);
  683. X
  684. X        /* last access time, modification time and creation time(?) */
  685. X        buf->st_atime = buf->st_mtime = pPB.fileParam.ioFlMdDat;
  686. X        buf->st_ctime = pPB.fileParam.ioFlCrDat;
  687. X        /* dev number */
  688. X        buf->st_dev = (long)pPB.fileParam.ioVRefNum;
  689. X        /* inode number */
  690. X        buf->st_ino = pPB.fileParam.ioFlNum;
  691. X        /* size of file - use only the data fork */
  692. X        buf->st_size = pPB.fileParam.ioFlLgLen;
  693. X
  694. X        /* size of disk block */
  695. X        hPB.volumeParam.ioCompletion = (ProcPtr)0;
  696. X        hPB.volumeParam.ioNamePtr = (StringPtr)temp;
  697. X        hPB.volumeParam.ioVRefNum = nVRefNumT;
  698. X        hPB.volumeParam.ioVolIndex = 0;
  699. X
  700. X        err = PBGetVInfo(&hPB, false);
  701. X
  702. X        if (err != noErr) {
  703. X            SysBeep(1);
  704. X            return -1;
  705. X        }
  706. X
  707. X        buf->st_blksize = pPB.fileParam.ioFlPyLen / hPB.volumeParam.ioVAlBlkSiz;
  708. X    }
  709. X
  710. X    /* Convert from Macintosh time format to Unix time format. */
  711. X
  712. X    unixTime(buf->st_atime);
  713. X    unixTime(buf->st_mtime);
  714. X    unixTime(buf->st_ctime);
  715. X
  716. X    return 0;
  717. X}
  718. X#else
  719. X#error 1
  720. X#endif
  721. END_OF_FILE
  722.   if test 5863 -ne `wc -c <'mac/macstat.c'`; then
  723.     echo shar: \"'mac/macstat.c'\" unpacked with wrong size!
  724.   fi
  725.   # end of 'mac/macstat.c'
  726. fi
  727. if test -f 'makefile' -a "${1}" != "-c" ; then 
  728.   echo shar: Will not clobber existing file \"'makefile'\"
  729. else
  730.   echo shar: Extracting \"'makefile'\" \(7055 characters\)
  731.   sed "s/^X//" >'makefile' <<'END_OF_FILE'
  732. X# Makefile for Zip, ZipNote, ZipCloak and ZipSplit
  733. X
  734. X# what you can make ...
  735. Xall:
  736. X    @echo ''
  737. X    @echo 'Make what?  You must say what system to make Zip for--e.g.'
  738. X    @echo '"make bsd".  Choices: bsd, bsdold, sysv, sysv_old, sysv_386,'
  739. X    @echo 'dnix, linux, sun, sun_gcc, next10, next, hpux, cray, cray3,'
  740. X    @echo '3b1, att6300, zilog, scodos, aux, c120, convex, aix, minix,'
  741. X    @echo 'isc, ultrix, dec_osf1 and xos.'
  742. X    @echo 'See the files install.doc and zip.doc for more information.'
  743. X    @echo ''
  744. X
  745. XCRYPTO =
  746. XCLOAK =
  747. XCRFLAG =
  748. XMAKE = make
  749. X#  **********************************************************************
  750. X#  *** For encryption version, remove the # at the front of next line ***
  751. X# MAKE = make CRYPTO="crypt.o" CLOAK="zipcloak" CRFLAG="-DCRYPT"
  752. X
  753. X# (to use the Gnu compiler, change cc to gcc in CC and BIND)
  754. XCC = cc
  755. XBIND = cc
  756. XE =
  757. XCPP = /usr/lib/cpp -Dunix
  758. X
  759. X# probably can change this to 'install' if you have it
  760. XINSTALL = cp
  761. X
  762. X# target directories - where to install executables and man pages to
  763. XBINDIR = /usr/local/bin
  764. XMANDIR = /usr/man/manl
  765. X
  766. X# flags
  767. X#   CFLAGS    flags for C compile
  768. X#   LFLAGS1   flags after output file spec, before obj file list
  769. X#   LFLAGS2   flags after obj file list (libraries, etc)
  770. XCFLAGS = -O
  771. XLFLAGS1 =
  772. XLFLAGS2 = -s
  773. X
  774. X# object file lists
  775. XOBJZ = zip.o zipfile.o zipup.o fileio.o util.o globals.o $(CRYPTO)
  776. X
  777. XOBJI = deflate.o trees.o bits.o
  778. XOBJA =
  779. XOBJU = zipfile_.o zipup_.o fileio_.o util_.o globals.o
  780. XOBJN = zipnote.o  $(OBJU)
  781. XOBJC = zipcloak.o $(OBJU) crypt_.o
  782. XOBJS = zipsplit.o $(OBJU)
  783. X
  784. X# suffix rules
  785. X.SUFFIXES:
  786. X.SUFFIXES: _.o .o .c .doc .1
  787. X.c_.o:
  788. X    rm -f $*_.c; ln $< $*_.c
  789. X    $(CC) $(CFLAGS) -DUTIL $(CRFLAG) -c $*_.c
  790. X    rm -f $*_.c
  791. X.c.o:
  792. X    $(CC) $(CFLAGS) $(CRFLAG) -c $<
  793. X
  794. X.1.doc:
  795. X    nroff -man $< | col -b | uniq > $@
  796. X
  797. X# rules for zip, zipnote, zipcloak, zipsplit, and zip.doc.
  798. X$(OBJZ): zip.h ziperr.h tailor.h
  799. X$(OBJI): zip.h ziperr.h tailor.h
  800. X$(OBJN): zip.h ziperr.h tailor.h
  801. X$(OBJS): zip.h ziperr.h tailor.h
  802. X$(OBJC): zip.h ziperr.h tailor.h
  803. X
  804. Xmatch.o: match.s
  805. X    $(CPP) match.s > _match.s
  806. X    $(CC) -c _match.s
  807. X    mv _match.o match.o
  808. X    rm -f _match.s
  809. X
  810. XZIPS = zip$E zipnote$E zipsplit$E $(CLOAK)$E
  811. X
  812. Xzip.o zipup.o zipnote.o zipcloak.o zipsplit.o: revision.h
  813. Xzips: $(ZIPS)
  814. Xzipsman: zip zipnote zipsplit $(CLOAK) zip.doc
  815. X
  816. Xzip$E: $(OBJZ) $(OBJI) $(OBJA)
  817. X    $(BIND) -o zip$E $(LFLAGS1) $(OBJZ) $(OBJI) $(OBJA) $(LFLAGS2)
  818. Xzipnote$E: $(OBJN)
  819. X    $(BIND) -o zipnote$E $(LFLAGS1) $(OBJN) $(LFLAGS2)
  820. Xzipcloak$E: $(OBJC)
  821. X    $(BIND) -o zipcloak$E $(LFLAGS1) $(OBJC) $(LFLAGS2)
  822. Xzipsplit$E: $(OBJS)
  823. X    $(BIND) -o zipsplit$E $(LFLAGS1) $(OBJS) $(LFLAGS2)
  824. X
  825. X# install
  826. Xinstall:    $(ZIPS)
  827. X    $(INSTALL) $(ZIPS) $(BINDIR)
  828. X    $(INSTALL) zip.1 $(MANDIR)
  829. X
  830. X
  831. X# These symbols, when #defined using -D have these effects on compilation:
  832. X# ZMEM        - includes C language versions of memset(), memcpy(), and
  833. X#          memcmp() (util.c).
  834. X# DIRENT    - use <sys/dirent.h> and getdents() instead of <sys/dir.h>
  835. X#          and opendir(), etc. (fileio.c).
  836. X# NODIR        - used for 3B1, which has neither getdents() nor opendir().
  837. X# NDIR        - use "ndir.h" instead of <sys/dir.h> (fileio.c).
  838. X# UTIL        - select routines for utilities (note, cloak, and split).
  839. X# PROTO        - enable function prototypes.
  840. X# RMDIR        - remove directories using a system("rmdir ...") call.
  841. X# CONVEX    - for Convex make target.
  842. X# AIX        - for AIX make target.
  843. X# CRYPT     - include the encryption code.
  844. X# LINUX        - for linux make target.
  845. X
  846. X# BSD 4.3 (also Unisys 7000--AT&T System V with heavy BSD 4.2)
  847. Xbsd:
  848. X    $(MAKE) zips CFLAGS="-O"
  849. X
  850. X# BSD, but missing memset(), memcmp().
  851. Xbsdold:
  852. X    $(MAKE) zips CFLAGS="-O -DZMEM"
  853. X
  854. X# AT&T System V, Rel 3.  Also SCO, Xenix, OpenDeskTop, ETA-10P*, SGI.
  855. Xsysv_old:
  856. X    $(MAKE) zips CFLAGS="-O -DDIRENT"
  857. X
  858. X# AT&T System V, Rel 4. Also any system with readdir() and termio.
  859. Xsysv:
  860. X    $(MAKE) zips CFLAGS="-O -DSYSV -DTERMIO"
  861. X
  862. X# AT&T System V, Rel 4 for 386 (uses asm version):
  863. Xsysv_386:
  864. X    $(MAKE) zips CFLAGS="-O -DSYSV -DTERMIO -DASM" OBJA=match.o
  865. X
  866. X# DNIX 5.x: like System V but optimization is messed up.
  867. Xdnix:
  868. X    $(MAKE) zips CFLAGS="-DDIRENT"
  869. X
  870. X# Linux 0.96a with GCC 2.12, dies with <= 2.11c. The problem with
  871. X# builtin functions still has to be investigated.
  872. Xlinux:
  873. X    $(MAKE) zips CFLAGS="-O -fno-builtin -DSYSV -DTERMIO -DLINUX"
  874. X
  875. X# Sun OS 4.x: BSD, but use getdents(). If you have gcc, use 'make sun_gcc'
  876. X# instead since the code produced is better.
  877. Xsun:
  878. X    $(MAKE) zips CFLAGS="-O4 -DDIRENT"
  879. X
  880. X# Sun OS 4.x with gcc (bug with -s linker flag). Use -O if your version
  881. X# of gcc does not like -O2.
  882. Xsun_gcc:
  883. X    $(MAKE) zips CFLAGS="-O2 -DDIRENT" CC=gcc BIND=gcc LFLAGS2=""
  884. X    strip $(ZIPS)
  885. X
  886. X# NeXT 1.0: BSD, but use shared library.
  887. Xnext10:
  888. X    $(MAKE) zips CFLAGS="-O" LFLAGS2="-s -lsys_s"
  889. X
  890. X# NeXT 2.0: BSD, but use MH_OBJECT format for smaller executables.
  891. Xnext:
  892. X    $(MAKE) zips CFLAGS="-O" LFLAGS2="-s -object"
  893. X
  894. X# HPUX: System V, but use <ndir.h> and opendir(), etc.
  895. Xhpux:
  896. X    $(MAKE) zips CFLAGS="-O -DNDIR"
  897. X
  898. X# Cray Unicos 5.1.10 & 6.0.11, Standard C compiler 2.0
  899. Xcray:
  900. X    $(MAKE) zips CFLAGS="-O -DDIRENT" CC="scc"
  901. X
  902. X# Cray Unicos 6.1, Standard C compiler 3.0 (all routines except trees.c
  903. X# may be compiled with vector3; internal compiler bug in 3.0.2.3 and
  904. X# earlier requires vector2 for trees.c)
  905. Xcray3:
  906. X    $(MAKE) zips CFLAGS="-O -h vector2 -h scalar3 -DDIRENT" CC="scc"
  907. X
  908. X# AT&T 3B1: System V, but missing a few things.
  909. X3b1:
  910. X    $(MAKE) zips CFLAGS="-O -DNODIR -DRMDIR"
  911. X
  912. X# AT&T 6300 PLUS (don't know yet how to allocate 64K bytes):
  913. Xatt6300:
  914. X    $(MAKE) zips LFLAGS1="-Ml" \
  915. X    CFLAGS="-O -Ml -DNODIR -DRMDIR -DDYN_ALLOC -DMEDIUM_MEM -DWSIZE=16384"
  916. X
  917. X# zilog zeus 3.21
  918. Xzilog:
  919. X    $(MAKE) zips CFLAGS="-O -DZMEM -DNDIR -DRMDIR" CC="scc -i" BIND="scc"
  920. X
  921. X# SCO 386 cross compile for MS-DOS
  922. X# Note: zip.exe should be lzexe'd on DOS to reduce its size
  923. Xscodos:
  924. X    $(MAKE) zips CFLAGS="-O -Mc -dos -DNO_ASM" LFLAGS1="-Mc -dos" \
  925. X     LFLAGS2="-F 1000" E=".exe"
  926. X
  927. X# A/UX:
  928. Xaux:
  929. X    $(MAKE) zips CFLAGS="-O -DTERMIO"
  930. X
  931. X# Convex C120, OS 9.0, cc v. 4.0, no vectorization.
  932. Xc120:
  933. X    $(MAKE) zips CFLAGS="-O1 -rl -DCONVEX"
  934. X
  935. X# Convex C220, OS 9.0
  936. Xconvex:
  937. X    $(MAKE) zips CFLAGS="-O2 -rl -DCONVEX"
  938. X
  939. X# AIX Version 3.1 for RISC System/6000 
  940. Xaix:
  941. X    $(MAKE) zips CC="c89" BIND="c89" \
  942. X       CFLAGS="-O -D_POSIX_SOURCE -D_ALL_SOURCE -D_BSD -DAIX"
  943. X
  944. X# MINIX 1.5.10 with Bruce Evans 386 patches and gcc/GNU make
  945. Xminix:
  946. X    $(MAKE) zips CFLAGS="-O -DDIRENT -DMINIX" CC=gcc BIND=gcc
  947. X    chmem =262144 zip
  948. X
  949. X# Interactive Systems Corporation System V/386, Rel 3.2--optimizer problems
  950. Xisc:
  951. X    $(MAKE) zips CFLAGS="-DDIRENT"
  952. X
  953. X# DYNIX (R) V3.0.18 (no memset() or memcmp(), rindex() instead of strrchr())
  954. Xdynix:
  955. X    $(MAKE) zips CFLAGS="-O -DZMEM -Dstrrchr=rindex"
  956. X
  957. X# Ultrix
  958. Xultrix:
  959. X    $(MAKE) zips CFLAGS="-O -Olimit 700"
  960. X
  961. X# DEC OSF/1
  962. Xdec_osf1:
  963. X    $(MAKE) zips CFLAGS="-O -Olimit 1000 -DOSF -D_BSD"
  964. X
  965. X# xos: Olivetti LSX-3005..3045 with X/OS 2.3 or 2.4
  966. Xxos:
  967. X    $(MAKE) zips CFLAGS="-O -DTERMIO"
  968. X
  969. X# clean up after making stuff and installing it
  970. Xclean:
  971. X    rm -f *.o
  972. X    rm -f $(ZIPS)
  973. X
  974. X# This one's for Mark:
  975. Xit:
  976. X    $(MAKE) zipsman CFLAGS="-O -Wall -DPROTO"\
  977. X    LFLAGS2="-s -object" VPATH="${HOME}/Unix/bin"
  978. X
  979. X# and this one for Jean-loup:
  980. Xgcc_d:
  981. X    $(MAKE) zip CFLAGS="-g -DDEBUG -DDIRENT" CC=gcc BIND=gcc LFLAGS2="-g"
  982. X    mv zip zipd
  983. X
  984. X# end of Makefile
  985. END_OF_FILE
  986.   if test 7055 -ne `wc -c <'makefile'`; then
  987.     echo shar: \"'makefile'\" unpacked with wrong size!
  988.   fi
  989.   # end of 'makefile'
  990. fi
  991. if test -f 'msdos/makefile.msc.UU' -a "${1}" != "-c" ; then 
  992.   echo shar: Will not clobber existing file \"'msdos/makefile.msc.UU'\"
  993. else
  994.   echo shar: Extracting \"'msdos/makefile.msc.UU'\" \(5501 characters\)
  995.   sed "s/^X//" >'msdos/makefile.msc.UU' <<'END_OF_FILE'
  996. Xbegin 666 msdos/makefile.msc
  997. XM(R!-86ME9FEL92!F;W(@6FEP+"!::7!#;&]A:RP@6FEP3F]T92!A;F0@6FEP
  998. XM4W!L:70@9F]R#0HC($UI8W)O<V]F="!#(#4N,2!O<B V+C N#0H-"B,@5&\@
  999. XM=7-E+"!D;R B;6%K92!M86ME9FEL92YM<V,B#0H-"B,@061D("U$4TU!3$Q?
  1000. XM345-(&]R("U$345$255-7TU%32!T;R!#1DQ!1U,@:68@>6]U('=I<V@@=&\@
  1001. XM<F5D=6-E('1H92!M96UO<GD-"B,@<F5Q=6ER96UE;G1S+B!!9&0@+41.3U]!
  1002. XM4TT@=&\@0T9,04=3(&%N9"!R96UO=F4@;6%T8V@N;V)J(&9R;VT@3T)*22!I
  1003. XM9@T*(R!Y;W4@9&\@;F]T(&AA=F4@;6%S;2X-"@T*0U)94%1//0T*0TQ/04L]
  1004. XM#0I#4D9,04<]#0H-"B,@("HJ*B!&;W(@96YC<GEP=&EO;B!V97)S:6]N+"!R
  1005. XM96UO=F4@=&AE(",@870@=&AE(&9R;VYT(&]F(&YE>'0@,R!L:6YE<R J*BH-
  1006. XM"B-#4EE05$\]8W)Y<'0N;V)J#0HC0TQ/04L]>FEP8VQO86LN97AE#0HC0U)&
  1007. XM3$%'/2U$0U)94%0-"@T*(R M+2TM+2TM+2TM+2TM($UI8W)O<V]F="!#(#4N
  1008. XM,2!O<B V+C @+2TM+2TM+2TM+2TM+0T*34]$14P]+4%##0I&4#T-"D-&3$%'
  1009. XM4STM5S,@+4]X("UN;VQO9V\@)"A-3T1%3"D@)"A&4"D@)"A#4D9,04<I#0I3
  1010. XM4$5#1DQ!1U,]+5<S("U/86EC=" M1W,@+6YO;&]G;R D*$U/1$5,*2 D*$90
  1011. XM*2 D*$-21DQ!1RD-"E5424Q&3$%'4STM1%5424P@)"A#1DQ!1U,I("U&;PT*
  1012. XM0T,]8VP-"DQ$/6QI;FL-"DQ$1DQ!1U,]+V4O<W0Z,'@Q,# P#0HC(" @("!)
  1013. XM9B!Y;W4@=7-E(&QZ97AE(&%S(')E8V]M;65N9&5D+"!R96UO=F4@+V4@9G)O
  1014. XM;2!,1$9,04=3#0I!4SUM87-M#0HC(" @("!&;W(@35-#(#8N,"P@=7-E.B!!
  1015. XM4SUM;" -"D%31DQ!1U,]+6UL("UT#0HC($%D9" M1$193E]!3$Q/0R!T;R!!
  1016. XM4T9,04=3(&EF('EO=2!H879E(&1E9FEN960@:70@:6X@=&%I;&]R+F@@;W(@
  1017. XM0T9,04=3#0H-"B,@+2TM+2TM+2TM+2TM+2!#;VUM;VX@9&5C;&%R871I;VYS
  1018. XM.@T*4U1225 ]<F5M#0HC(" @($EF('EO=2!D;VXG="!H879E(&QZ97AE+"!G
  1019. XM970@:70N(%1H96X@9&5F:6YE.@T*(U-44DE0/6QZ97AE#0HC(" @($]R(&EF
  1020. XM('EO=2=V92!R96=I<W1E<F5D(%!+3$E412P@=&AE;B!D969I;F4Z#0HC4U12
  1021. XM25 ]<&ML:71E#0HC(" @(%1H:7,@;6%K97,@82!B:6<@9&EF9F5R96YC92!I
  1022. XM;B N97AE('-I>F4@*&%N9"!P;W-S:6)L>2!L;V%D('1I;64I#0H-"B,@+2TM
  1023. XM+2TM+2TM+2TM+2!5<V5D(&)Y(&EN<W1A;&P@<G5L90T*(R!S970@0DE.('1O
  1024. XM('1H92!D:7)E8W1O<GD@>6]U('=A;G0@=&\@:6YS=&%L;"!T:&4@97AE8W5T
  1025. XM86)L97,@=&\-"D))3B ](&,Z7'5T:6P-"@T*(R!V87)I86)L97,-"D]"2EH@
  1026. XM/2!Z:7 N;V)J('II<&9I;&4N;V)J('II<'5P+F]B:B!F:6QE:6\N;V)J('5T
  1027. XM:6PN;V)J(&=L;V)A;',N;V)J("0H0U)94%1/*0T*#0I/0DI)(#T@9&5F;&%T
  1028. XM92YO8FH@=')E97,N;V)J(&)I=',N;V)J(&UA=&-H+F]B:@T*(R!R96UO=F4@
  1029. XM;6%T8V@N;V)J(&EF('EO=2!D;R!N;W0@:&%V92!M87-M#0H-"D]"2E4@/2!Z
  1030. XM:7!F:6QE7RYO8FH@>FEP=7!?+F]B:B!F:6QE:6]?+F]B:B!U=&EL7RYO8FH@
  1031. XM9VQO8F%L<RYO8FH-"D]"2DX@/2!Z:7!N;W1E+F]B:B @)"A/0DI5*0T*3T)*
  1032. XM0R ]('II<&-L;V%K+F]B:B D*$]"2E4I(&-R>7!T7RYO8FH-"D]"2E,@/2!Z
  1033. XM:7!S<&QI="YO8FH@)"A/0DI5*0T*#0I:25!3(#T@>FEP+F5X92!Z:7!N;W1E
  1034. XM+F5X92!Z:7!S<&QI="YE>&4@)"A#3$]!2RD-"@T*>FEP<SH))"A:25!3*0T*
  1035. XM#0IZ:7 N;V)J.@EZ:7 N:"!Z:7!E<G(N:"!T86EL;W(N:"!R979I<VEO;BYH
  1036. XM('II<"YC#0H))"A#0RD@+6,@)"A#1DQ!1U,I("0J+F,-"@T*(R!-4T,@-2XQ
  1037. XM(&=E;F5R871E<R!B860@8V]D92!O;B!Z:7!F:6QE('=I=&@@+4]X#0IZ:7!F
  1038. XM:6QE+F]B:CH)>FEP+F@@>FEP97)R+F@@=&%I;&]R+F@@>FEP9FEL92YC#0H)
  1039. XM)"A#0RD@+6,@)"A34$5#1DQ!1U,I("0J+F,-"@T*>FEP=7 N;V)J.@EZ:7 N
  1040. XM:"!Z:7!E<G(N:"!T86EL;W(N:"!R979I<VEO;BYH('II<'5P+F,-"@DD*$-#
  1041. XM*2 M8R D*$-&3$%'4RD@)"HN8PT*#0IF:6QE:6\N;V)J.@EZ:7 N:"!Z:7!E
  1042. XM<G(N:"!T86EL;W(N:"!F:6QE:6\N8PT*"20H0T,I("UC("0H0T9,04=3*2 D
  1043. XM*BYC#0H-"G5T:6PN;V)J.@EZ:7 N:"!Z:7!E<G(N:"!T86EL;W(N:"!U=&EL
  1044. XM+F,-"@DD*$-#*2 M8R D*$-&3$%'4RD@)"HN8PT*#0IG;&]B86QS+F]B:CH)
  1045. XM>FEP+F@@>FEP97)R+F@@=&%I;&]R+F@@9VQO8F%L<RYC#0H))"A#0RD@+6,@
  1046. XM)"A#1DQ!1U,I("0J+F,-"@T*9&5F;&%T92YO8FHZ"7II<"YH('II<&5R<BYH
  1047. XM('1A:6QO<BYH(&1E9FQA=&4N8PT*"20H0T,I("UC("0H0T9,04=3*2 D*BYC
  1048. XM#0H-"G1R965S+F]B:CH)>FEP+F@@>FEP97)R+F@@=&%I;&]R+F@@=')E97,N
  1049. XM8PT*"20H0T,I("UC("0H0T9,04=3*2 D*BYC#0H-"F)I=',N;V)J.@EZ:7 N
  1050. XM:"!Z:7!E<G(N:"!T86EL;W(N:"!B:71S+F,-"@DD*$-#*2 M8R D*$-&3$%'
  1051. XM4RD@)"HN8PT*#0IC<GEP="YO8FHZ"7II<"YH('II<&5R<BYH('1A:6QO<BYH
  1052. XM(&-R>7!T+F,-"@DD*$-#*2 M8R D*$-&3$%'4RD@)"HN8PT*#0IZ:7!C;&]A
  1053. XM:RYO8FHZ"7II<"YH('II<&5R<BYH('1A:6QO<BYH(')E=FES:6]N+F@@>FEP
  1054. XM8VQO86LN8PT*"20H0T,I("UC("0H0T9,04=3*2 D*BYC#0H-"GII<&YO=&4N
  1055. XM;V)J.@EZ:7 N:"!Z:7!E<G(N:"!T86EL;W(N:"!R979I<VEO;BYH('II<&YO
  1056. XM=&4N8PT*"20H0T,I("UC("0H0T9,04=3*2 D*BYC#0H-"B,@35-#(#4N,2!D
  1057. XM:65S(&]N('II<'-P;&ET('=I=&@@+4]X#0IZ:7!S<&QI="YO8FHZ"7II<'-P
  1058. XM;&ET+F,@>FEP+F@@>FEP97)R+F@@=&%I;&]R+F@@<F5V:7-I;VXN: T*"20H
  1059. XM0T,I("UC("0H4U!%0T9,04=3*2 D*BYC#0H-"B,@35-#(#4N,2!G96YE<F%T
  1060. XM97,@8F%D(&-O9&4@;VX@>FEP9FEL92!W:71H("U/> T*>FEP9FEL95\N;V)J
  1061. XM.@EZ:7!F:6QE+F,@>FEP+F@@>FEP97)R+F@@=&%I;&]R+F@-"@DD*$-#*2 M
  1062. XM8R D*%-014-&3$%'4RD@+4155$E,("U&;R1 ('II<&9I;&4N8PT*#0IZ:7!U
  1063. XM<%\N;V)J.@EZ:7!U<"YC('II<"YH('II<&5R<BYH('1A:6QO<BYH#0H))"A#
  1064. XM0RD@+6,@)"A55$E,1DQ!1U,I)$ @>FEP=7 N8PT*#0IF:6QE:6]?+F]B:CH)
  1065. XM9FEL96EO+F,@>FEP+F@@>FEP97)R+F@@=&%I;&]R+F@-"@DD*$-#*2 M8R D
  1066. XM*%5424Q&3$%'4RDD0"!F:6QE:6\N8PT*#0IU=&EL7RYO8FHZ"75T:6PN8R!Z
  1067. XM:7 N:"!Z:7!E<G(N:"!T86EL;W(N: T*"20H0T,I("UC("0H551)3$9,04=3
  1068. XM*21 ('5T:6PN8PT*#0IC<GEP=%\N;V)J.@EC<GEP="YC('II<"YH#0H))"A#
  1069. XM0RD@+6,@)"A55$E,1DQ!1U,I)$ @8W)Y<'0N8PT*#0IM871C:"YO8FHZ"6UA
  1070. XM=&-H+F%S;0T*"20H05,I("0H05-&3$%'4RD@;6%T8V@[#0H-"B,@=V4@;75S
  1071. XM="!C=70@=&AE(&-O;6UA;F0@;&EN92!T;R!F:70@:6X@=&AE($U3+T1/4R Q
  1072. XM,C@@8GET92!L:6UI=#H-"GII<"YE>&4Z("0H3T)*6BD@)"A/0DI)*0T*"65C
  1073. XM:&\@)"A/0DI:*2L@/B!Z:7 N<G-P#0H)96-H;R D*$]"2DDI.R ^/B!Z:7 N
  1074. XM<G-P#0H))"A,1"D@)"A,1$9,04=3*2! >FEP+G)S< T*"61E;"!Z:7 N<G-P
  1075. XM#0H))"A35%))4"D@>FEP+F5X90T*#0IZ:7!C;&]A:RYE>&4Z("0H3T)*0RD-
  1076. XM"@EE8VAO("0H3T)*0RD[(#X@>FEP8RYR<W -"@DD*$Q$*2 D*$Q$1DQ!1U,I
  1077. XM($!Z:7!C+G)S< T*"61E;"!Z:7!C+G)S< T*"20H4U1225 I('II<&-L;V%K
  1078. XM+F5X90T*#0IZ:7!N;W1E+F5X93H@)"A/0DI.*0T*"65C:&\@)"A/0DI.*3L@
  1079. XM/B!Z:7!N+G)S< T*"20H3$0I("0H3$1&3$%'4RD@0'II<&XN<G-P#0H)9&5L
  1080. XM('II<&XN<G-P#0H))"A35%))4"D@>FEP;F]T92YE>&4-"@T*>FEP<W!L:70N
  1081. XM97AE.B D*$]"2E,I#0H)96-H;R D*$]"2E,I.R ^('II<',N<G-P#0H))"A,
  1082. XM1"D@)"A,1$9,04=3*2! >FEP<RYR<W -"@ED96P@>FEP<RYR<W -"@DD*%-4
  1083. XM4DE0*2!Z:7!S<&QI="YE>&4-"@T*:6YS=&%L;#H))"A:25!3*0T*"6-O<'D@
  1084. XM+V(@*BYE>&4@)"A"24XI#0H-"F-L96%N.@T*"61E;" J+F]B:@T*"61E;" J
  1085. X&+F5X90T*
  1086. Xend
  1087. END_OF_FILE
  1088.   if test 5501 -ne `wc -c <'msdos/makefile.msc.UU'`; then
  1089.     echo shar: \"'msdos/makefile.msc.UU'\" unpacked with wrong size!
  1090.   else
  1091.     echo shar: Uudecoding \"'msdos/makefile.msc'\" \(3966 characters\)
  1092.     cat msdos/makefile.msc.UU | uudecode
  1093.     if test 3966 -ne `wc -c <'msdos/makefile.msc'`; then
  1094.       echo shar: \"'msdos/makefile.msc'\" uudecoded with wrong size!
  1095.     else
  1096.       rm msdos/makefile.msc.UU
  1097.     fi
  1098.   fi
  1099.   # end of 'msdos/makefile.msc.UU'
  1100. fi
  1101. if test -f 'msdos/match.asm' -a "${1}" != "-c" ; then 
  1102.   echo shar: Will not clobber existing file \"'msdos/match.asm'\"
  1103. else
  1104.   echo shar: Extracting \"'msdos/match.asm'\" \(7753 characters\)
  1105.   sed "s/^X//" >'msdos/match.asm' <<'END_OF_FILE'
  1106. X;
  1107. X; Copyright (C) 1990-1992 Mark Adler, Richard B. Wales, and Jean-loup Gailly.
  1108. X; Permission is granted to any individual or institution to use, copy, or
  1109. X; redistribute this software so long as all of the original files are included
  1110. X; unmodified, that it is not sold for profit, and that this copyright notice
  1111. X; is retained.
  1112. X;
  1113. X; match.asm by Jean-loup Gailly.
  1114. X
  1115. X; match.asm, optimized version of longest_match() in deflate.c
  1116. X; Must be assembled with masm -ml. To be used only with C compact model.
  1117. X; (For large model, follow the instructions given below.)
  1118. X; This file is only optional. If you don't have masm or tasm, use the
  1119. X; C version (add -DNO_ASM to CFLAGS in makefile.msc and remove match.obj
  1120. X; from OBJI). If you have reduced WSIZE in zip.h, then change its value
  1121. X; below.
  1122. X;
  1123. X; Turbo C 2.0 does not support static allocation of more than 64K bytes per
  1124. X; file, and does not have SS == DS. So TC and BC++ users must use:
  1125. X;   tasm -ml -DDYN_ALLOC -DSS_NEQ_DS match;
  1126. X;
  1127. X; To simplify the code, the option -DDYN_ALLOC is supported for OS/2
  1128. X; only if the arrays are guaranteed to have zero offset (allocated by
  1129. X; halloc). We also require SS==DS. This is satisfied for MSC but not Turbo C.
  1130. X
  1131. X        name    match
  1132. X
  1133. Xifndef DYN_ALLOC
  1134. X        extrn   _prev         : word
  1135. X        extrn   _window       : byte
  1136. X        prev    equ  _prev    ; offset part
  1137. X        window  equ  _window
  1138. Xendif
  1139. X
  1140. X_DATA    segment  word public 'DATA'
  1141. X        extrn   _match_start  : word
  1142. X        extrn   _prev_length  : word
  1143. X        extrn   _good_match   : word
  1144. X        extrn   _strstart     : word
  1145. X        extrn   _max_chain_length : word
  1146. Xifdef DYN_ALLOC
  1147. X        extrn   _prev         : word
  1148. X        extrn   _window       : word
  1149. X        prev    equ 0         ; offset forced to zero
  1150. X        window  equ 0
  1151. X        window_seg equ _window[2]
  1152. X    window_off equ 0
  1153. Xelse
  1154. X    wseg    dw seg _window
  1155. X        window_seg equ wseg
  1156. X    window_off equ offset _window
  1157. Xendif
  1158. X_DATA    ends
  1159. X
  1160. XDGROUP  group _DATA
  1161. X
  1162. X_TEXT   segment word public 'CODE'
  1163. X        assume  cs: _TEXT, ds: DGROUP
  1164. X
  1165. X    public _match_init
  1166. X        public _longest_match
  1167. X
  1168. X    MIN_MATCH     equ 3
  1169. X        MAX_MATCH     equ 258
  1170. X    WSIZE         equ 32768        ; keep in sync with zip.h !
  1171. X    MIN_LOOKAHEAD equ (MAX_MATCH+MIN_MATCH+1)
  1172. X    MAX_DIST      equ (WSIZE-MIN_LOOKAHEAD)
  1173. X
  1174. Xprev_ptr    dw  seg _prev        ; pointer to the prev array
  1175. Xifdef SS_NEQ_DS
  1176. X    match_start dw  0            ; copy of _match_start if SS != DS
  1177. Xendif
  1178. X
  1179. X; initialize or check the variables used in match.asm.
  1180. X
  1181. X_match_init proc near            ; 'proc far' for large model
  1182. Xifdef SS_NEQ_DS
  1183. X        ma_start equ cs:match_start    ; does not work on OS/2
  1184. Xelse
  1185. X    assume ss: DGROUP
  1186. X        ma_start equ ss:_match_start
  1187. X        mov     ax,ds
  1188. X        mov     bx,ss
  1189. X        cmp     ax,bx                   ; SS == DS?
  1190. X        jne     error
  1191. Xendif
  1192. Xifdef DYN_ALLOC
  1193. X    cmp    _prev[0],0        ; verify zero offset
  1194. X    jne    error
  1195. X    cmp    _window[0],0
  1196. X    jne    error
  1197. X  ifdef SS_NEQ_DS
  1198. X    mov    ax,_prev[2]        ; segment value
  1199. X    mov     cs:prev_ptr,ax        ; ugly write to code, crash on OS/2
  1200. X        prev_seg  equ cs:prev_ptr
  1201. X  else
  1202. X        prev_seg  equ ss:_prev[2]    ; works on OS/2 if SS == DS
  1203. X  endif
  1204. Xelse
  1205. X        prev_seg  equ cs:prev_ptr
  1206. Xendif
  1207. X    ret
  1208. X    extrn   _exit : near        ; 'far' for large model
  1209. Xerror:  call    _exit
  1210. X
  1211. X_match_init endp
  1212. X
  1213. X; -----------------------------------------------------------------------
  1214. X; Set match_start to the longest match starting at the given string and
  1215. X; return its length. Matches shorter or equal to prev_length are discarded,
  1216. X; in which case the result is equal to prev_length and match_start is
  1217. X; garbage.
  1218. X; IN assertions: cur_match is the head of the hash chain for the current
  1219. X;   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
  1220. X
  1221. X; int longest_match(cur_match)
  1222. X
  1223. X_longest_match  proc near         ; 'proc far' for large model
  1224. X        push    bp
  1225. X        mov     bp,sp
  1226. X        push    di
  1227. X    push    si
  1228. X    push    ds
  1229. X
  1230. X        cur_match    equ word ptr [bp+4] ; [bp+6] for large model
  1231. X
  1232. X;       window         equ es:window (es:0 for DYN_ALLOC)
  1233. X;       prev         equ ds:prev
  1234. X;       match        equ es:si
  1235. X;       scan         equ es:di
  1236. X;       chain_length equ bp
  1237. X;       best_len     equ bx
  1238. X;       limit        equ dx
  1239. X
  1240. X    mov    si,cur_match            ; use bp before it is destroyed
  1241. X        mov     bp,_max_chain_length    ; chain_length = max_chain_length
  1242. X    mov    di,_strstart
  1243. X    mov    dx,di
  1244. X    sub    dx,MAX_DIST             ; limit = strstart-MAX_DIST
  1245. X    jae    limit_ok
  1246. X    sub    dx,dx            ; limit = NIL
  1247. Xlimit_ok:
  1248. X        add     di,2+window_off         ; di = offset(window + strstart + 2)
  1249. X        mov     bx,_prev_length         ; best_len = prev_length
  1250. X    mov     es,window_seg
  1251. X        mov     ax,es:[bx+di-3]         ; ax = scan[best_len-1..best_len]
  1252. X        mov     cx,es:[di-2]            ; cx = scan[0..1]
  1253. X    cmp    bx,_good_match        ; do we have a good match already?
  1254. X        mov     ds,prev_seg            ; (does not destroy the flags)
  1255. X        assume  ds: nothing
  1256. X        jb      do_scan            ; good match?
  1257. X    shr    bp,1            ; chain_length >>= 2
  1258. X    shr    bp,1
  1259. X        jmp     short do_scan
  1260. X
  1261. X        even                            ; align destination of branch
  1262. Xlong_loop:
  1263. X; at this point, ds:di == scan+2, ds:si == cur_match
  1264. X        mov     ax,[bx+di-3]            ; ax = scan[best_len-1..best_len]
  1265. X        mov     cx,[di-2]               ; cx = scan[0..1]
  1266. X        mov     ds,prev_seg            ; reset ds to address the prev array
  1267. Xshort_loop:
  1268. X        dec     bp                      ; --chain_length
  1269. X        jz      the_end
  1270. X; at this point, di == scan+2, si = cur_match,
  1271. X; ax = scan[best_len-1..best_len] and cx = scan[0..1]
  1272. Xif (WSIZE-32768)
  1273. X        and     si,WSIZE-1              ; not needed if WSIZE=32768
  1274. Xendif
  1275. X        shl     si,1                    ; cur_match as word index
  1276. X        mov     si,prev[si]             ; cur_match = prev[cur_match]
  1277. X        cmp     si,dx            ; cur_match <= limit ?
  1278. X        jbe     the_end
  1279. Xdo_scan:
  1280. X        cmp     ax,word ptr es:window[bx+si-1] ; check match at best_len-1
  1281. X        jne     short_loop
  1282. X        cmp     cx,word ptr es:window[si]      ; check min_match_length match
  1283. X        jne     short_loop
  1284. X
  1285. X        lea     si,window[si+2]         ; si = match
  1286. X        mov     ax,di                   ; ax = scan+2
  1287. X        mov     cx,es
  1288. X        mov     ds,cx            ; ds = es = window
  1289. X        mov     cx,(MAX_MATCH-2)/2      ; scan for at most MAX_MATCH bytes
  1290. X        repe    cmpsw                   ; loop until mismatch
  1291. X        je      maxmatch                ; match of length MAX_MATCH?
  1292. Xmismatch:
  1293. X        mov     cl,[di-2]               ; mismatch on first or second byte?
  1294. X        sub     cl,[si-2]               ; cl = 0 if first bytes equal
  1295. X        xchg    ax,di                   ; di = scan+2, ax = end of scan
  1296. X        sub     ax,di                   ; ax = len
  1297. X    sub    si,ax            ; si = cur_match + 2 + offset(window)
  1298. X    sub    si,2+window_off         ; si = cur_match
  1299. X        sub     cl,1                    ; set carry if cl == 0 (can't use DEC)
  1300. X        adc     ax,0                    ; ax = carry ? len+1 : len
  1301. X        cmp     ax,bx                   ; len > best_len ?
  1302. X        jle     long_loop
  1303. X        mov     ma_start,si             ; match_start = cur_match
  1304. X        mov     bx,ax                   ; bx = best_len = len
  1305. X        cmp     ax,MAX_MATCH            ; len >= MAX_MATCH ?
  1306. X        jl      long_loop
  1307. Xthe_end:
  1308. X    pop    ds
  1309. X        assume  ds: DGROUP
  1310. Xifdef SS_NEQ_DS
  1311. X    mov    ax,ma_start        ; garbage if no match found
  1312. X    mov    ds:_match_start,ax
  1313. Xendif
  1314. X        pop     si
  1315. X        pop     di
  1316. X        pop     bp
  1317. X        mov     ax,bx                   ; result = ax = best_len
  1318. X        ret
  1319. Xmaxmatch:                               ; come here if maximum match
  1320. X        cmpsb                           ; increment si and di
  1321. X        jmp     mismatch                ; force match_length = MAX_LENGTH
  1322. X        
  1323. X_longest_match  endp
  1324. X
  1325. X_TEXT   ends
  1326. Xend
  1327. END_OF_FILE
  1328.   if test 7753 -ne `wc -c <'msdos/match.asm'`; then
  1329.     echo shar: \"'msdos/match.asm'\" unpacked with wrong size!
  1330.   fi
  1331.   # end of 'msdos/match.asm'
  1332. fi
  1333. if test -f 'os2/match32.asm.UU' -a "${1}" != "-c" ; then 
  1334.   echo shar: Will not clobber existing file \"'os2/match32.asm.UU'\"
  1335. else
  1336.   echo shar: Extracting \"'os2/match32.asm.UU'\" \(8134 characters\)
  1337.   sed "s/^X//" >'os2/match32.asm.UU' <<'END_OF_FILE'
  1338. Xbegin 666 os2/match32.asm
  1339. XM.PT*.R!#;W!Y<FEG:'0@*$,I(#$Y.3 M,3DY,B!-87)K($%D;&5R+"!2:6-H
  1340. XM87)D($(N(%=A;&5S+"!*96%N+6QO=7 @1V%I;&QY+ T*.R!+86D@57=E(%)O
  1341. XM;6UE;"!A;F0@26=O<B!-86YD<FEC:&5N:V\N#0H[(%!E<FUI<W-I;VX@:7,@
  1342. XM9W)A;G1E9"!T;R!A;GD@:6YD:79I9'5A;"!O<B!I;G-T:71U=&EO;B!T;R!U
  1343. XM<V4L(&-O<'DL(&]R#0H[(')E9&ES=')I8G5T92!T:&ES('-O9G1W87)E('-O
  1344. XM(&QO;F<@87,@86QL(&]F('1H92!O<FEG:6YA;"!F:6QE<R!A<F4@:6YC;'5D
  1345. XM960-"CL@=6YM;V1I9FEE9"P@=&AA="!I="!I<R!N;W0@<V]L9"!F;W(@<')O
  1346. XM9FET+"!A;F0@=&AA="!T:&ES(&-O<'ER:6=H="!N;W1I8V4-"CL@:7,@<F5T
  1347. XM86EN960N#0H[#0H[(&UA=&-H,S(N87-M(&)Y($IE86XM;&]U<"!'86EL;'DN
  1348. XM#0H-"CL@;6%T8V@S,BYA<VTL(&]P=&EM:7IE9"!V97)S:6]N(&]F(&QO;F=E
  1349. XM<W1?;6%T8V@H*2!I;B!D969L871E+F,-"CL@5&\@8F4@=7-E9"!O;FQY('=I
  1350. XM=&@@,S(@8FET(&9L870@;6]D96PN(%1O('-I;7!L:69Y('1H92!C;V1E+"!T
  1351. XM:&4@;W!T:6]N#0H[("U$1%E.7T%,3$]#(&ES(&YO="!S=7!P;W)T960N#0H[
  1352. XM(%1H:7,@9FEL92!I<R!O;FQY(&]P=&EO;F%L+B!)9B!Y;W4@9&]N)W0@:&%V
  1353. XM92!A;B!A<W-E;6)L97(L('5S92!T:&4-"CL@0R!V97)S:6]N("AA9&0@+41.
  1354. XM3U]!4TT@=&\@0T9,04=3(&EN(&UA:V5F:6QE(&%N9"!R96UO=F4@;6%T8V@N
  1355. XM;PT*.R!F<F]M($]"2DDI+B!)9B!Y;W4@:&%V92!R961U8V5D(%=325I%(&EN
  1356. XM('II<"YH+"!T:&5N(&-H86YG92!I=',@=F%L=64-"CL@8F5L;W<N#0H[(" @
  1357. XM(" @(" @(" @(" @*BHJ(%=A<FYI;F<Z('1H:7,@9FEL92!I<R!S=&EL;"!U
  1358. XM;G1E<W1E9" J*BH-"B @(" @(" @+C,X-@T*#0H@(" @(" @(&YA;64@(" @
  1359. XM;6%T8V@-"@T*7T)34R @("!S96=M96YT("!D=V]R9"!54T4S,B!P=6)L:6,@
  1360. XM)T)34R<-"B @(" @(" @97AT<FX@("!?;6%T8VA?<W1A<G0@(#H@9'=O<F0-
  1361. XM"B @(" @(" @97AT<FX@("!?<')E=E]L96YG=&@@(#H@9'=O<F0-"B @(" @
  1362. XM(" @97AT<FX@("!?9V]O9%]M871C:" @(#H@9'=O<F0-"B @(" @(" @97AT
  1363. XM<FX@("!?<W1R<W1A<G0@(" @(#H@9'=O<F0-"B @(" @(" @97AT<FX@("!?
  1364. XM;6%X7V-H86EN7VQE;F=T:" Z(&1W;W)D#0H@(" @(" @(&5X=')N(" @7W!R
  1365. XM978@(" @(" @(" Z('=O<F0-"B @(" @(" @97AT<FX@("!?=VEN9&]W(" @
  1366. XM(" @(#H@8GET90T*7T)34R @("!E;F1S#0H-"D1'4D]54" @9W)O=7 @7T)3
  1367. XM4PT*#0I?5$585" @('-E9VUE;G0@9'=O<F0@55-%,S(@<'5B;&EC("=#3T1%
  1368. XM)PT*(" @(" @("!A<W-U;64@(&-S.B!?5$585"P@9',Z($1'4D]54"P@<W,Z
  1369. XM($1'4D]54 T*#0H)<'5B;&EC(&UA=&-H7VEN:71?#0H@(" @(" @('!U8FQI
  1370. XM8R!L;VYG97-T7VUA=&-H7PT*#0H)34E.7TU!5$-((" @("!E<74@,PT*(" @
  1371. XM(" @("!-05A?34%40T@@(" @(&5Q=2 R-3@-"@E74TE:12 @(" @(" @(&5Q
  1372. XM=2 S,C<V. D).R!K965P(&EN('-Y;F,@=VET:"!Z:7 N:" A#0H)34E.7TQ/
  1373. XM3TM!2$5!1"!E<74@*$U!6%]-051#2"M-24Y?34%40T@K,2D-"@E-05A?1$E3
  1374. XM5" @(" @(&5Q=2 H5U-)6D4M34E.7TQ/3TM!2$5!1"D-"@T*.R!I;FET:6%L
  1375. XM:7IE(&]R(&-H96-K('1H92!V87)I86)L97,@=7-E9"!I;B!M871C:"YA<VTN
  1376. XM#0H-"FUA=&-H7VEN:71?('!R;V,@;F5A<@T*"7)E= T*;6%T8VA?:6YI=%\@
  1377. XM96YD< T*#0H[("TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM
  1378. XM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM#0H[(%-E="!M
  1379. XM871C:%]S=&%R="!T;R!T:&4@;&]N9V5S="!M871C:"!S=&%R=&EN9R!A="!T
  1380. XM:&4@9VEV96X@<W1R:6YG(&%N9 T*.R!R971U<FX@:71S(&QE;F=T:"X@36%T
  1381. XM8VAE<R!S:&]R=&5R(&]R(&5Q=6%L('1O('!R979?;&5N9W1H(&%R92!D:7-C
  1382. XM87)D960L#0H[(&EN('=H:6-H(&-A<V4@=&AE(')E<W5L="!I<R!E<75A;"!T
  1383. XM;R!P<F5V7VQE;F=T:"!A;F0@;6%T8VA?<W1A<G0@:7,-"CL@9V%R8F%G92X-
  1384. XM"CL@24X@87-S97)T:6]N<SH@8W5R7VUA=&-H(&ES('1H92!H96%D(&]F('1H
  1385. XM92!H87-H(&-H86EN(&9O<B!T:&4@8W5R<F5N= T*.R @('-T<FEN9R H<W1R
  1386. XM<W1A<G0I(&%N9"!I=',@9&ES=&%N8V4@:7,@/#T@34%87T1)4U0L(&%N9"!P
  1387. XM<F5V7VQE;F=T:" ^/2 Q#0H-"CL@:6YT(&QO;F=E<W1?;6%T8V@H8W5R7VUA
  1388. XM=&-H*0T*#0IL;VYG97-T7VUA=&-H7R!P<F]C(&YE87(-"@T*(" @(" @("!C
  1389. XM=7)?;6%T8V@@(" @97%U(&1W;W)D('!T<B!;97-P*S(P70T*(" @(" @(" [
  1390. XM(')E='5R;B!A9&1R97-S(" @(" @(" @(" @(" @(#L@97-P*S$V#0H@(" @
  1391. XM(" @('!U<V@@(" @96)P(" @(" @(" @(" @(" @(" @(" @.R!E<W K,3(-
  1392. XM"B @(" @(" @<'5S:" @("!E9&D@(" @(" @(" @(" @(" @(" @(" [(&5S
  1393. XM<"LX#0H)<'5S: EE<VD@(" @(" @(" @(" @(" @(" @(" [(&5S<"LT#0H)
  1394. XM<'5S: EE8G@@(" @(" @(" @(" @(" @(" @(" [(&5S< T*#0H[(" @(" @
  1395. XM(&UA=&-H(" @(" @("!E<74@97-I#0H[(" @(" @('-C86X@(" @(" @("!E
  1396. XM<74@961I#0H[(" @(" @(&-H86EN7VQE;F=T:"!E<74@96)P#0H[(" @(" @
  1397. XM(&)E<W1?;&5N(" @("!E<74@96)X#0H[(" @(" @(&QI;6ET(" @(" @("!E
  1398. XM<74@961X#0H-"@EM;W8)97-I+&-U<E]M871C: T*(" @(" @("!M;W8@(" @
  1399. XM(&5B<"Q?;6%X7V-H86EN7VQE;F=T:" @(#L@8VAA:6Y?;&5N9W1H(#T@;6%X
  1400. XM7V-H86EN7VQE;F=T: T*"6UO=@EE9&DL7W-T<G-T87)T#0H);6]V"65D>"QE
  1401. XM9&D-"@ES=6()961X+$U!6%]$25-4(" @(" @(" @(" @.R!L:6UI=" ]('-T
  1402. XM<G-T87)T+4U!6%]$25-4#0H):F%E"7-H;W)T(&QI;6ET7V]K#0H)<W5B"65D
  1403. XM>"QE9'@)"0D[(&QI;6ET(#T@3DE,#0IL:6UI=%]O:SH-"B @(" @(" @861D
  1404. XM(" @("!E9&DL,BMO9F9S970@7W=I;F1O=R @(" [(&5D:2 ](&]F9G-E="AW
  1405. XM:6YD;W<@*R!S=')S=&%R=" K(#(I#0H@(" @(" @(&UO=B @(" @96)X+%]P
  1406. XM<F5V7VQE;F=T:" @(" @(" @.R!B97-T7VQE;B ]('!R979?;&5N9W1H#0H@
  1407. XM(" @(" @(&UO=B @(" @87@L6V5B>"ME9&DM,UT@(" @(" @(" @.R!A>" ]
  1408. XM('-C86Y;8F5S=%]L96XM,2XN8F5S=%]L96Y=#0H@(" @(" @(&UO=B @(" @
  1409. XM8W@L6V5D:2TR72 @(" @(" @(" @(" @.R!C>" ]('-C86Y;,"XN,5T-"@EC
  1410. XM;7 )96)X+%]G;V]D7VUA=&-H( D[(&1O('=E(&AA=F4@82!G;V]D(&UA=&-H
  1411. XM(&%L<F5A9'D_#0H@(" @(" @(&IB(" @(" @9&]?<V-A;@T*"7-H<@EE8G L
  1412. XM,@D)"3L@8VAA:6Y?;&5N9W1H(#X^/2 R#0H@(" @(" @(&IM<" @(" @<VAO
  1413. XM<G0@9&]?<V-A;@T*#0H@(" @(" @(&%L:6=N(" @-" @(" @(" @(" @(" @
  1414. XM(" @(" @(" @.R!A;&EG;B!D97-T:6YA=&EO;B!O9B!B<F%N8V@-"FQO;F=?
  1415. XM;&]O<#H-"CL@870@=&AI<R!P;VEN="P@961I(#T]('-C86XK,BP@97-I(#T]
  1416. XM(&-U<E]M871C: T*(" @(" @("!M;W8@(" @(&%X+%ME8G@K961I+3-=(" @
  1417. XM(" @(" @(#L@87@@/2!S8V%N6V)E<W1?;&5N+3$N+F)E<W1?;&5N70T*(" @
  1418. XM(" @("!M;W8@(" @(&-X+%ME9&DM,ET@(" @(" @(" @(" @(#L@8W@@/2!S
  1419. XM8V%N6S N+C%=#0IS:&]R=%]L;V]P.@T*(" @(" @("!D96,@(" @(&5B<" @
  1420. XM(" @(" @(" @(" @(" @(" @(#L@+2UC:&%I;E]L96YG=&@-"B @(" @(" @
  1421. XM:GH@(" @("!T:&5?96YD#0H[(&%T('1H:7,@<&]I;G0L(&5D:2 ]/2!S8V%N
  1422. XM*S(L(&5S:2 ]/2!C=7)?;6%T8V@L#0H[(&%X(#T@<V-A;EMB97-T7VQE;BTQ
  1423. XM+BYB97-T7VQE;ET@86YD(&-X(#T@<V-A;ELP+BXQ70T*(" @(" @("!A;F0@
  1424. XM(" @(&5S:2Q74TE:12TQ#0H@(" @(" @(&UO=B @(" @<VDL7W!R979;97-I
  1425. XM*V5S:5T@(" @(" @.R!C=7)?;6%T8V@@/2!P<F5V6V-U<E]M871C:%T-"B @
  1426. XM(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" [('1O<"!W
  1427. XM;W)D(&]F(&5S:2!I<R!S=&EL;" P#0H@(" @(" @(&-M<" @(" @97-I+&5D
  1428. XM> D)"3L@8W5R7VUA=&-H(#P](&QI;6ET(#\-"B @(" @(" @:F)E(" @("!S
  1429. XM:&]R="!T:&5?96YD#0ID;U]S8V%N.@T*(" @(" @("!C;7 @(" @(&%X+'=O
  1430. XM<F0@<'1R(%]W:6YD;W=;96)X*V5S:2TQ72 @(#L@8VAE8VL@;6%T8V@@870@
  1431. XM8F5S=%]L96XM,0T*(" @(" @("!J;F4@(" @('-H;W)T7VQO;W -"B @(" @
  1432. XM(" @8VUP(" @("!C>"QW;W)D('!T<B!?=VEN9&]W6V5S:5T@(" @(" @(" [
  1433. XM(&-H96-K(&UI;E]M871C:%]L96YG=&@@;6%T8V@-"B @(" @(" @:FYE(" @
  1434. XM("!S:&]R=%]L;V]P#0H-"B @(" @(" @;&5A(" @("!E<VDL7W=I;F1O=UME
  1435. XM<VDK,ET@(" @(" [('-I(#T@;6%T8V@-"B @(" @(" @;6]V(" @("!E87@L
  1436. XM961I(" @(" @(" @(" @(" @(" [(&%X(#T@<V-A;BLR#0H@(" @(" @(&UO
  1437. XM=B @(" @96-X+"A-05A?34%40T@M,BDO,B @(" @.R!S8V%N(&9O<B!A="!M
  1438. XM;W-T($U!6%]-051#2"!B>71E<PT*(" @(" @("!R97!E(" @(&-M<'-W(" @
  1439. XM(" @(" @(" @(" @(" @(#L@;&]O<"!U;G1I;"!M:7-M871C: T*(" @(" @
  1440. XM("!J92 @(" @(&UA>&UA=&-H(" @(" @(" @(" @(" @(#L@;6%T8V@@;V8@
  1441. XM;&5N9W1H($U!6%]-051#2#\-"FUI<VUA=&-H.@T*(" @(" @("!M;W8@(" @
  1442. XM(&-L+%ME9&DM,ET@(" @(" @(" @(" @(#L@;6ES;6%T8V@@;VX@9FER<W0@
  1443. XM;W(@<V5C;VYD(&)Y=&4_#0H@(" @(" @('-U8B @(" @8VPL6V5S:2TR72 @
  1444. XM(" @(" @(" @(" @.R!C;" ](# @:68@9FER<W0@8GET97,@97%U86P-"B @
  1445. XM(" @(" @>&-H9R @("!E87@L961I(" @(" @(" @(" @(" @(" [(&5D:2 ]
  1446. XM('-C86XK,BP@96%X(#T@96YD(&]F('-C86X-"B @(" @(" @<W5B(" @("!E
  1447. XM87@L961I(" @(" @(" @(" @(" @(" [(&5A>" ](&QE;@T*"7-U8@EE<VDL
  1448. XM96%X(" @(" @(" )"3L@97-I(#T@8W5R7VUA=&-H("L@,B K(&]F9G-E="AW
  1449. XM:6YD;W<I#0H)<W5B"65S:2PR*V]F9G-E="!?=VEN9&]W(" @(#L@97-I(#T@
  1450. XM8W5R7VUA=&-H#0H@(" @(" @('-U8B @(" @8VPL,2 @(" @(" @(" @(" @
  1451. XM(" @(" @.R!S970@8V%R<GD@:68@8VP@/3T@," H8V%N)W0@=7-E($1%0RD-
  1452. XM"B @(" @(" @861C(" @("!E87@L," @(" @(" @(" @(" @(" @(" [(&5A
  1453. XM>" ](&-A<G)Y(#\@;&5N*S$@.B!L96X-"B @(" @(" @8VUP(" @("!E87@L
  1454. XM96)X(" @(" @(" @(" @(" @(" [(&QE;B ^(&)E<W1?;&5N(#\-"B @(" @
  1455. XM(" @:FQE(" @("!L;VYG7VQO;W -"B @(" @(" @;6]V(" @("!?;6%T8VA?
  1456. XM<W1A<G0L97-I(" @(" @(" [(&UA=&-H7W-T87)T(#T@8W5R7VUA=&-H#0H@
  1457. XM(" @(" @(&UO=B @(" @96)X+&5A>" @(" @(" @(" @(" @(" @.R!E8G@@
  1458. XM/2!B97-T7VQE;B ](&QE;@T*(" @(" @("!C;7 @(" @(&5A>"Q-05A?34%4
  1459. XM0T@@(" @(" @(" @(#L@;&5N(#X]($U!6%]-051#2" _#0H@(" @(" @(&IL
  1460. XM(" @(" @;&]N9U]L;V]P#0IT:&5?96YD.@T*(" @(" @("!M;W8@(" @(&5A
  1461. XM>"QE8G@@(" @(" @(" @(" @(" @(#L@<F5S=6QT(#T@96%X(#T@8F5S=%]L
  1462. XM96X-"@EP;W )96)X#0H@(" @(" @('!O<" @(" @97-I#0H@(" @(" @('!O
  1463. XM<" @(" @961I#0H@(" @(" @('!O<" @(" @96)P#0H@(" @(" @(')E= T*
  1464. XM;6%X;6%T8V@Z(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(#L@8V]M
  1465. XM92!H97)E(&EF(&UA>&EM=6T@;6%T8V@-"B @(" @(" @8VUP<V(@(" @(" @
  1466. XM(" @(" @(" @(" @(" @(" @(" [(&EN8W)E;65N="!E<VD@86YD(&5D:0T*
  1467. XM(" @(" @("!J;7 @(" @(&UI<VUA=&-H(" @(" @(" @(" @(" @(#L@9F]R
  1468. XM8V4@;6%T8VA?;&5N9W1H(#T@34%87TQ%3D=42 T*#0IL;VYG97-T7VUA=&-H
  1469. X=7R!E;F1P#0H-"E]415A4(" @96YD<PT*96YD#0H*
  1470. Xend
  1471. END_OF_FILE
  1472.  if test 8134 -ne `wc -c <'os2/match32.asm.UU'`; then
  1473.     echo shar: \"'os2/match32.asm.UU'\" unpacked with wrong size!
  1474.   else
  1475.     echo shar: Uudecoding \"'os2/match32.asm'\" \(5879 characters\)
  1476.     cat os2/match32.asm.UU | uudecode
  1477.     if test 5879 -ne `wc -c <'os2/match32.asm'`; then
  1478.       echo shar: \"'os2/match32.asm'\" uudecoded with wrong size!
  1479.     else
  1480.       rm os2/match32.asm.UU
  1481.     fi
  1482.   fi
  1483.   # end of 'os2/match32.asm.UU'
  1484. fi
  1485. if test -f 'vms/VMSmunch.h' -a "${1}" != "-c" ; then 
  1486.   echo shar: Will not clobber existing file \"'vms/VMSmunch.h'\"
  1487. else
  1488.   echo shar: Extracting \"'vms/VMSmunch.h'\" \(5511 characters\)
  1489.   sed "s/^X//" >'vms/VMSmunch.h' <<'END_OF_FILE'
  1490. X/*---------------------------------------------------------------------------
  1491. X
  1492. X  VMSmunch.h
  1493. X
  1494. X  A few handy #defines, plus the contents of three header files from Joe
  1495. X  Meadows' FILE program.  Used by VMSmunch and by various routines which
  1496. X  call VMSmunch (e.g., in Zip and UnZip).
  1497. X
  1498. X  ---------------------------------------------------------------------------*/
  1499. X
  1500. X#define GET_TIMES       4
  1501. X#define SET_TIMES       0
  1502. X#define GET_RTYPE       1
  1503. X#define CHANGE_RTYPE    2
  1504. X#define RESTORE_RTYPE   3
  1505. X
  1506. X/*---------------------------------------------------------------------------
  1507. X    fatdef.h
  1508. X  ---------------------------------------------------------------------------*/
  1509. X
  1510. X/* This header file was created by Joe Meadows, and is not copyrighted
  1511. X   in any way. No guarantee is made as to the accuracy of the contents
  1512. X   of this header file. This header file was last modified on Sep. 22th,
  1513. X   1987. (Modified to include this statement) */
  1514. X#define FAT$K_LENGTH 32
  1515. X#define FAT$C_LENGTH 32
  1516. X#define FAT$S_FATDEF 32
  1517. X
  1518. Xstruct fatdef {
  1519. X  union  {
  1520. X    unsigned char fat$b_rtype;
  1521. X    struct  {
  1522. X      unsigned fat$v_rtype : 4;
  1523. X      unsigned fat$v_fileorg : 4;
  1524. X    } fat$r_rtype_bits;
  1525. X  } fat$r_rtype_overlay;
  1526. X# define FAT$S_RTYPE 4
  1527. X# define FAT$V_RTYPE 0
  1528. X#   define FAT$C_UNDEFINED 0
  1529. X#   define FAT$C_FIXED 1
  1530. X#   define FAT$C_VARIABLE 2
  1531. X#   define FAT$C_VFC 3
  1532. X#   define FAT$C_STREAM 4
  1533. X#   define FAT$C_STREAMLF 5
  1534. X#   define FAT$C_STREAMCR 6
  1535. X# define FAT$S_FILEORG 4
  1536. X# define FAT$V_FILEORG 4
  1537. X#   define FAT$C_SEQUENTIAL 0
  1538. X#   define FAT$C_RELATIVE 1
  1539. X#   define FAT$C_INDEXED 2
  1540. X#   define FAT$C_DIRECT 3
  1541. X  union  {
  1542. X    unsigned char fat$b_rattrib;
  1543. X    struct  {
  1544. X      unsigned fat$v_fortrancc : 1;
  1545. X      unsigned fat$v_impliedcc : 1;
  1546. X      unsigned fat$v_printcc : 1;
  1547. X      unsigned fat$v_nospan : 1;
  1548. X    } fat$r_rattrib_bits;
  1549. X  } fat$r_rattrib_overlay;
  1550. X#   define FAT$V_FORTRANCC 0
  1551. X#   define FAT$M_FORTRANCC 1
  1552. X#   define FAT$V_IMPLIEDCC 1
  1553. X#   define FAT$M_IMPLIEDCC 2
  1554. X#   define FAT$V_PRINTCC 2
  1555. X#   define FAT$M_PRINTCC 4
  1556. X#   define FAT$V_NOSPAN 3
  1557. X#   define FAT$M_NOSPAN 8
  1558. X  unsigned short int fat$w_rsize;
  1559. X  union
  1560. X  {
  1561. X    unsigned long int fat$l_hiblk;
  1562. X    struct
  1563. X    {
  1564. X      unsigned short int fat$w_hiblkh;
  1565. X      unsigned short int fat$w_hiblkl;
  1566. X    } fat$r_hiblk_fields;
  1567. X  } fat$r_hiblk_overlay;
  1568. X  union
  1569. X  {
  1570. X    unsigned long int fat$l_efblk;
  1571. X    struct
  1572. X    {
  1573. X      unsigned short int fat$w_efblkh;
  1574. X      unsigned short int fat$w_efblkl;
  1575. X    } fat$r_efblk_fields;
  1576. X  } fat$r_efblk_overlay;
  1577. X  unsigned short int fat$w_ffbyte;
  1578. X  unsigned char fat$b_bktsize;
  1579. X  unsigned char fat$b_vfcsize;
  1580. X  unsigned short int fat$w_maxrec;
  1581. X  unsigned short int fat$w_defext;
  1582. X  unsigned short int fat$w_gbc;
  1583. X  char fat$fill[8];
  1584. X  unsigned short int fat$w_versions;
  1585. X};
  1586. X
  1587. X/*---------------------------------------------------------------------------
  1588. X    fchdef.h
  1589. X  ---------------------------------------------------------------------------*/
  1590. X
  1591. X/* This header file was created by Joe Meadows, and is not copyrighted
  1592. X   in any way. No guarantee is made as to the accuracy of the contents
  1593. X   of this header file. This header file was last modified on Sep. 22th,
  1594. X   1987. (Modified to include this statement) */
  1595. X
  1596. X#define FCH$V_BADACL 0x00B
  1597. X#define FCH$M_BADACL (1 << FCH$V_ACL)
  1598. X#define FCH$V_BADBLOCK 0x00E
  1599. X#define FCH$M_BADBLOCK (1 << FCH$V_BADBLOCK)
  1600. X#define FCH$V_CONTIG 0x007
  1601. X#define FCH$M_CONTIG (1 << FCH$V_CONTIG)
  1602. X#define FCH$V_CONTIGB 0x005
  1603. X#define FCH$M_CONTIGB (1 << FCH$V_CONTIGB)
  1604. X#define FCH$V_DIRECTORY 0x00D
  1605. X#define FCH$M_DIRECTORY (1 << FCH$V_DIRECTORY)
  1606. X#define FCH$V_ERASE 0x011
  1607. X#define FCH$M_ERASE (1 << FCH$V_ERASE)
  1608. X#define FCH$V_LOCKED 0x006
  1609. X#define FCH$M_LOCKED (1 << FCH$V_LOCKED)
  1610. X#define FCH$V_MARKDEL 0x00F
  1611. X#define FCH$M_MARKDEL (1 << FCH$V_MARKDEL)
  1612. X#define FCH$V_NOBACKUP 0x001
  1613. X#define FCH$M_NOBACKUP (1 << FCH$V_NOBACKUP)
  1614. X#define FCH$V_NOCHARGE 0x010
  1615. X#define FCH$M_NOCHARGE (1 << FCH$V_NOCHARGE)
  1616. X#define FCH$V_READCHECK 0x003
  1617. X#define FCH$M_READCHECK (1 << FCH$V_READCHECK)
  1618. X#define FCH$V_SPOOL 0x00C
  1619. X#define FCH$M_SPOOL (1 << FCH$V_SPOOL)
  1620. X#define FCH$V_WRITCHECK 0x004
  1621. X#define FCH$M_WRITCHECK (1 << FCH$V_WRITCHECK)
  1622. X#define FCH$V_WRITEBACK 0x002
  1623. X#define FCH$M_WRITEBACK (1 << FCH$V_WRITEBACK)
  1624. X
  1625. Xstruct fchdef  {
  1626. X  unsigned : 1;
  1627. X  unsigned fch$v_nobackup : 1 ;
  1628. X  unsigned fch$v_writeback : 1;
  1629. X  unsigned fch$v_readcheck : 1;
  1630. X  unsigned fch$v_writcheck : 1;
  1631. X  unsigned fch$v_contigb : 1;
  1632. X  unsigned fch$v_locked : 1;
  1633. X  unsigned fch$v_contig : 1;
  1634. X  unsigned : 3;
  1635. X  unsigned fch$v_badacl : 1;
  1636. X  unsigned fch$v_spool : 1;
  1637. X  unsigned fch$v_directory : 1;
  1638. X  unsigned fch$v_badblock : 1;
  1639. X  unsigned fch$v_markdel : 1;
  1640. X  unsigned fch$v_nocharge : 1;
  1641. X  unsigned fch$v_erase : 1;
  1642. X};
  1643. X
  1644. X/*---------------------------------------------------------------------------
  1645. X    fjndef.h
  1646. X  ---------------------------------------------------------------------------*/
  1647. X
  1648. X/* This header file was created by Joe Meadows, and is not copyrighted
  1649. X   in any way. No guarantee is made as to the accuracy of the contents
  1650. X   of this header file. This header file was last modified on Sep. 22th,
  1651. X   1987. (Modified to include this statement) */
  1652. X
  1653. X#define FJN$M_ONLY_RU 1
  1654. X#define FJN$M_RUJNL 2
  1655. X#define FJN$M_BIJNL 4
  1656. X#define FJN$M_AIJNL 8
  1657. X#define FJN$M_ATJNL 16
  1658. X#define FJN$M_NEVER_RU 32
  1659. X#define FJN$M_JOURNAL_FILE 64
  1660. X#define FJN$S_FJNDEF 1
  1661. Xstruct fjndef  {
  1662. X  unsigned fjn$v_only_ru : 1;
  1663. X  unsigned fjn$v_rujnl : 1;
  1664. X  unsigned fjn$v_bijnl : 1;
  1665. X  unsigned fjn$v_aijnl : 1;
  1666. X  unsigned fjn$v_atjnl : 1;
  1667. X  unsigned fjn$v_never_ru : 1;
  1668. X  unsigned fjn$v_journal_file:1;
  1669. X} ;
  1670. END_OF_FILE
  1671.   if test 5511 -ne `wc -c <'vms/VMSmunch.h'`; then
  1672.     echo shar: \"'vms/VMSmunch.h'\" unpacked with wrong size!
  1673.   fi
  1674.   # end of 'vms/VMSmunch.h'
  1675. fi
  1676. if test -f 'vms/vaxclib.opt' -a "${1}" != "-c" ; then 
  1677.   echo shar: Will not clobber existing file \"'vms/vaxclib.opt'\"
  1678. else
  1679.   echo shar: Extracting \"'vms/vaxclib.opt'\" \(30 characters\)
  1680.   sed "s/^X//" >'vms/vaxclib.opt' <<'END_OF_FILE'
  1681. Xsys$library:vaxcrtl.exe/share
  1682. END_OF_FILE
  1683.   if test 30 -ne `wc -c <'vms/vaxclib.opt'`; then
  1684.     echo shar: \"'vms/vaxclib.opt'\" unpacked with wrong size!
  1685.   fi
  1686.   # end of 'vms/vaxclib.opt'
  1687. fi
  1688. echo shar: End of archive 9 \(of 11\).
  1689. cp /dev/null ark9isdone
  1690. MISSING=""
  1691. for I in 1 2 3 4 5 6 7 8 9 10 11 ; do
  1692.     if test ! -f ark${I}isdone ; then
  1693.     MISSING="${MISSING} ${I}"
  1694.     fi
  1695. done
  1696. if test "${MISSING}" = "" ; then
  1697.     echo You have unpacked all 11 archives.
  1698.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1699. else
  1700.     echo You still must unpack the following archives:
  1701.     echo "        " ${MISSING}
  1702. fi
  1703. exit 0
  1704. exit 0 # Just in case...
  1705.