Newsgroups: comp.sources.misc
Path: wupost!darwin.sura.net!haven.umd.edu!uunet!sparky!kent
From: zip-bugs@cs.ucla.edu (Info-ZIP group)
Subject:  v31i133:  zip19 - Info-ZIP portable Zip, version 1.9, Patch01
Message-ID: <1992Sep2.195252.14041@sparky.imd.sterling.com>
Followup-To: comp.sources.d
X-Md4-Signature: ac4aa05e5d13e72d7ea305ec4be64c0f
Sender: kent@sparky.imd.sterling.com (Kent Landfield)
Organization: Sterling Software
References: <csm-v31i093=zip19.014410@sparky.IMD.Sterling.COM>
Date: Wed, 2 Sep 1992 19:52:52 GMT
Approved: kent@sparky.imd.sterling.com
Lines: 845

Submitted-by: zip-bugs@cs.ucla.edu (Info-ZIP group)
Posting-number: Volume 31, Issue 133
Archive-name: zip19/patch01
Patch-To: zip19: Volume 31, Issue 93-103
Environment: UNIX, VMS, OS/2, MS-DOS, MACINTOSH, WIN-NT, LINUX, MINIX, XOS, !AMIGA, ATARI, symlink, SGI, DEC, Cray, Convex, Amdahl, Sun, PC

This is Patch01 to zip 1.9.  The patches enclosed fix the main bugs reported 
in zip 1.9:

- file truncation to zero bytes for some file names
- file truncation for large files with option -l
- possible removal of non empty directories with option -m when run as root

Other minor changes are documented in the file 'history'.  These changes 
constitute zip 1.9 patch level 1.  The complete package is available by 
anonymous ftp on garbo.uwasa.fi:/unix/arcers/zip19p1.zip or zip19p1.tar.Z, 
and should become available soon on the main US archive sites.

Patch01 actually consists of two patches.  Both patch files are enclosed in
this shar file. The patches for msdos/makefile.bor, msdos/makefile.gcc and 
os2/os2zip.c have been uuencoded and should automagically be uudecoded when
unshared. [And if they don't, send mail to Kent as this is his doing.]  To
apply Patch01, cd to the zip19 sources directory and unshar the enclosed 
patches.  Then apply the patches. 

    patch -p1 < patch1.1
    patch -p1 < patch1.2

Please report problems with zip and unzip to zip-bugs@cs.ucla.edu.
Thanks.

Jean-loup Gailly
jloup@chorus.fr
--------------
#! /bin/sh
# This is a shell archive.  Remove anything before this line, then feed it
# into a shell via "sh file" or similar.  To overwrite existing files,
# type "sh file -c".
# Contents:  patch1.1 patch1.2.uu
# Wrapped by kent@sparky on Wed Sep  2 14:21:36 1992
PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
echo If this archive is complete, you will see the following message:
echo '          "shar: End of archive."'
if test -f 'patch1.1' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'patch1.1'\"
else
  echo shar: Extracting \"'patch1.1'\" \(25094 characters\)
  sed "s/^X//" >'patch1.1' <<'END_OF_FILE'
Xdiff -cr zip19/Where zip19p1/Where
X*** zip19/Where	Thu Aug 20 18:55:08 1992
X--- zip19p1/Where	Wed Aug 26 15:13:30 1992
X***************
X*** 1,8 ****
X  __________________________________________________________________________
X  
X!   This is the Info-ZIP file ``Where,'' last updated on 20 August 1992.
X  __________________________________________________________________________
X  
X  
X    SITE OWNERS:  If you're listed in here but the information is not
X    correct (or if you're a big site but aren't listed at all), please
X--- 1,11 ----
X  __________________________________________________________________________
X  
X!   This is the Info-ZIP file ``Where,'' last updated on 26 August 1992.
X  __________________________________________________________________________
X  
X+   Note that some ftp sites may not yet have the latest versions of
X+   zip and unzip when you read this. The latest versions are always on
X+   the comp.sources.misc archives.
X  
X    SITE OWNERS:  If you're listed in here but the information is not
X    correct (or if you're a big site but aren't listed at all), please
X***************
X*** 13,25 ****
X  utilities (on some ftp sites, the .zip files may have a .zoo equivalent
X  in zoo 2.10 format):
X  
X! 	zip19.zip	Zip 1.9 (includes zipnote and zipsplit)
X! 	zip19.tar.Z	ditto, compress'd tar format
X  
X  	unzip50.zip	UnZip 5.0 (includes zipinfo and funzip)
X  	unzip50.tar.Z	ditto, compress'd tar format
X  
X! 	wunz12sr.zip	WizUnZip 1.2 support files for Windows 3.1, UnZip 5.0
X  
X  	zcrypt19.zip	encryption/decryption support (includes zipcloak)
X  
X--- 16,28 ----
X  utilities (on some ftp sites, the .zip files may have a .zoo equivalent
X  in zoo 2.10 format):
X  
X! 	zip19p1.zip	Zip 1.9 (includes zipnote and zipsplit), patch level 1
X! 	zip19p1.tar.Z	ditto, compress'd tar format
X  
X  	unzip50.zip	UnZip 5.0 (includes zipinfo and funzip)
X  	unzip50.tar.Z	ditto, compress'd tar format
X  
X! 	wunz13sr.zip	WizUnZip 1.3 support files for Windows 3.1, UnZip 5.0
X  
X  	zcrypt19.zip	encryption/decryption support (includes zipcloak)
X  
X***************
X*** 27,33 ****
X  
X  	UnzpHist.zip	changes history of UnZip, back to 2.0
X  
X! 	zip19x.zip      MSDOS executables and docs for zip, zipnote, zipsplit
X  	unzip50.exe     MSDOS executable for unzip
X  
X  	zip19_16.zip	OS/2 1.x 16-bit executables and docs
X--- 30,36 ----
X  
X  	UnzpHist.zip	changes history of UnZip, back to 2.0
X  
X! 	zip19p1x.zip    MSDOS executables and docs for zip, zipnote, zipsplit
X  	unzip50.exe     MSDOS executable for unzip
X  
X  	zip19_16.zip	OS/2 1.x 16-bit executables and docs
X***************
X*** 48,55 ****
X  
X  ftp sites for the US-exportable sources and executables.  Look for
X  the file names given above in the following directories.  Some sites
X! like to use slightly different names, such as zip-1.9.tar-z instead
X! of zip19.tar.Z.
X  
X  	wuarchive.wustl.edu:/packages/compression/...
X  	wuarchive.wustl.edu:/mirrors/misc/unix/...
X--- 51,58 ----
X  
X  ftp sites for the US-exportable sources and executables.  Look for
X  the file names given above in the following directories.  Some sites
X! like to use slightly different names, such as zip-1.9p1.tar-z instead
X! of zip19p1.tar.Z.
X  
X  	wuarchive.wustl.edu:/packages/compression/...
X  	wuarchive.wustl.edu:/mirrors/misc/unix/...
Xdiff -cr zip19/deflate.c zip19p1/deflate.c
X*** zip19/deflate.c	Tue Aug 18 11:54:28 1992
X--- zip19p1/deflate.c	Tue Aug 25 10:49:40 1992
X***************
X*** 459,465 ****
X   * Fill the window when the lookahead becomes insufficient.
X   * Updates strstart and lookahead, and sets eofile if end of input file.
X   * IN assertion: lookahead < MIN_LOOKAHEAD && strstart + lookahead > 0
X!  * OUT assertion: at least one byte has been read, or eofile is set.
X   */
X  local void fill_window()
X  {
X--- 459,467 ----
X   * Fill the window when the lookahead becomes insufficient.
X   * Updates strstart and lookahead, and sets eofile if end of input file.
X   * IN assertion: lookahead < MIN_LOOKAHEAD && strstart + lookahead > 0
X!  * OUT assertions: at least one byte has been read, or eofile is set;
X!  *    file reads are performed for at least two bytes (required for the
X!  *    translate_eol option).
X   */
X  local void fill_window()
X  {
X***************
X*** 470,476 ****
X      /* If the window is full, move the upper half to the lower one to make
X       * room in the upper half.
X       */
X!     if (more == 0) {
X          /* By the IN assertion, the window is not empty so we can't confuse
X           * more == 0 with more == 64K on a 16 bit machine.
X           */
X--- 472,483 ----
X      /* If the window is full, move the upper half to the lower one to make
X       * room in the upper half.
X       */
X!     if (more == (unsigned)EOF) {
X!         /* Very unlikely, but possible on 16 bit machine if strstart == 0
X!          * and lookahead == 1 (input done one byte at time)
X!          */
X!         more--;
X!     } else if (more <= 1) {
X          /* By the IN assertion, the window is not empty so we can't confuse
X           * more == 0 with more == 64K on a 16 bit machine.
X           */
X***************
X*** 477,486 ****
X          memcpy((char*)window, (char*)window+WSIZE, (unsigned)WSIZE);
X          match_start -= WSIZE;
X          strstart    -= WSIZE;
X!         /* strstart - WSIZE = WSIZE - lookahead > WSIZE - MIN_LOOKAHEAD
X!          * so we now have strstart > MAX_DIST:
X           */
X!         Assert (strstart > MAX_DIST, "window slide too early");
X          block_start -= (long) WSIZE;
X  
X          for (n = 0; n < HASH_SIZE; n++) {
X--- 484,493 ----
X          memcpy((char*)window, (char*)window+WSIZE, (unsigned)WSIZE);
X          match_start -= WSIZE;
X          strstart    -= WSIZE;
X!         /* strstart - WSIZE >= WSIZE - 1 - lookahead >= WSIZE - MIN_LOOKAHEAD
X!          * so we now have strstart >= MAX_DIST:
X           */
X!         Assert (strstart >= MAX_DIST, "window slide too early");
X          block_start -= (long) WSIZE;
X  
X          for (n = 0; n < HASH_SIZE; n++) {
X***************
X*** 494,508 ****
X               * its value will never be used.
X               */
X          }
X!         more = WSIZE;
X          if (verbose) putc('.', stderr);
X- 
X-     } else if (more == (unsigned)EOF) {
X-         /* Very unlikely, but possible on 16 bit machine if strstart == 0
X-          * and lookahead == 1 (input done one byte at time)
X-          */
X-         more--;
X      }
X      n = read_buf((char*)window+strstart+lookahead, more);
X      if (n == 0 || n == (unsigned)EOF) {
X          eofile = 1;
X--- 501,510 ----
X               * its value will never be used.
X               */
X          }
X!         more += WSIZE;
X          if (verbose) putc('.', stderr);
X      }
X+     /* At this point, more >= 2 */
X      n = read_buf((char*)window+strstart+lookahead, more);
X      if (n == 0 || n == (unsigned)EOF) {
X          eofile = 1;
Xdiff -cr zip19/fileio.c zip19p1/fileio.c
X*** zip19/fileio.c	Tue Aug 18 12:34:34 1992
X--- zip19p1/fileio.c	Wed Aug 26 11:53:38 1992
X***************
X*** 1544,1551 ****
X  #ifdef S_IFLNK
X               linkput ? lstat(name, &s) :
X  #endif
X!              SSTAT(name, &s)) != 0 /* || (s.st_mode & S_IFDIR) != 0 */ )
X!              /* Accept about any file kind except directories */
X      return 0;
X  
X    if (a != NULL)
X--- 1544,1553 ----
X  #ifdef S_IFLNK
X               linkput ? lstat(name, &s) :
X  #endif
X!              SSTAT(name, &s)) != 0)
X!              /* Accept about any file kind including directories
X!               * (stored with trailing / with -r option)
X!               */
X      return 0;
X  
X    if (a != NULL)
X***************
X*** 1587,1594 ****
X  
X  int deletedir(d)
X  char *d;                /* directory to delete */
X! /* Delete the (empty) directory *d.  Return the result of rmdir(), delete(),
X!    or system(). */
X  {
X  #ifdef MACOS
X    warn("deletedir not implemented yet", "");
X--- 1589,1597 ----
X  
X  int deletedir(d)
X  char *d;                /* directory to delete */
X! /* Delete the directory *d if it is empty, do nothing otherwise.
X!    Return the result of rmdir(), delete(), or system().
X!  */
X  {
X  #ifdef MACOS
X    warn("deletedir not implemented yet", "");
Xdiff -cr zip19/history zip19p1/history
X*** zip19/history	Thu Aug 20 20:04:56 1992
X--- zip19p1/history	Wed Aug 26 15:31:18 1992
X***************
X*** 908,913 ****
X--- 908,926 ----
X  8.  Fixed vms/vms_zip.rnh
X  9.  Fixed init_upper() in util.c and os2zip.c (Kai-Uwe)
X  
X+ ------------------------ Aug 26  1992   version 1.9p1 ------------------------
X+ This is official patch 1 for zip 1.9, not a beta version.
X+ 
X+ 1.  Simplified makefile entry for convex (Rafal Maszkowski)
X+ 2.  Do not use 'const' even for djgcc (Onno van der Linden)
X+ 3.  Use gcc in linux makefile entry (Arnt Gulbrandsen)
X+ 4.  Fix serious bug in -l option (file truncated).
X+ 5.  Fix stack problem for OS/2 IBM-C (Kai-Uwe)
X+ 6.  Fix serious bug in zipup.c sometimes causing file truncation to zero bytes
X+     or internal error (Timo Salmi and Robert Tobler)
X+ 7.  Do not unlink() directories when running as root (Charles Hannum)
X+ 8.  Fix msdos/makefile.bor and msdos/makefile.gcc (Onno van der Linden)
X+ 
X  
X  Things to check or to be done (see also BUGS section in zip.1):
X  
Xdiff -cr zip19/infozip.who zip19p1/infozip.who
X*** zip19/infozip.who	Thu Aug 20 19:46:40 1992
X--- zip19p1/infozip.who	Wed Aug 26 15:32:02 1992
X***************
X*** 30,35 ****
X--- 30,36 ----
X  Hunter Goatley          goathunter@WKUVX1.BITNET        Vax VMS
X  Arnt Gulbrandsen        agulbra@pvv.unit.no             Linux
X  David Gundlach          david@rolf.stat.uga.edu         Sun SS1+ SunOS 4.1
X+ Charles Hannum          mycroft@ai.mit.edu              bug report
X  Bob Hardy               hardy@lucid.com                 Power C on MSDOS
X  Peter Jones             jones@mips1.info.uqam.ca        MIPS UMIPS 4.0
X  Kjetil W. J{\o}rgensen  jorgens@lise.unit.no            OSF/1
X***************
X*** 44,51 ****
X  Michael D. Lawler       mdlawler@bsu-cs.bsu.edu         Mt.Xinu BSD 4.3 on VAX
X  Johnny Lee              johnnyl@microsoft.com           Microsoft C 7.0
X  David Lemson            lemson@ux1.cso.uiuc.edu         Sequent Dynix 3.0.17
X! Onno van der Linden     vdlinden@fwi.uva.nl             SCO Unix 3.2.0
X!                                                         BC++ 3.0, djgcc 1.06
X  Warner Losh             imp@Solbourne.COM               packing algorithm help
X  John Lundin             lundin@urvax.urich.edu          VAX VMS
X  Igor Mandrichenko       mandrichenko@m10.ihep.su        VAX VMS
X--- 45,52 ----
X  Michael D. Lawler       mdlawler@bsu-cs.bsu.edu         Mt.Xinu BSD 4.3 on VAX
X  Johnny Lee              johnnyl@microsoft.com           Microsoft C 7.0
X  David Lemson            lemson@ux1.cso.uiuc.edu         Sequent Dynix 3.0.17
X! Onno van der Linden     vdlinden@fwi.uva.nl             SCO Unix 3.2.0, 386/BSD
X!                                                         BC++ 3.0, djgcc 1.08
X  Warner Losh             imp@Solbourne.COM               packing algorithm help
X  John Lundin             lundin@urvax.urich.edu          VAX VMS
X  Igor Mandrichenko       mandrichenko@m10.ihep.su        VAX VMS
X***************
X*** 77,86 ****
X--- 78,90 ----
X  Kai Uwe Rommel          rommel@informatik.tu-muenchen.de        OS/2
X  Jon Saxton              jrs@panix.com                   Microsoft C 6.0
X  Steve Salisbury         stevesa@microsoft.com           Microsoft C 6.0
X+ Timo Salmi              ts@uwasa.fi                     bug report
X  Martin Schulz           martin@indian.cs.unb.ca         Atari ST
X  Dave Sisson             daves@vtcosy.cns.vt.edu         AIX 1.1.1 PS/2 & 3090
X  Ron Srodawa             srodawa@vela.acs.oakland.edu    SCO Xenix/386 2.3.3
X  Bertil Stenstr|m        stenis@heron.qz.se              HP-UX 7.0 HP9000/835
X+ Paul Telles             paul@pubnet.com                 SCO Xenix
X+ Robert F Tobler         rft@cs.stanford.edu             bug report
X  Antoine Verheijen	antoine@sysmail.ucs.ualberta.ca envargs fix
X  Arjan de Vet            devet@info.win.tue.nl           SunOS 4.1, MSC 5.1
X  Rich Wales              wales@cs.ucla.edu               SunOS 4.0.3 Sun-3/50
Xdiff -cr zip19/install.doc zip19p1/install.doc
X*** zip19/install.doc	Thu Aug 20 18:31:04 1992
X--- zip19p1/install.doc	Tue Aug 25 11:20:40 1992
X***************
X*** 41,51 ****
X       cannot find _memset or _memcpy, try bsdold.  If you are using
X       System V Unix or SCO Unix, try sysv or sysv_old.  Also use sysv
X       on a Silicon Graphics (SGI) machine.  You can also cross-compile
X!      Zip for MSDOS under SCO 386 Unix using "make scodos".
X  
X       If none of these compiles, links, and functions properly on
X!      your Unix system, see the section BUGS below for how to get
X!      help.
X  
X       If the appropriate system was selected, then the executables
X       zip, zipnote and zipsplit will be created.  You can copy them
X--- 41,52 ----
X       cannot find _memset or _memcpy, try bsdold.  If you are using
X       System V Unix or SCO Unix, try sysv or sysv_old.  Also use sysv
X       on a Silicon Graphics (SGI) machine.  You can also cross-compile
X!      Zip for MSDOS under SCO 386 Unix using "make scodos". If you get
X!      error messages "constant expected" in deflate.c, add -DDYN_ALLOC
X!      to CFLAGS in your makefile entry.
X  
X       If none of these compiles, links, and functions properly on
X!      your Unix system, see the file Readme for how to get help.
X  
X       If the appropriate system was selected, then the executables
X       zip, zipnote and zipsplit will be created.  You can copy them
Xdiff -cr zip19/makefile zip19p1/makefile
X*** zip19/makefile	Wed Aug 19 18:17:38 1992
X--- zip19p1/makefile	Wed Aug 26 15:01:22 1992
X***************
X*** 4,13 ****
X  all:
X  	@echo ''
X  	@echo 'Make what?  You must say what system to make Zip for--e.g.'
X! 	@echo '"make bsd".  Choices: bsd, bsdold, sysv, sysv_old, sysv_386,'
X! 	@echo 'dnix, linux, sun, sun_gcc, next10, next, hpux, cray, cray3,'
X! 	@echo '3b1, att6300, zilog, scodos, aux, c120, convex, aix, minix,'
X! 	@echo 'isc, ultrix, dec_osf1 and xos.'
X  	@echo 'See the files install.doc and zip.doc for more information.'
X  	@echo ''
X  
X--- 4,13 ----
X  all:
X  	@echo ''
X  	@echo 'Make what?  You must say what system to make Zip for--e.g.'
X! 	@echo '"make bsd".  Choices: 3b1, aix, att6300, aux, bsd, bsdold,'
X! 	@echo 'convex, cray, cray3, dec_osf1, dnix, hpux, isc, linux,'
X! 	@echo 'minix, next, next10, scodos, sun, sun_gcc, sysv, sysv_386,'
X! 	@echo 'sysv_old, ultrix, xenix, xos, zilog.'
X  	@echo 'See the files install.doc and zip.doc for more information.'
X  	@echo ''
X  
X***************
X*** 120,126 ****
X  bsdold:
X  	$(MAKE) zips CFLAGS="-O -DZMEM"
X  
X! # AT&T System V, Rel 3.  Also SCO, Xenix, OpenDeskTop, ETA-10P*, SGI.
X  sysv_old:
X  	$(MAKE) zips CFLAGS="-O -DDIRENT"
X  
X--- 120,126 ----
X  bsdold:
X  	$(MAKE) zips CFLAGS="-O -DZMEM"
X  
X! # AT&T System V, Rel 3.  Also SCO Unix, OpenDeskTop, ETA-10P*, SGI.
X  sysv_old:
X  	$(MAKE) zips CFLAGS="-O -DDIRENT"
X  
X***************
X*** 132,145 ****
X  sysv_386:
X  	$(MAKE) zips CFLAGS="-O -DSYSV -DTERMIO -DASM" OBJA=match.o
X  
X  # DNIX 5.x: like System V but optimization is messed up.
X  dnix:
X  	$(MAKE) zips CFLAGS="-DDIRENT"
X  
X! # Linux 0.96a with GCC 2.12, dies with <= 2.11c. The problem with
X! # builtin functions still has to be investigated.
X  linux:
X! 	$(MAKE) zips CFLAGS="-O -fno-builtin -DSYSV -DTERMIO -DLINUX"
X  
X  # Sun OS 4.x: BSD, but use getdents(). If you have gcc, use 'make sun_gcc'
X  # instead since the code produced is better.
X--- 132,151 ----
X  sysv_386:
X  	$(MAKE) zips CFLAGS="-O -DSYSV -DTERMIO -DASM" OBJA=match.o
X  
X+ # SCO Xenix
X+ xenix:
X+ 	$(MAKE) zips CFLAGS="-O -DSYSV -DTERMIO" LFLAGS2="-lx -s"
X+ 
X  # DNIX 5.x: like System V but optimization is messed up.
X  dnix:
X  	$(MAKE) zips CFLAGS="-DDIRENT"
X  
X! # Linux 0.96a with GCC 2.12, dies with <= 2.11c. builtin functions are
X! # disabled because '#define const' removes const from normal functions
X! # but not builtin ones. And keeping const causes problems on other systems.
X  linux:
X! 	$(MAKE) zips CFLAGS="-O -fno-builtin -DSYSV -DTERMIO -DLINUX" \
X! 	  CC=gcc BIND=gcc
X  
X  # Sun OS 4.x: BSD, but use getdents(). If you have gcc, use 'make sun_gcc'
X  # instead since the code produced is better.
X***************
X*** 197,209 ****
X  aux:
X  	$(MAKE) zips CFLAGS="-O -DTERMIO"
X  
X! # Convex C120, OS 9.0, cc v. 4.0, no vectorization.
X! c120:
X! 	$(MAKE) zips CFLAGS="-O1 -rl -DCONVEX"
X! 
X! # Convex C220, OS 9.0
X  convex:
X! 	$(MAKE) zips CFLAGS="-O2 -rl -DCONVEX"
X  
X  # AIX Version 3.1 for RISC System/6000 
X  aix:
X--- 203,211 ----
X  aux:
X  	$(MAKE) zips CFLAGS="-O -DTERMIO"
X  
X! # Convex C-120, C-210, OS 9.0, cc v. 4.0, no vectorization used.
X  convex:
X! 	$(MAKE) zips CFLAGS="-O"
X  
X  # AIX Version 3.1 for RISC System/6000 
X  aix:
Xdiff -cr zip19/revision.h zip19p1/revision.h
X*** zip19/revision.h	Thu Aug 20 17:59:20 1992
X--- zip19p1/revision.h	Wed Aug 26 14:46:28 1992
X***************
X*** 14,20 ****
X   */
X  
X  #define REVISION 19
X! #define REVDATE "Aug 20th 1992"
X  
X  /* Copyright notice for binary executables--this notice only applies to
X   * those (zip, zipcloak, zipsplit, and zipnote), not to this file
X--- 14,21 ----
X   */
X  
X  #define REVISION 19
X! #define PATCHLEVEL 1
X! #define REVDATE "Aug 26th 1992"
X  
X  /* Copyright notice for binary executables--this notice only applies to
X   * those (zip, zipcloak, zipsplit, and zipnote), not to this file
Xdiff -cr zip19/tailor.h zip19p1/tailor.h
X*** zip19/tailor.h	Tue Aug 18 13:14:44 1992
X--- zip19p1/tailor.h	Wed Aug 26 14:50:20 1992
X***************
X*** 2,10 ****
X  
X  /* const's are inconsistently used across ANSI libraries--kill for all
X     header files. */
X! #ifndef __GO32__
X! #  define const
X! #endif
X  
X  
X  /* Define MSDOS for Turbo C as well as Microsoft C */
X--- 2,8 ----
X  
X  /* const's are inconsistently used across ANSI libraries--kill for all
X     header files. */
X! #define const
X  
X  
X  /* Define MSDOS for Turbo C as well as Microsoft C */
X***************
X*** 53,58 ****
X--- 51,59 ----
X  #  define OS2
X  #endif
X  
X+ #ifdef __convexc__
X+ #	define CONVEX
X+ #endif /* __convexc__ */
X  
X  /* Turn off prototypes if requested */
X  #if (defined(NOPROTO) && defined(PROTO))
Xdiff -cr zip19/zip.1 zip19p1/zip.1
X*** zip19/zip.1	Thu Aug 20 20:00:14 1992
X--- zip19p1/zip.1	Tue Aug 25 10:19:48 1992
X***************
X*** 550,555 ****
X--- 550,558 ----
X  it only displays a warning "name not matched". A better warnign should be
X  given.
X  .PP
X+ The option -e also forces -o (make zipfile as old as latest entry). This
X+ is used to make brute force attacks on the password harder.
X+ .PP
X  Under VMS, not all of the odd file formats are treated properly.  Only
X  zip files of format stream-LF and fixed length 512 are expected to work
X  with zip.  Others can be converted using Rahul Dhesi's BILF program.
Xdiff -cr zip19/zip.doc zip19p1/zip.doc
X*** zip19/zip.doc	Thu Aug 20 19:48:58 1992
X--- zip19p1/zip.doc	Wed Aug 26 14:26:34 1992
X***************
X*** 28,34 ****
X  
X       zip version 1.9 is compatible with pkzip 1.93a.   Note  that
X       pkunzip 1.10 cannot extract files produced by pkzip 1.93a or
X!      zip 1.9b. You must use pkunzip 1.93a or unzip 5.0 to extract
X       them.
X  
X       For a brief help on zip and unzip, run each without specify-
X--- 28,34 ----
X  
X       zip version 1.9 is compatible with pkzip 1.93a.   Note  that
X       pkunzip 1.10 cannot extract files produced by pkzip 1.93a or
X!      zip 1.9. You must use pkunzip 1.93a or unzip 5.0 to  extract
X       them.
X  
X       For a brief help on zip and unzip, run each without specify-
X***************
X*** 464,478 ****
X       unzip(1), tar(1), compress(1)
X  
X  BUGS
X!      WARNING: zip files produced by this version of zip must  not
X!      be  *updated*  by  zip  1.0 or pkzip 1.10 or pkzip 1.93a, if
X!      they contain encrypted members, or if they  have  been  pro-
X!      duced  in  a  pipe or on a non seekable device. The old ver-
X!      sions of zip or pkzip would destroy the zip  structure.  The
X!      old  versions can list the contents of the zip file but can-
X!      not extract it anyway (because of the new compression  algo-
X!      rithm).   If  you do not use encryption and use regular disk
X!      files, you do not have to care about this problem.
X  
X       zip 1.9 is compatible with  pkzip  1.93a,  except  when  two
X       features  are used: encryption or zip file created in a pipe
X--- 464,478 ----
X       unzip(1), tar(1), compress(1)
X  
X  BUGS
X!      WARNING: zip files produced by zip 1.9 must not be *updated*
X!      by  zip  1.0  or  pkzip 1.10 or pkzip 1.93a, if they contain
X!      encrypted members, or if they have been produced in  a  pipe
X!      or  on  a  non  seekable  device. The old versions of zip or
X!      pkzip would destroy the zip structure. The old versions  can
X!      list the contents of the zip file but cannot extract it any-
X!      way (because of the new compression algorithm).  If  you  do
X!      not  use  encryption  and use regular disk files, you do not
X!      have to care about this problem.
X  
X       zip 1.9 is compatible with  pkzip  1.93a,  except  when  two
X       features  are used: encryption or zip file created in a pipe
X***************
X*** 482,487 ****
X--- 482,491 ----
X       Without -y, when zip must compress a symbolic link to an non
X       existing   file,  it  only  displays  a  warning  "name  not
X       matched". A better warnign should be given.
X+ 
X+      The option -e also forces -o (make zipfile as old as  latest
X+      entry).  This  is  used  to  make brute force attacks on the
X+      password harder.
X  
X       Under VMS, not all of the odd file formats are treated prop-
X       erly.   Only  zip files of format stream-LF and fixed length
Xdiff -cr zip19/zipfile.c zip19p1/zipfile.c
X*** zip19/zipfile.c	Tue Aug 18 11:54:32 1992
X--- zip19p1/zipfile.c	Wed Aug 26 14:35:42 1992
X***************
X*** 753,763 ****
X    for (z = zfiles; z != NULL; z = z->nxt)
X      if (z->mark || z->trash)
X      {
X!       z->mark = 1;
X!       n++;
X!       if (verbose)
X!         printf("zip diagnostic: trashing file %s\n", z->name);
X!       destroy(z->name);
X      }
X  
X    /* Try to delete all paths that lead up to marked names */
X--- 753,767 ----
X    for (z = zfiles; z != NULL; z = z->nxt)
X      if (z->mark || z->trash)
X      {
X!       if (z->zname[z->nam - 1] == '/') /* directory */
X!         z->mark = z->trash = 0;
X!       else {
X!         z->mark = 1;
X!         n++;
X!         if (verbose)
X!           printf("zip diagnostic: trashing file %s\n", z->name);
X!         destroy(z->name);
X!       }
X      }
X  
X    /* Try to delete all paths that lead up to marked names */
X***************
X*** 779,785 ****
X          if (*cutpath(s[i]->name) && strcmp(s[i]->name, s[i-1]->name))
X          {
X            if (verbose)
X!             printf("zip diagnostic: trashing directory %s\n", s[i]->name);
X            deletedir(s[i]->name);
X            k++;
X          }
X--- 783,790 ----
X          if (*cutpath(s[i]->name) && strcmp(s[i]->name, s[i-1]->name))
X          {
X            if (verbose)
X!             printf("zip diagnostic: trashing directory %s (if empty)\n",
X!                    s[i]->name);
X            deletedir(s[i]->name);
X            k++;
X          }
Xdiff -cr zip19/zipup.c zip19p1/zipup.c
X*** zip19/zipup.c	Tue Aug 18 11:54:32 1992
X--- zip19p1/zipup.c	Wed Aug 26 13:51:42 1992
X***************
X*** 170,176 ****
X--- 170,179 ----
X    long q = -2L;         /* size returned by filetime */
X    int r;                /* temporary variable */
X    ulg s = 0L;           /* size of compressed data */
X+   int isdir;            /* set for a directory name */
X  
X+   isdir = z->name[strlen(z->name)-1] == '/';
X+ 
X    if ((z->tim = filetime(z->name, &a, &q)) == 0 || q < -1L)
X      return ZE_OPEN;
X    /* q is set to -1 if the input file is a device */
X***************
X*** 201,207 ****
X      l = issymlnk(a);
X      if (l)
X        ifile = fbad;
X!     else if (z->name[z->nam - 1] == '/') { /* directory */
X        ifile = fbad;
X        m = STORE;
X      }
X--- 204,210 ----
X      l = issymlnk(a);
X      if (l)
X        ifile = fbad;
X!     else if (isdir) { /* directory */
X        ifile = fbad;
X        m = STORE;
X      }
X***************
X*** 300,306 ****
X      if ((b = malloc(CBSZ)) == NULL)
X         return ZE_MEM;
X  
X!     if (z->name[z->nam - 1] != '/') /* no read for directories */
X      while ((k = l ? rdsymlnk(z->name, b, CBSZ) : zread(ifile, b, CBSZ)) > 0)
X      {
X        isize += k;
X--- 303,309 ----
X      if ((b = malloc(CBSZ)) == NULL)
X         return ZE_MEM;
X  
X!     if (!isdir) /* no read for directories */
X      while ((k = l ? rdsymlnk(z->name, b, CBSZ) : zread(ifile, b, CBSZ)) > 0)
X      {
X        isize += k;
X***************
X*** 405,417 ****
X    unsigned len;
X    char far *b;
X    if (translate_eol) {
X-     /* static char last_byte = '\0'; */
X      size >>= 1;
X      b = buf+size;
X      size = len = zread(ifile, b, size);
X      if (len == (unsigned)EOF || len == 0) return len;
X      do {
X-        /* ??? keep cr lf intact */
X         if ((*buf++ = *b++) == '\n') *(buf-1) = '\r', *buf++ = '\n', len++;
X      } while (--size != 0);
X      buf -= len;
X--- 408,418 ----
END_OF_FILE
  if test 25094 -ne `wc -c <'patch1.1'`; then
    echo shar: \"'patch1.1'\" unpacked with wrong size!
  fi
  # end of 'patch1.1'
fi
if test -f 'patch1.2.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'patch1.2.uu'\"
else
  echo shar: Extracting \"'patch1.2.uu'\" \(4857 characters\)
  sed "s/^X//" >'patch1.2.uu' <<'END_OF_FILE'
Xbegin 666 patch1.2
XM9&EF9B M8W(@>FEP,3DO;7-D;W,O;6%K969I;&4N8F]R('II<#$Y<#$O;7-D
XM;W,O;6%K969I;&4N8F]R"BHJ*B!Z:7 Q.2]M<V1O<R]M86ME9FEL92YB;W()
XM5&AU($%U9R R," P-#HQ.3HU-B Q.3DR"BTM+2!Z:7 Q.7 Q+VUS9&]S+VUA
XM:V5F:6QE+F)O<@E7960@075G(#(V(#$U.C(V.C(P(#$Y.3(**BHJ*BHJ*BHJ
XM*BHJ*BHJ"BHJ*B Q,#8L,3$R("HJ*BH*(" ))"A#0RD@+6,@)"A55$E,1DQ!
XM1U,I)"H@9FEL96EO+F,-"B @#0H@('5T:6Q?+F]B:CH)=71I;"YC('II<"YH
XM('II<&5R<BYH('1A:6QO<BYH#0HA( DD*$-#*2 M8R D*%5424Q&3$%'4RDD
XM*B!F:6QE:6\N8PT*(" -"B @8W)Y<'1?+F]B:CH)8W)Y<'0N8R!Z:7 N:"!Z
XM:7!E<G(N:"!T86EL;W(N: T*(" ))"A#0RD@+6,@)"A55$E,1DQ!1U,I)"H@
XM8W)Y<'0N8PT*+2TM(#$P-BPQ,3(@+2TM+0H@( DD*$-#*2 M8R D*%5424Q&
XM3$%'4RDD*B!F:6QE:6\N8PT*(" -"B @=71I;%\N;V)J.@EU=&EL+F,@>FEP
XM+F@@>FEP97)R+F@@=&%I;&]R+F@-"B$@"20H0T,I("UC("0H551)3$9,04=3
XM*20J('5T:6Q?+F,-"B @#0H@(&-R>7!T7RYO8FHZ"6-R>7!T+F,@>FEP+F@@
XM>FEP97)R+F@@=&%I;&]R+F@-"B @"20H0T,I("UC("0H551)3$9,04=3*20J
XM(&-R>7!T+F,-"F1I9F8@+6-R('II<#$Y+VUS9&]S+VUA:V5F:6QE+F=C8R!Z
XM:7 Q.7 Q+VUS9&]S+VUA:V5F:6QE+F=C8PHJ*BH@>FEP,3DO;7-D;W,O;6%K
XM969I;&4N9V-C"51H=2!!=6<@,C @,#0Z,3@Z,C0@,3DY,@HM+2T@>FEP,3EP
XM,2]M<V1O<R]M86ME9FEL92YG8V,)5V5D($%U9R R-B Q-3HS,#HQ." Q.3DR
XM"BHJ*BHJ*BHJ*BHJ*BHJ*@HJ*BH@,2PU("HJ*BH*(" C($UA:V5F:6QE(&9O
XM<B!::7 L(%II<$-L;V%K+"!::7!.;W1E(&%N9"!::7!3<&QI="!F;W(-"B$@
XM(R!D:F=C8R Q+C V#0H@( T*("!#4EE05$\]#0H@($-,3T%+/0T*+2TM(#$L
XM-2 M+2TM"B @(R!-86ME9FEL92!F;W(@6FEP+"!::7!#;&]A:RP@6FEP3F]T
XM92!A;F0@6FEP4W!L:70@9F]R#0HA(",@9&IG8V,@,2XP. T*(" -"B @0U)9
XM4%1//0T*("!#3$]!2ST-"BHJ*BHJ*BHJ*BHJ*BHJ*@HJ*BH@-RPQ,R J*BHJ
XM"B @#0H@(",@("HJ*B!&;W(@96YC<GEP=&EO;B!V97)S:6]N+"!R96UO=F4@
XM=&AE(",@870@=&AE(&9R;VYT(&]F(&YE>'0@,R!L:6YE<R J*BH-"B @(T-2
XM65!43SUC<GEP="YO#0HA("-#3$]!2SUZ:7!C;&]A:RYE>&4-"B @(T-21DQ!
XM1STM1$-265!4#0H@( T*(" C("TM+2TM+2TM+2TM+2T@9&IG8V,@+2TM+2TM
XM+2TM+2TM+0T*+2TM(#<L,3,@+2TM+0H@( T*(" C(" J*BH@1F]R(&5N8W)Y
XM<'1I;VX@=F5R<VEO;BP@<F5M;W9E('1H92 C(&%T('1H92!F<F]N="!O9B!N
XM97AT(#,@;&EN97,@*BHJ#0H@("-#4EE05$\]8W)Y<'0N;PT*(2 C0TQ/04L]
XM>FEP8VQO86L-"B @(T-21DQ!1STM1$-265!4#0H@( T*(" C("TM+2TM+2TM
XM+2TM+2T@9&IG8V,@+2TM+2TM+2TM+2TM+0T**BHJ*BHJ*BHJ*BHJ*BHJ"BHJ
XM*B Q.2PR-2 J*BHJ"B @#0H@(",@=F%R:6%B;&5S#0H@($]"2EH@/2!Z:7 N
XM;R!Z:7!F:6QE+F\@>FEP=7 N;R!F:6QE:6\N;R!U=&EL+F\@9VQO8F%L<RYO
XM("0H0U)94%1/*0T*(2 -"B @3T)*52 ]('II<&9I;&5?+F\@>FEP=7!?+F\@
XM9FEL96EO7RYO('5T:6Q?+F\@9VQO8F%L<RYO#0H@($]"2DX@/2!Z:7!N;W1E
XM+F\@("0H3T)*52D-"B @3T)*0R ]('II<&-L;V%K+F\@)"A/0DI5*2!C<GEP
XM=%\N;PT*+2TM(#$Y+#(U("TM+2T*(" -"B @(R!V87)I86)L97,-"B @3T)*
XM6B ]('II<"YO('II<&9I;&4N;R!Z:7!U<"YO(&9I;&5I;RYO('5T:6PN;R!G
XM;&]B86QS+F\@)"A#4EE05$\I#0HA($]"2DD@/2!D969L871E+F\@=')E97,N
XM;R!B:71S+F\@;6%T8V@N;PT*("!/0DI5(#T@>FEP9FEL95\N;R!Z:7!U<%\N
XM;R!F:6QE:6]?+F\@=71I;%\N;R!G;&]B86QS+F\-"B @3T)*3B ]('II<&YO
XM=&4N;R @)"A/0DI5*0T*("!/0DI#(#T@>FEP8VQO86LN;R D*$]"2E4I(&-R
XM>7!T7RYO#0HJ*BHJ*BHJ*BHJ*BHJ*BH**BHJ(#8S+#8Y("HJ*BH*(" ))"A#
XM0RD@+6,@)"A55$E,1DQ!1U,I("1 (&9I;&5I;RYC#0H@( T*("!U=&EL7RYO
XM.B @("!U=&EL+F,@>FEP+F@@>FEP97)R+F@@=&%I;&]R+F@-"B$@"20H0T,I
XM("UC("0H551)3$9,04=3*2 D0"!F:6QE:6\N8PT*(" -"B @8W)Y<'1?+F\Z
XM(" @("!C<GEP="YC('II<"YH#0H@( DD*$-#*2 M8R D*%5424Q&3$%'4RD@
XM)$ @8W)Y<'0N8PT*+2TM(#8S+#8Y("TM+2T*(" ))"A#0RD@+6,@)"A55$E,
XM1DQ!1U,I("1 (&9I;&5I;RYC#0H@( T*("!U=&EL7RYO.B @("!U=&EL+F,@
XM>FEP+F@@>FEP97)R+F@@=&%I;&]R+F@-"B$@"20H0T,I("UC("0H551)3$9,
XM04=3*2 D0"!U=&EL+F,-"B @#0H@(&-R>7!T7RYO.B @(" @8W)Y<'0N8R!Z
XM:7 N: T*(" ))"A#0RD@+6,@)"A55$E,1DQ!1U,I("1 (&-R>7!T+F,-"BHJ
XM*BHJ*BHJ*BHJ*BHJ*@HJ*BH@.#0L.#D@*BHJ*@H@( ED96P@)$ -"B @#0H@
XM('II<'-P;&ET.B D*$]"2E,I#0HA( DD*$Q$*2 D*$Q$1D%'4RD@)"A/0DI3
XM*2 M;R D0 T*(" )86]U=#)E>&4@)$ -"B @"61E;" D0 T*+2TM(#@T+#@Y
XM("TM+2T*(" )9&5L("1 #0H@( T*("!Z:7!S<&QI=#H@)"A/0DI3*0T*(2 )
XM)"A,1"D@)"A,1$9,04=3*2 D*$]"2E,I("UO("1 #0H@( EA;W5T,F5X92 D
XM0 T*(" )9&5L("1 #0ID:69F("UC<B!Z:7 Q.2]O<S(O;W,R>FEP+F,@>FEP
XM,3EP,2]O<S(O;W,R>FEP+F,**BHJ('II<#$Y+V]S,B]O<S)Z:7 N8PE4:'4@
XM075G(#(P(#(P.C S.C$P(#$Y.3(*+2TM('II<#$Y<#$O;W,R+V]S,GII<"YC
XM"5=E9"!!=6<@,C8@,3,Z,#@Z,S0@,3DY,@HJ*BHJ*BHJ*BHJ*BHJ*BH**BHJ
XM(#4X,2PU.3$@*BHJ*@H@(" @(&-A;&QS('1H870@;6%Y(&9A:6PL(&)U="!N
XM;W0@9F]R(&UA;&QO8R@I(&-A;&QS+"!B96-A=7-E('1H97D@87)E(%9%4ED-
XM"B @(" @=6YL:6ME;'D@=&\@9F%I;"X@268@979E<BP@=V4@:G5S="!L96%V
XM92!S;VUE(&UE;6]R>2!A;&QO8V%T960@+BXN("HO#0H@( T*(2 C:68@9&5F
XM:6YE9"A?7T=.54-?7RD@?'P@9&5F:6YE9"A?7TE"34-?7RD-"B @(V1E9FEN
XM92!A;&QO8R!A;&QO8V$-"B @(V5N9&EF#0H@( T*(2 C:69D968@7U]7051#
XM3TU#7U\-"B @(V1E9FEN92!A;&QO8R!M86QL;V,-"B @(V1E9FEN92!?7T92
XM145?7PT*(" C96YD:68-"BTM+2 U.#$L-3DQ("TM+2T*(" @("!C86QL<R!T
XM:&%T(&UA>2!F86EL+"!B=70@;F]T(&9O<B!M86QL;V,H*2!C86QL<RP@8F5C
XM875S92!T:&5Y(&%R92!615)9#0H@(" @('5N;&EK96QY('1O(&9A:6PN($EF
XM(&5V97(L('=E(&IU<W0@;&5A=F4@<V]M92!M96UO<GD@86QL;V-A=&5D("XN
XM+B J+PT*(" -"B$@(VEF(&1E9FEN960H7U]'3E5#7U\I#0H@("-D969I;F4@
XM86QL;V,@86QL;V-A#0H@("-E;F1I9@T*(" -"B$@(VEF(&1E9FEN960H7U]7
XM051#3TU#7U\I('Q\(&1E9FEN960H7U])0DU#7U\I#0H@("-D969I;F4@86QL
XI;V,@;6%L;&]C#0H@("-D969I;F4@7U]&4D5%7U\-"B @(V5N9&EF#0H@
X 
Xend
END_OF_FILE
 if test 4857 -ne `wc -c <'patch1.2.uu'`; then
    echo shar: \"'patch1.2.uu'\" unpacked with wrong size!
  else
    echo shar: Uudecoding \"'patch1.2'\" \(3506 characters\)
    cat patch1.2.uu | uudecode
    if test 3506 -ne `wc -c <'patch1.2'`; then
      echo shar: \"'patch1.2'\" uudecoded with wrong size!
    else
      rm patch1.2.uu
    fi
  fi
  # end of 'patch1.2.uu'
fi
echo shar: End of archive.
exit 0
exit 0 # Just in case...
