diff -Nru unzip-6.0/acorn/acorn.c unzip-6.0/acorn/acorn.c --- unzip-6.0/acorn/acorn.c 2007-12-23 15:49:30.000000000 +0000 +++ unzip-6.0/acorn/acorn.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. @@ -885,31 +885,26 @@ iztimes z_utime; #endif - /* skip restoring time stamps on user's request */ - if (uO.D_flag <= 1) { #ifdef USE_EF_UT_TIME - if (G.extra_field && + if (G.extra_field && #ifdef IZ_CHECK_TZ - G.tz_is_valid && + G.tz_is_valid && #endif - (ef_scan_for_izux(G.extra_field, G.lrec.extra_field_length, 0, - G.lrec.last_mod_dos_datetime, &z_utime, NULL) - & EB_UT_FL_MTIME)) - { - TTrace((stderr, "close_outfile: Unix e.f. modif. time = %ld\n", - z_utime.mtime)); - m_time = z_utime.mtime; - } else + (ef_scan_for_izux(G.extra_field, G.lrec.extra_field_length, 0, + G.lrec.last_mod_dos_datetime, &z_utime, NULL) + & EB_UT_FL_MTIME)) + { + TTrace((stderr, "close_outfile: Unix e.f. modif. time = %ld\n", + z_utime.mtime)); + m_time = z_utime.mtime; + } else #endif /* USE_EF_UT_TIME */ - m_time = dos_to_unix_time(G.lrec.last_mod_dos_datetime); - } + m_time = dos_to_unix_time(G.lrec.last_mod_dos_datetime); - /* set the file's time-stamp and attributes */ + /* set the file's modification time */ SWI_OS_File_5(G.filename, NULL, &loadaddr, NULL, NULL, &attr); - if (uO.D_flag <= 1) - /* set the file's modification time */ - uxtime2acornftime(&execaddr, &loadaddr, m_time); + uxtime2acornftime(&execaddr, &loadaddr, m_time); loadaddr = (loadaddr & 0xfff000ffU) | ((G.pInfo->file_attr&0xfff00000) >> 12); diff -Nru unzip-6.0/acorn/GMakefile unzip-6.0/acorn/GMakefile --- unzip-6.0/acorn/GMakefile 2005-12-30 16:30:34.000000000 +0000 +++ unzip-6.0/acorn/GMakefile 2010-05-14 07:26:14.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile for UnZip, UnZipSFX, ZipInfo and fUnZip (5.53 or later) +# Makefile for UnZip, UnZipSFX, ZipInfo and fUnZip (5.2 or later) # using gcc 2.95.4 (or later). # You may look at for an up-to-date # gcc port. @@ -22,13 +22,13 @@ LFLAGS2 = $(LIB) # object file lists -OBJS1 = o.unzip o.crc32 o.crypt o.envargs o.explode +OBJS1 = o.unzip o.crc32 o.crctab o.crypt o.envargs o.explode OBJS2 = o.extract o.fileio o.globals o.inflate o.list o.match OBJS3 = o.process o.ttyio o.unreduce o.unshrink o.zipinfo OBJS = $(OBJS1) $(OBJS2) $(OBJS3) o.riscos o.swiven o.acorn OBJF = o.funzip o.crc32 o.cryptf o.globalsf o.inflatef o.ttyiof \ o.riscos o.swiven -OBJX = o.unzipsfx o.crc32 o.crypt_ o.extract_ o.fileio_ o.globals_ \ +OBJX = o.unzipsfx o.crc32 o.crctab_ o.crypt_ o.extract_ o.fileio_ o.globals_ \ o.inflate_ o.match_ o.process_ o.ttyio_ o.acorn_ o.swiven o.riscos_ UNZIP_H = h.unzip h.unzpriv h.globals acorn.h.riscos acorn.h.swiven @@ -43,19 +43,21 @@ copy %.unzip %.zipinfo ~CVF # rules for unzip and funzip -o.crc32: c.crc32 $(UNZIP_H) h.zip h.crc32 +o.crc32: c.crc32 $(UNZIP_H) h.zip $(CC) $(CFLAGS) -c c.crc32 -o o.crc32 -o.crypt: c.crypt $(UNZIP_H) h.zip h.crypt h.crc32 h.ttyio +o.crctab: c.crctab $(UNZIP_H) h.zip + $(CC) $(CFLAGS) -c c.crctab -o o.crctab +o.crypt: c.crypt $(UNZIP_H) h.zip h.crypt h.ttyio $(CC) $(CFLAGS) -c c.crypt -o o.crypt o.envargs: c.envargs $(UNZIP_H) $(CC) $(CFLAGS) -c c.envargs -o o.envargs o.explode: c.explode $(UNZIP_H) $(CC) $(CFLAGS) -c c.explode -o o.explode -o.extract: c.extract $(UNZIP_H) h.crc32 h.crypt +o.extract: c.extract $(UNZIP_H) h.crypt $(CC) $(CFLAGS) -c c.extract -o o.extract -o.fileio: c.fileio $(UNZIP_H) h.crc32 h.crypt h.ttyio h.ebcdic +o.fileio: c.fileio $(UNZIP_H) h.crypt h.ttyio h.ebcdic $(CC) $(CFLAGS) -c c.fileio -o o.fileio -o.funzip: c.funzip $(UNZIP_H) h.crc32 h.crypt h.ttyio +o.funzip: c.funzip $(UNZIP_H) h.crypt h.ttyio h.tables $(CC) $(CFLAGS) -c c.funzip -o o.funzip o.globals: c.globals $(UNZIP_H) $(CC) $(CFLAGS) -c c.globals -o o.globals @@ -65,7 +67,7 @@ $(CC) $(CFLAGS) -c c.list -o o.list o.match: c.match $(UNZIP_H) $(CC) $(CFLAGS) -c c.match -o o.match -o.process: c.process $(UNZIP_H) h.crc32 +o.process: c.process $(UNZIP_H) $(CC) $(CFLAGS) -c c.process -o o.process o.ttyio: c.ttyio $(UNZIP_H) h.zip h.crypt h.ttyio $(CC) $(CFLAGS) -c c.ttyio -o o.ttyio @@ -78,11 +80,13 @@ o.zipinfo: c.zipinfo $(UNZIP_H) $(CC) $(CFLAGS) -c c.zipinfo -o o.zipinfo -o.crypt_: c.crypt $(UNZIP_H) h.zip h.crypt h.crc32 h.ttyio +o.crctab_: c.crctab $(UNZIP_H) h.zip + $(CC) $(CFLAGS) -DSFX -c c.crctab -o o.crctab_ +o.crypt_: c.crypt $(UNZIP_H) h.zip h.crypt h.ttyio $(CC) $(CFLAGS) -DSFX -c c.crypt -o o.crypt_ -o.extract_: c.extract $(UNZIP_H) h.crc32 h.crypt +o.extract_: c.extract $(UNZIP_H) h.crypt $(CC) $(CFLAGS) -DSFX -c c.extract -o o.extract_ -o.fileio_: c.fileio $(UNZIP_H) h.crc32 h.crypt h.ttyio h.ebcdic +o.fileio_: c.fileio $(UNZIP_H) h.crypt h.ttyio h.ebcdic $(CC) $(CFLAGS) -DSFX -c c.fileio -o o.fileio_ o.globals_: c.globals $(UNZIP_H) $(CC) $(CFLAGS) -DSFX -c c.globals -o o.globals_ @@ -90,7 +94,7 @@ $(CC) $(CFLAGS) -DSFX -c c.inflate -o o.inflate_ o.match_: c.match $(UNZIP_H) $(CC) $(CFLAGS) -DSFX -c c.match -o o.match_ -o.process_: c.process $(UNZIP_H) h.crc32 +o.process_: c.process $(UNZIP_H) $(CC) $(CFLAGS) -DSFX -c c.process -o o.process_ o.ttyio_: c.ttyio $(UNZIP_H) h.zip h.crypt h.ttyio $(CC) $(CFLAGS) -DSFX -c c.ttyio -o o.ttyio_ @@ -98,7 +102,7 @@ o.unzipsfx: c.unzip $(UNZIP_H) h.crypt h.unzvers h.consts $(CC) $(CFLAGS) -DSFX -c c.unzip -o o.unzipsfx -o.cryptf: c.crypt $(UNZIP_H) h.zip h.crypt h.crc32 h.ttyio +o.cryptf: c.crypt $(UNZIP_H) h.zip h.crypt h.ttyio $(CC) $(CFLAGS) -DFUNZIP -c c.crypt -o o.cryptf o.globalsf: c.globals $(UNZIP_H) $(CC) $(CFLAGS) -DFUNZIP -c c.globals -o o.globalsf diff -Nru unzip-6.0/acorn/makefile unzip-6.0/acorn/makefile --- unzip-6.0/acorn/makefile 2006-12-25 19:42:32.000000000 +0000 +++ unzip-6.0/acorn/makefile 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ -# Makefile for UnZip, UnZipSFX, ZipInfo and fUnZip (5.53 or later) -# last modified: 25 Dec 2006 +# Makefile for UnZip, UnZipSFX, ZipInfo and fUnZip (5.5 or later) +# last modified: 01 Mar 2004 # add -g to CC to debug # add -d to BIND to debug @@ -23,15 +23,14 @@ LFLAGS2 = $(LIB) C:o.Stubs # object file lists -OBJS1 = unzip.o crc32.o crypt.o envargs.o explode.o +OBJS1 = unzip.o crc32.o crctab.o crypt.o envargs.o explode.o OBJS2 = extract.o fileio.o globals.o inflate.o list.o match.o -OBJS3 = process.o ttyio.o ubz2err.o unreduce.o unshrink.o zipinfo.o +OBJS3 = process.o ttyio.o unreduce.o unshrink.o zipinfo.o OBJS = $(OBJS1) $(OBJS2) $(OBJS3) riscos.o swiven.o acorn.o OBJF = funzip.o crc32.o cryptf.o globalsf.o inflatef.o ttyiof.o \ riscos.o swiven.o -OBJX = unzipsfx.o crc32.o crypt_.o extract_.o fileio_.o globals.o \ - inflate.o match.o process_.o ttyio.o ubz2err_.o \ - acorn_.o swiven.o riscos_.o +OBJX = unzipsfx.o crc32.o crctab.o crypt_.o extract_.o fileio_.o globals.o \ + inflate.o match.o process_.o ttyio.o acorn_.o swiven.o riscos_.o UNZIP_H = unzip.h unzpriv.h globals.h acorn/riscos.h acorn/swiven.h @@ -52,46 +51,44 @@ $(ASM) $(ASMFLAGS) -from @*.s -to @*.o # rules for unzip and funzip -crc32.o: crc32.c $(UNZIP_H) zip.h crc32.h -crypt.o: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crc32.o: crc32.c $(UNZIP_H) zip.h +crctab.o: crctab.c $(UNZIP_H) zip.h +crypt.o: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h envargs.o: envargs.c $(UNZIP_H) explode.o: explode.c $(UNZIP_H) -extract.o: extract.c $(UNZIP_H) crc32.h crypt.h -fileio.o: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h -funzip.o: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +extract.o: extract.c $(UNZIP_H) crypt.h +fileio.o: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h +funzip.o: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h globals.o: globals.c $(UNZIP_H) inflate.o: inflate.c inflate.h $(UNZIP_H) list.o: list.c $(UNZIP_H) match.o: match.c $(UNZIP_H) -process.o: process.c $(UNZIP_H) crc32.h +process.o: process.c $(UNZIP_H) ttyio.o: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err.o: ubz2err.c $(UNZIP_H) unreduce.o: unreduce.c $(UNZIP_H) unshrink.o: unshrink.c $(UNZIP_H) unzip.o: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h zipinfo.o: zipinfo.c $(UNZIP_H) -crypt_.o: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crypt_.o: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) $(CFLAGS) -DSFX -c c.crypt -o o.crypt_ -extract_.o: extract.c $(UNZIP_H) crc32.h crypt.h +extract_.o: extract.c $(UNZIP_H) crypt.h $(CC) $(CFLAGS) -DSFX -c c.extract -o o.extract_ -fileio_.o: fileio.c $(UNZIP_H) crc32.h crypt.h +fileio_.o: fileio.c $(UNZIP_H) crypt.h $(CC) $(CFLAGS) -DSFX -c c.fileio -o o.fileio_ globals_.o: globals.c $(UNZIP_H) $(CC) $(CFLAGS) -DFUNZIP -c c.globals -o o.globals_ inflate_.o: inflate.c inflate.h $(UNZIP_H) crypt.h $(CC) $(CFLAGS) -DFUNZIP -c c.inflate -o o.inflate_ -process_.o: process.c $(UNZIP_H) crc32.h +process_.o: process.c $(UNZIP_H) $(CC) $(CFLAGS) -DSFX -c c.process -o o.process_ ttyio_.o: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) $(CFLAGS) -DFUNZIP -c c.ttyio -o o.ttyio_ -ubz2err_.o: ubz2err.c $(UNZIP_H) - $(CC) $(CFLAGS) -DSFX -c c.ubz2err -o o.ubz2err_ unzipsfx.o: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h $(CC) $(CFLAGS) -DSFX -c c.unzip -o o.unzipsfx -o.cryptf: c.crypt $(UNZIP_H) h.zip h.crypt h.crc32 h.ttyio +o.cryptf: c.crypt $(UNZIP_H) h.zip h.crypt h.ttyio $(CC) $(CFLAGS) -DFUNZIP -c c.crypt -o o.cryptf o.globalsf: c.globals $(UNZIP_H) $(CC) $(CFLAGS) -DFUNZIP -c c.globals -o o.globalsf diff -Nru unzip-6.0/amiga/amiga.c unzip-6.0/amiga/amiga.c --- unzip-6.0/amiga/amiga.c 2007-12-23 15:52:22.000000000 +0000 +++ unzip-6.0/amiga/amiga.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. @@ -711,44 +711,41 @@ fclose(G.outfile); - /* skip restoring time stamps on user's request */ - if (uO.D_flag <= 1) { #ifdef USE_EF_UT_TIME - if (G.extra_field && + if (G.extra_field && #ifdef IZ_CHECK_TZ - G.tz_is_valid && + G.tz_is_valid && #endif - (ef_scan_for_izux(G.extra_field, G.lrec.extra_field_length, 0, - G.lrec.last_mod_dos_datetime, &z_utime, NULL) - & EB_UT_FL_MTIME)) - { - TTrace((stderr, "close_outfile: Unix e.f. modif. time = %ld\n", - z_utime.mtime)); - m_time = z_utime.mtime; - } else { - /* Convert DOS time to time_t format */ - m_time = dos_to_unix_time(G.lrec.last_mod_dos_datetime); - } -#else /* !USE_EF_UT_TIME */ + (ef_scan_for_izux(G.extra_field, G.lrec.extra_field_length, 0, + G.lrec.last_mod_dos_datetime, &z_utime, NULL) + & EB_UT_FL_MTIME)) + { + TTrace((stderr, "close_outfile: Unix e.f. modif. time = %ld\n", + z_utime.mtime)); + m_time = z_utime.mtime; + } else { /* Convert DOS time to time_t format */ m_time = dos_to_unix_time(G.lrec.last_mod_dos_datetime); + } +#else /* !USE_EF_UT_TIME */ + /* Convert DOS time to time_t format */ + m_time = dos_to_unix_time(G.lrec.last_mod_dos_datetime); #endif /* ?USE_EF_UT_TIME */ #ifdef DEBUG - Info(slide, 1, ((char *)slide, "\nclose_outfile(): m_time=%s\n", - ctime(&m_time))); + Info(slide, 1, ((char *)slide, "\nclose_outfile(): m_time=%s\n", + ctime(&m_time))); #endif - if (!FileDate(G.filename, &m_time)) - Info(slide, 1, ((char *)slide, - "warning: cannot set the time for %s\n", G.filename)); - } + if (!FileDate(G.filename, &m_time)) + Info(slide, 1, ((char *)slide, + "warning: cannot set the time for %s\n", G.filename)); - /* set file perms after closing (not done at creation)--see mapattr() */ + /* set file perms after closing (not done at creation)--see mapattr() */ chmod(G.filename, G.pInfo->file_attr); - /* give it a filenote from the zipfile comment, if appropriate */ + /* give it a filenote from the zipfile comment, if appropriate */ if (uO.N_flag && G.filenotes[G.filenote_slot]) { SetComment(G.filename, G.filenotes[G.filenote_slot]); diff -Nru unzip-6.0/amiga/amiga.h unzip-6.0/amiga/amiga.h --- unzip-6.0/amiga/amiga.h 2005-04-21 01:03:46.000000000 +0000 +++ unzip-6.0/amiga/amiga.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2005 Info-ZIP. All rights reserved. + Copyright (c) 1990-2001 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. @@ -28,16 +28,6 @@ int mkdir(const char *_name); #endif -/* we only have dinky old-sk00l 32 bit filesystems */ -#ifdef LARGE_FILE_SUPPORT -# undef LARGE_FILE_SUPPORT -#endif - -typedef long zoff_t; -#define ZOFF_T_DEFINED -typedef struct stat z_stat; -#define Z_STAT_DEFINED - #ifdef AZTEC_C /* Manx Aztec C, 5.0 or newer only */ # include # include /* do inline dos.library calls */ @@ -75,9 +65,6 @@ #ifdef __SASC -/* NOTE: SAS/C COMPILATION HAS BEEN UNSUPPORTED THROUGH MANY UNZIP VERSIONS. */ -/* (Which is too bad, because it would probably perform better than Aztec.) */ - /* includes */ # include # include diff -Nru unzip-6.0/amiga/flate.a unzip-6.0/amiga/flate.a --- unzip-6.0/amiga/flate.a 2005-12-30 17:46:18.000000000 +0000 +++ unzip-6.0/amiga/flate.a 2010-05-14 07:26:14.000000000 +0000 @@ -1,12 +1,12 @@ ;=========================================================================== -; Copyright (c) 1990-2005 Info-ZIP. All rights reserved. +; Copyright (c) 1990-2002 Info-ZIP. All rights reserved. ; ; See the accompanying file LICENSE, version 2000-Apr-09 or later ; (the contents of which are also included in unzip.h) for terms of use. ; If, for some reason, all these files are missing, the Info-ZIP license ; also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html ;=========================================================================== -; flate.a created by Paul Kienitz, 20 June 94. Last modified 30 Dec 2005. +; flate.a created by Paul Kienitz, 20 June 94. Last modified 23 Mar 2002. ; ; 68000 assembly language version of inflate_codes(), for Amiga. Prototype: ; @@ -16,6 +16,8 @@ ; Where __GPRO__ expands to "Uz_Globs *G," if REENTRANT is defined, ; otherwise to nothing. In the latter case G is a global variable. ; +; Define the symbol FUNZIP if this is for fUnZip. It overrides REENTRANT. +; ; Define AZTEC to use the Aztec C macro version of getc() instead of the ; library getc() with FUNZIP. AZTEC is ignored if FUNZIP is not defined. ; @@ -27,22 +29,20 @@ ; Define USE_DEFLATE64 if we're supporting Deflate64 decompression. ; ; Do NOT define WSIZE; it is always 32K or 64K depending on USE_DEFLATE64. -; You also do not need to define FUNZIP or SFX, if you create t:G_offs.a -; correctly (see below). ; ; ------ ; -; The following include file is generated from globals.h just before this -; is compiled, and gives us equates that give the offsets in Uz_Globs of -; the fields we use, which are: +; The following include file is generated from globals.h, and gives us equates +; that give the offsets in Uz_Globs of the fields we use, which are: ; ulg bb ; unsigned int bk, wp ; (either array of unsigned char, or pointer to unsigned char) redirslide +; For fUnZip: +; FILE *in ; For regular UnZip but not fUnZip: ; int incnt, mem_mode +; long csize ; uch *inptr -; For fUnZip: -; FILE *in ; It also defines a value SIZEOF_slide, which tells us whether the appropriate ; slide field in G (either area.Slide or redirect_pointer) is a pointer or an ; array instance. It is 4 in the former case and a large value in the latter. @@ -51,7 +51,7 @@ ; globals structure and the functionality of the core decompression routines ; (currently FUNZIP, SFX, REENTRANT, DLL, NO_SLIDE_REDIR, USE_DEFLATE64). - INCLUDE "t:G_offs.a" + INCLUDE "amiga/G_offs.a" ; struct huft is defined as follows: ; @@ -62,7 +62,7 @@ ; ush n; /* literal, length base, or distance base */ ; struct huft *t; /* pointer to next level of table */ ; } v; -; }; /* sizeof(struct huft) == 6, or 8 if padded */ +; }; /* sizeof(struct huft) == 6 */ ; ; The G_offs include defines offsets h_e, h_b, h_v_n, and h_v_t in this ; struct, plus SIZEOF_huft. @@ -258,27 +258,16 @@ ENDC ; ?FUNZIP -; Here are the two bit-grabbing macros, which in their NO_CHECK_EOF form are: +; Here are the two bit-grabbing macros, defined in their NO_CHECK_EOF form: ; ; #define NEEDBITS(n) {while(k<(n)){b|=((ulg)NEXTBYTE)<>=(n);k-=(n);} ; ; Without NO_CHECK_EOF, NEEDBITS reads like this: ; -; {while((int)k<(int)(n)){\ -; int c=NEXTBYTE;if(c==EOF){\ -; if((int)k>=0)break;\ -; retval=1;goto cleanup_and_exit;}\ -; b|=((ulg)c)<=0)break;return 1}; +; b|=((ulg)c)< env:VersionDate "say '""'translate(date('E'), '.', '/')'""'" - $(CC) -o $(O)amiga.o $(CFLAGS) $(VERNUMS) amiga/amiga.c - -$(O)amiga.xo : amiga/filedate.c amiga/stat.c amiga/amiga.c unzvers.h - $(CC) -o $(O)amiga.xo $(CFLAGS) $(VERNUMS) -d SFX amiga/amiga.c - -$(O)amiga.od : amiga/filedate.c amiga/stat.c amiga/amiga.c unzvers.h +amiga/amiga.o : amiga/filedate.c amiga/stat.c amiga/amiga.c unzvers.h rx > env:VersionDate "say '""'translate(date('E'), '.', '/')'""'" - $(CC) -o $(O)amiga.od $(CFLAGD) $(VERNUMS) amiga/amiga.c - -$(O)amiga.xd : amiga/filedate.c amiga/stat.c amiga/amiga.c unzvers.h - $(CC) -o $(O)amiga.xd $(CFLAGD) $(VERNUMS) -d SFX amiga/amiga.c - -$(O)crc_68.o : amiga/crc_68.a - as -n -o $(O)crc_68.o amiga/crc_68.a -# no debug version of crc_68 - -$(O)filedate.fo : amiga/filedate.c - $(CC) -o $(O)filedate.fo -d FUNZIP $(CFLAGS) amiga/filedate.c - -$(O)filedate.fd : amiga/filedate.c - $(CC) -o $(O)filedate.fd -d FUNZIP $(CFLAGD) amiga/filedate.c + $(CC) -o amiga/amiga.o $(CFLAGS) $(VERNUMS) amiga/amiga.c -# The file t:G_offs.a is generated on the fly by programs we compile -# and then run, and then it's included into amiga/flate.a to provide -# definitions for it. There are no debug versions of flate.o. +amiga/amiga.xo : amiga/filedate.c amiga/stat.c amiga/amiga.c unzvers.h + $(CC) -o amiga/amiga.xo $(CFLAGS) $(VERNUMS) -d SFX amiga/amiga.c -$(O)flate.o : amiga/flate.a amiga/gbloffs - amiga/gbloffs > t:G_offs.a - as -n -o $(O)flate.o -eINT16 amiga/flate.a - -@delete t:G_offs.a +amiga/crc_68.o : amiga/crc_68.a + as -n -o amiga/crc_68.o amiga/crc_68.a -$(O)flate.fo : amiga/flate.a amiga/Fgbloffs - amiga/Fgbloffs > t:G_offs.a - as -n -o $(O)flate.fo -eINT16 -eFUNZIP -eAZTEC amiga/flate.a - -@delete t:G_offs.a +amiga/flate.o : amiga/flate.a amiga/gbloffs + amiga/gbloffs > amiga/G_offs.a + as -n -o amiga/flate.o -eINT16 amiga/flate.a -$(O)flate.xo : amiga/flate.a amiga/Xgbloffs - amiga/Xgbloffs > t:G_offs.a - as -n -o $(O)flate.xo -eINT16 -eSFX amiga/flate.a - -@delete t:G_offs.a +amiga/flate.fo : amiga/flate.a amiga/Fgbloffs + amiga/Fgbloffs > amiga/G_offs.a + as -n -o amiga/flate.fo -eINT16 -eAZTEC amiga/flate.a -# Here are the programs that generate different versions of G_offs.a: +amiga/flate.xo : amiga/flate.a amiga/Xgbloffs + amiga/Xgbloffs > amiga/G_offs.a + as -n -o amiga/flate.xo -eINT16 amiga/flate.a amiga/gbloffs : gbloffs.c unzip.h unzpriv.h globals.h amiga/amiga.h crypt.h $(CC) -o t:gbloffs.o $(CFLAGS) gbloffs.c diff -Nru unzip-6.0/amiga/smakefile unzip-6.0/amiga/smakefile --- unzip-6.0/amiga/smakefile 2006-12-25 19:47:52.000000000 +0000 +++ unzip-6.0/amiga/smakefile 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ #=========================================================================== # Makefile for UnZip, ZipInfo, fUnZip, MakeSFX AMIGA SAS/C Version 6.58 -# Version: 5.53 last revised: 25 Dec 06 +# Version: 5.5 last revised: 13 Feb 01 #=========================================================================== # from John Bush # or: @@ -307,15 +307,15 @@ # UnZip Objects -OBJS1 = unzip$(O) crc32$(O) crypt$(O) envargs$(O) explode$(O) +OBJS1 = unzip$(O) crc32$(O) crctab$(O) crypt$(O) envargs$(O) explode$(O) OBJS2 = extract$(O) fileio$(O) globals$(O) list$(O) inflate$(O) match$(O) -OBJS3 = process$(O) ttyio$(O) ubz2err$(O) unreduce$(O) unshrink$(O) zipinfo$(O) +OBJS3 = process$(O) ttyio$(O) unreduce$(O) unshrink$(O) zipinfo$(O) OBJSA = amiga$(O) timezone$(O) OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $(OBJSA) # UnZipSFX Objects OBJX1 = unzip$(OX) extract$(OX) inflate$(OX) match$(OX) process$(OX) -OBJXI = crypt$(OX) crc32$(OX) fileio$(OX) globals$(OX) ttyio$(OX) ubz2err$(OX) +OBJXI = crypt$(OX) crc32$(O) crctab$(OX) fileio$(OX) globals$(OX) ttyio$(OX) OBJXA = amiga$(OX) timezone$(OX) OBJX = $(OBJX1) $(OBJXI) $(OBJXA) @@ -429,20 +429,20 @@ filedate$(O): amiga/filedate.c crypt.h timezone.h api$(O): api.c $(UNZIP_H) unzvers.h #zlib.h apihelp$(O): apihelp.c $(UNZIP_H) unzvers.h -crc32$(O): crc32.c $(UNZIP_H) zip.h crc32.h -crypt$(O): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crc32$(O): crc32.c $(UNZIP_H) zip.h +crctab$(O): crctab.c $(UNZIP_H) zip.h +crypt$(O): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h envargs$(O): envargs.c $(UNZIP_H) explode$(O): explode.c $(UNZIP_H) -extract$(O): extract.c $(UNZIP_H) crc32.h crypt.h -fileio$(O): fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +extract$(O): extract.c $(UNZIP_H) crypt.h +fileio$(O): fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h globals$(O): globals.c $(UNZIP_H) inflate$(O): inflate.c $(UNZIP_H) inflate.h #zlib.h list$(O): list.c $(UNZIP_H) match$(O): match.c $(UNZIP_H) -process$(O): process.c $(UNZIP_H) crc32.h +process$(O): process.c $(UNZIP_H) timezone$(O): timezone.c $(UNZIP_H) zip.h timezone.h ttyio$(O): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err$(O): ubz2err.c $(UNZIP_H) unreduce$(O): unreduce.c $(UNZIP_H) unshrink$(O): unshrink.c $(UNZIP_H) unzip$(O): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h #zlib.h @@ -455,24 +455,23 @@ # special rule for adding Amiga internal version number to UnZipSFX amiga$(OX): amiga/amiga.c amiga/filedate.c amiga/stat.c $(UNZIP_H) crypt.h timezone.h unzip$(OX): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h -crc32$(OX): crc32.c $(UNZIP_H) zip.h crc32.h -crypt$(OX): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h -extract$(OX): extract.c $(UNZIP_H) crc32.h crypt.h -fileio$(OX): fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +crctab$(OX): crctab.c $(UNZIP_H) zip.h +crypt$(OX): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h +extract$(OX): extract.c $(UNZIP_H) crypt.h +fileio$(OX): fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h globals$(OX): globals.c $(UNZIP_H) inflate$(OX): inflate.c $(UNZIP_H) inflate.h #zlib.h match$(OX): match.c $(UNZIP_H) -process$(OX): process.c $(UNZIP_H) crc32.h +process$(OX): process.c $(UNZIP_H) timezone$(OX): timezone.c $(UNZIP_H) zip.h timezone.h ttyio$(OX): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err$(OX): ubz2err.c $(UNZIP_H) # fUnZip dependencies: # -funzip$(O): funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h -crc32$(OF): crc32.c $(UNZIP_H) zip.h crc32.h -crypt$(OF): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +funzip$(O): funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h +crc32$(OF): crc32.c $(UNZIP_H) zip.h +crypt$(OF): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h globals$(OF): globals.c $(UNZIP_H) inflate$(OF): inflate.c $(UNZIP_H) inflate.h crypt.h #zlib.h ttyio$(OF): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h diff -Nru unzip-6.0/aosvs/aosvs.c unzip-6.0/aosvs/aosvs.c --- unzip-6.0/aosvs/aosvs.c 2009-01-11 14:44:08.000000000 +0000 +++ unzip-6.0/aosvs/aosvs.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -237,7 +237,7 @@ /* Function open_outfile() */ /***************************/ -int open_outfile(__G) /* return 1 if fail */ +int open_outfile(__G) /* return 1 if fail */ __GDEF { int errc = 1; /* init to show no success with AOS/VS info */ @@ -332,22 +332,15 @@ /* do it the hard way if no AOS/VS info was stored or if we had problems */ if (errc) { - /* skip restoring time stamps on user's request */ - if (uO.D_flag <= 1) { - dyy = (G.lrec.last_mod_dos_datetime >> 25) + 1980; - dmm = (G.lrec.last_mod_dos_datetime >> 21) & 0x0f; - ddd = (G.lrec.last_mod_dos_datetime >> 16) & 0x1f; - dhh = (G.lrec.last_mod_dos_datetime >> 11) & 0x1f; - dmin = (G.lrec.last_mod_dos_datetime >> 5) & 0x3f; - dss = (G.lrec.last_mod_dos_datetime << 1) & 0x3e; - } + dyy = (G.lrec.last_mod_dos_datetime >> 25) + 1980; + dmm = (G.lrec.last_mod_dos_datetime >> 21) & 0x0f; + ddd = (G.lrec.last_mod_dos_datetime >> 16) & 0x1f; + dhh = (G.lrec.last_mod_dos_datetime >> 11) & 0x1f; + dmin = (G.lrec.last_mod_dos_datetime >> 5) & 0x3f; + dss = (G.lrec.last_mod_dos_datetime << 1) & 0x3e; - if (zvs_create(G.filename, - (uO.D_flag <= 1 - ? (((ulg)dgdate(dmm, ddd, dyy)) << 16) | - (dhh*1800L + dmin*30L + dss/2L) - : -1L), - -1L, -1L, (char *) -1, -1, -1, -1)) + if (zvs_create(G.filename, (((ulg)dgdate(dmm, ddd, dyy)) << 16) | + (dhh*1800L + dmin*30L + dss/2L), -1L, -1L, (char *) -1, -1, -1, -1)) { Info(slide, 0x201, ((char *)slide, "error: %s: cannot create\n", FnFilter1(G.filename))); @@ -661,15 +654,6 @@ *lastsemi = '\0'; } - /* On UNIX (and compatible systems), "." and ".." are reserved for - * directory navigation and cannot be used as regular file names. - * These reserved one-dot and two-dot names are mapped to "_" and "__". - */ - if (strcmp(pathcomp, ".") == 0) - *pathcomp = '_'; - else if (strcmp(pathcomp, "..") == 0) - strcpy(pathcomp, "__"); - #ifdef ACORN_FTYPE_NFS /* translate Acorn filetype information if asked to do so */ if (uO.acorn_nfs_ext && @@ -755,7 +739,6 @@ # define FUNCTION (flag & FN_MASK) - /*--------------------------------------------------------------------------- APPEND_DIR: append the path component to the path being built and check for its existence. If doesn't exist and we are creating directories, do @@ -781,11 +764,10 @@ * within 20 of FILNAMSIZ; then if var set, do careful check when * appending. Clear variable when begin new path. */ - /* next check: need to append '/', at least one-char name, '\0' */ - if ((end-buildpath) > FILNAMSIZ-3) - too_long = TRUE; /* check if extracting dir? */ + if ((end-buildpath) > FILNAMSIZ-3) /* need '/', one-char name, '\0' */ + too_long = TRUE; /* check if extracting directory? */ /* for AOS/VS, try to create so as to not use searchlist: */ - if ( /*SSTAT(buildpath, &G.statbuf)*/ 1) { + if ( /*stat(buildpath, &G.statbuf)*/ 1) { if (!G.create_dirs) { /* told not to create (freshening) */ free(buildpath); return MPN_INF_SKIP; /* path doesn't exist: nothing to do */ @@ -803,11 +785,8 @@ { Info(slide, 1, ((char *)slide, "checkdir error: cannot create %s\n\ - %s\n\ unable to process %s.\n", - FnFilter2(buildpath), - strerror(errno), - FnFilter1(G.filename))); + FnFilter2(buildpath), FnFilter1(G.filename))); free(buildpath); /* path didn't exist, tried to create, failed */ return MPN_ERR_SKIP; @@ -933,7 +912,7 @@ if (tmproot[rootlen-1] == '/') { tmproot[--rootlen] = '\0'; } - if (rootlen > 0 && (SSTAT(tmproot, &G.statbuf) || + if (rootlen > 0 && (stat(tmproot, &G.statbuf) || !S_ISDIR(G.statbuf.st_mode))) { /* path does not exist */ if (!G.create_dirs /* || iswild(tmproot) */ ) { @@ -948,9 +927,8 @@ == -1) { Info(slide, 1, ((char *)slide, - "checkdir: cannot create extraction directory: %s\n\ - %s\n", - FnFilter1(tmproot), strerror(errno))); + "checkdir: cannot create extraction directory: %s\n", + FnFilter1(tmproot))); free(tmproot); rootlen = 0; /* path didn't exist, tried to create, and failed: */ @@ -1000,6 +978,8 @@ __GDEF { + fclose(G.outfile); + /*--------------------------------------------------------------------------- If symbolic links are supported, allocate storage for a symlink control structure, put the uncompressed "data" and other required info in it, and @@ -1010,21 +990,15 @@ #ifdef SYMLINKS if (G.symlnk) { - extent ucsize = (extent)G.lrec.ucsize; - /* size of the symlink entry is the sum of - * (struct size (includes 1st '\0') + 1 additional trailing '\0'), - * system specific attribute data size (might be 0), - * and the lengths of name and link target. - */ - extent slnk_entrysize = (sizeof(slinkentry) + 1) + - ucsize + strlen(G.filename); + unsigned ucsize = (unsigned)G.lrec.ucsize; + extent slnk_entrysize = sizeof(slinkentry) + ucsize + + strlen(G.filename); slinkentry *slnk_entry; - if (slnk_entrysize < ucsize) { + if ((unsigned)slnk_entrysize < ucsize) { Info(slide, 0x201, ((char *)slide, "warning: symbolic link (%s) failed: mem alloc overflow\n", FnFilter1(G.filename))); - fclose(G.outfile); return; } @@ -1032,7 +1006,6 @@ Info(slide, 0x201, ((char *)slide, "warning: symbolic link (%s) failed: no mem\n", FnFilter1(G.filename))); - fclose(G.outfile); return; } slnk_entry->next = NULL; @@ -1042,10 +1015,11 @@ slnk_entry->fname = slnk_entry->target + ucsize + 1; strcpy(slnk_entry->fname, G.filename); - /* move back to the start of the file to re-read the "link data" */ - rewind(G.outfile); + /* reopen the "link data" file for reading */ + G.outfile = fopen(G.filename, FOPR); - if (fread(slnk_entry->target, 1, ucsize, G.outfile) != ucsize) + if (!G.outfile || + fread(slnk_entry->target, 1, ucsize, G.outfile) != (int)ucsize) { Info(slide, 0x201, ((char *)slide, "warning: symbolic link (%s) failed\n", @@ -1069,8 +1043,6 @@ } #endif /* SYMLINKS */ - fclose(G.outfile); - /*--------------------------------------------------------------------------- Change the file permissions from default ones to those stored in the zipfile. diff -Nru unzip-6.0/aosvs/make_unz.cli unzip-6.0/aosvs/make_unz.cli --- unzip-6.0/aosvs/make_unz.cli 2006-12-25 19:48:24.000000000 +0000 +++ unzip-6.0/aosvs/make_unz.cli 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ push prompt pop searchlist :c_4.10 :c_4.10:lang_rt [!searchlist] -cc/link/NOUNX/NOSEA SYSV/DEFINE TERMIO/DEFINE AOS_VS/DEFINE=1 PROTO/DEFINE S_IFLNK/DEFINE=0120000 TIME.H/INCLUDE .c +cc/link/NOUNX/NOSEA SYSV/DEFINE TERMIO/DEFINE AOS_VS/DEFINE=1 PROTO/DEFINE S_IFLNK/DEFINE=0120000 TIME.H/INCLUDE .c pop diff -Nru unzip-6.0/api.c unzip-6.0/api.c --- unzip-6.0/api.c 2009-02-28 15:51:14.000000000 +0000 +++ unzip-6.0/api.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2004 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -13,8 +13,8 @@ This module supplies an UnZip engine for use directly from C/C++ programs. The functions are: - ZCONST UzpVer *UzpVersion(void); - unsigned UzpVersion2(UzpVer2 *version) + UzpVer *UzpVersion(void); + void UzpVersion2(UzpVer2 *version) int UzpMain(int argc, char *argv[]); int UzpAltMain(int argc, char *argv[], UzpInit *init); int UzpValidate(char *archive, int AllCodes); @@ -39,6 +39,7 @@ # define INCL_DOSMEMMGR # include #endif +#include #define UNZIP_INTERNAL #include "unzip.h" @@ -50,7 +51,6 @@ # endif #endif #include "unzvers.h" -#include #ifdef DLL /* This source file supplies DLL-only interface code. */ @@ -63,64 +63,53 @@ ---------------------------------------------------------------------------*/ -ZCONST UzpVer * UZ_EXP UzpVersion() /* returns pointer to const struct */ +UzpVer * UZ_EXP UzpVersion() /* should be pointer to const struct */ { - static ZCONST UzpVer version = { /* doesn't change between calls */ - /* structure size */ - UZPVER_LEN, - /* version flags */ + static UzpVer version; /* doesn't change between calls */ + + + version.structlen = UZPVER_LEN; + #ifdef BETA -# ifdef ZLIB_VERSION - 3, -# else - 1, -# endif + version.flag = 1; #else -# ifdef ZLIB_VERSION - 2, -# else - 0, -# endif -#endif - /* betalevel and date strings */ - UZ_BETALEVEL, UZ_VERSION_DATE, - /* zlib_version string */ + version.flag = 0; +#endif + version.betalevel = UZ_BETALEVEL; + version.date = UZ_VERSION_DATE; + #ifdef ZLIB_VERSION - ZLIB_VERSION, + version.zlib_version = ZLIB_VERSION; + version.flag |= 2; #else - NULL, + version.zlib_version = NULL; #endif - /*== someday each of these may have a separate patchlevel: ==*/ - /* unzip version */ - {UZ_MAJORVER, UZ_MINORVER, UZ_PATCHLEVEL, 0}, - /* zipinfo version */ - {ZI_MAJORVER, ZI_MINORVER, UZ_PATCHLEVEL, 0}, - /* os2dll version (retained for backward compatibility) */ - {UZ_MAJORVER, UZ_MINORVER, UZ_PATCHLEVEL, 0}, - /* windll version (retained for backward compatibility)*/ - {UZ_MAJORVER, UZ_MINORVER, UZ_PATCHLEVEL, 0}, -#ifdef OS2DLL - /* os2dll API minimum compatible version*/ - {UZ_OS2API_COMP_MAJOR, UZ_OS2API_COMP_MINOR, UZ_OS2API_COMP_REVIS, 0} -#else /* !OS2DLL */ -#ifdef WINDLL - /* windll API minimum compatible version*/ - {UZ_WINAPI_COMP_MAJOR, UZ_WINAPI_COMP_MINOR, UZ_WINAPI_COMP_REVIS, 0} -#else /* !WINDLL */ - /* generic DLL API minimum compatible version*/ - {UZ_GENAPI_COMP_MAJOR, UZ_GENAPI_COMP_MINOR, UZ_GENAPI_COMP_REVIS, 0} -#endif /* ?WINDLL */ -#endif /* ?OS2DLL */ - }; + + /* someday each of these may have a separate patchlevel: */ + version.unzip.major = UZ_MAJORVER; + version.unzip.minor = UZ_MINORVER; + version.unzip.patchlevel = UZ_PATCHLEVEL; + + version.zipinfo.major = ZI_MAJORVER; + version.zipinfo.minor = ZI_MINORVER; + version.zipinfo.patchlevel = UZ_PATCHLEVEL; + + /* these are retained for backward compatibility only: */ + version.os2dll.major = UZ_MAJORVER; + version.os2dll.minor = UZ_MINORVER; + version.os2dll.patchlevel = UZ_PATCHLEVEL; + + version.windll.major = UZ_MAJORVER; + version.windll.minor = UZ_MINORVER; + version.windll.patchlevel = UZ_PATCHLEVEL; return &version; } -unsigned UZ_EXP UzpVersion2(UzpVer2 *version) +void UZ_EXP UzpVersion2(UzpVer2 *version) { - if (version->structlen != sizeof(UzpVer2)) - return sizeof(UzpVer2); + version->structlen = UZPVER_LEN; #ifdef BETA version->flag = 1; @@ -159,26 +148,6 @@ version->windll.major = UZ_MAJORVER; version->windll.minor = UZ_MINORVER; version->windll.patchlevel = UZ_PATCHLEVEL; - -#ifdef OS2DLL - /* os2dll API minimum compatible version*/ - version->dllapimin.major = UZ_OS2API_COMP_MAJOR; - version->dllapimin.minor = UZ_OS2API_COMP_MINOR; - version->dllapimin.patchlevel = UZ_OS2API_COMP_REVIS; -#else /* !OS2DLL */ -#ifdef WINDLL - /* windll API minimum compatible version*/ - version->dllapimin.major = UZ_WINAPI_COMP_MAJOR; - version->dllapimin.minor = UZ_WINAPI_COMP_MINOR; - version->dllapimin.patchlevel = UZ_WINAPI_COMP_REVIS; -#else /* !WINDLL */ - /* generic DLL API minimum compatible version*/ - version->dllapimin.major = UZ_GENAPI_COMP_MAJOR; - version->dllapimin.minor = UZ_GENAPI_COMP_MINOR; - version->dllapimin.patchlevel = UZ_GENAPI_COMP_REVIS; -#endif /* ?WINDLL */ -#endif /* ?OS2DLL */ - return 0; } @@ -388,11 +357,6 @@ int r; char *incname[2]; - if ((zip == NULL) || (strlen(zip) > ((WSIZE>>2) - 160))) - return PK_PARAM; - if ((file == NULL) || (strlen(file) > ((WSIZE>>2) - 160))) - return PK_PARAM; - G.process_all_files = FALSE; G.extract_flag = TRUE; uO.qflag = 2; @@ -413,19 +377,10 @@ #endif /* !SFX */ -/* - With the advent of 64 bit support, for now I am assuming that - if the size of the file is greater than an unsigned long, there - will simply not be enough memory to handle it, and am returning - FALSE. -*/ + int redirect_outfile(__G) __GDEF { -#ifdef ZIP64_SUPPORT - __int64 check_conversion; -#endif - if (G.redirect_size != 0 || G.redirect_buffer != NULL) return FALSE; @@ -434,27 +389,15 @@ #endif #if (lenEOL != 1) if (G.pInfo->textmode) { - G.redirect_size = (ulg)(G.lrec.ucsize * lenEOL); + G.redirect_size = G.lrec.ucsize * lenEOL; if (G.redirect_size < G.lrec.ucsize) - G.redirect_size = (ulg)((G.lrec.ucsize > (ulg)-2L) ? - G.lrec.ucsize : -2L); -#ifdef ZIP64_SUPPORT - check_conversion = G.lrec.ucsize * lenEOL; -#endif + G.redirect_size = ((G.lrec.ucsize > (ulg)-2L) ? + G.lrec.ucsize : (ulg)-2L); } else #endif { - G.redirect_size = (ulg)G.lrec.ucsize; -#ifdef ZIP64_SUPPORT - check_conversion = (__int64)G.lrec.ucsize; -#endif + G.redirect_size = G.lrec.ucsize; } - -#ifdef ZIP64_SUPPORT - if ((__int64)G.redirect_size != check_conversion) - return FALSE; -#endif - #ifdef __16BIT__ if ((ulg)((extent)G.redirect_size) != G.redirect_size) return FALSE; @@ -524,7 +467,7 @@ Parameters: archive = archive name file = file contained in the archive. This cannot be - a wildcard to be meaningful + a wild card to be meaningful pattern = string to search for cmd = 0 - case-insensitive search 1 - case-sensitve search @@ -646,40 +589,32 @@ uO.qflag = 2; /* turn off all messages */ G.fValidate = TRUE; G.pfnames = (char **)&fnames[0]; /* assign default filename vector */ +#ifdef WINDLL + Wiz_NoPrinting(TRUE); +#endif if (archive == NULL) { /* something is screwed up: no filename */ DESTROYGLOBALS(); - retcode = PK_NOZIP; - goto exit_retcode; - } - - if (strlen(archive) >= FILNAMSIZ) { - /* length of supplied archive name exceed the system's filename limit */ - DESTROYGLOBALS(); - retcode = PK_PARAM; - goto exit_retcode; + return PK_NOZIP; } - G.wildzipfn = (char *)malloc(FILNAMSIZ); + G.wildzipfn = (char *)malloc(FILNAMSIZ + 1); strcpy(G.wildzipfn, archive); #if (defined(WINDLL) && !defined(CRTL_CP_IS_ISO)) _ISO_INTERN(G.wildzipfn); #endif -#ifdef WINDLL - Wiz_NoPrinting(TRUE); -#endif - G.process_all_files = TRUE; /* for speed */ - if (setjmp(dll_error_return) != 0) { + retcode = setjmp(dll_error_return); + + if (retcode) { #ifdef WINDLL Wiz_NoPrinting(FALSE); #endif free(G.wildzipfn); DESTROYGLOBALS(); - retcode = PK_BADERR; - goto exit_retcode; + return PK_BADERR; } retcode = process_zipfiles(__G); @@ -699,7 +634,6 @@ PK_FIND, IZ_UNSUP as well as PK_ERR */ -exit_retcode: if (AllCodes) return retcode; diff -Nru unzip-6.0/atari/atari.c unzip-6.0/atari/atari.c --- unzip-6.0/atari/atari.c 2008-08-20 01:11:42.000000000 +0000 +++ unzip-6.0/atari/atari.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2008 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. @@ -172,12 +172,8 @@ int mapattr(__G) __GDEF { - int r; ulg tmp = G.crec.external_file_attributes; - G.pInfo->file_attr = 0; - /* initialized to 0 for check in "default" branch below... */ - switch (G.pInfo->hostnum) { case AMIGA_: tmp = (unsigned)(tmp>>17 & 7); /* Amiga RWE bits */ @@ -198,27 +194,29 @@ case BEOS_: case QDOS_: case TANDEM_: - r = FALSE; G.pInfo->file_attr = (unsigned)(tmp >> 16); - if (G.pInfo->file_attr == 0 && G.extra_field) { + if (G.pInfo->file_attr != 0 || !G.extra_field) { + return 0; + } else { /* Some (non-Info-ZIP) implementations of Zip for Unix and - * VMS (and probably others ??) leave 0 in the upper 16-bit - * part of the external_file_attributes field. Instead, they - * store file permission attributes in some extra field. - * As a work-around, we search for the presence of one of - * these extra fields and fall back to the MSDOS compatible - * part of external_file_attributes if one of the known - * e.f. types has been detected. - * Later, we might implement extraction of the permission - * bits from the VMS extra field. But for now, the work-around - * should be sufficient to provide "readable" extracted files. - * (For ASI Unix e.f., an experimental remap of the e.f. - * mode value IS already provided!) + VMS (and probably others ??) leave 0 in the upper 16-bit + part of the external_file_attributes field. Instead, they + store file permission attributes in some extra field. + As a work-around, we search for the presence of one of + these extra fields and fall back to the MSDOS compatible + part of external_file_attributes if one of the known + e.f. types has been detected. + Later, we might implement extraction of the permission + bits from the VMS extra field. But for now, the work-around + should be sufficient to provide "readable" extracted files. + (For ASI Unix e.f., an experimental remap of the e.f. + mode value IS already provided!) */ ush ebID; unsigned ebLen; uch *ef = G.extra_field; unsigned ef_len = G.crec.extra_field_length; + int r = FALSE; while (!r && ef_len >= EB_HEADSIZE) { ebID = makeword(ef); @@ -245,17 +243,8 @@ ef_len -= (ebLen + EB_HEADSIZE); ef += (ebLen + EB_HEADSIZE); } - } - if (!r) { -#ifdef SYMLINKS - /* Check if the file is a (POSIX-compatible) symbolic link. - * We restrict symlink support to those "made-by" hosts that - * are known to support symbolic links. - */ - G.pInfo->symlink = S_ISLNK(G.pInfo->file_attr) && - SYMLINK_HOST(G.pInfo->hostnum); -#endif - return 0; + if (!r) + return 0; } /* fall through! */ /* all remaining cases: expand MSDOS read-only bit into write perms */ @@ -284,19 +273,11 @@ } /* read-only bit --> write perms; subdir bit --> dir exec bit */ tmp = !(tmp & 1) << 1 | (tmp & 0x10) >> 4; - if ((G.pInfo->file_attr & 0700) == (unsigned)(0400 | tmp<<6)) { + if ((G.pInfo->file_attr & 0700) == (unsigned)(0400 | tmp<<6)) /* keep previous G.pInfo->file_attr setting, when its "owner" * part appears to be consistent with DOS attribute flags! */ -#ifdef SYMLINKS - /* Entries "made by FS_FAT_" could have been zipped on a - * system that supports POSIX-style symbolic links. - */ - G.pInfo->symlink = S_ISLNK(G.pInfo->file_attr) && - (G.pInfo->hostnum == FS_FAT_); -#endif return 0; - } G.pInfo->file_attr = (unsigned)(0444 | tmp<<6 | tmp<<3 | tmp); break; } /* end switch (host-OS-created-by) */ @@ -462,15 +443,6 @@ *lastsemi = '\0'; } - /* On UNIX (and compatible systems), "." and ".." are reserved for - * directory navigation and cannot be used as regular file names. - * These reserved one-dot and two-dot names are mapped to "_" and "__". - */ - if (strcmp(pathcomp, ".") == 0) - *pathcomp = '_'; - else if (strcmp(pathcomp, "..") == 0) - strcpy(pathcomp, "__"); - #ifdef ACORN_FTYPE_NFS /* translate Acorn filetype information if asked to do so */ if (uO.acorn_nfs_ext && @@ -803,6 +775,8 @@ #endif ztimbuf tp; + fclose(G.outfile); + /*--------------------------------------------------------------------------- If symbolic links are supported, allocate storage for a symlink control structure, put the uncompressed "data" and other required info in it, and @@ -819,21 +793,15 @@ * link fails? */ if (G.symlnk) { - extent ucsize = (extent)G.lrec.ucsize; - /* size of the symlink entry is the sum of - * (struct size (includes 1st '\0') + 1 additional trailing '\0'), - * system specific attribute data size (might be 0), - * and the lengths of name and link target. - */ - extent slnk_entrysize = (sizeof(slinkentry) + 1) + - ucsize + strlen(G.filename); + unsigned ucsize = (unsigned)G.lrec.ucsize; + extent slnk_entrysize = sizeof(slinkentry) + ucsize + + strlen(G.filename); slinkentry *slnk_entry; - if (slnk_entrysize < ucsize) { + if ((unsigned)slnk_entrysize < ucsize) { Info(slide, 0x201, ((char *)slide, "warning: symbolic link (%s) failed: mem alloc overflow\n", FnFilter1(G.filename))); - fclose(G.outfile); return; } @@ -841,7 +809,6 @@ Info(slide, 0x201, ((char *)slide, "warning: symbolic link (%s) failed: no mem\n", FnFilter1(G.filename))); - fclose(G.outfile); return; } slnk_entry->next = NULL; @@ -851,10 +818,11 @@ slnk_entry->fname = slnk_entry->target + ucsize + 1; strcpy(slnk_entry->fname, G.filename); - /* move back to the start of the file to re-read the "link data" */ - rewind(G.outfile); + /* reopen the "link data" file for reading */ + G.outfile = fopen(G.filename, FOPR); - if (fread(slnk_entry->target, 1, ucsize, G.outfile) != ucsize) + if (!G.outfile || + fread(slnk_entry->target, 1, ucsize, G.outfile) != (int)ucsize) { Info(slide, 0x201, ((char *)slide, "warning: symbolic link (%s) failed\n", @@ -877,8 +845,6 @@ return; } - fclose(G.outfile); - /*--------------------------------------------------------------------------- Convert from MSDOS-format local time and date to Unix-format 32-bit GMT time: adjust base year from 1980 to 1970, do usual conversions from @@ -886,50 +852,41 @@ light savings time differences. ---------------------------------------------------------------------------*/ - /* skip restoring time stamps on user's request */ - if (uO.D_flag <= 1) { #ifdef USE_EF_UT_TIME - eb_izux_flg = (G.extra_field + eb_izux_flg = (G.extra_field #ifdef IZ_CHECK_TZ - && G.tz_is_valid + && G.tz_is_valid #endif - ? ef_scan_for_izux(G.extra_field, - G.lrec.extra_field_length, 0, - G.lrec.last_mod_dos_datetime, &zt, NULL) - : 0); - if (eb_izux_flg & EB_UT_FL_MTIME) { - tp.modtime = zt.mtime; - TTrace((stderr, - "\nclose_outfile: Unix e.f. modif. time = %ld\n", - tp.modtime)); - } else { - tp.modtime = dos_to_unix_time(G.lrec.last_mod_dos_datetime); - } - if (eb_izux_flg & EB_UT_FL_ATIME) { - tp.actime = zt.atime; - TTrace((stderr, - "close_outfile: Unix e.f. access time = %ld\n", - tp.actime)); - } else { - tp.actime = tp.modtime; - TTrace((stderr, - "\nclose_outfile: modification/access times = %ld\n", - tp.modtime)); - } -#else /* !USE_EF_UT_TIME */ - tp.actime = tp.modtime - = dos_to_unix_time(G.lrec.last_mod_dos_datetime); - + ? ef_scan_for_izux(G.extra_field, G.lrec.extra_field_length, + 0, G.lrec.last_mod_dos_datetime, &zt, NULL) + : 0); + if (eb_izux_flg & EB_UT_FL_MTIME) { + tp.modtime = zt.mtime; + TTrace((stderr, "\nclose_outfile: Unix e.f. modif. time = %ld\n", + tp.modtime)); + } else { + tp.modtime = dos_to_unix_time(G.lrec.last_mod_dos_datetime); + } + if (eb_izux_flg & EB_UT_FL_ATIME) { + tp.actime = zt.atime; + TTrace((stderr, "close_outfile: Unix e.f. access time = %ld\n", + tp.actime)); + } else { + tp.actime = tp.modtime; TTrace((stderr, "\nclose_outfile: modification/access times = %ld\n", tp.modtime)); + } +#else /* !USE_EF_UT_TIME */ + tp.actime = tp.modtime = dos_to_unix_time(G.lrec.last_mod_dos_datetime); + + TTrace((stderr, "\nclose_outfile: modification/access times = %ld\n", + tp.modtime)); #endif /* ?USE_EF_UT_TIME */ - /* set the file's access and modification times */ - if (utime(G.filename, &tp)) - Info(slide, 0x201, ((char *)slide, - "warning: cannot set the time for %s\n", - FnFilter1(G.filename))); - } + /* set the file's access and modification times */ + if (utime(G.filename, &tp)) + Info(slide, 0x201, ((char *)slide, + "warning: cannot set the time for %s\n", FnFilter1(G.filename))); /*--------------------------------------------------------------------------- Change the file permissions from default ones to those stored in the @@ -938,7 +895,7 @@ #ifndef NO_CHMOD if (chmod(G.filename, 0xffff & G.pInfo->file_attr)) - perror("chmod (file attributes) error"); + perror("chmod (file attributes) error"); #endif } /* end function close_outfile() */ diff -Nru unzip-6.0/atari/Makefile unzip-6.0/atari/Makefile --- unzip-6.0/atari/Makefile 2006-12-25 19:50:18.000000000 +0000 +++ unzip-6.0/atari/Makefile 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ #============================================================================== # Makefile for UnZip, UnZipSFX and fUnZip: Atari ("real" makes only) -# Version: 5.53 25 December 2006 +# Version: 5.5 13 February 2001 #============================================================================== @@ -54,14 +54,14 @@ SHELL = /bin/sh # object files -OBJS1 = unzip$O crc32$O crypt$O envargs$O explode$O +OBJS1 = unzip$O crc32$O crctab$O crypt$O envargs$O explode$O OBJS2 = extract$O fileio$O globals$O inflate$O list$O match$O -OBJS3 = process$O ttyio$O ubz2err$O unreduce$O unshrink$O zipinfo$O +OBJS3 = process$O ttyio$O unreduce$O unshrink$O zipinfo$O OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $M$O LOBJS = $(OBJS) OBJSDLL = $(OBJS) api$O -OBJX = unzipsfx$O crc32$O crypt_$O extract_$O fileio_$O \ - globals_$O inflate_$O match_$O process_$O ttyio_$O ubz2err_$O $M_$O +OBJX = unzipsfx$O crc32$O crctab_$O crypt_$O extract_$O fileio_$O \ + globals_$O inflate_$O match_$O process_$O ttyio_$O $M_$O LOBJX = $(OBJX) OBJF = funzip$O crc32$O cryptf$O globalsf$O inflatef$O ttyiof$O #OBJS_OS2 = $(OBJS1:.o=.obj) $(OBJS2:.o=.obj) os2.obj @@ -125,102 +125,98 @@ $(LD) $(FL) $(OBJF) $(FL2) -crc32$O: crc32.c $(UNZIP_H) zip.h crc32.h -crypt$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crc32$O: crc32.c $(UNZIP_H) zip.h +crctab$O: crctab.c $(UNZIP_H) zip.h +crypt$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h envargs$O: envargs.c $(UNZIP_H) explode$O: explode.c $(UNZIP_H) -extract$O: extract.c $(UNZIP_H) crc32.h crypt.h -fileio$O: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h -funzip$O: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +extract$O: extract.c $(UNZIP_H) crypt.h +fileio$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h +funzip$O: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h globals$O: globals.c $(UNZIP_H) inflate$O: inflate.c inflate.h $(UNZIP_H) list$O: list.c $(UNZIP_H) match$O: match.c $(UNZIP_H) -process$O: process.c $(UNZIP_H) crc32.h +process$O: process.c $(UNZIP_H) ttyio$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err$O: ubz2err.c $(UNZIP_H) unreduce$O: unreduce.c $(UNZIP_H) unshrink$O: unshrink.c $(UNZIP_H) unzip$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h zipinfo$O: zipinfo.c $(UNZIP_H) -# unzipsfx only -crypt_$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crctab_$O: crctab.c $(UNZIP_H) zip.h # unzipsfx only + $(CP) crctab.c crctab_.c + $(CC) -c $(CF) -DSFX crctab_.c + $(RM) crctab_.c + +crypt_$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only $(CP) crypt.c crypt_.c $(CC) -c $(CF) -DSFX crypt_.c $(RM) crypt_.c -extract_$O: extract.c $(UNZIP_H) crc32.h crypt.h +extract_$O: extract.c $(UNZIP_H) crypt.h # unzipsfx only $(CP) extract.c extract_.c $(CC) -c $(CF) -DSFX extract_.c $(RM) extract_.c -fileio_$O: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +fileio_$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h # unzipsfx only $(CP) fileio.c fileio_.c $(CC) -c $(CF) -DSFX fileio_.c $(RM) fileio_.c -globals_$O: globals.c $(UNZIP_H) +globals_$O: globals.c $(UNZIP_H) # unzipsfx only $(CP) globals.c globals_.c $(CC) -c $(CF) -DSFX globals_.c $(RM) globals_.c -inflate_$O: inflate.c inflate.h $(UNZIP_H) crypt.h +inflate_$O: inflate.c inflate.h $(UNZIP_H) crypt.h # unzipsfx only $(CP) inflate.c inflate_.c $(CC) -c $(CF) -DSFX inflate_.c $(RM) inflate_.c -match_$O: match.c $(UNZIP_H) - $(CP) match.c match_.c - $(CC) -c $(CF) -DSFX match_.c - $(RM) match_.c - -process_$O: process.c $(UNZIP_H) crc32.h +process_$O: process.c $(UNZIP_H) # unzipsfx only $(CP) process.c process_.c $(CC) -c $(CF) -DSFX process_.c $(RM) process_.c -ttyio_$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +match_$O: match.c $(UNZIP_H) # unzipsfx only + $(CP) match.c match_.c + $(CC) -c $(CF) -DSFX match_.c + $(RM) match_.c + +ttyio_$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only $(CP) ttyio.c ttyio_.c $(CC) -c $(CF) -DSFX ttyio_.c $(RM) ttyio_.c -ubz2err$O: ubz2err.c $(UNZIP_H) - $(CP) ubz2err.c ubz2err_.c - $(CC) -c $(CF) -DSFX ubz2err_.c - $(RM) ubz2err_.c - -unzipsfx$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h +unzipsfx$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h # unzipsfx only $(CP) unzip.c unzipsfx.c $(CC) -c $(CF) -DSFX unzipsfx.c $(RM) unzipsfx.c -# funzip only -cryptf$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +cryptf$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only $(CP) crypt.c cryptf.c $(CC) -c $(CF) -DFUNZIP cryptf.c $(RM) cryptf.c -globalsf$O: globals.c $(UNZIP_H) +globalsf$O: globals.c $(UNZIP_H) # funzip only $(CP) globals.c globalsf.c $(CC) -c $(CF) -DFUNZIP globalsf.c $(RM) globalsf.c -inflatef$O: inflate.c inflate.h $(UNZIP_H) crypt.h +inflatef$O: inflate.c inflate.h $(UNZIP_H) crypt.h # funzip only $(CP) inflate.c inflatef.c $(CC) -c $(CF) -DFUNZIP inflatef.c $(RM) inflatef.c -ttyiof$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +ttyiof$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only $(CP) ttyio.c ttyiof.c $(CC) -c $(CF) -DFUNZIP ttyiof.c $(RM) ttyiof.c - -# system-specific code atari$O: atari/atari.c $(UNZIP_H) - $(CC) -c $(CF) atari/atari.c + $(CC) -c $(CF) -DSFX atari/atari.c atari_$O: atari/atari.c $(UNZIP_H) $(CP) atari/atari.c atari_.c diff -Nru unzip-6.0/atari/Makefile.old unzip-6.0/atari/Makefile.old --- unzip-6.0/atari/Makefile.old 2006-12-25 19:52:12.000000000 +0000 +++ unzip-6.0/atari/Makefile.old 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ #============================================================================== -# Makefile for UnZip, UnZipSFX and fUnZip: Atari ST Chris Herborth -# Version: UnZip 5.20+, MiNT, GNU C 25 December 2006 +# Makefile for UnZip, UnZipSFX & fUnZip: Atari ST Chris Herborth +# Version: UnZip 5.20+, MiNT, GNU C 13 February 2001 #============================================================================== # Based on the original unix Makefile and modified by Chris Herborth @@ -49,13 +49,13 @@ SHELL = /bin/sh # object files -OBJS1 = unzip$O crc32$O crypt$O envargs$O explode$O +OBJS1 = unzip$O crc32$O crctab$O crypt$O envargs$O explode$O OBJS2 = extract$O fileio$O globals$O inflate$O list$O match$O -OBJS3 = process$O ttyio$O ubz2err$O unreduce$O unshrink$O zipinfo$O +OBJS3 = process$O ttyio$O unreduce$O unshrink$O zipinfo$O OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $M$O LOBJS = $(OBJS) -OBJX = unzipsfx$O crc32$O crypt_$O extract_$O fileio_$O \ - globals_$O inflate_$O match_$O process_$O ttyio_$O ubz2err_$O $M_$O +OBJX = unzipsfx$O crc32$O crctab_$O crypt_$O extract_$O fileio_$O \ + globals_$O inflate_$O match_$O process_$O ttyio_$O $M_$O OBJF = funzip$O crc32$O cryptf$O globalsf$O inflatef$O ttyiof$O UNZIP_H = unzip.h unzpriv.h globals.h @@ -126,37 +126,41 @@ $(LN) unzip$E zipinfo$E -crc32$O: crc32.c $(UNZIP_H) zip.h crc32.h -crypt$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crc32$O: crc32.c $(UNZIP_H) zip.h +crctab$O: crctab.c $(UNZIP_H) zip.h +crypt$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h envargs$O: envargs.c $(UNZIP_H) explode$O: explode.c $(UNZIP_H) -extract$O: extract.c $(UNZIP_H) crc32.h crypt.h -fileio$O: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h -funzip$O: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +extract$O: extract.c $(UNZIP_H) crypt.h +fileio$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h +funzip$O: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h globals$O: globals.c $(UNZIP_H) inflate$O: inflate.c inflate.h $(UNZIP_H) list$O: list.c $(UNZIP_H) match$O: match.c $(UNZIP_H) -process$O: process.c $(UNZIP_H) crc32.h +process$O: process.c $(UNZIP_H) ttyio$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err$O: ubz2err.c $(UNZIP_H) unreduce$O: unreduce.c $(UNZIP_H) unshrink$O: unshrink.c $(UNZIP_H) unzip$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h zipinfo$O: zipinfo.c $(UNZIP_H) -# unzipsfx only -crypt_$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crctab_$O: crctab.c $(UNZIP_H) zip.h + $(CP) crctab.c crctab_.c + $(CC) -c $(CF) $(XC) crctab_.c + $(RM) crctab_.c + +crypt_$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only $(CP) crypt.c crypt_.c $(CC) -c $(CF) $(XC) crypt_.c $(RM) crypt_.c -extract_$O: extract.c $(UNZIP_H) crc32.h crypt.h +extract_$O: extract.c $(UNZIP_H) crypt.h # unzipsfx only $(CP) extract.c extract_.c $(CC) -c $(CF) $(XC) extract_.c $(RM) extract_.c -fileio_$O: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +fileio_$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h $(CP) fileio.c fileio_.c $(CC) -c $(CF) $(XC) fileio_.c $(RM) fileio_.c @@ -166,7 +170,7 @@ $(CC) -c $(CF) $(XC) globals_.c $(RM) globals_.c -inflate_$O: inflate.c inflate.h $(UNZIP_H) crypt.h +inflate_$O: inflate.c inflate.h $(UNZIP_H) crypt.h # unzipsfx only $(CP) inflate.c inflate_.c $(CC) -c $(CF) $(XC) inflate_.c $(RM) inflate_.c @@ -176,54 +180,48 @@ $(CC) -c $(CF) $(XC) match_.c $(RM) match_.c -process_$O: process.c $(UNZIP_H) crc32.h +process_$O: process.c $(UNZIP_H) # unzipsfx only $(CP) process.c process_.c $(CC) -c $(CF) $(XC) process_.c $(RM) process_.c -ttyio_$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +ttyio_$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only $(CP) ttyio.c ttyio_.c $(CC) -c $(CF) $(XC) ttyio_.c $(RM) ttyio_.c -ubz2err_$O: ubz2err.c $(UNZIP_H) - $(CP) ubz2err.c ubz2err_.c - $(CC) -c $(CF) $(XC) ubz2err_.c - $(RM) ubz2err_.c - -unzipsfx$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h +unzipsfx$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h # unzipsfx only $(CP) unzip.c unzip_.c $(CC) -c $(CF) $(XC) unzip_.c $(RM) unzip_.c -# funzip only -cryptf$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +cryptf$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only $(CP) crypt.c cryptf.c $(CC) -c $(CF) $(FC) cryptf.c $(RM) cryptf.c -globalsf$O: globals.c $(UNZIP_H) +globalsf$O: globals.c $(UNZIP_H) # funzip only $(CP) globals.c globalsf.c $(CC) -c $(CF) $(FC) globalsf.c $(RM) globalsf.c -inflatef$O: inflate.c inflate.h $(UNZIP_H) crypt.h +inflatef$O: inflate.c inflate.h $(UNZIP_H) crypt.h # funzip only $(CP) inflate.c inflatef.c $(CC) -c $(CF) $(FC) inflatef.c $(RM) inflatef.c -ttyiof$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +ttyiof$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only $(CP) ttyio.c ttyiof.c $(CC) -c $(CF) $(FC) ttyiof.c $(RM) ttyiof.c +# atari$O: atari/atari.c $(UNZIP_H) # Atari only +# $(CC) -c $(CF) atari/atari.c -# system-specific code -atari$O: atari/atari.c $(UNZIP_H) # Atari only - $(CC) -c $(CF) atari/atari.c +atari$O: atari.c $(UNZIP_H) -atari_$O: atari/atari.c $(UNZIP_H) # unzipsfx only - $(CP) atari/atari.c atari_.c +atari_$O: atari.c $(UNZIP_H) # unzipsfx only + $(CP) atari.c atari_.c $(CC) -c $(CF) $(XC) atari_.c $(RM) atari_.c diff -Nru unzip-6.0/atheos/atheos.c unzip-6.0/atheos/atheos.c --- unzip-6.0/atheos/atheos.c 2008-12-28 19:47:42.000000000 +0000 +++ unzip-6.0/atheos/atheos.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2008 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. @@ -54,7 +54,7 @@ } u; unsigned perms; /* same as min_info.file_attr */ int have_uidgid; /* flag */ - ulg uidgid[2]; + ush uidgid[2]; char fnbuf[1]; /* buffer stub for directory name */ } uxdirattr; #define UxAtt(d) ((uxdirattr *)d) /* typecast shortcut */ @@ -211,7 +211,7 @@ #ifndef S_ISGID # define S_ISGID 0002000 /* set group id on execution */ #endif -#ifndef S_ISVTX +#ifndef S_ISVTX # define S_ISVTX 0001000 /* save swapped text even after use */ #endif @@ -246,7 +246,6 @@ int mapattr(__G) __GDEF { - int r; ulg tmp = G.crec.external_file_attributes; G.pInfo->file_attr = 0; @@ -272,9 +271,10 @@ case BEOS_: case QDOS_: case TANDEM_: - r = FALSE; G.pInfo->file_attr = (unsigned)(tmp >> 16); - if (G.pInfo->file_attr == 0 && G.extra_field) { + if (G.pInfo->file_attr != 0 || !G.extra_field) { + return 0; + } else { /* Some (non-Info-ZIP) implementations of Zip for Unix and * VMS (and probably others ??) leave 0 in the upper 16-bit * part of the external_file_attributes field. Instead, they @@ -293,6 +293,7 @@ unsigned ebLen; uch *ef = G.extra_field; unsigned ef_len = G.crec.extra_field_length; + int r = FALSE; while (!r && ef_len >= EB_HEADSIZE) { ebID = makeword(ef); @@ -319,17 +320,8 @@ ef_len -= (ebLen + EB_HEADSIZE); ef += (ebLen + EB_HEADSIZE); } - } - if (!r) { -#ifdef SYMLINKS - /* Check if the file is a (POSIX-compatible) symbolic link. - * We restrict symlink support to those "made-by" hosts that - * are known to support symbolic links. - */ - G.pInfo->symlink = S_ISLNK(G.pInfo->file_attr) && - SYMLINK_HOST(G.pInfo->hostnum); -#endif - return 0; + if (!r) + return 0; } /* fall through! */ /* all remaining cases: expand MSDOS read-only bit into write perms */ @@ -358,19 +350,11 @@ } /* read-only bit --> write perms; subdir bit --> dir exec bit */ tmp = !(tmp & 1) << 1 | (tmp & 0x10) >> 4; - if ((G.pInfo->file_attr & 0700) == (unsigned)(0400 | tmp<<6)) { + if ((G.pInfo->file_attr & 0700) == (unsigned)(0400 | tmp<<6)) /* keep previous G.pInfo->file_attr setting, when its "owner" * part appears to be consistent with DOS attribute flags! */ -#ifdef SYMLINKS - /* Entries "made by FS_FAT_" could have been zipped on a - * system that supports POSIX-style symbolic links. - */ - G.pInfo->symlink = S_ISLNK(G.pInfo->file_attr) && - (G.pInfo->hostnum == FS_FAT_); -#endif return 0; - } G.pInfo->file_attr = (unsigned)(0444 | tmp<<6 | tmp<<3 | tmp); break; } /* end switch (host-OS-created-by) */ @@ -553,15 +537,6 @@ *lastsemi = '\0'; } - /* On UNIX (and compatible systems), "." and ".." are reserved for - * directory navigation and cannot be used as regular file names. - * These reserved one-dot and two-dot names are mapped to "_" and "__". - */ - if (strcmp(pathcomp, ".") == 0) - *pathcomp = '_'; - else if (strcmp(pathcomp, "..") == 0) - strcpy(pathcomp, "__"); - #ifdef ACORN_FTYPE_NFS /* translate Acorn filetype information if asked to do so */ if (uO.acorn_nfs_ext && @@ -858,12 +833,12 @@ -static int get_extattribs OF((__GPRO__ iztimes *pzt, ulg z_uidgid[2])); +static int get_extattribs OF((__GPRO__ iztimes *pzt, ush z_uidgid[2])); static int get_extattribs(__G__ pzt, z_uidgid) __GDEF iztimes *pzt; - ulg z_uidgid[2]; + ush z_uidgid[2]; { /*--------------------------------------------------------------------------- Convert from MSDOS-format local time and date to Unix-format 32-bit GMT @@ -924,9 +899,11 @@ iztimes t3; /* mtime, atime, ctime */ struct utimbuf t2; /* modtime, actime */ } zt; - ulg z_uidgid[2]; + ush z_uidgid[2]; int have_uidgid_flg; + fclose(G.outfile); + /*--------------------------------------------------------------------------- If symbolic links are supported, allocate storage for a symlink control structure, put the uncompressed "data" and other required info in it, and @@ -937,7 +914,7 @@ #ifdef SYMLINKS if (G.symlnk) { - extent ucsize = (extent)G.lrec.ucsize; + unsigned ucsize = (unsigned)G.lrec.ucsize; unsigned AtheOSef_len = 0; extent slnk_entrysize; uch *AtheOS_exfld = NULL; @@ -952,19 +929,13 @@ } } - /* size of the symlink entry is the sum of - * (struct size (includes 1st '\0') + 1 additional trailing '\0'), - * system specific attribute data size (might be 0), - * and the lengths of name and link target. - */ - slnk_entrysize = (sizeof(slinkentry) + 1) + AtheOSef_len + - ucsize + strlen(G.filename); + slnk_entrysize = sizeof(slinkentry) + AtheOSef_len + ucsize + + strlen(G.filename); - if (slnk_entrysize < ucsize) { + if ((unsigned)slnk_entrysize < ucsize) { Info(slide, 0x201, ((char *)slide, "warning: symbolic link (%s) failed: mem alloc overflow\n", FnFilter1(G.filename))); - fclose(G.outfile); return; } @@ -972,7 +943,6 @@ Info(slide, 0x201, ((char *)slide, "warning: symbolic link (%s) failed: no mem\n", FnFilter1(G.filename))); - fclose(G.outfile); return; } slnk_entry->next = NULL; @@ -985,10 +955,11 @@ /* AtheOS_exfld should not be NULL because AtheOSef_len > 0 */ memcpy(slnk_entry->buf, AtheOS_exfld, AtheOSef_len); - /* move back to the start of the file to re-read the "link data" */ - rewind(G.outfile); + /* reopen the "link data" file for reading */ + G.outfile = fopen(G.filename, FOPR); - if (fread(slnk_entry->target, 1, ucsize, G.outfile) != ucsize) + if (!G.outfile || + fread(slnk_entry->target, 1, ucsize, G.outfile) != (int)ucsize) { Info(slide, 0x201, ((char *)slide, "warning: symbolic link (%s) failed\n", @@ -1012,8 +983,6 @@ } #endif /* SYMLINKS */ - fclose(G.outfile); - /* handle the AtheOS extra field if present */ if (!uO.J_flag) { void *ptr = scanAtheOSexfield(G.extra_field, @@ -1033,27 +1002,23 @@ { if (uO.qflag) Info(slide, 0x201, ((char *)slide, - "warning: cannot set UID %lu and/or GID %lu for %s\n", + "warning: cannot set UID %d and/or GID %d for %s\n", z_uidgid[0], z_uidgid[1], FnFilter1(G.filename))); else Info(slide, 0x201, ((char *)slide, - " (warning) cannot set UID %lu and/or GID %lu", + " (warning) cannot set UID %d and/or GID %d", z_uidgid[0], z_uidgid[1])); } } - /* skip restoring time stamps on user's request */ - if (uO.D_flag <= 1) { - /* set the file's access and modification times */ - if (utime(G.filename, &(zt.t2))) { - if (uO.qflag) - Info(slide, 0x201, ((char *)slide, - "warning: cannot set times for %s\n", - FnFilter1(G.filename))); - else - Info(slide, 0x201, ((char *)slide, - " (warning) cannot set times")); - } + /* set the file's access and modification times */ + if (utime(G.filename, &(zt.t2))) { + if (uO.qflag) + Info(slide, 0x201, ((char *)slide, + "warning: cannot set times for %s\n", FnFilter1(G.filename))); + else + Info(slide, 0x201, ((char *)slide, + " (warning) cannot set times")); } /*--------------------------------------------------------------------------- @@ -1089,7 +1054,7 @@ #ifdef SET_DIR_ATTRIB /* messages of code for setting directory attributes */ static ZCONST char Far DirlistUidGidFailed[] = - "warning: cannot set UID %lu and/or GID %lu for %s\n"; + "warning: cannot set UID %d and/or GID %d for %s\n"; static ZCONST char Far DirlistUtimeFailed[] = "warning: cannot set modification, access times for %s\n"; # ifndef NO_CHMOD @@ -1136,15 +1101,11 @@ if (!errval) errval = PK_WARN; } - /* Skip restoring directory time stamps on user' request. */ - if (uO.D_flag <= 0) { - /* restore directory timestamps */ - if (utime(d->fn, &UxAtt(d)->u.t2)) { - Info(slide, 0x201, ((char *)slide, - LoadFarString(DirlistUtimeFailed), FnFilter1(d->fn))); - if (!errval) - errval = PK_WARN; - } + if (utime(d->fn, &UxAtt(d)->u.t2)) { + Info(slide, 0x201, ((char *)slide, + LoadFarString(DirlistUtimeFailed), FnFilter1(d->fn))); + if (!errval) + errval = PK_WARN; } #ifndef NO_CHMOD if (chmod(d->fn, filtattr(__G__ UxAtt(d)->perms))) { diff -Nru unzip-6.0/atheos/Makefile unzip-6.0/atheos/Makefile --- unzip-6.0/atheos/Makefile 2006-12-25 19:58:34.000000000 +0000 +++ unzip-6.0/atheos/Makefile 2010-05-14 07:26:14.000000000 +0000 @@ -1,9 +1,9 @@ ###################################################################### # # Makefile for Info-ZIP's unzip, unzipsfx, and funzip on AtheOS -# Version 5.53 +# Version 5.52 # -# Copyright (C) 1998-2006 Info-ZIP +# Copyright (C) 1998-2001 Info-ZIP # Chris Herborth (chrish@qnx.com) # Copyright (C) 2004 Nikolaev Ruslan (nruslan@hotbox.ru) # @@ -38,15 +38,15 @@ # define # object files -OBJS1 = unzip$O crc32$O crc_i386$O crypt$O envargs$O explode$O +OBJS1 = unzip$O crc_i386$O crctab$O crypt$O envargs$O explode$O OBJS2 = extract$O fileio$O globals$O inflate$O list$O match$O -OBJS3 = process$O ttyio$O ubz2err$O unreduce$O unshrink$O zipinfo$O +OBJS3 = process$O ttyio$O unreduce$O unshrink$O zipinfo$O OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $M$O LOBJS = $(OBJS) OBJSDLL = $(OBJS) api$O -OBJX = unzipsfx$O crc32_$O crc_i386$O crypt_$O extract_$O fileio_$O globals_$O inflate_$O match_$O process_$O ttyio_$O ubz2err_$O $M_$O +OBJX = unzipsfx$O crc_i386$O crctab_$O crypt_$O extract_$O fileio_$O globals_$O inflate_$O match_$O process_$O ttyio_$O $M_$O LOBJX = $(OBJX) -OBJF = funzip$O crc32f$O crc_i386$O cryptf$O globalsf$O inflatef$O ttyiof$O +OBJF = funzip$O crc_i386$O cryptf$O globalsf$O inflatef$O ttyiof$O UNZIP_H = unzip.h unzpriv.h globals.h $(OSDEP_H) # installation @@ -124,20 +124,19 @@ zipinfo$E: unzip$E $(LN) unzip$E zipinfo$E -crc32$O: crc32.c $(UNZIP_H) zip.h crc32.h -crypt$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crctab$O: crctab.c $(UNZIP_H) zip.h +crypt$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h envargs$O: envargs.c $(UNZIP_H) explode$O: explode.c $(UNZIP_H) -extract$O: extract.c $(UNZIP_H) crc32.h crypt.h -fileio$O: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h -funzip$O: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +extract$O: extract.c $(UNZIP_H) crypt.h +fileio$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h +funzip$O: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h globals$O: globals.c $(UNZIP_H) inflate$O: inflate.c inflate.h $(UNZIP_H) list$O: list.c $(UNZIP_H) match$O: match.c $(UNZIP_H) -process$O: process.c $(UNZIP_H) crc32.h +process$O: process.c $(UNZIP_H) ttyio$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err$O: ubz2err.c $(UNZIP_H) unreduce$O: unreduce.c $(UNZIP_H) unshrink$O: unshrink.c $(UNZIP_H) unzip$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h @@ -148,90 +147,77 @@ $(AS) -o $@ crc_i386s.s $(RM) crc_i386s.s -# unzipsfx only -unzipsfx$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h +unzipsfx$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h # unzipsfx only $(CP) unzip.c unzipsfx.c $(CC) -c $(CF) -DSFX unzipsfx.c $(RM) unzipsfx.c -crc32_$O: crc32.c $(UNZIP_H) zip.h crc32.h - $(CP) crc32.c crc32_.c - $(CC) -c $(CF) -DSFX crc32_.c - $(RM) crc32_.c +match_$O: match.c # unzipsfx only + $(CP) match.c match_.c + $(CC) -c $(CF) -DSFX match_.c + $(RM) match_.c -crypt_$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crypt_$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only $(CP) crypt.c crypt_.c $(CC) -c $(CF) -DSFX crypt_.c $(RM) crypt_.c -extract_$O: extract.c $(UNZIP_H) crc32.h crypt.h - $(CP) extract.c extract_.c - $(CC) -c $(CF) -DSFX extract_.c - $(RM) extract_.c +crctab_$O: crctab.c $(UNZIP_H) zip.h # unzipsfx only + $(CP) crctab.c crctab_.c + $(CC) -c $(CF) -DSFX crctab_.c + $(RM) crctab_.c -fileio_$O: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +fileio_$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h # unzipsfx only $(CP) fileio.c fileio_.c $(CC) -c $(CF) -DSFX fileio_.c $(RM) fileio_.c -globals_$O: globals.c $(UNZIP_H) +extract_$O: extract.c $(UNZIP_H) crypt.h # unzipsfx only + $(CP) extract.c extract_.c + $(CC) -c $(CF) -DSFX extract_.c + $(RM) extract_.c + +globals_$O: globals.c $(UNZIP_H) # unzipsfx only $(CP) globals.c globals_.c $(CC) -c $(CF) -DSFX globals_.c $(RM) globals_.c -inflate_$O: inflate.c inflate.h $(UNZIP_H) crypt.h +inflate_$O: inflate.c inflate.h $(UNZIP_H) crypt.h # unzipsfx only $(CP) inflate.c inflate_.c $(CC) -c $(CF) -DSFX inflate_.c $(RM) inflate_.c -match_$O: match.c - $(CP) match.c match_.c - $(CC) -c $(CF) -DSFX match_.c - $(RM) match_.c - -process_$O: process.c $(UNZIP_H) crc32.h +process_$O: process.c $(UNZIP_H) # unzipsfx only $(CP) process.c process_.c $(CC) -c $(CF) -DSFX process_.c $(RM) process_.c -ttyio_$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +ttyio_$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only $(CP) ttyio.c ttyio_.c $(CC) -c $(CF) -DSFX ttyio_.c $(RM) ttyio_.c -ubz2err$O: ubz2err.c $(UNZIP_H) - $(CP) ubz2err.c ubz2err_.c - $(CC) -c $(CF) -DSFX ubz2err_.c - $(RM) ubz2err_.c - -# funzip only -crc32f$O: crc32.c $(UNZIP_H) zip.h crc32.h - $(CP) crc32.c crc32f.c - $(CC) -c $(CF) -DFUNZIP crc32f.c - $(RM) crc32f.c - -cryptf$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +cryptf$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only $(CP) crypt.c cryptf.c $(CC) -c $(CF) -DFUNZIP cryptf.c $(RM) cryptf.c -globalsf$O: globals.c $(UNZIP_H) +globalsf$O: globals.c $(UNZIP_H) # funzip only $(CP) globals.c globalsf.c $(CC) -c $(CF) -DFUNZIP globalsf.c $(RM) globalsf.c -inflatef$O: inflate.c inflate.h $(UNZIP_H) crypt.h +inflatef$O: inflate.c inflate.h $(UNZIP_H) crypt.h # funzip only $(CP) inflate.c inflatef.c $(CC) -c $(CF) -DFUNZIP inflatef.c $(RM) inflatef.c -ttyiof$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +ttyiof$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only $(CP) ttyio.c ttyiof.c $(CC) -c $(CF) -DFUNZIP ttyiof.c $(RM) ttyiof.c -# AtheOS specific code -atheos$O: atheos/atheos.c $(UNZIP_H) unzvers.h atheos/atheos.h +atheos$O: atheos/atheos.c $(UNZIP_H) unzvers.h atheos/atheos.h # AtheOS only $(CC) -c $(CF) atheos/atheos.c # version() not used by unzipsfx, so no unzvers.h dependency diff -Nru unzip-6.0/beos/beocfg.h unzip-6.0/beos/beocfg.h --- unzip-6.0/beos/beocfg.h 2009-01-11 14:09:38.000000000 +0000 +++ unzip-6.0/beos/beocfg.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2004 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -19,7 +19,6 @@ #include /* attributes. */ #include #include -#define GOT_UTIMBUF #define DIRENT #include #ifndef DATE_FORMAT diff -Nru unzip-6.0/beos/beos.c unzip-6.0/beos/beos.c --- unzip-6.0/beos/beos.c 2009-01-11 14:36:02.000000000 +0000 +++ unzip-6.0/beos/beos.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -68,7 +68,7 @@ } u; unsigned perms; /* same as min_info.file_attr */ int have_uidgid; /* flag */ - ulg uidgid[2]; + ush uidgid[2]; char fnbuf[1]; /* buffer stub for directory name */ } uxdirattr; #define UxAtt(d) ((uxdirattr *)d) /* typecast shortcut */ @@ -90,23 +90,6 @@ /* static int created_dir; */ /* used in mapname(), checkdir() */ /* static int renamed_fullpath; */ /* ditto */ - -/*****************************/ -/* Strings used multiple */ -/* times in beos.c */ -/*****************************/ - -/* messages of code for setting file/directory attributes */ -static ZCONST char CannotSetItemUidGid[] = - "warning: cannot set UID %lu and/or GID %lu for %s\n %s\n"; -static ZCONST char CannotSetUidGid[] = - " (warning) cannot set UID %lu and/or GID %lu\n %s"; -static ZCONST char CannotSetItemTimestamps[] = - "warning: cannot set modif./access times for %s\n %s\n"; -static ZCONST char CannotSetTimestamps[] = - " (warning) cannot set modif./access times\n %s"; - - #ifndef SFX /**********************/ @@ -242,14 +225,14 @@ #ifndef S_ISGID # define S_ISGID 0002000 /* set group id on execution */ #endif -#ifndef S_ISVTX +#ifndef S_ISVTX # define S_ISVTX 0001000 /* save swapped text even after use */ #endif /************************/ /* Function filtattr() */ /************************/ -/* This is used to clear or keep the SUID and SGID bits on file permissions. +/* This is used to clear or keep the SUID and GID bits on file permissions. * It's possible that a file in an archive could have one of these bits set * and, unknown to the person unzipping, could allow others to execute the * file as the user or group. The new option -K bypasses this check. @@ -277,7 +260,6 @@ int mapattr(__G) __GDEF { - int r; ulg tmp = G.crec.external_file_attributes; G.pInfo->file_attr = 0; @@ -303,9 +285,10 @@ case ATHEOS_: case QDOS_: case TANDEM_: - r = FALSE; G.pInfo->file_attr = (unsigned)(tmp >> 16); - if (G.pInfo->file_attr == 0 && G.extra_field) { + if (G.pInfo->file_attr != 0 || !G.extra_field) { + return 0; + } else { /* Some (non-Info-ZIP) implementations of Zip for Unix and * VMS (and probably others ??) leave 0 in the upper 16-bit * part of the external_file_attributes field. Instead, they @@ -324,6 +307,7 @@ unsigned ebLen; uch *ef = G.extra_field; unsigned ef_len = G.crec.extra_field_length; + int r = FALSE; while (!r && ef_len >= EB_HEADSIZE) { ebID = makeword(ef); @@ -350,17 +334,8 @@ ef_len -= (ebLen + EB_HEADSIZE); ef += (ebLen + EB_HEADSIZE); } - } - if (!r) { -#ifdef SYMLINKS - /* Check if the file is a (POSIX-compatible) symbolic link. - * We restrict symlink support to those "made-by" hosts that - * are known to support symbolic links. - */ - G.pInfo->symlink = S_ISLNK(G.pInfo->file_attr) && - SYMLINK_HOST(G.pInfo->hostnum); -#endif - return 0; + if (!r) + return 0; } /* fall through! */ /* all remaining cases: expand MSDOS read-only bit into write perms */ @@ -389,19 +364,11 @@ } /* read-only bit --> write perms; subdir bit --> dir exec bit */ tmp = !(tmp & 1) << 1 | (tmp & 0x10) >> 4; - if ((G.pInfo->file_attr & 0700) == (unsigned)(0400 | tmp<<6)) { + if ((G.pInfo->file_attr & 0700) == (unsigned)(0400 | tmp<<6)) /* keep previous G.pInfo->file_attr setting, when its "owner" * part appears to be consistent with DOS attribute flags! */ -#ifdef SYMLINKS - /* Entries "made by FS_FAT_" could have been zipped on a - * system that supports POSIX-style symbolic links. - */ - G.pInfo->symlink = S_ISLNK(G.pInfo->file_attr) && - (G.pInfo->hostnum == FS_FAT_); -#endif return 0; - } G.pInfo->file_attr = (unsigned)(0444 | tmp<<6 | tmp<<3 | tmp); break; } /* end switch (host-OS-created-by) */ @@ -586,15 +553,6 @@ *lastsemi = '\0'; } - /* On UNIX (and compatible systems), "." and ".." are reserved for - * directory navigation and cannot be used as regular file names. - * These reserved one-dot and two-dot names are mapped to "_" and "__". - */ - if (strcmp(pathcomp, ".") == 0) - *pathcomp = '_'; - else if (strcmp(pathcomp, "..") == 0) - strcpy(pathcomp, "__"); - #ifdef ACORN_FTYPE_NFS /* translate Acorn filetype information if asked to do so */ if (uO.acorn_nfs_ext && @@ -688,7 +646,7 @@ /* next check: need to append '/', at least one-char name, '\0' */ if ((G.end-G.buildpath) > FILNAMSIZ-3) too_long = TRUE; /* check if extracting dir? */ - if (SSTAT(G.buildpath, &G.statbuf)) { /* path doesn't exist */ + if (stat(G.buildpath, &G.statbuf)) { /* path doesn't exist */ if (!G.create_dirs) { /* told not to create (freshening) */ free(G.buildpath); return MPN_INF_SKIP; /* path doesn't exist: nothing to do */ @@ -704,11 +662,8 @@ if (mkdir(G.buildpath, 0777) == -1) { /* create the directory */ Info(slide, 1, ((char *)slide, "checkdir error: cannot create %s\n\ - %s\n\ unable to process %s.\n", - FnFilter2(G.buildpath), - strerror(errno), - FnFilter1(G.filename))); + FnFilter2(G.buildpath), FnFilter1(G.filename))); free(G.buildpath); /* path didn't exist, tried to create, failed */ return MPN_ERR_SKIP; @@ -839,7 +794,7 @@ if (tmproot[G.rootlen-1] == '/') { tmproot[--G.rootlen] = '\0'; } - if (G.rootlen > 0 && (SSTAT(tmproot, &G.statbuf) || + if (G.rootlen > 0 && (stat(tmproot, &G.statbuf) || !S_ISDIR(G.statbuf.st_mode))) { /* path does not exist */ if (!G.create_dirs /* || iswild(tmproot) */ ) { @@ -852,9 +807,8 @@ * to create more than one level, but why really necessary?) */ if (mkdir(tmproot, 0777) == -1) { Info(slide, 1, ((char *)slide, - "checkdir: cannot create extraction directory: %s\n\ - %s\n", - FnFilter1(tmproot), strerror(errno))); + "checkdir: cannot create extraction directory: %s\n", + FnFilter1(tmproot))); free(tmproot); G.rootlen = 0; /* path didn't exist, tried to create, and failed: */ @@ -896,12 +850,12 @@ -static int get_extattribs OF((__GPRO__ iztimes *pzt, ulg z_uidgid[2])); +static int get_extattribs OF((__GPRO__ iztimes *pzt, ush z_uidgid[2])); static int get_extattribs(__G__ pzt, z_uidgid) __GDEF iztimes *pzt; - ulg z_uidgid[2]; + ush z_uidgid[2]; { /*--------------------------------------------------------------------------- Convert from MSDOS-format local time and date to Unix-format 32-bit GMT @@ -959,12 +913,12 @@ { union { iztimes t3; /* mtime, atime, ctime */ - ztimbuf t2; /* modtime, actime */ + struct utimbuf t2; /* modtime, actime */ } zt; - ulg z_uidgid[2]; + ush z_uidgid[2]; int have_uidgid_flg; - have_uidgid_flg = get_extattribs(__G__ &(zt.t3), z_uidgid); + fclose(G.outfile); /*--------------------------------------------------------------------------- If symbolic links are supported, allocate storage for a symlink control @@ -976,7 +930,7 @@ #ifdef SYMLINKS if (G.symlnk) { - extent ucsize = (extent)G.lrec.ucsize; + unsigned ucsize = (unsigned)G.lrec.ucsize; unsigned BeOSef_len = 0; extent slnk_entrysize; uch *BeOS_exfld; @@ -991,19 +945,13 @@ } } - /* size of the symlink entry is the sum of - * (struct size (includes 1st '\0') + 1 additional trailing '\0'), - * system specific attribute data size (might be 0), - * and the lengths of name and link target. - */ - slnk_entrysize = (sizeof(slinkentry) + 1) + BeOSef_len + - ucsize + strlen(G.filename); + slnk_entrysize = sizeof(slinkentry) + BeOSef_len + ucsize + + strlen(G.filename); - if (slnk_entrysize < ucsize) { + if ((unsigned)slnk_entrysize < ucsize) { Info(slide, 0x201, ((char *)slide, "warning: symbolic link (%s) failed: mem alloc overflow\n", FnFilter1(G.filename))); - fclose(G.outfile); return; } @@ -1011,7 +959,6 @@ Info(slide, 0x201, ((char *)slide, "warning: symbolic link (%s) failed: no mem\n", FnFilter1(G.filename))); - fclose(G.outfile); return; } slnk_entry->next = NULL; @@ -1023,10 +970,11 @@ if (BeOSef_len > 0) memcpy(slnk_entry->buf, BeOS_exfld, BeOSef_len); - /* move back to the start of the file to re-read the "link data" */ - rewind(G.outfile); + /* reopen the "link data" file for reading */ + G.outfile = fopen(G.filename, FOPR); - if (fread(slnk_entry->target, 1, ucsize, G.outfile) != ucsize) + if (!G.outfile || + fread(slnk_entry->target, 1, ucsize, G.outfile) != (int)ucsize) { Info(slide, 0x201, ((char *)slide, "warning: symbolic link (%s) failed\n", @@ -1050,8 +998,6 @@ } #endif /* SYMLINKS */ - fclose(G.outfile); - /* handle the BeOS extra field if present */ if (!uO.J_flag) { void *ptr = scanBeOSexfield(G.extra_field, @@ -1077,35 +1023,32 @@ perror("chmod (file attributes) error"); #endif + have_uidgid_flg = get_extattribs(__G__ &(zt.t3), z_uidgid); + /* if -X option was specified and we have UID/GID info, restore it */ - if (have_uidgid_flg - /* check that both uid and gid values fit into their data sizes */ - && ((ulg)(uid_t)(z_uidgid[0]) == z_uidgid[0]) - && ((ulg)(gid_t)(z_uidgid[1]) == z_uidgid[1])) { + if (have_uidgid_flg) { TTrace((stderr, "close_outfile: restoring Unix UID/GID info\n")); if (chown(G.filename, (uid_t)z_uidgid[0], (gid_t)z_uidgid[1])) { if (uO.qflag) - Info(slide, 0x201, ((char *)slide, CannotSetItemUidGid, - z_uidgid[0], z_uidgid[1], FnFilter1(G.filename), - strerror(errno))); + Info(slide, 0x201, ((char *)slide, + "warning: cannot set UID %d and/or GID %d for %s\n", + z_uidgid[0], z_uidgid[1], FnFilter1(G.filename))); else - Info(slide, 0x201, ((char *)slide, CannotSetUidGid, - z_uidgid[0], z_uidgid[1], strerror(errno))); + Info(slide, 0x201, ((char *)slide, + " (warning) cannot set UID %d and/or GID %d", + z_uidgid[0], z_uidgid[1])); } } - /* skip restoring time stamps on user's request */ - if (uO.D_flag <= 1) { - /* set the file's access and modification times */ - if (utime(G.filename, &(zt.t2))) { - if (uO.qflag) - Info(slide, 0x201, ((char *)slide, CannotSetItemTimestamps, - FnFilter1(G.filename), strerror(errno))); - else - Info(slide, 0x201, ((char *)slide, CannotSetTimestamps, - strerror(errno))); - } + /* set the file's access and modification times */ + if (utime(G.filename, &(zt.t2))) { + if (uO.qflag) + Info(slide, 0x201, ((char *)slide, + "warning: cannot set times for %s\n", FnFilter1(G.filename))); + else + Info(slide, 0x201, ((char *)slide, + " (warning) cannot set times")); } } /* end function close_outfile() */ @@ -1122,7 +1065,7 @@ setBeOSexfield(slnk_entry->fname, (uch *)slnk_entry->buf); /* currently, no error propagation... */ return PK_OK; -} /* end function set_symlnk_attribs() */ +} #endif /* SYMLINKS */ @@ -1130,9 +1073,13 @@ #ifdef SET_DIR_ATTRIB /* messages of code for setting directory attributes */ +static ZCONST char Far DirlistUidGidFailed[] = + "warning: cannot set UID %d and/or GID %d for %s\n"; +static ZCONST char Far DirlistUtimeFailed[] = + "warning: cannot set modification, access times for %s\n"; # ifndef NO_CHMOD - static ZCONST char DirlistChmodFailed[] = - "warning: cannot set permissions for %s\n %s\n"; + static ZCONST char Far DirlistChmodFailed[] = + "warning: cannot set permissions for %s\n"; # endif @@ -1165,32 +1112,26 @@ int errval = PK_OK; if (UxAtt(d)->have_uidgid && - /* check that both uid and gid values fit into their data sizes */ - ((ulg)(uid_t)(UxAtt(d)->uidgid[0]) == UxAtt(d)->uidgid[0]) && - ((ulg)(gid_t)(UxAtt(d)->uidgid[1]) == UxAtt(d)->uidgid[1]) && chown(UxAtt(d)->fn, (uid_t)UxAtt(d)->uidgid[0], (gid_t)UxAtt(d)->uidgid[1])) { - Info(slide, 0x201, ((char *)slide, CannotSetItemUidGid, - UxAtt(d)->uidgid[0], UxAtt(d)->uidgid[1], FnFilter1(d->fn), - strerror(errno))); + Info(slide, 0x201, ((char *)slide, + LoadFarString(DirlistUidGidFailed), + UxAtt(d)->uidgid[0], UxAtt(d)->uidgid[1], FnFilter1(d->fn))); if (!errval) errval = PK_WARN; } - /* Skip restoring directory time stamps on user' request. */ - if (uO.D_flag <= 0) { - /* restore directory timestamps */ - if (utime(d->fn, (const struct utimbuf *)&UxAtt(d)->u.t2)) { - Info(slide, 0x201, ((char *)slide, CannotSetItemTimestamps, - FnFilter1(d->fn), strerror(errno))); - if (!errval) - errval = PK_WARN; - } + if (utime(d->fn, (const struct utimbuf *)&UxAtt(d)->u.t2)) { + Info(slide, 0x201, ((char *)slide, + LoadFarString(DirlistUtimeFailed), FnFilter1(d->fn))); + if (!errval) + errval = PK_WARN; } #ifndef NO_CHMOD if (chmod(d->fn, filtattr(__G__ UxAtt(d)->perms))) { - Info(slide, 0x201, ((char *)slide, DirlistChmodFailed, - FnFilter1(d->fn), strerror(errno))); + Info(slide, 0x201, ((char *)slide, + LoadFarString(DirlistChmodFailed), FnFilter1(d->fn))); + /* perror("chmod (file attributes) error"); */ if (!errval) errval = PK_WARN; } diff -Nru unzip-6.0/beos/Makefile unzip-6.0/beos/Makefile --- unzip-6.0/beos/Makefile 2006-12-25 19:58:14.000000000 +0000 +++ unzip-6.0/beos/Makefile 2010-05-14 07:26:14.000000000 +0000 @@ -2,7 +2,7 @@ # # Makefile for Info-ZIP's unzip, unzipsfx, and funzip on BeOS # -# Copyright (c) 1998-2006 Info-ZIP +# Copyright (c) 1998-2004 Info-ZIP # Chris Herborth (chrish@qnx.com) # # This is the new New and Improved Makefile for BeOS; it will: @@ -71,20 +71,20 @@ M = beos # defaults for crc32 stuff and system-dependent headers -CRCA_O = +CRC32 = crc32 OSDEP_H = beos/beocfg.h # object files -OBJS1 = unzip$O crc32$O crypt$O envargs$O explode$O +OBJS1 = unzip$O $(CRC32)$O crctab$O crypt$O envargs$O explode$O OBJS2 = extract$O fileio$O globals$O inflate$O list$O match$O -OBJS3 = process$O ttyio$O ubz2err$O unreduce$O unshrink$O zipinfo$O +OBJS3 = process$O ttyio$O unreduce$O unshrink$O zipinfo$O OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $M$O $(BEOS_MAIN) LOBJS = $(OBJS) OBJSDLL = $(OBJS) api$O -OBJX = unzipsfx$O crc32_$O crypt_$O extract_$O fileio_$O globals_$O \ - inflate_$O match_$O process_$O ttyio_$O ubz2err_$O $M_$O $(BEOS_MAIN) +OBJX = unzipsfx$O $(CRC32)$O crctab_$O crypt_$O extract_$O fileio_$O \ + globals_$O inflate_$O match_$O process_$O ttyio_$O $M_$O $(BEOS_MAIN) LOBJX = $(OBJX) -OBJF = funzip$O crc32f$O cryptf$O globalsf$O inflatef$O ttyiof$O +OBJF = funzip$O $(CRC32)$O cryptf$O globalsf$O inflatef$O ttyiof$O UNZIP_H = unzip.h unzpriv.h globals.h $(OSDEP_H) # installation @@ -243,107 +243,94 @@ $(LN) unzip$E zipinfo$E -crc32$O: crc32.c $(UNZIP_H) zip.h crc32.h -crypt$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crc32$O: crc32.c $(UNZIP_H) zip.h +crctab$O: crctab.c $(UNZIP_H) zip.h +crypt$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h envargs$O: envargs.c $(UNZIP_H) explode$O: explode.c $(UNZIP_H) -extract$O: extract.c $(UNZIP_H) crc32.h crypt.h -fileio$O: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h -funzip$O: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +extract$O: extract.c $(UNZIP_H) crypt.h +fileio$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h +funzip$O: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h globals$O: globals.c $(UNZIP_H) inflate$O: inflate.c inflate.h $(UNZIP_H) list$O: list.c $(UNZIP_H) match$O: match.c $(UNZIP_H) process$O: process.c $(UNZIP_H) ttyio$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err$O: ubz2err.c $(UNZIP_H) unreduce$O: unreduce.c $(UNZIP_H) unshrink$O: unshrink.c $(UNZIP_H) unzip$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h zipinfo$O: zipinfo.c $(UNZIP_H) -# unzipsfx compilation section -unzipsfx$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h +unzipsfx$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h # unzipsfx only $(CP) unzip.c unzipsfx.c $(CC) -c $(CF) -DSFX unzipsfx.c $(RM) unzipsfx.c -crc32_$O: crc32.c $(UNZIP_H) zip.h crc32.h - $(CP) crc32.c crc32_.c - $(CC) -c $(CF) -DSFX crc32_.c - $(RM) crc32_.c - -crypt_$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h +crypt_$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only $(CP) crypt.c crypt_.c $(CC) -c $(CF) -DSFX crypt_.c $(RM) crypt_.c -extract_$O: extract.c $(UNZIP_H) crc32.h crypt.h - $(CP) extract.c extract_.c - $(CC) -c $(CF) -DSFX extract_.c - $(RM) extract_.c +crctab_$O: crctab.c $(UNZIP_H) zip.h # unzipsfx only + $(CP) crctab.c crctab_.c + $(CC) -c $(CF) -DSFX crctab_.c + $(RM) crctab_.c -fileio_$O: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +fileio_$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h # unzipsfx only $(CP) fileio.c fileio_.c $(CC) -c $(CF) -DSFX fileio_.c $(RM) fileio_.c -globals_$O: globals.c $(UNZIP_H) +extract_$O: extract.c $(UNZIP_H) crypt.h # unzipsfx only + $(CP) extract.c extract_.c + $(CC) -c $(CF) -DSFX extract_.c + $(RM) extract_.c + +globals_$O: globals.c $(UNZIP_H) # unzipsfx only $(CP) globals.c globals_.c $(CC) -c $(CF) -DSFX globals_.c $(RM) globals_.c -inflate_$O: inflate.c inflate.h $(UNZIP_H) crypt.h +inflate_$O: inflate.c inflate.h $(UNZIP_H) crypt.h # unzipsfx only $(CP) inflate.c inflate_.c $(CC) -c $(CF) -DSFX inflate_.c $(RM) inflate_.c -process_$O: process.c $(UNZIP_H) crc32.h +process_$O: process.c $(UNZIP_H) # unzipsfx only $(CP) process.c process_.c $(CC) -c $(CF) -DSFX process_.c $(RM) process_.c -ttyio_$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +ttyio_$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only $(CP) ttyio.c ttyio_.c $(CC) -c $(CF) -DSFX ttyio_.c $(RM) ttyio_.c -ubz2err$O: ubz2err.c $(UNZIP_H) - $(CP) ubz2err.c ubz2err_.c - $(CC) -c $(CF) -DSFX ubz2err_.c - $(RM) ubz2err_.c - -# funzip compilation section -crc32f$O: crc32.c $(UNZIP_H) zip.h crc32.h - $(CP) crc32.c crc32f.c - $(CC) -c $(CF) -DFUNZIP crc32f.c - $(RM) crc32f.c - -cryptf$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +cryptf$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only $(CP) crypt.c cryptf.c $(CC) -c $(CF) -DFUNZIP cryptf.c $(RM) cryptf.c -globalsf$O: globals.c $(UNZIP_H) +globalsf$O: globals.c $(UNZIP_H) # funzip only $(CP) globals.c globalsf.c $(CC) -c $(CF) -DFUNZIP globalsf.c $(RM) globalsf.c -inflatef$O: inflate.c inflate.h $(UNZIP_H) crypt.h +inflatef$O: inflate.c inflate.h $(UNZIP_H) crypt.h # funzip only $(CP) inflate.c inflatef.c $(CC) -c $(CF) -DFUNZIP inflatef.c $(RM) inflatef.c -ttyiof$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +ttyiof$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only $(CP) ttyio.c ttyiof.c $(CC) -c $(CF) -DFUNZIP ttyiof.c $(RM) ttyiof.c -# BeOS specific code -beos$O: beos/beos.c $(UNZIP_H) unzvers.h beos/beos.h +beos$O: beos/beos.c $(UNZIP_H) unzvers.h beos/beos.h # BeOS only $(CC) -c $(CF) beos/beos.c -beosmain$O: beos/beosmain.cpp $(UNZIP_H) unzvers.h +beosmain$O: beos/beosmain.cpp $(UNZIP_H) unzvers.h # BeOS only $(CCPP) -c $(CPPF) beos/beosmain.cpp # version() not used by unzipsfx, so no unzvers.h dependency @@ -352,7 +339,7 @@ $(CC) -c $(CF) -Ibeos -DSFX beos_.c $(RM) beos_.c -beosmain_$O: beos/beosmain.cpp $(UNZIP_H) # unzipsfx only +beosmain_$O: beos/beosmain.cpp $(UNZIP_H) $(CP) beos/beosmain.cpp beosmain_.cpp $(CCPP) -c $(CPPF) -Ibeos -DSFX beosmain_.cpp $(RM) beosmain_.cpp diff -Nru unzip-6.0/BUGS unzip-6.0/BUGS --- unzip-6.0/BUGS 2009-01-02 16:33:46.000000000 +0000 +++ unzip-6.0/BUGS 2010-05-14 07:26:14.000000000 +0000 @@ -14,9 +14,9 @@ options will print a help screen, at the top of which is the UnZip version number and release date; and executing "unzip -v" without any zipfile or other options will give information about what compiler was - used, the target operating system, any special UnZip options, and the + used, the target operating system, any special UnZip options, and the date of compilation--only for version 5.11 and later, though! (Also, - under Unix C shell and some Bourne shells, "which unzip" will print + under Unix C shell and some Bourne shells, "which unzip" will print the path of the unzip you're actually using. Under OS/2 and MS-DOS, whch21gr.zip [on Simtel mirror sites] will do the same thing; in addi- tion, "which -a unzip" will show *all* copies of "unzip" in your path.) @@ -33,8 +33,6 @@ may not be able to seek to member files [James Lemley 970107, Iris Spaniol 970206, ...] - Fixed with Zip64 support in UnZip 6.0 - - fix overwrite behavior: hidden/system problems?; etc. - 32-bit DOS UnZip still unable to set volume labels? - 32-bit DOS UnZip under OS/2 doesn't extract all wildcard zipfiles? @@ -75,7 +73,7 @@ unreduce.c: while (((outpos + outcnt) < ucsize) && (!zipeof)) { [James Birdsall, Mark, bottom of BUGS.long] - OS/2: directory EAs not restored if directory exists [Kai Uwe, KG27515@uark] - (subsequent note: no way to determine which EAs are newer ==> cannot + (subsequent note: no way to determine which EAs are newer ==> cannot restore without user input) (update: as of UnZip 5.30, option -o forces restoring of directory EAs) - MS-DOS: Borland executables don't allow other than 80-column, 25/43/50-line diff -Nru unzip-6.0/cmsmvs/ccunzip.exec unzip-6.0/cmsmvs/ccunzip.exec --- unzip-6.0/cmsmvs/ccunzip.exec 2005-12-30 19:18:02.000000000 +0000 +++ unzip-6.0/cmsmvs/ccunzip.exec 2010-05-14 07:26:14.000000000 +0000 @@ -28,6 +28,7 @@ Say 'Building' modname 'MODULE...' Call Compile 'UNZIP' Call Compile 'CRC32' +Call Compile 'CRCTAB' Call Compile 'CRYPT' Call Compile 'ENVARGS' Call Compile 'EXPLODE' diff -Nru unzip-6.0/cmsmvs/mvs.mki unzip-6.0/cmsmvs/mvs.mki --- unzip-6.0/cmsmvs/mvs.mki 2005-12-30 19:19:52.000000000 +0000 +++ unzip-6.0/cmsmvs/mvs.mki 2010-05-14 07:26:14.000000000 +0000 @@ -56,7 +56,7 @@ # Files # object (TEXT) files -OBJECTS= $(BLD_P)unzip$(O) $(BLD_P)crc32$(O) \ +OBJECTS= $(BLD_P)unzip$(O) $(BLD_P)crc32$(O) $(BLD_P)crctab$(O) \ $(BLD_P)crypt$(O) $(BLD_P)envargs$(O) $(BLD_P)explode$(O) \ $(BLD_P)extract$(O) $(BLD_P)fileio$(O) $(BLD_P)globals$(O) \ $(BLD_P)inflate$(O) $(BLD_P)process$(O) $(BLD_P)list$(O) \ @@ -65,7 +65,7 @@ # Header files HFILES= $(SRC_P)consts.h $(SRC_P)crypt.h $(SRC_P)ebcdic.h \ - $(SRC_P)globals.h $(SRC_P)inflate.h \ + $(SRC_P)globals.h $(SRC_P)inflate.h $(SRC_P)tables.h \ $(SRC_P)ttyio.h $(SRC_P)unzip.h $(SRC_P)unzpriv.h \ $(SRC_P)unzvers.h $(SRC_P)zip.h $(CMSMVS_P)vmmvs.h \ $(CMSMVS_P)vmstat.h @@ -96,6 +96,9 @@ $(BLD_P)crc32$(O): $(SRC_P)crc32.c $(HFILES) $(CC) -c -o $% $(CFLAGS) $(SRC_P)crc32.c +$(BLD_P)crctab$(O): $(SRC_P)crctab.c $(HFILES) + $(CC) -c -o $% $(CFLAGS) $(SRC_P)crctab.c + $(BLD_P)crypt$(O): $(SRC_P)crypt.c $(HFILES) $(CC) -c -o $% $(CFLAGS) $(SRC_P)crypt.c diff -Nru unzip-6.0/cmsmvs/unzip.makefile unzip-6.0/cmsmvs/unzip.makefile --- unzip-6.0/cmsmvs/unzip.makefile 2005-12-30 19:14:04.000000000 +0000 +++ unzip-6.0/cmsmvs/unzip.makefile 2010-05-14 07:26:14.000000000 +0000 @@ -6,6 +6,7 @@ TEXT: unzip c crc32 c + crctab c crypt c envargs c explode c diff -Nru unzip-6.0/cmsmvs/unzmvsc.job unzip-6.0/cmsmvs/unzmvsc.job --- unzip-6.0/cmsmvs/unzmvsc.job 2005-12-30 19:15:56.000000000 +0000 +++ unzip-6.0/cmsmvs/unzmvsc.job 2010-05-14 07:26:14.000000000 +0000 @@ -15,6 +15,12 @@ // CPARM='LONG,NOTERM,LIST,XREF,SOURCE', // CPARM2='OPT(2),DEF(MVS),NOMAR,NOSEQ,CSECT' //COMPILE.USERLIB DD DSN=USERID.UNZIP.H,DISP=SHR +//CRCTAB EXEC EDCC,COND=(0,NE),CREGSIZ='0M', +// INFILE='USERID.UNZIP.C(CRCTAB)', +// OUTFILE='USERID.UNZIP.OBJ(CRCTAB),DISP=SHR', +// CPARM='LONG,NOTERM,LIST,XREF,SOURCE', +// CPARM2='OPT(2),DEF(MVS),NOMAR,NOSEQ,CSECT' +//COMPILE.USERLIB DD DSN=USERID.UNZIP.H,DISP=SHR //CRYPT EXEC EDCC,COND=(0,NE),CREGSIZ='0M', // INFILE='USERID.UNZIP.C(CRYPT)', // OUTFILE='USERID.UNZIP.OBJ(CRYPT),DISP=SHR', @@ -112,6 +118,7 @@ //SYSPRINT DD SYSOUT=* //PLKED.SYSIN DD DSN=USERID.UNZIP.OBJ(UNZIP),DISP=SHR // DD DSN=USERID.UNZIP.OBJ(CRC32),DISP=SHR +// DD DSN=USERID.UNZIP.OBJ(CRCTAB),DISP=SHR // DD DSN=USERID.UNZIP.OBJ(CRYPT),DISP=SHR // DD DSN=USERID.UNZIP.OBJ(ENVARGS),DISP=SHR // DD DSN=USERID.UNZIP.OBJ(EXPLODE),DISP=SHR diff -Nru unzip-6.0/cmsmvs/unzvmc.exec unzip-6.0/cmsmvs/unzvmc.exec --- unzip-6.0/cmsmvs/unzvmc.exec 2005-12-30 19:16:22.000000000 +0000 +++ unzip-6.0/cmsmvs/unzvmc.exec 2010-05-14 07:26:14.000000000 +0000 @@ -13,6 +13,8 @@ 'cc unzip c 'parms say 'Compiling CRC32 C...' 'cc crc32 c 'parms +say 'Compiling CRCTAB C...' +'cc crctab c 'parms say 'Compiling CRYPT C...' 'cc crypt c 'parms say 'Compiling ENVARGS C...' @@ -45,7 +47,7 @@ 'cc vmmvs c 'parms say 'Linking all files...' -'cmod unzip unzip crc32 crypt envargs explode extract fileio globals', +'cmod unzip unzip crc32 crctab crypt envargs explode extract fileio globals', 'inflate list match process ttyio unreduce unshrink zipinfo vmmvs' say 'All Done!' say "To run enter : UNZIP parms" diff -Nru unzip-6.0/cmsmvs/vmmvs.h unzip-6.0/cmsmvs/vmmvs.h --- unzip-6.0/cmsmvs/vmmvs.h 2008-10-26 18:17:28.000000000 +0000 +++ unzip-6.0/cmsmvs/vmmvs.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2008 Info-ZIP. All rights reserved. + Copyright (c) 1990-2000 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2007-Mar-04 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -52,6 +52,7 @@ /* Kludge until we know how to open a non-echo tty channel */ #define EBCDIC +#define __EBCDIC 2 /* treat EBCDIC as binary! */ /* In the context of Info-ZIP, a portable "text" mode file implies the use of an ASCII-compatible (ISO 8859-1, or other extended ASCII) code page. */ diff -Nru unzip-6.0/consts.h unzip-6.0/consts.h --- unzip-6.0/consts.h 2002-03-23 15:52:48.000000000 +0000 +++ unzip-6.0/consts.h 2010-05-14 07:26:14.000000000 +0000 @@ -34,9 +34,9 @@ "error: expected central file header signature not found (file #%lu).\n"; ZCONST char Far SeekMsg[] = "error [%s]: attempt to seek before beginning of zipfile\n%s"; -ZCONST char Far FilenameNotMatched[] = "caution: filename not matched: %s\n"; +ZCONST char Far FilenameNotMatched[] = "caution: filename not matched: %.512s\n"; ZCONST char Far ExclFilenameNotMatched[] = - "caution: excluded filename not matched: %s\n"; + "caution: excluded filename not matched: %.512s\n"; #ifdef VMS ZCONST char Far ReportMsg[] = "\ diff -Nru unzip-6.0/Contents unzip-6.0/Contents --- unzip-6.0/Contents 2007-03-31 18:14:46.000000000 +0000 +++ unzip-6.0/Contents 2010-05-14 07:26:14.000000000 +0000 @@ -1,4 +1,4 @@ -Contents of the UnZip 6.00 source archive. The OS-specific subdirectories +Contents of the UnZip 5.52 source archive. The OS-specific subdirectories at the end contain their own Contents listings: Contents this file @@ -7,7 +7,8 @@ COPYING.OLD historic copyrights and distribution policy (obsolete) INSTALL how to compile and install UnZip and related utilities WHERE where Zip/UnZip and encryption/decryption support can be found - History.600 new features and fixes of the last major release + History.550 new features and fixes of the last major release + History.551 new features and fixes in this maintenance release ToDo rough priority list of new features to be added in next release BUGS known bugs, problems, and (possible) other features to be added unzip.txt UnZip manual page, human-readable format @@ -21,8 +22,8 @@ apihelp.c API help text for DLL versions (currently OS/2 only) consts.h global, initialized variables that never change (required) crc32.c code for calculation 32bit CRC of a string buffer (required*) - crc32.h declarations for the crc-32 code (required*) - crc_i386.S fast assembler replacement for crc32() (Intel 386 and newer) + crc_i386.S fast assembler replacement for crc32.c (Intel 386 and newer) + crctab.c supplies polynomial table for CRC calculation crypt.c de-/encryption routines (required*) crypt.h de-/encryption header file (required*) ebcdic.h static lookup table for ASCII <-> EBCDIC translation (required) @@ -39,11 +40,11 @@ list.c UnZip listing routines, non-ZipInfo mode (required) match.c pattern-matching code for filename wildcards (required) process.c zipfile headers code (required) + tables.h static lookup tables used in fileio.c and funzip.c (required*) timezone.c timezone and timestamp functions (required) timezone.h header file for interface to "internal" tz functions (required) ttyio.c code for handling nonecho tty input: password, pager (required) ttyio.h header file for nonecho tty input: password, pager (required) - ubz2err.c callback handler for fatal bzip2 errors (bzip2 support only) unreduce.c code for unreducing (required) unshrink.c code for unshrinking (required) unzip.c UnZip main(), usage and options code (required) @@ -64,7 +65,7 @@ human68k/ support files for compiling under X68000/Human68K macos/ support files for compiling under Macintosh OS msdos/ support files for compiling under MS-DOS - netware/ support files for compiling for Novell Netware NLM + novell/ support files for compiling for Novell Netware NLM os2/ support files for compiling under OS/2 (includes DLL stuff) qdos/ support files for compiling under SMS/QDOS tandem/ support files for compiling under Tandem NSK @@ -75,7 +76,6 @@ win32/ support files for compiling under Windows 9x and Windows NT wince/ support files for compiling under Windows CE (GUI version) windll/ support files for compiling Windows 3.x/9x/NT DLLs - bzip2/ subfolder for source of externally supplied bzip2 extension man/ nroff man-page sources for the main user documentation proginfo/ programming docs, additional technical info, contributor list diff -Nru unzip-6.0/crc32.c unzip-6.0/crc32.c --- unzip-6.0/crc32.c 2007-01-22 05:34:38.000000000 +0000 +++ unzip-6.0/crc32.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + Copyright (c) 1990-2000 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2005-Feb-10 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in zip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -9,724 +9,56 @@ /* crc32.c -- compute the CRC-32 of a data stream * Copyright (C) 1995 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h - * - * Thanks to Rodney Brown for his contribution of faster - * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing - * tables for updating the shift register in one step with three exclusive-ors - * instead of four steps with four exclusive-ors. This results about a factor - * of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3. */ -/* $Id: crc32.c,v 2.0 2007/01/07 05:20:36 spc Exp $ */ +/* $Id: crc32.c,v 1.5 1996/01/13 14:55:12 spc Exp $ */ #define __CRC32_C /* identifies this source module */ #include "zip.h" -#if (!defined(USE_ZLIB) || defined(USE_OWN_CRCTAB)) +#ifndef USE_ZLIB +#ifndef ASM_CRC #ifndef ZCONST # define ZCONST const #endif -#include "crc32.h" - -/* When only the table of precomputed CRC values is needed, only the basic - system-independent table containing 256 entries is created; any support - for "unfolding" optimization is disabled. - */ -#if (defined(USE_ZLIB) || defined(CRC_TABLE_ONLY)) -# ifdef IZ_CRCOPTIM_UNFOLDTBL -# undef IZ_CRCOPTIM_UNFOLDTBL -# endif -#endif /* (USE_ZLIB || CRC_TABLE_ONLY) */ - -#if defined(IZ_CRCOPTIM_UNFOLDTBL) -# define CRC_TBLS 4 -#else -# define CRC_TBLS 1 +#ifdef CRC32 +# undef CRC32 #endif - - -/* - Generate tables for a byte-wise 32-bit CRC calculation on the polynomial: - x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1. - - Polynomials over GF(2) are represented in binary, one bit per coefficient, - with the lowest powers in the most significant bit. Then adding polynomials - is just exclusive-or, and multiplying a polynomial by x is a right shift by - one. If we call the above polynomial p, and represent a byte as the - polynomial q, also with the lowest power in the most significant bit (so the - byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, - where a mod b means the remainder after dividing a by b. - - This calculation is done using the shift-register method of multiplying and - taking the remainder. The register is initialized to zero, and for each - incoming bit, x^32 is added mod p to the register if the bit is a one (where - x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by - x (which is shifting right by one and adding x^32 mod p if the bit shifted - out is a one). We start with the highest power (least significant bit) of - q and repeat for all eight bits of q. - - The first (or only) table is simply the CRC of all possible eight bit values. - This is all the information needed to generate CRC's on data a byte-at-a-time - for all combinations of CRC register values and incoming bytes. - The remaining 3 tables (if IZ_CRCOPTIM_UNFOLDTBL is enabled) allow for - word-at-a-time CRC calculation, where a word is four bytes. -*/ - -#ifdef DYNAMIC_CRC_TABLE - -/* ========================================================================= - * Make the crc table. This function is needed only if you want to compute - * the table dynamically. - */ - -local void make_crc_table OF((void)); - -#if (defined(DYNALLOC_CRCTAB) && defined(REENTRANT)) - error: Dynamic allocation of CRC table not safe with reentrant code. -#endif /* DYNALLOC_CRCTAB && REENTRANT */ - -#ifdef DYNALLOC_CRCTAB - local ulg near *crc_table = NULL; -# if 0 /* not used, since sizeof("near *") <= sizeof(int) */ - /* Use this section when access to a "local int" is faster than access to - a "local pointer" (e.g.: i86 16bit code with far pointers). */ - local int crc_table_empty = 1; -# define CRC_TABLE_IS_EMPTY (crc_table_empty != 0) -# define MARK_CRCTAB_FILLED crc_table_empty = 0 -# define MARK_CRCTAB_EMPTY crc_table_empty = 1 -# else - /* Use this section on systems where the size of pointers and ints is - equal (e.g.: all 32bit systems). */ -# define CRC_TABLE_IS_EMPTY (crc_table == NULL) -# define MARK_CRCTAB_FILLED crc_table = crctab_p -# define MARK_CRCTAB_EMPTY crc_table = NULL -# endif -#else /* !DYNALLOC_CRCTAB */ - local ulg near crc_table[CRC_TBLS*256]; - local int crc_table_empty = 1; -# define CRC_TABLE_IS_EMPTY (crc_table_empty != 0) -# define MARK_CRCTAB_FILLED crc_table_empty = 0 -#endif /* ?DYNALLOC_CRCTAB */ - - -local void make_crc_table() -{ - ulg c; /* crc shift register */ - int n; /* counter for all possible eight bit values */ - int k; /* byte being shifted into crc apparatus */ -#ifdef DYNALLOC_CRCTAB - ulg near *crctab_p; /* temporary pointer to allocated crc_table area */ -#else /* !DYNALLOC_CRCTAB */ -# define crctab_p crc_table -#endif /* DYNALLOC_CRCTAB */ - -#ifdef COMPUTE_XOR_PATTERN - /* This piece of code has been left here to explain how the XOR pattern - * used in the creation of the crc_table values can be recomputed. - * For production versions of this function, it is more efficient to - * supply the resultant pattern at compile time. - */ - ulg xor; /* polynomial exclusive-or pattern */ - /* terms of polynomial defining this crc (except x^32): */ - static ZCONST uch p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; - - /* make exclusive-or pattern from polynomial (0xedb88320L) */ - xor = 0L; - for (n = 0; n < sizeof(p)/sizeof(uch); n++) - xor |= 1L << (31 - p[n]); -#else -# define xor 0xedb88320L -#endif - -#ifdef DYNALLOC_CRCTAB - crctab_p = (ulg near *) nearmalloc (CRC_TBLS*256*sizeof(ulg)); - if (crctab_p == NULL) { - ziperr(ZE_MEM, "crc_table allocation"); - } -#endif /* DYNALLOC_CRCTAB */ - - /* generate a crc for every 8-bit value */ - for (n = 0; n < 256; n++) { - c = (ulg)n; - for (k = 8; k; k--) - c = c & 1 ? xor ^ (c >> 1) : c >> 1; - crctab_p[n] = REV_BE(c); - } - -#ifdef IZ_CRCOPTIM_UNFOLDTBL - /* generate crc for each value followed by one, two, and three zeros */ - for (n = 0; n < 256; n++) { - c = crctab_p[n]; - for (k = 1; k < 4; k++) { - c = CRC32(c, 0, crctab_p); - crctab_p[k*256+n] = c; - } - } -#endif /* IZ_CRCOPTIM_UNFOLDTBL */ - - MARK_CRCTAB_FILLED; -} - -#else /* !DYNAMIC_CRC_TABLE */ - -#ifdef DYNALLOC_CRCTAB - error: Inconsistent flags, DYNALLOC_CRCTAB without DYNAMIC_CRC_TABLE. -#endif - -/* ======================================================================== - * Table of CRC-32's of all single-byte values (made by make_crc_table) - */ -local ZCONST ulg near crc_table[CRC_TBLS*256] = { -# ifdef IZ_CRC_BE_OPTIMIZ - 0x00000000L, 0x96300777L, 0x2c610eeeL, 0xba510999L, 0x19c46d07L, - 0x8ff46a70L, 0x35a563e9L, 0xa395649eL, 0x3288db0eL, 0xa4b8dc79L, - 0x1ee9d5e0L, 0x88d9d297L, 0x2b4cb609L, 0xbd7cb17eL, 0x072db8e7L, - 0x911dbf90L, 0x6410b71dL, 0xf220b06aL, 0x4871b9f3L, 0xde41be84L, - 0x7dd4da1aL, 0xebe4dd6dL, 0x51b5d4f4L, 0xc785d383L, 0x56986c13L, - 0xc0a86b64L, 0x7af962fdL, 0xecc9658aL, 0x4f5c0114L, 0xd96c0663L, - 0x633d0ffaL, 0xf50d088dL, 0xc8206e3bL, 0x5e10694cL, 0xe44160d5L, - 0x727167a2L, 0xd1e4033cL, 0x47d4044bL, 0xfd850dd2L, 0x6bb50aa5L, - 0xfaa8b535L, 0x6c98b242L, 0xd6c9bbdbL, 0x40f9bcacL, 0xe36cd832L, - 0x755cdf45L, 0xcf0dd6dcL, 0x593dd1abL, 0xac30d926L, 0x3a00de51L, - 0x8051d7c8L, 0x1661d0bfL, 0xb5f4b421L, 0x23c4b356L, 0x9995bacfL, - 0x0fa5bdb8L, 0x9eb80228L, 0x0888055fL, 0xb2d90cc6L, 0x24e90bb1L, - 0x877c6f2fL, 0x114c6858L, 0xab1d61c1L, 0x3d2d66b6L, 0x9041dc76L, - 0x0671db01L, 0xbc20d298L, 0x2a10d5efL, 0x8985b171L, 0x1fb5b606L, - 0xa5e4bf9fL, 0x33d4b8e8L, 0xa2c90778L, 0x34f9000fL, 0x8ea80996L, - 0x18980ee1L, 0xbb0d6a7fL, 0x2d3d6d08L, 0x976c6491L, 0x015c63e6L, - 0xf4516b6bL, 0x62616c1cL, 0xd8306585L, 0x4e0062f2L, 0xed95066cL, - 0x7ba5011bL, 0xc1f40882L, 0x57c40ff5L, 0xc6d9b065L, 0x50e9b712L, - 0xeab8be8bL, 0x7c88b9fcL, 0xdf1ddd62L, 0x492dda15L, 0xf37cd38cL, - 0x654cd4fbL, 0x5861b24dL, 0xce51b53aL, 0x7400bca3L, 0xe230bbd4L, - 0x41a5df4aL, 0xd795d83dL, 0x6dc4d1a4L, 0xfbf4d6d3L, 0x6ae96943L, - 0xfcd96e34L, 0x468867adL, 0xd0b860daL, 0x732d0444L, 0xe51d0333L, - 0x5f4c0aaaL, 0xc97c0dddL, 0x3c710550L, 0xaa410227L, 0x10100bbeL, - 0x86200cc9L, 0x25b56857L, 0xb3856f20L, 0x09d466b9L, 0x9fe461ceL, - 0x0ef9de5eL, 0x98c9d929L, 0x2298d0b0L, 0xb4a8d7c7L, 0x173db359L, - 0x810db42eL, 0x3b5cbdb7L, 0xad6cbac0L, 0x2083b8edL, 0xb6b3bf9aL, - 0x0ce2b603L, 0x9ad2b174L, 0x3947d5eaL, 0xaf77d29dL, 0x1526db04L, - 0x8316dc73L, 0x120b63e3L, 0x843b6494L, 0x3e6a6d0dL, 0xa85a6a7aL, - 0x0bcf0ee4L, 0x9dff0993L, 0x27ae000aL, 0xb19e077dL, 0x44930ff0L, - 0xd2a30887L, 0x68f2011eL, 0xfec20669L, 0x5d5762f7L, 0xcb676580L, - 0x71366c19L, 0xe7066b6eL, 0x761bd4feL, 0xe02bd389L, 0x5a7ada10L, - 0xcc4add67L, 0x6fdfb9f9L, 0xf9efbe8eL, 0x43beb717L, 0xd58eb060L, - 0xe8a3d6d6L, 0x7e93d1a1L, 0xc4c2d838L, 0x52f2df4fL, 0xf167bbd1L, - 0x6757bca6L, 0xdd06b53fL, 0x4b36b248L, 0xda2b0dd8L, 0x4c1b0aafL, - 0xf64a0336L, 0x607a0441L, 0xc3ef60dfL, 0x55df67a8L, 0xef8e6e31L, - 0x79be6946L, 0x8cb361cbL, 0x1a8366bcL, 0xa0d26f25L, 0x36e26852L, - 0x95770cccL, 0x03470bbbL, 0xb9160222L, 0x2f260555L, 0xbe3bbac5L, - 0x280bbdb2L, 0x925ab42bL, 0x046ab35cL, 0xa7ffd7c2L, 0x31cfd0b5L, - 0x8b9ed92cL, 0x1daede5bL, 0xb0c2649bL, 0x26f263ecL, 0x9ca36a75L, - 0x0a936d02L, 0xa906099cL, 0x3f360eebL, 0x85670772L, 0x13570005L, - 0x824abf95L, 0x147ab8e2L, 0xae2bb17bL, 0x381bb60cL, 0x9b8ed292L, - 0x0dbed5e5L, 0xb7efdc7cL, 0x21dfdb0bL, 0xd4d2d386L, 0x42e2d4f1L, - 0xf8b3dd68L, 0x6e83da1fL, 0xcd16be81L, 0x5b26b9f6L, 0xe177b06fL, - 0x7747b718L, 0xe65a0888L, 0x706a0fffL, 0xca3b0666L, 0x5c0b0111L, - 0xff9e658fL, 0x69ae62f8L, 0xd3ff6b61L, 0x45cf6c16L, 0x78e20aa0L, - 0xeed20dd7L, 0x5483044eL, 0xc2b30339L, 0x612667a7L, 0xf71660d0L, - 0x4d476949L, 0xdb776e3eL, 0x4a6ad1aeL, 0xdc5ad6d9L, 0x660bdf40L, - 0xf03bd837L, 0x53aebca9L, 0xc59ebbdeL, 0x7fcfb247L, 0xe9ffb530L, - 0x1cf2bdbdL, 0x8ac2bacaL, 0x3093b353L, 0xa6a3b424L, 0x0536d0baL, - 0x9306d7cdL, 0x2957de54L, 0xbf67d923L, 0x2e7a66b3L, 0xb84a61c4L, - 0x021b685dL, 0x942b6f2aL, 0x37be0bb4L, 0xa18e0cc3L, 0x1bdf055aL, - 0x8def022dL -# ifdef IZ_CRCOPTIM_UNFOLDTBL - , - 0x00000000L, 0x41311b19L, 0x82623632L, 0xc3532d2bL, 0x04c56c64L, - 0x45f4777dL, 0x86a75a56L, 0xc796414fL, 0x088ad9c8L, 0x49bbc2d1L, - 0x8ae8effaL, 0xcbd9f4e3L, 0x0c4fb5acL, 0x4d7eaeb5L, 0x8e2d839eL, - 0xcf1c9887L, 0x5112c24aL, 0x1023d953L, 0xd370f478L, 0x9241ef61L, - 0x55d7ae2eL, 0x14e6b537L, 0xd7b5981cL, 0x96848305L, 0x59981b82L, - 0x18a9009bL, 0xdbfa2db0L, 0x9acb36a9L, 0x5d5d77e6L, 0x1c6c6cffL, - 0xdf3f41d4L, 0x9e0e5acdL, 0xa2248495L, 0xe3159f8cL, 0x2046b2a7L, - 0x6177a9beL, 0xa6e1e8f1L, 0xe7d0f3e8L, 0x2483dec3L, 0x65b2c5daL, - 0xaaae5d5dL, 0xeb9f4644L, 0x28cc6b6fL, 0x69fd7076L, 0xae6b3139L, - 0xef5a2a20L, 0x2c09070bL, 0x6d381c12L, 0xf33646dfL, 0xb2075dc6L, - 0x715470edL, 0x30656bf4L, 0xf7f32abbL, 0xb6c231a2L, 0x75911c89L, - 0x34a00790L, 0xfbbc9f17L, 0xba8d840eL, 0x79dea925L, 0x38efb23cL, - 0xff79f373L, 0xbe48e86aL, 0x7d1bc541L, 0x3c2ade58L, 0x054f79f0L, - 0x447e62e9L, 0x872d4fc2L, 0xc61c54dbL, 0x018a1594L, 0x40bb0e8dL, - 0x83e823a6L, 0xc2d938bfL, 0x0dc5a038L, 0x4cf4bb21L, 0x8fa7960aL, - 0xce968d13L, 0x0900cc5cL, 0x4831d745L, 0x8b62fa6eL, 0xca53e177L, - 0x545dbbbaL, 0x156ca0a3L, 0xd63f8d88L, 0x970e9691L, 0x5098d7deL, - 0x11a9ccc7L, 0xd2fae1ecL, 0x93cbfaf5L, 0x5cd76272L, 0x1de6796bL, - 0xdeb55440L, 0x9f844f59L, 0x58120e16L, 0x1923150fL, 0xda703824L, - 0x9b41233dL, 0xa76bfd65L, 0xe65ae67cL, 0x2509cb57L, 0x6438d04eL, - 0xa3ae9101L, 0xe29f8a18L, 0x21cca733L, 0x60fdbc2aL, 0xafe124adL, - 0xeed03fb4L, 0x2d83129fL, 0x6cb20986L, 0xab2448c9L, 0xea1553d0L, - 0x29467efbL, 0x687765e2L, 0xf6793f2fL, 0xb7482436L, 0x741b091dL, - 0x352a1204L, 0xf2bc534bL, 0xb38d4852L, 0x70de6579L, 0x31ef7e60L, - 0xfef3e6e7L, 0xbfc2fdfeL, 0x7c91d0d5L, 0x3da0cbccL, 0xfa368a83L, - 0xbb07919aL, 0x7854bcb1L, 0x3965a7a8L, 0x4b98833bL, 0x0aa99822L, - 0xc9fab509L, 0x88cbae10L, 0x4f5def5fL, 0x0e6cf446L, 0xcd3fd96dL, - 0x8c0ec274L, 0x43125af3L, 0x022341eaL, 0xc1706cc1L, 0x804177d8L, - 0x47d73697L, 0x06e62d8eL, 0xc5b500a5L, 0x84841bbcL, 0x1a8a4171L, - 0x5bbb5a68L, 0x98e87743L, 0xd9d96c5aL, 0x1e4f2d15L, 0x5f7e360cL, - 0x9c2d1b27L, 0xdd1c003eL, 0x120098b9L, 0x533183a0L, 0x9062ae8bL, - 0xd153b592L, 0x16c5f4ddL, 0x57f4efc4L, 0x94a7c2efL, 0xd596d9f6L, - 0xe9bc07aeL, 0xa88d1cb7L, 0x6bde319cL, 0x2aef2a85L, 0xed796bcaL, - 0xac4870d3L, 0x6f1b5df8L, 0x2e2a46e1L, 0xe136de66L, 0xa007c57fL, - 0x6354e854L, 0x2265f34dL, 0xe5f3b202L, 0xa4c2a91bL, 0x67918430L, - 0x26a09f29L, 0xb8aec5e4L, 0xf99fdefdL, 0x3accf3d6L, 0x7bfde8cfL, - 0xbc6ba980L, 0xfd5ab299L, 0x3e099fb2L, 0x7f3884abL, 0xb0241c2cL, - 0xf1150735L, 0x32462a1eL, 0x73773107L, 0xb4e17048L, 0xf5d06b51L, - 0x3683467aL, 0x77b25d63L, 0x4ed7facbL, 0x0fe6e1d2L, 0xccb5ccf9L, - 0x8d84d7e0L, 0x4a1296afL, 0x0b238db6L, 0xc870a09dL, 0x8941bb84L, - 0x465d2303L, 0x076c381aL, 0xc43f1531L, 0x850e0e28L, 0x42984f67L, - 0x03a9547eL, 0xc0fa7955L, 0x81cb624cL, 0x1fc53881L, 0x5ef42398L, - 0x9da70eb3L, 0xdc9615aaL, 0x1b0054e5L, 0x5a314ffcL, 0x996262d7L, - 0xd85379ceL, 0x174fe149L, 0x567efa50L, 0x952dd77bL, 0xd41ccc62L, - 0x138a8d2dL, 0x52bb9634L, 0x91e8bb1fL, 0xd0d9a006L, 0xecf37e5eL, - 0xadc26547L, 0x6e91486cL, 0x2fa05375L, 0xe836123aL, 0xa9070923L, - 0x6a542408L, 0x2b653f11L, 0xe479a796L, 0xa548bc8fL, 0x661b91a4L, - 0x272a8abdL, 0xe0bccbf2L, 0xa18dd0ebL, 0x62defdc0L, 0x23efe6d9L, - 0xbde1bc14L, 0xfcd0a70dL, 0x3f838a26L, 0x7eb2913fL, 0xb924d070L, - 0xf815cb69L, 0x3b46e642L, 0x7a77fd5bL, 0xb56b65dcL, 0xf45a7ec5L, - 0x370953eeL, 0x763848f7L, 0xb1ae09b8L, 0xf09f12a1L, 0x33cc3f8aL, - 0x72fd2493L - , - 0x00000000L, 0x376ac201L, 0x6ed48403L, 0x59be4602L, 0xdca80907L, - 0xebc2cb06L, 0xb27c8d04L, 0x85164f05L, 0xb851130eL, 0x8f3bd10fL, - 0xd685970dL, 0xe1ef550cL, 0x64f91a09L, 0x5393d808L, 0x0a2d9e0aL, - 0x3d475c0bL, 0x70a3261cL, 0x47c9e41dL, 0x1e77a21fL, 0x291d601eL, - 0xac0b2f1bL, 0x9b61ed1aL, 0xc2dfab18L, 0xf5b56919L, 0xc8f23512L, - 0xff98f713L, 0xa626b111L, 0x914c7310L, 0x145a3c15L, 0x2330fe14L, - 0x7a8eb816L, 0x4de47a17L, 0xe0464d38L, 0xd72c8f39L, 0x8e92c93bL, - 0xb9f80b3aL, 0x3cee443fL, 0x0b84863eL, 0x523ac03cL, 0x6550023dL, - 0x58175e36L, 0x6f7d9c37L, 0x36c3da35L, 0x01a91834L, 0x84bf5731L, - 0xb3d59530L, 0xea6bd332L, 0xdd011133L, 0x90e56b24L, 0xa78fa925L, - 0xfe31ef27L, 0xc95b2d26L, 0x4c4d6223L, 0x7b27a022L, 0x2299e620L, - 0x15f32421L, 0x28b4782aL, 0x1fdeba2bL, 0x4660fc29L, 0x710a3e28L, - 0xf41c712dL, 0xc376b32cL, 0x9ac8f52eL, 0xada2372fL, 0xc08d9a70L, - 0xf7e75871L, 0xae591e73L, 0x9933dc72L, 0x1c259377L, 0x2b4f5176L, - 0x72f11774L, 0x459bd575L, 0x78dc897eL, 0x4fb64b7fL, 0x16080d7dL, - 0x2162cf7cL, 0xa4748079L, 0x931e4278L, 0xcaa0047aL, 0xfdcac67bL, - 0xb02ebc6cL, 0x87447e6dL, 0xdefa386fL, 0xe990fa6eL, 0x6c86b56bL, - 0x5bec776aL, 0x02523168L, 0x3538f369L, 0x087faf62L, 0x3f156d63L, - 0x66ab2b61L, 0x51c1e960L, 0xd4d7a665L, 0xe3bd6464L, 0xba032266L, - 0x8d69e067L, 0x20cbd748L, 0x17a11549L, 0x4e1f534bL, 0x7975914aL, - 0xfc63de4fL, 0xcb091c4eL, 0x92b75a4cL, 0xa5dd984dL, 0x989ac446L, - 0xaff00647L, 0xf64e4045L, 0xc1248244L, 0x4432cd41L, 0x73580f40L, - 0x2ae64942L, 0x1d8c8b43L, 0x5068f154L, 0x67023355L, 0x3ebc7557L, - 0x09d6b756L, 0x8cc0f853L, 0xbbaa3a52L, 0xe2147c50L, 0xd57ebe51L, - 0xe839e25aL, 0xdf53205bL, 0x86ed6659L, 0xb187a458L, 0x3491eb5dL, - 0x03fb295cL, 0x5a456f5eL, 0x6d2fad5fL, 0x801b35e1L, 0xb771f7e0L, - 0xeecfb1e2L, 0xd9a573e3L, 0x5cb33ce6L, 0x6bd9fee7L, 0x3267b8e5L, - 0x050d7ae4L, 0x384a26efL, 0x0f20e4eeL, 0x569ea2ecL, 0x61f460edL, - 0xe4e22fe8L, 0xd388ede9L, 0x8a36abebL, 0xbd5c69eaL, 0xf0b813fdL, - 0xc7d2d1fcL, 0x9e6c97feL, 0xa90655ffL, 0x2c101afaL, 0x1b7ad8fbL, - 0x42c49ef9L, 0x75ae5cf8L, 0x48e900f3L, 0x7f83c2f2L, 0x263d84f0L, - 0x115746f1L, 0x944109f4L, 0xa32bcbf5L, 0xfa958df7L, 0xcdff4ff6L, - 0x605d78d9L, 0x5737bad8L, 0x0e89fcdaL, 0x39e33edbL, 0xbcf571deL, - 0x8b9fb3dfL, 0xd221f5ddL, 0xe54b37dcL, 0xd80c6bd7L, 0xef66a9d6L, - 0xb6d8efd4L, 0x81b22dd5L, 0x04a462d0L, 0x33cea0d1L, 0x6a70e6d3L, - 0x5d1a24d2L, 0x10fe5ec5L, 0x27949cc4L, 0x7e2adac6L, 0x494018c7L, - 0xcc5657c2L, 0xfb3c95c3L, 0xa282d3c1L, 0x95e811c0L, 0xa8af4dcbL, - 0x9fc58fcaL, 0xc67bc9c8L, 0xf1110bc9L, 0x740744ccL, 0x436d86cdL, - 0x1ad3c0cfL, 0x2db902ceL, 0x4096af91L, 0x77fc6d90L, 0x2e422b92L, - 0x1928e993L, 0x9c3ea696L, 0xab546497L, 0xf2ea2295L, 0xc580e094L, - 0xf8c7bc9fL, 0xcfad7e9eL, 0x9613389cL, 0xa179fa9dL, 0x246fb598L, - 0x13057799L, 0x4abb319bL, 0x7dd1f39aL, 0x3035898dL, 0x075f4b8cL, - 0x5ee10d8eL, 0x698bcf8fL, 0xec9d808aL, 0xdbf7428bL, 0x82490489L, - 0xb523c688L, 0x88649a83L, 0xbf0e5882L, 0xe6b01e80L, 0xd1dadc81L, - 0x54cc9384L, 0x63a65185L, 0x3a181787L, 0x0d72d586L, 0xa0d0e2a9L, - 0x97ba20a8L, 0xce0466aaL, 0xf96ea4abL, 0x7c78ebaeL, 0x4b1229afL, - 0x12ac6fadL, 0x25c6adacL, 0x1881f1a7L, 0x2feb33a6L, 0x765575a4L, - 0x413fb7a5L, 0xc429f8a0L, 0xf3433aa1L, 0xaafd7ca3L, 0x9d97bea2L, - 0xd073c4b5L, 0xe71906b4L, 0xbea740b6L, 0x89cd82b7L, 0x0cdbcdb2L, - 0x3bb10fb3L, 0x620f49b1L, 0x55658bb0L, 0x6822d7bbL, 0x5f4815baL, - 0x06f653b8L, 0x319c91b9L, 0xb48adebcL, 0x83e01cbdL, 0xda5e5abfL, - 0xed3498beL - , - 0x00000000L, 0x6567bcb8L, 0x8bc809aaL, 0xeeafb512L, 0x5797628fL, - 0x32f0de37L, 0xdc5f6b25L, 0xb938d79dL, 0xef28b4c5L, 0x8a4f087dL, - 0x64e0bd6fL, 0x018701d7L, 0xb8bfd64aL, 0xddd86af2L, 0x3377dfe0L, - 0x56106358L, 0x9f571950L, 0xfa30a5e8L, 0x149f10faL, 0x71f8ac42L, - 0xc8c07bdfL, 0xada7c767L, 0x43087275L, 0x266fcecdL, 0x707fad95L, - 0x1518112dL, 0xfbb7a43fL, 0x9ed01887L, 0x27e8cf1aL, 0x428f73a2L, - 0xac20c6b0L, 0xc9477a08L, 0x3eaf32a0L, 0x5bc88e18L, 0xb5673b0aL, - 0xd00087b2L, 0x6938502fL, 0x0c5fec97L, 0xe2f05985L, 0x8797e53dL, - 0xd1878665L, 0xb4e03addL, 0x5a4f8fcfL, 0x3f283377L, 0x8610e4eaL, - 0xe3775852L, 0x0dd8ed40L, 0x68bf51f8L, 0xa1f82bf0L, 0xc49f9748L, - 0x2a30225aL, 0x4f579ee2L, 0xf66f497fL, 0x9308f5c7L, 0x7da740d5L, - 0x18c0fc6dL, 0x4ed09f35L, 0x2bb7238dL, 0xc518969fL, 0xa07f2a27L, - 0x1947fdbaL, 0x7c204102L, 0x928ff410L, 0xf7e848a8L, 0x3d58149bL, - 0x583fa823L, 0xb6901d31L, 0xd3f7a189L, 0x6acf7614L, 0x0fa8caacL, - 0xe1077fbeL, 0x8460c306L, 0xd270a05eL, 0xb7171ce6L, 0x59b8a9f4L, - 0x3cdf154cL, 0x85e7c2d1L, 0xe0807e69L, 0x0e2fcb7bL, 0x6b4877c3L, - 0xa20f0dcbL, 0xc768b173L, 0x29c70461L, 0x4ca0b8d9L, 0xf5986f44L, - 0x90ffd3fcL, 0x7e5066eeL, 0x1b37da56L, 0x4d27b90eL, 0x284005b6L, - 0xc6efb0a4L, 0xa3880c1cL, 0x1ab0db81L, 0x7fd76739L, 0x9178d22bL, - 0xf41f6e93L, 0x03f7263bL, 0x66909a83L, 0x883f2f91L, 0xed589329L, - 0x546044b4L, 0x3107f80cL, 0xdfa84d1eL, 0xbacff1a6L, 0xecdf92feL, - 0x89b82e46L, 0x67179b54L, 0x027027ecL, 0xbb48f071L, 0xde2f4cc9L, - 0x3080f9dbL, 0x55e74563L, 0x9ca03f6bL, 0xf9c783d3L, 0x176836c1L, - 0x720f8a79L, 0xcb375de4L, 0xae50e15cL, 0x40ff544eL, 0x2598e8f6L, - 0x73888baeL, 0x16ef3716L, 0xf8408204L, 0x9d273ebcL, 0x241fe921L, - 0x41785599L, 0xafd7e08bL, 0xcab05c33L, 0x3bb659edL, 0x5ed1e555L, - 0xb07e5047L, 0xd519ecffL, 0x6c213b62L, 0x094687daL, 0xe7e932c8L, - 0x828e8e70L, 0xd49eed28L, 0xb1f95190L, 0x5f56e482L, 0x3a31583aL, - 0x83098fa7L, 0xe66e331fL, 0x08c1860dL, 0x6da63ab5L, 0xa4e140bdL, - 0xc186fc05L, 0x2f294917L, 0x4a4ef5afL, 0xf3762232L, 0x96119e8aL, - 0x78be2b98L, 0x1dd99720L, 0x4bc9f478L, 0x2eae48c0L, 0xc001fdd2L, - 0xa566416aL, 0x1c5e96f7L, 0x79392a4fL, 0x97969f5dL, 0xf2f123e5L, - 0x05196b4dL, 0x607ed7f5L, 0x8ed162e7L, 0xebb6de5fL, 0x528e09c2L, - 0x37e9b57aL, 0xd9460068L, 0xbc21bcd0L, 0xea31df88L, 0x8f566330L, - 0x61f9d622L, 0x049e6a9aL, 0xbda6bd07L, 0xd8c101bfL, 0x366eb4adL, - 0x53090815L, 0x9a4e721dL, 0xff29cea5L, 0x11867bb7L, 0x74e1c70fL, - 0xcdd91092L, 0xa8beac2aL, 0x46111938L, 0x2376a580L, 0x7566c6d8L, - 0x10017a60L, 0xfeaecf72L, 0x9bc973caL, 0x22f1a457L, 0x479618efL, - 0xa939adfdL, 0xcc5e1145L, 0x06ee4d76L, 0x6389f1ceL, 0x8d2644dcL, - 0xe841f864L, 0x51792ff9L, 0x341e9341L, 0xdab12653L, 0xbfd69aebL, - 0xe9c6f9b3L, 0x8ca1450bL, 0x620ef019L, 0x07694ca1L, 0xbe519b3cL, - 0xdb362784L, 0x35999296L, 0x50fe2e2eL, 0x99b95426L, 0xfcdee89eL, - 0x12715d8cL, 0x7716e134L, 0xce2e36a9L, 0xab498a11L, 0x45e63f03L, - 0x208183bbL, 0x7691e0e3L, 0x13f65c5bL, 0xfd59e949L, 0x983e55f1L, - 0x2106826cL, 0x44613ed4L, 0xaace8bc6L, 0xcfa9377eL, 0x38417fd6L, - 0x5d26c36eL, 0xb389767cL, 0xd6eecac4L, 0x6fd61d59L, 0x0ab1a1e1L, - 0xe41e14f3L, 0x8179a84bL, 0xd769cb13L, 0xb20e77abL, 0x5ca1c2b9L, - 0x39c67e01L, 0x80fea99cL, 0xe5991524L, 0x0b36a036L, 0x6e511c8eL, - 0xa7166686L, 0xc271da3eL, 0x2cde6f2cL, 0x49b9d394L, 0xf0810409L, - 0x95e6b8b1L, 0x7b490da3L, 0x1e2eb11bL, 0x483ed243L, 0x2d596efbL, - 0xc3f6dbe9L, 0xa6916751L, 0x1fa9b0ccL, 0x7ace0c74L, 0x9461b966L, - 0xf10605deL -# endif /* IZ_CRCOPTIM_UNFOLDTBL */ -# else /* !IZ_CRC_BE_OPTIMIZ */ - 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, - 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, - 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, - 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, - 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L, - 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, - 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, - 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, - 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, - 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL, - 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, - 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, - 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L, - 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, - 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, - 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L, - 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, - 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L, - 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, - 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, - 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL, - 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L, - 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L, - 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL, - 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, - 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L, - 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, - 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, - 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L, - 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, - 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, - 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L, - 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, - 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL, - 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL, - 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L, - 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL, - 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L, - 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, - 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L, - 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL, - 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L, - 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, - 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL, - 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L, - 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L, - 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, - 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L, - 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L, - 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L, - 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, - 0x2d02ef8dL -# ifdef IZ_CRCOPTIM_UNFOLDTBL - , - 0x00000000L, 0x191b3141L, 0x32366282L, 0x2b2d53c3L, 0x646cc504L, - 0x7d77f445L, 0x565aa786L, 0x4f4196c7L, 0xc8d98a08L, 0xd1c2bb49L, - 0xfaefe88aL, 0xe3f4d9cbL, 0xacb54f0cL, 0xb5ae7e4dL, 0x9e832d8eL, - 0x87981ccfL, 0x4ac21251L, 0x53d92310L, 0x78f470d3L, 0x61ef4192L, - 0x2eaed755L, 0x37b5e614L, 0x1c98b5d7L, 0x05838496L, 0x821b9859L, - 0x9b00a918L, 0xb02dfadbL, 0xa936cb9aL, 0xe6775d5dL, 0xff6c6c1cL, - 0xd4413fdfL, 0xcd5a0e9eL, 0x958424a2L, 0x8c9f15e3L, 0xa7b24620L, - 0xbea97761L, 0xf1e8e1a6L, 0xe8f3d0e7L, 0xc3de8324L, 0xdac5b265L, - 0x5d5daeaaL, 0x44469febL, 0x6f6bcc28L, 0x7670fd69L, 0x39316baeL, - 0x202a5aefL, 0x0b07092cL, 0x121c386dL, 0xdf4636f3L, 0xc65d07b2L, - 0xed705471L, 0xf46b6530L, 0xbb2af3f7L, 0xa231c2b6L, 0x891c9175L, - 0x9007a034L, 0x179fbcfbL, 0x0e848dbaL, 0x25a9de79L, 0x3cb2ef38L, - 0x73f379ffL, 0x6ae848beL, 0x41c51b7dL, 0x58de2a3cL, 0xf0794f05L, - 0xe9627e44L, 0xc24f2d87L, 0xdb541cc6L, 0x94158a01L, 0x8d0ebb40L, - 0xa623e883L, 0xbf38d9c2L, 0x38a0c50dL, 0x21bbf44cL, 0x0a96a78fL, - 0x138d96ceL, 0x5ccc0009L, 0x45d73148L, 0x6efa628bL, 0x77e153caL, - 0xbabb5d54L, 0xa3a06c15L, 0x888d3fd6L, 0x91960e97L, 0xded79850L, - 0xc7cca911L, 0xece1fad2L, 0xf5facb93L, 0x7262d75cL, 0x6b79e61dL, - 0x4054b5deL, 0x594f849fL, 0x160e1258L, 0x0f152319L, 0x243870daL, - 0x3d23419bL, 0x65fd6ba7L, 0x7ce65ae6L, 0x57cb0925L, 0x4ed03864L, - 0x0191aea3L, 0x188a9fe2L, 0x33a7cc21L, 0x2abcfd60L, 0xad24e1afL, - 0xb43fd0eeL, 0x9f12832dL, 0x8609b26cL, 0xc94824abL, 0xd05315eaL, - 0xfb7e4629L, 0xe2657768L, 0x2f3f79f6L, 0x362448b7L, 0x1d091b74L, - 0x04122a35L, 0x4b53bcf2L, 0x52488db3L, 0x7965de70L, 0x607eef31L, - 0xe7e6f3feL, 0xfefdc2bfL, 0xd5d0917cL, 0xcccba03dL, 0x838a36faL, - 0x9a9107bbL, 0xb1bc5478L, 0xa8a76539L, 0x3b83984bL, 0x2298a90aL, - 0x09b5fac9L, 0x10aecb88L, 0x5fef5d4fL, 0x46f46c0eL, 0x6dd93fcdL, - 0x74c20e8cL, 0xf35a1243L, 0xea412302L, 0xc16c70c1L, 0xd8774180L, - 0x9736d747L, 0x8e2de606L, 0xa500b5c5L, 0xbc1b8484L, 0x71418a1aL, - 0x685abb5bL, 0x4377e898L, 0x5a6cd9d9L, 0x152d4f1eL, 0x0c367e5fL, - 0x271b2d9cL, 0x3e001cddL, 0xb9980012L, 0xa0833153L, 0x8bae6290L, - 0x92b553d1L, 0xddf4c516L, 0xc4eff457L, 0xefc2a794L, 0xf6d996d5L, - 0xae07bce9L, 0xb71c8da8L, 0x9c31de6bL, 0x852aef2aL, 0xca6b79edL, - 0xd37048acL, 0xf85d1b6fL, 0xe1462a2eL, 0x66de36e1L, 0x7fc507a0L, - 0x54e85463L, 0x4df36522L, 0x02b2f3e5L, 0x1ba9c2a4L, 0x30849167L, - 0x299fa026L, 0xe4c5aeb8L, 0xfdde9ff9L, 0xd6f3cc3aL, 0xcfe8fd7bL, - 0x80a96bbcL, 0x99b25afdL, 0xb29f093eL, 0xab84387fL, 0x2c1c24b0L, - 0x350715f1L, 0x1e2a4632L, 0x07317773L, 0x4870e1b4L, 0x516bd0f5L, - 0x7a468336L, 0x635db277L, 0xcbfad74eL, 0xd2e1e60fL, 0xf9ccb5ccL, - 0xe0d7848dL, 0xaf96124aL, 0xb68d230bL, 0x9da070c8L, 0x84bb4189L, - 0x03235d46L, 0x1a386c07L, 0x31153fc4L, 0x280e0e85L, 0x674f9842L, - 0x7e54a903L, 0x5579fac0L, 0x4c62cb81L, 0x8138c51fL, 0x9823f45eL, - 0xb30ea79dL, 0xaa1596dcL, 0xe554001bL, 0xfc4f315aL, 0xd7626299L, - 0xce7953d8L, 0x49e14f17L, 0x50fa7e56L, 0x7bd72d95L, 0x62cc1cd4L, - 0x2d8d8a13L, 0x3496bb52L, 0x1fbbe891L, 0x06a0d9d0L, 0x5e7ef3ecL, - 0x4765c2adL, 0x6c48916eL, 0x7553a02fL, 0x3a1236e8L, 0x230907a9L, - 0x0824546aL, 0x113f652bL, 0x96a779e4L, 0x8fbc48a5L, 0xa4911b66L, - 0xbd8a2a27L, 0xf2cbbce0L, 0xebd08da1L, 0xc0fdde62L, 0xd9e6ef23L, - 0x14bce1bdL, 0x0da7d0fcL, 0x268a833fL, 0x3f91b27eL, 0x70d024b9L, - 0x69cb15f8L, 0x42e6463bL, 0x5bfd777aL, 0xdc656bb5L, 0xc57e5af4L, - 0xee530937L, 0xf7483876L, 0xb809aeb1L, 0xa1129ff0L, 0x8a3fcc33L, - 0x9324fd72L - , - 0x00000000L, 0x01c26a37L, 0x0384d46eL, 0x0246be59L, 0x0709a8dcL, - 0x06cbc2ebL, 0x048d7cb2L, 0x054f1685L, 0x0e1351b8L, 0x0fd13b8fL, - 0x0d9785d6L, 0x0c55efe1L, 0x091af964L, 0x08d89353L, 0x0a9e2d0aL, - 0x0b5c473dL, 0x1c26a370L, 0x1de4c947L, 0x1fa2771eL, 0x1e601d29L, - 0x1b2f0bacL, 0x1aed619bL, 0x18abdfc2L, 0x1969b5f5L, 0x1235f2c8L, - 0x13f798ffL, 0x11b126a6L, 0x10734c91L, 0x153c5a14L, 0x14fe3023L, - 0x16b88e7aL, 0x177ae44dL, 0x384d46e0L, 0x398f2cd7L, 0x3bc9928eL, - 0x3a0bf8b9L, 0x3f44ee3cL, 0x3e86840bL, 0x3cc03a52L, 0x3d025065L, - 0x365e1758L, 0x379c7d6fL, 0x35dac336L, 0x3418a901L, 0x3157bf84L, - 0x3095d5b3L, 0x32d36beaL, 0x331101ddL, 0x246be590L, 0x25a98fa7L, - 0x27ef31feL, 0x262d5bc9L, 0x23624d4cL, 0x22a0277bL, 0x20e69922L, - 0x2124f315L, 0x2a78b428L, 0x2bbade1fL, 0x29fc6046L, 0x283e0a71L, - 0x2d711cf4L, 0x2cb376c3L, 0x2ef5c89aL, 0x2f37a2adL, 0x709a8dc0L, - 0x7158e7f7L, 0x731e59aeL, 0x72dc3399L, 0x7793251cL, 0x76514f2bL, - 0x7417f172L, 0x75d59b45L, 0x7e89dc78L, 0x7f4bb64fL, 0x7d0d0816L, - 0x7ccf6221L, 0x798074a4L, 0x78421e93L, 0x7a04a0caL, 0x7bc6cafdL, - 0x6cbc2eb0L, 0x6d7e4487L, 0x6f38fadeL, 0x6efa90e9L, 0x6bb5866cL, - 0x6a77ec5bL, 0x68315202L, 0x69f33835L, 0x62af7f08L, 0x636d153fL, - 0x612bab66L, 0x60e9c151L, 0x65a6d7d4L, 0x6464bde3L, 0x662203baL, - 0x67e0698dL, 0x48d7cb20L, 0x4915a117L, 0x4b531f4eL, 0x4a917579L, - 0x4fde63fcL, 0x4e1c09cbL, 0x4c5ab792L, 0x4d98dda5L, 0x46c49a98L, - 0x4706f0afL, 0x45404ef6L, 0x448224c1L, 0x41cd3244L, 0x400f5873L, - 0x4249e62aL, 0x438b8c1dL, 0x54f16850L, 0x55330267L, 0x5775bc3eL, - 0x56b7d609L, 0x53f8c08cL, 0x523aaabbL, 0x507c14e2L, 0x51be7ed5L, - 0x5ae239e8L, 0x5b2053dfL, 0x5966ed86L, 0x58a487b1L, 0x5deb9134L, - 0x5c29fb03L, 0x5e6f455aL, 0x5fad2f6dL, 0xe1351b80L, 0xe0f771b7L, - 0xe2b1cfeeL, 0xe373a5d9L, 0xe63cb35cL, 0xe7fed96bL, 0xe5b86732L, - 0xe47a0d05L, 0xef264a38L, 0xeee4200fL, 0xeca29e56L, 0xed60f461L, - 0xe82fe2e4L, 0xe9ed88d3L, 0xebab368aL, 0xea695cbdL, 0xfd13b8f0L, - 0xfcd1d2c7L, 0xfe976c9eL, 0xff5506a9L, 0xfa1a102cL, 0xfbd87a1bL, - 0xf99ec442L, 0xf85cae75L, 0xf300e948L, 0xf2c2837fL, 0xf0843d26L, - 0xf1465711L, 0xf4094194L, 0xf5cb2ba3L, 0xf78d95faL, 0xf64fffcdL, - 0xd9785d60L, 0xd8ba3757L, 0xdafc890eL, 0xdb3ee339L, 0xde71f5bcL, - 0xdfb39f8bL, 0xddf521d2L, 0xdc374be5L, 0xd76b0cd8L, 0xd6a966efL, - 0xd4efd8b6L, 0xd52db281L, 0xd062a404L, 0xd1a0ce33L, 0xd3e6706aL, - 0xd2241a5dL, 0xc55efe10L, 0xc49c9427L, 0xc6da2a7eL, 0xc7184049L, - 0xc25756ccL, 0xc3953cfbL, 0xc1d382a2L, 0xc011e895L, 0xcb4dafa8L, - 0xca8fc59fL, 0xc8c97bc6L, 0xc90b11f1L, 0xcc440774L, 0xcd866d43L, - 0xcfc0d31aL, 0xce02b92dL, 0x91af9640L, 0x906dfc77L, 0x922b422eL, - 0x93e92819L, 0x96a63e9cL, 0x976454abL, 0x9522eaf2L, 0x94e080c5L, - 0x9fbcc7f8L, 0x9e7eadcfL, 0x9c381396L, 0x9dfa79a1L, 0x98b56f24L, - 0x99770513L, 0x9b31bb4aL, 0x9af3d17dL, 0x8d893530L, 0x8c4b5f07L, - 0x8e0de15eL, 0x8fcf8b69L, 0x8a809decL, 0x8b42f7dbL, 0x89044982L, - 0x88c623b5L, 0x839a6488L, 0x82580ebfL, 0x801eb0e6L, 0x81dcdad1L, - 0x8493cc54L, 0x8551a663L, 0x8717183aL, 0x86d5720dL, 0xa9e2d0a0L, - 0xa820ba97L, 0xaa6604ceL, 0xaba46ef9L, 0xaeeb787cL, 0xaf29124bL, - 0xad6fac12L, 0xacadc625L, 0xa7f18118L, 0xa633eb2fL, 0xa4755576L, - 0xa5b73f41L, 0xa0f829c4L, 0xa13a43f3L, 0xa37cfdaaL, 0xa2be979dL, - 0xb5c473d0L, 0xb40619e7L, 0xb640a7beL, 0xb782cd89L, 0xb2cddb0cL, - 0xb30fb13bL, 0xb1490f62L, 0xb08b6555L, 0xbbd72268L, 0xba15485fL, - 0xb853f606L, 0xb9919c31L, 0xbcde8ab4L, 0xbd1ce083L, 0xbf5a5edaL, - 0xbe9834edL - , - 0x00000000L, 0xb8bc6765L, 0xaa09c88bL, 0x12b5afeeL, 0x8f629757L, - 0x37def032L, 0x256b5fdcL, 0x9dd738b9L, 0xc5b428efL, 0x7d084f8aL, - 0x6fbde064L, 0xd7018701L, 0x4ad6bfb8L, 0xf26ad8ddL, 0xe0df7733L, - 0x58631056L, 0x5019579fL, 0xe8a530faL, 0xfa109f14L, 0x42acf871L, - 0xdf7bc0c8L, 0x67c7a7adL, 0x75720843L, 0xcdce6f26L, 0x95ad7f70L, - 0x2d111815L, 0x3fa4b7fbL, 0x8718d09eL, 0x1acfe827L, 0xa2738f42L, - 0xb0c620acL, 0x087a47c9L, 0xa032af3eL, 0x188ec85bL, 0x0a3b67b5L, - 0xb28700d0L, 0x2f503869L, 0x97ec5f0cL, 0x8559f0e2L, 0x3de59787L, - 0x658687d1L, 0xdd3ae0b4L, 0xcf8f4f5aL, 0x7733283fL, 0xeae41086L, - 0x525877e3L, 0x40edd80dL, 0xf851bf68L, 0xf02bf8a1L, 0x48979fc4L, - 0x5a22302aL, 0xe29e574fL, 0x7f496ff6L, 0xc7f50893L, 0xd540a77dL, - 0x6dfcc018L, 0x359fd04eL, 0x8d23b72bL, 0x9f9618c5L, 0x272a7fa0L, - 0xbafd4719L, 0x0241207cL, 0x10f48f92L, 0xa848e8f7L, 0x9b14583dL, - 0x23a83f58L, 0x311d90b6L, 0x89a1f7d3L, 0x1476cf6aL, 0xaccaa80fL, - 0xbe7f07e1L, 0x06c36084L, 0x5ea070d2L, 0xe61c17b7L, 0xf4a9b859L, - 0x4c15df3cL, 0xd1c2e785L, 0x697e80e0L, 0x7bcb2f0eL, 0xc377486bL, - 0xcb0d0fa2L, 0x73b168c7L, 0x6104c729L, 0xd9b8a04cL, 0x446f98f5L, - 0xfcd3ff90L, 0xee66507eL, 0x56da371bL, 0x0eb9274dL, 0xb6054028L, - 0xa4b0efc6L, 0x1c0c88a3L, 0x81dbb01aL, 0x3967d77fL, 0x2bd27891L, - 0x936e1ff4L, 0x3b26f703L, 0x839a9066L, 0x912f3f88L, 0x299358edL, - 0xb4446054L, 0x0cf80731L, 0x1e4da8dfL, 0xa6f1cfbaL, 0xfe92dfecL, - 0x462eb889L, 0x549b1767L, 0xec277002L, 0x71f048bbL, 0xc94c2fdeL, - 0xdbf98030L, 0x6345e755L, 0x6b3fa09cL, 0xd383c7f9L, 0xc1366817L, - 0x798a0f72L, 0xe45d37cbL, 0x5ce150aeL, 0x4e54ff40L, 0xf6e89825L, - 0xae8b8873L, 0x1637ef16L, 0x048240f8L, 0xbc3e279dL, 0x21e91f24L, - 0x99557841L, 0x8be0d7afL, 0x335cb0caL, 0xed59b63bL, 0x55e5d15eL, - 0x47507eb0L, 0xffec19d5L, 0x623b216cL, 0xda874609L, 0xc832e9e7L, - 0x708e8e82L, 0x28ed9ed4L, 0x9051f9b1L, 0x82e4565fL, 0x3a58313aL, - 0xa78f0983L, 0x1f336ee6L, 0x0d86c108L, 0xb53aa66dL, 0xbd40e1a4L, - 0x05fc86c1L, 0x1749292fL, 0xaff54e4aL, 0x322276f3L, 0x8a9e1196L, - 0x982bbe78L, 0x2097d91dL, 0x78f4c94bL, 0xc048ae2eL, 0xd2fd01c0L, - 0x6a4166a5L, 0xf7965e1cL, 0x4f2a3979L, 0x5d9f9697L, 0xe523f1f2L, - 0x4d6b1905L, 0xf5d77e60L, 0xe762d18eL, 0x5fdeb6ebL, 0xc2098e52L, - 0x7ab5e937L, 0x680046d9L, 0xd0bc21bcL, 0x88df31eaL, 0x3063568fL, - 0x22d6f961L, 0x9a6a9e04L, 0x07bda6bdL, 0xbf01c1d8L, 0xadb46e36L, - 0x15080953L, 0x1d724e9aL, 0xa5ce29ffL, 0xb77b8611L, 0x0fc7e174L, - 0x9210d9cdL, 0x2aacbea8L, 0x38191146L, 0x80a57623L, 0xd8c66675L, - 0x607a0110L, 0x72cfaefeL, 0xca73c99bL, 0x57a4f122L, 0xef189647L, - 0xfdad39a9L, 0x45115eccL, 0x764dee06L, 0xcef18963L, 0xdc44268dL, - 0x64f841e8L, 0xf92f7951L, 0x41931e34L, 0x5326b1daL, 0xeb9ad6bfL, - 0xb3f9c6e9L, 0x0b45a18cL, 0x19f00e62L, 0xa14c6907L, 0x3c9b51beL, - 0x842736dbL, 0x96929935L, 0x2e2efe50L, 0x2654b999L, 0x9ee8defcL, - 0x8c5d7112L, 0x34e11677L, 0xa9362eceL, 0x118a49abL, 0x033fe645L, - 0xbb838120L, 0xe3e09176L, 0x5b5cf613L, 0x49e959fdL, 0xf1553e98L, - 0x6c820621L, 0xd43e6144L, 0xc68bceaaL, 0x7e37a9cfL, 0xd67f4138L, - 0x6ec3265dL, 0x7c7689b3L, 0xc4caeed6L, 0x591dd66fL, 0xe1a1b10aL, - 0xf3141ee4L, 0x4ba87981L, 0x13cb69d7L, 0xab770eb2L, 0xb9c2a15cL, - 0x017ec639L, 0x9ca9fe80L, 0x241599e5L, 0x36a0360bL, 0x8e1c516eL, - 0x866616a7L, 0x3eda71c2L, 0x2c6fde2cL, 0x94d3b949L, 0x090481f0L, - 0xb1b8e695L, 0xa30d497bL, 0x1bb12e1eL, 0x43d23e48L, 0xfb6e592dL, - 0xe9dbf6c3L, 0x516791a6L, 0xccb0a91fL, 0x740cce7aL, 0x66b96194L, - 0xde0506f1L -# endif /* IZ_CRCOPTIM_UNFOLDTBL */ -# endif /* ? IZ_CRC_BE_OPTIMIZ */ -}; -#endif /* ?DYNAMIC_CRC_TABLE */ - -/* use "OF((void))" here to work around a Borland TC++ 1.0 problem */ -#ifdef USE_ZLIB -ZCONST uLongf *get_crc_table OF((void)) -#else -ZCONST ulg near *get_crc_table OF((void)) -#endif -{ -#ifdef DYNAMIC_CRC_TABLE - if (CRC_TABLE_IS_EMPTY) - make_crc_table(); -#endif -#ifdef USE_ZLIB - return (ZCONST uLongf *)crc_table; -#else - return crc_table; -#endif -} - -#ifdef DYNALLOC_CRCTAB -void free_crc_table() -{ - if (!CRC_TABLE_IS_EMPTY) - { - nearfree((ulg near *)crc_table); - MARK_CRCTAB_EMPTY; - } -} -#endif - -#ifndef USE_ZLIB -#ifndef CRC_TABLE_ONLY -#ifndef ASM_CRC - -#define DO1(crc, buf) crc = CRC32(crc, *buf++, crc_32_tab) -#define DO2(crc, buf) DO1(crc, buf); DO1(crc, buf) -#define DO4(crc, buf) DO2(crc, buf); DO2(crc, buf) -#define DO8(crc, buf) DO4(crc, buf); DO4(crc, buf) - -#if (defined(IZ_CRC_BE_OPTIMIZ) || defined(IZ_CRC_LE_OPTIMIZ)) - -# ifdef IZ_CRCOPTIM_UNFOLDTBL -# ifdef IZ_CRC_BE_OPTIMIZ -# define DO_OPT4(c, buf4) c ^= *(buf4)++; \ - c = crc_32_tab[c & 0xff] ^ crc_32_tab[256+((c>>8) & 0xff)] ^ \ - crc_32_tab[2*256+((c>>16) & 0xff)] ^ crc_32_tab[3*256+(c>>24)] -# else /* !IZ_CRC_BE_OPTIMIZ */ -# define DO_OPT4(c, buf4) c ^= *(buf4)++; \ - c = crc_32_tab[3*256+(c & 0xff)] ^ crc_32_tab[2*256+((c>>8) & 0xff)] \ - ^ crc_32_tab[256+((c>>16) & 0xff)] ^ crc_32_tab[c>>24] -# endif /* ?IZ_CRC_BE_OPTIMIZ */ -# else /* !IZ_CRCOPTIM_UNFOLDTBL */ -# define DO_OPT4(c, buf4) c ^= *(buf4)++; \ - c = CRC32UPD(c, crc_32_tab); \ - c = CRC32UPD(c, crc_32_tab); \ - c = CRC32UPD(c, crc_32_tab); \ - c = CRC32UPD(c, crc_32_tab) -# endif /* ?IZ_CRCOPTIM_UNFOLDTBL */ - -# define DO_OPT16(crc, buf4) DO_OPT4(crc, buf4); DO_OPT4(crc, buf4); \ - DO_OPT4(crc, buf4); DO_OPT4(crc, buf4); - -#endif /* (IZ_CRC_BE_OPTIMIZ || IZ_CRC_LE_OPTIMIZ) */ - +#define CRC32(c, b) (crc_table[((int)(c) ^ (b)) & 0xff] ^ ((c) >> 8)) +#define DO1(buf) crc = CRC32(crc, *buf++) +#define DO2(buf) DO1(buf); DO1(buf) +#define DO4(buf) DO2(buf); DO2(buf) +#define DO8(buf) DO4(buf); DO4(buf) /* ========================================================================= */ ulg crc32(crc, buf, len) - ulg crc; /* crc shift register */ + register ulg crc; /* crc shift register */ register ZCONST uch *buf; /* pointer to bytes to pump through */ extent len; /* number of bytes in buf[] */ /* Run a set of bytes through the crc shift register. If buf is a NULL pointer, then initialize the crc shift register contents instead. Return the current crc in either case. */ { - register z_uint4 c; - register ZCONST ulg near *crc_32_tab; + register ZCONST ulg near *crc_table; if (buf == NULL) return 0L; - crc_32_tab = get_crc_table(); - - c = (REV_BE((z_uint4)crc) ^ 0xffffffffL); + crc_table = get_crc_table(); -#if (defined(IZ_CRC_BE_OPTIMIZ) || defined(IZ_CRC_LE_OPTIMIZ)) - /* Align buf pointer to next DWORD boundary. */ - while (len && ((ptrdiff_t)buf & 3)) { - DO1(c, buf); - len--; - } - { - ZCONST z_uint4 *buf4 = (ZCONST z_uint4 *)buf; - while (len >= 16) { - DO_OPT16(c, buf4); - len -= 16; - } - while (len >= 4) { - DO_OPT4(c, buf4); - len -= 4; - } - buf = (ZCONST uch *)buf4; - } -#else /* !(IZ_CRC_BE_OPTIMIZ || IZ_CRC_LE_OPTIMIZ) */ + crc = crc ^ 0xffffffffL; #ifndef NO_UNROLLED_LOOPS while (len >= 8) { - DO8(c, buf); + DO8(buf); len -= 8; } -#endif /* !NO_UNROLLED_LOOPS */ -#endif /* ?(IZ_CRC_BE_OPTIMIZ || IZ_CRC_LE_OPTIMIZ) */ +#endif if (len) do { - DO1(c, buf); + DO1(buf); } while (--len); - - return REV_BE(c) ^ 0xffffffffL; /* (instead of ~c for 64-bit machines) */ + return crc ^ 0xffffffffL; /* (instead of ~c for 64-bit machines) */ } #endif /* !ASM_CRC */ -#endif /* !CRC_TABLE_ONLY */ #endif /* !USE_ZLIB */ -#endif /* !USE_ZLIB || USE_OWN_CRCTAB */ diff -Nru unzip-6.0/crc_i386.S unzip-6.0/crc_i386.S --- unzip-6.0/crc_i386.S 2007-01-07 05:02:58.000000000 +0000 +++ unzip-6.0/crc_i386.S 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in zip.h) for terms of use. @@ -8,7 +8,7 @@ */ /* * crc_i386.S, optimized CRC calculation function for Zip and UnZip, - * created by Paul Kienitz and Christian Spieler. Last revised 07 Jan 2007. + * created by Paul Kienitz and Christian Spieler. Last revised 16 Jan 2005. * * GRR 961110: incorporated Scott Field optimizations from win32/crc_i386.asm * => overall 6% speedup in "unzip -tq" on 9MB zipfile (486-66) @@ -27,10 +27,6 @@ * COS 050116: Enabled the 686 build by default, because there are hardly any * pre-686 CPUs in serious use nowadays. (See SPC 970402 above.) * - * SPC 060103: Updated code to incorporate newer optimizations found in zlib. - * - * SPC 070107: Added conditional switch to deactivate crc32() compilation. - * * FLAT memory model assumed. Calling interface: * - args are pushed onto the stack from right to left, * - return value is given in the EAX register, @@ -45,10 +41,8 @@ * This results in shorter code at the expense of reduced performance. */ -/* This file is NOT used in conjunction with zlib, or when only creation of - * the basic CRC_32_Table (for other purpose) is requested. - */ -#if !defined(USE_ZLIB) && !defined(CRC_TABLE_ONLY) +/* This file is NOT used in conjunction with zlib. */ +#ifndef USE_ZLIB /* Preprocess with -DNO_UNDERLINE if your C compiler does not prefix * external symbols with an underline character '_'. @@ -128,70 +122,19 @@ xorl (%edi, %ebx, 4), %eax ;/* c ^=table[tmp] */ #endif /* ?__686 */ -#define Do_CRC_byte /* c = (c >> 8) ^ table[(c^*buf++)&0xFF] */\ +#define Do_CRC_byte /* c = (c >> 8) ^ table[(c^*buf++)&0xFF] */\ xorb (%esi), %al ;/* c ^= *buf */\ incl %esi ;/* buf++ */\ Do_CRC -#define Do_CRC_byteof(ofs) /* c = (c >> 8) ^ table[(c^*buf++)&0xFF] */\ - xorb ofs(%esi), %al ;/* c ^= *buf */\ - incl %esi ;/* buf++ */\ - Do_CRC - #ifndef NO_32_BIT_LOADS -# ifdef IZ_CRCOPTIM_UNFOLDTBL - /* the edx register is needed in crc calculation */ -# define SavLen arg3 -# define UpdCRC_lword \ - movzbl %al, %ebx ; \ - movl 3072(%edi,%ebx,4), %edx ; \ - movzbl %ah, %ebx ; \ - shrl $16, %eax ; \ - xor 2048(%edi,%ebx,4), %edx ; \ - movzbl %al, %ebx ; \ - shrl $8,%eax ; \ - xorl 1024(%edi,%ebx,4), %edx ; \ - movl (%edi,%eax,4), %eax ; \ - xorl %edx,%eax ; -# define UpdCRC_lword_sh(dwPtrIncr) \ - movzbl %al, %ebx ; \ - movl 3072(%edi,%ebx,4), %edx ; \ - movzbl %ah, %ebx ; \ - shrl $16, %eax ; \ - xor 2048(%edi,%ebx,4), %edx ; \ - movzbl %al, %ebx ; \ - addl $4*(dwPtrIncr), %esi ;/* ((ulg *)buf)+=dwPtrIncr */\ - shrl $8,%eax ; \ - xorl 1024(%edi,%ebx,4), %edx ; \ - movl (%edi,%eax,4),%eax ; \ - xorl %edx,%eax ; -# else /* !IZ_CRCOPTIM_UNFOLDTBL */ - /* the edx register is not needed anywhere else */ -# define SavLen %edx -# define UpdCRC_lword \ - Do_CRC \ - Do_CRC \ - Do_CRC \ - Do_CRC -# define UpdCRC_lword_sh(dwPtrIncr) \ +#define Do_CRC_lword \ + xorl (%esi), %eax ;/* c ^= *(ulg *)buf */\ + addl $4, %esi ;/* ((ulg *)buf)++ */\ Do_CRC \ Do_CRC \ - addl $4*(dwPtrIncr), %esi ;/* ((ulg *)buf)++ */\ Do_CRC \ Do_CRC -# endif /* ?IZ_CRCOPTIM_UNFOLDTBL */ -#define Do_CRC_lword \ - xorl (%esi), %eax ;/* c ^= *(ulg *)buf */\ - UpdCRC_lword_sh(1) /* ... ((ulg *)buf)++ */ -#define Do_CRC_4lword \ - xorl (%esi), %eax ;/* c ^= *(ulg *)buf */\ - UpdCRC_lword \ - xorl 4(%esi), %eax ;/* c ^= *((ulg *)buf+1) */\ - UpdCRC_lword \ - xorl 8(%esi), %eax ;/* c ^= *((ulg *)buf+2) */\ - UpdCRC_lword \ - xorl 12(%esi), %eax ;/* c ^= *((ulg *)buf]+3 */\ - UpdCRC_lword_sh(4) /* ... ((ulg *)buf)+=4 */ #endif /* !NO_32_BIT_LOADS */ @@ -233,61 +176,54 @@ jnz .L_align_loop .L_aligned_now: # endif /* !NO_32_BIT_LOADS */ - movl %ecx, SavLen /* save current value of len */ - shrl $4, %ecx /* ecx = len / 16 */ - jz .L_No_Sixteens + movl %ecx, %edx /* save len in edx */ + shrl $3, %ecx /* ecx = len / 8 */ + jz .L_No_Eights /* align loop head at start of 486 internal cache line !! */ ALIGNMENT -.L_Next_Sixteen: +.L_Next_Eight: # ifndef NO_32_BIT_LOADS - Do_CRC_4lword + /* Do_CRC_lword */ + xorl (%esi), %eax ;/* c ^= *(ulg *)buf */ + addl $4, %esi ;/* ((ulg *)buf)++ */ + Do_CRC + Do_CRC + Do_CRC + Do_CRC + /* Do_CRC_lword */ + xorl (%esi), %eax ;/* c ^= *(ulg *)buf */ + addl $4, %esi ;/* ((ulg *)buf)++ */ + Do_CRC + Do_CRC + Do_CRC + Do_CRC # else /* NO_32_BIT_LOADS */ - Do_CRC_byteof(0) - Do_CRC_byteof(1) - Do_CRC_byteof(2) - Do_CRC_byteof(3) - Do_CRC_byteof(4) - Do_CRC_byteof(5) - Do_CRC_byteof(6) - Do_CRC_byteof(7) - Do_CRC_byteof(8) - Do_CRC_byteof(9) - Do_CRC_byteof(10) - Do_CRC_byteof(11) - Do_CRC_byteof(12) - Do_CRC_byteof(13) - Do_CRC_byteof(14) - Do_CRC_byteof(15) - addl $16,%esi ;/* buf += 16 */ + Do_CRC_byte + Do_CRC_byte + Do_CRC_byte + Do_CRC_byte + Do_CRC_byte + Do_CRC_byte + Do_CRC_byte + Do_CRC_byte # endif /* ?NO_32_BIT_LOADS */ decl %ecx - jnz .L_Next_Sixteen + jnz .L_Next_Eight -.L_No_Sixteens: - movl SavLen, %ecx - andl $15, %ecx /* ecx = len % 16 */ -# ifndef NO_32_BIT_LOADS - shrl $2,%ecx /* ecx = len / 4 */ - jz .L_No_Fours -.L_Next_Four: - Do_CRC_lword - decl %ecx - jnz .L_Next_Four -.L_No_Fours: - movl SavLen,%ecx - andl $3,%ecx /* ecx = len % 4 */ -# endif /* !NO_32_BIT_LOADS */ +.L_No_Eights: + movl %edx, %ecx + andl $7, %ecx /* ecx = len % 8 */ #endif /* !NO_UNROLLED_LOOPS */ - jz .L_bail /* > if (len) */ + jz .L_bail /* > if (len) */ /* align loop head at start of 486 internal cache line !! */ ALIGNMENT -.L_loupe: /* > do { */ - Do_CRC_byte /* c = CRC32(c,*buf++,crctab);*/ - decl %ecx /* > } while (--len); */ +.L_loupe: /* > do { */ + Do_CRC_byte /* c = CRC32(c, *buf++); */ + decl %ecx /* > } while (--len); */ jnz .L_loupe -.L_bail: /* > } */ - notl %eax /* > return ~c; */ +.L_bail: /* > } */ + notl %eax /* > return ~c; */ .L_fine: popl %ecx popl %edx @@ -301,4 +237,4 @@ error: this asm version is for 386 only #endif /* i386 || _i386 || _I386 || __i386 */ -#endif /* !USE_ZLIB && !CRC_TABLE_ONLY */ +#endif /* !USE_ZLIB */ diff -Nru unzip-6.0/crctab.c unzip-6.0/crctab.c --- unzip-6.0/crctab.c 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/crctab.c 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,227 @@ +/* + Copyright (c) 1990-2000 Info-ZIP. All rights reserved. + + See the accompanying file LICENSE, version 2000-Apr-09 or later + (the contents of which are also included in zip.h) for terms of use. + If, for some reason, all these files are missing, the Info-ZIP license + also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html +*/ +/* crctab.c -- supply the CRC table needed for CRC-32 calculations. + * Copyright (C) 1995 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* $Id: crctab.c,v 1.4 1996/01/08 14:55:12 jloup Exp $ */ + +/* + Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + The table is simply the CRC of all possible eight bit values. This is all + the information needed to generate CRC's on data a byte at a time for all + combinations of CRC register values and incoming bytes. +*/ + +#define __CRCTAB_C /* identifies this source module */ + +#include "zip.h" + +#if (!defined(USE_ZLIB) || defined(USE_OWN_CRCTAB)) + +#ifndef ZCONST +# define ZCONST const +#endif + +#ifdef DYNAMIC_CRC_TABLE + +/* ========================================================================= + * Make the crc table. This function is needed only if you want to compute + * the table dynamically. + */ + +local void make_crc_table OF((void)); + +#if (defined(DYNALLOC_CRCTAB) && defined(REENTRANT)) + error: Dynamic allocation of CRC table not safe with reentrant code. +#endif /* DYNALLOC_CRCTAB && REENTRANT */ + +#ifdef DYNALLOC_CRCTAB + local ulg near *crc_table = NULL; +# if 0 /* not used, since sizeof("near *") <= sizeof(int) */ + /* Use this section when access to a "local int" is faster than access to + a "local pointer" (e.g.: i86 16bit code with far pointers). */ + local int crc_table_empty = 1; +# define CRC_TABLE_IS_EMPTY (crc_table_empty != 0) +# define MARK_CRCTAB_FILLED crc_table_empty = 0 +# define MARK_CRCTAB_EMPTY crc_table_empty = 1 +# else + /* Use this section on systems where the size of pointers and ints is + equal (e.g.: all 32bit systems). */ +# define CRC_TABLE_IS_EMPTY (crc_table == NULL) +# define MARK_CRCTAB_FILLED crc_table = crctab_p +# define MARK_CRCTAB_EMPTY crc_table = NULL +# endif +#else /* !DYNALLOC_CRCTAB */ + local ulg near crc_table[256]; + local int crc_table_empty = 1; +# define CRC_TABLE_IS_EMPTY (crc_table_empty != 0) +# define MARK_CRCTAB_FILLED crc_table_empty = 0 +#endif /* ?DYNALLOC_CRCTAB */ + + +local void make_crc_table() +{ + ulg c; /* crc shift register */ + int n; /* counter for all possible eight bit values */ + int k; /* byte being shifted into crc apparatus */ +#ifdef DYNALLOC_CRCTAB + ulg near *crctab_p; /* temporary pointer to allocated crc_table area */ +#else /* !DYNALLOC_CRCTAB */ +# define crctab_p crc_table +#endif /* DYNALLOC_CRCTAB */ + +#ifdef COMPUTE_XOR_PATTERN + /* This piece of code has been left here to explain how the XOR pattern + * used in the creation of the crc_table values can be recomputed. + * For production versions of this function, it is more efficient to + * supply the resultant pattern at compile time. + */ + ulg xor; /* polynomial exclusive-or pattern */ + /* terms of polynomial defining this crc (except x^32): */ + static uch p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; + + /* make exclusive-or pattern from polynomial (0xedb88320L) */ + xor = 0L; + for (i = 0; i < sizeof(p)/sizeof(uch); i++) + xor |= 1L << (31 - p[i]); +#else +# define xor 0xedb88320L +#endif + +#ifdef DYNALLOC_CRCTAB + crctab_p = (ulg near *) nearmalloc (256*sizeof(ulg)); + if (crctab_p == NULL) { + ziperr(ZE_MEM, "crc_table allocation"); + } +#endif /* DYNALLOC_CRCTAB */ + + for (n = 0; n < 256; n++) { + c = (ulg)n; + for (k = 8; k; k--) + c = c & 1 ? xor ^ (c >> 1) : c >> 1; + crctab_p[n] = c; + } + MARK_CRCTAB_FILLED; +} + +#else /* !DYNAMIC_CRC_TABLE */ + +#ifdef DYNALLOC_CRCTAB + error: Inconsistent flags, DYNALLOC_CRCTAB without DYNAMIC_CRC_TABLE. +#endif + +/* ======================================================================== + * Table of CRC-32's of all single-byte values (made by make_crc_table) + */ +local ZCONST ulg near crc_table[256] = { + 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, + 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, + 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, + 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, + 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L, + 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, + 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, + 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, + 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, + 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL, + 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, + 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, + 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L, + 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, + 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, + 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L, + 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, + 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L, + 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, + 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, + 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL, + 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L, + 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L, + 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL, + 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, + 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L, + 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, + 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, + 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L, + 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, + 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, + 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L, + 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, + 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL, + 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL, + 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L, + 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL, + 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L, + 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, + 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L, + 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL, + 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L, + 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, + 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL, + 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L, + 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L, + 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, + 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L, + 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L, + 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L, + 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, + 0x2d02ef8dL +}; +#endif /* ?DYNAMIC_CRC_TABLE */ + +/* use "OF((void))" here to work around a Borland TC++ 1.0 problem */ +#ifdef USE_ZLIB +ZCONST uLongf *get_crc_table OF((void)) +#else +ZCONST ulg near *get_crc_table OF((void)) +#endif +{ +#ifdef DYNAMIC_CRC_TABLE + if (CRC_TABLE_IS_EMPTY) + make_crc_table(); +#endif +#ifdef USE_ZLIB + return (ZCONST uLongf *)crc_table; +#else + return (ZCONST ulg near *)crc_table; +#endif +} + +#ifdef DYNALLOC_CRCTAB +void free_crc_table() +{ + if (!CRC_TABLE_IS_EMPTY) + { + nearfree((ulg near *)crc_table); + MARK_CRCTAB_EMPTY; + } +} +#endif + +#endif /* !USE_ZLIB || USE_OWN_CRCTAB */ diff -Nru unzip-6.0/crypt.c unzip-6.0/crypt.c --- unzip-6.0/crypt.c 2007-01-05 15:47:36.000000000 +0000 +++ unzip-6.0/crypt.c 2010-05-14 07:30:18.000000000 +0000 @@ -1,19 +1,18 @@ /* - Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + Copyright (c) 1990-2000 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2005-Feb-10 or later - (the contents of which are also included in (un)zip.h) for terms of use. + See the accompanying file LICENSE, version 2000-Apr-09 or later + (the contents of which are also included in zip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html */ /* crypt.c (full version) by Info-ZIP. Last revised: [see crypt.h] - The main encryption/decryption source code for Info-Zip software was - originally written in Europe. To the best of our knowledge, it can - be freely distributed in both source and object forms from any country, - including the USA under License Exception TSU of the U.S. Export - Administration Regulations (section 740.13(e)) of 6 June 2002. + This encryption/decryption source code for Info-Zip software was + originally written in Europe. The whole source package can be + freely distributed, including from the USA. (Prior to January 2000, + re-export from the US was a violation of US law.) NOTE on copyright history: Previous versions of this source package (up to version 2.8) were @@ -97,29 +96,7 @@ #endif /* UNZIP */ #ifndef UNZIP /* moved to globals.h for UnZip */ -# ifndef Z_UINT4_DEFINED -# if !defined(NO_LIMITS_H) -# if (defined(UINT_MAX) && (UINT_MAX == 0xffffffffUL)) - typedef unsigned int z_uint4; -# define Z_UINT4_DEFINED -# else -# if (defined(ULONG_MAX) && (ULONG_MAX == 0xffffffffUL)) - typedef unsigned long z_uint4; -# define Z_UINT4_DEFINED -# else -# if (defined(USHRT_MAX) && (USHRT_MAX == 0xffffffffUL)) - typedef unsigned short z_uint4; -# define Z_UINT4_DEFINED -# endif -# endif -# endif -# endif /* !NO_LIMITS_H */ -# endif /* !Z_UINT4_DEFINED */ -# ifndef Z_UINT4_DEFINED - typedef ulg z_uint4; -# define Z_UINT4_DEFINED -# endif - local z_uint4 keys[3]; /* keys defining the pseudo-random sequence */ + local ulg keys[3]; /* keys defining the pseudo-random sequence */ #endif /* !UNZIP */ #ifndef Trace @@ -130,18 +107,11 @@ # endif #endif -#include "crc32.h" +#ifndef CRC_32_TAB +# define CRC_32_TAB crc_32_tab +#endif -#ifdef IZ_CRC_BE_OPTIMIZ - local z_uint4 near crycrctab[256]; - local z_uint4 near *cry_crctb_p = NULL; - local z_uint4 near *crytab_init OF((__GPRO)); -# define CRY_CRC_TAB cry_crctb_p -# undef CRC32 -# define CRC32(c, b, crctab) (crctab[((int)(c) ^ (b)) & 0xff] ^ ((c) >> 8)) -#else -# define CRY_CRC_TAB CRC_32_TAB -#endif /* ?IZ_CRC_BE_OPTIMIZ */ +#define CRC32(c, b) (CRC_32_TAB[((int)(c) ^ (b)) & 0xff] ^ ((c) >> 8)) /*********************************************************************** * Return the next byte in the pseudo-random sequence @@ -164,13 +134,12 @@ __GDEF int c; /* byte of plain text */ { - GLOBAL(keys[0]) = CRC32(GLOBAL(keys[0]), c, CRY_CRC_TAB); - GLOBAL(keys[1]) = (GLOBAL(keys[1]) - + (GLOBAL(keys[0]) & 0xff)) - * 134775813L + 1; + GLOBAL(keys[0]) = CRC32(GLOBAL(keys[0]), c); + GLOBAL(keys[1]) += GLOBAL(keys[0]) & 0xff; + GLOBAL(keys[1]) = GLOBAL(keys[1]) * 134775813L + 1; { register int keyshift = (int)(GLOBAL(keys[1]) >> 24); - GLOBAL(keys[2]) = CRC32(GLOBAL(keys[2]), keyshift, CRY_CRC_TAB); + GLOBAL(keys[2]) = CRC32(GLOBAL(keys[2]), keyshift); } return c; } @@ -184,11 +153,6 @@ __GDEF ZCONST char *passwd; /* password string with which to modify keys */ { -#ifdef IZ_CRC_BE_OPTIMIZ - if (cry_crctb_p == NULL) { - cry_crctb_p = crytab_init(__G); - } -#endif GLOBAL(keys[0]) = 305419896L; GLOBAL(keys[1]) = 591751049L; GLOBAL(keys[2]) = 878082192L; @@ -199,29 +163,6 @@ } -/*********************************************************************** - * Initialize the local copy of the table of precomputed crc32 values. - * Whereas the public crc32-table is optimized for crc32 calculations - * on arrays of bytes, the crypt code needs the crc32 values in an - * byte-order-independent form as 32-bit unsigned numbers. On systems - * with Big-Endian byte order using the optimized crc32 code, this - * requires inverting the byte-order of the values in the - * crypt-crc32-table. - */ -#ifdef IZ_CRC_BE_OPTIMIZ -local z_uint4 near *crytab_init(__G) - __GDEF -{ - int i; - - for (i = 0; i < 256; i++) { - crycrctab[i] = REV_BE(CRC_32_TAB[i]); - } - return crycrctab; -} -#endif - - #ifdef ZIP /*********************************************************************** @@ -236,7 +177,8 @@ int n; /* index in random header */ int t; /* temporary */ int c; /* random byte */ - uch header[RAND_HEAD_LEN]; /* random header */ + int ztemp; /* temporary for zencoded value */ + uch header[RAND_HEAD_LEN-2]; /* random header */ static unsigned calls = 0; /* ensure different random header each time */ /* First generate RAND_HEAD_LEN-2 random bytes. We encrypt the @@ -254,11 +196,13 @@ /* Encrypt random header (last two bytes is high word of crc) */ init_keys(passwd); for (n = 0; n < RAND_HEAD_LEN-2; n++) { - header[n] = (uch)zencode(header[n], t); + ztemp = zencode(header[n], t); + putc(ztemp, zfile); } - header[RAND_HEAD_LEN-2] = (uch)zencode((int)(crc >> 16) & 0xff, t); - header[RAND_HEAD_LEN-1] = (uch)zencode((int)(crc >> 24) & 0xff, t); - fwrite(header, 1, RAND_HEAD_LEN, f); + ztemp = zencode((int)(crc >> 16) & 0xff, t); + putc(ztemp, zfile); + ztemp = zencode((int)(crc >> 24) & 0xff, t); + putc(ztemp, zfile); } @@ -294,7 +238,7 @@ crypthead(passwd, z->crc, dest); /* Skip local header in input file */ - if (fseek(source, (long)((4 + LOCHEAD) + (ulg)z->nam + (ulg)z->ext), + if (fseek(source, (long)(4 + LOCHEAD + (ulg)z->nam + (ulg)z->ext), SEEK_CUR)) { return ferror(source) ? ZE_READ : ZE_EOF; } @@ -312,10 +256,6 @@ return ferror(source) ? ZE_READ : ZE_EOF; } if (fflush(dest) == EOF) return ZE_TEMP; - - /* Update number of bytes written to output file */ - tempzn += (4 + LOCHEAD) + z->nam + z->ext + z->siz; - return ZE_OK; } @@ -328,10 +268,7 @@ FILE *source, *dest; /* source and destination files */ ZCONST char *passwd; /* password string */ { -#ifdef ZIP10 - int c0 /* byte preceding the last input byte */ -#endif - int c1; /* last input byte */ + int c0, c1; /* last two input bytes */ ulg offset; /* used for file offsets */ ulg size; /* size of input data */ int r; /* size of encryption header */ @@ -340,7 +277,7 @@ /* Save position and skip local header in input file */ if ((offset = (ulg)ftell(source)) == (ulg)-1L || - fseek(source, (long)((4 + LOCHEAD) + (ulg)z->nam + (ulg)z->ext), + fseek(source, (long)(4 + LOCHEAD + (ulg)z->nam + (ulg)z->ext), SEEK_CUR)) { return ferror(source) ? ZE_READ : ZE_EOF; } @@ -350,9 +287,7 @@ /* Decrypt encryption header, save last two bytes */ c1 = 0; for (r = RAND_HEAD_LEN; r; r--) { -#ifdef ZIP10 c0 = c1; -#endif if ((c1 = getc(source)) == EOF) { return ferror(source) ? ZE_READ : ZE_EOF; } @@ -370,6 +305,7 @@ if ((ush)(c0 | (c1<<8)) != (z->flg & 8 ? (ush) z->tim & 0xffff : (ush)(z->crc >> 16))) { #else + c0++; /* avoid warning on unused variable */ if ((ush)c1 != (z->flg & 8 ? (ush) z->tim >> 8 : (ush)(z->crc >> 24))) { #endif if (fseek(source, offset, SEEK_SET)) { @@ -403,9 +339,6 @@ } if (fflush(dest) == EOF) return ZE_TEMP; - /* Update number of bytes written to output file */ - tempzn += (4 + LOCHEAD) + z->nam + z->ext + z->siz; - return ZE_OK; } @@ -415,9 +348,6 @@ /*********************************************************************** * If requested, encrypt the data in buf, and in any case call fwrite() * with the arguments to zfwrite(). Return what fwrite() returns. - * - * A bug has been found when encrypting large files. See trees.c - * for details and the fix. */ unsigned zfwrite(buf, item_size, nb, f) zvoid *buf; /* data buffer */ diff -Nru unzip-6.0/crypt.h unzip-6.0/crypt.h --- unzip-6.0/crypt.h 2007-01-05 15:55:24.000000000 +0000 +++ unzip-6.0/crypt.h 2010-05-14 07:30:18.000000000 +0000 @@ -1,19 +1,18 @@ /* - Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + Copyright (c) 1990-2004 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2005-Feb-10 or later - (the contents of which are also included in (un)zip.h) for terms of use. + See the accompanying file LICENSE, version 2000-Apr-09 or later + (the contents of which are also included in zip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html */ /* crypt.h (full version) by Info-ZIP. Last revised: [see CR_VERSION_DATE] - The main encryption/decryption source code for Info-Zip software was - originally written in Europe. To the best of our knowledge, it can - be freely distributed in both source and object forms from any country, - including the USA under License Exception TSU of the U.S. Export - Administration Regulations (section 740.13(e)) of 6 June 2002. + This encryption/decryption source code for Info-Zip software was + originally written in Europe. The whole source package can be + freely distributed, including from the USA. (Prior to January 2000, + re-export from the US was a violation of US law.) NOTE on copyright history: Previous versions of this source package (up to version 2.8) were @@ -46,7 +45,7 @@ # define CRYPT 1 /* full version */ #else #if !defined(SFX) -# define CRYPT 1 /* full version for zip and main unzip */ +# define CRYPT 1 /* full version for zip and main unzip*/ #else # define CRYPT 0 /* dummy version for unzip sfx */ #endif @@ -61,13 +60,13 @@ #endif #define CR_MAJORVER 2 -#define CR_MINORVER 11 +#define CR_MINORVER 9 #ifdef CR_BETA -# define CR_BETA_VER "c BETA" -# define CR_VERSION_DATE "05 Jan 2007" /* last real code change */ +# define CR_BETA_VER "a BETA" +# define CR_VERSION_DATE "05 May 2000" /* last real code change */ #else # define CR_BETA_VER "" -# define CR_VERSION_DATE "05 Jan 2007" /* last public release date */ +# define CR_VERSION_DATE "05 May 2000" /* last public release date */ # define CR_RELEASE #endif @@ -122,6 +121,13 @@ #define RAND_HEAD_LEN 12 /* length of encryption random header */ /* the crc_32_tab array has to be provided externally for the crypt calculus */ +#ifndef CRC_32_TAB /* UnZip provides this in globals.h */ +# if (!defined(USE_ZLIB) || defined(USE_OWN_CRCTAB)) + extern ZCONST ulg near *crc_32_tab; +# else + extern ZCONST ulg Far *crc_32_tab; +# endif +#endif /* !CRC_32_TAB */ /* encode byte c, using temp t. Warning: c must not have side effects. */ #define zencode(c,t) (t=decrypt_byte(__G), update_keys(c), t^(c)) diff -Nru unzip-6.0/debian/changelog unzip-6.0/debian/changelog --- unzip-6.0/debian/changelog 2011-01-28 09:30:24.000000000 +0000 +++ unzip-6.0/debian/changelog 2011-09-30 08:56:58.000000000 +0000 @@ -1,51 +1,79 @@ -unzip (6.0-4ubuntu1) natty; urgency=low +unzip (6.0-5~5.52~ja3) oneiric; urgency=low - * Added patch from archlinux which adds the -O option allowing a charset - to be specified for the proper unzipping of non-latin and non-unicode - filenames. (LP: #580961) + * Rebuild for Oneiric. - -- Brian Thomason Wed, 12 Jan 2011 20:08:14 -0500 + -- Jun Kobayashi Fri, 30 Sep 2011 17:56:11 +0900 -unzip (6.0-4) unstable; urgency=low +unzip (6.0-5~5.52~ja2) natty; urgency=low - * Added homepage field to control file. - * Switch to 3.0 (quilt) source format. - * Support cross-build. + * Rebuild for Natty. - -- Santiago Vila Sun, 21 Feb 2010 17:01:00 +0100 + -- Jun Kobayashi Sat, 16 Apr 2011 00:49:03 +0900 -unzip (6.0-3) unstable; urgency=low +unzip (6.0-5~5.52~ja1) maverick; urgency=low - * Added "set -e" to postinst and postrm. + * change version number. - -- Santiago Vila Tue, 09 Feb 2010 23:53:42 +0100 + -- Jun Kobayashi Tue, 05 Oct 2010 03:37:40 +0900 -unzip (6.0-2) unstable; urgency=low +unzip (6.0-4~5.52~ja1) maverick; urgency=low - * Do not ignore errors from make clean (lintian warning) - * Remove .comment section from executables (lintian warning). - * Added mime stuff so that mutt is able to see the contents of a zipfile - using "unzip -l". Closes: #474538. + * change version number. - -- Santiago Vila Mon, 08 Feb 2010 18:44:00 +0100 + -- Jun Kobayashi Mon, 04 Oct 2010 03:43:53 +0900 -unzip (6.0-1) unstable; urgency=low +unzip (6.0-2~5.52~ja5) maverick; urgency=low - * New upstream release. Closes: #496989. - * Enabled new Unicode support. Closes: #197427. This may or may not work - for your already created zipfiles, but it's not a bug unless they were - created using the Unicode feature present in zip 3.0. - * Built using DATE_FORMAT=DF_YMD so that unzip -l show dates in ISO format, - as that's the only available one which makes sense. Closes: #312886. - * Enabled new bzip2 support. Closes: #426798. - * Exit code for zipgrep should now be the right one. Closes: #441997. - * The reason why a file may not be created is now shown. Closes: #478791. - * Summary of changes in this version not being the debian/* files: - - Manpages in section 1, not 1L. - - Branding patch. UnZip by Debian. Original by Info-ZIP. - - Always #include . Debian GNU/kFreeBSD needs it. + * Rebuild for Maverick. - -- Santiago Vila Fri, 08 May 2009 20:02:40 +0200 + -- Jun Kobayashi Mon, 04 Oct 2010 03:12:43 +0900 + +unzip (6.0-2~5.52~ja4) lucid; urgency=low + + * No-change rebuild. + + -- Hajime Mizuno Fri, 14 May 2010 16:27:04 +0900 + +unzip (6.0-2~5.52~ja4~ppa1) lucid; urgency=low + + * fix patchs/01_japanese_charset.dpatch for lucid + + -- Fumihito YOSHIDA Wed, 12 May 2010 00:13:00 +0900 + +unzip (6.0-2~5.52~ja3) lucid; urgency=low + + * Rebuild for Lucid. + + -- Jun Kobayashi Sat, 10 Apr 2010 02:09:54 +0900 + +unzip (6.0-2~5.52~ja2) karmic; urgency=low + + * Rename source archive. + + -- Jun Kobayashi Wed, 28 Oct 2009 04:52:40 +0900 + +unzip (6.0-2~5.52~ja1) karmic; urgency=low + + * Rebuild for Karmic. + * set version number to higher than official unzip version(6.0-1). + + -- Jun Kobayashi Wed, 28 Oct 2009 04:32:46 +0900 + +unzip (5.52-12ubuntu2~ja1) jaunty; urgency=low + + * paches/01_japanese_charset.dpatch + - patch for Japanese filename and password. + + -- Hajime Mizuno Wed, 15 Apr 2009 18:32:57 +0900 + +unzip (5.52-12ubuntu1) jaunty; urgency=low + + * Merge from debian unstable, remaining changes: + - debian/rules: Configure with large file support. + - unzip.c: Change banner to indicate Ubuntu modification. + - support UTF-8 file names. + + -- Michael Vogt Wed, 12 Nov 2008 16:51:21 +0100 unzip (5.52-12) unstable; urgency=medium @@ -54,6 +82,15 @@ -- Santiago Vila Sat, 26 Jul 2008 16:51:38 +0200 +unzip (5.52-11ubuntu1) intrepid; urgency=low + + * Merge with Debian; remaining changes: + - debian/rules: Configure with large file support. + - unzip.c: Change banner to indicate Ubuntu modification. + - support UTF-8 file names. + + -- Matthias Klose Wed, 25 Jun 2008 15:57:03 +0000 + unzip (5.52-11) unstable; urgency=high * Apply patch from Tavis Ormandy to address invalid free() calls in @@ -61,12 +98,50 @@ -- Santiago Vila Thu, 20 Mar 2008 17:53:00 +0100 +unzip (5.52-10ubuntu2) hardy; urgency=low + + * SECURITY UPDATE: arbitrary code execution via heap corruption. + * inflate.c: fix invalid free() calls, patch from Tavis Ormandy. + * References + CVE-2008-0888 + + -- Kees Cook Wed, 19 Mar 2008 12:08:30 -0700 + +unzip (5.52-10ubuntu1) gutsy; urgency=low + + * Merge with Debian; remaining changes: + - debian/rules: Configure with large file support. + - unzip.c: Change banner to indicate Ubuntu modification. + - support UTF-8 file names. + + -- Matthias Klose Tue, 17 Jul 2007 10:03:01 +0000 + unzip (5.52-10) unstable; urgency=low * Fixed typo in unzipsfx(1). Thanks to Kevin Ryde. Closes: #419479. -- Santiago Vila Mon, 2 Jul 2007 18:08:44 +0200 +unzip (5.52-9ubuntu3) feisty; urgency=low + + * Apply patch from https://bugzilla.altlinux.org/long_list.cgi?buglist=4871 + to support UTF-8 file names. Ubuntu #10979. + + -- Matthias Klose Sat, 31 Mar 2007 13:10:40 +0200 + +unzip (5.52-9ubuntu2) feisty; urgency=low + + * Rebuild for changes in the amd64 toolchain. + * Set Ubuntu maintainer address. + + -- Matthias Klose Mon, 5 Mar 2007 01:27:17 +0000 + +unzip (5.52-9ubuntu1) feisty; urgency=low + + * Merge from debian unstable. + + -- Michael Vogt Wed, 22 Nov 2006 12:10:13 +0100 + unzip (5.52-9) unstable; urgency=low * Added appropriate compiler flags for Large File Support (Closes: #192253). @@ -76,6 +151,14 @@ -- Santiago Vila Wed, 30 Aug 2006 10:34:24 +0200 +unzip (5.52-8ubuntu1) edgy; urgency=low + + * Merge from debian unstable; only Ubuntu changes left: + - debian/rules: Configure with large file support. + - unzip.c: Change banner to indicate Ubuntu modification. + + -- Martin Pitt Fri, 30 Jun 2006 11:28:40 +0200 + unzip (5.52-8) unstable; urgency=low * Modified unix/unxcfg.h to always #include . @@ -93,6 +176,43 @@ -- Santiago Vila Thu, 16 Mar 2006 10:31:20 +0100 +unzip (5.52-6ubuntu4) dapper; urgency=low + + * const.h, process.c: Limit the maximum length of displayed file names to + 512 bytes, to avoid spewage with excessively long file names (which caused + buffer overflows until the recent security fix for CVE-2005-4667). + * Thanks to Santiago Vila for pointing this out. + + -- Martin Pitt Thu, 23 Mar 2006 13:00:08 +0100 + +unzip (5.52-6ubuntu3) dapper; urgency=low + + * Previous security update scrambled the output fields in the contents + listing, fix that regression. + + -- Martin Pitt Wed, 15 Feb 2006 12:11:47 +0100 + +unzip (5.52-6ubuntu2) dapper; urgency=low + + * SECURITY UPDATE: Arbitrary code execution on specially crafted long file + names (which should not happen in many scenarios, though). + * unzpriv.h, Info macro: + - Use snprintf() instead of sprintf() as inner formatting function. + - Use fputs() instead of fprintf() as outer function to ignore leftover + format strings which might not have been substituted in the inner + snprintf(). + - Throw away the three different implementations of that macro and use + just one safe one. + - CVE-2005-4667 + + -- Martin Pitt Fri, 10 Feb 2006 20:14:01 +0100 + +unzip (5.52-6ubuntu1) dapper; urgency=low + + * Resynchronise with Debian. + + -- Michael Vogt Wed, 28 Dec 2005 11:02:39 +0100 + unzip (5.52-6) unstable; urgency=medium * Symlinks should work again (Closes: #343680). Fix provided by @@ -100,6 +220,15 @@ -- Santiago Vila Tue, 20 Dec 2005 19:18:32 +0100 +unzip (5.52-5ubuntu1) dapper; urgency=low + + * Resynchronise with Debian. + * Repaired totally scrambled changelog. + * unzip.c: Change Debian banner to 'Ubuntu', as advised by the Debian + maintainer. + + -- Martin Pitt Mon, 21 Nov 2005 20:38:41 +0100 + unzip (5.52-5) unstable; urgency=low * Fixed CAN-2005-2475 the same way it will be fixed in unzip 5.53. @@ -110,6 +239,12 @@ -- Santiago Vila Thu, 17 Nov 2005 16:34:24 +0100 +unzip (5.52-4ubuntu1) dapper; urgency=low + + * Resynchronise with Debian. + + -- Michael Vogt Fri, 11 Nov 2005 13:16:29 +0100 + unzip (5.52-4) unstable; urgency=medium * Fixed toctou vulnerability (Closes: #321927). Modified unix/unix.c @@ -119,6 +254,22 @@ -- Santiago Vila Wed, 9 Nov 2005 18:05:02 +0100 +unzip (5.52-3ubuntu2) breezy; urgency=low + + * SECURITY UPDATE: Fix file permission modification race. + * unix/unix.c: Use fchmod() instead of chmod() to change permissions on the + files unzip actually created, not the files another attacker might have + hardlinked to in the meantime. + * CAN-2005-2475 + + -- Martin Pitt Thu, 29 Sep 2005 17:02:50 +0200 + +unzip (5.52-3ubuntu1) breezy; urgency=low + + * Resynchronise with Debian. + + -- Michael Vogt Tue, 28 Jun 2005 15:46:02 +0200 + unzip (5.52-3) unstable; urgency=low * Put manpages in section 1, not 1L. @@ -140,6 +291,12 @@ -- Santiago Vila Tue, 1 Mar 2005 15:33:54 +0100 +unzip (5.51-2ubuntu1) hoary; urgency=low + + * Fixed unzip of >2GB files, thanks to patch from ard at kwaak.net + + -- Thom May Mon, 28 Feb 2005 15:25:52 +0000 + unzip (5.51-2) unstable; urgency=low * Added unshrinking support (Closes: #252563). @@ -310,3 +467,4 @@ * initial release (used 2 to avoid confusion with old unzip) -- Carl Streeter Tue, 5 Sep 1995 00:00:00 +0000 + diff -Nru unzip-6.0/debian/control unzip-6.0/debian/control --- unzip-6.0/debian/control 2011-01-28 09:30:33.000000000 +0000 +++ unzip-6.0/debian/control 2010-05-14 07:26:14.000000000 +0000 @@ -1,11 +1,10 @@ Source: unzip Section: utils Priority: optional -Maintainer: Ubuntu Developers +Maintainer: Ubuntu Core Developers XSBC-Original-Maintainer: Santiago Vila -Standards-Version: 3.8.4 -Build-Depends: libbz2-dev -Homepage: http://www.info-zip.org/UnZip.html +Standards-Version: 3.7.2 +Build-Depends: dpatch Package: unzip Architecture: any diff -Nru unzip-6.0/debian/copyright.in unzip-6.0/debian/copyright.in --- unzip-6.0/debian/copyright.in 2009-05-07 15:06:50.000000000 +0000 +++ unzip-6.0/debian/copyright.in 2010-05-14 07:26:14.000000000 +0000 @@ -4,7 +4,7 @@ This package is currently maintained by Santiago Vila and built from sources obtained from: -ftp://ftp.info-zip.org/pub/infozip/src/unzip60.tgz +ftp://ftp.info-zip.org/pub/infozip/src/unzip552.tar.gz The changes were fairly minimal, and consisted solely of adding various debian/* files to the distribution, plus several miscellaneous diff -Nru unzip-6.0/debian/mime unzip-6.0/debian/mime --- unzip-6.0/debian/mime 2010-02-07 13:03:49.000000000 +0000 +++ unzip-6.0/debian/mime 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -application/zip; unzip -l %s; nametemplate=%s.zip; copiousoutput diff -Nru unzip-6.0/debian/patches/00list unzip-6.0/debian/patches/00list --- unzip-6.0/debian/patches/00list 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/debian/patches/00list 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1 @@ +01_japanese_charset.dpatch diff -Nru unzip-6.0/debian/patches/01_japanese_charset.dpatch unzip-6.0/debian/patches/01_japanese_charset.dpatch --- unzip-6.0/debian/patches/01_japanese_charset.dpatch 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/debian/patches/01_japanese_charset.dpatch 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,267 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 01_japanese_charset.dpatch by +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad unzip-5.52~/crypt.c unzip-5.52/crypt.c +--- unzip-5.52~/crypt.c 2000-04-24 00:48:34.000000000 +0000 ++++ unzip-5.52/crypt.c 2010-05-12 00:10:52.000000000 +0000 +@@ -156,10 +156,75 @@ + GLOBAL(keys[0]) = 305419896L; + GLOBAL(keys[1]) = 591751049L; + GLOBAL(keys[2]) = 878082192L; ++#ifdef _MBCS ++ char *buf, *bufp, *inbufp; ++ size_t inlen, outlen, size, inleft, outleft; ++ int i, updated = 0; ++ iconv_t cd; ++ static int mode = -1; ++ static char *locale_charset = NULL; ++ ++ if (mode == -1) { ++ const char *ctype = setlocale(LC_CTYPE, ""); ++ size_t ctype_len = 0; ++ if ( ctype != NULL ) ctype_len = strlen(ctype); ++ ++ if ( ( (ctype_len >= 5 ) && (strncmp(ctype + ctype_len - 5, "UTF-8", 5) == 0) ) || ++ ( (ctype_len >= 4 ) && (strncmp(ctype + ctype_len - 4, "utf8", 4) == 0) ) ) { ++ mode = 1; ++ locale_charset = "UTF-8"; ++ } else if ( ( (ctype_len >= 6 ) && (strncmp(ctype + ctype_len - 6, "EUC-JP", 6) == 0) ) || ++ ( (ctype_len >= 5 ) && (strncmp(ctype + ctype_len - 5, "eucJP", 5) == 0) ) || ++ ( (ctype_len >= 4 ) && (strncmp(ctype + ctype_len - 4, "ujis", 4) == 0) ) ) { ++ mode = 2; ++ locale_charset = "EUC-JP"; ++/* ++ } else if ( ( (ctype_len >= 9 ) && (strncmp(ctype + ctype_len - 9, "Shift_JIS", 9) == 0) ) || ++ ( (ctype_len >= 4 ) && (strncmp(ctype + ctype_len - 4, "SJIS", 4) == 0) ) || ++ ( (ctype_len >= 4 ) && (strncmp(ctype + ctype_len - 4, "sjis", 4) == 0) ) ) { ++ mode = 3; ++ locale_charset = "CP932"; ++*/ ++ } else { ++ mode = 0; ++ } ++ } ++ ++ if ( (mode > 0) && (locale_charset != NULL) ) { ++ inlen = strlen(passwd); ++ size = inlen * 6; ++ buf = malloc(size); ++ inleft = inlen; ++ outleft = size; ++ inbufp = passwd; ++ bufp = buf; ++ cd = iconv_open("CP932", locale_charset); ++ if (cd != (iconv_t)-1) { ++ iconv(cd, &inbufp, &inleft, &bufp, &outleft); ++ iconv_close(cd); ++ if (inleft == 0) { ++ outlen = size - outleft; ++ for(i=0; i ++#endif ++ + #endif /* ?CRYPT */ + #endif /* !__crypt_h */ +diff -urNad unzip-5.52~/fileio.c unzip-5.52/fileio.c +--- unzip-5.52~/fileio.c 2008-10-25 06:20:10.000000000 +0000 ++++ unzip-5.52/fileio.c 2010-05-12 00:03:52.000000000 +0000 +@@ -2063,9 +2063,14 @@ + /* translate the text coded in the entry's host-dependent + "extended ASCII" charset into the compiler's (system's) + internal text code page */ ++#ifdef _MBCS ++ if (G.pInfo->hostnum != UNIX_ ) ++ buf_to_locale(G.outbuf); ++#else + Ext_ASCII_TO_Native((char *)G.outbuf, G.pInfo->hostnum, + G.pInfo->hostver, G.pInfo->HasUxAtt, + FALSE); ++#endif + #ifdef WINDLL + /* translate to ANSI (RTL internal codepage may be OEM) */ + INTERN_TO_ISO((char *)G.outbuf, (char *)G.outbuf); +@@ -2077,7 +2082,12 @@ + #endif /* (WIN32 && !_WIN32_WCE) */ + #endif /* ?WINDLL */ + } else { ++#ifdef _MBCS ++ if (G.pInfo->hostnum != UNIX_ ) ++ buf_to_locale(G.outbuf); ++#else + A_TO_N(G.outbuf); /* translate string to native */ ++#endif + } + + #ifdef WINDLL +@@ -2143,10 +2153,15 @@ + return PK_EOF; + G.filename[length] = '\0'; /* terminate w/zero: ASCIIZ */ + ++#ifdef _MBCS ++ if (G.pInfo->hostnum != UNIX_ ) ++ buf_to_locale(G.filename); ++#else + /* translate the Zip entry filename coded in host-dependent "extended + ASCII" into the compiler's (system's) internal text code page */ + Ext_ASCII_TO_Native(G.filename, G.pInfo->hostnum, G.pInfo->hostver, + G.pInfo->HasUxAtt, (option == DS_FN_L)); ++#endif + + if (G.pInfo->lcflag) /* replace with lowercase filename */ + STRLOWER(G.filename, G.filename); +@@ -2476,6 +2491,84 @@ + return (char *)oldptr; + } + ++void buf_to_locale(char *ptr) ++{ ++ char *buf, *bufp, *inbufp; ++ size_t inlen, outlen, size, inleft, outleft; ++ int i; ++ iconv_t cd; ++ static int mode = -1; ++ static char *locale_charset = NULL; ++ static const char* charsets[] = { ++ "UTF-8", ++ "CP932", ++ "EUC-JP", ++ "ISO-2022-JP", ++ NULL ++ }; ++ ++ if (mode == 0) return; ++ ++ if (mode == -1) { ++ const char *ctype = setlocale(LC_CTYPE, ""); ++ if ( ctype == NULL ) { ++ mode = 0; ++ return; ++ } ++ size_t ctype_len = strlen(ctype); ++ ++ if ( ( (ctype_len >= 5 ) && (strncmp(ctype + ctype_len - 5, "UTF-8", 5) == 0) ) || ++ ( (ctype_len >= 5 ) && (strncmp(ctype + ctype_len - 4, "utf8", 4) == 0) ) ) { ++ mode = 1; ++ locale_charset = "UTF-8"; ++ } else if ( ( (ctype_len >= 6 ) && (strncmp(ctype + ctype_len - 6, "EUC-JP", 6) == 0) ) || ++ ( (ctype_len >= 5 ) && (strncmp(ctype + ctype_len - 5, "eucJP", 5) == 0) ) || ++ ( (ctype_len >= 4 ) && (strncmp(ctype + ctype_len - 4, "ujis", 4) == 0) ) ) { ++ mode = 2; ++ locale_charset = "EUC-JP"; ++ } else if ( ( (ctype_len >= 9 ) && (strncmp(ctype + ctype_len - 9, "Shift_JIS", 9) == 0) ) || ++ ( (ctype_len >= 4 ) && (strncmp(ctype + ctype_len - 4, "SJIS", 4) == 0) ) || ++ ( (ctype_len >= 4 ) && (strncmp(ctype + ctype_len - 4, "sjis", 4) == 0) ) ) { ++ mode = 3; ++ locale_charset = "CP932"; ++ } else { ++ mode = 0; ++ return; ++ } ++ } ++ if (locale_charset == NULL) return; ++ ++ inlen = strlen(ptr); ++ size = inlen * 6; ++ buf = malloc(size); ++ ++ for (i=0; charsets[i]; i++) { ++ inleft = inlen; ++ outleft = size; ++ inbufp = ptr; ++ bufp = buf; ++ if (strcmp(locale_charset, charsets[i]) == 0) continue; ++ cd = iconv_open(locale_charset, charsets[i]); ++ if (cd == (iconv_t)-1) continue; ++ iconv(cd, &inbufp, &inleft, &bufp, &outleft); ++ iconv_close(cd); ++ if (inleft != 0) continue; ++ outlen = size - outleft; ++ memcpy(ptr, buf, outlen); ++ ptr[outlen] = '\0'; ++ break; ++ } ++ ++ free(buf); ++} ++ ++int uzmblen(ZCONST unsigned char *ptr) { ++ int i; ++ i = mblen((const char*) ptr, MB_CUR_MAX); ++ if (i >= 0) return i; ++ /* fprintf(stderr, " uzmblen: multi byte strings error (%02x)\n", *ptr); */ ++ return 1; ++} + + #ifdef NEED_UZMBSCHR + /***********************/ +diff -urNad unzip-5.52~/unix/unix.c unzip-5.52/unix/unix.c +--- unzip-5.52~/unix/unix.c 2008-10-25 06:20:10.000000000 +0000 ++++ unzip-5.52/unix/unix.c 2008-10-25 07:13:52.000000000 +0000 +@@ -199,7 +199,7 @@ + } + + /* break the wildspec into a directory part and a wildcard filename */ +- if ((G.wildname = (ZCONST char *)strrchr(wildspec, '/')) == NULL) { ++ if ((G.wildname = (ZCONST char *)MBSRCHR(wildspec, '/')) == NULL) { + G.dirname = "."; + G.dirnamelen = 1; + G.have_dirname = FALSE; +@@ -511,7 +511,7 @@ + *pathcomp = '\0'; /* initialize translation buffer */ + pp = pathcomp; /* point to translation buffer */ + if (uO.jflag) /* junking directories */ +- cp = (char *)strrchr(G.filename, '/'); ++ cp = (char *)MBSRCHR(G.filename, '/'); + if (cp == (char *)NULL) /* no '/' or not junking dirs */ + cp = G.filename; /* point to internal zipfile-member pathname */ + else +diff -urNad unzip-5.52~/unzpriv.h unzip-5.52/unzpriv.h +--- unzip-5.52~/unzpriv.h 2008-10-25 06:20:10.000000000 +0000 ++++ unzip-5.52/unzpriv.h 2008-10-25 07:13:52.000000000 +0000 +@@ -1174,7 +1174,10 @@ + /* Multi Byte Character Set */ + # define ___MBS_TMP_DEF char *___tmp_ptr; + # define ___TMP_PTR ___tmp_ptr +-# define CLEN(ptr) mblen((ZCONST char *)(ptr), MB_CUR_MAX) ++/* # define CLEN(ptr) mblen((ZCONST char *)(ptr), MB_CUR_MAX) */ ++# define CLEN(ptr) uzmblen((ZCONST unsigned char *)(ptr)) ++# include ++ void buf_to_locale(char *ptr); + # ifndef PREINCSTR + # define PREINCSTR(ptr) (ptr += CLEN(ptr)) + # endif diff -Nru unzip-6.0/debian/patches/01-manpages-in-section-1-not-in-section-1l unzip-6.0/debian/patches/01-manpages-in-section-1-not-in-section-1l --- unzip-6.0/debian/patches/01-manpages-in-section-1-not-in-section-1l 2010-02-21 15:14:49.000000000 +0000 +++ unzip-6.0/debian/patches/01-manpages-in-section-1-not-in-section-1l 1970-01-01 00:00:00.000000000 +0000 @@ -1,295 +0,0 @@ -From: Santiago Vila -Subject: In Debian, manpages are in section 1, not in section 1L -X-Debian-version: 5.52-3 - ---- a/man/funzip.1 -+++ b/man/funzip.1 -@@ -20,7 +20,7 @@ - .in -4n - .. - .\" ========================================================================= --.TH FUNZIP 1L "20 April 2009 (v3.95)" "Info-ZIP" -+.TH FUNZIP 1 "20 April 2009 (v3.95)" "Info-ZIP" - .SH NAME - funzip \- filter for extracting from a ZIP archive in a pipe - .PD -@@ -78,7 +78,7 @@ - .EE - .PP - To use \fIzip\fP and \fIfunzip\fP in place of \fIcompress\fP(1) and --\fIzcat\fP(1) (or \fIgzip\fP(1L) and \fIgzcat\fP(1L)) for tape backups: -+\fIzcat\fP(1) (or \fIgzip\fP(1) and \fIgzcat\fP(1)) for tape backups: - .PP - .EX - tar cf \- . | zip \-7 | dd of=/dev/nrst0 obs=8k -@@ -108,8 +108,8 @@ - .PD - .\" ========================================================================= - .SH "SEE ALSO" --\fIgzip\fP(1L), \fIunzip\fP(1L), \fIunzipsfx\fP(1L), \fIzip\fP(1L), --\fIzipcloak\fP(1L), \fIzipinfo\fP(1L), \fIzipnote\fP(1L), \fIzipsplit\fP(1L) -+\fIgzip\fP(1), \fIunzip\fP(1), \fIunzipsfx\fP(1), \fIzip\fP(1), -+\fIzipcloak\fP(1), \fIzipinfo\fP(1), \fIzipnote\fP(1), \fIzipsplit\fP(1) - .PD - .\" ========================================================================= - .SH URL ---- a/man/unzip.1 -+++ b/man/unzip.1 -@@ -20,7 +20,7 @@ - .in -4n - .. - .\" ========================================================================= --.TH UNZIP 1L "20 April 2009 (v6.0)" "Info-ZIP" -+.TH UNZIP 1 "20 April 2009 (v6.0)" "Info-ZIP" - .SH NAME - unzip \- list, test and extract compressed files in a ZIP archive - .PD -@@ -34,7 +34,7 @@ - \fIunzip\fP will list, test, or extract files from a ZIP archive, commonly - found on MS-DOS systems. The default behavior (with no options) is to extract - into the current directory (and subdirectories below it) all files from the --specified ZIP archive. A companion program, \fIzip\fP(1L), creates ZIP -+specified ZIP archive. A companion program, \fIzip\fP(1), creates ZIP - archives; both programs are compatible with archives created by PKWARE's - \fIPKZIP\fP and \fIPKUNZIP\fP for MS-DOS, but in many cases the program - options or default behaviors differ. -@@ -105,8 +105,8 @@ - list of all possible flags. The exhaustive list follows: - .TP - .B \-Z --\fIzipinfo\fP(1L) mode. If the first option on the command line is \fB\-Z\fP, --the remaining options are taken to be \fIzipinfo\fP(1L) options. See the -+\fIzipinfo\fP(1) mode. If the first option on the command line is \fB\-Z\fP, -+the remaining options are taken to be \fIzipinfo\fP(1) options. See the - appropriate manual page for a description of these options. - .TP - .B \-A -@@ -178,7 +178,7 @@ - compressed size and compression ratio figures are independent of the entry's - encryption status and show the correct compression performance. (The complete - size of the encrypted compressed data stream for zipfile entries is reported --by the more verbose \fIzipinfo\fP(1L) reports, see the separate manual.) -+by the more verbose \fIzipinfo\fP(1) reports, see the separate manual.) - When no zipfile is specified (that is, the complete command is simply - ``\fCunzip \-v\fR''), a diagnostic screen is printed. In addition to - the normal header with release date and version, \fIunzip\fP lists the -@@ -379,8 +379,8 @@ - .TP - .B \-N - [Amiga] extract file comments as Amiga filenotes. File comments are created --with the \-c option of \fIzip\fP(1L), or with the \-N option of the Amiga port --of \fIzip\fP(1L), which stores filenotes as comments. -+with the \-c option of \fIzip\fP(1), or with the \-N option of the Amiga port -+of \fIzip\fP(1), which stores filenotes as comments. - .TP - .B \-o - overwrite existing files without prompting. This is a dangerous option, so -@@ -598,7 +598,7 @@ - As suggested by the examples above, the default variable names are UNZIP_OPTS - for VMS (where the symbol used to install \fIunzip\fP as a foreign command - would otherwise be confused with the environment variable), and UNZIP --for all other operating systems. For compatibility with \fIzip\fP(1L), -+for all other operating systems. For compatibility with \fIzip\fP(1), - UNZIPOPT is also accepted (don't ask). If both UNZIP and UNZIPOPT - are defined, however, UNZIP takes precedence. \fIunzip\fP's diagnostic - option (\fB\-v\fP with no zipfile name) can be used to check the values -@@ -648,8 +648,8 @@ - a password is not known, entering a null password (that is, just a carriage - return or ``Enter'') is taken as a signal to skip all further prompting. - Only unencrypted files in the archive(s) will thereafter be extracted. (In --fact, that's not quite true; older versions of \fIzip\fP(1L) and --\fIzipcloak\fP(1L) allowed null passwords, so \fIunzip\fP checks each encrypted -+fact, that's not quite true; older versions of \fIzip\fP(1) and -+\fIzipcloak\fP(1) allowed null passwords, so \fIunzip\fP checks each encrypted - file to see if the null password works. This may result in ``false positives'' - and extraction errors, as noted above.) - .PP -@@ -943,8 +943,8 @@ - .PD - .\" ========================================================================= - .SH "SEE ALSO" --\fIfunzip\fP(1L), \fIzip\fP(1L), \fIzipcloak\fP(1L), \fIzipgrep\fP(1L), --\fIzipinfo\fP(1L), \fIzipnote\fP(1L), \fIzipsplit\fP(1L) -+\fIfunzip\fP(1), \fIzip\fP(1), \fIzipcloak\fP(1), \fIzipgrep\fP(1), -+\fIzipinfo\fP(1), \fIzipnote\fP(1), \fIzipsplit\fP(1) - .PD - .\" ========================================================================= - .SH URL ---- a/man/unzipsfx.1 -+++ b/man/unzipsfx.1 -@@ -20,7 +20,7 @@ - .in -4n - .. - .\" ========================================================================= --.TH UNZIPSFX 1L "20 April 2009 (v6.0)" "Info-ZIP" -+.TH UNZIPSFX 1 "20 April 2009 (v6.0)" "Info-ZIP" - .SH NAME - unzipsfx \- self-extracting stub for prepending to ZIP archives - .PD -@@ -30,7 +30,7 @@ - .PD - .\" ========================================================================= - .SH DESCRIPTION --\fIunzipsfx\fP is a modified version of \fIunzip\fP(1L) designed to be -+\fIunzipsfx\fP is a modified version of \fIunzip\fP(1) designed to be - prepended to existing ZIP archives in order to form self-extracting archives. - Instead of taking its first non-flag argument to be the zipfile(s) to be - extracted, \fIunzipsfx\fP seeks itself under the name by which it was invoked -@@ -109,7 +109,7 @@ - .PD - .\" ========================================================================= - .SH OPTIONS --\fIunzipsfx\fP supports the following \fIunzip\fP(1L) options: \fB\-c\fP -+\fIunzipsfx\fP supports the following \fIunzip\fP(1) options: \fB\-c\fP - and \fB\-p\fP (extract to standard output/screen), \fB\-f\fP and \fB\-u\fP - (freshen and update existing files upon extraction), \fB\-t\fP (test - archive) and \fB\-z\fP (print archive comment). All normal listing options -@@ -118,11 +118,11 @@ - those creating self-extracting archives may wish to include a short listing - in the zipfile comment. - .PP --See \fIunzip\fP(1L) for a more complete description of these options. -+See \fIunzip\fP(1) for a more complete description of these options. - .PD - .\" ========================================================================= - .SH MODIFIERS --\fIunzipsfx\fP currently supports all \fIunzip\fP(1L) modifiers: \fB\-a\fP -+\fIunzipsfx\fP currently supports all \fIunzip\fP(1) modifiers: \fB\-a\fP - (convert text files), \fB\-n\fP (never overwrite), \fB\-o\fP (overwrite - without prompting), \fB\-q\fP (operate quietly), \fB\-C\fP (match names - case-insensitively), \fB\-L\fP (convert uppercase-OS names to lowercase), -@@ -137,18 +137,18 @@ - of course continue to be supported since the zipfile format implies ASCII - storage of text files.) - .PP --See \fIunzip\fP(1L) for a more complete description of these modifiers. -+See \fIunzip\fP(1) for a more complete description of these modifiers. - .PD - .\" ========================================================================= - .SH "ENVIRONMENT OPTIONS" --\fIunzipsfx\fP uses the same environment variables as \fIunzip\fP(1L) does, -+\fIunzipsfx\fP uses the same environment variables as \fIunzip\fP(1) does, - although this is likely to be an issue only for the person creating and --testing the self-extracting archive. See \fIunzip\fP(1L) for details. -+testing the self-extracting archive. See \fIunzip\fP(1) for details. - .PD - .\" ========================================================================= - .SH DECRYPTION --Decryption is supported exactly as in \fIunzip\fP(1L); that is, interactively --with a non-echoing prompt for the password(s). See \fIunzip\fP(1L) for -+Decryption is supported exactly as in \fIunzip\fP(1); that is, interactively -+with a non-echoing prompt for the password(s). See \fIunzip\fP(1) for - details. Once again, note that if the archive has no encrypted files there - is no reason to use a version of \fIunzipsfx\fP with decryption support; - that only adds to the size of the archive. -@@ -286,7 +286,7 @@ - from anywhere in the user's path. The situation is not known for AmigaDOS, - Atari TOS, MacOS, etc. - .PP --As noted above, a number of the normal \fIunzip\fP(1L) functions have -+As noted above, a number of the normal \fIunzip\fP(1) functions have - been removed in order to make \fIunzipsfx\fP smaller: usage and diagnostic - info, listing functions and extraction to other directories. Also, only - stored and deflated files are supported. The latter limitation is mainly -@@ -303,17 +303,17 @@ - defined as a ``debug hunk.'') There may be compatibility problems between - the ROM levels of older Amigas and newer ones. - .PP --All current bugs in \fIunzip\fP(1L) exist in \fIunzipsfx\fP as well. -+All current bugs in \fIunzip\fP(1) exist in \fIunzipsfx\fP as well. - .PD - .\" ========================================================================= - .SH DIAGNOSTICS - \fIunzipsfx\fP's exit status (error level) is identical to that of --\fIunzip\fP(1L); see the corresponding man page. -+\fIunzip\fP(1); see the corresponding man page. - .PD - .\" ========================================================================= - .SH "SEE ALSO" --\fIfunzip\fP(1L), \fIunzip\fP(1L), \fIzip\fP(1L), \fIzipcloak\fP(1L), --\fIzipgrep\fP(1L), \fIzipinfo\fP(1L), \fIzipnote\fP(1L), \fIzipsplit\fP(1L) -+\fIfunzip\fP(1), \fIunzip\fP(1), \fIzip\fP(1), \fIzipcloak\fP(1), -+\fIzipgrep\fP(1), \fIzipinfo\fP(1), \fIzipnote\fP(1), \fIzipsplit\fP(1) - .PD - .PD - .\" ========================================================================= -@@ -330,7 +330,7 @@ - .\" ========================================================================= - .SH AUTHORS - Greg Roelofs was responsible for the basic modifications to UnZip necessary --to create UnZipSFX. See \fIunzip\fP(1L) for the current list of Zip-Bugs -+to create UnZipSFX. See \fIunzip\fP(1) for the current list of Zip-Bugs - authors, or the file CONTRIBS in the UnZip source distribution for the - full list of Info-ZIP contributors. - .PD ---- a/man/zipgrep.1 -+++ b/man/zipgrep.1 -@@ -8,7 +8,7 @@ - .\" zipgrep.1 by Greg Roelofs. - .\" - .\" ========================================================================= --.TH ZIPGREP 1L "20 April 2009" "Info-ZIP" -+.TH ZIPGREP 1 "20 April 2009" "Info-ZIP" - .SH NAME - zipgrep \- search files in a ZIP archive for lines matching a pattern - .PD -@@ -21,7 +21,7 @@ - .SH DESCRIPTION - \fIzipgrep\fP will search files within a ZIP archive for lines matching - the given string or pattern. \fIzipgrep\fP is a shell script and requires --\fIegrep\fP(1) and \fIunzip\fP(1L) to function. Its output is identical to -+\fIegrep\fP(1) and \fIunzip\fP(1) to function. Its output is identical to - that of \fIegrep\fP(1). - .PD - .\" ========================================================================= -@@ -69,8 +69,8 @@ - .PD - .\" ========================================================================= - .SH "SEE ALSO" --\fIegrep\fP(1), \fIunzip\fP(1L), \fIzip\fP(1L), \fIfunzip\fP(1L), --\fIzipcloak\fP(1L), \fIzipinfo\fP(1L), \fIzipnote\fP(1L), \fIzipsplit\fP(1L) -+\fIegrep\fP(1), \fIunzip\fP(1), \fIzip\fP(1), \fIfunzip\fP(1), -+\fIzipcloak\fP(1), \fIzipinfo\fP(1), \fIzipnote\fP(1), \fIzipsplit\fP(1) - .PD - .\" ========================================================================= - .SH URL ---- a/man/zipinfo.1 -+++ b/man/zipinfo.1 -@@ -34,7 +34,7 @@ - .in -4n - .. - .\" ========================================================================= --.TH ZIPINFO 1L "20 April 2009 (v3.0)" "Info-ZIP" -+.TH ZIPINFO 1 "20 April 2009 (v3.0)" "Info-ZIP" - .SH NAME - zipinfo \- list detailed information about a ZIP archive - .PD -@@ -272,7 +272,7 @@ - Note that because of limitations in the MS-DOS format used to store file - times, the seconds field is always rounded to the nearest even second. - For Unix files this is expected to change in the next major releases of --\fIzip\fP(1L) and \fIunzip\fP. -+\fIzip\fP(1) and \fIunzip\fP. - .PP - In addition to individual file information, a default zipfile listing - also includes header and trailer lines: -@@ -361,7 +361,7 @@ - As suggested above, the default variable names are ZIPINFO_OPTS for VMS - (where the symbol used to install \fIzipinfo\fP as a foreign command - would otherwise be confused with the environment variable), and ZIPINFO --for all other operating systems. For compatibility with \fIzip\fP(1L), -+for all other operating systems. For compatibility with \fIzip\fP(1), - ZIPINFOOPT is also accepted (don't ask). If both ZIPINFO and ZIPINFOOPT - are defined, however, ZIPINFO takes precedence. \fIunzip\fP's diagnostic - option (\fB\-v\fP with no zipfile name) can be used to check the values -@@ -496,8 +496,8 @@ - .PP - .\" ========================================================================= - .SH "SEE ALSO" --\fIls\fP(1), \fIfunzip\fP(1L), \fIunzip\fP(1L), \fIunzipsfx\fP(1L), --\fIzip\fP(1L), \fIzipcloak\fP(1L), \fIzipnote\fP(1L), \fIzipsplit\fP(1L) -+\fIls\fP(1), \fIfunzip\fP(1), \fIunzip\fP(1), \fIunzipsfx\fP(1), -+\fIzip\fP(1), \fIzipcloak\fP(1), \fIzipnote\fP(1), \fIzipsplit\fP(1) - .PD - .\" ========================================================================= - .SH URL diff -Nru unzip-6.0/debian/patches/02-branding-patch-this-is-debian-unzip unzip-6.0/debian/patches/02-branding-patch-this-is-debian-unzip --- unzip-6.0/debian/patches/02-branding-patch-this-is-debian-unzip 2010-02-21 15:14:55.000000000 +0000 +++ unzip-6.0/debian/patches/02-branding-patch-this-is-debian-unzip 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -From: Santiago Vila -Subject: "Branding patch": UnZip by Debian. Original by Info-ZIP. -X-Debian-version: 5.52-5 - ---- a/unzip.c -+++ b/unzip.c -@@ -570,8 +570,7 @@ - #else /* !VMS */ - # ifdef COPYRIGHT_CLEAN - static ZCONST char Far UnzipUsageLine1[] = "\ --UnZip %d.%d%d%s of %s, by Info-ZIP. Maintained by C. Spieler. Send\n\ --bug reports using http://www.info-zip.org/zip-bug.html; see README for details.\ -+UnZip %d.%d%d%s of %s, by Debian. Original by Info-ZIP.\ - \n\n"; - # else - static ZCONST char Far UnzipUsageLine1[] = "\ diff -Nru unzip-6.0/debian/patches/03-include-unistd-for-kfreebsd unzip-6.0/debian/patches/03-include-unistd-for-kfreebsd --- unzip-6.0/debian/patches/03-include-unistd-for-kfreebsd 2010-02-21 15:15:02.000000000 +0000 +++ unzip-6.0/debian/patches/03-include-unistd-for-kfreebsd 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -From: Aurelien Jarno -Subject: #include for kFreeBSD -Bug-Debian: http://bugs.debian.org/340693 -X-Debian-version: 5.52-8 - ---- a/unix/unxcfg.h -+++ b/unix/unxcfg.h -@@ -52,6 +52,7 @@ - - #include /* off_t, time_t, dev_t, ... */ - #include -+#include - - #ifdef NO_OFF_T - typedef long zoff_t; diff -Nru unzip-6.0/debian/patches/04-unzip60-alt-iconv-utf8 unzip-6.0/debian/patches/04-unzip60-alt-iconv-utf8 --- unzip-6.0/debian/patches/04-unzip60-alt-iconv-utf8 2011-01-13 01:05:50.000000000 +0000 +++ unzip-6.0/debian/patches/04-unzip60-alt-iconv-utf8 1970-01-01 00:00:00.000000000 +0000 @@ -1,377 +0,0 @@ -From: Giovanni Scafora -Subject: unzip files encoded with non-latin, non-unicode file names - -diff -r e812cb68e51d unix/unix.c ---- a/unix/unix.c Tue Jun 23 23:08:25 2009 -0500 -+++ b/unix/unix.c Thu Jun 25 00:10:29 2009 -0500 -@@ -30,6 +30,9 @@ - #define UNZIP_INTERNAL - #include "unzip.h" - -+#include -+#include -+ - #ifdef SCO_XENIX - # define SYSNDIR - #else /* SCO Unix, AIX, DNIX, TI SysV, Coherent 4.x, ... */ -@@ -1874,3 +1877,90 @@ - } - } - #endif /* QLZIP */ -+ -+ -+typedef struct { -+ char *local_charset; -+ char *archive_charset; -+} CHARSET_MAP; -+ -+/* A mapping of local <-> archive charsets used by default to convert filenames -+ * of DOS/Windows Zip archives. Currently very basic. */ -+static CHARSET_MAP dos_charset_map[] = { -+ { "ANSI_X3.4-1968", "CP850" }, -+ { "ISO-8859-1", "CP850" }, -+ { "CP1252", "CP850" }, -+ { "UTF-8", "CP866" }, -+ { "KOI8-R", "CP866" }, -+ { "KOI8-U", "CP866" }, -+ { "ISO-8859-5", "CP866" } -+}; -+ -+char OEM_CP[MAX_CP_NAME] = ""; -+char ISO_CP[MAX_CP_NAME] = ""; -+ -+/* Try to guess the default value of OEM_CP based on the current locale. -+ * ISO_CP is left alone for now. */ -+void init_conversion_charsets() -+{ -+ const char *local_charset; -+ int i; -+ -+ /* Make a guess only if OEM_CP not already set. */ -+ if(*OEM_CP == '\0') { -+ local_charset = nl_langinfo(CODESET); -+ for(i = 0; i < sizeof(dos_charset_map)/sizeof(CHARSET_MAP); i++) -+ if(!strcasecmp(local_charset, dos_charset_map[i].local_charset)) { -+ strncpy(OEM_CP, dos_charset_map[i].archive_charset, -+ sizeof(OEM_CP)); -+ break; -+ } -+ } -+} -+ -+/* Convert a string from one encoding to the current locale using iconv(). -+ * Be as non-intrusive as possible. If error is encountered during covertion -+ * just leave the string intact. */ -+static void charset_to_intern(char *string, char *from_charset) -+{ -+ iconv_t cd; -+ char *s,*d, *buf; -+ size_t slen, dlen, buflen; -+ const char *local_charset; -+ -+ if(*from_charset == '\0') -+ return; -+ -+ buf = NULL; -+ local_charset = nl_langinfo(CODESET); -+ -+ if((cd = iconv_open(local_charset, from_charset)) == (iconv_t)-1) -+ return; -+ -+ slen = strlen(string); -+ s = string; -+ dlen = buflen = 2*slen; -+ d = buf = malloc(buflen + 1); -+ if(!d) -+ goto cleanup; -+ bzero(buf,buflen); -+ if(iconv(cd, &s, &slen, &d, &dlen) == (size_t)-1) -+ goto cleanup; -+ strncpy(string, buf, buflen); -+ -+ cleanup: -+ free(buf); -+ iconv_close(cd); -+} -+ -+/* Convert a string from OEM_CP to the current locale charset. */ -+inline void oem_intern(char *string) -+{ -+ charset_to_intern(string, OEM_CP); -+} -+ -+/* Convert a string from ISO_CP to the current locale charset. */ -+inline void iso_intern(char *string) -+{ -+ charset_to_intern(string, ISO_CP); -+} -diff -r e812cb68e51d unix/unxcfg.h ---- a/unix/unxcfg.h Tue Jun 23 23:08:25 2009 -0500 -+++ b/unix/unxcfg.h Thu Jun 25 00:10:29 2009 -0500 -@@ -227,4 +227,30 @@ - /* wild_dir, dirname, wildname, matchname[], dirnamelen, have_dirname, */ - /* and notfirstcall are used by do_wild(). */ - -+ -+#define MAX_CP_NAME 25 -+ -+#ifdef SETLOCALE -+# undef SETLOCALE -+#endif -+#define SETLOCALE(category, locale) setlocale(category, locale) -+#include -+ -+#ifdef _ISO_INTERN -+# undef _ISO_INTERN -+#endif -+#define _ISO_INTERN(str1) iso_intern(str1) -+ -+#ifdef _OEM_INTERN -+# undef _OEM_INTERN -+#endif -+#ifndef IZ_OEM2ISO_ARRAY -+# define IZ_OEM2ISO_ARRAY -+#endif -+#define _OEM_INTERN(str1) oem_intern(str1) -+ -+void iso_intern(char *); -+void oem_intern(char *); -+void init_conversion_charsets(void); -+ - #endif /* !__unxcfg_h */ -diff -r e812cb68e51d unzip.c ---- a/unzip.c Tue Jun 23 23:08:25 2009 -0500 -+++ b/unzip.c Thu Jun 25 00:10:29 2009 -0500 -@@ -327,11 +327,21 @@ - -2 just filenames but allow -h/-t/-z -l long Unix \"ls -l\" format\n\ - -v verbose, multi-page format\n"; - -+#ifndef UNIX - static ZCONST char Far ZipInfoUsageLine3[] = "miscellaneous options:\n\ - -h print header line -t print totals for listed files or for all\n\ - -z print zipfile comment -T print file times in sortable decimal format\ - \n -C be case-insensitive %s\ - -x exclude filenames that follow from listing\n"; -+#else /* UNIX */ -+static ZCONST char Far ZipInfoUsageLine3[] = "miscellaneous options:\n\ -+ -h print header line -t print totals for listed files or for all\n\ -+ -z print zipfile comment %c-T%c print file times in sortable decimal format\ -+\n %c-C%c be case-insensitive %s\ -+ -x exclude filenames that follow from listing\n\ -+ -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives\n\ -+ -I CHARSET specify a character encoding for UNIX and other archives\n"; -+#endif /* !UNIX */ - #ifdef MORE - static ZCONST char Far ZipInfoUsageLine4[] = - " -M page output through built-in \"more\"\n"; -@@ -665,6 +675,17 @@ - -U use escapes for all non-ASCII Unicode -UU ignore any Unicode fields\n\ - -C match filenames case-insensitively -L make (some) names \ - lowercase\n %-42s -V retain VMS version numbers\n%s"; -+#elif (defined UNIX) -+static ZCONST char Far UnzipUsageLine4[] = "\ -+modifiers:\n\ -+ -n never overwrite existing files -q quiet mode (-qq => quieter)\n\ -+ -o overwrite files WITHOUT prompting -a auto-convert any text files\n\ -+ -j junk paths (do not make directories) -aa treat ALL files as text\n\ -+ -U use escapes for all non-ASCII Unicode -UU ignore any Unicode fields\n\ -+ -C match filenames case-insensitively -L make (some) names \ -+lowercase\n %-42s -V retain VMS version numbers\n%s\ -+ -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives\n\ -+ -I CHARSET specify a character encoding for UNIX and other archives\n\n"; - #else /* !VMS */ - static ZCONST char Far UnzipUsageLine4[] = "\ - modifiers:\n\ -@@ -803,6 +824,10 @@ - #endif /* UNICODE_SUPPORT */ - - -+#ifdef UNIX -+ init_conversion_charsets(); -+#endif -+ - #if (defined(__IBMC__) && defined(__DEBUG_ALLOC__)) - extern void DebugMalloc(void); - -@@ -1336,6 +1361,11 @@ - argc = *pargc; - argv = *pargv; - -+#ifdef UNIX -+ extern char OEM_CP[MAX_CP_NAME]; -+ extern char ISO_CP[MAX_CP_NAME]; -+#endif -+ - while (++argv, (--argc > 0 && *argv != NULL && **argv == '-')) { - s = *argv + 1; - while ((c = *s++) != 0) { /* "!= 0": prevent Turbo C warning */ -@@ -1517,6 +1547,35 @@ - } - break; - #endif /* MACOS */ -+#ifdef UNIX -+ case ('I'): -+ if (negative) { -+ Info(slide, 0x401, ((char *)slide, -+ "error: encodings can't be negated")); -+ return(PK_PARAM); -+ } else { -+ if(*s) { /* Handle the -Icharset case */ -+ /* Assume that charsets can't start with a dash to spot arguments misuse */ -+ if(*s == '-') { -+ Info(slide, 0x401, ((char *)slide, -+ "error: a valid character encoding should follow the -I argument")); -+ return(PK_PARAM); -+ } -+ strncpy(ISO_CP, s, sizeof(ISO_CP)); -+ } else { /* -I charset */ -+ ++argv; -+ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { -+ Info(slide, 0x401, ((char *)slide, -+ "error: a valid character encoding should follow the -I argument")); -+ return(PK_PARAM); -+ } -+ s = *argv; -+ strncpy(ISO_CP, s, sizeof(ISO_CP)); -+ } -+ while(*(++s)); /* No params straight after charset name */ -+ } -+ break; -+#endif /* ?UNIX */ - case ('j'): /* junk pathnames/directory structure */ - if (negative) - uO.jflag = FALSE, negative = 0; -@@ -1592,6 +1651,35 @@ - } else - ++uO.overwrite_all; - break; -+#ifdef UNIX -+ case ('O'): -+ if (negative) { -+ Info(slide, 0x401, ((char *)slide, -+ "error: encodings can't be negated")); -+ return(PK_PARAM); -+ } else { -+ if(*s) { /* Handle the -Ocharset case */ -+ /* Assume that charsets can't start with a dash to spot arguments misuse */ -+ if(*s == '-') { -+ Info(slide, 0x401, ((char *)slide, -+ "error: a valid character encoding should follow the -I argument")); -+ return(PK_PARAM); -+ } -+ strncpy(OEM_CP, s, sizeof(OEM_CP)); -+ } else { /* -O charset */ -+ ++argv; -+ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { -+ Info(slide, 0x401, ((char *)slide, -+ "error: a valid character encoding should follow the -O argument")); -+ return(PK_PARAM); -+ } -+ s = *argv; -+ strncpy(OEM_CP, s, sizeof(OEM_CP)); -+ } -+ while(*(++s)); /* No params straight after charset name */ -+ } -+ break; -+#endif /* ?UNIX */ - case ('p'): /* pipes: extract to stdout, no messages */ - if (negative) { - uO.cflag = FALSE; -diff -r e812cb68e51d unzpriv.h ---- a/unzpriv.h Tue Jun 23 23:08:25 2009 -0500 -+++ b/unzpriv.h Thu Jun 25 00:10:29 2009 -0500 -@@ -3008,7 +3008,7 @@ - !(((islochdr) || (isuxatt)) && \ - ((hostver) == 25 || (hostver) == 26 || (hostver) == 40))) || \ - (hostnum) == FS_HPFS_ || \ -- ((hostnum) == FS_NTFS_ && (hostver) == 50)) { \ -+ ((hostnum) == FS_NTFS_ /* && (hostver) == 50 */ )) { \ - _OEM_INTERN((string)); \ - } else { \ - _ISO_INTERN((string)); \ -diff -r e812cb68e51d zipinfo.c ---- a/zipinfo.c Tue Jun 23 23:08:25 2009 -0500 -+++ b/zipinfo.c Thu Jun 25 00:10:29 2009 -0500 -@@ -457,6 +457,10 @@ - int tflag_slm=TRUE, tflag_2v=FALSE; - int explicit_h=FALSE, explicit_t=FALSE; - -+#ifdef UNIX -+ extern char OEM_CP[MAX_CP_NAME]; -+ extern char ISO_CP[MAX_CP_NAME]; -+#endif - - #ifdef MACOS - uO.lflag = LFLAG; /* reset default on each call */ -@@ -501,6 +505,35 @@ - uO.lflag = 0; - } - break; -+#ifdef UNIX -+ case ('I'): -+ if (negative) { -+ Info(slide, 0x401, ((char *)slide, -+ "error: encodings can't be negated")); -+ return(PK_PARAM); -+ } else { -+ if(*s) { /* Handle the -Icharset case */ -+ /* Assume that charsets can't start with a dash to spot arguments misuse */ -+ if(*s == '-') { -+ Info(slide, 0x401, ((char *)slide, -+ "error: a valid character encoding should follow the -I argument")); -+ return(PK_PARAM); -+ } -+ strncpy(ISO_CP, s, sizeof(ISO_CP)); -+ } else { /* -I charset */ -+ ++argv; -+ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { -+ Info(slide, 0x401, ((char *)slide, -+ "error: a valid character encoding should follow the -I argument")); -+ return(PK_PARAM); -+ } -+ s = *argv; -+ strncpy(ISO_CP, s, sizeof(ISO_CP)); -+ } -+ while(*(++s)); /* No params straight after charset name */ -+ } -+ break; -+#endif /* ?UNIX */ - case 'l': /* longer form of "ls -l" type listing */ - if (negative) - uO.lflag = -2, negative = 0; -@@ -521,6 +554,35 @@ - G.M_flag = TRUE; - break; - #endif -+#ifdef UNIX -+ case ('O'): -+ if (negative) { -+ Info(slide, 0x401, ((char *)slide, -+ "error: encodings can't be negated")); -+ return(PK_PARAM); -+ } else { -+ if(*s) { /* Handle the -Ocharset case */ -+ /* Assume that charsets can't start with a dash to spot arguments misuse */ -+ if(*s == '-') { -+ Info(slide, 0x401, ((char *)slide, -+ "error: a valid character encoding should follow the -I argument")); -+ return(PK_PARAM); -+ } -+ strncpy(OEM_CP, s, sizeof(OEM_CP)); -+ } else { /* -O charset */ -+ ++argv; -+ if(!(--argc > 0 && *argv != NULL && **argv != '-')) { -+ Info(slide, 0x401, ((char *)slide, -+ "error: a valid character encoding should follow the -O argument")); -+ return(PK_PARAM); -+ } -+ s = *argv; -+ strncpy(OEM_CP, s, sizeof(OEM_CP)); -+ } -+ while(*(++s)); /* No params straight after charset name */ -+ } -+ break; -+#endif /* ?UNIX */ - case 's': /* default: shorter "ls -l" type listing */ - if (negative) - uO.lflag = -2, negative = 0; diff -Nru unzip-6.0/debian/patches/series unzip-6.0/debian/patches/series --- unzip-6.0/debian/patches/series 2011-01-13 01:12:10.000000000 +0000 +++ unzip-6.0/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -01-manpages-in-section-1-not-in-section-1l -02-branding-patch-this-is-debian-unzip -03-include-unistd-for-kfreebsd -04-unzip60-alt-iconv-utf8 diff -Nru unzip-6.0/debian/postinst unzip-6.0/debian/postinst --- unzip-6.0/debian/postinst 2010-02-09 22:51:47.000000000 +0000 +++ unzip-6.0/debian/postinst 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -#!/bin/sh -set -e -if [ "$1" = "configure" ] && [ -x "`which update-mime 2> /dev/null`" ]; then - update-mime -fi diff -Nru unzip-6.0/debian/postrm unzip-6.0/debian/postrm --- unzip-6.0/debian/postrm 2010-02-09 22:51:56.000000000 +0000 +++ unzip-6.0/debian/postrm 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -#!/bin/sh -set -e -if which update-mime > /dev/null 2>&1; then - update-mime -fi diff -Nru unzip-6.0/debian/rules unzip-6.0/debian/rules --- unzip-6.0/debian/rules 2010-02-21 15:46:16.000000000 +0000 +++ unzip-6.0/debian/rules 2010-05-14 07:26:14.000000000 +0000 @@ -2,38 +2,28 @@ package = unzip docdir = debian/tmp/usr/share/doc/$(package) -history = History.600 +history = History.552 CC = gcc -CFLAGS = -g -Wall -DEFINES = -DACORN_FTYPE_NFS -DWILD_STOP_AT_DIR -DLARGE_FILE_SUPPORT \ - -DUNICODE_SUPPORT -DUNICODE_WCHAR -DUTF8_MAYBE_NATIVE -DNO_LCHMOD \ - -DDATE_FORMAT=DF_YMD -DUSE_BZIP2 - -STRIP = true - -DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) -DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) - -ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) - CC=$(DEB_HOST_GNU_TYPE)-gcc -endif +CFLAGS = -g -Wall $$(getconf LFS_CFLAGS) +DEFINES = -DACORN_FTYPE_NFS -DWILD_STOP_AT_DIR -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_MBCS +INSTALL_PROGRAM = install ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O2 endif ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) - STRIP = strip --remove-section=.comment --remove-section=.note + INSTALL_PROGRAM += -s endif -build: - $(MAKE) -f unix/Makefile LF2="" D_USE_BZ2=-DUSE_BZIP2 L_BZ2=-lbz2 \ +build: patch + $(MAKE) -f unix/Makefile LF2="" \ CC="$(CC)" CF="$(CFLAGS) -I. $(DEFINES)" unzips touch build -clean: +clean: unpatch rm -f build - $(MAKE) -f unix/Makefile clean + -$(MAKE) -f unix/Makefile clean rm -rf *~ debian/tmp debian/*~ debian/files* debian/substvars binary-indep: build @@ -41,20 +31,18 @@ binary-arch: build rm -rf debian/tmp install -d debian/tmp/DEBIAN $(docdir) - cd debian/tmp && install -d usr/bin usr/man/man1 usr/lib/mime/packages - $(MAKE) -f unix/Makefile install prefix=`pwd`/debian/tmp/usr - install -m 755 debian/postinst debian/postrm debian/tmp/DEBIAN - install -m 644 debian/mime debian/tmp/usr/lib/mime/packages/$(package) + cd debian/tmp && install -d usr/bin usr/man/man1 + $(MAKE) -f unix/Makefile install prefix=`pwd`/debian/tmp/usr \ + INSTALL_PROGRAM="$(INSTALL_PROGRAM)" cat debian/copyright.in LICENSE > $(docdir)/copyright cp debian/changelog $(docdir)/changelog.Debian cp -p History.* BUGS ToDo $(docdir) cd $(docdir) && gzip -9 changelog.Debian History.* ln -s $(history).gz $(docdir)/changelog.gz - cd debian/tmp/usr/bin && $(STRIP) funzip unzip unzipsfx zipinfo gzip -r9 debian/tmp/usr/man cd debian/tmp && mv usr/man usr/share - dpkg-shlibdeps debian/tmp/usr/bin/unzip - dpkg-gencontrol + dpkg-shlibdeps unzip + dpkg-gencontrol -isp cd debian/tmp && \ md5sum `find * -type f ! -regex "DEBIAN/.*"` > DEBIAN/md5sums chown -R root:root debian/tmp @@ -63,4 +51,12 @@ binary: binary-indep binary-arch +patch: patch-stamp +patch-stamp: + dpatch apply-all + +unpatch: + dpatch deapply-all + rm -rf patch-stamp debian/patched + .PHONY: binary binary-arch binary-indep clean diff -Nru unzip-6.0/debian/source/format unzip-6.0/debian/source/format --- unzip-6.0/debian/source/format 2011-09-30 09:13:10.000000000 +0000 +++ unzip-6.0/debian/source/format 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -3.0 (quilt) diff -Nru unzip-6.0/ebcdic.h unzip-6.0/ebcdic.h --- unzip-6.0/ebcdic.h 2008-03-21 12:04:22.000000000 +0000 +++ unzip-6.0/ebcdic.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2008 Info-ZIP. All rights reserved. + Copyright (c) 1990-2000 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in zip.h) for terms of use. @@ -236,7 +236,7 @@ ---------------------------------------------------------------------------*/ #ifdef IZ_ISO2OEM_ARRAY -ZCONST uch Far iso2oem_850[] = { +ZCONST uch Far iso2oem[] = { 0x3F, 0x3F, 0x27, 0x9F, 0x22, 0x2E, 0xC5, 0xCE, /* 80 - 87 */ 0x5E, 0x25, 0x53, 0x3C, 0x4F, 0x3F, 0x3F, 0x3F, /* 88 - 8F */ 0x3F, 0x27, 0x27, 0x22, 0x22, 0x07, 0x2D, 0x2D, /* 90 - 97 */ @@ -257,7 +257,7 @@ #endif /* IZ_ISO2OEM_ARRAY */ #ifdef IZ_OEM2ISO_ARRAY -ZCONST uch Far oem2iso_850[] = { +ZCONST uch Far oem2iso[] = { 0xC7, 0xFC, 0xE9, 0xE2, 0xE4, 0xE0, 0xE5, 0xE7, /* 80 - 87 */ 0xEA, 0xEB, 0xE8, 0xEF, 0xEE, 0xEC, 0xC4, 0xC5, /* 88 - 8F */ 0xC9, 0xE6, 0xC6, 0xF4, 0xF6, 0xF2, 0xFB, 0xF9, /* 90 - 97 */ @@ -277,23 +277,6 @@ }; #endif /* IZ_OEM2ISO_ARRAY */ -/* The following pointers to the OEM<-->ISO translation tables are used - by the translation code portions. They may get initialized at program - startup to point to the matching static translation tables, or to NULL - to disable OEM-ISO translation. - The compile-time initialization used here provides the backward compatible - setting, as can be found in UnZip 5.52 and earlier. - In case this mechanism will ever get used on a multithreading system that - allows different codepage setups for concurrently running threads, these - pointers should get moved into UnZip's thread-safe global data structure. - */ -#ifdef IZ_ISO2OEM_ARRAY -ZCONST uch Far *iso2oem = iso2oem_850; /* backward compatibility default */ -#endif /* IZ_ISO2OEM_ARRAY */ -#ifdef IZ_OEM2ISO_ARRAY -ZCONST uch Far *oem2iso = oem2iso_850; /* backward compatibility default */ -#endif /* IZ_OEM2ISO_ARRAY */ - #if defined(THEOS) || defined(THEOS_SUPPORT) # include "theos/charconv.h" #endif diff -Nru unzip-6.0/envargs.c unzip-6.0/envargs.c --- unzip-6.0/envargs.c 2005-03-04 02:23:38.000000000 +0000 +++ unzip-6.0/envargs.c 2010-05-14 07:26:14.000000000 +0000 @@ -38,7 +38,7 @@ # define ISspace(c) isspace((unsigned)c) #endif /* ?__EMX__ */ -#if (!defined(RISCOS) && (!defined(MODERN) || defined(NO_STDLIB_H))) +#ifndef RISCOS extern char *getenv(); #endif static int count_args OF((ZCONST char *)); diff -Nru unzip-6.0/explode.c unzip-6.0/explode.c --- unzip-6.0/explode.c 2007-12-01 18:20:24.000000000 +0000 +++ unzip-6.0/explode.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,13 +1,13 @@ /* - Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + Copyright (c) 1990-2002 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2007-Mar-04 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html */ /* explode.c -- by Mark Adler - version c17d, 01 December 2007 */ + version c15, 6 July 1996 */ /* Copyright history: @@ -64,9 +64,6 @@ get_tree() failed). c17b 16 Feb 02 C. Spieler changed type of the "extra lengths" array "extra" from ush into uch (to save space) - c17c 10 Aug 04 NN file sizes use zoff_t. - c17d 01 Dec 07 C. Spieler type for file sizes changed from zoff_t - into zusz_t. */ @@ -258,7 +255,7 @@ /* Decompress the imploded data using coded literals and a sliding window (of size 2^(6+bdl) bytes). */ { - zusz_t s; /* bytes to decompress */ + ulg s; /* bytes to decompress */ register unsigned e; /* table entry flag/number of extra bits */ unsigned n, d; /* length and index for copy */ unsigned w; /* current window position */ @@ -313,7 +310,7 @@ } /* do the copy */ - s = (s > (zusz_t)n ? s - (zusz_t)n : 0); + s = (s > (ulg)n ? s - (ulg)n : 0); do { #if (defined(DLL) && !defined(NO_SLIDE_REDIR)) if (G.redirect_slide) { @@ -376,7 +373,7 @@ /* Decompress the imploded data using uncoded literals and a sliding window (of size 2^(6+bdl) bytes). */ { - zusz_t s; /* bytes to decompress */ + ulg s; /* bytes to decompress */ register unsigned e; /* table entry flag/number of extra bits */ unsigned n, d; /* length and index for copy */ unsigned w; /* current window position */ @@ -431,7 +428,7 @@ } /* do the copy */ - s = (s > (zusz_t)n ? s - (zusz_t)n : 0); + s = (s > (ulg)n ? s - (ulg)n : 0); do { #if (defined(DLL) && !defined(NO_SLIDE_REDIR)) if (G.redirect_slide) { diff -Nru unzip-6.0/extract.c unzip-6.0/extract.c --- unzip-6.0/extract.c 2009-03-14 01:32:52.000000000 +0000 +++ unzip-6.0/extract.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -16,7 +16,6 @@ Contains: extract_or_test_files() store_info() - find_compr_idx() extract_or_test_entrylist() extract_or_test_member() TestExtraField() @@ -26,8 +25,6 @@ extract_izvms_block() (VMS or VMS_TEXT_CONV) set_deferred_symlink() (SYMLINKS only) fnfilter() - dircomp() (SET_DIR_ATTRIB only) - UZbunzip2() (USE_BZIP2 only) ---------------------------------------------------------------------------*/ @@ -42,7 +39,6 @@ # include "windll/windll.h" # endif #endif -#include "crc32.h" #include "crypt.h" #define GRRDUMP(buf,len) { \ @@ -87,12 +83,12 @@ static int store_info OF((__GPRO)); #ifdef SET_DIR_ATTRIB static int extract_or_test_entrylist OF((__GPRO__ unsigned numchunk, - ulg *pfilnum, ulg *pnum_bad_pwd, zoff_t *pold_extra_bytes, + ulg *pfilnum, ulg *pnum_bad_pwd, Z_OFF_T *pold_extra_bytes, unsigned *pnum_dirs, direntry **pdirlist, int error_in_archive)); #else static int extract_or_test_entrylist OF((__GPRO__ unsigned numchunk, - ulg *pfilnum, ulg *pnum_bad_pwd, zoff_t *pold_extra_bytes, + ulg *pfilnum, ulg *pnum_bad_pwd, Z_OFF_T *pold_extra_bytes, int error_in_archive)); #endif static int extract_or_test_member OF((__GPRO)); @@ -135,21 +131,9 @@ static ZCONST char Far CmprDeflate[] = "deflate"; static ZCONST char Far CmprDeflat64[] = "deflate64"; static ZCONST char Far CmprDCLImplode[] = "DCL implode"; - static ZCONST char Far CmprBzip[] = "bzip2"; - static ZCONST char Far CmprLZMA[] = "LZMA"; - static ZCONST char Far CmprIBMTerse[] = "IBM/Terse"; - static ZCONST char Far CmprIBMLZ77[] = "IBM LZ77"; - static ZCONST char Far CmprWavPack[] = "WavPack"; - static ZCONST char Far CmprPPMd[] = "PPMd"; static ZCONST char Far *ComprNames[NUM_METHODS] = { CmprNone, CmprShrink, CmprReduce, CmprReduce, CmprReduce, CmprReduce, - CmprImplode, CmprTokenize, CmprDeflate, CmprDeflat64, CmprDCLImplode, - CmprBzip, CmprLZMA, CmprIBMTerse, CmprIBMLZ77, CmprWavPack, CmprPPMd - }; - static ZCONST unsigned ComprIDs[NUM_METHODS] = { - STORED, SHRUNK, REDUCED1, REDUCED2, REDUCED3, REDUCED4, - IMPLODED, TOKENIZED, DEFLATED, ENHDEFLATED, DCLIMPLODED, - BZIPPED, LZMAED, IBMTERSED, IBMLZ77ED, WAVPACKED, PPMDED + CmprImplode, CmprTokenize, CmprDeflate, CmprDeflat64, CmprDCLImplode }; #endif /* !SFX */ static ZCONST char Far FilNamMsg[] = @@ -161,14 +145,8 @@ "%s: mismatching \"local\" filename (%s),\n\ continuing with \"central\" filename version\n"; #endif /* !SFX */ -#if (!defined(SFX) && defined(UNICODE_SUPPORT)) - static ZCONST char Far GP11FlagsDiffer[] = - "file #%lu (%s):\n\ - mismatch between local and central GPF bit 11 (\"UTF-8\"),\n\ - continuing with central flag (IsUTF8 = %d)\n"; -#endif /* !SFX && UNICODE_SUPPORT */ static ZCONST char Far WrnStorUCSizCSizDiff[] = - "%s: ucsize %s <> csize %s for STORED entry\n\ + "%s: ucsize %lu <> csize %lu for STORED entry\n\ continuing with \"compressed\" size value\n"; static ZCONST char Far ExtFieldMsg[] = "%s: bad extra field length (%s)\n"; @@ -178,8 +156,8 @@ "%8sing: %-22s %s%s"; #ifndef SFX static ZCONST char Far LengthMsg[] = - "%s %s: %s bytes required to uncompress to %s bytes;\n %s\ - supposed to require %s bytes%s%s%s\n"; + "%s %s: %ld bytes required to uncompress to %lu bytes;\n %s\ + supposed to require %lu bytes%s%s%s\n"; #endif static ZCONST char Far BadFileCommLength[] = "%s: bad file comment length\n"; @@ -204,7 +182,7 @@ static ZCONST char Far DirlistSetAttrFailed[] = "warning: set times/attribs failed for %s\n"; static ZCONST char Far DirlistFailAttrSum[] = - " failed setting times/attribs for %lu dir entries"; + " failed setting attrib/times for %lu dir entries"; #endif #ifdef SYMLINKS /* messages of the deferred symlinks handler */ @@ -222,16 +200,10 @@ #ifndef WINDLL static ZCONST char Far ReplaceQuery[] = -# ifdef VMS - "new version of %s? [y]es, [n]o, [A]ll, [N]one, [r]ename: "; -# else "replace %s? [y]es, [n]o, [A]ll, [N]one, [r]ename: "; -# endif - static ZCONST char Far AssumeNone[] = - " NULL\n(EOF or read error, treating as \"[N]one\" ...)\n"; + static ZCONST char Far AssumeNone[] = " NULL\n(assuming [N]one)\n"; static ZCONST char Far NewNameQuery[] = "new name: "; - static ZCONST char Far InvalidResponse[] = - "error: invalid response [%s]\n"; + static ZCONST char Far InvalidResponse[] = "error: invalid response [%c]\n"; #endif /* !WINDLL */ static ZCONST char Far ErrorInArchive[] = @@ -270,9 +242,6 @@ static ZCONST char Far NotEnoughMem[] = "not enough memory to "; static ZCONST char Far InvalidComprData[] = "invalid compressed data to "; static ZCONST char Far Inflate[] = "inflate"; -#ifdef USE_BZIP2 - static ZCONST char Far BUnzip[] = "bunzip"; -#endif #ifndef SFX static ZCONST char Far Explode[] = "explode"; @@ -332,48 +301,21 @@ __GDEF { unsigned i, j; - zoff_t cd_bufstart; + Z_OFF_T cd_bufstart; uch *cd_inptr; int cd_incnt; ulg filnum=0L, blknum=0L; - int reached_end; -#ifndef SFX - int no_endsig_found; -#endif + int reached_end, no_endsig_found; int error, error_in_archive=PK_COOL; int *fn_matched=NULL, *xn_matched=NULL; - zucn_t members_processed; + unsigned members_processed; ulg num_skipped=0L, num_bad_pwd=0L; - zoff_t old_extra_bytes = 0L; + Z_OFF_T old_extra_bytes = 0L; #ifdef SET_DIR_ATTRIB unsigned num_dirs=0; direntry *dirlist=(direntry *)NULL, **sorted_dirlist=(direntry **)NULL; #endif - /* - * First, two general initializations are applied. These have been moved - * here from process_zipfiles() because they are only needed for accessing - * and/or extracting the data content of the zip archive. - */ - - /* a) initialize the CRC table pointer (once) */ - if (CRC_32_TAB == NULL) { - if ((CRC_32_TAB = get_crc_table()) == NULL) { - return PK_MEM; - } - } - -#if (!defined(SFX) || defined(SFX_EXDIR)) - /* b) check out if specified extraction root directory exists */ - if (uO.exdir != (char *)NULL && G.extract_flag) { - G.create_dirs = !uO.fflag; - if ((error = checkdir(__G__ uO.exdir, ROOT)) > MPN_INF_SKIP) { - /* out of memory, or file in way */ - return (error == MPN_NOMEM ? PK_MEM : PK_ERR); - } - } -#endif /* !SFX || SFX_EXDIR */ - /*--------------------------------------------------------------------------- The basic idea of this function is as follows. Since the central di- rectory lies at the end of the zipfile and the member files lie at the @@ -422,9 +364,7 @@ ---------------------------------------------------------------------------*/ members_processed = 0; -#ifndef SFX no_endsig_found = FALSE; -#endif reached_end = FALSE; while (!reached_end) { j = 0; @@ -446,26 +386,17 @@ reached_end = TRUE; /* ...so no more left to do */ break; } - if (memcmp(G.sig, central_hdr_sig, 4)) { /* is it a new entry? */ + if (strncmp(G.sig, central_hdr_sig, 4)) { /* is it a new entry? */ /* no new central directory entry * -> is the number of processed entries compatible with the * number of entries as stored in the end_central record? */ - if ((members_processed - & (G.ecrec.have_ecr64 ? MASK_ZUCN64 : MASK_ZUCN16)) - == G.ecrec.total_entries_central_dir) { -#ifndef SFX + if ((members_processed & (unsigned)0xFFFF) == + (unsigned)G.ecrec.total_entries_central_dir) { /* yes, so look if we ARE back at the end_central record */ no_endsig_found = - ( (memcmp(G.sig, - (G.ecrec.have_ecr64 ? - end_central64_sig : end_central_sig), - 4) != 0) - && (!G.ecrec.is_zip64_archive) - && (memcmp(G.sig, end_central_sig, 4) != 0) - ); -#endif /* !SFX */ + (strncmp(G.sig, end_central_sig, 4) != 0); } else { /* no; we have found an error in the central directory * -> report it and stop searching for more Zip entries @@ -606,11 +537,11 @@ */ #ifdef USE_STRM_INPUT - zfseeko(G.zipfd, cd_bufstart, SEEK_SET); - G.cur_zipfile_bufstart = zftello(G.zipfd); + fseek((FILE *)G.zipfd, cd_bufstart, SEEK_SET); + G.cur_zipfile_bufstart = ftell((FILE *)G.zipfd); #else /* !USE_STRM_INPUT */ G.cur_zipfile_bufstart = - zlseek(G.zipfd, cd_bufstart, SEEK_SET); + lseek(G.zipfd, cd_bufstart, SEEK_SET); #endif /* ?USE_STRM_INPUT */ read(G.zipfd, (char *)G.inbuf, INBUFSIZ); /* been here before... */ G.inptr = cd_inptr; @@ -782,7 +713,9 @@ Info(slide, 0, ((char *)slide, LoadFarString(FilesSkipBadPasswd) , num_bad_pwd, (num_bad_pwd==1L)? "":"s")); #endif /* CRYPT */ - } + } else if ((uO.qflag == 0) && !error_in_archive && (num == 0)) + Info(slide, 0, ((char *)slide, LoadFarString(ZeroFilesTested), + G.zipfn)); } /* give warning if files not tested or extracted (first condition can still @@ -820,40 +753,14 @@ static int store_info(__G) /* return 0 if skipping, 1 if OK */ __GDEF { -#ifdef USE_BZIP2 -# define UNKN_BZ2 (G.crec.compression_method!=BZIPPED) -#else -# define UNKN_BZ2 TRUE /* bzip2 unknown */ -#endif - -#ifdef USE_LZMA -# define UNKN_LZMA (G.crec.compression_method!=LZMAED) -#else -# define UNKN_LZMA TRUE /* LZMA unknown */ -#endif - -#ifdef USE_WAVP -# define UNKN_WAVP (G.crec.compression_method!=WAVPACKED) -#else -# define UNKN_WAVP TRUE /* WavPack unknown */ -#endif - -#ifdef USE_PPMD -# define UNKN_PPMD (G.crec.compression_method!=PPMDED) -#else -# define UNKN_PPMD TRUE /* PPMd unknown */ -#endif - #ifdef SFX # ifdef USE_DEFLATE64 # define UNKN_COMPR \ (G.crec.compression_method!=STORED && G.crec.compression_methodENHDEFLATED \ - && UNKN_BZ2 && UNKN_LZMA && UNKN_WAVP && UNKN_PPMD) + && G.crec.compression_method>ENHDEFLATED) # else # define UNKN_COMPR \ - (G.crec.compression_method!=STORED && G.crec.compression_method!=DEFLATED\ - && UNKN_BZ2 && UNKN_LZMA && UNKN_WAVP && UNKN_PPMD) + (G.crec.compression_method!=STORED && G.crec.compression_method!=DEFLATED) # endif #else # ifdef COPYRIGHT_CLEAN /* no reduced files */ @@ -870,23 +777,14 @@ # ifdef USE_DEFLATE64 # define UNKN_COMPR (UNKN_RED || UNKN_SHR || \ G.crec.compression_method==TOKENIZED || \ - (G.crec.compression_method>ENHDEFLATED && UNKN_BZ2 && UNKN_LZMA \ - && UNKN_WAVP && UNKN_PPMD)) + G.crec.compression_method>ENHDEFLATED) # else # define UNKN_COMPR (UNKN_RED || UNKN_SHR || \ G.crec.compression_method==TOKENIZED || \ - (G.crec.compression_method>DEFLATED && UNKN_BZ2 && UNKN_LZMA \ - && UNKN_WAVP && UNKN_PPMD)) + G.crec.compression_method>DEFLATED) # endif #endif -#if (defined(USE_BZIP2) && (UNZIP_VERSION < UNZIP_BZ2VERS)) - int unzvers_support = (UNKN_BZ2 ? UNZIP_VERSION : UNZIP_BZ2VERS); -# define UNZVERS_SUPPORT unzvers_support -#else -# define UNZVERS_SUPPORT UNZIP_VERSION -#endif - /*--------------------------------------------------------------------------- Check central directory info for version/compatibility requirements. ---------------------------------------------------------------------------*/ @@ -924,32 +822,29 @@ else if (!uO.tflag && !IS_OVERWRT_ALL) { /* if -o, extract anyway */ Info(slide, 0x481, ((char *)slide, LoadFarString(VMSFormatQuery), FnFilter1(G.filename))); - fgets(G.answerbuf, sizeof(G.answerbuf), stdin); + fgets(G.answerbuf, 9, stdin); if ((*G.answerbuf != 'y') && (*G.answerbuf != 'Y')) return 0; } #endif /* !VMS */ /* usual file type: don't need VMS to extract */ - } else if (G.crec.version_needed_to_extract[0] > UNZVERS_SUPPORT) { + } else if (G.crec.version_needed_to_extract[0] > UNZIP_VERSION) { if (!((uO.tflag && uO.qflag) || (!uO.tflag && !QCOND2))) Info(slide, 0x401, ((char *)slide, LoadFarString(VersionMsg), FnFilter1(G.filename), "PK", G.crec.version_needed_to_extract[0] / 10, G.crec.version_needed_to_extract[0] % 10, - UNZVERS_SUPPORT / 10, UNZVERS_SUPPORT % 10)); + UNZIP_VERSION / 10, UNZIP_VERSION % 10)); return 0; } - if (UNKN_COMPR) { + if UNKN_COMPR { if (!((uO.tflag && uO.qflag) || (!uO.tflag && !QCOND2))) { #ifndef SFX - unsigned cmpridx; - - if ((cmpridx = find_compr_idx(G.crec.compression_method)) - < NUM_METHODS) + if (G.crec.compression_method < NUM_METHODS) Info(slide, 0x401, ((char *)slide, LoadFarString(ComprMsgName), FnFilter1(G.filename), - LoadFarStringSmall(ComprNames[cmpridx]))); + LoadFarStringSmall(ComprNames[G.crec.compression_method]))); else #endif Info(slide, 0x401, ((char *)slide, LoadFarString(ComprMsgNum), @@ -980,7 +875,7 @@ mapattr(__G); /* GRR: worry about return value later */ G.pInfo->diskstart = G.crec.disk_number_start; - G.pInfo->offset = (zoff_t)G.crec.relative_offset_local_header; + G.pInfo->offset = (Z_OFF_T)G.crec.relative_offset_local_header; return 1; } /* end function store_info() */ @@ -989,27 +884,6 @@ -#ifndef SFX -/*******************************/ -/* Function find_compr_idx() */ -/*******************************/ - -unsigned find_compr_idx(compr_methodnum) - unsigned compr_methodnum; -{ - unsigned i; - - for (i = 0; i < NUM_METHODS; i++) { - if (ComprIDs[i] == compr_methodnum) break; - } - return i; -} -#endif /* !SFX */ - - - - - /******************************************/ /* Function extract_or_test_entrylist() */ /******************************************/ @@ -1024,7 +898,7 @@ unsigned numchunk; ulg *pfilnum; ulg *pnum_bad_pwd; - zoff_t *pold_extra_bytes; + Z_OFF_T *pold_extra_bytes; #ifdef SET_DIR_ATTRIB unsigned *pnum_dirs; direntry **pdirlist; @@ -1034,7 +908,7 @@ unsigned i; int renamed, query; int skip_entry; - zoff_t bufstart, inbuf_offset, request; + Z_OFF_T bufstart, inbuf_offset, request; int error, errcode; /* possible values for local skip_entry flag: */ @@ -1104,11 +978,11 @@ if (bufstart != G.cur_zipfile_bufstart) { Trace((stderr, "debug: bufstart != cur_zipfile_bufstart\n")); #ifdef USE_STRM_INPUT - zfseeko(G.zipfd, bufstart, SEEK_SET); - G.cur_zipfile_bufstart = zftello(G.zipfd); + fseek((FILE *)G.zipfd, bufstart, SEEK_SET); + G.cur_zipfile_bufstart = ftell((FILE *)G.zipfd); #else /* !USE_STRM_INPUT */ G.cur_zipfile_bufstart = - zlseek(G.zipfd, bufstart, SEEK_SET); + lseek(G.zipfd, bufstart, SEEK_SET); #endif /* ?USE_STRM_INPUT */ if ((G.incnt = read(G.zipfd, (char *)G.inbuf, INBUFSIZ)) <= 0) { @@ -1131,7 +1005,7 @@ error_in_archive = PK_BADERR; continue; /* but can still try next one */ } - if (memcmp(G.sig, local_hdr_sig, 4)) { + if (strncmp(G.sig, local_hdr_sig, 4)) { Info(slide, 0x401, ((char *)slide, LoadFarString(OffsetMsg), *pfilnum, LoadFarStringSmall(LocalHdrSig), (long)request)); /* @@ -1157,7 +1031,7 @@ error_in_archive = PK_BADERR; continue; /* but can still try next one */ } - if (memcmp(G.sig, local_hdr_sig, 4)) { + if (strncmp(G.sig, local_hdr_sig, 4)) { Info(slide, 0x401, ((char *)slide, LoadFarString(OffsetMsg), *pfilnum, LoadFarStringSmall(LocalHdrSig), (long)request)); @@ -1173,27 +1047,6 @@ error_in_archive = error; /* only PK_EOF defined */ continue; /* can still try next one */ } -#if (!defined(SFX) && defined(UNICODE_SUPPORT)) - if (((G.lrec.general_purpose_bit_flag & (1 << 11)) == (1 << 11)) - != (G.pInfo->GPFIsUTF8 != 0)) { - if (QCOND2) { -# ifdef SMALL_MEM - char *temp_cfilnam = slide + (7 * (WSIZE>>3)); - - zfstrcpy((char Far *)temp_cfilnam, G.pInfo->cfilname); -# define cFile_PrintBuf temp_cfilnam -# else -# define cFile_PrintBuf G.pInfo->cfilname -# endif - Info(slide, 0x421, ((char *)slide, - LoadFarStringSmall2(GP11FlagsDiffer), - *pfilnum, FnFilter1(cFile_PrintBuf), G.pInfo->GPFIsUTF8)); -# undef cFile_PrintBuf - } - if (error_in_archive < PK_WARN) - error_in_archive = PK_WARN; - } -#endif /* !SFX && UNICODE_SUPPORT */ if ((error = do_string(__G__ G.lrec.filename_length, DS_FN_L)) != PK_COOL) { @@ -1205,27 +1058,7 @@ continue; /* go on to next one */ } } - if (G.extra_field != (uch *)NULL) { - free(G.extra_field); - G.extra_field = (uch *)NULL; - } - if ((error = - do_string(__G__ G.lrec.extra_field_length, EXTRA_FIELD)) != 0) - { - if (error > error_in_archive) - error_in_archive = error; - if (error > PK_WARN) { - Info(slide, 0x401, ((char *)slide, - LoadFarString(ExtFieldMsg), - FnFilter1(G.filename), "local")); - continue; /* go on */ - } - } #ifndef SFX - /* Filename consistency checks must come after reading in the local - * extra field, so that a UTF-8 entry name e.f. block has already - * been processed. - */ if (G.pInfo->cfilname != (char Far *)NULL) { if (zfstrcmp(G.pInfo->cfilname, G.filename) != 0) { # ifdef SMALL_MEM @@ -1248,26 +1081,36 @@ G.pInfo->cfilname = (char Far *)NULL; } #endif /* !SFX */ - /* Size consistency checks must come after reading in the local extra - * field, so that any Zip64 extension local e.f. block has already - * been processed. - */ if (G.lrec.compression_method == STORED) { - zusz_t csiz_decrypted = G.lrec.csize; + ulg csiz_decrypted = G.lrec.csize; if (G.pInfo->encrypted) csiz_decrypted -= 12; if (G.lrec.ucsize != csiz_decrypted) { Info(slide, 0x401, ((char *)slide, LoadFarStringSmall2(WrnStorUCSizCSizDiff), - FnFilter1(G.filename), - FmZofft(G.lrec.ucsize, NULL, "u"), - FmZofft(csiz_decrypted, NULL, "u"))); + FnFilter1(G.filename), G.lrec.ucsize, csiz_decrypted)); G.lrec.ucsize = csiz_decrypted; if (error_in_archive < PK_WARN) error_in_archive = PK_WARN; } } + if (G.extra_field != (uch *)NULL) { + free(G.extra_field); + G.extra_field = (uch *)NULL; + } + if ((error = + do_string(__G__ G.lrec.extra_field_length, EXTRA_FIELD)) != 0) + { + if (error > error_in_archive) + error_in_archive = error; + if (error > PK_WARN) { + Info(slide, 0x401, ((char *)slide, + LoadFarString(ExtFieldMsg), + FnFilter1(G.filename), "local")); + continue; /* go on */ + } + } #if CRYPT if (G.pInfo->encrypted && @@ -1437,32 +1280,11 @@ query = TRUE; } break; - } -#ifdef VMS - /* 2008-07-24 SMS. - * On VMS, if the file name includes a version number, - * and "-V" ("retain VMS version numbers", V_flag) is in - * effect, then the VMS-specific code will handle any - * conflicts with an existing file, making this query - * redundant. (Implicit "y" response here.) - */ - if (query && uO.V_flag) { - /* Not discarding file versions. Look for one. */ - int cndx = strlen(G.filename) - 1; - - while ((cndx > 0) && (isdigit(G.filename[cndx]))) - cndx--; - if (G.filename[cndx] == ';') - /* File version found; skip the generic query, - * proceeding with its default response "y". - */ - query = FALSE; - } -#endif /* VMS */ + } if (query) { #ifdef WINDLL switch (G.lpUserFunctions->replace != NULL ? - (*G.lpUserFunctions->replace)(G.filename, FILNAMSIZ) : + (*G.lpUserFunctions->replace)(G.filename) : IDM_REPLACE_NONE) { case IDM_REPLACE_RENAME: _ISO_INTERN(G.filename); @@ -1486,8 +1308,7 @@ Info(slide, 0x81, ((char *)slide, LoadFarString(ReplaceQuery), FnFilter1(G.filename))); - if (fgets(G.answerbuf, sizeof(G.answerbuf), stdin) - == (char *)NULL) { + if (fgets(G.answerbuf, 9, stdin) == (char *)NULL) { Info(slide, 1, ((char *)slide, LoadFarString(AssumeNone))); *G.answerbuf = 'N'; @@ -1524,22 +1345,9 @@ /* skip file */ skip_entry = SKIP_Y_EXISTING; break; - case '\n': - case '\r': - /* Improve echo of '\n' and/or '\r' - (sizeof(G.answerbuf) == 10 (see globals.h), so - there is enough space for the provided text...) */ - strcpy(G.answerbuf, "{ENTER}"); - /* fall through ... */ default: - /* usually get \n here: remove it for nice display - (fnlen can be re-used here, we are outside the - "enter new filename" loop) */ - fnlen = strlen(G.answerbuf); - if (lastchar(G.answerbuf, fnlen) == '\n') - G.answerbuf[--fnlen] = '\0'; Info(slide, 1, ((char *)slide, - LoadFarString(InvalidResponse), G.answerbuf)); + LoadFarString(InvalidResponse), *G.answerbuf)); goto reprompt; /* yet another goto? */ } /* end switch (*answerbuf) */ #endif /* ?WINDLL */ @@ -1550,8 +1358,8 @@ /* report skipping of an existing entry */ Info(slide, 0, ((char *)slide, ((IS_OVERWRT_NONE || !uO.uflag || renamed) ? - "Target file exists. Skipping %s\n" : - "Target file newer. Skipping %s\n"), + "Target file exists.\nSkipping %s\n" : + "Target file newer.\nSkipping %s\n"), FnFilter1(G.filename))); } #endif /* WINDLL */ @@ -1604,13 +1412,6 @@ -/* wsize is used in extract_or_test_member() and UZbunzip2() */ -#if (defined(DLL) && !defined(NO_SLIDE_REDIR)) -# define wsize G._wsize /* wsize is a variable */ -#else -# define wsize WSIZE /* wsize is a constant */ -#endif - /***************************************/ /* Function extract_or_test_member() */ /***************************************/ @@ -1624,6 +1425,11 @@ #endif register int b; int r, error=PK_COOL; +#if (defined(DLL) && !defined(NO_SLIDE_REDIR)) + ulg wsize; +#else +# define wsize WSIZE +#endif /*--------------------------------------------------------------------------- @@ -1637,10 +1443,15 @@ G.crc32val = CRCVAL_INITIAL; #ifdef SYMLINKS - /* If file is a (POSIX-compatible) symbolic link and we are extracting - * to disk, prepare to restore the link. */ - G.symlnk = (G.pInfo->symlink && - !uO.tflag && !uO.cflag && (G.lrec.ucsize > 0)); + /* if file came from Unix and is a symbolic link and we are extracting + * to disk, prepare to restore the link */ + if (S_ISLNK(G.pInfo->file_attr) && + (G.pInfo->hostnum == UNIX_ || G.pInfo->hostnum == ATARI_ || + G.pInfo->hostnum == ATHEOS_ || G.pInfo->hostnum == BEOS_) && + !uO.tflag && !uO.cflag && (G.lrec.ucsize > 0)) + G.symlnk = TRUE; + else + G.symlnk = FALSE; #endif /* SYMLINKS */ if (uO.tflag) { @@ -1670,29 +1481,11 @@ # define NEWLINE "\n" #endif /* ?DOS_FLX_NLM_OS2_W32 */ #ifdef VMS - /* VMS: required even for stdout! */ - if ((r = open_outfile(__G)) != 0) - switch (r) { - case OPENOUT_SKIPOK: - return PK_OK; - case OPENOUT_SKIPWARN: - return PK_WARN; - default: - return PK_DISK; - } - } else if ((r = open_outfile(__G)) != 0) - switch (r) { - case OPENOUT_SKIPOK: - return PK_OK; - case OPENOUT_SKIPWARN: - return PK_WARN; - default: + if (open_outfile(__G)) /* VMS: required even for stdout! */ return PK_DISK; - } -#else /* !VMS */ +#endif } else if (open_outfile(__G)) return PK_DISK; -#endif /* ?VMS */ } /*--------------------------------------------------------------------------- @@ -1733,10 +1526,8 @@ if (error != PK_COOL || G.disk_full) break; } } - if (G.outcnt) { /* flush final (partial) buffer */ - r = flush(__G__ redirSlide, G.outcnt, 0); - if (error < r) error = r; - } + if (G.outcnt) /* flush final (partial) buffer */ + flush(__G__ redirSlide, G.outcnt, 0); break; #ifndef SFX @@ -1794,30 +1585,8 @@ (uO.aflag != 1 /* && G.pInfo->textfile==G.pInfo->textmode */)? "" : (G.pInfo->textfile? txt : bin), uO.cflag? NEWLINE : "")); } - if ((r = explode(__G)) != 0) { - if (r == 5) { /* treat 5 specially */ - int warning = ((zusz_t)G.used_csize <= G.lrec.csize); - - if ((uO.tflag && uO.qflag) || (!uO.tflag && !QCOND2)) - Info(slide, 0x401, ((char *)slide, - LoadFarString(LengthMsg), - "", warning ? "warning" : "error", - FmZofft(G.used_csize, NULL, NULL), - FmZofft(G.lrec.ucsize, NULL, "u"), - warning ? " " : "", - FmZofft(G.lrec.csize, NULL, "u"), - " [", FnFilter1(G.filename), "]")); - else - Info(slide, 0x401, ((char *)slide, - LoadFarString(LengthMsg), - "\n", warning ? "warning" : "error", - FmZofft(G.used_csize, NULL, NULL), - FmZofft(G.lrec.ucsize, NULL, "u"), - warning ? " " : "", - FmZofft(G.lrec.csize, NULL, "u"), - "", "", ".")); - error = warning ? PK_WARN : PK_ERR; - } else if (r < PK_DISK) { + if (((r = explode(__G)) != 0) && (r != 5)) { /* treat 5 specially */ + if (r < PK_DISK) { if ((uO.tflag && uO.qflag) || (!uO.tflag && !QCOND2)) Info(slide, 0x401, ((char *)slide, LoadFarStringSmall(ErrUnzipFile), r == 3? @@ -1831,11 +1600,26 @@ LoadFarString(NotEnoughMem) : LoadFarString(InvalidComprData), LoadFarStringSmall2(Explode))); - error = ((r == 3) ? PK_MEM3 : PK_ERR); + error = (r == 3)? PK_MEM3 : PK_ERR; } else { error = r; } } + if (r == 5) { + int warning = ((ulg)G.used_csize <= G.lrec.csize); + + if ((uO.tflag && uO.qflag) || (!uO.tflag && !QCOND2)) + Info(slide, 0x401, ((char *)slide, LoadFarString(LengthMsg), + "", warning? "warning" : "error", G.used_csize, + G.lrec.ucsize, warning? " " : "", G.lrec.csize, + " [", FnFilter1(G.filename), "]")); + else + Info(slide, 0x401, ((char *)slide, LoadFarString(LengthMsg), + "\n", warning? "warning" : "error", G.used_csize, + G.lrec.ucsize, warning? " ":"", G.lrec.csize, + "", "", ".")); + error = warning? PK_WARN : PK_ERR; + } break; #endif /* !SFX */ @@ -1869,43 +1653,12 @@ LoadFarString(NotEnoughMem) : LoadFarString(InvalidComprData), LoadFarStringSmall2(Inflate))); - error = ((r == 3) ? PK_MEM3 : PK_ERR); - } else { - error = r; - } - } - break; - -#ifdef USE_BZIP2 - case BZIPPED: - if (!uO.tflag && QCOND2) { - Info(slide, 0, ((char *)slide, LoadFarString(ExtractMsg), - "bunzipp", FnFilter1(G.filename), - (uO.aflag != 1 /* && G.pInfo->textfile==G.pInfo->textmode */)? - "" : (G.pInfo->textfile? txt : bin), uO.cflag? NEWLINE : "")); - } - if ((r = UZbunzip2(__G)) != 0) { - if (r < PK_DISK) { - if ((uO.tflag && uO.qflag) || (!uO.tflag && !QCOND2)) - Info(slide, 0x401, ((char *)slide, - LoadFarStringSmall(ErrUnzipFile), r == 3? - LoadFarString(NotEnoughMem) : - LoadFarString(InvalidComprData), - LoadFarStringSmall2(BUnzip), - FnFilter1(G.filename))); - else - Info(slide, 0x401, ((char *)slide, - LoadFarStringSmall(ErrUnzipNoFile), r == 3? - LoadFarString(NotEnoughMem) : - LoadFarString(InvalidComprData), - LoadFarStringSmall2(BUnzip))); - error = ((r == 3) ? PK_MEM3 : PK_ERR); + error = (r == 3)? PK_MEM3 : PK_ERR; } else { error = r; } } break; -#endif /* USE_BZIP2 */ default: /* should never get to this point */ Info(slide, 0x401, ((char *)slide, @@ -2262,12 +2015,12 @@ ZCONST uch *src; ulg srcsize; { - zoff_t old_csize=G.csize; - uch *old_inptr=G.inptr; - int old_incnt=G.incnt; - int r, error=PK_OK; - ush method; - ulg extra_field_crc; + long old_csize=G.csize; + uch *old_inptr=G.inptr; + int old_incnt=G.incnt; + int r, error=PK_OK; + ush method; + ulg extra_field_crc; method = makeword(src); @@ -2283,7 +2036,7 @@ switch (method) { case STORED: memcpy((char *)tgt, (char *)G.inptr, (extent)G.incnt); - G.outcnt = (ulg)G.csize; /* for CRC calculation */ + G.outcnt = G.csize; /* for CRC calculation */ break; case DEFLATED: #ifdef USE_DEFLATE64 @@ -2496,7 +2249,7 @@ __GDEF slinkentry *slnk_entry; { - extent ucsize = slnk_entry->targetlen; + unsigned ucsize = slnk_entry->targetlen; char *linkfname = slnk_entry->fname; char *linktarget = (char *)malloc(ucsize+1); @@ -2506,7 +2259,7 @@ return; } linktarget[ucsize] = '\0'; - G.outfile = zfopen(linkfname, FOPR); /* open link placeholder for reading */ + G.outfile = fopen(linkfname, FOPR); /* open link placeholder for reading */ /* Check that the following conditions are all fulfilled: * a) the placeholder file exists, * b) the placeholder file contains exactly "ucsize" bytes @@ -2516,14 +2269,13 @@ * stored in the symlink control structure. */ if (!G.outfile || - fread(linktarget, 1, ucsize+1, G.outfile) != ucsize || + fread(linktarget, 1, ucsize+1, G.outfile) != (int)ucsize || strcmp(slnk_entry->target, linktarget)) { Info(slide, 0x201, ((char *)slide, LoadFarString(SymLnkWarnInvalid), FnFilter1(linkfname))); free(linktarget); - if (G.outfile) - fclose(G.outfile); + fclose(G.outfile); return; } fclose(G.outfile); /* close "data" file for good... */ @@ -2549,103 +2301,37 @@ /* Function fnfilter() */ /* here instead of in list.c for SFX */ /*************************/ -char *fnfilter(raw, space, size) /* convert name to safely printable form */ +char *fnfilter(raw, space) /* convert name to safely printable form */ ZCONST char *raw; uch *space; - extent size; { #ifndef NATIVE /* ASCII: filter ANSI escape codes, etc. */ ZCONST uch *r=(ZCONST uch *)raw; uch *s=space; - uch *slim=NULL; - uch *se=NULL; - int have_overflow = FALSE; - if (size > 0) { - slim = space + size -#ifdef _MBCS - - (MB_CUR_MAX - 1) -#endif - - 4; - } while (*r) { - if (size > 0 && s >= slim && se == NULL) { - se = s; - } #ifdef QDOS if (qlflag & 2) { if (*r == '/' || *r == '.') { - if (se != NULL && (s > (space + (size-3)))) { - have_overflow = TRUE; - break; - } ++r; *s++ = '_'; continue; } } else #endif -#ifdef HAVE_WORKING_ISPRINT -# ifndef UZ_FNFILTER_REPLACECHAR - /* A convenient choice for the replacement of unprintable char codes is - * the "single char wildcard", as this character is quite unlikely to - * appear in filenames by itself. The following default definition - * sets the replacement char to a question mark as the most common - * "single char wildcard"; this setting should be overridden in the - * appropiate system-specific configuration header when needed. - */ -# define UZ_FNFILTER_REPLACECHAR '?' -# endif - if (!isprint(*r)) { - if (*r < 32) { - /* ASCII control codes are escaped as "^{letter}". */ - if (se != NULL && (s > (space + (size-4)))) { - have_overflow = TRUE; - break; - } - *s++ = '^', *s++ = (uch)(64 + *r++); - } else { - /* Other unprintable codes are replaced by the - * placeholder character. */ - if (se != NULL && (s > (space + (size-3)))) { - have_overflow = TRUE; - break; - } - *s++ = UZ_FNFILTER_REPLACECHAR; - INCSTR(r); - } -#else /* !HAVE_WORKING_ISPRINT */ if (*r < 32) { - /* ASCII control codes are escaped as "^{letter}". */ - if (se != NULL && (s > (space + (size-4)))) { - have_overflow = TRUE; - break; - } *s++ = '^', *s++ = (uch)(64 + *r++); -#endif /* ?HAVE_WORKING_ISPRINT */ } else { #ifdef _MBCS - unsigned i = CLEN(r); - if (se != NULL && (s > (space + (size-i-2)))) { - have_overflow = TRUE; - break; - } - for (; i > 0; i--) + unsigned i; + for (i = CLEN(r); i > 0; i--) *s++ = *r++; #else - if (se != NULL && (s > (space + (size-3)))) { - have_overflow = TRUE; - break; - } *s++ = *r++; #endif } } - if (have_overflow) { - strcpy((char *)se, "..."); - } else { - *s = '\0'; - } + *s = '\0'; #ifdef WINDLL INTERN_TO_ISO((char *)space, (char *)space); /* translate to ANSI */ @@ -2683,138 +2369,30 @@ /* return namecmp((*(direntry **)b)->fn, (*(direntry **)a)->fn); */ } -#endif /* SET_DIR_ATTRIB */ - -#ifdef USE_BZIP2 - -/**************************/ -/* Function UZbunzip2() */ -/**************************/ - -int UZbunzip2(__G) -__GDEF -/* decompress a bzipped entry using the libbz2 routines */ -{ - int retval = 0; /* return code: 0 = "no error" */ - int err=BZ_OK; - int repeated_buf_err; - bz_stream bstrm; - -#if (defined(DLL) && !defined(NO_SLIDE_REDIR)) - if (G.redirect_slide) - wsize = G.redirect_size, redirSlide = G.redirect_buffer; - else - wsize = WSIZE, redirSlide = slide; -#endif - bstrm.next_out = (char *)redirSlide; - bstrm.avail_out = wsize; +#if 0 /* not used in Unix, but maybe for future OSes? */ - bstrm.next_in = (char *)G.inptr; - bstrm.avail_in = G.incnt; +/************************/ +/* Function namecmp() */ +/************************/ - { - /* local buffer for efficiency */ - /* $TODO Check for BZIP LIB version? */ +static int namecmp(s1, s2) /* [not] used by dircomp(); swiped from Zip */ + ZCONST char *s1, *s2; +{ + int d; - bstrm.bzalloc = NULL; - bstrm.bzfree = NULL; - bstrm.opaque = NULL; - - Trace((stderr, "initializing bzlib()\n")); - err = BZ2_bzDecompressInit(&bstrm, 0, 0); - - if (err == BZ_MEM_ERROR) - return 3; - else if (err != BZ_OK) - Trace((stderr, "oops! (BZ2_bzDecompressInit() err = %d)\n", err)); - } - -#ifdef FUNZIP - while (err != BZ_STREAM_END) { -#else /* !FUNZIP */ - while (G.csize > 0) { - Trace((stderr, "first loop: G.csize = %ld\n", G.csize)); -#endif /* ?FUNZIP */ - while (bstrm.avail_out > 0) { - err = BZ2_bzDecompress(&bstrm); - - if (err == BZ_DATA_ERROR) { - retval = 2; goto uzbunzip_cleanup_exit; - } else if (err == BZ_MEM_ERROR) { - retval = 3; goto uzbunzip_cleanup_exit; - } else if (err != BZ_OK && err != BZ_STREAM_END) - Trace((stderr, "oops! (bzip(first loop) err = %d)\n", err)); - -#ifdef FUNZIP - if (err == BZ_STREAM_END) /* "END-of-entry-condition" ? */ -#else /* !FUNZIP */ - if (G.csize <= 0L) /* "END-of-entry-condition" ? */ -#endif /* ?FUNZIP */ - break; + for (;;) { + d = (int)(uch)case_map(*s1) + - (int)(uch)case_map(*s2); - if (bstrm.avail_in == 0) { - if (fillinbuf(__G) == 0) { - /* no "END-condition" yet, but no more data */ - retval = 2; goto uzbunzip_cleanup_exit; - } - - bstrm.next_in = (char *)G.inptr; - bstrm.avail_in = G.incnt; - } - Trace((stderr, " avail_in = %u\n", bstrm.avail_in)); - } - /* flush slide[] */ - if ((retval = FLUSH(wsize - bstrm.avail_out)) != 0) - goto uzbunzip_cleanup_exit; - Trace((stderr, "inside loop: flushing %ld bytes (ptr diff = %ld)\n", - (long)(wsize - bstrm.avail_out), - (long)(bstrm.next_out-(char *)redirSlide))); - bstrm.next_out = (char *)redirSlide; - bstrm.avail_out = wsize; - } - - /* no more input, so loop until we have all output */ - Trace((stderr, "beginning final loop: err = %d\n", err)); - repeated_buf_err = FALSE; - while (err != BZ_STREAM_END) { - err = BZ2_bzDecompress(&bstrm); - if (err == BZ_DATA_ERROR) { - retval = 2; goto uzbunzip_cleanup_exit; - } else if (err == BZ_MEM_ERROR) { - retval = 3; goto uzbunzip_cleanup_exit; - } else if (err != BZ_OK && err != BZ_STREAM_END) { - Trace((stderr, "oops! (bzip(final loop) err = %d)\n", err)); - DESTROYGLOBALS(); - EXIT(PK_MEM3); - } - /* final flush of slide[] */ - if ((retval = FLUSH(wsize - bstrm.avail_out)) != 0) - goto uzbunzip_cleanup_exit; - Trace((stderr, "final loop: flushing %ld bytes (ptr diff = %ld)\n", - (long)(wsize - bstrm.avail_out), - (long)(bstrm.next_out-(char *)redirSlide))); - bstrm.next_out = (char *)redirSlide; - bstrm.avail_out = wsize; - } -#ifdef LARGE_FILE_SUPPORT - Trace((stderr, "total in = %llu, total out = %llu\n", - (zusz_t)(bstrm.total_in_lo32) + ((zusz_t)(bstrm.total_in_hi32))<<32, - (zusz_t)(bstrm.total_out_lo32) + ((zusz_t)(bstrm.total_out_hi32))<<32)); -#else - Trace((stderr, "total in = %lu, total out = %lu\n", bstrm.total_in_lo32, - bstrm.total_out_lo32)); -#endif - - G.inptr = (uch *)bstrm.next_in; - G.incnt = (G.inbuf + INBUFSIZ) - G.inptr; /* reset for other routines */ + if (d || *s1 == 0 || *s2 == 0) + return d; -uzbunzip_cleanup_exit: - err = BZ2_bzDecompressEnd(&bstrm); - if (err != BZ_OK) - Trace((stderr, "oops! (BZ2_bzDecompressEnd() err = %d)\n", err)); + s1++; + s2++; + } +} - return retval; -} /* end function UZbunzip2() */ -#endif /* USE_BZIP2 */ +#endif /* 0 */ +#endif /* SET_DIR_ATTRIB */ diff -Nru unzip-6.0/file_id.diz unzip-6.0/file_id.diz --- unzip-6.0/file_id.diz 2005-05-23 00:27:32.000000000 +0000 +++ unzip-6.0/file_id.diz 2010-05-14 07:26:14.000000000 +0000 @@ -1,4 +1,4 @@ -Info-ZIP's UnZip 6.0: generic C sources +Info-ZIP's UnZip 5.52: generic C sources Complete C source code for Info-ZIP's PKUNZIP-compatible .zip extractor, for all supported compilers and platforms diff -Nru unzip-6.0/fileio.c unzip-6.0/fileio.c --- unzip-6.0/fileio.c 2009-04-20 00:03:44.000000000 +0000 +++ unzip-6.0/fileio.c 2010-05-14 07:30:18.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -36,8 +36,6 @@ do_string() makeword() makelong() - makeint64() - fzofft() str2iso() (CRYPT && NEED_STR2ISO, only) str2oem() (CRYPT && NEED_STR2OEM, only) memset() (ZMEM only) @@ -45,7 +43,6 @@ zstrnicmp() (NO_STRNICMP only) zstat() (REGULUS only) plastchar() (_MBCS only) - uzmbclen() (_MBCS && NEED_UZMBCLEN, only) uzmbschr() (_MBCS && NEED_UZMBSCHR, only) uzmbsrchr() (_MBCS && NEED_UZMBSRCHR, only) fLoadFarString() (SMALL_MEM only) @@ -68,7 +65,6 @@ # endif # include #endif -#include "crc32.h" #include "crypt.h" #include "ttyio.h" @@ -104,33 +100,6 @@ # endif #endif /* ?WINDLL */ -/* - 2005-09-16 SMS. - On VMS, when output is redirected to a file, as in a command like - "PIPE UNZIP -v > X.OUT", the output file is created with VFC record - format, and multiple calls to write() or fwrite() will produce multiple - records, even when there's no newline terminator in the buffer. - The result is unsightly output with spurious newlines. Using fprintf() - instead of write() here, and disabling a fflush(stdout) in UzpMessagePrnt() - below, together seem to solve the problem. - - According to the C RTL manual, "The write and decc$record_write - functions always generate at least one record." Also, "[T]he fwrite - function always generates at least records." So, - "fwrite(buf, len, 1, strm)" is much better ("1" record) than - "fwrite(buf, 1, len, strm)" ("len" (1-character) records, _really_ - ugly), but neither is better than write(). Similarly, "The fflush - function always generates a record if there is unwritten data in the - buffer." Apparently fprintf() buffers the stuff somewhere, and puts - out a record (only) when it sees a newline. -*/ -#ifdef VMS -# define WriteTxtErr(buf,len,strm) \ - ((extent)fprintf(strm, "%.*s", len, buf) != (extent)(len)) -#else -# define WriteTxtErr(buf,len,strm) WriteError(buf,len,strm) -#endif - #if (defined(USE_DEFLATE64) && defined(__16BIT__)) static int partflush OF((__GPRO__ uch *rawbuf, ulg size, int unshrink)); #endif @@ -151,10 +120,10 @@ #if (!defined(TANDEM)) #if (defined(ATH_BEO_THS_UNX) || defined(DOS_FLX_NLM_OS2_W32)) static ZCONST char Far CannotDeleteOldFile[] = - "error: cannot delete old %s\n %s\n"; + "error: cannot delete old %s\n"; #ifdef UNIXBACKUP static ZCONST char Far CannotRenameOldFile[] = - "error: cannot rename old %s\n %s\n"; + "error: cannot rename old %s\n"; static ZCONST char Far BackupSuffix[] = "~"; #endif #endif /* ATH_BEO_THS_UNX || DOS_FLX_NLM_OS2_W32 */ @@ -162,18 +131,13 @@ static ZCONST char Far NovellBug[] = "error: %s: stat() says does not exist, but fopen() found anyway\n"; #endif - static ZCONST char Far CannotCreateFile[] = - "error: cannot create %s\n %s\n"; + static ZCONST char Far CannotCreateFile[] = "error: cannot create %s\n"; #endif /* !TANDEM */ #endif /* !VMS && !AOS_VS && !CMS_MVS && !MACOS */ static ZCONST char Far ReadError[] = "error: zipfile read error\n"; static ZCONST char Far FilenameTooLongTrunc[] = "warning: filename too long--truncating.\n"; -#ifdef UNICODE_SUPPORT - static ZCONST char Far UFilenameTooLongTrunc[] = - "warning: Converted unicode filename too long--truncating.\n"; -#endif static ZCONST char Far ExtraFieldTooLong[] = "warning: extra field too long (%d). Ignoring...\n"; @@ -236,7 +200,11 @@ #ifdef USE_STRM_INPUT G.zipfd = fopen(G.zipfn, FOPR); #else /* !USE_STRM_INPUT */ +# ifdef O_BINARY G.zipfd = open(G.zipfn, O_RDONLY | O_BINARY); +# else + G.zipfd = open(G.zipfn, O_RDONLY); +# endif #endif /* ?USE_STRM_INPUT */ #endif /* ?CMS_MVS */ #endif /* ?MACOS */ @@ -267,7 +235,7 @@ /* Function open_outfile() */ /***************************/ -int open_outfile(__G) /* return 1 if fail */ +int open_outfile(__G) /* return 1 if fail */ __GDEF { #ifdef DLL @@ -291,8 +259,7 @@ } #endif /* BORLAND_STAT_BUG */ #ifdef SYMLINKS - if (SSTAT(G.filename, &G.statbuf) == 0 || - lstat(G.filename, &G.statbuf) == 0) + if (SSTAT(G.filename, &G.statbuf) == 0 || lstat(G.filename,&G.statbuf) == 0) #else if (SSTAT(G.filename, &G.statbuf) == 0) #endif /* ?SYMLINKS */ @@ -302,7 +269,7 @@ #ifdef UNIXBACKUP if (uO.B_flag) { /* do backup */ char *tname; - z_stat tmpstat; + struct stat tmpstat; int blen, flen, tlen; blen = strlen(BackupSuffix); @@ -333,15 +300,13 @@ unlink(tname); } else { /* Check if backupname exists, and, if it's true, try - * appending numbers of up to 5 digits (or the maximum - * "unsigned int" number on 16-bit systems) to the - * BackupSuffix, until an unused name is found. + * appending numbers of up to 5 digits to the BackupSuffix, + * until an unused name is found. */ unsigned maxtail, i; char *numtail = tname + flen + blen; - /* take account of the "unsigned" limit on 16-bit systems: */ - maxtail = ( ((~0) >= 99999L) ? 99999 : (~0) ); + maxtail = 65535; switch (tlen - flen - blen - 1) { case 4: maxtail = 9999; break; case 3: maxtail = 999; break; @@ -350,14 +315,13 @@ case 0: maxtail = 0; break; } /* while filename exists */ - for (i = 0; (i < maxtail) && (SSTAT(tname, &tmpstat) == 0);) + for (i = 0; (i <= maxtail) && (SSTAT(tname, &tmpstat) == 0);) sprintf(numtail,"%u", ++i); } if (rename(G.filename, tname) != 0) { /* move file */ Info(slide, 0x401, ((char *)slide, - LoadFarString(CannotRenameOldFile), - FnFilter1(G.filename), strerror(errno))); + LoadFarString(CannotRenameOldFile), FnFilter1(G.filename))); free(tname); return 1; } @@ -383,8 +347,7 @@ #endif /* NLM */ if (unlink(G.filename) != 0) { Info(slide, 0x401, ((char *)slide, - LoadFarString(CannotDeleteOldFile), - FnFilter1(G.filename), strerror(errno))); + LoadFarString(CannotDeleteOldFile), FnFilter1(G.filename))); return 1; } Trace((stderr, "open_outfile: %s now deleted\n", @@ -395,7 +358,7 @@ #ifdef RISCOS if (SWI_OS_File_7(G.filename,0xDEADDEAD,0xDEADDEAD,G.lrec.ucsize)!=NULL) { Info(slide, 1, ((char *)slide, LoadFarString(CannotCreateFile), - FnFilter1(G.filename), strerror(errno))); + FnFilter1(G.filename))); return 1; } #endif /* RISCOS */ @@ -409,7 +372,7 @@ enquote(tfilnam); if ((G.outfile = fopen(tfilnam, FOPW)) == (FILE *)NULL) { Info(slide, 1, ((char *)slide, LoadFarString(CannotCreateFile), - tfilnam, strerror(errno))); + tfilnam)); free(tfilnam); return 1; } @@ -417,19 +380,19 @@ #else /* !TOPS20 */ #ifdef MTS if (uO.aflag) - G.outfile = zfopen(G.filename, FOPWT); + G.outfile = fopen(G.filename, FOPWT); else - G.outfile = zfopen(G.filename, FOPW); + G.outfile = fopen(G.filename, FOPW); if (G.outfile == (FILE *)NULL) { Info(slide, 1, ((char *)slide, LoadFarString(CannotCreateFile), - FnFilter1(G.filename), strerror(errno))); + FnFilter1(G.filename))); return 1; } #else /* !MTS */ #ifdef DEBUG Info(slide, 1, ((char *)slide, "open_outfile: doing fopen(%s) for reading\n", FnFilter1(G.filename))); - if ((G.outfile = zfopen(G.filename, FOPR)) == (FILE *)NULL) + if ((G.outfile = fopen(G.filename, FOPR)) == (FILE *)NULL) Info(slide, 1, ((char *)slide, "open_outfile: fopen(%s) for reading failed: does not exist\n", FnFilter1(G.filename))); @@ -441,7 +404,7 @@ } #endif /* DEBUG */ #ifdef NOVELL_BUG_FAILSAFE - if (G.dne && ((G.outfile = zfopen(G.filename, FOPR)) != (FILE *)NULL)) { + if (G.dne && ((G.outfile = fopen(G.filename, FOPR)) != (FILE *)NULL)) { Info(slide, 0x401, ((char *)slide, LoadFarString(NovellBug), FnFilter1(G.filename))); fclose(G.outfile); @@ -450,25 +413,13 @@ #endif /* NOVELL_BUG_FAILSAFE */ Trace((stderr, "open_outfile: doing fopen(%s) for writing\n", FnFilter1(G.filename))); - { -#if defined(ATH_BE_UNX) || defined(AOS_VS) || defined(QDOS) || defined(TANDEM) - mode_t umask_sav = umask(0077); -#endif #if defined(SYMLINKS) || defined(QLZIP) - /* These features require the ability to re-read extracted data from - the output files. Output files are created with Read&Write access. - */ - G.outfile = zfopen(G.filename, FOPWR); + if ((G.outfile = fopen(G.filename, FOPWR)) == (FILE *)NULL) { #else - G.outfile = zfopen(G.filename, FOPW); -#endif -#if defined(ATH_BE_UNX) || defined(AOS_VS) || defined(QDOS) || defined(TANDEM) - umask(umask_sav); + if ((G.outfile = fopen(G.filename, FOPW)) == (FILE *)NULL) { #endif - } - if (G.outfile == (FILE *)NULL) { Info(slide, 0x401, ((char *)slide, LoadFarString(CannotCreateFile), - FnFilter1(G.filename), strerror(errno))); + FnFilter1(G.filename))); return 1; } Trace((stderr, "open_outfile: fopen(%s) for writing succeeded\n", @@ -550,7 +501,7 @@ void defer_leftover_input(__G) __GDEF { - if ((zoff_t)G.incnt > G.csize) { + if ((long)G.incnt > G.csize) { /* (G.csize < MAXINT), we can safely cast it to int !! */ if (G.csize < 0L) G.csize = 0L; @@ -625,6 +576,7 @@ } if (G.incnt <= 0) { if ((G.incnt = read(G.zipfd, (char *)G.inbuf, INBUFSIZ)) == 0) { + G.incnt = 0; /* do not allow negative value to affect stuff */ return EOF; } else if (G.incnt < 0) { /* "fail" (abort, retry, ...) returns this */ /* another hack, but no real harm copying same thing twice */ @@ -667,7 +619,7 @@ -#if defined(USE_ZLIB) || defined(USE_BZIP2) +#ifdef USE_ZLIB /************************/ /* Function fillinbuf() */ @@ -697,7 +649,7 @@ } /* end function fillinbuf() */ -#endif /* USE_ZLIB || USE_BZIP2 */ +#endif /* USE_ZLIB */ @@ -709,7 +661,7 @@ int seek_zipf(__G__ abs_offset) __GDEF - zoff_t abs_offset; + Z_OFF_T abs_offset; { /* * Seek to the block boundary of the block which includes abs_offset, @@ -730,9 +682,9 @@ * PK_EOF if seeking past end of zipfile * PK_OK when seek was successful */ - zoff_t request = abs_offset + G.extra_bytes; - zoff_t inbuf_offset = request % INBUFSIZ; - zoff_t bufstart = request - inbuf_offset; + Z_OFF_T request = abs_offset + G.extra_bytes; + Z_OFF_T inbuf_offset = request % INBUFSIZ; + Z_OFF_T bufstart = request - inbuf_offset; if (request < 0) { Info(slide, 1, ((char *)slide, LoadFarStringSmall(SeekMsg), @@ -740,23 +692,19 @@ return(PK_BADERR); } else if (bufstart != G.cur_zipfile_bufstart) { Trace((stderr, - "fpos_zip: abs_offset = %s, G.extra_bytes = %s\n", - FmZofft(abs_offset, NULL, NULL), - FmZofft(G.extra_bytes, NULL, NULL))); + "fpos_zip: abs_offset = %ld, G.extra_bytes = %ld\n", + abs_offset, G.extra_bytes)); #ifdef USE_STRM_INPUT - zfseeko(G.zipfd, bufstart, SEEK_SET); - G.cur_zipfile_bufstart = zftello(G.zipfd); + fseek(G.zipfd, bufstart, SEEK_SET); + G.cur_zipfile_bufstart = ftell(G.zipfd); #else /* !USE_STRM_INPUT */ - G.cur_zipfile_bufstart = zlseek(G.zipfd, bufstart, SEEK_SET); + G.cur_zipfile_bufstart = lseek(G.zipfd, bufstart, SEEK_SET); #endif /* ?USE_STRM_INPUT */ Trace((stderr, - " request = %s, (abs+extra) = %s, inbuf_offset = %s\n", - FmZofft(request, NULL, NULL), - FmZofft((abs_offset+G.extra_bytes), NULL, NULL), - FmZofft(inbuf_offset, NULL, NULL))); - Trace((stderr, " bufstart = %s, cur_zipfile_bufstart = %s\n", - FmZofft(bufstart, NULL, NULL), - FmZofft(G.cur_zipfile_bufstart, NULL, NULL))); + " request = %ld, (abs+extra) = %ld, inbuf_offset = %ld\n", + request, (abs_offset+G.extra_bytes), inbuf_offset)); + Trace((stderr, " bufstart = %ld, cur_zipfile_bufstart = %ld\n", + bufstart, G.cur_zipfile_bufstart)); if ((G.incnt = read(G.zipfd, (char *)G.inbuf, INBUFSIZ)) <= 0) return(PK_EOF); G.incnt -= (int)inbuf_offset; @@ -776,7 +724,7 @@ /********************/ /* Function flush() */ /* returns PK error codes: */ -/********************/ /* if tflag => always 0; PK_DISK if write error */ +/********************/ /* if cflag => always 0; PK_DISK if write error */ int flush(__G__ rawbuf, size, unshrink) __GDEF @@ -804,7 +752,7 @@ /************************/ /* Function partflush() */ /* returns PK error codes: */ -/************************/ /* if tflag => always 0; PK_DISK if write error */ +/************************/ /* if cflag => always 0; PK_DISK if write error */ static int partflush(__G__ rawbuf, size, unshrink) __GDEF @@ -1096,7 +1044,7 @@ #define VMSREC_C_UNDEF 0 #define VMSREC_C_VAR 2 uch vms_rectype = VMSREC_C_UNDEF; - /* uch vms_fileorg = 0; */ /* currently, fileorg is not used... */ + uch vms_fileorg = 0; #define VMSPK_ITEMID 0 #define VMSPK_ITEMLEN 2 @@ -1160,7 +1108,7 @@ * data item */ if (fldsize >= 1) { vms_rectype = eb_data[VMSPK_ITEMHEADSZ] & 15; - /* vms_fileorg = eb_data[VMSPK_ITEMHEADSZ] >> 4; */ + vms_fileorg = eb_data[VMSPK_ITEMHEADSZ] >> 4; } break; default: @@ -1181,7 +1129,7 @@ { if (eb_datlen >= VMSFAB_B_RFM+1) { vms_rectype = eb_data[VMSFAB_B_RFM] & 15; - /* vms_fileorg = eb_data[VMSFAB_B_ORG] >> 4; */ + vms_fileorg = eb_data[VMSFAB_B_ORG] >> 4; } free(eb_data); } @@ -1218,7 +1166,7 @@ FnFilter1(G.filename))); #ifndef WINDLL - fgets(G.answerbuf, sizeof(G.answerbuf), stdin); + fgets(G.answerbuf, 9, stdin); if (*G.answerbuf == 'y') /* stop writing to this file */ G.disk_full = 1; /* (outfile bad?), but new OK */ else @@ -1408,7 +1356,7 @@ ++((Uz_Globs *)pG)->lines; if (((Uz_Globs *)pG)->lines >= ((Uz_Globs *)pG)->height) { - if ((error = WriteTxtErr(q, p-q+1, outfp)) != 0) + if ((error = WriteError(q, p-q+1, outfp)) != 0) return error; fflush(outfp); ((Uz_Globs *)pG)->sol = TRUE; @@ -1427,16 +1375,14 @@ #ifdef OS2DLL if (!((Uz_Globs *)pG)->redirect_text) { #endif - if ((error = WriteTxtErr(q, size, outfp)) != 0) + if ((error = WriteError(q, size, outfp)) != 0) return error; -#ifndef VMS /* 2005-09-16 SMS. See note at "WriteTxtErr()", above. */ fflush(outfp); -#endif if (MSG_STDERR(flag) && ((Uz_Globs *)pG)->UzO.tflag && !isatty(1) && isatty(2)) { /* error output from testing redirected: also send to stderr */ - if ((error = WriteTxtErr(q, size, stderr)) != 0) + if ((error = WriteError(q, size, stderr)) != 0) return error; fflush(stderr); } @@ -1649,15 +1595,6 @@ } #endif /* SIGBUS */ -#ifdef SIGILL - if (signal == SIGILL) { - Info(slide, 0x421, ((char *)slide, LoadFarString(ZipfileCorrupt), - "illegal instruction")); - DESTROYGLOBALS(); - EXIT(PK_BADERR); - } -#endif /* SIGILL */ - #ifdef SIGSEGV if (signal == SIGSEGV) { Info(slide, 0x421, ((char *)slide, LoadFarString(ZipfileCorrupt), @@ -2145,8 +2082,7 @@ #ifdef WINDLL /* ran out of local mem -- had to cheat */ - win_fprintf((zvoid *)&G, stdout, (extent)(q-G.outbuf), - (char *)G.outbuf); + win_fprintf((zvoid *)&G, stdout, length, (char *)G.outbuf); win_fprintf((zvoid *)&G, stdout, 2, (char *)"\n\n"); #else /* !WINDLL */ #ifdef NOANSIFILT /* GRR: can ANSI be used with EBCDIC? */ @@ -2193,36 +2129,6 @@ case DS_FN: case DS_FN_L: -#ifdef UNICODE_SUPPORT - /* get the whole filename as need it for Unicode checksum */ - if (G.fnfull_bufsize <= length) { - extent fnbufsiz = FILNAMSIZ; - - if (fnbufsiz <= length) - fnbufsiz = length + 1; - if (G.filename_full) - free(G.filename_full); - G.filename_full = malloc(fnbufsiz); - if (G.filename_full == NULL) - return PK_MEM; - G.fnfull_bufsize = fnbufsiz; - } - if (readbuf(__G__ G.filename_full, length) == 0) - return PK_EOF; - G.filename_full[length] = '\0'; /* terminate w/zero: ASCIIZ */ - - /* if needed, chop off end so standard filename is a valid length */ - if (length >= FILNAMSIZ) { - Info(slide, 0x401, ((char *)slide, - LoadFarString(FilenameTooLongTrunc))); - error = PK_WARN; - length = FILNAMSIZ - 1; - } - /* no excess size */ - block_len = 0; - strncpy(G.filename, G.filename_full, length); - G.filename[length] = '\0'; /* terminate w/zero: ASCIIZ */ -#else /* !UNICODE_SUPPORT */ if (length >= FILNAMSIZ) { Info(slide, 0x401, ((char *)slide, LoadFarString(FilenameTooLongTrunc))); @@ -2236,7 +2142,6 @@ if (readbuf(__G__ G.filename, length) == 0) return PK_EOF; G.filename[length] = '\0'; /* terminate w/zero: ASCIIZ */ -#endif /* ?UNICODE_SUPPORT */ /* translate the Zip entry filename coded in host-dependent "extended ASCII" into the compiler's (system's) internal text code page */ @@ -2291,74 +2196,9 @@ * so don't correct for it twice: */ seek_zipf(__G__ G.cur_zipfile_bufstart - G.extra_bytes + (G.inptr-G.inbuf) + length); - } else { + } else if (readbuf(__G__ (char *)G.extra_field, length) == 0) return PK_EOF; - /* Looks like here is where extra fields are read */ - getZip64Data(__G__ G.extra_field, length); -#ifdef UNICODE_SUPPORT - G.unipath_filename = NULL; - if (G.UzO.U_flag < 2) { - /* check if GPB11 (General Purpuse Bit 11) is set indicating - the standard path and comment are UTF-8 */ - if (G.pInfo->GPFIsUTF8) { - /* if GPB11 set then filename_full is untruncated UTF-8 */ - G.unipath_filename = G.filename_full; - } else { - /* Get the Unicode fields if exist */ - getUnicodeData(__G__ G.extra_field, length); - if (G.unipath_filename && strlen(G.unipath_filename) == 0) { - /* the standard filename field is UTF-8 */ - free(G.unipath_filename); - G.unipath_filename = G.filename_full; - } - } - if (G.unipath_filename) { -# ifdef UTF8_MAYBE_NATIVE - if (G.native_is_utf8 -# ifdef UNICODE_WCHAR - && (!G.unicode_escape_all) -# endif - ) { - strncpy(G.filename, G.unipath_filename, FILNAMSIZ - 1); - /* make sure filename is short enough */ - if (strlen(G.unipath_filename) >= FILNAMSIZ) { - G.filename[FILNAMSIZ - 1] = '\0'; - Info(slide, 0x401, ((char *)slide, - LoadFarString(UFilenameTooLongTrunc))); - error = PK_WARN; - } - } -# ifdef UNICODE_WCHAR - else -# endif -# endif /* UTF8_MAYBE_NATIVE */ -# ifdef UNICODE_WCHAR - { - char *fn; - - /* convert UTF-8 to local character set */ - fn = utf8_to_local_string(G.unipath_filename, - G.unicode_escape_all); - /* make sure filename is short enough */ - if (strlen(fn) >= FILNAMSIZ) { - fn[FILNAMSIZ - 1] = '\0'; - Info(slide, 0x401, ((char *)slide, - LoadFarString(UFilenameTooLongTrunc))); - error = PK_WARN; - } - /* replace filename with converted UTF-8 */ - strcpy(G.filename, fn); - free(fn); - } -# endif /* UNICODE_WCHAR */ - if (G.unipath_filename != G.filename_full) - free(G.unipath_filename); - G.unipath_filename = NULL; - } - } -#endif /* UNICODE_SUPPORT */ - } break; #ifdef AMIGA @@ -2435,107 +2275,13 @@ * host format. This routine also takes care of byte-ordering. */ return (((ulg)sig[3]) << 24) - + (((ulg)sig[2]) << 16) - + (ulg)((((unsigned)sig[1]) << 8) - + ((unsigned)sig[0])); + + (((ulg)sig[2]) << 16) + + (((ulg)sig[1]) << 8) + + ((ulg)sig[0]); } - - -/************************/ -/* Function makeint64() */ -/************************/ - -zusz_t makeint64(sig) - ZCONST uch *sig; -{ -#ifdef LARGE_FILE_SUPPORT - /* - * Convert intel style 'int64' variable to non-Intel non-16-bit - * host format. This routine also takes care of byte-ordering. - */ - return (((zusz_t)sig[7]) << 56) - + (((zusz_t)sig[6]) << 48) - + (((zusz_t)sig[4]) << 32) - + (zusz_t)((((ulg)sig[3]) << 24) - + (((ulg)sig[2]) << 16) - + (((unsigned)sig[1]) << 8) - + (sig[0])); - -#else /* !LARGE_FILE_SUPPORT */ - - if ((sig[7] | sig[6] | sig[5] | sig[4]) != 0) - return (zusz_t)0xffffffffL; - else - return (zusz_t)((((ulg)sig[3]) << 24) - + (((ulg)sig[2]) << 16) - + (((unsigned)sig[1]) << 8) - + (sig[0])); - -#endif /* ?LARGE_FILE_SUPPORT */ -} - - - - - -/*********************/ -/* Function fzofft() */ -/*********************/ - -/* Format a zoff_t value in a cylindrical buffer set. */ -char *fzofft(__G__ val, pre, post) - __GDEF - zoff_t val; - ZCONST char *pre; - ZCONST char *post; -{ - /* Storage cylinder. (now in globals.h) */ - /*static char fzofft_buf[FZOFFT_NUM][FZOFFT_LEN];*/ - /*static int fzofft_index = 0;*/ - - /* Temporary format string storage. */ - char fmt[16]; - - /* Assemble the format string. */ - fmt[0] = '%'; - fmt[1] = '\0'; /* Start after initial "%". */ - if (pre == FZOFFT_HEX_WID) /* Special hex width. */ - { - strcat(fmt, FZOFFT_HEX_WID_VALUE); - } - else if (pre == FZOFFT_HEX_DOT_WID) /* Special hex ".width". */ - { - strcat(fmt, "."); - strcat(fmt, FZOFFT_HEX_WID_VALUE); - } - else if (pre != NULL) /* Caller's prefix (width). */ - { - strcat(fmt, pre); - } - - strcat(fmt, FZOFFT_FMT); /* Long or long-long or whatever. */ - - if (post == NULL) - strcat(fmt, "d"); /* Default radix = decimal. */ - else - strcat(fmt, post); /* Caller's radix. */ - - /* Advance the cylinder. */ - G.fzofft_index = (G.fzofft_index + 1) % FZOFFT_NUM; - - /* Write into the current chamber. */ - sprintf(G.fzofft_buf[G.fzofft_index], fmt, val); - - /* Return a pointer to this chamber. */ - return G.fzofft_buf[G.fzofft_index]; -} - - - - #if CRYPT #ifdef NEED_STR2ISO @@ -2672,7 +2418,7 @@ if (ToLower(*s1) != ToLower(*s2)) /* test includes early termination of one string */ - return ((uch)ToLower(*s1) < (uch)ToLower(*s2))? -1 : 1; + return (ToLower(*s1) < ToLower(*s2))? -1 : 1; if (*s1 == '\0') /* both strings terminate early */ return 0; @@ -2731,28 +2477,6 @@ } -#ifdef NEED_UZMBCLEN -/***********************/ -/* Function uzmbclen() */ -/***********************/ - -extent uzmbclen(ptr) - ZCONST unsigned char *ptr; -{ - int mbl; - - mbl = mblen((ZCONST char *)ptr, MB_CUR_MAX); - /* For use in code scanning through MBCS strings, we need a strictly - positive "MB char bytes count". For our scanning purpose, it is not - not relevant whether the MB character is valid or not. And, the NUL - char '\0' has a byte count of 1, but mblen() returns 0. So, we make - sure that the uzmbclen() return value is not less than 1. - */ - return (extent)(mbl > 0 ? mbl : 1); -} -#endif /* NEED_UZMBCLEN */ - - #ifdef NEED_UZMBSCHR /***********************/ /* Function uzmbschr() */ diff -Nru unzip-6.0/flexos/flexos.c unzip-6.0/flexos/flexos.c --- unzip-6.0/flexos/flexos.c 2007-12-23 15:56:14.000000000 +0000 +++ unzip-6.0/flexos/flexos.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. @@ -820,56 +820,52 @@ return; } - /* skip restoring time stamps on user's request */ - if (uO.D_flag <= 1) { - /*--------------------------------------------------------------------------- Copy and/or convert time and date variables, if necessary; then fill in the file time/date. ---------------------------------------------------------------------------*/ #ifdef USE_EF_UT_TIME - if (G.extra_field && + if (G.extra_field && #ifdef IZ_CHECK_TZ - G.tz_is_valid && + G.tz_is_valid && #endif - (ef_scan_for_izux(G.extra_field, G.lrec.extra_field_length, 0, - G.lrec.last_mod_dos_datetime, &z_utime, NULL) & EB_UT_FL_MTIME)) - { - TTrace((stderr, "close_outfile: Unix e.f. modif. time = %ld\n", - z_utime.mtime)); - t = localtime(&(z_utime.mtime)); - } else - t = (struct tm *)NULL; - if (t != (struct tm *)NULL) { - if (t->tm_year < 80) { - df.df_modyear = 1980; - df.df_modmonth = 1; - df.df_modday = 1; - df.df_modhr = 0; - df.df_modmin = 0; - df.df_modsec = 0; - } else { - df.df_modyear = t->tm_year + 1900; - df.df_modmonth = t->tm_mon + 1; - df.df_modday = t->tm_mday; - df.df_modhr = t->tm_hour; - df.df_modmin = t->tm_min; - df.df_modsec = t->tm_sec; - } - } else -#endif /* ?USE_EF_UX_TIME */ - { - zt._t.ztime = (ush)(G.lrec.last_mod_dos_datetime) & 0xffff; - zt._d.zdate = (ush)(G.lrec.last_mod_dos_datetime >> 16); - - df.df_modyear = 1980 + zt._d._df.zd_yr; - df.df_modmonth = zt._d._df.zd_mo; - df.df_modday = zt._d._df.zd_dy; - df.df_modhr = zt._t._tf.zt_hr; - df.df_modmin = zt._t._tf.zt_mi; - df.df_modsec = zt._t._tf.zt_se << 1; + (ef_scan_for_izux(G.extra_field, G.lrec.extra_field_length, 0, + G.lrec.last_mod_dos_datetime, &z_utime, NULL) & EB_UT_FL_MTIME)) + { + TTrace((stderr, "close_outfile: Unix e.f. modif. time = %ld\n", + z_utime.mtime)); + t = localtime(&(z_utime.mtime)); + } else + t = (struct tm *)NULL; + if (t != (struct tm *)NULL) { + if (t->tm_year < 80) { + df.df_modyear = 1980; + df.df_modmonth = 1; + df.df_modday = 1; + df.df_modhr = 0; + df.df_modmin = 0; + df.df_modsec = 0; + } else { + df.df_modyear = t->tm_year + 1900; + df.df_modmonth = t->tm_mon + 1; + df.df_modday = t->tm_mday; + df.df_modhr = t->tm_hour; + df.df_modmin = t->tm_min; + df.df_modsec = t->tm_sec; } + } else +#endif /* ?USE_EF_UX_TIME */ + { + zt._t.ztime = (ush)(G.lrec.last_mod_dos_datetime) & 0xffff; + zt._d.zdate = (ush)(G.lrec.last_mod_dos_datetime >> 16); + + df.df_modyear = 1980 + zt._d._df.zd_yr; + df.df_modmonth = zt._d._df.zd_mo; + df.df_modday = zt._d._df.zd_dy; + df.df_modhr = zt._t._tf.zt_hr; + df.df_modmin = zt._t._tf.zt_mi; + df.df_modsec = zt._t._tf.zt_se << 1; } /*--------------------------------------------------------------------------- @@ -887,7 +883,7 @@ "warning: cannot set info for %s\n", FnFilter1(G.filename))); s_close(0, fnum); -} /* end function close_outfile() */ +} #ifndef SFX diff -Nru unzip-6.0/flexos/makefile unzip-6.0/flexos/makefile --- unzip-6.0/flexos/makefile 2005-12-30 19:27:00.000000000 +0000 +++ unzip-6.0/flexos/makefile 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# Makefile for UnZip 5.53 and later Derek Fawcus -# Version: MetaWare High C with PAMAKE 30 Dec 2005 +# Makefile for UnZip 5.5 and later Derek Fawcus +# Version: MetaWare High C with PAMAKE 13 Feb 2001 # ########################################################################### @@ -120,7 +120,7 @@ # The objects to build from # -UNZIP_OBJS = unzip.obj crc32.obj crypt.obj envargs.obj \ +UNZIP_OBJS = unzip.obj crc32.obj crctab.obj crypt.obj envargs.obj \ explode.obj extract.obj fileio.obj globals.obj inflate.obj \ list.obj match.obj process.obj ttyio.obj unreduce.obj \ unshrink.obj zipinfo.obj flexos.obj $(ASMOBJS) @@ -133,7 +133,7 @@ $(HC_LIB) < -UNZIPSFX_OBJS = unzip.obs crc32.obs crypt.obs extract.obs \ +UNZIPSFX_OBJS = unzip.obs crc32.obs crctab.obs crypt.obs extract.obs \ fileio.obs globals.obs inflate.obs match.obs process.obs \ ttyio.obs flexos.obs $(ASMOBJS) @@ -164,36 +164,37 @@ unshrink.obj: unshrink.c $(UNZIP_H) unzip.obj: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h zipinfo.obj: zipinfo.c $(UNZIP_H) -process.obj: process.c $(UNZIP_H) crc32.h +process.obj: process.c $(UNZIP_H) list.obj: list.c $(UNZIP_H) match.obj: match.c $(UNZIP_H) -fileio.obj: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +fileio.obj: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h envargs.obj: envargs.c $(UNZIP_H) explode.obj: explode.c $(UNZIP_H) -extract.obj: extract.c $(UNZIP_H) crc32.h crypt.h -crc32.obj: crc32.c $(UNZIP_H) zip.h crc32.h +extract.obj: extract.c $(UNZIP_H) crypt.h +crctab.obj: crctab.c $(UNZIP_H) zip.h flexos.obj: flexos/flexos.c $(UNZIP_H) -crc32.obj: crc32.c $(UNZIP_H) zip.h crc32.h -crypt.obj: crypt.c $(UNZIP_H) crc32.h crypt.h ttyio.h zip.h +crc32.obj: crc32.c $(UNZIP_H) zip.h +crypt.obj: crypt.c $(UNZIP_H) crypt.h ttyio.h zip.h globals.obj: globals.c $(UNZIP_H) inflate.obj: inflate.c inflate.h $(UNZIP_H) ttyio.obj: ttyio.c $(UNZIP_H) crypt.h ttyio.h zip.h -funzip.obj: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h -crc32.obf: crc32.c $(UNZIP_H) zip.h crc32.h +funzip.obj: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h +crc32.obf: crc32.c $(UNZIP_H) zip.h crypt.obf: crypt.c $(UNZIP_H) crypt.h ttyio.h zip.h globals.obf: globals.c $(UNZIP_H) inflate.obf: inflate.c inflate.h $(UNZIP_H) crypt.h ttyio.obf: ttyio.c $(UNZIP_H) crypt.h ttyio.h zip.h flexos.obs: flexos/flexos.c $(UNZIP_H) -crc32.obs: crc32.c $(UNZIP_H) zip.h crc32.h -extract.obs: extract.c $(UNZIP_H) crc32.h crypt.h -fileio.obs: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +crc32.obs: crc32.c $(UNZIP_H) zip.h +crctab.obs: crctab.c $(UNZIP_H) zip.h +extract.obs: extract.c $(UNZIP_H) crypt.h +fileio.obs: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h globals.obs: globals.c $(UNZIP_H) inflate.obs: inflate.c inflate.h $(UNZIP_H) crypt.h match.obs: match.c $(UNZIP_H) -process.obs: process.c $(UNZIP_H) crc32.h +process.obs: process.c $(UNZIP_H) ttyio.obs: ttyio.c $(UNZIP_H) crypt.h ttyio.h zip.h unzip.obs: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h diff -Nru unzip-6.0/funzip.c unzip-6.0/funzip.c --- unzip-6.0/funzip.c 2009-01-06 23:23:34.000000000 +0000 +++ unzip-6.0/funzip.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,14 +1,14 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2002 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html */ /* funzip.c -- by Mark Adler */ -#define VERSION "3.95 of 20 January 2009" +#define VERSION "3.94 of 17 February 2002" /* Copyright history: @@ -116,13 +116,13 @@ #endif #define UNZIP_INTERNAL #include "unzip.h" -#include "crc32.h" #include "crypt.h" #include "ttyio.h" #ifdef EBCDIC # undef EBCDIC /* don't need ebcdic[] */ #endif +#include "tables.h" /* crc_32_tab[] */ #ifndef USE_ZLIB /* zlib's function is called inflate(), too */ # define UZinflate inflate @@ -218,6 +218,21 @@ #endif /* USE_ZLIB */ +#if (!defined(USE_ZLIB) || defined(USE_OWN_CRCTAB)) +#ifdef USE_ZLIB +ZCONST uLongf *get_crc_table() +{ + return (ZCONST uLongf *)crc_32_tab; +} +#else /* !USE_ZLIB */ +ZCONST ulg near *get_crc_table() +{ + return crc_32_tab; +} +#endif /* ?USE_ZLIB */ +#endif /* !USE_ZLIB || USE_OWN_CRCTAB */ + + static void err(n, m) int n; char *m; @@ -437,9 +452,10 @@ else if ((p = getp("Enter password: ", p, IZ_PWLEN+1)) == (char *)NULL) err(1, "no tty to prompt for password"); } +#if (defined(USE_ZLIB) && !defined(USE_OWN_CRCTAB)) /* initialize crc_32_tab pointer for decryption */ - CRC_32_TAB = get_crc_table(); - /* prepare the decryption keys for extraction and check the password */ + CRC_32_TAB = (ZCONST ulg Far *)get_crc_table(); +#endif init_keys(p); for (i = 0; i < RAND_HEAD_LEN; i++) e = NEXTBYTE; diff -Nru unzip-6.0/funzip.txt unzip-6.0/funzip.txt --- unzip-6.0/funzip.txt 2009-04-20 01:00:30.000000000 +0000 +++ unzip-6.0/funzip.txt 2010-05-14 07:26:14.000000000 +0000 @@ -1,57 +1,67 @@ -FUNZIP(1L) FUNZIP(1L) + +FUNZIP(1L) FUNZIP(1L) NAME - funzip - filter for extracting from a ZIP archive in a pipe + funzip - filter for extracting from a ZIP archive in a + pipe SYNOPSIS funzip [-password] [input[.zip|.gz]] ARGUMENTS [-password] - Optional password to be used if ZIP archive is encrypted. - Decryption may not be supported at some sites. See DESCRIPTION - for more details. + Optional password to be used if ZIP archive is + encrypted. Decryption may not be supported at some + sites. See DESCRIPTION for more details. [input[.zip|.gz]] - Optional input archive file specification. See DESCRIPTION for - details. + Optional input archive file specification. See + DESCRIPTION for details. DESCRIPTION - funzip without a file argument acts as a filter; that is, it assumes - that a ZIP archive (or a gzip'd(1) file) is being piped into standard - input, and it extracts the first member from the archive to stdout. - When stdin comes from a tty device, funzip assumes that this cannot be - a stream of (binary) compressed data and shows a short help text, - instead. If there is a file argument, then input is read from the - specified file instead of from stdin. - - A password for encrypted zip files can be specified on the command line - (preceding the file name, if any) by prefixing the password with a - dash. Note that this constitutes a security risk on many systems; cur- - rently running processes are often visible via simple commands (e.g., - ps(1) under Unix), and command-line histories can be read. If the - first entry of the zip file is encrypted and no password is specified - on the command line, then the user is prompted for a password and the - password is not echoed on the console. - - Given the limitation on single-member extraction, funzip is most useful - in conjunction with a secondary archiver program such as tar(1). The - following section includes an example illustrating this usage in the - case of disk backups to tape. + funzip without a file argument acts as a filter; that is, + it assumes that a ZIP archive (or a gzip'd(1) file) is + being piped into standard input, and it extracts the first + member from the archive to stdout. When stdin comes from + a tty device, funzip assumes that this cannot be a stream + of (binary) compressed data and shows a short help text, + instead. If there is a file argument, then input is read + from the specified file instead of from stdin. + + A password for encrypted zip files can be specified on the + command line (preceding the file name, if any) by prefix- + ing the password with a dash. Note that this constitutes + a security risk on many systems; currently running pro- + cesses are often visible via simple commands (e.g., ps(1) + under Unix), and command-line histories can be read. If + the first entry of the zip file is encrypted and no pass- + word is specified on the command line, then the user is + prompted for a password and the password is not echoed on + the console. + + Given the limitation on single-member extraction, funzip + is most useful in conjunction with a secondary archiver + program such as tar(1). The following section includes an + example illustrating this usage in the case of disk back- + ups to tape. EXAMPLES - To use funzip to extract the first member file of the archive test.zip - and to pipe it into more(1): + To use funzip to extract the first member file of the + archive test.zip and to pipe it into more(1): funzip test.zip | more - To use funzip to test the first member file of test.zip (any errors - will be reported on standard error): + To use funzip to test the first member file of test.zip + (any errors will be reported on standard error): funzip test.zip > /dev/null - To use zip and funzip in place of compress(1) and zcat(1) (or gzip(1L) - and gzcat(1L)) for tape backups: +Info-ZIP 28 February 2005 (v3.94) 1 + +FUNZIP(1L) FUNZIP(1L) + + To use zip and funzip in place of compress(1) and zcat(1) + (or gzip(1L) and gzcat(1L)) for tape backups: tar cf - . | zip -7 | dd of=/dev/nrst0 obs=8k dd if=/dev/nrst0 ibs=8k | funzip | tar xf - @@ -59,26 +69,29 @@ (where, for example, nrst0 is a SCSI tape drive). BUGS - When piping an encrypted file into more and allowing funzip to prompt - for password, the terminal may sometimes be reset to a non-echo mode. - This is apparently due to a race condition between the two programs; - funzip changes the terminal mode to non-echo before more reads its - state, and more then ``restores'' the terminal to this mode before - exiting. To recover, run funzip on the same file but redirect to - /dev/null rather than piping into more; after prompting again for the - password, funzip will reset the terminal properly. - - There is presently no way to extract any member but the first from a - ZIP archive. This would be useful in the case where a ZIP archive is - included within another archive. In the case where the first member is - a directory, funzip simply creates the directory and exits. + When piping an encrypted file into more and allowing fun- + zip to prompt for password, the terminal may sometimes be + reset to a non-echo mode. This is apparently due to a + race condition between the two programs; funzip changes + the terminal mode to non-echo before more reads its state, + and more then ``restores'' the terminal to this mode + before exiting. To recover, run funzip on the same file + but redirect to /dev/null rather than piping into more; + after prompting again for the password, funzip will reset + the terminal properly. + + There is presently no way to extract any member but the + first from a ZIP archive. This would be useful in the + case where a ZIP archive is included within another + archive. In the case where the first member is a direc- + tory, funzip simply creates the directory and exits. - The functionality of funzip should be incorporated into unzip itself - (future release). + The functionality of funzip should be incorporated into + unzip itself (future release). SEE ALSO - gzip(1L), unzip(1L), unzipsfx(1L), zip(1L), zipcloak(1L), zipinfo(1L), - zipnote(1L), zipsplit(1L) + gzip(1L), unzip(1L), unzipsfx(1L), zip(1L), zipcloak(1L), + zipinfo(1L), zipnote(1L), zipsplit(1L) URL The Info-ZIP home page is currently at @@ -89,4 +102,5 @@ AUTHOR Mark Adler (Info-ZIP) -Info-ZIP 20 April 2009 (v3.95) FUNZIP(1L) +Info-ZIP 28 February 2005 (v3.94) 2 + diff -Nru unzip-6.0/globals.c unzip-6.0/globals.c --- unzip-6.0/globals.c 2007-12-28 18:56:22.000000000 +0000 +++ unzip-6.0/globals.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + Copyright (c) 1990-2000 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2003-May-08 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -27,11 +27,9 @@ /* initialization of sigs is completed at runtime so unzip(sfx) executable * won't look like a zipfile */ -char central_hdr_sig[4] = {0, 0, 0x01, 0x02}; -char local_hdr_sig[4] = {0, 0, 0x03, 0x04}; -char end_central_sig[4] = {0, 0, 0x05, 0x06}; -char end_central64_sig[4] = {0, 0, 0x06, 0x06}; -char end_centloc64_sig[4] = {0, 0, 0x06, 0x07}; +char central_hdr_sig[4] = {0, 0, 0x01, 0x02}; +char local_hdr_sig[4] = {0, 0, 0x03, 0x04}; +char end_central_sig[4] = {0, 0, 0x05, 0x06}; /* extern char extd_local_sig[4] = {0, 0, 0x07, 0x08}; NOT USED YET */ ZCONST char *fnames[2] = {"*", NULL}; /* default filenames vector */ @@ -177,11 +175,6 @@ #ifdef TANDEM uO.aflag=1; /* default to '-a' auto create Text Files as type 101 */ #endif -#ifdef VMS -# if (!defined(NO_TIMESTAMPS)) - uO.D_flag=1; /* default to '-D', no restoration of dir timestamps */ -# endif -#endif uO.lflag=(-1); G.wildzipfn = ""; diff -Nru unzip-6.0/globals.h unzip-6.0/globals.h --- unzip-6.0/globals.h 2009-02-22 19:25:04.000000000 +0000 +++ unzip-6.0/globals.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2004 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -142,10 +142,6 @@ # endif #endif -#ifdef USE_BZIP2 -# include "bzlib.h" -#endif - /*************/ /* Globals */ @@ -185,10 +181,10 @@ int create_dirs; /* used by main(), mapname(), checkdir() */ int extract_flag; int newzip; /* reset in extract.c; used in crypt.c */ - zoff_t real_ecrec_offset; - zoff_t expect_ecrec_offset; - zoff_t csize; /* used by decompr. (NEXTBYTE): must be signed */ - zoff_t used_csize; /* used by extract_or_test_member(), explode() */ + Z_OFF_T real_ecrec_offset; + Z_OFF_T expect_ecrec_offset; + long csize; /* used by decompr. (NEXTBYTE): must be signed */ + long used_csize; /* used by extract_or_test_member(), explode() */ #ifdef DLL int fValidate; /* true if only validating an archive */ @@ -223,15 +219,17 @@ #endif /* !FUNZIP */ union work area; /* see unzpriv.h for definition of work */ -#if (!defined(USE_ZLIB) || defined(USE_OWN_CRCTAB)) +#ifndef FUNZIP +# if (!defined(USE_ZLIB) || defined(USE_OWN_CRCTAB)) ZCONST ulg near *crc_32_tab; -#else +# else ZCONST ulg Far *crc_32_tab; +# endif #endif ulg crc32val; /* CRC shift reg. (was static in funzip) */ #ifdef FUNZIP - FILE *in; /* file descriptor of compressed stream */ + FILE *in; /* file descriptor of compressed stream */ #endif uch *inbuf; /* input buffer (any size is OK) */ uch *inptr; /* pointer into input buffer */ @@ -249,16 +247,16 @@ #else int zipfd; /* zipfile file handle */ #endif - zoff_t ziplen; - zoff_t cur_zipfile_bufstart; /* extract_or_test, readbuf, ReadByte */ - zoff_t extra_bytes; /* used in unzip.c, misc.c */ + Z_OFF_T ziplen; + Z_OFF_T cur_zipfile_bufstart; /* extract_or_test, readbuf, ReadByte */ + Z_OFF_T extra_bytes; /* used in unzip.c, misc.c */ uch *extra_field; /* Unix, VMS, Mac, OS/2, Acorn, ... */ uch *hold; local_file_hdr lrec; /* used in unzip.c, extract.c */ cdir_file_hdr crec; /* used in unzip.c, extract.c, misc.c */ ecdir_rec ecrec; /* used in unzip.c, extract.c */ - z_stat statbuf; /* used by main, mapname, check_for_newer */ + struct stat statbuf; /* used by main, mapname, check_for_newer */ int mem_mode; uch *outbufptr; /* extract.c static */ @@ -292,19 +290,6 @@ ulg outcnt; /* number of chars stored in outbuf */ #ifndef FUNZIP char filename[FILNAMSIZ]; /* also used by NT for temporary SFX path */ -#ifdef UNICODE_SUPPORT - char *filename_full; /* the full path so Unicode checks work */ - extent fnfull_bufsize; /* size of allocated filename buffer */ - int unicode_escape_all; - int unicode_mismatch; -#ifdef UTF8_MAYBE_NATIVE - int native_is_utf8; /* bool, TRUE => native charset == UTF-8 */ -#endif - - int unipath_version; /* version of Unicode field */ - ulg unipath_checksum; /* Unicode field checksum */ - char *unipath_filename; /* UTF-8 path */ -#endif /* UNICODE_SUPPORT */ #ifdef CMS_MVS char *tempfn; /* temp file used; erase on close */ @@ -313,7 +298,7 @@ char *key; /* crypt static: decryption password or NULL */ int nopwd; /* crypt static */ #endif /* !FUNZIP */ - z_uint4 keys[3]; /* crypt static: keys defining pseudo-random sequence */ + ulg keys[3]; /* crypt static: keys defining pseudo-random sequence */ #if (!defined(DOS_FLX_H68_NLM_OS2_W32) && !defined(AMIGA) && !defined(RISCOS)) #if (!defined(MACOS) && !defined(ATARI) && !defined(VMS)) @@ -347,10 +332,6 @@ #endif /* ?USE_ZLIB */ #ifndef FUNZIP - /* cylindric buffer space for formatting zoff_t values (fileio static) */ - char fzofft_buf[FZOFFT_NUM][FZOFFT_LEN]; - int fzofft_index; - #ifdef SMALL_MEM char rgchBigBuffer[512]; char rgchSmallBuffer[96]; @@ -390,7 +371,16 @@ /***************************************************************************/ -#define CRC_32_TAB G.crc_32_tab +#ifdef FUNZIP +# if (!defined(USE_ZLIB) || defined(USE_OWN_CRCTAB)) + extern ZCONST ulg near crc_32_tab[256]; +# else + extern ZCONST ulg Far *crc_32_tab; +# endif +# define CRC_32_TAB crc_32_tab +#else +# define CRC_32_TAB G.crc_32_tab +#endif Uz_Globs *globalsCtor OF((void)); @@ -401,9 +391,6 @@ extern char local_hdr_sig[4]; extern char central_hdr_sig[4]; extern char end_central_sig[4]; -extern char end_central32_sig[4]; -extern char end_central64_sig[4]; -extern char end_centloc64_sig[4]; /* extern char extd_local_sig[4]; NOT USED YET */ #ifdef REENTRANT diff -Nru unzip-6.0/History.550 unzip-6.0/History.550 --- unzip-6.0/History.550 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/History.550 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,273 @@ +UnZip, version 5.5, 17 February 2002 + +Features added (or removed): + +5.5a (04 Feb 01): + - unzip.1: added documentation for the new Acorn NFS filetype features [SPC] + - generic (inflate.c, globals.h, fileio.c, unzpriv.h): integrated support of + Deflate64 for all ports with exception of MSDOS and OS/2 16-bit [SPC] + +5.5b (11 Feb 01): + - added Deflate64 support to fUnZip [SPC] + - added Deflate64 support for 16-bit environments [SPC] + +5.5c (18 Apr 01): + - SFX: made SFX_EXDIR default, added NO_SFXEXDIR option to allow switching + off the "-d exdir" support [SPC] + - OS2, WIN32: added presetting of file size for extracted files, to reduce + file fragmentation [Pavel Lastovicka, Kai Uwe Rommel, SPC] + - VMS, new functionality of -b option: when extracting to standard output + (-c or -p), -b switches to "binary piping mode" by disabling text data + conversion [SPC] + +5.5d (28 Apr 01): + - SFX: added simple "execute command after extraction" feature that uses a + command specification supplied with the Zip archive comment, controlled + by the CHEAP_SFX_AUTORUN compile time option [Paul Kienitz] + - SFX: slightly refined the CHEAP_SFX_AUTORUN code, switched off SFX_EXDIR + when CHEAP_SFX_AUTORUN is enabled, documented the new autorun feature [SPC] + - VMS: extended new "binary piping" functionality of -b switch to extraction + of archive entries with VMS attributes saved [SPC] + +5.5f (30 Sep 01): + - extract.c, TestExtraField(): added crc32 check for PKVMS e.f. type [SPC] + - added real VMS-e.f. analysis for fool-proof detection of VMS "variable + length record" text files, enabled VMS_TEXT_CONV as default (but not for + SFX stub) [SPC] + - added support for optional ACORN_FTYPE_NFS feature to more OS that allow + long filenames and commas within filenames (BeOS, Novell, OS/2, Theos, + Win32) [SPC] + +5.5g (05 Nov 01): + - extract.c, extract_or_test_entrylist(): added code for "stripping off + absolute path spec" when extracting [SPC] + +5.5h (12 Jan 02): + - unzip.h, unzip.c; mapname() in all ports except CMS/MVS, Tandem, TOPS20: + added code to strip "../" path components from extracted names and new + option "-:" to allow deactivating this security feature; changed mapname() + calling interface to allow reporting warning error levels to caller [SPC] + - man/unzip.1: documented the new "-:" option [SPC] + - vms/cmdline.c etc.: added support for "-:" option to VMS DCL interface; + updated VMS help files with description of "-:" option [SPC] + - windll/windll.{c|txt}: modified handling of DCL struct's "ndflag" member + to allow setting the "-:" option through the windll interface [SPC] + - unzpriv.h, zipinfo.c: rudimentary support for recognizing PKWARE's new + "64-bit size specs" extra field [SPC] + +5.5 (17 Feb 02): + - unix/Makefile: added separate makefile symbol INSTALL_PROGRAM for command + to install "binary" (compiled and linked) program files [Santiago Vila] + + +Bugs fixed: + +5.5a (04 Feb 01): + - all OS with Unix-compatible file attributes (Acorn, AosVS, BeOS, QDOS, Unix, + and others), mapattr(): corrected wrong masking expression in check for + missing directory attribute; added this check for ports where it was + still missing [Eric Siegerman, SPC] + - inflate.c: reorganized inner loop function for slight performance gain [SPC] + - explode.c: reorganized code (2 instead of 4 inner-loop function versions), + fixed memory leaks when get_tree() fails (added huft_free() calls) [SPC] + +5.5b (11 Feb 01): + - inflate.c: some more optimizations (also resulting in easier readable code) + [SPC] + - unzip.c: revised work area size calculation in the WORK_MALLOC case, when + the decompression buffer is malloc'ed separately; removed suspicious + "one unit excess" allocation (8193 instead of 8192, not clear why this + was introduced in ancient times) [SPC] + - VMS - cvthelp.tpu, unzip_cli.help: reformatted CLI help file to show negated + form of negatable options on a separate line in the header of qualifier + descriptions [Hunter Goatley] + - generic: renamed version.h into unzvers.h (for better distinction from zip + sources) and updated all makefiles [SPC] + - windll: changed windll.rc to get version info directly from unzvers.h and + killed windll/unzver.h [SPC] + - api.c, global.h, extract.c, explode.c, inflate.c, unshrink.c: corrected + declarations of variables and function parameters holding redirected buffer + size (unsigned vs. ulg issues), added/modified appropiate type casts [SPC] + +5.5c (18 Apr 01): + - most make procedures: unzipsfx compilation requires completely separate + object files (exception: crc32), because global structure is now different + from unzip setup (sfx: no Deflate64!) [Thom Schmidt, SPC] + - inflate.c: moved macro definitions for invalid huft code marker out of + "no ZLIB only" code part; it is used in huft_build() [Thomas Klausner] + - AMIGA, HUMAN68K: replaced specific mkGoff.c helper program sources by a more + generic gbloffs.c source (located in the top level directory); adapted + makefiles to this change [SPC] + - win32/win32: modified version() to recognize Borland C++ 5.5.1 [SPC] + - AMIGA: adapted assembler core routine flate.a to Deflate64 and the 64k + extraction buffer; adapted inflate setup to allow for 16bit ints in + an otherwise 32-bit environment [Paul Kienitz] + - human68k/flate.s: incorporated Paul's updates of amiga/flate.a in the + HUMAN68K source variant [SPC] + - MacOS: updates from MacZip release 1.07b [Dirk Haase] + - unzpriv.h: updated exceptions of "made by FAT -> filename charset is OEM" + rule to now include the PKZIP 4.0 case [SPC] + - unzpriv.h, extract.c zipinfo.c: in preparation to multivolume support, + struct min_info has been extended to hold the entry's disk volume number + (to conserve space, hostnum & hostver members are shortened to uch) [SPC] + - extract.c, extract_or_test_files() function: isolated code of "second loop" + in a separate function, in preparation for multivolume support [SPC] + - os2/os2.c: use posix-style mkdir definition whenever __GNUC__ is defined, + for better compatibility with non-EMX gcc ports [Pavel Lastovicka, SPC] + - windll/windll.c: added missing SETLOCALE() initialization to Wiz_Init() + [Kevin Cheng] + - WINDLL port: in windll.c, changed FreeDllMem() scope into static; tried + to clarify in windll.txt that Wiz_SetOpts() and Wiz_Unzip() must be + used as a pair of functions [SPC] + - VMS: removed unused and undocumented /TYPE switch from CLI interface [SPC] + +5.5d (28 Apr 01): + - unix/Makefile: correction for LynxOS target [Mark Clayton] + - extract.c: synchronized extract_or_test_entrylist() prototype declaration + for the SET_DIR_ATTRIB case with actually used function interface [SPC] + - vms/descrip.mms: corrected typo in match_$O rule [Michael Lemke] + - vms/vms.c: limit buffer size for single block output to less than 64k + (RMS limit on VAX); corrected record overflow checks to use the right + RMS limit of (32k-1) [Mike Freeman, SPC] + - unzver.h: renamed COMPANY_NAME symbol to IZ_COMPANY_NAME, check for + symbol being already defined; restrict definition of OS/2-DLL specific + version symbols to OS/2 port [Mike White, SPC] + - windll/uzexampl.c: corrected inclusion path of unzver.h [Mike White] + - acorn/GMakefile: need NO_STRNICMP, fixed missing renaming of version.h + into unzvers.h [Andy Wingate] + - vms/vms.c: fixed long standing bug BUFS512 expression - clipping to a + multiple of 512 is achieved by ANDing with ~511 instead of ~512 [SPC] + +5.5e (29 Apr 01): + - vms/vms.c: added missing -c handling in WriteBuffer() to make the "-b" + binary piping mode functional [SPC] + +5.5f (30 Sep 01): + - OS2, WIN32: reenable -X "restore ACLs" option (has been broken since + version 5.42 due to incomplete change by SPC [Michael Ringe, SPC] + - moved IZVMS specific e.f. decompression from vms/vms.c into extract.c, this + functionality is now needed for generic VMS_TEXT_CONV feature [SPC] + - zipinfo.c: fixed 16-bit specific bug in verbose IZVMS e.f. report [SPC] + - unix/unxcfg.h: fixed setup for GNU/Hurd [Marcus Brinkmann] + - tandem/tandem.c: fixed copy&paste typo in stat() [] + - vms/cmdline.c: verbatim '%' signs in format specification strings are + "escaped" by doubling them, to prevent compiler warnings for newest + DEC (COMPAQ) C versions [Dirk Munk, SPC] + - tandem/tanunz.c, tandem/tandem.[ch], fileio.c: created Tandem-specific + version of open_outfile(), moved UNZIP part of zipopen() code into this + function [SPC] + - generic: added ZCONST attributes to several function string pointer + parameters when the function does not modify the string contents [SPC] + - Contents, README, INSTALL, ToDo, WHERE: documentation updates [SPC] + +5.5g (05 Nov 01): + - win32/Makefile.bc: completed support for guisfx stub and static lib [SPC] + - vms/vms.c: in find_vms_attrs(), fixed IZVMS ef-block parser which has been + broken by changes for 5.5f beta [SPC] + - acorn/acorn.c: fixed missing semicolon in setRISCOSexfield() prototype + declaration [Andy Wingate] + - win32/Makefile.bc: removed -q flag for compatibility with older versions + of Borland C++ Builder [E-Yen Tan] + +5.5h (12 Jan 02): + - man/*.1: modified manpages to be more "friendly" to automatic conversion + tools into the OpenSource "DocBook" format [Eric S. Raymond]; + tested new manpages and corrected some formatting quirks [SPC] + - extract.c: corrected size mismatches between format specifiers and actual + numeric arguments [SPC] + - msdos/msdos.c: cleanup of token concatenation preprocessor warnings emitted + by GCC 3.02 [SPC] + - process.c: moved definition of symbol SPARKID_2 from acorn/riscos.h into + this file (symbol used by getRISCOSexfield()) [Santiago Vila, SPC] + - unzip.c, unzip() main function, REENTRANT code: fixed signal handler "leak" + by saving previous state of all allocated signal handlers and restoring + them at function exit [Jim Mathies, SPC] + - unzip.h, unzpriv.h: moved "internal" function return codes (IZ_DIR etc.) + into the private main header unzpriv.h [SPC] + - extract.c, fileio.c: extended UNIXBACKUP optional functionality to create + "numbered" backup filenames, fixed behaviour when backup file already + exists (-o option switches off numbered backup files and overwrites the + first backup file when neccessary) [Mauricio Ponzo, SPC] + - unzpriv.h, fileio.c, process.c: changed ZLSEEK macro into a real function + seek_zipf() (located in fileio.c); added check of return code to its + calls; fixed filehandle leak in do_seekable() that occured in case of + ZLSEEK errors [Miki Shapiro, SPC] + - wince/intrface.cpp: added SetFileSize() function to preallocate extraction + file space, as implemented in the win32 port (dummy function for WinCE + native compiles because availability of system service is unknown) [SPC] + - funzip.c: changed skope of err() helper function to "static" [Mark Adler] + +5.5i (01 Feb 02): + - acorn/acorn.c: correct dir traversal security fix (Acorn uses '^'as parent + folder reference); update and enhance the special character translations; + static printRISCOSexfield() functions must only be declared when its + definition is active [Darren Salt] + - unzip.h, unzip.c, man/unzip.1: disabled -: option for Acorn [SPC] + - amiga/flate.a, amiga/makefile.azt: modified the way of including gbloffs' + output in the assembler inflate code [Paul Kienitz] + - gbloffs.c: corrected USE_DEFLATE64 symbol name, added missing type cast to + CRYPT symbol handling [Paul Kienitz] + - unix/Makefile: corrected and renamed target(s) for MacOS X [Mark Adler, SPC] + - acorn/makefile: make does not like recursive macro definitions [Darren Salt] + - unreduce.c: indented the #error message directive to hide it from pure + traditional K&R C style preprocessors [Peter Jones, SPC] + - amiga/filedate.c: exclude time handling code from Zip utility compiles + (a Zip change) [Paul Kienitz] + - acorn/GMakeFile: updated machine-specific options, used standard "gcc" as + command driver for linking [Andy Wingate] + - unix/unix.c, mapname(): removed extranous opening parentesis from optional + ACORN_FTYPE_NFS only code [Santiago Vila, SPC] + - acorn/acorn.c: corrected location of the MimeMap module [Darren Salt] + - acorn/riscos.c: fixed problem with readdir() sometimes not detecting end- + of-dir on "RISCOS V4 long directory format" FSs [Darren Salt] + - msdos/makefile.wat, os2/makefile.os2, win32/Makefile.wat: updated the + Watcom C support, checked MSDOS builds, added win32 DLL target [SPC] + +5.5j (11 Feb 02): + - acorn/GMakefile, acorn/Contents: made clean target working as expected, + updated and moved version info of gcc used (Andy Wingate) + - tandem/make: added support for switching on/off of CRYPT option [Dave Smith] + - tandem/HISTORY: updated "version of current binaries" info [Dave Smith] + - tandem/tanunz.c, open_outfile(): removed unneeded fopen redefines [SPC] + - tandem/tanunz.c, checkdir(): fixed missing closing ')' of FnFilter2 macro + calls [Dave Smith] + - LICENSE: clarification that unmodified UnZipSFX stub binaries can be + distributed as part of SFX Zip archives without any further documentation + requirements [Christian Spieler, Ian E. Gorman, Greg Roelofs] + +5.5 (17 Feb 02): + - inflate.c, explode.c, globals.h, unzpriv.h: changed type of "extra bits" + arrays used to build the decoding huffman trees from "ush" into "uch" for + optimization and adapted corresponding variable types [SPC] + - tandem/tandem.c: small cosmetic changes to catch up with Zip mods [SPC] + - unzpriv.h, tandem/tandem.h: removed Zip-specific settings, implemented the + USE_EF_UT_TIME default setting for both Zip and UnZip in tandem.h, removed + corresponding entry from unzpriv.h [SPC] + - LICENSE: refinement of the SFX stub related insertion [Greg Roelofs] + - windll/windll.rc: updated copyright year [SPC] + - msdos/makefile.dj1, msdos/makefile.dj2: added missing header dependencies, + corrected wrong object list for unzipsfx target (only .dj1) [SPC] + - tandem/tanunz.c, open_outfile(): repaired wrong variable names, added + "upshifting" of filename before executing system calls [Dave Smith] + - unzpriv.h, TANDEM setup: define INT_16BIT symbol when compiling in NON WIDE + mode to get DEFLATE64 option to work [Dave Smith] + - win32/Makefile.wat: finished "$(OBJS)" -> "$(OBJU) conversion [Paul Kienitz] + - win32/w32cfg.h: Watcom C requires IZTZ_DEFINESTDGLOBALS setting when using + the timehandling replacement code from timezone.c [Paul Kienitz] + - README, unzvers.h: removed BETA notes for public release [SPC] + - os2/os2.c, SetFileSize(): 16-bit OS/2 needs fake code here [Kai-Uwe Rommel] + - unzpriv.h: added ZCONST to varmessage() buf arg [Kai-Uwe Rommel, SPC] + - os2/os2.c: added #ifndef FUNZIP sections to allow inclusion of this module + in the object modules list for 16-bit fUnZip targets [SPC] + - os2/makefile.os2: fixed 16-bit targets to include os2f.obj resp. msdosf.obj + in the fUnZip object modules list [SPC] + - fileio.c, do_string(): added typecasts in CHEAP_SFX_AUTORUN option code to + remove signed/unsigned mismatch warnings [Hunter Goatley] + +================== + +These changes occurred in beta versions 5.5a to 5.5. This list may have +left out some bugfixes and even some features...void where prohibited, your +mileage may vary, etc., etc. + +Christian Spieler diff -Nru unzip-6.0/History.551 unzip-6.0/History.551 --- unzip-6.0/History.551 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/History.551 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,189 @@ +UnZip, version 5.51, 22 May 2004 + +Features added (or removed): + +5.51a (09 Mar 02): + - no new features + +5.51b (11 Jan 03): + - TANDEM: new -r option to suppress extension merging [Dave Smith] + - WinCE, new port in addition to pUnZip (GUI): command line tool usable for + "batch" processes (not quite finished, needs "makefile" cleanup, tests, + and refinements) [Simon Roberts, SPC] + - SET_DIR_ATTRIB feature code revised and reorganized to allow seamless + adaption to different OS environments; added support for restoring + directory timestamps to the WIN32 port [Kai-Uwe-Rommel, SPC] + +5.51c (13 May 03): + - WinCE command line tool integration is (almost) finished: project file is + cleaned up and works with VC-embedded 3.0; port needs testing... [SPC] + +5.51d (27 Feb 04): + - Cygwin is recognized as a target in the Unix port + [Charles Wilson, Cosmin Truta, SPC] + - remove support for quoting characters from all ports; this feature was a + security hole [SPC] + +5.51e (01 Mar 04): + - Win32 port (list.c, unzpriv.h, win32.c, w32cfg.h): the date in (non-ZipInfo) + listings is displayed using the separator given by the system's locale, + when available [Cosmin Truta] + +5.51f (16 Apr 04): + - no new features + +5.51 final (22 May 04): + - no new features + +Bugs fixed: + +5.51a (09 Mar 02): + - process.c: corrected process_zipfiles() message and return code when a + wildcard archive spec matches exactly one "non-ziparchive" file [SPC] + - fileio.c: fixed partflush() "-a" textmode output for 16-bit ports + (was a new bug, introduced in 5.50) [SPC] + - inflate.c: modified CHECK_EOF code to allow "virtual" reading beyond EOF in + NEEDBITS() macro to fix an old but rarely triggered extraction bug [SPC] + - amiga/flate.a, human68k/flate.s: attempted to synchronize with changed + C version [SPC] + - explode.c, inflate.c, globals.h, unzpriv.h: cleaned up some "signed vs. + unsigned" inconsistencies [SPC] + - inflate.c: provided workaround for CHECK_EOF problem when using zlib (send + a fake input byte when seeing error because of "premature" EOF) [SPC] + - unzpriv.h: disabled DEFLATE64 when compiling/linking against zlib [SPC] + - windll/windll_lc.def: added missing file to distribution archive [SPC] + - windll/vb/vbunzip.bas: corrected UZDLLServ callback function - the second + function parameter is the size of the archive entry, not the length of + the message string [SPC] + +5.51b (11 Jan 03): + - consts.h, funzip.c, inflate.c, unzpriv.h: changed type of mask_bits[] array + into "unsigned" for better core-loop performance [SPC] + - amiga/flate.a, human68k/flate.s: small correction (optimization) to changes + in 5.51a, removed debugging stuff [Paul Kienitz] + - fileio.c: added display of system error string to error message shown when + open_input_file() fails at the [f]open() function [SPC] + - process.c: slightly generalize summary message when no Zip archive could be + found or opened (file may be present but unaccessible due to locking or + insufficient permission) [Santiago Vila, SPC] + - globals.h: undefine zlib_version macro when compiling against zlib to work + around a naming conflict [SPC] + - unzpriv.h: do not define WILD_STAT_BUG for Borland C on WIN32 [SPC] + - unzip.h, unzpriv.h: added precautions for some WIN32 compiler environments + which also try to appear as UNIX compatible [SPC] + - tandem/tanunz.c bugfix: set file code of generic (non-Tandem) non-text files + to 0 (unstructured) instead of 100 (object file) [Dave Smith] + - win32/win32.c: added recognition for Borland C++ Builder 6.0 to version() + [Brad Clarke] + - tandem/tanunz.c bugfix: set file code of Enscribe files containing text data + to 101 (Edit) [Dave Smith] + - api.c writeToMemory(), fileio.c flush(): Added check for buffer overflow + when extracting to memory and output buffer is different from decompression + work area [Samuel R. Blackburn, SPC] + - tandem configuration bugfix: Deflate64 was incompatible with non-WIDE memory + models; fixed OUTBUFSIZ logic and "unsigned" vs. "size_t" incompatibility + issues [Dave Smith, SPC] + +5.51c (13 May 03): + - OS2, WIN32, WinCE: '\\' chars are not allowed in file names, map them to '_' + to prevent misinterpreting them as directory separators [David F, SPC] + - windll, VB example: updated integration of "Open file" common dialog and + added special Readme text to document installation and maintenance issues + of the VB example code [ED, SPC] + - unzpriv.h: enclosed shift op expressions in definitions of MPN_xxx macro + constant with parentheses (for safety) [Cosmin Truta] + - win32/win32.c: fixed bugs in set_direc_attribs(), do not try to set dirtimes + on Win9x systems [Cosmin Truta] + - SET_DIR_ATTRIBS option: changed defer_dir_attribs() function interface to + allow non-error return without deferred direntry data [SPC] + - BeOS, Theos: updated SET_DIR_ATTRIBS code to work with the revised generic + code [SPC] + - WinCE port: revitalized WinCE port code, updated VC project files, added + "VC embedded Tools 3.0" project file [SPC] + - unzip.h: added rule to define UNIX flag for NetBSD [Ray Phillips] + - unix/Makefile: added "-DUNIX" to default CF settings, to get rid of misc + problems concerning auto-detection of a "Unix" environment [SPC] + - LICENSE: include SFXWiz in the exeption clause concerning distribution + of self-extracting archives [Greg Roelofs] + - Amiga, AosVS, Atari, BeOS, FlexOS, Human68K, MacOS, MSDOS, Novell, OS/2, + Unix, Win32, (Theos, WinCE - only code sync, no bug to fix): + fixed hole in directory traversal security code which did not recognize + "../" when path component contained some control character which was + silently skipped ["jelmer", SPC] + +5.51d (27 Feb 04): + - unix/unix.c: added recognition for Cygwin, i586 and i686 to version() + [Cosmin Truta] + - unzip.h, unzpriv.h, unix/unzcfg.h: allowed Cygwin to compile as a Unix port + [Charles Wilson, Cosmin Truta, SPC] + - unix/unxcfg.h: added inclusion of for DG/UX to fix setting + of file time-stamps [Dave Lovelace] + - macos/source/macstat.c: corrected size in zeroing instruction of stat buffer + [Yamaga Tomonori] + - extract.c: fixed memory leak in SET_DIR_ATTRIB code in case of premature + exit (disk full or user break), execute deferred tasks for processed + entries in this case [SPC] + - unix/zipgrep: allow grep of filenames with embedded spaces [Greg Roelofs] + - win32: update support for newer Cygwin releases [Cosmin Truta] + - use central directory's entry names for extraction/testing, emit warning for + local/central entry name difference (bug report by Jan Echternach) [SPC] + - all SYMLINKS-capable ports (AOS/VS, Atari, BeOS, Unix): defer creation of + symlinks until all extractions for current archive are finished, to close + a security hole (bug report by Jan Echternach) + (Changed: globals.h, unzpriv.h, extract.c, [system]/[system].c) [SPC] + - crypt.h: changed default setting for Zip to enable crypt support [SPC] + - partial documentation updates, as suggested by Greg [SPC] + +5.51e (01 Mar 04): + - unzpriv.h: guarded some definitions of USE_EF_UT_TIME [Cosmin Truta] + - Cygwin: putenv() must not be called in iz_w32_prepareTZenv() [Cosmin Truta] + - unix/unxcfg.h: include for Cygwin [Cosmin Truta] + - unix/unix.c: enable old code that sets DIRENT symbol for _POSIX_VERSION + environments [Cosmin Truta] + - win32/Makefile.bc: updated the "clean" target [Cosmin Truta] + - win32/Makefile.gcc: updated CC_CPU_OPT to "-mcpu=pentiumpro"; + fixed the "clean" target [Cosmin Truta] + - man/unzip.1: added note about the use of the "-:" option [Lon Hohberger] + - merged in usable changes (see above) from Cosmin's bogus 5.51d beta archive + variant [SPC] + - win32: guarded "NTSD integration code" (not working, under construction) + with preprocessor symbol NTSD_DEV to allow intermediate compilation and + testing of the current state [SPC] + +5.51f (16 Apr 04): + - Acorn: updated/fixed Makefile [Darren Salt] + - win32/Makefile: revised (experimental) USE_ZLIB support to work with the + current ZLIB release 1.2.1; [Cosmin Truta, Christian Spieler] + - win32/Makefile: "clean" target simplified for Win9x support [Cosmin Truta] + - INSTALL: describe DATE_SEPCHAR option [Cosmin Truta] + - unzip.c: make command-arg "\\"-to-"/" conversion MBCS-safe [SPC] + - BeOS, QDOS, Tandem, Theos, Unix - close_outfile(): to make compilers happy, + use union for matching "struct utimbuf" with "iztimes" [Jan Echternach] + - all SYMLINKS-capable ports (AOS/VS, Atari, BeOS, Unix): check for allocation + size overflow of "deferring symlink" structure (reported by Jan Echternach) + (Changed: [system]/[system].c) [SPC] + - api.c - redirect_outfile(): check for allocation overflow in textmode when + lenEOL != 1; check against integer overflow for 16-bit ports [SPC] + - fileio.c - open_outfile(): use G.lrec.ucsize throughoutly instead of + G.pInfo.uncompr_size [SPC] + - extract.c - extract_or_test_entrylist(): check for ucsize vs. csize mismatch + in STORED entries; synchronize and emit warning message [SPC] + +5.51f2 (16 Apr 04): + - extract.c: fixed compilation error (misplaced ')') [Cosmin Truta] + - win32/Makefile: added missing rule to build unzsfx32.lib [Cosmin Truta] + - INSTALL, History.551: fixed some minor typos in docs [Cosmin Truta] + +5.51 final (22 May 04): + - no code changes + - updated WHERE file, History.551 file, and various copyright and release + dates where necessary [GRR] + - removed "beta" status from unzver.h [GRR] + +================== + +These changes occurred in beta versions 5.51a to 5.51. This list may have +left out some bugfixes and even some features...void where prohibited, your +mileage may vary, etc., etc. + +Christian Spieler diff -Nru unzip-6.0/History.552 unzip-6.0/History.552 --- unzip-6.0/History.552 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/History.552 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,215 @@ +UnZip, version 5.52, 28 February 2005 + +Features added (or removed): + +5.52a (10 Dec 04): + - no new features + +5.52b (30 Dec 04): + - no new features + +5.52c (8 Jan 05): + - no new features + +5.52d (17 Jan 05): + - VMS: Faster I/O, both reading the archive and creating extracted data + files. Disk paralysis during file allocation, when highwater marking + is enabled on the destination device, is gone. [Steven Schweda (SMS)] + - VMS: Where the C RTL permits, with SET PROCESS /PARSE = EXTENDED, + command-line case is preserved, obviating quotation of upper- or + mixed-case options and parameters. [SMS] + +5.52e (23 Jan 05): + - i386 ASM_CRC code crc_i386.S, win32/crc_i386.asm, win32/crc_i386.c: + enabled optimization for i686 by default, as pre-686 CPUs are no longer + widely used nowadays. (win32/crc_lcc.asm was already i686-optimized) + [Cosmin Truta (CT)] + - INSTALL, unzpriv.h: unshrinking is now enabled by default [CT] + - AtheOS/BeOS/Unix: do not restore SUID/SGID/Tacky bits per default; added + new security override option "-K" for backward compatibility, updated + unzip.1 man page [Johnny Lee, EG] + +5.52f (27 Jan 05): + - unzpriv.h, list.c, zipinfo.c: added recognition of additional hosts and + compression methods according to latest PKWARE appnote specs [SPC] + - AtheOS/Syllable: new port, kindly contributed by Nikolaev Ruslan [SPC] + +5.52g (06 Feb 05): + - no new features + +5.52h (20 Feb 05): + - no new features + +5.52i (24 Feb 05): + - no new features + +5.52j (27 Feb 05): + - no new features + +5.52 (28 Feb 05): + - no new features + +Bugs fixed: + +5.52a (10 Dec 04): + - Debian patch 001 - change __GNU__ to __GLIBC__ in unix/unxcfg.h. This is + required to build under glibc-based systems not being Linux-based (like + the Debian GNU/kFreeBSD port, which is in preparation). In fact, + everywhere the macro __GNU__ is used, __GLIBC__ should be used instead. + It could be made even shorter since defined(linux) || defined(__GLIBC__) + should be the same as simply defined(__GLIBC__). + - fileio.c - open_input_file(): added trailing newline to error message + [Debian patch 002, Santiago Vila] + +5.52b (30 Dec 04): + - README: added short note about purpose of release 5.52 [Ed Gordon] + - format fixes [Ed Gordon] + +5.52c (8 Jan 05): + - minor fixes [Ed Gordon] + +5.52d (17 Jan 05): + - On VMS, when an odd output byte count is incremented to the next + larger even value, the extra byte written is now always zero, + reducing random differences between original and extracted files. [SMS] + - On VMS, "cannot find either fred;1 or fred;1.zip." messages have been + changed to show only non-fictional file names. [SMS] + + +5.52e (23 Jan 05): + - win32/vc6/unzip.dsw (new): replaced win32/VC6.dsp with a complete + Visual C++ 6.0 project to build unzip, funzip and unzipsfx, with both + ASM and non-ASM settings [CT] + - win32: MSC project files now preserve Win32 CRLF line ends [CT] + - win32/crc_i386.c: compile only if ASM_CRC is defined [CT] + - changed strcasecmp to strncasecmp in vms/vmszip.c [SMS] + +5.52f (27 Jan 05): + - win32: for UnZip 5.5x, our tradition "distribute all text files with LF line + endings" remains in effect, MSC project files are plain text and get + distributed in UNIX LF-only format [SPC] + - windll/windll.rc: updated copyright year [SPC] + - proginfo/extra.fld: synchronized with current appnote.iz (and PKWARE's + appnote.txt v6.2 as of 2004-04-26) [SPC] + - win32/makefile.lcc: adapted to current lcc-win32 release [SPC] + - windll/uzexampl.c: fixed some function definition mismatches (previously + there were different but compatible param types used) [SPC] + - extract.c: fixed ucsize/csize mismatch test introduced in UnZip 5.51 and + corrected a follow-up extraction size bug (12 excess bytes written) for + encrypted stored entries [SPC] + - MacOS, OS2 - fixed security holes: formatted output (?printf) should not + use unchecked strings as format specifiers [Ulf Harnhammar] + - man/unzip.1, man/zipinfo.1: added explicit note on how to supply a + left bracket in a filename argument; clarified the scope of the -C option; + documented the different compressed size calculation modes for encrypted + entries in UnZip's and ZipInfo's listing output [Greg Roelofs, SPC] + - list.c, zipinfo.c: fixed ancient bug: when specifying only an exclude list, + all not-excluded zip archive entries should be listed [SPC] + - extract.c, unzpriv.h, w32.cfg, wce.cfg: added Cdecl modifier to the qsort + comparison function (allows use of stdcall mode in SFXWiz project) [SPC] + - extract.c, unzpriv.h: use LONGINT consistently for >>all<< zipfile offset + variables and adapt some type casts (allow handling of 4G archives on + systems that support 64bit file offsets) [Paul Slootman] + - renamed LONGINT into Z_OFF_T for better "in-code-documentation" [SPC] + - unzpriv.h, NEXTBYTE macro modified to allow compatibility with unsigned + bufsize counter incnt [Steven M. Schweda] + - unix/unxcfg.h: corrected Debian patch #1 by re-adding __GNU__ conditionals + where they appeared before [SPC] + - unzip.h, win32/decs.h, win32/struct.h: encapsulated declarations as + extern "C" for C++ compilation mode [SPC] + - Win32 port: integrated deferred NTSD handling for directories in the + generic dir attributes setting functionality [SPC] + - Win32: synchronized new MSVC6 project files with master Makefile (removed + unused modules and link libs, SFX opt for size, enable DBCS) [SPC] + - BeOS: synchronized code with Unix port to support reentrancy [SPC] + - All but TOPS20, VMS, WinCE: added length check to externally + supplied argument in do_wild() [SPC] + +5.52g (06 Feb 05): + - VMS (fileio.c - open_infile()): corrected VMS specific open-args, patch + was accidentally left out in 5.52f [SMS, SPC] + - win32/w32cfg.h: define Cdecl as empty macro for Watcom C [P. Kienitz, SPC] + - win32/win32.c: updated OS-system message in version() [SPC] + - extract.c: corrected integer size mismatch in deferred dirs code [SPC] + - VMS: support "-T" option as /TIMESTAMP in CLI command interface [SMC] + - VMS: updated help files for UNIX and DCL interface with missing descriptions + of recently added options and new hint notes [SMC, SPC] + - win32/win32.c - set_direc_attribs(): work-around for "cannot set timestamp + of read-only dirs" bug [Cosmin Truta] + - win32/win32.c - NTQueryVolInfo(): fixed typecast warning [Cosmin Truta] + - unzpriv.h, unix/Makefile, win32/Makefile.gcc: changed build policy for + POSIX-emulating gcc distributions on Win32 (e.g. CygWin) to default to + creating POSIX-mode binaries; win32/Makefile.gcc may be used to build + win32-aware binaries (added -DFORCE_WIN32_OVER_UNIX to default compilation + options) [Cosmin Truta, SPC] + - INSTALL, History.552: stylistic text corrections [Cosmin Truta] + - win32/win32.c: complete revision of timestamp handling code; added prepro- + cessor flag NO_W32TIMES_IZFIX to allow optional compile with time handling + exactly like the (faulty) standard of other Windows programs [SPC] + - unzip.c, INSTALL: announce and document new NO_W32TIMES_IZFIX compilation + option [SPC] + - WHERE: updated to new version numbers for Zip and UnZip [SPC] + - README: summary of main changes for 5.52 added [SPC] + +5.52h (20 Feb 05): + - License: updated list of core authors [Cosmin Truta, Christian Spieler] + - WHERE: further corrections [Cosmin Truta] + - windll/windll.c - Wiz_SetOpts(): corrected mapping of PromptToOverwrite and + noflag to UnZip's internal options structure, finally fixing the windll + extract mode interface (previous change from 5.40 -> 5.41 fixed some + issues but created new bugs) [SPC] + - windll/windll.txt: documented the exact meaning of the windll struct DCL + flags nfflag, ExtractOnlyNewer, noflag, PromptToOverwrite and their + interactions [SPC] + - win32: set ASM_CRC as default for MSC, GCC, LCC, EMX/RSX (vanilla BCC does + not support inline asm) [SPC] + +5.52i (24 Feb 05): + - proginfo/ziplimit.txt: corrected enhanced limits of the Zip64 extensions, + updated status info on Info-ZIP's support of Zip64 archives [SPC] + - windll: renamed MS Visual C++ (5&6) project files into unique names, added + master workspace file for building all windll projects in one process [SPC] + - windll: extended MS Visual C++ project files to support both ASM_CRC and + NOASM builds; changed unzip dll projects to link against the multithreading + MS C runtime dll [SPC] + - wince/intrface.cpp - utimeToFileTime(): revised code for more efficiency, + added support for NO_W32TIMES_IZFIX [SPC] + - documentation and changelog fixes [SPC] + +5.52j (27 Feb 05): + - AtheOS: some documentation updates (2004-Sep-06) [SPC] + - tandem/tanunz.c: fix typo in do_wild() [SPC] + - unix/Makefile: added -DUNIX to some special targets, to be sure [SPC] + - vms/cmdline.c: corrected declaration of external string constants [SPC] + - vms/vms.h: removed obsolete definitions [SPC] + - vms/vms.c: stream-lined code formatting [SPC] + - WinCE: added workspace file for VCEmbedded 3.0 environment [SPC] + - windll/: windll.{c|txt}, uzexampl.{c|h}: misc formatting cleanups [SPC] + - extract.c, fileio.c: cosmetic updates [SPC] + - inflate.c: fixed undefined global vars error in DEBUG message of the + USE_ZLIB interface code [Johnny Lee] + - gbloffs.c: made assembler symbols output safe against multiple defines + (from UnZip 6.0 beta) [Paul Kienitz, SPC] + - Theos: updated theos/Contents, theos/makefile to include Theos-specific + translation table header file charconv.h [SPC] + - VMS (unzip.c): updated some help messages from UnZip 6.0 beta sources + [Steven M. Schweda, SPC] + - INSTALL: updated description of VMS_TEXT_CONV option [SPC] + - LICENSE, unzip.h: added Steven M. Schweda to Info-ZIP group [SPC] + - man/unzip.1: updated Authors list [SPC] + - README, unzvers.h: switched to "Release" mode (removed BETA note) [SPC] + +5.52 (28 Feb 05): + - win32/win32.c - defer_dir_attribs(): fixed critical "mem-access to nirwana" + bug when processing directory entries without any local extra field; + added some explaining comments [Kai Uwe Rommel, Johnny Lee, SPC] + - wince/punzip.rcv: derive VERSION_PATCH from UZ_PATCHLEVEL [SPC] + - Updated release dates (History.552, README, unzvers.h, all man pages) [SPC] + +================== + +These changes occurred in beta versions 5.52a to 5.52. This list may have +left out some bugfixes and even some features...void where prohibited, your +mileage may vary, etc., etc. + +Christian Spieler diff -Nru unzip-6.0/human68k/human68k.c unzip-6.0/human68k/human68k.c --- unzip-6.0/human68k/human68k.c 2007-12-23 16:40:48.000000000 +0000 +++ unzip-6.0/human68k/human68k.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. @@ -800,58 +800,55 @@ void close_outfile(__G) __GDEF { - /* skip restoring time stamps on user's request */ - if (uO.D_flag <= 1) { #ifdef USE_EF_UT_TIME - dos_fdatetime dos_dt; - iztimes z_utime; - struct tm *t; + dos_fdatetime dos_dt; + iztimes z_utime; + struct tm *t; #endif /* USE_EF_UT_TIME */ #ifdef USE_EF_UT_TIME - if (G.extra_field && + if (G.extra_field && #ifdef IZ_CHECK_TZ - G.tz_is_valid && + G.tz_is_valid && #endif - (ef_scan_for_izux(G.extra_field, G.lrec.extra_field_length, 0, - G.lrec.last_mod_dos_datetime, &z_utime, NULL) - & EB_UT_FL_MTIME)) - { - TTrace((stderr, "close_outfile: Unix e.f. modif. time = %ld\n", - z_utime.mtime)); - /* round up (down if "up" overflows) to even seconds */ - if (z_utime.mtime & 1) - z_utime.mtime = (z_utime.mtime + 1 > z_utime.mtime) ? - z_utime.mtime + 1 : z_utime.mtime - 1; - TIMET_TO_NATIVE(z_utime.mtime) /* NOP unless MSC 7 or Macintosh */ - t = localtime(&(z_utime.mtime)); - } else - t = (struct tm *)NULL; - if (t != (struct tm *)NULL) { - if (t->tm_year < 80) { - dos_dt.z_dtf.zt_se = 0; - dos_dt.z_dtf.zt_mi = 0; - dos_dt.z_dtf.zt_hr = 0; - dos_dt.z_dtf.zd_dy = 1; - dos_dt.z_dtf.zd_mo = 1; - dos_dt.z_dtf.zd_yr = 0; - } else { - dos_dt.z_dtf.zt_se = t->tm_sec >> 1; - dos_dt.z_dtf.zt_mi = t->tm_min; - dos_dt.z_dtf.zt_hr = t->tm_hour; - dos_dt.z_dtf.zd_dy = t->tm_mday; - dos_dt.z_dtf.zd_mo = t->tm_mon + 1; - dos_dt.z_dtf.zd_yr = t->tm_year - 80; - } + (ef_scan_for_izux(G.extra_field, G.lrec.extra_field_length, 0, + G.lrec.last_mod_dos_datetime, &z_utime, NULL) + & EB_UT_FL_MTIME)) + { + TTrace((stderr, "close_outfile: Unix e.f. modif. time = %ld\n", + z_utime.mtime)); + /* round up (down if "up" overflows) to even seconds */ + if (z_utime.mtime & 1) + z_utime.mtime = (z_utime.mtime + 1 > z_utime.mtime) ? + z_utime.mtime + 1 : z_utime.mtime - 1; + TIMET_TO_NATIVE(z_utime.mtime) /* NOP unless MSC 7.0 or Macintosh */ + t = localtime(&(z_utime.mtime)); + } else + t = (struct tm *)NULL; + if (t != (struct tm *)NULL) { + if (t->tm_year < 80) { + dos_dt.z_dtf.zt_se = 0; + dos_dt.z_dtf.zt_mi = 0; + dos_dt.z_dtf.zt_hr = 0; + dos_dt.z_dtf.zd_dy = 1; + dos_dt.z_dtf.zd_mo = 1; + dos_dt.z_dtf.zd_yr = 0; } else { - dos_dt.z_dostime = G.lrec.last_mod_dos_datetime; + dos_dt.z_dtf.zt_se = t->tm_sec >> 1; + dos_dt.z_dtf.zt_mi = t->tm_min; + dos_dt.z_dtf.zt_hr = t->tm_hour; + dos_dt.z_dtf.zd_dy = t->tm_mday; + dos_dt.z_dtf.zd_mo = t->tm_mon + 1; + dos_dt.z_dtf.zd_yr = t->tm_year - 80; } - _dos_filedate(fileno(G.outfile), dos_dt.z_dostime); + } else { + dos_dt.z_dostime = G.lrec.last_mod_dos_datetime; + } + _dos_filedate(fileno(G.outfile), dos_dt.z_dostime); #else /* !USE_EF_UT_TIME */ - _dos_filedate(fileno(G.outfile), G.lrec.last_mod_dos_datetime); + _dos_filedate(fileno(G.outfile), G.lrec.last_mod_dos_datetime); #endif /* ?USE_EF_UT_TIME */ - } fclose(G.outfile); diff -Nru unzip-6.0/human68k/Makefile unzip-6.0/human68k/Makefile --- unzip-6.0/human68k/Makefile 2006-12-25 21:34:48.000000000 +0000 +++ unzip-6.0/human68k/Makefile 2010-05-14 07:26:14.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile for UnZip 5.53 and later: Human68k with gcc NIIMI Satoshi +# Makefile for UnZip 5.50 and later: Human68k with gcc NIIMI Satoshi # # The original Makefile maybe works fine, but X680x0 is too slow # to process it. So I split out needed part. # -# Last revised: 25 Dec 06 +# Last revised: 27 Feb 01 # # 1999/09/23: Modified by Shimazaki Ryo. @@ -29,13 +29,12 @@ FC = -DFUNZIP # object files -OBJS = unzip.o crc32.o crc_68.o crypt.o envargs.o explode.o extract.o \ +OBJS = unzip.o crc_68.o crctab.o crypt.o envargs.o explode.o extract.o \ fileio.o globals.o inflate.o flate.o list.o match.o process.o \ - ttyio.o ubz2err.o unreduce.o unshrink.o zipinfo.o human68k.o -OBJX = unzipsfx.o crc32_.o crc_68.o crypt_.o extract_.o fileio_.o globals_.o \ - inflate_.o flate_.o match_.o process_.o ttyio_.o ubz2err_.o human68k_.o -OBJF = funzip.o crc32f.o crc_68.o cryptf.o globalsf.o inflatef.o flatef.o \ - ttyiof.o + ttyio.o unreduce.o unshrink.o zipinfo.o human68k.o +OBJX = unzipsfx.o crc_68.o crctab_.o crypt_.o extract_.o fileio_.o globals_.o \ + inflate_.o flate_.o match_.o process_.o ttyio_.o human68k_.o +OBJF = funzip.o crc_68.o cryptf.o globalsf.o inflatef.o flatef.o ttyiof.o UNZIP_H = unzip.h unzpriv.h globals.h @@ -67,75 +66,66 @@ funzip.x: $(OBJF) $(CC) $(LDFLAGS) -o $@ $(OBJF) $(LIBS) -crc32.o: crc32.c $(UNZIP_H) zip.h crc32.h +#crc32.o: crc32.c $(UNZIP_H) zip.h +crctab.o: crctab.c $(UNZIP_H) zip.h crypt.o: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h envargs.o: envargs.c $(UNZIP_H) explode.o: explode.c $(UNZIP_H) -extract.o: extract.c $(UNZIP_H) crc32.h crypt.h -fileio.o: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h -funzip.o: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.hh +extract.o: extract.c $(UNZIP_H) crypt.h +fileio.o: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h +funzip.o: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h globals.o: globals.c $(UNZIP_H) inflate.o: inflate.c inflate.h $(UNZIP_H) list.o: list.c $(UNZIP_H) match.o: match.c $(UNZIP_H) -process.o: process.c $(UNZIP_H) crc32.h +process.o: process.c $(UNZIP_H) ttyio.o: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err.o: ubz2err.c $(UNZIP_H) unreduce.o: unreduce.c $(UNZIP_H) unshrink.o: unshrink.c $(UNZIP_H) unzip.o: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h zipinfo.o: zipinfo.c $(UNZIP_H) - -# unzipsfx -crc32_.o: crc32.c $(UNZIP_H) zip.h crc32.h - $(CC) $(CFLAGS) $(XC) -c $< -o $@ - -crypt_.o: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h +crctab_.o: crctab.c $(UNZIP_H) zip.h # unzipsfx $(CC) $(CFLAGS) $(XC) -c $< -o $@ -extract_.o: extract.c $(UNZIP_H) crc32.h crypt.h +crypt_.o: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx $(CC) $(CFLAGS) $(XC) -c $< -o $@ -fileio_.o: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +extract_.o: extract.c $(UNZIP_H) crypt.h # unzipsfx $(CC) $(CFLAGS) $(XC) -c $< -o $@ -globals_.o: globals.c $(UNZIP_H) +fileio_.o: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h # unzipsfx $(CC) $(CFLAGS) $(XC) -c $< -o $@ -inflate_.o: inflate.c inflate.h $(UNZIP_H) crypt.h +globals_.o: globals.c $(UNZIP_H) # unzipsfx $(CC) $(CFLAGS) $(XC) -c $< -o $@ -match_.o: match.c $(UNZIP_H) +inflate_.o: inflate.c inflate.h $(UNZIP_H) crypt.h # unzipsfx $(CC) $(CFLAGS) $(XC) -c $< -o $@ -process_.o: process.c $(UNZIP_H) crc32.h +process_.o: process.c $(UNZIP_H) # unzipsfx $(CC) $(CFLAGS) $(XC) -c $< -o $@ -ttyio_.o: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +match_.o: match.c $(UNZIP_H) # unzipsfx $(CC) $(CFLAGS) $(XC) -c $< -o $@ -ubz2err_.o: ubz2err.c $(UNZIP_H) +ttyio_.o: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx $(CC) $(CFLAGS) $(XC) -c $< -o $@ -unzipsfx.o: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h +unzipsfx.o: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h # unzipsfx $(CC) $(CFLAGS) $(XC) -c $< -o $@ -# funzip -crc32f.o: crc32.c $(UNZIP_H) zip.h crc32.h - $(CC) $(CFLAGS) $(FC) -c $< -o $@ - -cryptf.o: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +cryptf.o: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip $(CC) $(CFLAGS) $(FC) -c $< -o $@ -globalsf.o: globals.c $(UNZIP_H) +globalsf.o: globals.c $(UNZIP_H) # funzip $(CC) $(CFLAGS) $(FC) -c $< -o $@ -inflatef.o: inflate.c inflate.h $(UNZIP_H) crypt.h +inflatef.o: inflate.c inflate.h $(UNZIP_H) crypt.h # funzip $(CC) $(CFLAGS) $(FC) -c $< -o $@ -ttyiof.o: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +ttyiof.o: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip $(CC) $(CFLAGS) $(FC) -c $< -o $@ diff -Nru unzip-6.0/inflate.c unzip-6.0/inflate.c --- unzip-6.0/inflate.c 2008-07-30 01:31:08.000000000 +0000 +++ unzip-6.0/inflate.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,13 +1,13 @@ /* - Copyright (c) 1990-2008 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2007-Mar-04 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html */ /* inflate.c -- by Mark Adler - version c17e, 30 Mar 2007 */ + version c17a, 04 Feb 2001 */ /* Copyright history: @@ -115,18 +115,10 @@ c17 31 Dec 00 C. Spieler added preliminary support for Deflate64 c17a 04 Feb 01 C. Spieler complete integration of Deflate64 support c17b 16 Feb 02 C. Spieler changed type of "extra bits" arrays and - corresponding huft_build() parameter e from + corresponding huft_buid() parameter e from ush into uch, to save space c17c 9 Mar 02 C. Spieler fixed NEEDBITS() "read beyond EOF" problem with CHECK_EOF enabled - c17d 23 Jul 05 C. Spieler fixed memory leaks in inflate_dynamic() - when processing invalid compressed literal/ - distance table data - c17e 30 Mar 07 C. Spieler in inflate_dynamic(), initialize tl and td - to prevent freeing unallocated huft tables - when processing invalid compressed data and - hitting premature EOF, do not reuse td as - temp work ptr during tables decoding */ @@ -330,67 +322,6 @@ /*---------------------------------------------------------------------------*/ #ifdef USE_ZLIB -/* Beginning with zlib version 1.2.0, a new inflate callback interface is - provided that allows tighter integration of the zlib inflate service - into unzip's extraction framework. - The advantages are: - - uses the windows buffer supplied by the unzip code; this saves one - copy process between zlib's internal decompression buffer and unzip's - post-decompression output buffer and improves performance. - - does not pull in unused checksum code (adler32). - The preprocessor flag NO_ZLIBCALLBCK can be set to force usage of the - old zlib 1.1.x interface, for testing purpose. - */ -#ifdef USE_ZLIB_INFLATCB -# undef USE_ZLIB_INFLATCB -#endif -#if (defined(ZLIB_VERNUM) && ZLIB_VERNUM >= 0x1200 && !defined(NO_ZLIBCALLBCK)) -# define USE_ZLIB_INFLATCB 1 -#else -# define USE_ZLIB_INFLATCB 0 -#endif - -/* Check for incompatible combinations of zlib and Deflate64 support. */ -#if defined(USE_DEFLATE64) -# if !USE_ZLIB_INFLATCB - #error Deflate64 is incompatible with traditional (pre-1.2.x) zlib interface! -# else - /* The Deflate64 callback function in the framework of zlib 1.2.x requires - the inclusion of the unsupported infback9 header file: - */ -# include "infback9.h" -# endif -#endif /* USE_DEFLATE64 */ - - -#if USE_ZLIB_INFLATCB - -static unsigned zlib_inCB OF((void FAR *pG, unsigned char FAR * FAR * pInbuf)); -static int zlib_outCB OF((void FAR *pG, unsigned char FAR *outbuf, - unsigned outcnt)); - -static unsigned zlib_inCB(pG, pInbuf) - void FAR *pG; - unsigned char FAR * FAR * pInbuf; -{ - *pInbuf = G.inbuf; - return fillinbuf(__G); -} - -static int zlib_outCB(pG, outbuf, outcnt) - void FAR *pG; - unsigned char FAR *outbuf; - unsigned outcnt; -{ -#ifdef FUNZIP - return flush(__G__ (ulg)(outcnt)); -#else - return ((G.mem_mode) ? memflush(__G__ outbuf, (ulg)(outcnt)) - : flush(__G__ outbuf, (ulg)(outcnt), 0)); -#endif -} -#endif /* USE_ZLIB_INFLATCB */ - /* GRR: return values for both original inflate() and UZinflate() @@ -411,154 +342,6 @@ { int retval = 0; /* return code: 0 = "no error" */ int err=Z_OK; -#if USE_ZLIB_INFLATCB - -#if (defined(DLL) && !defined(NO_SLIDE_REDIR)) - if (G.redirect_slide) - wsize = G.redirect_size, redirSlide = G.redirect_buffer; - else - wsize = WSIZE, redirSlide = slide; -#endif - - if (!G.inflInit) { - /* local buffer for efficiency */ - ZCONST char *zlib_RtVersion = zlibVersion(); - - /* only need to test this stuff once */ - if ((zlib_RtVersion[0] != ZLIB_VERSION[0]) || - (zlib_RtVersion[2] != ZLIB_VERSION[2])) { - Info(slide, 0x21, ((char *)slide, - "error: incompatible zlib version (expected %s, found %s)\n", - ZLIB_VERSION, zlib_RtVersion)); - return 3; - } else if (strcmp(zlib_RtVersion, ZLIB_VERSION) != 0) - Info(slide, 0x21, ((char *)slide, - "warning: different zlib version (expected %s, using %s)\n", - ZLIB_VERSION, zlib_RtVersion)); - - G.dstrm.zalloc = (alloc_func)Z_NULL; - G.dstrm.zfree = (free_func)Z_NULL; - - G.inflInit = 1; - } - -#ifdef USE_DEFLATE64 - if (is_defl64) - { - Trace((stderr, "initializing inflate9()\n")); - err = inflateBack9Init(&G.dstrm, redirSlide); - - if (err == Z_MEM_ERROR) - return 3; - else if (err != Z_OK) { - Trace((stderr, "oops! (inflateBack9Init() err = %d)\n", err)); - return 2; - } - - G.dstrm.next_in = G.inptr; - G.dstrm.avail_in = G.incnt; - - err = inflateBack9(&G.dstrm, zlib_inCB, &G, zlib_outCB, &G); - if (err != Z_STREAM_END) { - if (err == Z_DATA_ERROR || err == Z_STREAM_ERROR) { - Trace((stderr, "oops! (inflateBack9() err = %d)\n", err)); - retval = 2; - } else if (err == Z_MEM_ERROR) { - retval = 3; - } else if (err == Z_BUF_ERROR) { - Trace((stderr, "oops! (inflateBack9() err = %d)\n", err)); - if (G.dstrm.next_in == Z_NULL) { - /* input failure */ - Trace((stderr, " inflateBack9() input failure\n")); - retval = 2; - } else { - /* output write failure */ - retval = (G.disk_full != 0 ? PK_DISK : IZ_CTRLC); - } - } else { - Trace((stderr, "oops! (inflateBack9() err = %d)\n", err)); - retval = 2; - } - } - if (G.dstrm.next_in != NULL) { - G.inptr = (uch *)G.dstrm.next_in; - G.incnt = G.dstrm.avail_in; - } - - err = inflateBack9End(&G.dstrm); - if (err != Z_OK) { - Trace((stderr, "oops! (inflateBack9End() err = %d)\n", err)); - if (retval == 0) - retval = 2; - } - } - else -#endif /* USE_DEFLATE64 */ - { - /* For the callback interface, inflate initialization has to - be called before each decompression call. - */ - { - unsigned i; - int windowBits; - /* windowBits = log2(wsize) */ - for (i = (unsigned)wsize, windowBits = 0; - !(i & 1); i >>= 1, ++windowBits); - if ((unsigned)windowBits > (unsigned)15) - windowBits = 15; - else if (windowBits < 8) - windowBits = 8; - - Trace((stderr, "initializing inflate()\n")); - err = inflateBackInit(&G.dstrm, windowBits, redirSlide); - - if (err == Z_MEM_ERROR) - return 3; - else if (err != Z_OK) { - Trace((stderr, "oops! (inflateBackInit() err = %d)\n", err)); - return 2; - } - } - - G.dstrm.next_in = G.inptr; - G.dstrm.avail_in = G.incnt; - - err = inflateBack(&G.dstrm, zlib_inCB, &G, zlib_outCB, &G); - if (err != Z_STREAM_END) { - if (err == Z_DATA_ERROR || err == Z_STREAM_ERROR) { - Trace((stderr, "oops! (inflateBack() err = %d)\n", err)); - retval = 2; - } else if (err == Z_MEM_ERROR) { - retval = 3; - } else if (err == Z_BUF_ERROR) { - Trace((stderr, "oops! (inflateBack() err = %d)\n", err)); - if (G.dstrm.next_in == Z_NULL) { - /* input failure */ - Trace((stderr, " inflateBack() input failure\n")); - retval = 2; - } else { - /* output write failure */ - retval = (G.disk_full != 0 ? PK_DISK : IZ_CTRLC); - } - } else { - Trace((stderr, "oops! (inflateBack() err = %d)\n", err)); - retval = 2; - } - } - if (G.dstrm.next_in != NULL) { - G.inptr = (uch *)G.dstrm.next_in; - G.incnt = G.dstrm.avail_in; - } - - err = inflateBackEnd(&G.dstrm); - if (err != Z_OK) { - Trace((stderr, "oops! (inflateBackEnd() err = %d)\n", err)); - if (retval == 0) - retval = 2; - } - } - -#else /* !USE_ZLIB_INFLATCB */ int repeated_buf_err; #if (defined(DLL) && !defined(NO_SLIDE_REDIR)) @@ -707,7 +490,6 @@ if (err != Z_OK) Trace((stderr, "oops! (inflateReset() err = %d)\n", err)); -#endif /* ?USE_ZLIB_INFLATCB */ return retval; } @@ -1201,9 +983,9 @@ unsigned l; /* last length */ unsigned m; /* mask for bit lengths table */ unsigned n; /* number of lengths to get */ - struct huft *tl = (struct huft *)NULL; /* literal/length code table */ - struct huft *td = (struct huft *)NULL; /* distance code table */ - struct huft *th; /* temp huft table pointer used in tables decoding */ + struct huft *tlp; + struct huft *tl; /* literal/length code table */ + struct huft *td; /* distance code table */ unsigned bl; /* lookup bits for tl */ unsigned bd; /* lookup bits for td */ unsigned nb; /* number of bit length codes */ @@ -1215,6 +997,8 @@ int retval = 0; /* error code returned: initialized to "no error" */ + td = tlp = tl = (struct huft *)NULL; + /* make local bit buffer */ Trace((stderr, "\ndynamic block")); b = G.bb; @@ -1266,9 +1050,9 @@ while (i < n) { NEEDBITS(bl) - j = (th = tl + ((unsigned)b & m))->b; + j = (tlp = tl + ((unsigned)b & m))->b; DUMPBITS(j) - j = th->v.n; + j = tlp->v.n; if (j < 16) /* length of code in bits (0..15) */ ll[i++] = l = j; /* save last length in l */ else if (j == 16) /* repeat last length 3 to 6 times */ @@ -1276,10 +1060,8 @@ NEEDBITS(2) j = 3 + ((unsigned)b & 3); DUMPBITS(2) - if ((unsigned)i + j > n) { - huft_free(tl); + if ((unsigned)i + j > n) return 1; - } while (j--) ll[i++] = l; } @@ -1288,10 +1070,8 @@ NEEDBITS(3) j = 3 + ((unsigned)b & 7); DUMPBITS(3) - if ((unsigned)i + j > n) { - huft_free(tl); + if ((unsigned)i + j > n) return 1; - } while (j--) ll[i++] = 0; l = 0; @@ -1301,10 +1081,8 @@ NEEDBITS(7) j = 11 + ((unsigned)b & 0x7f); DUMPBITS(7) - if ((unsigned)i + j > n) { - huft_free(tl); + if ((unsigned)i + j > n) return 1; - } while (j--) ll[i++] = 0; l = 0; @@ -1374,10 +1152,8 @@ cleanup_and_exit: /* free the decoding tables, return */ - if (tl != (struct huft *)NULL) - huft_free(tl); - if (td != (struct huft *)NULL) - huft_free(td); + if (tl) huft_free(tl); + if (td) huft_free(td); return retval; } diff -Nru unzip-6.0/INSTALL unzip-6.0/INSTALL --- unzip-6.0/INSTALL 2009-04-16 19:04:34.000000000 +0000 +++ unzip-6.0/INSTALL 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ __________________________________________________________________________ - This is the Info-ZIP file INSTALL (for UnZip), last updated 16 Apr 2009. + This is the Info-ZIP file INSTALL (for UnZip), last updated 27 Feb 2005. __________________________________________________________________________ Yes, this is a rather long file, but don't be intimidated: much of its @@ -26,8 +26,10 @@ (4) Try out your new UnZip the way you would any new utility: read the docs first. - Ah ha ha ha!! Oh, that kills me. But seriously... For VMS, see the - Install section below or [.vms]README. for details. + Ah ha ha ha!! Oh, that kills me. But seriously...for VMS, UnZip must + be installed as a "foreign symbol"; see the Install section below or + [.vms]readme.vms for details. (It basically involves adding a line + sort of like this to login.com: $ unzip == "$disk:[dir]unzip.exe") For DOS and other OSes without explicit timezone support (i.e., everybody but Unix, Windows 95 and NT), make sure the "TZ" environment variable is @@ -63,11 +65,6 @@ details, see the make procedures and accompanied documentation for your particular target OS. - As of UnZip 5.53, support for the bzip2 compression algorithm has been - added to UnZip. However, this support requires the original sources of - the bzip2 compression library which have to be aquired separately; - see "http://www.bzip.org/" for further reference. - (2) Choose the appropriate makefile based on the description in the Con- tents file for your OS (that is, there's only one for Unix or OS/2, but @@ -167,11 +164,12 @@ VMS_TEXT_CONV (everybody except VMS) VMS Stream_LF-format text files archived with the "-V" option - (/VMS), but NOT with -VV (/VMS=ALL), should be fine when extracted - on other systems. Stream_LF-files archived with -VV should be - readable as well, but they may get some junk appended. - Text files with other formats (like the default VFC, with its - embedded byte counts) may be only semi-readable at best when + (/VMS) should be readable when extracted on other systems. + They may + get some junk appended, depending on Zip version and precise options + used for archiving them, but appart from that problem they should + be fine. Text files with other formats (like the default VFC, with + its embedded byte counts) may be only semi-readable at best when extracted on other systems. Defining this option enables UnZip's -aa option to detect and convert VMS VFC-record text files into native text format. Non-VMS UnZips now use a rudimentary VMS extra @@ -194,7 +192,7 @@ If you like to get UnZip binaries that handle command line arguments similar to Unix tools which are run in an Unix shell, you might want to set this compilation option. This option enables the support for - globbing command line arguments containing wildcards that is built + globbing command line arguments containing wild card that is built into the DJGPP startup code. When using a binary compiled with this option, you may have to enclose wildcard arguments in double quotes to get them passed to the program unmodified. Enabling this option @@ -216,11 +214,11 @@ depending on the current time being normal vs. daylight saving time. When this option is set, UnZip behaves exactly like other programs; file timestamps on NTFS partitions are created so that their >current< - local time representation displayed by directory listings (cmd.exe - "dir" command or Windows Explorer listings) is the same as shown by - UnZip's listing. But the actual UTC timestamp values stored in the - NTFS file attributes vary depending on whether extraction is done - at summer or winter time. + local time representation displayed by directory listings (cmd.exe "dir" + command or Windows Explorer listings) is the same as shown by UnZip's + listing. But the actual UTC timestamp values stored in the NTFS + file attributes vary depending on whether extraction is done at + summer or winter time. This option is not recommended because it sacrifies the timestamp comparison checks when extracting or modifying archives in "update only newer" mode. @@ -241,8 +239,7 @@ DATE_FORMAT=DF_DMY or DF_MDY or DF_YMD This option controls the order in which date components are printed - in non-ZipInfo-mode listings: day-month-year or month-day-year or - year-month-day. + in listings: day-month-year or month-day-year or year-month-day. For DOS, FlexOS, OS2, Theos and Win32, the format is automatically obtained from the operating system; most others default to DF_MDY. @@ -265,14 +262,11 @@ UnZip to append "datalen info" to QDOS exec type files in the same format as used by QDOS cross-compilers on Unix or the qltools v2.2(+). - UNIXBACKUP (default on OS/2, Unix, Win32) + UNIXBACKUP (Unix only) This option enables a -B option that instructs UnZip to rename files that would normally be overwritten. The renamed files are given a - tilde suffix and a unique sequence number (`~#####'). Note that - previously renamed files may be overwritten without notice, even - if the -n option is given. - On target ports where UNIXBACKUP is enabled by default, the negated - option NO_UNIXBACKUP may be used to disable this feature. + tilde suffix (`~'). Note that previously renamed files may be over- + written without notice, even if the -n option is given. OS2_EAS List the sizes of OS/2 EAs and ACLs for each file as two extra columns @@ -338,31 +332,6 @@ get implemented). So, the NO_DEFLATE64 option is provided to allow exclusion of the deflate64 support. - USE_BZIP2 (requires additional external code distribution) - UnZip can optionally support the "bzip2" compression algorithm for - most ports on 32-bit (or higher) platforms. Currently, this support - is integrated in the Make procedures of MSDOS 32-bit (DJGPP), VMS, - Win32, and many Unix systems. - Prerequisites: - You have to obtain the bzip2 source distribution (version 1.03 or - higher) and extract it into the "bzip2" subdirectory. - Compilation: - - MSDOS, Win32: You have to supply the symbol definition - "USEBZ2=1" on the command line when you invoke the make program. - - Unix: The target "generic" automatically activates bzip2 support - when its configure script detects the presence of the bzip2 sources. - For other targets, there are two options: - a) Use the command - "make -f unix/Makefile D_USE_BZ2=-DUSE_BZIP2 L_BZ2=-lbz2 \ - LIBBZ2=bzip2/libbz2.a YourTarget" - (Do not use the continuation line and replace YourTarget with - the appropiate target name.) - b) Edit the Makefile and remove the comment signs from the lines - that define the macros D_USE_BZ2, L_BZ2, and LIBBZ2 (at about - line 84 ff.). - - VMS: The MMS/MMK build program should automatically activate the - bzip2 support when it detects the presence of the bzip2 sources. - MULT_VOLUME (experimental for 5.5x, do NOT use in production versions!) NO_MULT_VOLUME (default) The symbol MULT_VOLUME is used to flag code portions needed for @@ -370,7 +339,7 @@ used to compile a production versions of UnZip. This flag has been introduced to allow integration of experimental code for multi-volume support in the master source tree. This feature will become a default - option in the future 6.1 release of UnZip. + option in the future 6.0 release of UnZip. LZW_CLEAN USE_UNSHRINK (now default, as of January 2005) @@ -414,78 +383,6 @@ in future versions. Note that the same security warnings given in the description of the -P option apply here as well. - UNICODE_SUPPORT - Enable restoring from UTF-8 encoded paths. These paths are stored - in extra fields in a backward-compatible way so that archives with - UTF-8 paths still work on zips and unzips that don't support Unicode. - This support follows the recent additions to the PKWare AppNote for - Unicode support, except that Unicode comments on systems where UTF-8 - is not the current character set is not implemented in this release. - - Internally, Unicode support can be achieved by three methods: - a) The charset encoding used by the system is already UTF-8, so - the program just has to select the UTF-8 versions of the stored - filenames for file name handling. - This method is enabled by setting the symbol UTF8_MAYBE_NATIVE; - this activates code to check for native UTF-8 encoding in the - locale settings. - b) The operating system and the compilation environment support - "wide character" data in Unicode encoding (UCS-2/UTF-16 or UCS-4), - which are used to translate between UTF-8 and the native - extended-ASCII character encoding. - The code for this method is activated by setting the preprocessor - symbol UNICODE_WCHAR. - It may be activated together with UTF8_MAYBE_NATIVE to provide - more versatile Unicode support and additional "debugging" options - for checking the correct recognition of non-ASCII Unicode - characters. - c) The operating system and the compilation environment allow to use - unicode-encoded "wide character" data for native text strings - support. - Complete support for this method requires a throughout revision - of the UnZip code. All internal string handling and text output - needs to be ported to use wchar_t character storage. - This porting is still in an experimental stage and not ready - for general distribution. - - On some ports UNICODE_SUPPORT is set automatically: - - WIN32 (and WinCE) use method b) by defining UNICODE_SUPPORT and - UNICODE_WCHAR. - - On Unix, the automatic configuration script enables UNICODE_WCHAR - if ISO-10646 compatible wide characters are supported and - UTF8_MAYBE_NATIVE if the locale detection call is available. - For these ports, setting NO_UNICODE_SUPPORT forces deactivation of - the Unicode support. - - NO_SETLOCALE (for Unix) - On Unix, it is now assumed that and the setlocale function - are available, to setup locale-aware filtering of displayed filenames. - The option NO_SETLOCALE allows to disable the dependency on - and setlocale() on systems where this assumption is invalid (and the - auto-configuring make target "generic" cannot be used for capabilities - detection). - - _MBCS - NO_MBCS - Enable multi-byte character set support. This is the default for the - Human68k system (originated from Japan) and for Win32 (here only DBCS - "double-byte character set" support). The MBCS support should also be - enabled on systems which are capable of using UTF-8 as native charset. - For MBCS support, the C runtime library must supply implementations - for the mblen() function and the MB_CUR_MAX runtime macro/function. - The NO_MBCS symbol allows to explicitely disable MBCS support for - testing purpose, or when MBCS support does not work as expected. - - HAVE_WORKING_ISPRINT - NO_WORKING_ISPRINT - The symbol HAVE_WORKING_ISPRINT enables enhanced non-printable chars - filtering for filenames in the fnfilter() function. On some systems - (Unix, VMS, some Win32 compilers), this setting is enabled by default. - In cases where isprint() flags printable extended characters as - unprintable, defining NO_WORKING_ISPRINT allows to disable the enhanced - filtering capability in fnfilter(). (The ASCII control codes 0x01 to - 0x1f are always escaped on ASCII systems.) - DEBUG Used for debugging purposes; enables Trace() statements. Generally it's best to compile only one or two modules this way. @@ -524,68 +421,27 @@ procedure better.) VMS (OpenVMS): - On VMS, two build methods are provided: a command procedure, and - description files for MMS or MMK. Both methods must be run from - the main directory, not the [.VMS] subdirectory. - - A simple build using the command procedure looks like this: - @ [.VMS]BUILD_UNZIP.COM - - A simple build using MMS or MMK looks like this: - MMS /DESCRIP = [.VMS]DESCRIP.MMS ! Or, with MMK, ... - MMK /DESCRIP = [.VMS]DESCRIP.MMS - - Various options for each build method are explained in comments in - the main builder file, either BUILD_UNZIP.COM or DESCRIP.MMS. - - Here are some more complex build examples: - - o Build with the large-file option enabled (non-VAX only): - - @ [.VMS]BUILD_UNZIP LARGE - or: - MMS /DESC = [.VMS] /MACRO = LARGE=1 - - o Re-link the executables (small-file and large-file): - - @ [.VMS]BUILD_UNZIP LINK - @ [.VMS]BUILD_UNZIP LARGE LINK - or - MMK /DESC = [.VMS] CLEAN_EXE ! Deletes existing executables. - MMK /DESC = [.VMS] ! Builds new executables. - MMK /DESC = [.VMS] /MACRO = LARGE=1 CLEAN_EXE - MMK /DESC = [.VMS] /MACRO = LARGE=1 - - o Build a large-file product from scratch, for debug, getting - compiler listings and link maps: - - mms /desc = [.vms] clean - mms /desc = [.vms] /macro = (DBG=1, LARGE=1. LIST=1) - - On VAX, the builders attempt to cope with the various available C - compilers: DEC/Compaq/HP C, VAX C, or GNU C. If DEC/Compaq/HP C is - not available or not desired, comments in the relevant builder file - explain the command-line options used to select a different - compiler. - - System-architecture-specific files (like objects and executables) - are placed in separate directories, such as [.ALPHA], [.IA64], or - [.VAX]. Large-file products get their own directories, [.ALPHAL] - or [.IA64L]. On VAX, VAX C products are placed in [.VAXV], GNU C - products in [.VAXG]. Each product builder announces what the - destination directory will be when it is run. - - Common files, such as the help libraries (UNZIP.HLP for the - default UNIX-like command-line interface, UNZIP_CLI.HLP for the - VMS-like command-line interface), are placed in the main - directory. With a mixed-architecture VMS cluster, the same main - directory on a shared disk may may be used by all system types. - (Using the NOHELP option with BUILD_UNZIP.COM can keep it from - making the same help files repeatedly.) - - Some further information may be found in the files - [.VMS]README. and [.VMS]00BINARY.VMS, though much of what's - there is now obsolete. + For a one-time build of the default UnZip, simply run the supplied + command file MAKE_UNZ.COM. To use either DEC C on an Alpha or the + default compiler (DEC C if available, else VAX C) on a VAX, type + "@make_unz" (after copying make_unz.com into the current directory; + otherwise do "@[.vms]make_unz" to invoke it in place). + If you want to force the use of VAX C when both VAX C and DEC C are + available, do "@make_unz vaxc" (or "@[.vms]make_unz vaxc"). + To use GNU C (gcc) on either platform, do "@make_unz gnuc". + (NOTE: Currently, gcc for VMS(AXP) is not yet available!) + The command procedure MAKE_UNZ.COM now recognizes custom feature + options supplied in the logical name LOCAL_UNZIP; details are + explained in the comments at the top of MAKE_UNZ.COM. + + For repeated makes or other hacker-like tinkering with the sources, + or to create a custom version of UnZip, you may use the included "MMS" + makefile, DESCRIP.MMS. Copy it into the current directory, read the + comments at the top of it and run MadGoat's free MMS clone "MMK" on it. + Newer versions of DEC's MMS should work, too, but older ones apparently + choke on some MMK-specific extensions in DESCRIP.MMS. (If somebody + has an "older" version that works, let us know and we'll remove this + caveat.) MS-DOS See the msdos\Contents file for notes regarding which makefile(s) to @@ -609,43 +465,18 @@ read the comments at the top of the makefile for an explanation of the differences between some of the same-compiler targets. - Win32 (WinNT or Win9x) - For creating Win32 executables, the Microsoft Visual C++ compiler - platforms from version 2.x up to 8.0 (Visual Studio .Net C++ 2005) - are supported. Recent build test have been run on VC++ 6.0, 7.1 - and 8.0. The linker of newer Microsoft Visual C++ versions (beginning - with Visual C++ 2008 - [VC++ 9.0]) create executables that are marked - to run on Windows 2000 and newer, only. Although these Visual C++ - environments may succeed in building Win32 Info-ZIP executables, - they cannot (and must not) be used to create binaries for public - distribution. - Alternative compilers for the Intel platforms are OpenWatcom C++, - GNU C (preferably the mingw32 port, CygWin and emx/rsxnt may also - work), Borland C++, or lcc-win32. - DEC C/C++ for NT/Alpha may or may not still work. + Win32 (WinNT or Win95) + You will need Microsoft Visual C++ 2.x for Win95 or NT (Intel, MIPS, + Alpha, PowerPC?), or Watcom C++ for Win95 or NT (Intel only). As an + alternative for Intel platforms, GNU C (the emx/rsxnt port) is now + supported as well. DEC C/C++ for NT/Alpha may or may not still work. For the Watcom compiler, use WMAKE and win32\makefile.wat; for the - Microsoft compilers, use NMAKE and win32\Makefile; for mingw32 and - CygWin, GNU Make and win32\Makefile.gcc should do the job. - With emx+gcc, a good choice is GNUMake 3.75 (or higher) from the - djgpp V2 distribution used on win32\Makefile.emx. - - The unzip32.dll WinDLL executables can be built using the appropiate - Makefile in the win32\ subdirectory, or by using the Microsoft Visual - C++ project files supplied below the windll subdirectory. Besides the - MSC compilers, gcc-mingw32, Watcom C and Borland C allow to build the - Windows UnZip DLL. By default, the Makefiles for compilers that use - the Microsoft C runtime are configured to link against the shared - multithreading C runtime DLL. Depending on the intended usage for - unzip32.dll, a statically linked dll might be more suitable. The - make scripts for MSC support build variants with static linking; you - should look up the configuration switch DLLSTANDALONE in the MSC - Makefile or the "Static..." build configurations in the Visual Studio - project files. + others, use NMAKE and win32\Makefile. With emx+gcc, a good choice is + GNUMake 3.75 from the djgpp V2.01 distribution. WinCE (WinCE or WinNT) - Only Microsoft Visual C++ 5.0, 6.0 or Visual C++ embedded 3.0 or later - are supported. Use the appropiate version of the included project - files and check wince\README for details. + Only Microsoft Visual C++ 5.0 or later is supported. Use the included + project file and check wince\README for details. AmigaDOS SAS/Lattice C and Manx Aztec C are supported. For SAS C 6.x do "smake @@ -756,61 +587,18 @@ it in order to find the new executables. VMS - To complete the installation, the executables may be left in place, - or moved (or copied) to a convenient place. While other methods - (like DCL$PATH) exist, most users define symbols to make the UnZip - executables available as foreign commands. These symbol definitions - may be placed in a user's SYS$LOGIN:LOGIN.COM, or in a more central - location, like SYS$MANAGER:SYLOGIN.COM. Typical symbol definitions - might look like these: - - UNZIP :== $ dev:[dir]UNZIP.EXE ! UNIX-like command line. - or: - UNZIP :== $ dev:[dir]UNZIP_CLI.EXE ! VMS-like command line. - - For convenience, a ZIPINFO symbol could also be defined, so: - - ZIPINFO :== $ dev:[dir]UNZIP.EXE """-Z""" - - On a non-VAX system, different symbols could be defined for the - small-file and large-file programs. For example: - - UNZIPS :== $ dev:[dir.ALPHA]UNZIP.EXE ! UNZIPS = small-file UnZip. - UNZIP*L :== $ dev:[dir.ALPHAL]UNZIP.EXE ! UNZIP[L] = large-file UnZip. + Install UnZip as foreign symbol by adding this to login.com: - The builders create help text files, UNZIP.HLP and UNZIP_CLI.HLP. - These may be incorporated into an existing help library, or a separate - UnZip help library may be created using commands like these, using - either UNZIP.HLP (as shown) or UNZIP_CLI.HLP: + $ unzip == "$disk:[dir]unzip.exe" + $ zipinfo == "$disk:[dir]unzip.exe ""-Z""" - $ LIBRARY /HELP dev:[dir]existing_library.HLB UNZIP.HLP - - $ LIBRARY /CREATE /HELP UNZIP.HLB UNZIP.HLP - - UnZip help may then be accessed from a separate UnZip help library - using a command like: - - $ HELP /LIBRARY = device:[directory]UNZIP.HLB - - For greater ease, the user (or system manager) may define a - HLP$LIBRARY logical name to allow the HELP utility to find the UnZip - help library automatically. See HELP HELP /USERLIBRARY for more - details. The command procedure HLP_LIB_NEXT.COM may be used to - determine the next available HLP$LIBRARY logical name, and could be - adapted to define a HLP$LIBRARY logical name for an UnZip help library. - - The kit includes MAKESFX.COM, a command procedure intended to simplify - creating a self-extracting archive. It may be helpful to install this - procedure near the UnZip executables. MAKESFX.COM expects another - symbol definition, like one of these: - - UNZIPSFX :== $ dev:[dir]UNZIPSFX.EXE ! UNIX-like command line. - or: - UNZIPSFX :== $ dev:[dir]UNZIPSFX_CLI.EXE ! VMS-like command line. - - Again here, on a non-VAX system, either a small-file or a large-file - UNZIPSFX program may be used. (MAKESFX.COM could be modified to allow - a run-time choice to be made.) + where "disk" and "dir" are the location of the UnZip executable; the "$" + before the disk name is important, as are the double-double-quotes around + the -Z. Some people, including the author, prefer a short alias such as + "ii" instead of "zipinfo"; edit to taste. Optionally also install unzipsfx + for use with the MAKESFX.COM command file. See vms/README (or [.VMS]README.) + for details on this and for notes/warnings about zipfiles and UnZip under + VMS. OS/2, MS-DOS, NT, Atari, Amiga Move or copy unzip.exe (or unzip.ttp, or UnZip, or whatever) to a direc- @@ -835,8 +623,6 @@ install in /boot/bin, do "make prefix=/boot/bin install". Macintosh - (This port is for Macintosh OS before Mac OS X. See Unix Apple below for - Mac OS X and later.) MacZip requires at least System 7 and a Macintosh with a minimum of a Motorola 68020 or PowerPC 601 processor. Other configurations may work but it is not tested at all. @@ -851,11 +637,5 @@ Look into "macos/README.TXT" (or ":macos:README.TXT" on Mac) for further info. -Macintosh OS X (Unix Apple) - Mac OS X and later are based on BSD Unix and are supported by the Unix - port. See the Unix port for details. Though support is currently - minimal, we plan to support additional Mac OS X features, such as resource - forks, in future releases. - Human68K, TOPS-20, AOS/VS, MVS, VM/CMS, etc. Dunno, sorry... diff -Nru unzip-6.0/LICENSE unzip-6.0/LICENSE --- unzip-6.0/LICENSE 2009-01-03 18:34:00.000000000 +0000 +++ unzip-6.0/LICENSE 2010-05-14 07:26:14.000000000 +0000 @@ -1,10 +1,9 @@ -This is version 2009-Jan-02 of the Info-ZIP license. +This is version 2005-Feb-10 of the Info-ZIP copyright and license. The definitive version of this document should be available at -ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely and -a copy at http://www.info-zip.org/pub/infozip/license.html. +ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely. -Copyright (c) 1990-2009 Info-ZIP. All rights reserved. +Copyright (c) 1990-2005 Info-ZIP. All rights reserved. For the purposes of this copyright and license, "Info-ZIP" is defined as the following set of individuals: @@ -16,7 +15,7 @@ Steve P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs, Kai Uwe Rommel, Steve Salisbury, Dave Smith, Steven M. Schweda, Christian Spieler, Cosmin Truta, Antoine Verheijen, Paul von Behren, - Rich Wales, Mike White. + Rich Wales, Mike White This software is provided "as is," without warranty of any kind, express or implied. In no event shall Info-ZIP or its contributors be held liable @@ -25,37 +24,31 @@ Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it -freely, subject to the above disclaimer and the following restrictions: +freely, subject to the following restrictions: - 1. Redistributions of source code (in whole or in part) must retain - the above copyright notice, definition, disclaimer, and this list - of conditions. - - 2. Redistributions in binary form (compiled executables and libraries) - must reproduce the above copyright notice, definition, disclaimer, - and this list of conditions in documentation and/or other materials - provided with the distribution. Additional documentation is not needed - for executables where a command line license option provides these and - a note regarding this option is in the executable's startup banner. The - sole exception to this condition is redistribution of a standard - UnZipSFX binary (including SFXWiz) as part of a self-extracting archive; - that is permitted without inclusion of this license, as long as the - normal SFX banner has not been removed from the binary or disabled. + 1. Redistributions of source code must retain the above copyright notice, + definition, disclaimer, and this list of conditions. + + 2. Redistributions in binary form (compiled executables) must reproduce + the above copyright notice, definition, disclaimer, and this list of + conditions in documentation and/or other materials provided with the + distribution. The sole exception to this condition is redistribution + of a standard UnZipSFX binary (including SFXWiz) as part of a + self-extracting archive; that is permitted without inclusion of this + license, as long as the normal SFX banner has not been removed from + the binary or disabled. 3. Altered versions--including, but not limited to, ports to new operating - systems, existing ports with new graphical interfaces, versions with - modified or added functionality, and dynamic, shared, or static library - versions not from Info-ZIP--must be plainly marked as such and must not - be misrepresented as being the original source or, if binaries, - compiled from the original source. Such altered versions also must not - be misrepresented as being Info-ZIP releases--including, but not - limited to, labeling of the altered versions with the names "Info-ZIP" - (or any variation thereof, including, but not limited to, different - capitalizations), "Pocket UnZip," "WiZ" or "MacZip" without the - explicit permission of Info-ZIP. Such altered versions are further - prohibited from misrepresentative use of the Zip-Bugs or Info-ZIP - e-mail addresses or the Info-ZIP URL(s), such as to imply Info-ZIP - will provide support for the altered versions. + systems, existing ports with new graphical interfaces, and dynamic, + shared, or static library versions--must be plainly marked as such + and must not be misrepresented as being the original source. Such + altered versions also must not be misrepresented as being Info-ZIP + releases--including, but not limited to, labeling of the altered + versions with the names "Info-ZIP" (or any variation thereof, including, + but not limited to, different capitalizations), "Pocket UnZip," "WiZ" + or "MacZip" without the explicit permission of Info-ZIP. Such altered + versions are further prohibited from misrepresentative use of the + Zip-Bugs or Info-ZIP e-mail addresses or of the Info-ZIP URL(s). 4. Info-ZIP retains the right to use the names "Info-ZIP," "Zip," "UnZip," "UnZipSFX," "WiZ," "Pocket UnZip," "Pocket Zip," and "MacZip" for its diff -Nru unzip-6.0/list.c unzip-6.0/list.c --- unzip-6.0/list.c 2009-02-08 17:11:34.000000000 +0000 +++ unzip-6.0/list.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -41,46 +41,42 @@ #ifdef OS2_EAS static ZCONST char Far HeadersS[] = - " Length EAs ACLs Date Time Name"; + " Length EAs ACLs Date Time Name"; static ZCONST char Far HeadersS1[] = - "--------- --- ---- ---------- ----- ----"; + " -------- --- ---- ---- ---- ----"; #else - static ZCONST char Far HeadersS[] = - " Length Date Time Name"; - static ZCONST char Far HeadersS1[] = - "--------- ---------- ----- ----"; + static ZCONST char Far HeadersS[] = " Length Date Time Name"; + static ZCONST char Far HeadersS1[] = " -------- ---- ---- ----"; #endif static ZCONST char Far HeadersL[] = - " Length Method Size Cmpr Date Time CRC-32 Name"; + " Length Method Size Ratio Date Time CRC-32 Name"; static ZCONST char Far HeadersL1[] = - "-------- ------ ------- ---- ---------- ----- -------- ----"; + "-------- ------ ------- ----- ---- ---- ------ ----"; static ZCONST char Far *Headers[][2] = { {HeadersS, HeadersS1}, {HeadersL, HeadersL1} }; static ZCONST char Far CaseConversion[] = "%s (\"^\" ==> case\n%s conversion)\n"; static ZCONST char Far LongHdrStats[] = - "%s %-7s%s %4s %02u%c%02u%c%02u %02u:%02u %08lx %c"; + "%8lu %-7s%8lu %4s %02u%c%02u%c%02u %02u:%02u %08lx %c"; static ZCONST char Far LongFileTrailer[] = "-------- ------- --- \ - -------\n%s %s %4s %lu file%s\n"; + -------\n%8lu %8lu %4s %lu file%s\n"; #ifdef OS2_EAS static ZCONST char Far ShortHdrStats[] = - "%s %6lu %6lu %02u%c%02u%c%02u %02u:%02u %c"; - static ZCONST char Far ShortFileTrailer[] = - "--------- ----- ----- \ - -------\n%s %6lu %6lu %lu file%s\n"; + "%9lu %6lu %6lu %02u%c%02u%c%02u %02u:%02u %c"; + static ZCONST char Far ShortFileTrailer[] = " -------- ----- ----- \ + -------\n%9lu %6lu %6lu %lu file%s\n"; static ZCONST char Far OS2ExtAttrTrailer[] = "%lu file%s %lu bytes of OS/2 extended attributes attached.\n"; static ZCONST char Far OS2ACLTrailer[] = "%lu file%s %lu bytes of access control lists attached.\n"; #else static ZCONST char Far ShortHdrStats[] = - "%s %02u%c%02u%c%02u %02u:%02u %c"; - static ZCONST char Far ShortFileTrailer[] = - "--------- -------\n%s\ - %lu file%s\n"; + "%9lu %02u%c%02u%c%02u %02u:%02u %c"; + static ZCONST char Far ShortFileTrailer[] = " -------- \ + -------\n%9lu %lu file%s\n"; #endif /* ?OS2_EAS */ #endif /* !WINDLL */ @@ -102,15 +98,14 @@ #endif int date_format; char dt_sepchar; - ulg members=0L; - zusz_t j; + ulg j, members=0L; unsigned methnum; #ifdef USE_EF_UT_TIME iztimes z_utime; struct tm *t; #endif unsigned yr, mo, dy, hh, mm; - zusz_t csiz, tot_csize=0L, tot_ucsize=0L; + ulg csiz, tot_csize=0L, tot_ucsize=0L; #ifdef OS2_EAS ulg ea_size, tot_easize=0L, tot_eafiles=0L; ulg acl_size, tot_aclsize=0L, tot_aclfiles=0L; @@ -120,8 +115,8 @@ static ZCONST char dtype[]="NXFS"; /* see zi_short() */ static ZCONST char Far method[NUM_METHODS+1][8] = {"Stored", "Shrunk", "Reduce1", "Reduce2", "Reduce3", "Reduce4", - "Implode", "Token", "Defl:#", "Def64#", "ImplDCL", "BZip2", - "LZMA", "Terse", "IBMLZ77", "WavPack", "PPMd", "Unk:###"}; + "Implode", "Token", "Defl:#", "Def64#", "ImplDCL", "PKres11", + "BZip2", "Unk:###"}; @@ -163,16 +158,10 @@ if (readbuf(__G__ G.sig, 4) == 0) return PK_EOF; - if (memcmp(G.sig, central_hdr_sig, 4)) { /* is it a CentDir entry? */ - /* no new central directory entry - * -> is the number of processed entries compatible with the - * number of entries as stored in the end_central record? - */ - if (((j - 1) & - (ulg)(G.ecrec.have_ecr64 ? MASK_ZUCN64 : MASK_ZUCN16)) - == (ulg)G.ecrec.total_entries_central_dir) - { - /* "j modulus 4T/64k" matches the reported 64/16-bit-unsigned + if (strncmp(G.sig, central_hdr_sig, 4)) { /* is it a CentDir entry? */ + if (((unsigned)(j - 1) & (unsigned)0xFFFF) == + (unsigned)G.ecrec.total_entries_central_dir) { + /* "j modulus 64k" matches the reported 16-bit-unsigned * number of directory entries -> probably, the regular * end of the central directory has been reached */ @@ -293,14 +282,14 @@ if (t != (struct tm *)NULL) { mo = (unsigned)(t->tm_mon + 1); dy = (unsigned)(t->tm_mday); - yr = (unsigned)(t->tm_year + 1900); + yr = (unsigned)(t->tm_year % 100); hh = (unsigned)(t->tm_hour); mm = (unsigned)(t->tm_min); } else #endif /* USE_EF_UT_TIME */ { yr = ((((unsigned)(G.crec.last_mod_dos_datetime >> 25) & 0x7f) - + 1980)); + + 80) % (unsigned)100); mo = ((unsigned)(G.crec.last_mod_dos_datetime >> 21) & 0x0f); dy = ((unsigned)(G.crec.last_mod_dos_datetime >> 16) & 0x1f); hh = (((unsigned)G.crec.last_mod_dos_datetime >> 11) & 0x1f); @@ -333,10 +322,9 @@ cfactor = (cfactor + 5) / 10; } - methnum = find_compr_idx(G.crec.compression_method); + methnum = MIN(G.crec.compression_method, NUM_METHODS); zfstrcpy(methbuf, method[methnum]); - if (G.crec.compression_method == DEFLATED || - G.crec.compression_method == ENHDEFLATED) { + if (methnum == DEFLATED || methnum == ENHDEFLATED) { methbuf[5] = dtype[(G.crec.general_purpose_bit_flag>>1) & 3]; } else if (methnum >= NUM_METHODS) { sprintf(&methbuf[4], "%03u", G.crec.compression_method); @@ -352,30 +340,11 @@ #ifdef WINDLL /* send data to application for formatting and printing */ - if (G.lpUserFunctions->SendApplicationMessage != NULL) - (*G.lpUserFunctions->SendApplicationMessage)(G.crec.ucsize, - csiz, (unsigned)cfactor, mo, dy, yr, hh, mm, - (char)(G.pInfo->lcflag ? '^' : ' '), - (LPCSTR)fnfilter(G.filename, slide, (WSIZE>>1)), - (LPCSTR)methbuf, G.crec.crc32, - (char)((G.crec.general_purpose_bit_flag & 1) ? 'E' : ' ')); - else if (G.lpUserFunctions->SendApplicationMessage_i32 != NULL) { - unsigned long ucsize_lo, csiz_lo; - unsigned long ucsize_hi=0L, csiz_hi=0L; - ucsize_lo = (unsigned long)(G.crec.ucsize); - csiz_lo = (unsigned long)(csiz); -#ifdef ZIP64_SUPPORT - ucsize_hi = (unsigned long)(G.crec.ucsize >> 32); - csiz_hi = (unsigned long)(csiz >> 32); -#endif /* ZIP64_SUPPORT */ - (*G.lpUserFunctions->SendApplicationMessage_i32)(ucsize_lo, - ucsize_hi, csiz_lo, csiz_hi, (unsigned)cfactor, - mo, dy, yr, hh, mm, - (char)(G.pInfo->lcflag ? '^' : ' '), - (LPCSTR)fnfilter(G.filename, slide, (WSIZE>>1)), - (LPCSTR)methbuf, G.crec.crc32, - (char)((G.crec.general_purpose_bit_flag & 1) ? 'E' : ' ')); - } + (*G.lpUserFunctions->SendApplicationMessage)(G.crec.ucsize, csiz, + (unsigned)cfactor, mo, dy, yr, hh, mm, + (char)(G.pInfo->lcflag ? '^' : ' '), + (LPSTR)fnfilter(G.filename, slide), (LPSTR)methbuf, G.crec.crc32, + (char)((G.crec.general_purpose_bit_flag & 1) ? 'E' : ' ')); #else /* !WINDLL */ if (cfactor == 100) sprintf(cfactorstr, LoadFarString(CompFactor100)); @@ -383,19 +352,18 @@ sprintf(cfactorstr, LoadFarString(CompFactorStr), sgn, cfactor); if (longhdr) Info(slide, 0, ((char *)slide, LoadFarString(LongHdrStats), - FmZofft(G.crec.ucsize, "8", "u"), methbuf, - FmZofft(csiz, "8", "u"), cfactorstr, + G.crec.ucsize, methbuf, csiz, cfactorstr, mo, dt_sepchar, dy, dt_sepchar, yr, hh, mm, G.crec.crc32, (G.pInfo->lcflag? '^':' '))); else #ifdef OS2_EAS Info(slide, 0, ((char *)slide, LoadFarString(ShortHdrStats), - FmZofft(G.crec.ucsize, "9", "u"), ea_size, acl_size, + G.crec.ucsize, ea_size, acl_size, mo, dt_sepchar, dy, dt_sepchar, yr, hh, mm, (G.pInfo->lcflag? '^':' '))); #else Info(slide, 0, ((char *)slide, LoadFarString(ShortHdrStats), - FmZofft(G.crec.ucsize, "9", "u"), + G.crec.ucsize, mo, dt_sepchar, dy, dt_sepchar, yr, hh, mm, (G.pInfo->lcflag? '^':' '))); #endif @@ -465,8 +433,7 @@ sprintf(cfactorstr, LoadFarString(CompFactorStr), sgn, cfactor); if (longhdr) { Info(slide, 0, ((char *)slide, LoadFarString(LongFileTrailer), - FmZofft(tot_ucsize, "8", "u"), FmZofft(tot_csize, "8", "u"), - cfactorstr, members, members==1? "":"s")); + tot_ucsize, tot_csize, cfactorstr, members, members==1? "":"s")); #ifdef OS2_EAS if (tot_easize || tot_aclsize) Info(slide, 0, ((char *)slide, "\n")); @@ -476,46 +443,31 @@ tot_easize)); if (tot_aclfiles && tot_aclsize) Info(slide, 0, ((char *)slide, LoadFarString(OS2ACLTrailer), - tot_aclfiles, - tot_aclfiles == 1 ? " has" : "s have a total of", + tot_aclfiles, tot_aclfiles == 1? " has" : "s have a total of", tot_aclsize)); #endif /* OS2_EAS */ } else #ifdef OS2_EAS Info(slide, 0, ((char *)slide, LoadFarString(ShortFileTrailer), - FmZofft(tot_ucsize, "9", "u"), tot_easize, tot_aclsize, - members, members == 1 ? "" : "s")); + tot_ucsize, tot_easize, tot_aclsize, members, members == 1? + "" : "s")); #else Info(slide, 0, ((char *)slide, LoadFarString(ShortFileTrailer), - FmZofft(tot_ucsize, "9", "u"), - members, members == 1 ? "" : "s")); + tot_ucsize, members, members == 1? "" : "s")); #endif /* OS2_EAS */ #endif /* ?WINDLL */ } - /* Skip the following checks in case of a premature listing break. */ - if (error_in_archive <= PK_WARN) { - /*--------------------------------------------------------------------------- Double check that we're back at the end-of-central-directory record. ---------------------------------------------------------------------------*/ - if ( (memcmp(G.sig, - (G.ecrec.have_ecr64 ? - end_central64_sig : end_central_sig), - 4) != 0) - && (!G.ecrec.is_zip64_archive) - && (memcmp(G.sig, end_central_sig, 4) != 0) - ) { /* just to make sure again */ - Info(slide, 0x401, ((char *)slide, LoadFarString(EndSigMsg))); - error_in_archive = PK_WARN; /* didn't find sig */ - } - - /* Set specific return code when no files have been found. */ - if (members == 0L && error_in_archive <= PK_WARN) - error_in_archive = PK_FIND; - + if (strncmp(G.sig, end_central_sig, 4)) { /* just to make sure again */ + Info(slide, 0x401, ((char *)slide, LoadFarString(EndSigMsg))); + error_in_archive = PK_WARN; /* didn't find sig */ } + if (members == 0L && error_in_archive <= PK_WARN) + error_in_archive = PK_FIND; return error_in_archive; @@ -579,7 +531,7 @@ if (readbuf(__G__ G.sig, 4) == 0) return PK_EOF; - if (memcmp(G.sig, central_hdr_sig, 4)) { /* is it a CentDir entry? */ + if (strncmp(G.sig, central_hdr_sig, 4)) { /* is it a CentDir entry? */ if (((unsigned)(j - 1) & (unsigned)0xFFFF) == (unsigned)G.ecrec.total_entries_central_dir) { /* "j modulus 64k" matches the reported 16-bit-unsigned @@ -673,7 +625,7 @@ Double check that we're back at the end-of-central-directory record. ---------------------------------------------------------------------------*/ - if (memcmp(G.sig, end_central_sig, 4)) { /* just to make sure again */ + if (strncmp(G.sig, end_central_sig, 4)) { /* just to make sure again */ Info(slide, 0x401, ((char *)slide, LoadFarString(EndSigMsg))); error_in_archive = PK_WARN; } @@ -695,9 +647,9 @@ /********************/ int ratio(uc, c) - zusz_t uc, c; + ulg uc, c; { - zusz_t denom; + ulg denom; if (uc == 0) return 0; @@ -725,7 +677,7 @@ void fnprint(__G) /* print filename (after filtering) and newline */ __GDEF { - char *name = fnfilter(G.filename, slide, (extent)(WSIZE>>1)); + char *name = fnfilter(G.filename, slide); (*G.message)((zvoid *)&G, (uch *)name, (ulg)strlen(name), 0); (*G.message)((zvoid *)&G, (uch *)"\n", 1L, 0); diff -Nru unzip-6.0/macos/README.TXT unzip-6.0/macos/README.TXT --- unzip-6.0/macos/README.TXT 2009-02-28 15:52:16.000000000 +0000 +++ unzip-6.0/macos/README.TXT 2010-05-14 07:26:14.000000000 +0000 @@ -98,8 +98,8 @@ Macintosh HD:somewhere:my_folder_to_archive:* Note: At the end of the path there must be a filename or - a wildcard ! - (see Footnotes: 1 wildcard, 2 Mac path names) + a wild card ! + (see Footnotes: 1 wild card, 2 Mac path names) So the command line should look like (one line!): @@ -529,9 +529,9 @@ --------------------------------------------------------------------------- Footnotes: -1. wildcard: - The '*' is a wildcard and means 'all files' - Just in case you don't know wildcards: +1. wild card: + The '*' is a wild card and means 'all files' + Just in case you don't know wild cards: '*' is a place holder for any character. e.g.: "this*" matches with "this_file" or "this_textfile" but it diff -Nru unzip-6.0/macos/source/macos.c unzip-6.0/macos/source/macos.c --- unzip-6.0/macos/source/macos.c 2007-12-23 17:15:36.000000000 +0000 +++ unzip-6.0/macos/source/macos.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. @@ -112,13 +112,13 @@ extern char *GetUnZipInfoVersions(void); -static OSErr SetFinderInfo(__GPRO__ int SetTime, FSSpec *spec, MACINFO *mi); +static OSErr SetFinderInfo(FSSpec *spec, MACINFO *mi); static Boolean GetExtraFieldData(short *MacZipMode, MACINFO *mi); static uch *scanMacOSexfield(uch *ef_ptr, unsigned ef_len, short *MacZipMode); static Boolean isMacOSexfield(unsigned id, unsigned size, short *MacZipMode); static void PrintMacExtraInfo(MACINFO *mi); -static OSErr SetFileTime(__GPRO); +static OSErr SetFileTime(void); static void DecodeMac3ExtraField(ZCONST uch *buff, MACINFO *mi); static void DecodeJLEEextraField(ZCONST uch *buff, MACINFO *mi); static void DecodeZPITextraField(ZCONST uch *buff, MACINFO *mi); @@ -801,17 +801,13 @@ /* finally set FinderInfo */ if (MacZipMode >= JohnnyLee_EF) { - /* skip restoring time stamps on user's request */ - err = SetFinderInfo(__G__ (uO.D_flag <= 1), - &CurrentFile, &newExtraField); + err = SetFinderInfo(&CurrentFile, &newExtraField); printerr("close_outfile SetFinderInfo ", err, err, __LINE__, __FILE__, G.filename); } else /* unknown extra field, set at least file time/dates */ { - /* skip restoring time stamps on user's request */ - if (uO.D_flag <= 1) - err = SetFileTime(__G); + err = SetFileTime(); } #ifndef SwitchZIPITefSupportOff @@ -849,8 +845,7 @@ /* Function SetFileTime() */ /****************************/ -static OSErr SetFileTime(__G) - __GDEF +static OSErr SetFileTime(void) { #ifdef USE_EF_UT_TIME iztimes z_utime; @@ -1042,8 +1037,7 @@ /* finally set FinderInfo */ if (MacZipMode >= JohnnyLee_EF) { - err_rc = SetFinderInfo(__G__ (uO.D_flag <= 0), - &CurrentFile, &newExtraField); + err_rc = SetFinderInfo(&CurrentFile, &newExtraField); printerr("macmkdir SetFinderInfo ", err_rc, err_rc, __LINE__, __FILE__, CompletePath2); } @@ -1319,7 +1313,7 @@ /* Function SetFinderInfo() */ /****************************/ -static OSErr SetFinderInfo(__GPRO__ int SetTime, FSSpec *spec, MACINFO *mi) +static OSErr SetFinderInfo(FSSpec *spec, MACINFO *mi) { OSErr err; CInfoPBRec fpb; @@ -1335,8 +1329,7 @@ if ((MacZipMode == JohnnyLee_EF) || (MacZipMode == NewZipMode_EF)) { - /* skip restoring time stamps on user's request */ - if (SetTime && !UseUT_ExtraField) { + if (!UseUT_ExtraField) { fpb.hFileInfo.ioFlCrDat = mi->fpb.hFileInfo.ioFlCrDat; fpb.hFileInfo.ioFlMdDat = mi->fpb.hFileInfo.ioFlMdDat; } @@ -1352,8 +1345,7 @@ fpb.hFileInfo.ioFVersNum = mi->fpb.hFileInfo.ioFVersNum; fpb.hFileInfo.ioACUser = mi->fpb.hFileInfo.ioACUser; - /* skip restoring time stamps on user's request */ - if (SetTime && !UseUT_ExtraField) { + if (!UseUT_ExtraField) { fpb.hFileInfo.ioFlBkDat = mi->fpb.hFileInfo.ioFlBkDat; #ifdef USE_EF_UT_TIME if (!(mi->flags & EB_M3_FL_NOUTC)) diff -Nru unzip-6.0/macos/source/macunzip.c unzip-6.0/macos/source/macunzip.c --- unzip-6.0/macos/source/macunzip.c 2006-12-24 11:43:18.000000000 +0000 +++ unzip-6.0/macos/source/macunzip.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2006 Info-ZIP. All rights reserved. + Copyright (c) 1990-2001 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. @@ -546,24 +546,26 @@ if ( WaitNextEvent( everyEvent, &theEvent, 0, nil )) { - switch (theEvent.what) { + switch (theEvent.what) { case mouseDown: - domousedown( &theEvent ); - break; + domousedown( &theEvent ); + break; - case autoKey: - case keyDown: - if ((theEvent.modifiers & cmdKey) && - ((theEvent.message & charCodeMask) == '.')) - { - printf("\n\n <- User Canceled -> \n"); - exit(1); /* setjmp() must be already called */ - } - return; + case autoKey: + case keyDown: + { + if ((theEvent.modifiers & cmdKey) && + ((theEvent.message & charCodeMask) == '.')) + { + printf("\n\n <- User Canceled -> \n"); + exit(1); /* setjmp() must be already called */ + } + return; + } - } /* switch (theEvent.what) */ - } /* if ( WaitNextEvent(... */ + } /* switch (theEvent.what) */ + } /* if ( WaitNextEvent(... */ } diff -Nru unzip-6.0/macos/UnZpPrj.xml unzip-6.0/macos/UnZpPrj.xml --- unzip-6.0/macos/UnZpPrj.xml 2005-12-30 20:34:22.000000000 +0000 +++ unzip-6.0/macos/UnZpPrj.xml 2010-05-14 07:26:14.000000000 +0000 @@ -1 +1 @@ - ]> Unzip Sioux (68k) UserSourceTrees CustomColor1 Red0 Green32767 Blue0 CustomColor2 Red0 Green32767 Blue0 CustomColor3 Red0 Green32767 Blue0 CustomColor4 Red0 Green32767 Blue0 AlwaysSearchUserPathsfalse InterpretDOSAndUnixPathsfalse UserSearchPaths SearchPath Path: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::izshr:macos: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:CHeaders: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:PascalInterfaces: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:Sources: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SystemSearchPaths SearchPath Path:MSL: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path:MacOS Support: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll LinkerMacOS 68K Linker PreLinker PostLinker TargetnameUnzip Sioux (68k) OutputDirectory Path: PathFormatMacOS PathRootProject SaveEntriesUsingRelativePathsfalse FileMappings FileTypeAPPL FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeAppl FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeMMLB FileExtension CompilerLib Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMPLF FileExtension CompilerLib Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMWCD FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeOBJ FileExtension CompilerMPW Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeRSRC FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeTEXT FileExtension.bh CompilerBalloon Help Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c++ CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cc CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cp CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cpp CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.exp Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.h CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMaketrue FileTypeTEXT FileExtension.p CompilerMW Pascal 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pas CompilerMW Pascal 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch CompilerMW C/C++ 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch++ CompilerMW C/C++ 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.ppu CompilerMW Pascal 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.r CompilerRez Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.seg Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypedocu FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypersrc FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeshlb FileExtension CompilerPEF Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypestub FileExtension CompilerPEF Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileExtension.doc Compiler Precompilefalse Launchabletrue ResourceFilefalse IgnoredByMaketrue CacheModDatestrue ActivateBrowserfalse DumpBrowserInfofalse CacheSubprojectstrue UseThirdPartyDebuggerfalse DebuggerCommandLine Debugger Runtime 0002000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 LogSystemMessagestrue AutoTargetDLLsfalse StopAtWatchpointstrue PauseWhileRunningfalse PauseInterval5 PauseUIFlags0 AltExePath Path PathFormatGeneric PathRootAbsolute StopAtTempBPOnLaunchtrue CacheSymbolicstrue TempBPFunctionNamemain TempBPTypefalse MWCodeGen_68K_codesizeLarge MWCodeGen_68K_structalignmentMC68K MWCodeGen_68K_fp_modeSANE MWCodeGen_68K_code680200 MWCodeGen_68K_profiler0 MWCodeGen_68K_mpwc0 MWCodeGen_68K_fourbyteints1 MWCodeGen_68K_IEEEdoubles1 MWCodeGen_68K_fardata1 MWCodeGen_68K_farvtables1 MWCodeGen_68K_farstrings1 MWCodeGen_68K_pcrelstrings0 MWCodeGen_68K_macsbugNew MWCodeGen_68K_a6frames1 MWDisassembler_68K_showcode1 MWDisassembler_68K_mix0 MWDisassembler_68K_nohex0 MWDisassembler_68K_showdata1 MWDisassembler_68K_showexceptions1 MWDisassembler_68K_showsym0 MWDisassembler_68K_shownames1 GlobalOptimizer_68K_optimizationlevelLevel0 GlobalOptimizer_68K_optforSpeed MWLinker_68K_linksym0 MWLinker_68K_symfullpath1 MWLinker_68K_linksingle0 MWLinker_68K_fastlink1 MWLinker_68K_generateMap0 MWLinker_68K_nolinkwarnings0 MWLinker_68K_glueintosegone1 MWLinker_68K_dontdeadstripinitcode0 MWProject_68K_typeApplication MWProject_68K_outfileUnzip Sioux (68k) MWProject_68K_symfilename MWProject_68K_filecreator1230662000 MWProject_68K_filetype1095782476 MWProject_68K_size1024 MWProject_68K_flags22720 MWProject_68K_rsrcheaderStandard MWProject_68K_rsrcname MWProject_68K_rsrctype1061109567 MWProject_68K_rsrcid0 MWProject_68K_rsrcmulti0 MWProject_68K_rsrcstore0 MWProject_68K_rsrcmerge0 MWProject_68K_rsrcflags0 MWProject_68K_a40 MWProject_68K_minsize512 MWProject_68K_rsrcsegtype0 MWProject_68K_cfm68kcodegen0 MWProject_68K_stacksize0 MWProject_68K_thedebugger0 MWProject_68K_rsrc_custom0 MWProject_68K_is_rseg_app0 MWProject_68K_is_pilot_lib0 MWProject_68K_pilot_main_entry MWFrontEnd_C_cplusplus0 MWFrontEnd_C_checkprotos1 MWFrontEnd_C_arm0 MWFrontEnd_C_trigraphs1 MWFrontEnd_C_onlystdkeywords0 MWFrontEnd_C_enumsalwaysint0 MWFrontEnd_C_mpwpointerstyle0 MWFrontEnd_C_prefixnameUnZpSx.h MWFrontEnd_C_ansistrict1 MWFrontEnd_C_mpwcnewline0 MWFrontEnd_C_wchar_type1 MWFrontEnd_C_enableexceptions0 MWFrontEnd_C_dontreusestrings0 MWFrontEnd_C_poolstrings0 MWFrontEnd_C_dontinline0 MWFrontEnd_C_useRTTI0 MWFrontEnd_C_multibyteaware0 MWFrontEnd_C_unsignedchars0 MWFrontEnd_C_autoinline0 MWFrontEnd_C_booltruefalse1 MWFrontEnd_C_direct_to_som0 MWFrontEnd_C_som_env_check0 MWFrontEnd_C_alwaysinline0 MWFrontEnd_C_inlinelevel0 MWFrontEnd_C_ecplusplus0 MWFrontEnd_C_objective_c0 MWFrontEnd_C_defer_codegen0 MWWarning_C_warn_illpragma0 MWWarning_C_warn_emptydecl0 MWWarning_C_warn_possunwant0 MWWarning_C_warn_unusedvar0 MWWarning_C_warn_unusedarg0 MWWarning_C_warn_extracomma0 MWWarning_C_pedantic0 MWWarning_C_warningerrors0 MWWarning_C_warn_hidevirtual0 MWWarning_C_warn_implicitconv0 MWWarning_C_warn_notinlined0 MWWarning_C_warn_structclass0 MWCFM68K_exportsNone MWCFM68K_olddefversion0 MWCFM68K_oldimpversion0 MWCFM68K_currentversion0 MWCFM68K_farthreshold256 PCFM68K_sharedata0 MWCFM68K_fragmentname MWCFM68K_initname MWCFM68K_mainname__start MWCFM68K_termname MWCFM68K_libfolder0 MWCFM68K_alignmentAlign_2 MWFTP_Post_hostName MWFTP_Post_username MWFTP_Post_password MWFTP_Post_remoteDir MWFTP_Post_uploadDir MWFTP_Post_ftp_port21 MWFTP_Post_SendBin1 MWFTP_Post_ShouldLog1 MWCommandLine_Java_clsName MWCommandLine_Java_args MWJava_Language_optimize0 MWJava_Language_warnDeprecated0 MWJava_Language_emitMap0 MWJava_Language_strictFileNames0 MWJava_Language_strictFileHierarchy0 MWJava_Language_emitHeadersNoNativeHeaders MWJava_Language_packageFilter MWJava_Language_genComments1 MWJava_Language_genHeaders0 MWJava_MacOS_typeJBindery MWJava_MacOS_grow0 MWJava_MacOS_profile0 MWJava_MacOS_verify0 MWJava_MacOS_useHttpProxy0 MWJava_MacOS_useFTPProxy0 MWJava_MacOS_useFirewallProxy0 MWJava_MacOS_outfileJBoundApp MWJava_MacOS_outcreator1061109567 MWJava_MacOS_maxMem1048576 MWJava_MacOS_minMem524288 MWJava_MacOS_red65535 MWJava_MacOS_green65535 MWJava_MacOS_blue65535 MWJava_MacOS_stdoutType1464421956 MWJava_MacOS_stdinType1853189228 MWJava_MacOS_httpProxyPort0 MWJava_MacOS_fTPProxyPort0 MWJava_MacOS_firewallProxyPort0 MWJava_MacOS_httpProxy MWJava_MacOS_fTPProxy MWJava_MacOS_firewallProxy MWJava_MacOS_merge0 MWJava_MacOS_write_old_rsrcs1 MWJava_MacOS_jbindrundebug0 MWJava_MacOS_stdoutfile MWJava_MacOS_stdinfile MWJava_Output_outputtypeJarFile MWJava_Output_outfileJavaClasses.jar MWJava_Output_ftype1514754080 MWJava_Output_fcreator1297570384 MWJava_Output_compress0 MWJava_Output_genManifest0 MWJava_Output_trunctypeFront MWJava_Output_deleteClasses0 MWJava_Output_consoleApp1 MWJava_Proj_projtypeApplet MWJava_Proj_runtimeArgs MWJava_Proj_mainClassName MWJava_Proj_HTMLAppCreator1297303877 MWJava_Proj_HTMLAppNameInternet Explorer MWJava_Proj_HTMLAppWin32NameIexplore.exe MWJava_Proj_compress0 MWJava_Proj_useVM1 MWJava_Proj_workingDir MWJava_Proj_vmarguments MWJava_Proj_vmName MWJavaDoc_Proj_Version1 MWJavaDoc_Proj_Depricated0 MWJavaDoc_Proj_Author1 MWJavaDoc_Proj_Index1 MWJavaDoc_Proj_Tree1 MWJavaDoc_Proj_SunResolveToSame1 MWJavaDoc_Proj_Shortnames1 MWJavaDoc_Proj_Folder0 MWJavaDoc_Proj_GenerateAPILinks0 MWJavaDoc_Proj_scopePublic MWJavaDoc_Proj_fcreator1297303877 MWJavaDoc_Proj_encodingName MWJavaDoc_Proj_decodingName MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ MWMerge_MacOS_projectTypeApplication MWMerge_MacOS_outputNameMerge Out MWMerge_MacOS_outputCreator1061109567 MWMerge_MacOS_outputType1095782476 MWMerge_MacOS_suppressWarning0 MWMerge_MacOS_copyFragments1 MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources ‰aˆ MWCodeGen_PPC_structalignmentMC68K MWCodeGen_PPC_tracebacktablesNone MWCodeGen_PPC_processorGeneric MWCodeGen_PPC_readonlystrings0 MWCodeGen_PPC_tocdata1 MWCodeGen_PPC_profiler0 MWCodeGen_PPC_fpcontract1 MWCodeGen_PPC_schedule0 MWCodeGen_PPC_peephole1 MWCodeGen_PPC_processorspecific0 MWCodeGen_PPC_altivec0 MWCodeGen_PPC_vectortocdata0 MWCodeGen_PPC_vrsave0 MWDisassembler_PPC_showcode1 MWDisassembler_PPC_extended1 MWDisassembler_PPC_mix0 MWDisassembler_PPC_nohex0 MWDisassembler_PPC_showdata1 MWDisassembler_PPC_showexceptions1 MWDisassembler_PPC_showsym0 MWDisassembler_PPC_shownames1 GlobalOptimizer_PPC_optimizationlevelLevel0 GlobalOptimizer_PPC_optforSpeed MWLinker_PPC_linksym1 MWLinker_PPC_symfullpath1 MWLinker_PPC_linkmap0 MWLinker_PPC_nolinkwarnings0 MWLinker_PPC_dontdeadstripinitcode0 MWLinker_PPC_permitmultdefs0 MWLinker_PPC_linkmodeFast MWLinker_PPC_initname MWLinker_PPC_mainname__start MWLinker_PPC_termname MWPEF_exportsNone MWPEF_libfolder0 MWPEF_sortcodeNone MWPEF_expandbss0 MWPEF_sharedata0 MWPEF_olddefversion0 MWPEF_oldimpversion0 MWPEF_currentversion0 MWPEF_fragmentname MWPEF_collapsereloads0 MWProject_PPC_typeApplication MWProject_PPC_outfilea.out MWProject_PPC_filecreator1061109567 MWProject_PPC_filetype1095782476 MWProject_PPC_size384 MWProject_PPC_minsize384 MWProject_PPC_stacksize64 MWProject_PPC_flags22720 MWProject_PPC_symfilename MWProject_PPC_rsrcname MWProject_PPC_rsrcheaderNative MWProject_PPC_rsrctype1061109567 MWProject_PPC_rsrcid0 MWProject_PPC_rsrcflags0 MWProject_PPC_rsrcstore0 MWProject_PPC_rsrcmerge0 MWAssembler_PPC_auxheader0 MWAssembler_PPC_symmodeMac MWAssembler_PPC_dialectPPC MWAssembler_PPC_prefixfile MWAssembler_PPC_typecheck0 MWAssembler_PPC_warnings0 MWAssembler_PPC_casesensitive0 MWRez_Language_maxwidth80 MWRez_Language_scriptRoman MWRez_Language_alignmentAlign1 MWRez_Language_filtermodeFilterSkip MWRez_Language_suppresswarnings0 MWRez_Language_escapecontrolchars1 MWRez_Language_prefixname MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' Name inflate.h MacOS Text Name globals.h MacOS Text Name unzip.h MacOS Text Name unzip.c MacOS Text Name explode.c MacOS Text Name extract.c MacOS Text Name fileio.c MacOS Text Name list.c MacOS Text Name globals.c MacOS Text Name match.c MacOS Text Name zipinfo.c MacOS Text Name inflate.c MacOS Text Name process.c MacOS Text Name unshrink.c MacOS Text Name unreduce.c MacOS Text Name unzpriv.h MacOS Text Name macdir.c MacOS Text Name crc32.c MacOS Text Name crypt.c MacOS Text Name ttyio.c MacOS Text Name envargs.c MacOS Text Name helpers.c MacOS Text Name helpers.h MacOS Text Name macstuff.h MacOS Text Name pathname.c MacOS Text Name pathname.h MacOS Text Name maccfg.h MacOS Text Name sxunzip.c MacOS Text Name UnZpSx.h MacOS Text Name mactime.c MacOS Text Name macstat.c MacOS Text Name macstat.h MacOS Text Name unzip.rc MacOS Resource Name charmap.h MacOS Text Name FSp_fopen.c MacOS Text Name getenv.c MacOS Text Name macos.c MacOS Text Name macbin3.h MacOS Text Name macbin3.c MacOS Text Name MSL Runtime68K.Lib MacOS Library Name MacOS.lib MacOS Library Name MathLib68K (2i).Lib MacOS Library Name DirectoryCopy.h MacOS Text Name FileCopy.h MacOS Text Name FSpCompat.h MacOS Text Name FullPath.h MacOS Text Name IterateDirectory.h MacOS Text Name MoreDesktopMgr.h MacOS Text Name MoreFiles.h MacOS Text Name MoreFilesExtras.h MacOS Text Name Optimization.h MacOS Text Name OptimizationEnd.h MacOS Text Name Search.h MacOS Text First Segment Protected, Locked Name inflate.h MacOS Name globals.h MacOS Name unzip.h MacOS Name unzip.c MacOS Name explode.c MacOS Name extract.c MacOS Name fileio.c MacOS Name list.c MacOS Name globals.c MacOS Name match.c MacOS Name zipinfo.c MacOS Name inflate.c MacOS Name process.c MacOS Name unshrink.c MacOS Name unreduce.c MacOS Name unzpriv.h MacOS Name macdir.c MacOS Name crc32.c MacOS Name crypt.c MacOS Name ttyio.c MacOS Name envargs.c MacOS Name helpers.c MacOS Name helpers.h MacOS Name macstuff.h MacOS Name pathname.c MacOS Name pathname.h MacOS Name maccfg.h MacOS Name sxunzip.c MacOS Name UnZpSx.h MacOS Name macstat.c MacOS Name macstat.h MacOS Name charmap.h MacOS Name FSp_fopen.c MacOS Name getenv.c MacOS Name mactime.c MacOS Name unzip.rc MacOS Name macos.c MacOS Name macbin3.h MacOS Name macbin3.c MacOS Name MSL Runtime68K.Lib MacOS Name MacOS.lib MacOS Name MathLib68K (2i).Lib MacOS Name DirectoryCopy.h MacOS Name FileCopy.h MacOS Name FSpCompat.h MacOS Name FullPath.h MacOS Name IterateDirectory.h MacOS Name MoreDesktopMgr.h MacOS Name MoreFiles.h MacOS Name MoreFilesExtras.h MacOS Name Optimization.h MacOS Name OptimizationEnd.h MacOS Name Search.h MacOS Unzip Sioux (PPC) UserSourceTrees CustomColor1 Red0 Green32767 Blue0 CustomColor2 Red0 Green32767 Blue0 CustomColor3 Red0 Green32767 Blue0 CustomColor4 Red0 Green32767 Blue0 AlwaysSearchUserPathsfalse InterpretDOSAndUnixPathsfalse UserSearchPaths SearchPath Path: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::izshr:macos: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:CHeaders: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:PascalInterfaces: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:Sources: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SystemSearchPaths SearchPath Path:MSL: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path:MacOS Support: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll LinkerMacOS PPC Linker PreLinker PostLinker TargetnameUnzip Sioux (PPC) OutputDirectory Path: PathFormatMacOS PathRootProject SaveEntriesUsingRelativePathsfalse FileMappings FileTypeAPPL FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeAppl FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeMMLB FileExtension CompilerLib Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMPLF FileExtension CompilerLib Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMWCD FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeRSRC FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeTEXT FileExtension.bh CompilerBalloon Help Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c++ CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cc CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cp CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cpp CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.exp Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.h CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMaketrue FileTypeTEXT FileExtension.p CompilerMW Pascal PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pas CompilerMW Pascal PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch CompilerMW C/C++ PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch++ CompilerMW C/C++ PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.ppu CompilerMW Pascal PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.r CompilerRez Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.s CompilerPPCAsm Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeXCOF FileExtension CompilerXCOFF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypedocu FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypersrc FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeshlb FileExtension CompilerPEF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypestub FileExtension CompilerPEF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileExtension.doc Compiler Precompilefalse Launchabletrue ResourceFilefalse IgnoredByMaketrue CacheModDatestrue ActivateBrowsertrue DumpBrowserInfofalse CacheSubprojectstrue UseThirdPartyDebuggerfalse DebuggerCommandLine Debugger Runtime 0002000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 LogSystemMessagestrue AutoTargetDLLsfalse StopAtWatchpointstrue PauseWhileRunningfalse PauseInterval5 PauseUIFlags0 AltExePath Path PathFormatGeneric PathRootAbsolute StopAtTempBPOnLaunchtrue CacheSymbolicstrue TempBPFunctionNamemain TempBPTypefalse MWCodeGen_68K_codesizeSmart MWCodeGen_68K_structalignmentMC68K MWCodeGen_68K_fp_modeSANE MWCodeGen_68K_code680200 MWCodeGen_68K_profiler0 MWCodeGen_68K_mpwc0 MWCodeGen_68K_fourbyteints1 MWCodeGen_68K_IEEEdoubles1 MWCodeGen_68K_fardata1 MWCodeGen_68K_farvtables1 MWCodeGen_68K_farstrings1 MWCodeGen_68K_pcrelstrings0 MWCodeGen_68K_macsbugNew MWCodeGen_68K_a6frames1 MWDisassembler_68K_showcode1 MWDisassembler_68K_mix0 MWDisassembler_68K_nohex0 MWDisassembler_68K_showdata1 MWDisassembler_68K_showexceptions1 MWDisassembler_68K_showsym0 MWDisassembler_68K_shownames1 GlobalOptimizer_68K_optimizationlevelLevel0 GlobalOptimizer_68K_optforSpeed MWLinker_68K_linksym1 MWLinker_68K_symfullpath1 MWLinker_68K_linksingle0 MWLinker_68K_fastlink1 MWLinker_68K_generateMap0 MWLinker_68K_nolinkwarnings0 MWLinker_68K_glueintosegone1 MWLinker_68K_dontdeadstripinitcode0 MWProject_68K_typeApplication MWProject_68K_outfileToolbox68k.out MWProject_68K_symfilename MWProject_68K_filecreator1061109567 MWProject_68K_filetype1095782476 MWProject_68K_size384 MWProject_68K_flags22688 MWProject_68K_rsrcheaderStandard MWProject_68K_rsrcname MWProject_68K_rsrctype1061109567 MWProject_68K_rsrcid0 MWProject_68K_rsrcmulti0 MWProject_68K_rsrcstore0 MWProject_68K_rsrcmerge0 MWProject_68K_rsrcflags0 MWProject_68K_a40 MWProject_68K_minsize384 MWProject_68K_rsrcsegtype0 MWProject_68K_cfm68kcodegen0 MWProject_68K_stacksize0 MWProject_68K_thedebugger0 MWProject_68K_rsrc_custom0 MWProject_68K_is_rseg_app0 MWProject_68K_is_pilot_lib0 MWProject_68K_pilot_main_entry MWFrontEnd_C_cplusplus0 MWFrontEnd_C_checkprotos1 MWFrontEnd_C_arm0 MWFrontEnd_C_trigraphs1 MWFrontEnd_C_onlystdkeywords0 MWFrontEnd_C_enumsalwaysint0 MWFrontEnd_C_mpwpointerstyle0 MWFrontEnd_C_prefixnameUnZpSx.h MWFrontEnd_C_ansistrict1 MWFrontEnd_C_mpwcnewline0 MWFrontEnd_C_wchar_type1 MWFrontEnd_C_enableexceptions0 MWFrontEnd_C_dontreusestrings0 MWFrontEnd_C_poolstrings0 MWFrontEnd_C_dontinline0 MWFrontEnd_C_useRTTI0 MWFrontEnd_C_multibyteaware0 MWFrontEnd_C_unsignedchars0 MWFrontEnd_C_autoinline0 MWFrontEnd_C_booltruefalse1 MWFrontEnd_C_direct_to_som0 MWFrontEnd_C_som_env_check0 MWFrontEnd_C_alwaysinline0 MWFrontEnd_C_inlinelevel0 MWFrontEnd_C_ecplusplus0 MWFrontEnd_C_objective_c0 MWFrontEnd_C_defer_codegen0 MWWarning_C_warn_illpragma0 MWWarning_C_warn_emptydecl0 MWWarning_C_warn_possunwant0 MWWarning_C_warn_unusedvar0 MWWarning_C_warn_unusedarg0 MWWarning_C_warn_extracomma0 MWWarning_C_pedantic0 MWWarning_C_warningerrors0 MWWarning_C_warn_hidevirtual0 MWWarning_C_warn_implicitconv0 MWWarning_C_warn_notinlined0 MWWarning_C_warn_structclass0 MWCFM68K_exportsNone MWCFM68K_olddefversion0 MWCFM68K_oldimpversion0 MWCFM68K_currentversion0 MWCFM68K_farthreshold256 PCFM68K_sharedata0 MWCFM68K_fragmentname MWCFM68K_initname MWCFM68K_mainname__start MWCFM68K_termname MWCFM68K_libfolder0 MWCFM68K_alignmentAlign_2 MWFTP_Post_hostName MWFTP_Post_username MWFTP_Post_password MWFTP_Post_remoteDir MWFTP_Post_uploadDir MWFTP_Post_ftp_port21 MWFTP_Post_SendBin1 MWFTP_Post_ShouldLog1 MWCommandLine_Java_clsName MWCommandLine_Java_args MWJava_Language_optimize0 MWJava_Language_warnDeprecated0 MWJava_Language_emitMap0 MWJava_Language_strictFileNames0 MWJava_Language_strictFileHierarchy0 MWJava_Language_emitHeadersNoNativeHeaders MWJava_Language_packageFilter MWJava_Language_genComments1 MWJava_Language_genHeaders0 MWJava_MacOS_typeJBindery MWJava_MacOS_grow0 MWJava_MacOS_profile0 MWJava_MacOS_verify0 MWJava_MacOS_useHttpProxy0 MWJava_MacOS_useFTPProxy0 MWJava_MacOS_useFirewallProxy0 MWJava_MacOS_outfileJBoundApp MWJava_MacOS_outcreator1061109567 MWJava_MacOS_maxMem1048576 MWJava_MacOS_minMem524288 MWJava_MacOS_red65535 MWJava_MacOS_green65535 MWJava_MacOS_blue65535 MWJava_MacOS_stdoutType1464421956 MWJava_MacOS_stdinType1853189228 MWJava_MacOS_httpProxyPort0 MWJava_MacOS_fTPProxyPort0 MWJava_MacOS_firewallProxyPort0 MWJava_MacOS_httpProxy MWJava_MacOS_fTPProxy MWJava_MacOS_firewallProxy MWJava_MacOS_merge0 MWJava_MacOS_write_old_rsrcs1 MWJava_MacOS_jbindrundebug0 MWJava_MacOS_stdoutfile MWJava_MacOS_stdinfile MWJava_Output_outputtypeJarFile MWJava_Output_outfileJavaClasses.jar MWJava_Output_ftype1514754080 MWJava_Output_fcreator1297570384 MWJava_Output_compress0 MWJava_Output_genManifest0 MWJava_Output_trunctypeFront MWJava_Output_deleteClasses0 MWJava_Output_consoleApp1 MWJava_Proj_projtypeApplet MWJava_Proj_runtimeArgs MWJava_Proj_mainClassName MWJava_Proj_HTMLAppCreator1297303877 MWJava_Proj_HTMLAppNameInternet Explorer MWJava_Proj_HTMLAppWin32NameIexplore.exe MWJava_Proj_compress0 MWJava_Proj_useVM1 MWJava_Proj_workingDir MWJava_Proj_vmarguments MWJava_Proj_vmName MWJavaDoc_Proj_Version1 MWJavaDoc_Proj_Depricated0 MWJavaDoc_Proj_Author1 MWJavaDoc_Proj_Index1 MWJavaDoc_Proj_Tree1 MWJavaDoc_Proj_SunResolveToSame1 MWJavaDoc_Proj_Shortnames1 MWJavaDoc_Proj_Folder0 MWJavaDoc_Proj_GenerateAPILinks0 MWJavaDoc_Proj_scopePublic MWJavaDoc_Proj_fcreator1297303877 MWJavaDoc_Proj_encodingName MWJavaDoc_Proj_decodingName MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ MWMerge_MacOS_projectTypeApplication MWMerge_MacOS_outputNameMerge Out MWMerge_MacOS_outputCreator1061109567 MWMerge_MacOS_outputType1095782476 MWMerge_MacOS_suppressWarning0 MWMerge_MacOS_copyFragments1 MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources ‰aˆ MWCodeGen_PPC_structalignmentPPC MWCodeGen_PPC_tracebacktablesInline MWCodeGen_PPC_processorGeneric MWCodeGen_PPC_readonlystrings0 MWCodeGen_PPC_tocdata1 MWCodeGen_PPC_profiler0 MWCodeGen_PPC_fpcontract1 MWCodeGen_PPC_schedule0 MWCodeGen_PPC_peephole0 MWCodeGen_PPC_processorspecific0 MWCodeGen_PPC_altivec0 MWCodeGen_PPC_vectortocdata0 MWCodeGen_PPC_vrsave0 MWDisassembler_PPC_showcode1 MWDisassembler_PPC_extended1 MWDisassembler_PPC_mix0 MWDisassembler_PPC_nohex0 MWDisassembler_PPC_showdata1 MWDisassembler_PPC_showexceptions1 MWDisassembler_PPC_showsym0 MWDisassembler_PPC_shownames1 GlobalOptimizer_PPC_optimizationlevelLevel0 GlobalOptimizer_PPC_optforSpeed MWLinker_PPC_linksym0 MWLinker_PPC_symfullpath1 MWLinker_PPC_linkmap0 MWLinker_PPC_nolinkwarnings0 MWLinker_PPC_dontdeadstripinitcode0 MWLinker_PPC_permitmultdefs1 MWLinker_PPC_linkmodeFast MWLinker_PPC_initname MWLinker_PPC_mainname__start MWLinker_PPC_termname MWPEF_exportsNone MWPEF_libfolder0 MWPEF_sortcodeNone MWPEF_expandbss0 MWPEF_sharedata0 MWPEF_olddefversion0 MWPEF_oldimpversion0 MWPEF_currentversion0 MWPEF_fragmentname MWPEF_collapsereloads0 MWProject_PPC_typeApplication MWProject_PPC_outfileUnzip Sioux (PPC) MWProject_PPC_filecreator1230662000 MWProject_PPC_filetype1095782476 MWProject_PPC_size2048 MWProject_PPC_minsize1024 MWProject_PPC_stacksize512 MWProject_PPC_flags22720 MWProject_PPC_symfilename MWProject_PPC_rsrcname MWProject_PPC_rsrcheaderNative MWProject_PPC_rsrctype1061109567 MWProject_PPC_rsrcid0 MWProject_PPC_rsrcflags0 MWProject_PPC_rsrcstore0 MWProject_PPC_rsrcmerge0 MWAssembler_PPC_auxheader0 MWAssembler_PPC_symmodeMac MWAssembler_PPC_dialectPPC MWAssembler_PPC_prefixfile MWAssembler_PPC_typecheck0 MWAssembler_PPC_warnings0 MWAssembler_PPC_casesensitive0 MWRez_Language_maxwidth80 MWRez_Language_scriptRoman MWRez_Language_alignmentAlign1 MWRez_Language_filtermodeFilterSkip MWRez_Language_suppresswarnings0 MWRez_Language_escapecontrolchars1 MWRez_Language_prefixname MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' Name MSL C.PPC.Lib MacOS Library Name MSL C++.PPC.Lib MacOS Library Name InterfaceLib MacOS Library Name MathLib MacOS Library Name MSL RuntimePPC.Lib MacOS Library Name MSL SIOUX.PPC.Lib MacOS Library Debug Name inflate.h MacOS Text Name globals.h MacOS Text Name unzip.h MacOS Text Name unzip.c MacOS Text Name envargs.c MacOS Text Name explode.c MacOS Text Name extract.c MacOS Text Name fileio.c MacOS Text Name list.c MacOS Text Name globals.c MacOS Text Name match.c MacOS Text Name zipinfo.c MacOS Text Name inflate.c MacOS Text Name process.c MacOS Text Name unshrink.c MacOS Text Name unreduce.c MacOS Text Name unzpriv.h MacOS Text Name macdir.c MacOS Text Name crc32.c MacOS Text Name crypt.c MacOS Text Name ttyio.c MacOS Text Name helpers.c MacOS Text Name helpers.h MacOS Text Name macstuff.h MacOS Text Name pathname.c MacOS Text Name pathname.h MacOS Text Name maccfg.h MacOS Text Name sxunzip.c MacOS Text Name UnZpSx.h MacOS Text Name mactime.c MacOS Text Name macstat.c MacOS Text Name macstat.h MacOS Text Name unzip.rc MacOS Resource Name charmap.h MacOS Text Name FSp_fopen.c MacOS Text Name getenv.c MacOS Text Name macos.c MacOS Text Name macbin3.h MacOS Text Name macbin3.c MacOS Text Name DirectoryCopy.h MacOS Text Name FileCopy.h MacOS Text Name FSpCompat.h MacOS Text Name FullPath.h MacOS Text Name IterateDirectory.h MacOS Text Name MoreDesktopMgr.h MacOS Text Name MoreFiles.h MacOS Text Name MoreFilesExtras.h MacOS Text Name Optimization.h MacOS Text Name OptimizationEnd.h MacOS Text Name Search.h MacOS Text Name inflate.h MacOS Name globals.h MacOS Name unzip.h MacOS Name unzip.c MacOS Name envargs.c MacOS Name explode.c MacOS Name extract.c MacOS Name fileio.c MacOS Name list.c MacOS Name globals.c MacOS Name match.c MacOS Name zipinfo.c MacOS Name inflate.c MacOS Name process.c MacOS Name unshrink.c MacOS Name unreduce.c MacOS Name unzpriv.h MacOS Name macdir.c MacOS Name crc32.c MacOS Name crypt.c MacOS Name ttyio.c MacOS Name helpers.c MacOS Name helpers.h MacOS Name macstuff.h MacOS Name pathname.c MacOS Name pathname.h MacOS Name maccfg.h MacOS Name sxunzip.c MacOS Name UnZpSx.h MacOS Name macstat.c MacOS Name macstat.h MacOS Name unzip.rc MacOS Name charmap.h MacOS Name FSp_fopen.c MacOS Name mactime.c MacOS Name getenv.c MacOS Name macos.c MacOS Name macbin3.h MacOS Name macbin3.c MacOS Name MSL SIOUX.PPC.Lib MacOS Name MSL C.PPC.Lib MacOS Name MSL C++.PPC.Lib MacOS Name InterfaceLib MacOS Name MathLib MacOS Name MSL RuntimePPC.Lib MacOS Name DirectoryCopy.h MacOS Name FileCopy.h MacOS Name FSpCompat.h MacOS Name FullPath.h MacOS Name IterateDirectory.h MacOS Name MoreDesktopMgr.h MacOS Name MoreFiles.h MacOS Name MoreFilesExtras.h MacOS Name Optimization.h MacOS Name OptimizationEnd.h MacOS Name Search.h MacOS Unzip Lib (PPC) UserSourceTrees CustomColor1 Red0 Green32767 Blue0 CustomColor2 Red0 Green32767 Blue0 CustomColor3 Red0 Green32767 Blue0 CustomColor4 Red0 Green32767 Blue0 AlwaysSearchUserPathsfalse InterpretDOSAndUnixPathsfalse UserSearchPaths SearchPath Path: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::izshr:macos: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:CHeaders: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:PascalInterfaces: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:Sources: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SystemSearchPaths SearchPath Path:MSL: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path:MacOS Support: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll LinkerMacOS PPC Linker PreLinker PostLinker TargetnameUnzip Lib (PPC) OutputDirectory Path: PathFormatMacOS PathRootProject SaveEntriesUsingRelativePathsfalse FileMappings FileTypeAPPL FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeAppl FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeMMLB FileExtension CompilerLib Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMPLF FileExtension CompilerLib Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMWCD FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeRSRC FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeTEXT FileExtension.bh CompilerBalloon Help Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c++ CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cc CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cp CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cpp CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.exp Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.h CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMaketrue FileTypeTEXT FileExtension.p CompilerMW Pascal PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pas CompilerMW Pascal PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch CompilerMW C/C++ PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch++ CompilerMW C/C++ PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.ppu CompilerMW Pascal PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.r CompilerRez Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.s CompilerPPCAsm Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeXCOF FileExtension CompilerXCOFF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypedocu FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypersrc FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeshlb FileExtension CompilerPEF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypestub FileExtension CompilerPEF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileExtension.doc Compiler Precompilefalse Launchabletrue ResourceFilefalse IgnoredByMaketrue CacheModDatestrue ActivateBrowsertrue DumpBrowserInfofalse CacheSubprojectstrue UseThirdPartyDebuggerfalse DebuggerCommandLine Debugger Runtime 0002000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 LogSystemMessagestrue AutoTargetDLLsfalse StopAtWatchpointstrue PauseWhileRunningfalse PauseInterval5 PauseUIFlags0 AltExePath Path PathFormatGeneric PathRootAbsolute StopAtTempBPOnLaunchtrue CacheSymbolicstrue TempBPFunctionNamemain TempBPTypefalse MWCodeGen_68K_codesizeSmart MWCodeGen_68K_structalignmentMC68K MWCodeGen_68K_fp_modeSANE MWCodeGen_68K_code680200 MWCodeGen_68K_profiler0 MWCodeGen_68K_mpwc0 MWCodeGen_68K_fourbyteints1 MWCodeGen_68K_IEEEdoubles1 MWCodeGen_68K_fardata1 MWCodeGen_68K_farvtables1 MWCodeGen_68K_farstrings1 MWCodeGen_68K_pcrelstrings0 MWCodeGen_68K_macsbugNew MWCodeGen_68K_a6frames1 MWDisassembler_68K_showcode1 MWDisassembler_68K_mix0 MWDisassembler_68K_nohex0 MWDisassembler_68K_showdata1 MWDisassembler_68K_showexceptions1 MWDisassembler_68K_showsym0 MWDisassembler_68K_shownames1 GlobalOptimizer_68K_optimizationlevelLevel0 GlobalOptimizer_68K_optforSpeed MWLinker_68K_linksym1 MWLinker_68K_symfullpath1 MWLinker_68K_linksingle0 MWLinker_68K_fastlink1 MWLinker_68K_generateMap0 MWLinker_68K_nolinkwarnings0 MWLinker_68K_glueintosegone1 MWLinker_68K_dontdeadstripinitcode0 MWProject_68K_typeApplication MWProject_68K_outfileToolbox68k.out MWProject_68K_symfilename MWProject_68K_filecreator1061109567 MWProject_68K_filetype1095782476 MWProject_68K_size384 MWProject_68K_flags22688 MWProject_68K_rsrcheaderStandard MWProject_68K_rsrcname MWProject_68K_rsrctype1061109567 MWProject_68K_rsrcid0 MWProject_68K_rsrcmulti0 MWProject_68K_rsrcstore0 MWProject_68K_rsrcmerge0 MWProject_68K_rsrcflags0 MWProject_68K_a40 MWProject_68K_minsize384 MWProject_68K_rsrcsegtype0 MWProject_68K_cfm68kcodegen0 MWProject_68K_stacksize0 MWProject_68K_thedebugger0 MWProject_68K_rsrc_custom0 MWProject_68K_is_rseg_app0 MWProject_68K_is_pilot_lib0 MWProject_68K_pilot_main_entry MWFrontEnd_C_cplusplus0 MWFrontEnd_C_checkprotos1 MWFrontEnd_C_arm0 MWFrontEnd_C_trigraphs0 MWFrontEnd_C_onlystdkeywords0 MWFrontEnd_C_enumsalwaysint0 MWFrontEnd_C_mpwpointerstyle0 MWFrontEnd_C_prefixnameUnZpLib.h MWFrontEnd_C_ansistrict1 MWFrontEnd_C_mpwcnewline0 MWFrontEnd_C_wchar_type1 MWFrontEnd_C_enableexceptions0 MWFrontEnd_C_dontreusestrings1 MWFrontEnd_C_poolstrings0 MWFrontEnd_C_dontinline0 MWFrontEnd_C_useRTTI0 MWFrontEnd_C_multibyteaware0 MWFrontEnd_C_unsignedchars0 MWFrontEnd_C_autoinline0 MWFrontEnd_C_booltruefalse1 MWFrontEnd_C_direct_to_som0 MWFrontEnd_C_som_env_check0 MWFrontEnd_C_alwaysinline0 MWFrontEnd_C_inlinelevel0 MWFrontEnd_C_ecplusplus0 MWFrontEnd_C_objective_c0 MWFrontEnd_C_defer_codegen0 MWWarning_C_warn_illpragma1 MWWarning_C_warn_emptydecl1 MWWarning_C_warn_possunwant1 MWWarning_C_warn_unusedvar1 MWWarning_C_warn_unusedarg1 MWWarning_C_warn_extracomma1 MWWarning_C_pedantic1 MWWarning_C_warningerrors0 MWWarning_C_warn_hidevirtual1 MWWarning_C_warn_implicitconv0 MWWarning_C_warn_notinlined1 MWWarning_C_warn_structclass0 MWCFM68K_exportsNone MWCFM68K_olddefversion0 MWCFM68K_oldimpversion0 MWCFM68K_currentversion0 MWCFM68K_farthreshold256 PCFM68K_sharedata0 MWCFM68K_fragmentname MWCFM68K_initname MWCFM68K_mainname__start MWCFM68K_termname MWCFM68K_libfolder0 MWCFM68K_alignmentAlign_2 MWFTP_Post_hostName MWFTP_Post_username MWFTP_Post_password MWFTP_Post_remoteDir MWFTP_Post_uploadDir MWFTP_Post_ftp_port21 MWFTP_Post_SendBin1 MWFTP_Post_ShouldLog1 MWCommandLine_Java_clsName MWCommandLine_Java_args MWJava_Language_optimize0 MWJava_Language_warnDeprecated0 MWJava_Language_emitMap0 MWJava_Language_strictFileNames0 MWJava_Language_strictFileHierarchy0 MWJava_Language_emitHeadersNoNativeHeaders MWJava_Language_packageFilter MWJava_Language_genComments1 MWJava_Language_genHeaders0 MWJava_MacOS_typeJBindery MWJava_MacOS_grow0 MWJava_MacOS_profile0 MWJava_MacOS_verify0 MWJava_MacOS_useHttpProxy0 MWJava_MacOS_useFTPProxy0 MWJava_MacOS_useFirewallProxy0 MWJava_MacOS_outfileJBoundApp MWJava_MacOS_outcreator1061109567 MWJava_MacOS_maxMem1048576 MWJava_MacOS_minMem524288 MWJava_MacOS_red65535 MWJava_MacOS_green65535 MWJava_MacOS_blue65535 MWJava_MacOS_stdoutType1464421956 MWJava_MacOS_stdinType1853189228 MWJava_MacOS_httpProxyPort0 MWJava_MacOS_fTPProxyPort0 MWJava_MacOS_firewallProxyPort0 MWJava_MacOS_httpProxy MWJava_MacOS_fTPProxy MWJava_MacOS_firewallProxy MWJava_MacOS_merge0 MWJava_MacOS_write_old_rsrcs1 MWJava_MacOS_jbindrundebug0 MWJava_MacOS_stdoutfile MWJava_MacOS_stdinfile MWJava_Output_outputtypeJarFile MWJava_Output_outfileJavaClasses.jar MWJava_Output_ftype1514754080 MWJava_Output_fcreator1297570384 MWJava_Output_compress0 MWJava_Output_genManifest0 MWJava_Output_trunctypeFront MWJava_Output_deleteClasses0 MWJava_Output_consoleApp1 MWJava_Proj_projtypeApplet MWJava_Proj_runtimeArgs MWJava_Proj_mainClassName MWJava_Proj_HTMLAppCreator1297303877 MWJava_Proj_HTMLAppNameInternet Explorer MWJava_Proj_HTMLAppWin32NameIexplore.exe MWJava_Proj_compress0 MWJava_Proj_useVM1 MWJava_Proj_workingDir MWJava_Proj_vmarguments MWJava_Proj_vmName MWJavaDoc_Proj_Version1 MWJavaDoc_Proj_Depricated0 MWJavaDoc_Proj_Author1 MWJavaDoc_Proj_Index1 MWJavaDoc_Proj_Tree1 MWJavaDoc_Proj_SunResolveToSame1 MWJavaDoc_Proj_Shortnames1 MWJavaDoc_Proj_Folder0 MWJavaDoc_Proj_GenerateAPILinks0 MWJavaDoc_Proj_scopePublic MWJavaDoc_Proj_fcreator1297303877 MWJavaDoc_Proj_encodingName MWJavaDoc_Proj_decodingName MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ MWMerge_MacOS_projectTypeApplication MWMerge_MacOS_outputNameMerge Out MWMerge_MacOS_outputCreator1061109567 MWMerge_MacOS_outputType1095782476 MWMerge_MacOS_suppressWarning0 MWMerge_MacOS_copyFragments1 MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources ‰aˆ MWCodeGen_PPC_structalignmentPPC MWCodeGen_PPC_tracebacktablesInline MWCodeGen_PPC_processorP603e MWCodeGen_PPC_readonlystrings0 MWCodeGen_PPC_tocdata1 MWCodeGen_PPC_profiler0 MWCodeGen_PPC_fpcontract1 MWCodeGen_PPC_schedule1 MWCodeGen_PPC_peephole1 MWCodeGen_PPC_processorspecific0 MWCodeGen_PPC_altivec0 MWCodeGen_PPC_vectortocdata0 MWCodeGen_PPC_vrsave0 MWDisassembler_PPC_showcode1 MWDisassembler_PPC_extended1 MWDisassembler_PPC_mix0 MWDisassembler_PPC_nohex0 MWDisassembler_PPC_showdata1 MWDisassembler_PPC_showexceptions1 MWDisassembler_PPC_showsym0 MWDisassembler_PPC_shownames1 GlobalOptimizer_PPC_optimizationlevelLevel4 GlobalOptimizer_PPC_optforSpeed MWLinker_PPC_linksym0 MWLinker_PPC_symfullpath1 MWLinker_PPC_linkmap0 MWLinker_PPC_nolinkwarnings0 MWLinker_PPC_dontdeadstripinitcode0 MWLinker_PPC_permitmultdefs1 MWLinker_PPC_linkmodeFast MWLinker_PPC_initname MWLinker_PPC_mainname__start MWLinker_PPC_termname MWPEF_exportsNone MWPEF_libfolder0 MWPEF_sortcodeNone MWPEF_expandbss0 MWPEF_sharedata0 MWPEF_olddefversion0 MWPEF_oldimpversion0 MWPEF_currentversion0 MWPEF_fragmentname MWPEF_collapsereloads0 MWProject_PPC_typeLibrary MWProject_PPC_outfileUnzip Lib (PPC) MWProject_PPC_filecreator1061109567 MWProject_PPC_filetype1061109567 MWProject_PPC_size0 MWProject_PPC_minsize0 MWProject_PPC_stacksize0 MWProject_PPC_flags0 MWProject_PPC_symfilename MWProject_PPC_rsrcname MWProject_PPC_rsrcheaderNative MWProject_PPC_rsrctype1061109567 MWProject_PPC_rsrcid0 MWProject_PPC_rsrcflags0 MWProject_PPC_rsrcstore0 MWProject_PPC_rsrcmerge0 MWAssembler_PPC_auxheader0 MWAssembler_PPC_symmodeMac MWAssembler_PPC_dialectPPC MWAssembler_PPC_prefixfile MWAssembler_PPC_typecheck0 MWAssembler_PPC_warnings0 MWAssembler_PPC_casesensitive0 MWRez_Language_maxwidth80 MWRez_Language_scriptRoman MWRez_Language_alignmentAlign1 MWRez_Language_filtermodeFilterSkip MWRez_Language_suppresswarnings0 MWRez_Language_escapecontrolchars1 MWRez_Language_prefixname MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' Name inflate.h MacOS Text Name globals.h MacOS Text Name unzip.h MacOS Text Name unzip.c MacOS Text Name explode.c MacOS Text Name extract.c MacOS Text Name fileio.c MacOS Text Name list.c MacOS Text Name globals.c MacOS Text Name match.c MacOS Text Name zipinfo.c MacOS Text Name inflate.c MacOS Text Name process.c MacOS Text Name unshrink.c MacOS Text Name unreduce.c MacOS Text Name unzpriv.h MacOS Text Name macdir.c MacOS Text Name maccfg.h MacOS Text Name sxunzip.c MacOS Text Name UnZpLib.h MacOS Text Name macstat.c MacOS Text Name macstat.h MacOS Text Name macos.c MacOS Text Name crypt.c MacOS Text Name macbin3.h MacOS Text Name macbin3.c MacOS Text Name ttyio.c MacOS Text Name DirectoryCopy.h MacOS Text Name FileCopy.h MacOS Text Name FSpCompat.h MacOS Text Name FullPath.h MacOS Text Name IterateDirectory.h MacOS Text Name MoreDesktopMgr.h MacOS Text Name MoreFiles.h MacOS Text Name MoreFilesExtras.h MacOS Text Name Optimization.h MacOS Text Name OptimizationEnd.h MacOS Text Name Search.h MacOS Text Name inflate.h MacOS Name globals.h MacOS Name unzip.h MacOS Name unzip.c MacOS Name explode.c MacOS Name extract.c MacOS Name fileio.c MacOS Name list.c MacOS Name globals.c MacOS Name match.c MacOS Name zipinfo.c MacOS Name inflate.c MacOS Name process.c MacOS Name unshrink.c MacOS Name unreduce.c MacOS Name unzpriv.h MacOS Name macdir.c MacOS Name maccfg.h MacOS Name sxunzip.c MacOS Name UnZpLib.h MacOS Name macstat.c MacOS Name macstat.h MacOS Name macos.c MacOS Name crypt.c MacOS Name macbin3.h MacOS Name macbin3.c MacOS Name ttyio.c MacOS Name DirectoryCopy.h MacOS Name FileCopy.h MacOS Name FSpCompat.h MacOS Name FullPath.h MacOS Name IterateDirectory.h MacOS Name MoreDesktopMgr.h MacOS Name MoreFiles.h MacOS Name MoreFilesExtras.h MacOS Name Optimization.h MacOS Name OptimizationEnd.h MacOS Name Search.h MacOS Unzip Lib (68k) UserSourceTrees CustomColor1 Red0 Green32767 Blue0 CustomColor2 Red0 Green32767 Blue0 CustomColor3 Red0 Green32767 Blue0 CustomColor4 Red0 Green32767 Blue0 AlwaysSearchUserPathsfalse InterpretDOSAndUnixPathsfalse UserSearchPaths SearchPath Path: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::izshr:macos: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:CHeaders: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:PascalInterfaces: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:Sources: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SystemSearchPaths SearchPath Path:MSL: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path:MacOS Support: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll LinkerMacOS 68K Linker PreLinker PostLinker TargetnameUnzip Lib (68k) OutputDirectory Path: PathFormatMacOS PathRootProject SaveEntriesUsingRelativePathsfalse FileMappings FileTypeAPPL FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeAppl FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeMMLB FileExtension CompilerLib Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMPLF FileExtension CompilerLib Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMWCD FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeOBJ FileExtension CompilerMPW Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeRSRC FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeTEXT FileExtension.bh CompilerBalloon Help Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c++ CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cc CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cp CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cpp CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.exp Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.h CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMaketrue FileTypeTEXT FileExtension.p CompilerMW Pascal 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pas CompilerMW Pascal 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch CompilerMW C/C++ 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch++ CompilerMW C/C++ 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.ppu CompilerMW Pascal 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.r CompilerRez Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.seg Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypedocu FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypersrc FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeshlb FileExtension CompilerPEF Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypestub FileExtension CompilerPEF Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileExtension.doc Compiler Precompilefalse Launchabletrue ResourceFilefalse IgnoredByMaketrue CacheModDatestrue ActivateBrowsertrue DumpBrowserInfofalse CacheSubprojectstrue UseThirdPartyDebuggerfalse DebuggerCommandLine Debugger Runtime 0002000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 LogSystemMessagestrue AutoTargetDLLsfalse StopAtWatchpointstrue PauseWhileRunningfalse PauseInterval5 PauseUIFlags0 AltExePath Path PathFormatGeneric PathRootAbsolute StopAtTempBPOnLaunchtrue CacheSymbolicstrue TempBPFunctionNamemain TempBPTypefalse MWCodeGen_68K_codesizeLarge MWCodeGen_68K_structalignmentMC68K MWCodeGen_68K_fp_modeSANE MWCodeGen_68K_code680200 MWCodeGen_68K_profiler0 MWCodeGen_68K_mpwc0 MWCodeGen_68K_fourbyteints1 MWCodeGen_68K_IEEEdoubles1 MWCodeGen_68K_fardata1 MWCodeGen_68K_farvtables1 MWCodeGen_68K_farstrings1 MWCodeGen_68K_pcrelstrings0 MWCodeGen_68K_macsbugNew MWCodeGen_68K_a6frames0 MWDisassembler_68K_showcode1 MWDisassembler_68K_mix0 MWDisassembler_68K_nohex0 MWDisassembler_68K_showdata1 MWDisassembler_68K_showexceptions1 MWDisassembler_68K_showsym0 MWDisassembler_68K_shownames1 GlobalOptimizer_68K_optimizationlevelLevel4 GlobalOptimizer_68K_optforSpeed MWLinker_68K_linksym0 MWLinker_68K_symfullpath1 MWLinker_68K_linksingle1 MWLinker_68K_fastlink1 MWLinker_68K_generateMap0 MWLinker_68K_nolinkwarnings0 MWLinker_68K_glueintosegone1 MWLinker_68K_dontdeadstripinitcode0 MWProject_68K_typeLibrary MWProject_68K_outfileUnzip Lib (68k) MWProject_68K_symfilename MWProject_68K_filecreator1061109567 MWProject_68K_filetype1061109567 MWProject_68K_size0 MWProject_68K_flags0 MWProject_68K_rsrcheaderStandard MWProject_68K_rsrcname MWProject_68K_rsrctype1061109567 MWProject_68K_rsrcid0 MWProject_68K_rsrcmulti0 MWProject_68K_rsrcstore0 MWProject_68K_rsrcmerge0 MWProject_68K_rsrcflags0 MWProject_68K_a41 MWProject_68K_minsize0 MWProject_68K_rsrcsegtype0 MWProject_68K_cfm68kcodegen0 MWProject_68K_stacksize0 MWProject_68K_thedebugger0 MWProject_68K_rsrc_custom0 MWProject_68K_is_rseg_app0 MWProject_68K_is_pilot_lib0 MWProject_68K_pilot_main_entry MWFrontEnd_C_cplusplus0 MWFrontEnd_C_checkprotos1 MWFrontEnd_C_arm0 MWFrontEnd_C_trigraphs1 MWFrontEnd_C_onlystdkeywords0 MWFrontEnd_C_enumsalwaysint0 MWFrontEnd_C_mpwpointerstyle0 MWFrontEnd_C_prefixnameUnZpLib.h MWFrontEnd_C_ansistrict1 MWFrontEnd_C_mpwcnewline0 MWFrontEnd_C_wchar_type1 MWFrontEnd_C_enableexceptions0 MWFrontEnd_C_dontreusestrings1 MWFrontEnd_C_poolstrings0 MWFrontEnd_C_dontinline0 MWFrontEnd_C_useRTTI0 MWFrontEnd_C_multibyteaware0 MWFrontEnd_C_unsignedchars0 MWFrontEnd_C_autoinline0 MWFrontEnd_C_booltruefalse1 MWFrontEnd_C_direct_to_som0 MWFrontEnd_C_som_env_check0 MWFrontEnd_C_alwaysinline0 MWFrontEnd_C_inlinelevel0 MWFrontEnd_C_ecplusplus0 MWFrontEnd_C_objective_c0 MWFrontEnd_C_defer_codegen0 MWWarning_C_warn_illpragma1 MWWarning_C_warn_emptydecl1 MWWarning_C_warn_possunwant1 MWWarning_C_warn_unusedvar1 MWWarning_C_warn_unusedarg1 MWWarning_C_warn_extracomma1 MWWarning_C_pedantic1 MWWarning_C_warningerrors0 MWWarning_C_warn_hidevirtual1 MWWarning_C_warn_implicitconv0 MWWarning_C_warn_notinlined0 MWWarning_C_warn_structclass0 MWCFM68K_exportsNone MWCFM68K_olddefversion0 MWCFM68K_oldimpversion0 MWCFM68K_currentversion0 MWCFM68K_farthreshold256 PCFM68K_sharedata0 MWCFM68K_fragmentname MWCFM68K_initname MWCFM68K_mainname__start MWCFM68K_termname MWCFM68K_libfolder0 MWCFM68K_alignmentAlign_2 MWFTP_Post_hostName MWFTP_Post_username MWFTP_Post_password MWFTP_Post_remoteDir MWFTP_Post_uploadDir MWFTP_Post_ftp_port21 MWFTP_Post_SendBin1 MWFTP_Post_ShouldLog1 MWCommandLine_Java_clsName MWCommandLine_Java_args MWJava_Language_optimize0 MWJava_Language_warnDeprecated0 MWJava_Language_emitMap0 MWJava_Language_strictFileNames0 MWJava_Language_strictFileHierarchy0 MWJava_Language_emitHeadersNoNativeHeaders MWJava_Language_packageFilter MWJava_Language_genComments1 MWJava_Language_genHeaders0 MWJava_MacOS_typeJBindery MWJava_MacOS_grow0 MWJava_MacOS_profile0 MWJava_MacOS_verify0 MWJava_MacOS_useHttpProxy0 MWJava_MacOS_useFTPProxy0 MWJava_MacOS_useFirewallProxy0 MWJava_MacOS_outfileJBoundApp MWJava_MacOS_outcreator1061109567 MWJava_MacOS_maxMem1048576 MWJava_MacOS_minMem524288 MWJava_MacOS_red65535 MWJava_MacOS_green65535 MWJava_MacOS_blue65535 MWJava_MacOS_stdoutType1464421956 MWJava_MacOS_stdinType1853189228 MWJava_MacOS_httpProxyPort0 MWJava_MacOS_fTPProxyPort0 MWJava_MacOS_firewallProxyPort0 MWJava_MacOS_httpProxy MWJava_MacOS_fTPProxy MWJava_MacOS_firewallProxy MWJava_MacOS_merge0 MWJava_MacOS_write_old_rsrcs1 MWJava_MacOS_jbindrundebug0 MWJava_MacOS_stdoutfile MWJava_MacOS_stdinfile MWJava_Output_outputtypeJarFile MWJava_Output_outfileJavaClasses.jar MWJava_Output_ftype1514754080 MWJava_Output_fcreator1297570384 MWJava_Output_compress0 MWJava_Output_genManifest0 MWJava_Output_trunctypeFront MWJava_Output_deleteClasses0 MWJava_Output_consoleApp1 MWJava_Proj_projtypeApplet MWJava_Proj_runtimeArgs MWJava_Proj_mainClassName MWJava_Proj_HTMLAppCreator1297303877 MWJava_Proj_HTMLAppNameInternet Explorer MWJava_Proj_HTMLAppWin32NameIexplore.exe MWJava_Proj_compress0 MWJava_Proj_useVM1 MWJava_Proj_workingDir MWJava_Proj_vmarguments MWJava_Proj_vmName MWJavaDoc_Proj_Version1 MWJavaDoc_Proj_Depricated0 MWJavaDoc_Proj_Author1 MWJavaDoc_Proj_Index1 MWJavaDoc_Proj_Tree1 MWJavaDoc_Proj_SunResolveToSame1 MWJavaDoc_Proj_Shortnames1 MWJavaDoc_Proj_Folder0 MWJavaDoc_Proj_GenerateAPILinks0 MWJavaDoc_Proj_scopePublic MWJavaDoc_Proj_fcreator1297303877 MWJavaDoc_Proj_encodingName MWJavaDoc_Proj_decodingName MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ MWMerge_MacOS_projectTypeApplication MWMerge_MacOS_outputNameMerge Out MWMerge_MacOS_outputCreator1061109567 MWMerge_MacOS_outputType1095782476 MWMerge_MacOS_suppressWarning0 MWMerge_MacOS_copyFragments1 MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources ‰aˆ MWCodeGen_PPC_structalignmentMC68K MWCodeGen_PPC_tracebacktablesNone MWCodeGen_PPC_processorGeneric MWCodeGen_PPC_readonlystrings0 MWCodeGen_PPC_tocdata1 MWCodeGen_PPC_profiler0 MWCodeGen_PPC_fpcontract1 MWCodeGen_PPC_schedule0 MWCodeGen_PPC_peephole1 MWCodeGen_PPC_processorspecific0 MWCodeGen_PPC_altivec0 MWCodeGen_PPC_vectortocdata0 MWCodeGen_PPC_vrsave0 MWDisassembler_PPC_showcode1 MWDisassembler_PPC_extended1 MWDisassembler_PPC_mix0 MWDisassembler_PPC_nohex0 MWDisassembler_PPC_showdata1 MWDisassembler_PPC_showexceptions1 MWDisassembler_PPC_showsym0 MWDisassembler_PPC_shownames1 GlobalOptimizer_PPC_optimizationlevelLevel0 GlobalOptimizer_PPC_optforSpeed MWLinker_PPC_linksym1 MWLinker_PPC_symfullpath1 MWLinker_PPC_linkmap0 MWLinker_PPC_nolinkwarnings0 MWLinker_PPC_dontdeadstripinitcode0 MWLinker_PPC_permitmultdefs0 MWLinker_PPC_linkmodeFast MWLinker_PPC_initname MWLinker_PPC_mainname__start MWLinker_PPC_termname MWPEF_exportsNone MWPEF_libfolder0 MWPEF_sortcodeNone MWPEF_expandbss0 MWPEF_sharedata0 MWPEF_olddefversion0 MWPEF_oldimpversion0 MWPEF_currentversion0 MWPEF_fragmentname MWPEF_collapsereloads0 MWProject_PPC_typeApplication MWProject_PPC_outfilea.out MWProject_PPC_filecreator1061109567 MWProject_PPC_filetype1095782476 MWProject_PPC_size384 MWProject_PPC_minsize384 MWProject_PPC_stacksize64 MWProject_PPC_flags22720 MWProject_PPC_symfilename MWProject_PPC_rsrcname MWProject_PPC_rsrcheaderNative MWProject_PPC_rsrctype1061109567 MWProject_PPC_rsrcid0 MWProject_PPC_rsrcflags0 MWProject_PPC_rsrcstore0 MWProject_PPC_rsrcmerge0 MWAssembler_PPC_auxheader0 MWAssembler_PPC_symmodeMac MWAssembler_PPC_dialectPPC MWAssembler_PPC_prefixfile MWAssembler_PPC_typecheck0 MWAssembler_PPC_warnings0 MWAssembler_PPC_casesensitive0 MWRez_Language_maxwidth80 MWRez_Language_scriptRoman MWRez_Language_alignmentAlign1 MWRez_Language_filtermodeFilterSkip MWRez_Language_suppresswarnings0 MWRez_Language_escapecontrolchars1 MWRez_Language_prefixname MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' Name inflate.h MacOS Text Name globals.h MacOS Text Name unzip.h MacOS Text Name unzip.c MacOS Text Name explode.c MacOS Text Name extract.c MacOS Text Name fileio.c MacOS Text Name list.c MacOS Text Name globals.c MacOS Text Name match.c MacOS Text Name zipinfo.c MacOS Text Name inflate.c MacOS Text Name process.c MacOS Text Name unshrink.c MacOS Text Name unreduce.c MacOS Text Name unzpriv.h MacOS Text Name macdir.c MacOS Text Name maccfg.h MacOS Text Name sxunzip.c MacOS Text Name UnZpLib.h MacOS Text Name macstat.c MacOS Text Name macstat.h MacOS Text Name macos.c MacOS Text Name macbin3.h MacOS Text Name macbin3.c MacOS Text Name crypt.c MacOS Text Name ttyio.c MacOS Text Name DirectoryCopy.h MacOS Text Name FileCopy.h MacOS Text Name FSpCompat.h MacOS Text Name FullPath.h MacOS Text Name IterateDirectory.h MacOS Text Name MoreDesktopMgr.h MacOS Text Name MoreFiles.h MacOS Text Name MoreFilesExtras.h MacOS Text Name Optimization.h MacOS Text Name OptimizationEnd.h MacOS Text Name Search.h MacOS Text First Segment Protected, Locked Name inflate.h MacOS Name globals.h MacOS Name unzip.h MacOS Name unzip.c MacOS Name explode.c MacOS Name extract.c MacOS Name fileio.c MacOS Name list.c MacOS Name globals.c MacOS Name match.c MacOS Name zipinfo.c MacOS Name inflate.c MacOS Name process.c MacOS Name unshrink.c MacOS Name unreduce.c MacOS Name unzpriv.h MacOS Name macdir.c MacOS Name maccfg.h MacOS Name sxunzip.c MacOS Name UnZpLib.h MacOS Name macstat.c MacOS Name macstat.h MacOS Name macos.c MacOS Name macbin3.h MacOS Name macbin3.c MacOS Name crypt.c MacOS Name ttyio.c MacOS Name DirectoryCopy.h MacOS Name FileCopy.h MacOS Name FSpCompat.h MacOS Name FullPath.h MacOS Name IterateDirectory.h MacOS Name MoreDesktopMgr.h MacOS Name MoreFiles.h MacOS Name MoreFilesExtras.h MacOS Name Optimization.h MacOS Name OptimizationEnd.h MacOS Name Search.h MacOS Unzip (PPC) UserSourceTrees CustomColor1 Red0 Green32767 Blue0 CustomColor2 Red0 Green32767 Blue0 CustomColor3 Red0 Green32767 Blue0 CustomColor4 Red0 Green32767 Blue0 AlwaysSearchUserPathsfalse InterpretDOSAndUnixPathsfalse UserSearchPaths SearchPath Path: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::izshr:macos: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:CHeaders: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:PascalInterfaces: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:Sources: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SystemSearchPaths SearchPath Path:MSL: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path:MacOS Support: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll LinkerMacOS PPC Linker PreLinker PostLinker TargetnameUnzip (PPC) OutputDirectory Path: PathFormatMacOS PathRootProject SaveEntriesUsingRelativePathsfalse FileMappings FileTypeAPPL FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeAppl FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeMMLB FileExtension CompilerLib Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMPLF FileExtension CompilerLib Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMWCD FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeRSRC FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeTEXT FileExtension.bh CompilerBalloon Help Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c++ CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cc CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cp CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cpp CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.exp Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.h CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMaketrue FileTypeTEXT FileExtension.p CompilerMW Pascal PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pas CompilerMW Pascal PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch CompilerMW C/C++ PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch++ CompilerMW C/C++ PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.ppu CompilerMW Pascal PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.r CompilerRez Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.s CompilerPPCAsm Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeXCOF FileExtension CompilerXCOFF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypedocu FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypersrc FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeshlb FileExtension CompilerPEF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypestub FileExtension CompilerPEF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileExtension.doc Compiler Precompilefalse Launchabletrue ResourceFilefalse IgnoredByMaketrue CacheModDatestrue ActivateBrowsertrue DumpBrowserInfofalse CacheSubprojectstrue UseThirdPartyDebuggerfalse DebuggerCommandLine Debugger Runtime 0002000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 LogSystemMessagestrue AutoTargetDLLsfalse StopAtWatchpointstrue PauseWhileRunningfalse PauseInterval5 PauseUIFlags0 AltExePath Path PathFormatGeneric PathRootAbsolute StopAtTempBPOnLaunchtrue CacheSymbolicstrue TempBPFunctionNamemain TempBPTypefalse MWCodeGen_68K_codesizeSmart MWCodeGen_68K_structalignmentMC68K MWCodeGen_68K_fp_modeSANE MWCodeGen_68K_code680200 MWCodeGen_68K_profiler0 MWCodeGen_68K_mpwc0 MWCodeGen_68K_fourbyteints1 MWCodeGen_68K_IEEEdoubles1 MWCodeGen_68K_fardata1 MWCodeGen_68K_farvtables1 MWCodeGen_68K_farstrings1 MWCodeGen_68K_pcrelstrings0 MWCodeGen_68K_macsbugNew MWCodeGen_68K_a6frames1 MWDisassembler_68K_showcode1 MWDisassembler_68K_mix0 MWDisassembler_68K_nohex0 MWDisassembler_68K_showdata1 MWDisassembler_68K_showexceptions1 MWDisassembler_68K_showsym0 MWDisassembler_68K_shownames1 GlobalOptimizer_68K_optimizationlevelLevel0 GlobalOptimizer_68K_optforSpeed MWLinker_68K_linksym1 MWLinker_68K_symfullpath1 MWLinker_68K_linksingle0 MWLinker_68K_fastlink1 MWLinker_68K_generateMap0 MWLinker_68K_nolinkwarnings0 MWLinker_68K_glueintosegone1 MWLinker_68K_dontdeadstripinitcode0 MWProject_68K_typeApplication MWProject_68K_outfileToolbox68k.out MWProject_68K_symfilename MWProject_68K_filecreator1061109567 MWProject_68K_filetype1095782476 MWProject_68K_size384 MWProject_68K_flags22688 MWProject_68K_rsrcheaderStandard MWProject_68K_rsrcname MWProject_68K_rsrctype1061109567 MWProject_68K_rsrcid0 MWProject_68K_rsrcmulti0 MWProject_68K_rsrcstore0 MWProject_68K_rsrcmerge0 MWProject_68K_rsrcflags0 MWProject_68K_a40 MWProject_68K_minsize384 MWProject_68K_rsrcsegtype0 MWProject_68K_cfm68kcodegen0 MWProject_68K_stacksize0 MWProject_68K_thedebugger0 MWProject_68K_rsrc_custom0 MWProject_68K_is_rseg_app0 MWProject_68K_is_pilot_lib0 MWProject_68K_pilot_main_entry MWFrontEnd_C_cplusplus0 MWFrontEnd_C_checkprotos1 MWFrontEnd_C_arm0 MWFrontEnd_C_trigraphs1 MWFrontEnd_C_onlystdkeywords0 MWFrontEnd_C_enumsalwaysint0 MWFrontEnd_C_mpwpointerstyle0 MWFrontEnd_C_prefixnameUnZp.h MWFrontEnd_C_ansistrict1 MWFrontEnd_C_mpwcnewline0 MWFrontEnd_C_wchar_type1 MWFrontEnd_C_enableexceptions0 MWFrontEnd_C_dontreusestrings0 MWFrontEnd_C_poolstrings0 MWFrontEnd_C_dontinline0 MWFrontEnd_C_useRTTI0 MWFrontEnd_C_multibyteaware0 MWFrontEnd_C_unsignedchars0 MWFrontEnd_C_autoinline0 MWFrontEnd_C_booltruefalse1 MWFrontEnd_C_direct_to_som0 MWFrontEnd_C_som_env_check0 MWFrontEnd_C_alwaysinline0 MWFrontEnd_C_inlinelevel0 MWFrontEnd_C_ecplusplus0 MWFrontEnd_C_objective_c0 MWFrontEnd_C_defer_codegen0 MWWarning_C_warn_illpragma0 MWWarning_C_warn_emptydecl0 MWWarning_C_warn_possunwant0 MWWarning_C_warn_unusedvar0 MWWarning_C_warn_unusedarg0 MWWarning_C_warn_extracomma0 MWWarning_C_pedantic0 MWWarning_C_warningerrors0 MWWarning_C_warn_hidevirtual0 MWWarning_C_warn_implicitconv0 MWWarning_C_warn_notinlined0 MWWarning_C_warn_structclass0 MWCFM68K_exportsNone MWCFM68K_olddefversion0 MWCFM68K_oldimpversion0 MWCFM68K_currentversion0 MWCFM68K_farthreshold256 PCFM68K_sharedata0 MWCFM68K_fragmentname MWCFM68K_initname MWCFM68K_mainname__start MWCFM68K_termname MWCFM68K_libfolder0 MWCFM68K_alignmentAlign_2 MWFTP_Post_hostName MWFTP_Post_username MWFTP_Post_password MWFTP_Post_remoteDir MWFTP_Post_uploadDir MWFTP_Post_ftp_port21 MWFTP_Post_SendBin1 MWFTP_Post_ShouldLog1 MWCommandLine_Java_clsName MWCommandLine_Java_args MWJava_Language_optimize0 MWJava_Language_warnDeprecated0 MWJava_Language_emitMap0 MWJava_Language_strictFileNames0 MWJava_Language_strictFileHierarchy0 MWJava_Language_emitHeadersNoNativeHeaders MWJava_Language_packageFilter MWJava_Language_genComments1 MWJava_Language_genHeaders0 MWJava_MacOS_typeJBindery MWJava_MacOS_grow0 MWJava_MacOS_profile0 MWJava_MacOS_verify0 MWJava_MacOS_useHttpProxy0 MWJava_MacOS_useFTPProxy0 MWJava_MacOS_useFirewallProxy0 MWJava_MacOS_outfileJBoundApp MWJava_MacOS_outcreator1061109567 MWJava_MacOS_maxMem1048576 MWJava_MacOS_minMem524288 MWJava_MacOS_red65535 MWJava_MacOS_green65535 MWJava_MacOS_blue65535 MWJava_MacOS_stdoutType1464421956 MWJava_MacOS_stdinType1853189228 MWJava_MacOS_httpProxyPort0 MWJava_MacOS_fTPProxyPort0 MWJava_MacOS_firewallProxyPort0 MWJava_MacOS_httpProxy MWJava_MacOS_fTPProxy MWJava_MacOS_firewallProxy MWJava_MacOS_merge0 MWJava_MacOS_write_old_rsrcs1 MWJava_MacOS_jbindrundebug0 MWJava_MacOS_stdoutfile MWJava_MacOS_stdinfile MWJava_Output_outputtypeJarFile MWJava_Output_outfileJavaClasses.jar MWJava_Output_ftype1514754080 MWJava_Output_fcreator1297570384 MWJava_Output_compress0 MWJava_Output_genManifest0 MWJava_Output_trunctypeFront MWJava_Output_deleteClasses0 MWJava_Output_consoleApp1 MWJava_Proj_projtypeApplet MWJava_Proj_runtimeArgs MWJava_Proj_mainClassName MWJava_Proj_HTMLAppCreator1297303877 MWJava_Proj_HTMLAppNameInternet Explorer MWJava_Proj_HTMLAppWin32NameIexplore.exe MWJava_Proj_compress0 MWJava_Proj_useVM1 MWJava_Proj_workingDir MWJava_Proj_vmarguments MWJava_Proj_vmName MWJavaDoc_Proj_Version1 MWJavaDoc_Proj_Depricated0 MWJavaDoc_Proj_Author1 MWJavaDoc_Proj_Index1 MWJavaDoc_Proj_Tree1 MWJavaDoc_Proj_SunResolveToSame1 MWJavaDoc_Proj_Shortnames1 MWJavaDoc_Proj_Folder0 MWJavaDoc_Proj_GenerateAPILinks0 MWJavaDoc_Proj_scopePublic MWJavaDoc_Proj_fcreator1297303877 MWJavaDoc_Proj_encodingName MWJavaDoc_Proj_decodingName MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ MWMerge_MacOS_projectTypeApplication MWMerge_MacOS_outputNameMerge Out MWMerge_MacOS_outputCreator1061109567 MWMerge_MacOS_outputType1095782476 MWMerge_MacOS_suppressWarning0 MWMerge_MacOS_copyFragments1 MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources ‰aˆ MWCodeGen_PPC_structalignmentPPC MWCodeGen_PPC_tracebacktablesInline MWCodeGen_PPC_processorGeneric MWCodeGen_PPC_readonlystrings0 MWCodeGen_PPC_tocdata1 MWCodeGen_PPC_profiler0 MWCodeGen_PPC_fpcontract1 MWCodeGen_PPC_schedule0 MWCodeGen_PPC_peephole0 MWCodeGen_PPC_processorspecific0 MWCodeGen_PPC_altivec0 MWCodeGen_PPC_vectortocdata0 MWCodeGen_PPC_vrsave0 MWDisassembler_PPC_showcode1 MWDisassembler_PPC_extended1 MWDisassembler_PPC_mix0 MWDisassembler_PPC_nohex0 MWDisassembler_PPC_showdata1 MWDisassembler_PPC_showexceptions1 MWDisassembler_PPC_showsym0 MWDisassembler_PPC_shownames1 GlobalOptimizer_PPC_optimizationlevelLevel0 GlobalOptimizer_PPC_optforSpeed MWLinker_PPC_linksym0 MWLinker_PPC_symfullpath1 MWLinker_PPC_linkmap0 MWLinker_PPC_nolinkwarnings0 MWLinker_PPC_dontdeadstripinitcode0 MWLinker_PPC_permitmultdefs1 MWLinker_PPC_linkmodeFast MWLinker_PPC_initname MWLinker_PPC_mainname__start MWLinker_PPC_termname MWPEF_exportsNone MWPEF_libfolder0 MWPEF_sortcodeNone MWPEF_expandbss0 MWPEF_sharedata0 MWPEF_olddefversion0 MWPEF_oldimpversion0 MWPEF_currentversion0 MWPEF_fragmentname MWPEF_collapsereloads0 MWProject_PPC_typeApplication MWProject_PPC_outfileUnzip (PPC) MWProject_PPC_filecreator1230662000 MWProject_PPC_filetype1095782476 MWProject_PPC_size2048 MWProject_PPC_minsize1024 MWProject_PPC_stacksize512 MWProject_PPC_flags22720 MWProject_PPC_symfilename MWProject_PPC_rsrcname MWProject_PPC_rsrcheaderNative MWProject_PPC_rsrctype1061109567 MWProject_PPC_rsrcid0 MWProject_PPC_rsrcflags0 MWProject_PPC_rsrcstore0 MWProject_PPC_rsrcmerge0 MWAssembler_PPC_auxheader0 MWAssembler_PPC_symmodeMac MWAssembler_PPC_dialectPPC MWAssembler_PPC_prefixfile MWAssembler_PPC_typecheck0 MWAssembler_PPC_warnings0 MWAssembler_PPC_casesensitive0 MWRez_Language_maxwidth80 MWRez_Language_scriptRoman MWRez_Language_alignmentAlign1 MWRez_Language_filtermodeFilterSkip MWRez_Language_suppresswarnings0 MWRez_Language_escapecontrolchars1 MWRez_Language_prefixname MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' Name MSL C.PPC.Lib MacOS Library Name MSL C++.PPC.Lib MacOS Library Name InterfaceLib MacOS Library Name MathLib MacOS Library Name MSL RuntimePPC.Lib MacOS Library Name MSL SIOUX.PPC.Lib MacOS Library Debug Name inflate.h MacOS Text Name globals.h MacOS Text Name unzip.h MacOS Text Name unzip.c MacOS Text Name explode.c MacOS Text Name extract.c MacOS Text Name fileio.c MacOS Text Name list.c MacOS Text Name globals.c MacOS Text Name match.c MacOS Text Name zipinfo.c MacOS Text Name inflate.c MacOS Text Name process.c MacOS Text Name unshrink.c MacOS Text Name unreduce.c MacOS Text Name unzpriv.h MacOS Text Name macdir.c MacOS Text Name crc32.c MacOS Text Name crypt.c MacOS Text Name ttyio.c MacOS Text Name helpers.c MacOS Text Name helpers.h MacOS Text Name macstuff.h MacOS Text Name pathname.c MacOS Text Name pathname.h MacOS Text Name maccfg.h MacOS Text Name macscreen.c MacOS Text Name macunzip.c MacOS Text Name sxunzip.c MacOS Text Name envargs.c MacOS Text Name UnZp.h MacOS Text Name mactime.c MacOS Text Name macstat.c MacOS Text Name macstat.h MacOS Text Name unzip.rc MacOS Resource Name charmap.h MacOS Text Name FSp_fopen.c MacOS Text Name getenv.c MacOS Text Name macos.c MacOS Text Name macbin3.h MacOS Text Name macbin3.c MacOS Text Name console.stubs.c MacOS Text Name DirectoryCopy.h MacOS Text Name FileCopy.h MacOS Text Name FSpCompat.h MacOS Text Name FullPath.h MacOS Text Name IterateDirectory.h MacOS Text Name MoreDesktopMgr.h MacOS Text Name MoreFiles.h MacOS Text Name MoreFilesExtras.h MacOS Text Name Optimization.h MacOS Text Name OptimizationEnd.h MacOS Text Name Search.h MacOS Text Name inflate.h MacOS Name globals.h MacOS Name unzip.h MacOS Name unzip.c MacOS Name explode.c MacOS Name extract.c MacOS Name fileio.c MacOS Name list.c MacOS Name globals.c MacOS Name match.c MacOS Name zipinfo.c MacOS Name inflate.c MacOS Name process.c MacOS Name unshrink.c MacOS Name unreduce.c MacOS Name unzpriv.h MacOS Name macdir.c MacOS Name crc32.c MacOS Name crypt.c MacOS Name ttyio.c MacOS Name helpers.c MacOS Name helpers.h MacOS Name macstuff.h MacOS Name pathname.c MacOS Name pathname.h MacOS Name maccfg.h MacOS Name macscreen.c MacOS Name macunzip.c MacOS Name sxunzip.c MacOS Name envargs.c MacOS Name UnZp.h MacOS Name mactime.c MacOS Name macstat.c MacOS Name macstat.h MacOS Name charmap.h MacOS Name FSp_fopen.c MacOS Name getenv.c MacOS Name unzip.rc MacOS Name MSL C.PPC.Lib MacOS Name MSL C++.PPC.Lib MacOS Name InterfaceLib MacOS Name MathLib MacOS Name MSL RuntimePPC.Lib MacOS Name MSL SIOUX.PPC.Lib MacOS Name macos.c MacOS Name macbin3.h MacOS Name macbin3.c MacOS Name console.stubs.c MacOS Name DirectoryCopy.h MacOS Name FileCopy.h MacOS Name FSpCompat.h MacOS Name FullPath.h MacOS Name IterateDirectory.h MacOS Name MoreDesktopMgr.h MacOS Name MoreFiles.h MacOS Name MoreFilesExtras.h MacOS Name Optimization.h MacOS Name OptimizationEnd.h MacOS Name Search.h MacOS Unzip (68k) UserSourceTrees CustomColor1 Red0 Green32767 Blue0 CustomColor2 Red0 Green32767 Blue0 CustomColor3 Red0 Green32767 Blue0 CustomColor4 Red0 Green32767 Blue0 AlwaysSearchUserPathsfalse InterpretDOSAndUnixPathsfalse UserSearchPaths SearchPath Path: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::izshr:macos: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:CHeaders: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:PascalInterfaces: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:Sources: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SystemSearchPaths SearchPath Path:MSL: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path:MacOS Support: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll LinkerMacOS 68K Linker PreLinker PostLinker TargetnameUnzip (68k) OutputDirectory Path: PathFormatMacOS PathRootProject SaveEntriesUsingRelativePathsfalse FileMappings FileTypeAPPL FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeAppl FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeMMLB FileExtension CompilerLib Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMPLF FileExtension CompilerLib Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMWCD FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeOBJ FileExtension CompilerMPW Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeRSRC FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeTEXT FileExtension.bh CompilerBalloon Help Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c++ CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cc CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cp CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cpp CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.exp Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.h CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMaketrue FileTypeTEXT FileExtension.p CompilerMW Pascal 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pas CompilerMW Pascal 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch CompilerMW C/C++ 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch++ CompilerMW C/C++ 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.ppu CompilerMW Pascal 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.r CompilerRez Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.seg Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypedocu FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypersrc FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeshlb FileExtension CompilerPEF Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypestub FileExtension CompilerPEF Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileExtension.doc Compiler Precompilefalse Launchabletrue ResourceFilefalse IgnoredByMaketrue CacheModDatestrue ActivateBrowsertrue DumpBrowserInfofalse CacheSubprojectstrue UseThirdPartyDebuggerfalse DebuggerCommandLine Debugger Runtime 0002000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 LogSystemMessagestrue AutoTargetDLLsfalse StopAtWatchpointstrue PauseWhileRunningfalse PauseInterval5 PauseUIFlags0 AltExePath Path PathFormatGeneric PathRootAbsolute StopAtTempBPOnLaunchtrue CacheSymbolicstrue TempBPFunctionNamemain TempBPTypefalse MWCodeGen_68K_codesizeLarge MWCodeGen_68K_structalignmentMC68K MWCodeGen_68K_fp_modeSANE MWCodeGen_68K_code680200 MWCodeGen_68K_profiler0 MWCodeGen_68K_mpwc0 MWCodeGen_68K_fourbyteints1 MWCodeGen_68K_IEEEdoubles1 MWCodeGen_68K_fardata1 MWCodeGen_68K_farvtables1 MWCodeGen_68K_farstrings1 MWCodeGen_68K_pcrelstrings0 MWCodeGen_68K_macsbugNew MWCodeGen_68K_a6frames1 MWDisassembler_68K_showcode1 MWDisassembler_68K_mix0 MWDisassembler_68K_nohex0 MWDisassembler_68K_showdata1 MWDisassembler_68K_showexceptions1 MWDisassembler_68K_showsym0 MWDisassembler_68K_shownames1 GlobalOptimizer_68K_optimizationlevelLevel4 GlobalOptimizer_68K_optforSpeed MWLinker_68K_linksym0 MWLinker_68K_symfullpath1 MWLinker_68K_linksingle0 MWLinker_68K_fastlink1 MWLinker_68K_generateMap0 MWLinker_68K_nolinkwarnings0 MWLinker_68K_glueintosegone1 MWLinker_68K_dontdeadstripinitcode0 MWProject_68K_typeApplication MWProject_68K_outfileUnzip (68k) MWProject_68K_symfilename MWProject_68K_filecreator1061109567 MWProject_68K_filetype1095782476 MWProject_68K_size384 MWProject_68K_flags22720 MWProject_68K_rsrcheaderStandard MWProject_68K_rsrcname MWProject_68K_rsrctype1061109567 MWProject_68K_rsrcid0 MWProject_68K_rsrcmulti0 MWProject_68K_rsrcstore0 MWProject_68K_rsrcmerge0 MWProject_68K_rsrcflags0 MWProject_68K_a40 MWProject_68K_minsize384 MWProject_68K_rsrcsegtype0 MWProject_68K_cfm68kcodegen0 MWProject_68K_stacksize0 MWProject_68K_thedebugger0 MWProject_68K_rsrc_custom0 MWProject_68K_is_rseg_app0 MWProject_68K_is_pilot_lib0 MWProject_68K_pilot_main_entry MWFrontEnd_C_cplusplus0 MWFrontEnd_C_checkprotos1 MWFrontEnd_C_arm0 MWFrontEnd_C_trigraphs1 MWFrontEnd_C_onlystdkeywords0 MWFrontEnd_C_enumsalwaysint0 MWFrontEnd_C_mpwpointerstyle0 MWFrontEnd_C_prefixnameUnZp.h MWFrontEnd_C_ansistrict1 MWFrontEnd_C_mpwcnewline0 MWFrontEnd_C_wchar_type1 MWFrontEnd_C_enableexceptions0 MWFrontEnd_C_dontreusestrings0 MWFrontEnd_C_poolstrings0 MWFrontEnd_C_dontinline0 MWFrontEnd_C_useRTTI0 MWFrontEnd_C_multibyteaware0 MWFrontEnd_C_unsignedchars0 MWFrontEnd_C_autoinline0 MWFrontEnd_C_booltruefalse1 MWFrontEnd_C_direct_to_som0 MWFrontEnd_C_som_env_check0 MWFrontEnd_C_alwaysinline0 MWFrontEnd_C_inlinelevel0 MWFrontEnd_C_ecplusplus0 MWFrontEnd_C_objective_c0 MWFrontEnd_C_defer_codegen0 MWWarning_C_warn_illpragma0 MWWarning_C_warn_emptydecl0 MWWarning_C_warn_possunwant0 MWWarning_C_warn_unusedvar0 MWWarning_C_warn_unusedarg0 MWWarning_C_warn_extracomma0 MWWarning_C_pedantic0 MWWarning_C_warningerrors0 MWWarning_C_warn_hidevirtual0 MWWarning_C_warn_implicitconv0 MWWarning_C_warn_notinlined0 MWWarning_C_warn_structclass0 MWCFM68K_exportsNone MWCFM68K_olddefversion0 MWCFM68K_oldimpversion0 MWCFM68K_currentversion0 MWCFM68K_farthreshold256 PCFM68K_sharedata0 MWCFM68K_fragmentname MWCFM68K_initname MWCFM68K_mainname__start MWCFM68K_termname MWCFM68K_libfolder0 MWCFM68K_alignmentAlign_2 MWFTP_Post_hostName MWFTP_Post_username MWFTP_Post_password MWFTP_Post_remoteDir MWFTP_Post_uploadDir MWFTP_Post_ftp_port21 MWFTP_Post_SendBin1 MWFTP_Post_ShouldLog1 MWCommandLine_Java_clsName MWCommandLine_Java_args MWJava_Language_optimize0 MWJava_Language_warnDeprecated0 MWJava_Language_emitMap0 MWJava_Language_strictFileNames0 MWJava_Language_strictFileHierarchy0 MWJava_Language_emitHeadersNoNativeHeaders MWJava_Language_packageFilter MWJava_Language_genComments1 MWJava_Language_genHeaders0 MWJava_MacOS_typeJBindery MWJava_MacOS_grow0 MWJava_MacOS_profile0 MWJava_MacOS_verify0 MWJava_MacOS_useHttpProxy0 MWJava_MacOS_useFTPProxy0 MWJava_MacOS_useFirewallProxy0 MWJava_MacOS_outfileJBoundApp MWJava_MacOS_outcreator1061109567 MWJava_MacOS_maxMem1048576 MWJava_MacOS_minMem524288 MWJava_MacOS_red65535 MWJava_MacOS_green65535 MWJava_MacOS_blue65535 MWJava_MacOS_stdoutType1464421956 MWJava_MacOS_stdinType1853189228 MWJava_MacOS_httpProxyPort0 MWJava_MacOS_fTPProxyPort0 MWJava_MacOS_firewallProxyPort0 MWJava_MacOS_httpProxy MWJava_MacOS_fTPProxy MWJava_MacOS_firewallProxy MWJava_MacOS_merge0 MWJava_MacOS_write_old_rsrcs1 MWJava_MacOS_jbindrundebug0 MWJava_MacOS_stdoutfile MWJava_MacOS_stdinfile MWJava_Output_outputtypeJarFile MWJava_Output_outfileJavaClasses.jar MWJava_Output_ftype1514754080 MWJava_Output_fcreator1297570384 MWJava_Output_compress0 MWJava_Output_genManifest0 MWJava_Output_trunctypeFront MWJava_Output_deleteClasses0 MWJava_Output_consoleApp1 MWJava_Proj_projtypeApplet MWJava_Proj_runtimeArgs MWJava_Proj_mainClassName MWJava_Proj_HTMLAppCreator1297303877 MWJava_Proj_HTMLAppNameInternet Explorer MWJava_Proj_HTMLAppWin32NameIexplore.exe MWJava_Proj_compress0 MWJava_Proj_useVM1 MWJava_Proj_workingDir MWJava_Proj_vmarguments MWJava_Proj_vmName MWJavaDoc_Proj_Version1 MWJavaDoc_Proj_Depricated0 MWJavaDoc_Proj_Author1 MWJavaDoc_Proj_Index1 MWJavaDoc_Proj_Tree1 MWJavaDoc_Proj_SunResolveToSame1 MWJavaDoc_Proj_Shortnames1 MWJavaDoc_Proj_Folder0 MWJavaDoc_Proj_GenerateAPILinks0 MWJavaDoc_Proj_scopePublic MWJavaDoc_Proj_fcreator1297303877 MWJavaDoc_Proj_encodingName MWJavaDoc_Proj_decodingName MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ MWMerge_MacOS_projectTypeApplication MWMerge_MacOS_outputNameMerge Out MWMerge_MacOS_outputCreator1061109567 MWMerge_MacOS_outputType1095782476 MWMerge_MacOS_suppressWarning0 MWMerge_MacOS_copyFragments1 MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources ‰aˆ MWCodeGen_PPC_structalignmentPPC MWCodeGen_PPC_tracebacktablesInline MWCodeGen_PPC_processorGeneric MWCodeGen_PPC_readonlystrings0 MWCodeGen_PPC_tocdata1 MWCodeGen_PPC_profiler0 MWCodeGen_PPC_fpcontract1 MWCodeGen_PPC_schedule0 MWCodeGen_PPC_peephole0 MWCodeGen_PPC_processorspecific0 MWCodeGen_PPC_altivec0 MWCodeGen_PPC_vectortocdata0 MWCodeGen_PPC_vrsave0 MWDisassembler_PPC_showcode1 MWDisassembler_PPC_extended1 MWDisassembler_PPC_mix0 MWDisassembler_PPC_nohex0 MWDisassembler_PPC_showdata1 MWDisassembler_PPC_showexceptions1 MWDisassembler_PPC_showsym0 MWDisassembler_PPC_shownames1 GlobalOptimizer_PPC_optimizationlevelLevel0 GlobalOptimizer_PPC_optforSpeed MWLinker_PPC_linksym0 MWLinker_PPC_symfullpath1 MWLinker_PPC_linkmap0 MWLinker_PPC_nolinkwarnings0 MWLinker_PPC_dontdeadstripinitcode0 MWLinker_PPC_permitmultdefs1 MWLinker_PPC_linkmodeFast MWLinker_PPC_initname MWLinker_PPC_mainname__start MWLinker_PPC_termname MWPEF_exportsNone MWPEF_libfolder0 MWPEF_sortcodeNone MWPEF_expandbss0 MWPEF_sharedata0 MWPEF_olddefversion0 MWPEF_oldimpversion0 MWPEF_currentversion0 MWPEF_fragmentname MWPEF_collapsereloads0 MWProject_PPC_typeApplication MWProject_PPC_outfileUnzip (PPC) MWProject_PPC_filecreator1230662000 MWProject_PPC_filetype1095782476 MWProject_PPC_size2048 MWProject_PPC_minsize1024 MWProject_PPC_stacksize512 MWProject_PPC_flags22720 MWProject_PPC_symfilename MWProject_PPC_rsrcname MWProject_PPC_rsrcheaderNative MWProject_PPC_rsrctype1061109567 MWProject_PPC_rsrcid0 MWProject_PPC_rsrcflags0 MWProject_PPC_rsrcstore0 MWProject_PPC_rsrcmerge0 MWAssembler_PPC_auxheader0 MWAssembler_PPC_symmodeMac MWAssembler_PPC_dialectPPC MWAssembler_PPC_prefixfile MWAssembler_PPC_typecheck0 MWAssembler_PPC_warnings0 MWAssembler_PPC_casesensitive0 MWRez_Language_maxwidth80 MWRez_Language_scriptRoman MWRez_Language_alignmentAlign1 MWRez_Language_filtermodeFilterSkip MWRez_Language_suppresswarnings0 MWRez_Language_escapecontrolchars1 MWRez_Language_prefixname MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' Name inflate.h MacOS Text Name globals.h MacOS Text Name unzip.h MacOS Text Name unzip.c MacOS Text Name envargs.c MacOS Text Name explode.c MacOS Text Name extract.c MacOS Text Name fileio.c MacOS Text Name list.c MacOS Text Name globals.c MacOS Text Name match.c MacOS Text Name zipinfo.c MacOS Text Name inflate.c MacOS Text Name process.c MacOS Text Name unshrink.c MacOS Text Name unreduce.c MacOS Text Name unzpriv.h MacOS Text Name macdir.c MacOS Text Name crc32.c MacOS Text Name crypt.c MacOS Text Name ttyio.c MacOS Text Name helpers.c MacOS Text Name helpers.h MacOS Text Name macstuff.h MacOS Text Name pathname.c MacOS Text Name pathname.h MacOS Text Name maccfg.h MacOS Text Name macscreen.c MacOS Text Name macunzip.c MacOS Text Name sxunzip.c MacOS Text Name UnZp.h MacOS Text Name mactime.c MacOS Text Name macstat.c MacOS Text Name macstat.h MacOS Text Name unzip.rc MacOS Resource Name charmap.h MacOS Text Name FSp_fopen.c MacOS Text Name getenv.c MacOS Text Name macos.c MacOS Text Name macbin3.h MacOS Text Name macbin3.c MacOS Text Name console.stubs.c MacOS Text Name MSL Runtime68K.Lib MacOS Library Name MacOS.lib MacOS Library Name MathLib68K (2i).Lib MacOS Library Name DirectoryCopy.h MacOS Text Name FileCopy.h MacOS Text Name FSpCompat.h MacOS Text Name FullPath.h MacOS Text Name IterateDirectory.h MacOS Text Name MoreDesktopMgr.h MacOS Text Name MoreFiles.h MacOS Text Name MoreFilesExtras.h MacOS Text Name Optimization.h MacOS Text Name OptimizationEnd.h MacOS Text Name Search.h MacOS Text First Segment Preloaded, Protected, Locked Name inflate.h MacOS Name globals.h MacOS Name unzip.h MacOS Name unzip.c MacOS Name envargs.c MacOS Name explode.c MacOS Name extract.c MacOS Name fileio.c MacOS Name list.c MacOS Name globals.c MacOS Name match.c MacOS Name zipinfo.c MacOS Name inflate.c MacOS Name process.c MacOS Name unshrink.c MacOS Name unreduce.c MacOS Name unzpriv.h MacOS Name macdir.c MacOS Name crc32.c MacOS Name crypt.c MacOS Name ttyio.c MacOS Name helpers.c MacOS Name helpers.h MacOS Name macstuff.h MacOS Name pathname.c MacOS Name pathname.h MacOS Name maccfg.h MacOS Name macscreen.c MacOS Name macunzip.c MacOS Name sxunzip.c MacOS Name UnZp.h MacOS Name mactime.c MacOS Name macstat.c MacOS Name macstat.h MacOS Name charmap.h MacOS Name FSp_fopen.c MacOS Name getenv.c MacOS Name unzip.rc MacOS Name macos.c MacOS Name macbin3.h MacOS Name macbin3.c MacOS Name console.stubs.c MacOS Name MSL Runtime68K.Lib MacOS Name MacOS.lib MacOS Name MathLib68K (2i).Lib MacOS Name DirectoryCopy.h MacOS Name FileCopy.h MacOS Name FSpCompat.h MacOS Name FullPath.h MacOS Name IterateDirectory.h MacOS Name MoreDesktopMgr.h MacOS Name MoreFiles.h MacOS Name MoreFilesExtras.h MacOS Name Optimization.h MacOS Name OptimizationEnd.h MacOS Name Search.h MacOS Unzip Lib (CFM68k) UserSourceTrees CustomColor1 Red0 Green32767 Blue0 CustomColor2 Red0 Green32767 Blue0 CustomColor3 Red0 Green32767 Blue0 CustomColor4 Red0 Green32767 Blue0 AlwaysSearchUserPathsfalse InterpretDOSAndUnixPathsfalse UserSearchPaths SearchPath Path: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::izshr:macos: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:CHeaders: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:PascalInterfaces: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:Sources: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SystemSearchPaths SearchPath Path:MSL: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path:MacOS Support: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll LinkerMacOS 68K Linker PreLinker PostLinker TargetnameUnzip Lib (CFM68k) OutputDirectory Path: PathFormatMacOS PathRootProject SaveEntriesUsingRelativePathsfalse FileMappings FileTypeAPPL FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeAppl FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeMMLB FileExtension CompilerLib Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMPLF FileExtension CompilerLib Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMWCD FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeOBJ FileExtension CompilerMPW Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeRSRC FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeTEXT FileExtension.bh CompilerBalloon Help Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c++ CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cc CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cp CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cpp CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.exp Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.h CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMaketrue FileTypeTEXT FileExtension.p CompilerMW Pascal 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pas CompilerMW Pascal 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch CompilerMW C/C++ 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch++ CompilerMW C/C++ 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.ppu CompilerMW Pascal 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.r CompilerRez Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.seg Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypedocu FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypersrc FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeshlb FileExtension CompilerPEF Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypestub FileExtension CompilerPEF Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileExtension.doc Compiler Precompilefalse Launchabletrue ResourceFilefalse IgnoredByMaketrue CacheModDatestrue ActivateBrowsertrue DumpBrowserInfofalse CacheSubprojectstrue UseThirdPartyDebuggerfalse DebuggerCommandLine Debugger Runtime 0002000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 LogSystemMessagestrue AutoTargetDLLsfalse StopAtWatchpointstrue PauseWhileRunningfalse PauseInterval5 PauseUIFlags0 AltExePath Path PathFormatGeneric PathRootAbsolute StopAtTempBPOnLaunchtrue CacheSymbolicstrue TempBPFunctionNamemain TempBPTypefalse MWCodeGen_68K_codesizeLarge MWCodeGen_68K_structalignmentMC68K MWCodeGen_68K_fp_modeSANE MWCodeGen_68K_code680200 MWCodeGen_68K_profiler0 MWCodeGen_68K_mpwc0 MWCodeGen_68K_fourbyteints1 MWCodeGen_68K_IEEEdoubles1 MWCodeGen_68K_fardata1 MWCodeGen_68K_farvtables1 MWCodeGen_68K_farstrings1 MWCodeGen_68K_pcrelstrings0 MWCodeGen_68K_macsbugNew MWCodeGen_68K_a6frames1 MWDisassembler_68K_showcode1 MWDisassembler_68K_mix0 MWDisassembler_68K_nohex0 MWDisassembler_68K_showdata1 MWDisassembler_68K_showexceptions1 MWDisassembler_68K_showsym0 MWDisassembler_68K_shownames1 GlobalOptimizer_68K_optimizationlevelLevel4 GlobalOptimizer_68K_optforSpeed MWLinker_68K_linksym0 MWLinker_68K_symfullpath1 MWLinker_68K_linksingle0 MWLinker_68K_fastlink1 MWLinker_68K_generateMap0 MWLinker_68K_nolinkwarnings0 MWLinker_68K_glueintosegone1 MWLinker_68K_dontdeadstripinitcode0 MWProject_68K_typeLibrary MWProject_68K_outfileUnzip Lib (CFM68k) MWProject_68K_symfilename MWProject_68K_filecreator1061109567 MWProject_68K_filetype1061109567 MWProject_68K_size0 MWProject_68K_flags0 MWProject_68K_rsrcheaderStandard MWProject_68K_rsrcname MWProject_68K_rsrctype1061109567 MWProject_68K_rsrcid0 MWProject_68K_rsrcmulti0 MWProject_68K_rsrcstore0 MWProject_68K_rsrcmerge0 MWProject_68K_rsrcflags0 MWProject_68K_a40 MWProject_68K_minsize0 MWProject_68K_rsrcsegtype0 MWProject_68K_cfm68kcodegen1 MWProject_68K_stacksize0 MWProject_68K_thedebugger0 MWProject_68K_rsrc_custom0 MWProject_68K_is_rseg_app0 MWProject_68K_is_pilot_lib0 MWProject_68K_pilot_main_entry MWFrontEnd_C_cplusplus0 MWFrontEnd_C_checkprotos1 MWFrontEnd_C_arm0 MWFrontEnd_C_trigraphs1 MWFrontEnd_C_onlystdkeywords0 MWFrontEnd_C_enumsalwaysint0 MWFrontEnd_C_mpwpointerstyle0 MWFrontEnd_C_prefixnameUnZpLib.h MWFrontEnd_C_ansistrict1 MWFrontEnd_C_mpwcnewline0 MWFrontEnd_C_wchar_type1 MWFrontEnd_C_enableexceptions0 MWFrontEnd_C_dontreusestrings1 MWFrontEnd_C_poolstrings0 MWFrontEnd_C_dontinline0 MWFrontEnd_C_useRTTI0 MWFrontEnd_C_multibyteaware0 MWFrontEnd_C_unsignedchars0 MWFrontEnd_C_autoinline0 MWFrontEnd_C_booltruefalse1 MWFrontEnd_C_direct_to_som0 MWFrontEnd_C_som_env_check0 MWFrontEnd_C_alwaysinline0 MWFrontEnd_C_inlinelevel0 MWFrontEnd_C_ecplusplus0 MWFrontEnd_C_objective_c0 MWFrontEnd_C_defer_codegen0 MWWarning_C_warn_illpragma1 MWWarning_C_warn_emptydecl1 MWWarning_C_warn_possunwant1 MWWarning_C_warn_unusedvar1 MWWarning_C_warn_unusedarg1 MWWarning_C_warn_extracomma1 MWWarning_C_pedantic1 MWWarning_C_warningerrors0 MWWarning_C_warn_hidevirtual1 MWWarning_C_warn_implicitconv0 MWWarning_C_warn_notinlined0 MWWarning_C_warn_structclass0 MWCFM68K_exportsNone MWCFM68K_olddefversion0 MWCFM68K_oldimpversion0 MWCFM68K_currentversion0 MWCFM68K_farthreshold256 PCFM68K_sharedata0 MWCFM68K_fragmentname MWCFM68K_initname MWCFM68K_mainname__start MWCFM68K_termname MWCFM68K_libfolder0 MWCFM68K_alignmentAlign_2 MWFTP_Post_hostName MWFTP_Post_username MWFTP_Post_password MWFTP_Post_remoteDir MWFTP_Post_uploadDir MWFTP_Post_ftp_port21 MWFTP_Post_SendBin1 MWFTP_Post_ShouldLog1 MWCommandLine_Java_clsName MWCommandLine_Java_args MWJava_Language_optimize0 MWJava_Language_warnDeprecated0 MWJava_Language_emitMap0 MWJava_Language_strictFileNames0 MWJava_Language_strictFileHierarchy0 MWJava_Language_emitHeadersNoNativeHeaders MWJava_Language_packageFilter MWJava_Language_genComments1 MWJava_Language_genHeaders0 MWJava_MacOS_typeJBindery MWJava_MacOS_grow0 MWJava_MacOS_profile0 MWJava_MacOS_verify0 MWJava_MacOS_useHttpProxy0 MWJava_MacOS_useFTPProxy0 MWJava_MacOS_useFirewallProxy0 MWJava_MacOS_outfileJBoundApp MWJava_MacOS_outcreator1061109567 MWJava_MacOS_maxMem1048576 MWJava_MacOS_minMem524288 MWJava_MacOS_red65535 MWJava_MacOS_green65535 MWJava_MacOS_blue65535 MWJava_MacOS_stdoutType1464421956 MWJava_MacOS_stdinType1853189228 MWJava_MacOS_httpProxyPort0 MWJava_MacOS_fTPProxyPort0 MWJava_MacOS_firewallProxyPort0 MWJava_MacOS_httpProxy MWJava_MacOS_fTPProxy MWJava_MacOS_firewallProxy MWJava_MacOS_merge0 MWJava_MacOS_write_old_rsrcs1 MWJava_MacOS_jbindrundebug0 MWJava_MacOS_stdoutfile MWJava_MacOS_stdinfile MWJava_Output_outputtypeJarFile MWJava_Output_outfileJavaClasses.jar MWJava_Output_ftype1514754080 MWJava_Output_fcreator1297570384 MWJava_Output_compress0 MWJava_Output_genManifest0 MWJava_Output_trunctypeFront MWJava_Output_deleteClasses0 MWJava_Output_consoleApp1 MWJava_Proj_projtypeApplet MWJava_Proj_runtimeArgs MWJava_Proj_mainClassName MWJava_Proj_HTMLAppCreator1297303877 MWJava_Proj_HTMLAppNameInternet Explorer MWJava_Proj_HTMLAppWin32NameIexplore.exe MWJava_Proj_compress0 MWJava_Proj_useVM1 MWJava_Proj_workingDir MWJava_Proj_vmarguments MWJava_Proj_vmName MWJavaDoc_Proj_Version1 MWJavaDoc_Proj_Depricated0 MWJavaDoc_Proj_Author1 MWJavaDoc_Proj_Index1 MWJavaDoc_Proj_Tree1 MWJavaDoc_Proj_SunResolveToSame1 MWJavaDoc_Proj_Shortnames1 MWJavaDoc_Proj_Folder0 MWJavaDoc_Proj_GenerateAPILinks0 MWJavaDoc_Proj_scopePublic MWJavaDoc_Proj_fcreator1297303877 MWJavaDoc_Proj_encodingName MWJavaDoc_Proj_decodingName MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ MWMerge_MacOS_projectTypeApplication MWMerge_MacOS_outputNameMerge Out MWMerge_MacOS_outputCreator1061109567 MWMerge_MacOS_outputType1095782476 MWMerge_MacOS_suppressWarning0 MWMerge_MacOS_copyFragments1 MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources ‰aˆ MWCodeGen_PPC_structalignmentMC68K MWCodeGen_PPC_tracebacktablesNone MWCodeGen_PPC_processorGeneric MWCodeGen_PPC_readonlystrings0 MWCodeGen_PPC_tocdata1 MWCodeGen_PPC_profiler0 MWCodeGen_PPC_fpcontract1 MWCodeGen_PPC_schedule0 MWCodeGen_PPC_peephole1 MWCodeGen_PPC_processorspecific0 MWCodeGen_PPC_altivec0 MWCodeGen_PPC_vectortocdata0 MWCodeGen_PPC_vrsave0 MWDisassembler_PPC_showcode1 MWDisassembler_PPC_extended1 MWDisassembler_PPC_mix0 MWDisassembler_PPC_nohex0 MWDisassembler_PPC_showdata1 MWDisassembler_PPC_showexceptions1 MWDisassembler_PPC_showsym0 MWDisassembler_PPC_shownames1 GlobalOptimizer_PPC_optimizationlevelLevel0 GlobalOptimizer_PPC_optforSpeed MWLinker_PPC_linksym1 MWLinker_PPC_symfullpath1 MWLinker_PPC_linkmap0 MWLinker_PPC_nolinkwarnings0 MWLinker_PPC_dontdeadstripinitcode0 MWLinker_PPC_permitmultdefs0 MWLinker_PPC_linkmodeFast MWLinker_PPC_initname MWLinker_PPC_mainname__start MWLinker_PPC_termname MWPEF_exportsNone MWPEF_libfolder0 MWPEF_sortcodeNone MWPEF_expandbss0 MWPEF_sharedata0 MWPEF_olddefversion0 MWPEF_oldimpversion0 MWPEF_currentversion0 MWPEF_fragmentname MWPEF_collapsereloads0 MWProject_PPC_typeApplication MWProject_PPC_outfilea.out MWProject_PPC_filecreator1061109567 MWProject_PPC_filetype1095782476 MWProject_PPC_size384 MWProject_PPC_minsize384 MWProject_PPC_stacksize64 MWProject_PPC_flags22720 MWProject_PPC_symfilename MWProject_PPC_rsrcname MWProject_PPC_rsrcheaderNative MWProject_PPC_rsrctype1061109567 MWProject_PPC_rsrcid0 MWProject_PPC_rsrcflags0 MWProject_PPC_rsrcstore0 MWProject_PPC_rsrcmerge0 MWAssembler_PPC_auxheader0 MWAssembler_PPC_symmodeMac MWAssembler_PPC_dialectPPC MWAssembler_PPC_prefixfile MWAssembler_PPC_typecheck0 MWAssembler_PPC_warnings0 MWAssembler_PPC_casesensitive0 MWRez_Language_maxwidth80 MWRez_Language_scriptRoman MWRez_Language_alignmentAlign1 MWRez_Language_filtermodeFilterSkip MWRez_Language_suppresswarnings0 MWRez_Language_escapecontrolchars1 MWRez_Language_prefixname MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' Name inflate.h MacOS Text Name globals.h MacOS Text Name unzip.h MacOS Text Name unzip.c MacOS Text Name explode.c MacOS Text Name extract.c MacOS Text Name fileio.c MacOS Text Name list.c MacOS Text Name globals.c MacOS Text Name match.c MacOS Text Name zipinfo.c MacOS Text Name inflate.c MacOS Text Name process.c MacOS Text Name unshrink.c MacOS Text Name unreduce.c MacOS Text Name unzpriv.h MacOS Text Name macdir.c MacOS Text Name maccfg.h MacOS Text Name sxunzip.c MacOS Text Name UnZpLib.h MacOS Text Name macstat.c MacOS Text Name macstat.h MacOS Text Name macos.c MacOS Text Name macbin3.h MacOS Text Name macbin3.c MacOS Text Name crypt.c MacOS Text Name DirectoryCopy.h MacOS Text Name FileCopy.h MacOS Text Name FSpCompat.h MacOS Text Name FullPath.h MacOS Text Name IterateDirectory.h MacOS Text Name MoreDesktopMgr.h MacOS Text Name MoreFiles.h MacOS Text Name MoreFilesExtras.h MacOS Text Name Optimization.h MacOS Text Name OptimizationEnd.h MacOS Text Name Search.h MacOS Text First Segment Protected, Locked Name inflate.h MacOS Name globals.h MacOS Name unzip.h MacOS Name unzip.c MacOS Name explode.c MacOS Name extract.c MacOS Name fileio.c MacOS Name list.c MacOS Name globals.c MacOS Name match.c MacOS Name zipinfo.c MacOS Name inflate.c MacOS Name process.c MacOS Name unshrink.c MacOS Name unreduce.c MacOS Name unzpriv.h MacOS Name macdir.c MacOS Name maccfg.h MacOS Name sxunzip.c MacOS Name UnZpLib.h MacOS Name macstat.c MacOS Name macstat.h MacOS Name macos.c MacOS Name macbin3.h MacOS Name macbin3.c MacOS Name crypt.c MacOS Name DirectoryCopy.h MacOS Name FileCopy.h MacOS Name FSpCompat.h MacOS Name FullPath.h MacOS Name IterateDirectory.h MacOS Name MoreDesktopMgr.h MacOS Name MoreFiles.h MacOS Name MoreFilesExtras.h MacOS Name Optimization.h MacOS Name OptimizationEnd.h MacOS Name Search.h MacOS Unzip Sioux (68k) Unzip Sioux (PPC) Unzip Lib (PPC) Unzip Lib (68k) Unzip (PPC) Unzip (68k) Unzip Lib (CFM68k) Sources Unzip (PPC) Name UnZp.h MacOS Unzip Lib (PPC) Name UnZpLib.h MacOS Unzip Sioux (68k) Name UnZpSx.h MacOS Mac-Specific include Unzip Sioux (68k) Name maccfg.h MacOS Unzip Sioux (68k) Name macstat.h MacOS Unzip Sioux (68k) Name macbin3.h MacOS source Unzip Sioux (68k) Name macos.c MacOS Unzip Sioux (68k) Name macbin3.c MacOS Unzip Sioux (68k) Name macdir.c MacOS Unzip Sioux (68k) Name macstat.c MacOS Unzip (PPC) Name macunzip.c MacOS Unzip Sioux (68k) Name sxunzip.c MacOS Unzip (PPC) Name macscreen.c MacOS UnZip_H Unzip Sioux (68k) Name inflate.h MacOS Unzip Sioux (68k) Name globals.h MacOS Unzip Sioux (68k) Name unzpriv.h MacOS Unzip Sioux (68k) Name unzip.h MacOS shared code Unzip & Zip Unzip Sioux (68k) Name getenv.c MacOS Unzip Sioux (68k) Name ttyio.c MacOS Unzip Sioux (68k) Name crc32.c MacOS Unzip Sioux (68k) Name crypt.c MacOS Unzip Sioux (68k) Name helpers.c MacOS Unzip Sioux (68k) Name helpers.h MacOS Unzip Sioux (68k) Name mactime.c MacOS Unzip Sioux (68k) Name macstuff.h MacOS Unzip Sioux (68k) Name pathname.c MacOS Unzip Sioux (68k) Name pathname.h MacOS Unzip Sioux (68k) Name charmap.h MacOS ObjS1 Unzip Sioux (68k) Name unzip.c MacOS Unzip Sioux (68k) Name envargs.c MacOS Unzip Sioux (68k) Name explode.c MacOS ObjS2 Unzip Sioux (68k) Name extract.c MacOS Unzip Sioux (68k) Name fileio.c MacOS Unzip Sioux (68k) Name list.c MacOS Unzip Sioux (68k) Name globals.c MacOS Unzip Sioux (68k) Name match.c MacOS Unzip Sioux (68k) Name zipinfo.c MacOS Unzip Sioux (68k) Name inflate.c MacOS ObjS3 Unzip Sioux (68k) Name process.c MacOS Unzip Sioux (68k) Name unshrink.c MacOS Unzip Sioux (68k) Name unreduce.c MacOS Mac Libraries 68k Unzip Sioux (68k) Name MSL Runtime68K.Lib MacOS Unzip Sioux (68k) Name MacOS.lib MacOS Unzip Sioux (68k) Name MathLib68K (2i).Lib MacOS PPC Unzip Sioux (PPC) Name InterfaceLib MacOS Unzip Sioux (PPC) Name MathLib MacOS Unzip Sioux (PPC) Name MSL RuntimePPC.Lib MacOS Unzip (PPC) Name console.stubs.c MacOS ANSI Libraries 68k PPC Unzip Sioux (PPC) Name MSL C.PPC.Lib MacOS Unzip Sioux (PPC) Name MSL C++.PPC.Lib MacOS Unzip Sioux (PPC) Name MSL SIOUX.PPC.Lib MacOS Unzip Sioux (68k) Name FSp_fopen.c MacOS FAT Target Files Resources Unzip Sioux (68k) Name unzip.rc MacOS MoreFiles CHeaders Unzip Sioux (68k) Name DirectoryCopy.h MacOS Unzip Sioux (68k) Name FileCopy.h MacOS Unzip Sioux (68k) Name FSpCompat.h MacOS Unzip Sioux (68k) Name FullPath.h MacOS Unzip Sioux (68k) Name IterateDirectory.h MacOS Unzip Sioux (68k) Name MoreDesktopMgr.h MacOS Unzip Sioux (68k) Name MoreFiles.h MacOS Unzip Sioux (68k) Name MoreFilesExtras.h MacOS Unzip Sioux (68k) Name Optimization.h MacOS Unzip Sioux (68k) Name OptimizationEnd.h MacOS Unzip Sioux (68k) Name Search.h MacOS \ No newline at end of file + ]> Unzip Sioux (68k) UserSourceTrees CustomColor1 Red0 Green32767 Blue0 CustomColor2 Red0 Green32767 Blue0 CustomColor3 Red0 Green32767 Blue0 CustomColor4 Red0 Green32767 Blue0 AlwaysSearchUserPathsfalse InterpretDOSAndUnixPathsfalse UserSearchPaths SearchPath Path: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::izshr:macos: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:CHeaders: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:PascalInterfaces: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:Sources: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SystemSearchPaths SearchPath Path:MSL: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path:MacOS Support: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll LinkerMacOS 68K Linker PreLinker PostLinker TargetnameUnzip Sioux (68k) OutputDirectory Path: PathFormatMacOS PathRootProject SaveEntriesUsingRelativePathsfalse FileMappings FileTypeAPPL FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeAppl FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeMMLB FileExtension CompilerLib Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMPLF FileExtension CompilerLib Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMWCD FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeOBJ FileExtension CompilerMPW Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeRSRC FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeTEXT FileExtension.bh CompilerBalloon Help Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c++ CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cc CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cp CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cpp CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.exp Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.h CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMaketrue FileTypeTEXT FileExtension.p CompilerMW Pascal 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pas CompilerMW Pascal 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch CompilerMW C/C++ 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch++ CompilerMW C/C++ 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.ppu CompilerMW Pascal 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.r CompilerRez Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.seg Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypedocu FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypersrc FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeshlb FileExtension CompilerPEF Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypestub FileExtension CompilerPEF Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileExtension.doc Compiler Precompilefalse Launchabletrue ResourceFilefalse IgnoredByMaketrue CacheModDatestrue ActivateBrowserfalse DumpBrowserInfofalse CacheSubprojectstrue UseThirdPartyDebuggerfalse DebuggerCommandLine Debugger Runtime 0002000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 LogSystemMessagestrue AutoTargetDLLsfalse StopAtWatchpointstrue PauseWhileRunningfalse PauseInterval5 PauseUIFlags0 AltExePath Path PathFormatGeneric PathRootAbsolute StopAtTempBPOnLaunchtrue CacheSymbolicstrue TempBPFunctionNamemain TempBPTypefalse MWCodeGen_68K_codesizeLarge MWCodeGen_68K_structalignmentMC68K MWCodeGen_68K_fp_modeSANE MWCodeGen_68K_code680200 MWCodeGen_68K_profiler0 MWCodeGen_68K_mpwc0 MWCodeGen_68K_fourbyteints1 MWCodeGen_68K_IEEEdoubles1 MWCodeGen_68K_fardata1 MWCodeGen_68K_farvtables1 MWCodeGen_68K_farstrings1 MWCodeGen_68K_pcrelstrings0 MWCodeGen_68K_macsbugNew MWCodeGen_68K_a6frames1 MWDisassembler_68K_showcode1 MWDisassembler_68K_mix0 MWDisassembler_68K_nohex0 MWDisassembler_68K_showdata1 MWDisassembler_68K_showexceptions1 MWDisassembler_68K_showsym0 MWDisassembler_68K_shownames1 GlobalOptimizer_68K_optimizationlevelLevel0 GlobalOptimizer_68K_optforSpeed MWLinker_68K_linksym0 MWLinker_68K_symfullpath1 MWLinker_68K_linksingle0 MWLinker_68K_fastlink1 MWLinker_68K_generateMap0 MWLinker_68K_nolinkwarnings0 MWLinker_68K_glueintosegone1 MWLinker_68K_dontdeadstripinitcode0 MWProject_68K_typeApplication MWProject_68K_outfileUnzip Sioux (68k) MWProject_68K_symfilename MWProject_68K_filecreator1230662000 MWProject_68K_filetype1095782476 MWProject_68K_size1024 MWProject_68K_flags22720 MWProject_68K_rsrcheaderStandard MWProject_68K_rsrcname MWProject_68K_rsrctype1061109567 MWProject_68K_rsrcid0 MWProject_68K_rsrcmulti0 MWProject_68K_rsrcstore0 MWProject_68K_rsrcmerge0 MWProject_68K_rsrcflags0 MWProject_68K_a40 MWProject_68K_minsize512 MWProject_68K_rsrcsegtype0 MWProject_68K_cfm68kcodegen0 MWProject_68K_stacksize0 MWProject_68K_thedebugger0 MWProject_68K_rsrc_custom0 MWProject_68K_is_rseg_app0 MWProject_68K_is_pilot_lib0 MWProject_68K_pilot_main_entry MWFrontEnd_C_cplusplus0 MWFrontEnd_C_checkprotos1 MWFrontEnd_C_arm0 MWFrontEnd_C_trigraphs1 MWFrontEnd_C_onlystdkeywords0 MWFrontEnd_C_enumsalwaysint0 MWFrontEnd_C_mpwpointerstyle0 MWFrontEnd_C_prefixnameUnZpSx.h MWFrontEnd_C_ansistrict1 MWFrontEnd_C_mpwcnewline0 MWFrontEnd_C_wchar_type1 MWFrontEnd_C_enableexceptions0 MWFrontEnd_C_dontreusestrings0 MWFrontEnd_C_poolstrings0 MWFrontEnd_C_dontinline0 MWFrontEnd_C_useRTTI0 MWFrontEnd_C_multibyteaware0 MWFrontEnd_C_unsignedchars0 MWFrontEnd_C_autoinline0 MWFrontEnd_C_booltruefalse1 MWFrontEnd_C_direct_to_som0 MWFrontEnd_C_som_env_check0 MWFrontEnd_C_alwaysinline0 MWFrontEnd_C_inlinelevel0 MWFrontEnd_C_ecplusplus0 MWFrontEnd_C_objective_c0 MWFrontEnd_C_defer_codegen0 MWWarning_C_warn_illpragma0 MWWarning_C_warn_emptydecl0 MWWarning_C_warn_possunwant0 MWWarning_C_warn_unusedvar0 MWWarning_C_warn_unusedarg0 MWWarning_C_warn_extracomma0 MWWarning_C_pedantic0 MWWarning_C_warningerrors0 MWWarning_C_warn_hidevirtual0 MWWarning_C_warn_implicitconv0 MWWarning_C_warn_notinlined0 MWWarning_C_warn_structclass0 MWCFM68K_exportsNone MWCFM68K_olddefversion0 MWCFM68K_oldimpversion0 MWCFM68K_currentversion0 MWCFM68K_farthreshold256 PCFM68K_sharedata0 MWCFM68K_fragmentname MWCFM68K_initname MWCFM68K_mainname__start MWCFM68K_termname MWCFM68K_libfolder0 MWCFM68K_alignmentAlign_2 MWFTP_Post_hostName MWFTP_Post_username MWFTP_Post_password MWFTP_Post_remoteDir MWFTP_Post_uploadDir MWFTP_Post_ftp_port21 MWFTP_Post_SendBin1 MWFTP_Post_ShouldLog1 MWCommandLine_Java_clsName MWCommandLine_Java_args MWJava_Language_optimize0 MWJava_Language_warnDeprecated0 MWJava_Language_emitMap0 MWJava_Language_strictFileNames0 MWJava_Language_strictFileHierarchy0 MWJava_Language_emitHeadersNoNativeHeaders MWJava_Language_packageFilter MWJava_Language_genComments1 MWJava_Language_genHeaders0 MWJava_MacOS_typeJBindery MWJava_MacOS_grow0 MWJava_MacOS_profile0 MWJava_MacOS_verify0 MWJava_MacOS_useHttpProxy0 MWJava_MacOS_useFTPProxy0 MWJava_MacOS_useFirewallProxy0 MWJava_MacOS_outfileJBoundApp MWJava_MacOS_outcreator1061109567 MWJava_MacOS_maxMem1048576 MWJava_MacOS_minMem524288 MWJava_MacOS_red65535 MWJava_MacOS_green65535 MWJava_MacOS_blue65535 MWJava_MacOS_stdoutType1464421956 MWJava_MacOS_stdinType1853189228 MWJava_MacOS_httpProxyPort0 MWJava_MacOS_fTPProxyPort0 MWJava_MacOS_firewallProxyPort0 MWJava_MacOS_httpProxy MWJava_MacOS_fTPProxy MWJava_MacOS_firewallProxy MWJava_MacOS_merge0 MWJava_MacOS_write_old_rsrcs1 MWJava_MacOS_jbindrundebug0 MWJava_MacOS_stdoutfile MWJava_MacOS_stdinfile MWJava_Output_outputtypeJarFile MWJava_Output_outfileJavaClasses.jar MWJava_Output_ftype1514754080 MWJava_Output_fcreator1297570384 MWJava_Output_compress0 MWJava_Output_genManifest0 MWJava_Output_trunctypeFront MWJava_Output_deleteClasses0 MWJava_Output_consoleApp1 MWJava_Proj_projtypeApplet MWJava_Proj_runtimeArgs MWJava_Proj_mainClassName MWJava_Proj_HTMLAppCreator1297303877 MWJava_Proj_HTMLAppNameInternet Explorer MWJava_Proj_HTMLAppWin32NameIexplore.exe MWJava_Proj_compress0 MWJava_Proj_useVM1 MWJava_Proj_workingDir MWJava_Proj_vmarguments MWJava_Proj_vmName MWJavaDoc_Proj_Version1 MWJavaDoc_Proj_Depricated0 MWJavaDoc_Proj_Author1 MWJavaDoc_Proj_Index1 MWJavaDoc_Proj_Tree1 MWJavaDoc_Proj_SunResolveToSame1 MWJavaDoc_Proj_Shortnames1 MWJavaDoc_Proj_Folder0 MWJavaDoc_Proj_GenerateAPILinks0 MWJavaDoc_Proj_scopePublic MWJavaDoc_Proj_fcreator1297303877 MWJavaDoc_Proj_encodingName MWJavaDoc_Proj_decodingName MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ MWMerge_MacOS_projectTypeApplication MWMerge_MacOS_outputNameMerge Out MWMerge_MacOS_outputCreator1061109567 MWMerge_MacOS_outputType1095782476 MWMerge_MacOS_suppressWarning0 MWMerge_MacOS_copyFragments1 MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources ‰aˆ MWCodeGen_PPC_structalignmentMC68K MWCodeGen_PPC_tracebacktablesNone MWCodeGen_PPC_processorGeneric MWCodeGen_PPC_readonlystrings0 MWCodeGen_PPC_tocdata1 MWCodeGen_PPC_profiler0 MWCodeGen_PPC_fpcontract1 MWCodeGen_PPC_schedule0 MWCodeGen_PPC_peephole1 MWCodeGen_PPC_processorspecific0 MWCodeGen_PPC_altivec0 MWCodeGen_PPC_vectortocdata0 MWCodeGen_PPC_vrsave0 MWDisassembler_PPC_showcode1 MWDisassembler_PPC_extended1 MWDisassembler_PPC_mix0 MWDisassembler_PPC_nohex0 MWDisassembler_PPC_showdata1 MWDisassembler_PPC_showexceptions1 MWDisassembler_PPC_showsym0 MWDisassembler_PPC_shownames1 GlobalOptimizer_PPC_optimizationlevelLevel0 GlobalOptimizer_PPC_optforSpeed MWLinker_PPC_linksym1 MWLinker_PPC_symfullpath1 MWLinker_PPC_linkmap0 MWLinker_PPC_nolinkwarnings0 MWLinker_PPC_dontdeadstripinitcode0 MWLinker_PPC_permitmultdefs0 MWLinker_PPC_linkmodeFast MWLinker_PPC_initname MWLinker_PPC_mainname__start MWLinker_PPC_termname MWPEF_exportsNone MWPEF_libfolder0 MWPEF_sortcodeNone MWPEF_expandbss0 MWPEF_sharedata0 MWPEF_olddefversion0 MWPEF_oldimpversion0 MWPEF_currentversion0 MWPEF_fragmentname MWPEF_collapsereloads0 MWProject_PPC_typeApplication MWProject_PPC_outfilea.out MWProject_PPC_filecreator1061109567 MWProject_PPC_filetype1095782476 MWProject_PPC_size384 MWProject_PPC_minsize384 MWProject_PPC_stacksize64 MWProject_PPC_flags22720 MWProject_PPC_symfilename MWProject_PPC_rsrcname MWProject_PPC_rsrcheaderNative MWProject_PPC_rsrctype1061109567 MWProject_PPC_rsrcid0 MWProject_PPC_rsrcflags0 MWProject_PPC_rsrcstore0 MWProject_PPC_rsrcmerge0 MWAssembler_PPC_auxheader0 MWAssembler_PPC_symmodeMac MWAssembler_PPC_dialectPPC MWAssembler_PPC_prefixfile MWAssembler_PPC_typecheck0 MWAssembler_PPC_warnings0 MWAssembler_PPC_casesensitive0 MWRez_Language_maxwidth80 MWRez_Language_scriptRoman MWRez_Language_alignmentAlign1 MWRez_Language_filtermodeFilterSkip MWRez_Language_suppresswarnings0 MWRez_Language_escapecontrolchars1 MWRez_Language_prefixname MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' Name inflate.h MacOS Text Name globals.h MacOS Text Name unzip.h MacOS Text Name unzip.c MacOS Text Name explode.c MacOS Text Name extract.c MacOS Text Name fileio.c MacOS Text Name list.c MacOS Text Name globals.c MacOS Text Name match.c MacOS Text Name zipinfo.c MacOS Text Name inflate.c MacOS Text Name process.c MacOS Text Name unshrink.c MacOS Text Name unreduce.c MacOS Text Name unzpriv.h MacOS Text Name macdir.c MacOS Text Name crc32.c MacOS Text Name crctab.c MacOS Text Name crypt.c MacOS Text Name ttyio.c MacOS Text Name envargs.c MacOS Text Name helpers.c MacOS Text Name helpers.h MacOS Text Name macstuff.h MacOS Text Name pathname.c MacOS Text Name pathname.h MacOS Text Name maccfg.h MacOS Text Name sxunzip.c MacOS Text Name UnZpSx.h MacOS Text Name mactime.c MacOS Text Name macstat.c MacOS Text Name macstat.h MacOS Text Name unzip.rc MacOS Resource Name charmap.h MacOS Text Name FSp_fopen.c MacOS Text Name getenv.c MacOS Text Name macos.c MacOS Text Name macbin3.h MacOS Text Name macbin3.c MacOS Text Name MSL Runtime68K.Lib MacOS Library Name MacOS.lib MacOS Library Name MathLib68K (2i).Lib MacOS Library Name DirectoryCopy.h MacOS Text Name FileCopy.h MacOS Text Name FSpCompat.h MacOS Text Name FullPath.h MacOS Text Name IterateDirectory.h MacOS Text Name MoreDesktopMgr.h MacOS Text Name MoreFiles.h MacOS Text Name MoreFilesExtras.h MacOS Text Name Optimization.h MacOS Text Name OptimizationEnd.h MacOS Text Name Search.h MacOS Text First Segment Protected, Locked Name inflate.h MacOS Name globals.h MacOS Name unzip.h MacOS Name unzip.c MacOS Name explode.c MacOS Name extract.c MacOS Name fileio.c MacOS Name list.c MacOS Name globals.c MacOS Name match.c MacOS Name zipinfo.c MacOS Name inflate.c MacOS Name process.c MacOS Name unshrink.c MacOS Name unreduce.c MacOS Name unzpriv.h MacOS Name macdir.c MacOS Name crc32.c MacOS Name crctab.c MacOS Name crypt.c MacOS Name ttyio.c MacOS Name envargs.c MacOS Name helpers.c MacOS Name helpers.h MacOS Name macstuff.h MacOS Name pathname.c MacOS Name pathname.h MacOS Name maccfg.h MacOS Name sxunzip.c MacOS Name UnZpSx.h MacOS Name macstat.c MacOS Name macstat.h MacOS Name charmap.h MacOS Name FSp_fopen.c MacOS Name getenv.c MacOS Name mactime.c MacOS Name unzip.rc MacOS Name macos.c MacOS Name macbin3.h MacOS Name macbin3.c MacOS Name MSL Runtime68K.Lib MacOS Name MacOS.lib MacOS Name MathLib68K (2i).Lib MacOS Name DirectoryCopy.h MacOS Name FileCopy.h MacOS Name FSpCompat.h MacOS Name FullPath.h MacOS Name IterateDirectory.h MacOS Name MoreDesktopMgr.h MacOS Name MoreFiles.h MacOS Name MoreFilesExtras.h MacOS Name Optimization.h MacOS Name OptimizationEnd.h MacOS Name Search.h MacOS Unzip Sioux (PPC) UserSourceTrees CustomColor1 Red0 Green32767 Blue0 CustomColor2 Red0 Green32767 Blue0 CustomColor3 Red0 Green32767 Blue0 CustomColor4 Red0 Green32767 Blue0 AlwaysSearchUserPathsfalse InterpretDOSAndUnixPathsfalse UserSearchPaths SearchPath Path: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::izshr:macos: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:CHeaders: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:PascalInterfaces: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:Sources: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SystemSearchPaths SearchPath Path:MSL: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path:MacOS Support: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll LinkerMacOS PPC Linker PreLinker PostLinker TargetnameUnzip Sioux (PPC) OutputDirectory Path: PathFormatMacOS PathRootProject SaveEntriesUsingRelativePathsfalse FileMappings FileTypeAPPL FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeAppl FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeMMLB FileExtension CompilerLib Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMPLF FileExtension CompilerLib Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMWCD FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeRSRC FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeTEXT FileExtension.bh CompilerBalloon Help Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c++ CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cc CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cp CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cpp CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.exp Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.h CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMaketrue FileTypeTEXT FileExtension.p CompilerMW Pascal PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pas CompilerMW Pascal PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch CompilerMW C/C++ PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch++ CompilerMW C/C++ PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.ppu CompilerMW Pascal PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.r CompilerRez Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.s CompilerPPCAsm Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeXCOF FileExtension CompilerXCOFF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypedocu FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypersrc FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeshlb FileExtension CompilerPEF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypestub FileExtension CompilerPEF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileExtension.doc Compiler Precompilefalse Launchabletrue ResourceFilefalse IgnoredByMaketrue CacheModDatestrue ActivateBrowsertrue DumpBrowserInfofalse CacheSubprojectstrue UseThirdPartyDebuggerfalse DebuggerCommandLine Debugger Runtime 0002000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 LogSystemMessagestrue AutoTargetDLLsfalse StopAtWatchpointstrue PauseWhileRunningfalse PauseInterval5 PauseUIFlags0 AltExePath Path PathFormatGeneric PathRootAbsolute StopAtTempBPOnLaunchtrue CacheSymbolicstrue TempBPFunctionNamemain TempBPTypefalse MWCodeGen_68K_codesizeSmart MWCodeGen_68K_structalignmentMC68K MWCodeGen_68K_fp_modeSANE MWCodeGen_68K_code680200 MWCodeGen_68K_profiler0 MWCodeGen_68K_mpwc0 MWCodeGen_68K_fourbyteints1 MWCodeGen_68K_IEEEdoubles1 MWCodeGen_68K_fardata1 MWCodeGen_68K_farvtables1 MWCodeGen_68K_farstrings1 MWCodeGen_68K_pcrelstrings0 MWCodeGen_68K_macsbugNew MWCodeGen_68K_a6frames1 MWDisassembler_68K_showcode1 MWDisassembler_68K_mix0 MWDisassembler_68K_nohex0 MWDisassembler_68K_showdata1 MWDisassembler_68K_showexceptions1 MWDisassembler_68K_showsym0 MWDisassembler_68K_shownames1 GlobalOptimizer_68K_optimizationlevelLevel0 GlobalOptimizer_68K_optforSpeed MWLinker_68K_linksym1 MWLinker_68K_symfullpath1 MWLinker_68K_linksingle0 MWLinker_68K_fastlink1 MWLinker_68K_generateMap0 MWLinker_68K_nolinkwarnings0 MWLinker_68K_glueintosegone1 MWLinker_68K_dontdeadstripinitcode0 MWProject_68K_typeApplication MWProject_68K_outfileToolbox68k.out MWProject_68K_symfilename MWProject_68K_filecreator1061109567 MWProject_68K_filetype1095782476 MWProject_68K_size384 MWProject_68K_flags22688 MWProject_68K_rsrcheaderStandard MWProject_68K_rsrcname MWProject_68K_rsrctype1061109567 MWProject_68K_rsrcid0 MWProject_68K_rsrcmulti0 MWProject_68K_rsrcstore0 MWProject_68K_rsrcmerge0 MWProject_68K_rsrcflags0 MWProject_68K_a40 MWProject_68K_minsize384 MWProject_68K_rsrcsegtype0 MWProject_68K_cfm68kcodegen0 MWProject_68K_stacksize0 MWProject_68K_thedebugger0 MWProject_68K_rsrc_custom0 MWProject_68K_is_rseg_app0 MWProject_68K_is_pilot_lib0 MWProject_68K_pilot_main_entry MWFrontEnd_C_cplusplus0 MWFrontEnd_C_checkprotos1 MWFrontEnd_C_arm0 MWFrontEnd_C_trigraphs1 MWFrontEnd_C_onlystdkeywords0 MWFrontEnd_C_enumsalwaysint0 MWFrontEnd_C_mpwpointerstyle0 MWFrontEnd_C_prefixnameUnZpSx.h MWFrontEnd_C_ansistrict1 MWFrontEnd_C_mpwcnewline0 MWFrontEnd_C_wchar_type1 MWFrontEnd_C_enableexceptions0 MWFrontEnd_C_dontreusestrings0 MWFrontEnd_C_poolstrings0 MWFrontEnd_C_dontinline0 MWFrontEnd_C_useRTTI0 MWFrontEnd_C_multibyteaware0 MWFrontEnd_C_unsignedchars0 MWFrontEnd_C_autoinline0 MWFrontEnd_C_booltruefalse1 MWFrontEnd_C_direct_to_som0 MWFrontEnd_C_som_env_check0 MWFrontEnd_C_alwaysinline0 MWFrontEnd_C_inlinelevel0 MWFrontEnd_C_ecplusplus0 MWFrontEnd_C_objective_c0 MWFrontEnd_C_defer_codegen0 MWWarning_C_warn_illpragma0 MWWarning_C_warn_emptydecl0 MWWarning_C_warn_possunwant0 MWWarning_C_warn_unusedvar0 MWWarning_C_warn_unusedarg0 MWWarning_C_warn_extracomma0 MWWarning_C_pedantic0 MWWarning_C_warningerrors0 MWWarning_C_warn_hidevirtual0 MWWarning_C_warn_implicitconv0 MWWarning_C_warn_notinlined0 MWWarning_C_warn_structclass0 MWCFM68K_exportsNone MWCFM68K_olddefversion0 MWCFM68K_oldimpversion0 MWCFM68K_currentversion0 MWCFM68K_farthreshold256 PCFM68K_sharedata0 MWCFM68K_fragmentname MWCFM68K_initname MWCFM68K_mainname__start MWCFM68K_termname MWCFM68K_libfolder0 MWCFM68K_alignmentAlign_2 MWFTP_Post_hostName MWFTP_Post_username MWFTP_Post_password MWFTP_Post_remoteDir MWFTP_Post_uploadDir MWFTP_Post_ftp_port21 MWFTP_Post_SendBin1 MWFTP_Post_ShouldLog1 MWCommandLine_Java_clsName MWCommandLine_Java_args MWJava_Language_optimize0 MWJava_Language_warnDeprecated0 MWJava_Language_emitMap0 MWJava_Language_strictFileNames0 MWJava_Language_strictFileHierarchy0 MWJava_Language_emitHeadersNoNativeHeaders MWJava_Language_packageFilter MWJava_Language_genComments1 MWJava_Language_genHeaders0 MWJava_MacOS_typeJBindery MWJava_MacOS_grow0 MWJava_MacOS_profile0 MWJava_MacOS_verify0 MWJava_MacOS_useHttpProxy0 MWJava_MacOS_useFTPProxy0 MWJava_MacOS_useFirewallProxy0 MWJava_MacOS_outfileJBoundApp MWJava_MacOS_outcreator1061109567 MWJava_MacOS_maxMem1048576 MWJava_MacOS_minMem524288 MWJava_MacOS_red65535 MWJava_MacOS_green65535 MWJava_MacOS_blue65535 MWJava_MacOS_stdoutType1464421956 MWJava_MacOS_stdinType1853189228 MWJava_MacOS_httpProxyPort0 MWJava_MacOS_fTPProxyPort0 MWJava_MacOS_firewallProxyPort0 MWJava_MacOS_httpProxy MWJava_MacOS_fTPProxy MWJava_MacOS_firewallProxy MWJava_MacOS_merge0 MWJava_MacOS_write_old_rsrcs1 MWJava_MacOS_jbindrundebug0 MWJava_MacOS_stdoutfile MWJava_MacOS_stdinfile MWJava_Output_outputtypeJarFile MWJava_Output_outfileJavaClasses.jar MWJava_Output_ftype1514754080 MWJava_Output_fcreator1297570384 MWJava_Output_compress0 MWJava_Output_genManifest0 MWJava_Output_trunctypeFront MWJava_Output_deleteClasses0 MWJava_Output_consoleApp1 MWJava_Proj_projtypeApplet MWJava_Proj_runtimeArgs MWJava_Proj_mainClassName MWJava_Proj_HTMLAppCreator1297303877 MWJava_Proj_HTMLAppNameInternet Explorer MWJava_Proj_HTMLAppWin32NameIexplore.exe MWJava_Proj_compress0 MWJava_Proj_useVM1 MWJava_Proj_workingDir MWJava_Proj_vmarguments MWJava_Proj_vmName MWJavaDoc_Proj_Version1 MWJavaDoc_Proj_Depricated0 MWJavaDoc_Proj_Author1 MWJavaDoc_Proj_Index1 MWJavaDoc_Proj_Tree1 MWJavaDoc_Proj_SunResolveToSame1 MWJavaDoc_Proj_Shortnames1 MWJavaDoc_Proj_Folder0 MWJavaDoc_Proj_GenerateAPILinks0 MWJavaDoc_Proj_scopePublic MWJavaDoc_Proj_fcreator1297303877 MWJavaDoc_Proj_encodingName MWJavaDoc_Proj_decodingName MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ MWMerge_MacOS_projectTypeApplication MWMerge_MacOS_outputNameMerge Out MWMerge_MacOS_outputCreator1061109567 MWMerge_MacOS_outputType1095782476 MWMerge_MacOS_suppressWarning0 MWMerge_MacOS_copyFragments1 MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources ‰aˆ MWCodeGen_PPC_structalignmentPPC MWCodeGen_PPC_tracebacktablesInline MWCodeGen_PPC_processorGeneric MWCodeGen_PPC_readonlystrings0 MWCodeGen_PPC_tocdata1 MWCodeGen_PPC_profiler0 MWCodeGen_PPC_fpcontract1 MWCodeGen_PPC_schedule0 MWCodeGen_PPC_peephole0 MWCodeGen_PPC_processorspecific0 MWCodeGen_PPC_altivec0 MWCodeGen_PPC_vectortocdata0 MWCodeGen_PPC_vrsave0 MWDisassembler_PPC_showcode1 MWDisassembler_PPC_extended1 MWDisassembler_PPC_mix0 MWDisassembler_PPC_nohex0 MWDisassembler_PPC_showdata1 MWDisassembler_PPC_showexceptions1 MWDisassembler_PPC_showsym0 MWDisassembler_PPC_shownames1 GlobalOptimizer_PPC_optimizationlevelLevel0 GlobalOptimizer_PPC_optforSpeed MWLinker_PPC_linksym0 MWLinker_PPC_symfullpath1 MWLinker_PPC_linkmap0 MWLinker_PPC_nolinkwarnings0 MWLinker_PPC_dontdeadstripinitcode0 MWLinker_PPC_permitmultdefs1 MWLinker_PPC_linkmodeFast MWLinker_PPC_initname MWLinker_PPC_mainname__start MWLinker_PPC_termname MWPEF_exportsNone MWPEF_libfolder0 MWPEF_sortcodeNone MWPEF_expandbss0 MWPEF_sharedata0 MWPEF_olddefversion0 MWPEF_oldimpversion0 MWPEF_currentversion0 MWPEF_fragmentname MWPEF_collapsereloads0 MWProject_PPC_typeApplication MWProject_PPC_outfileUnzip Sioux (PPC) MWProject_PPC_filecreator1230662000 MWProject_PPC_filetype1095782476 MWProject_PPC_size2048 MWProject_PPC_minsize1024 MWProject_PPC_stacksize512 MWProject_PPC_flags22720 MWProject_PPC_symfilename MWProject_PPC_rsrcname MWProject_PPC_rsrcheaderNative MWProject_PPC_rsrctype1061109567 MWProject_PPC_rsrcid0 MWProject_PPC_rsrcflags0 MWProject_PPC_rsrcstore0 MWProject_PPC_rsrcmerge0 MWAssembler_PPC_auxheader0 MWAssembler_PPC_symmodeMac MWAssembler_PPC_dialectPPC MWAssembler_PPC_prefixfile MWAssembler_PPC_typecheck0 MWAssembler_PPC_warnings0 MWAssembler_PPC_casesensitive0 MWRez_Language_maxwidth80 MWRez_Language_scriptRoman MWRez_Language_alignmentAlign1 MWRez_Language_filtermodeFilterSkip MWRez_Language_suppresswarnings0 MWRez_Language_escapecontrolchars1 MWRez_Language_prefixname MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' Name MSL C.PPC.Lib MacOS Library Name MSL C++.PPC.Lib MacOS Library Name InterfaceLib MacOS Library Name MathLib MacOS Library Name MSL RuntimePPC.Lib MacOS Library Name MSL SIOUX.PPC.Lib MacOS Library Debug Name inflate.h MacOS Text Name globals.h MacOS Text Name unzip.h MacOS Text Name unzip.c MacOS Text Name envargs.c MacOS Text Name explode.c MacOS Text Name extract.c MacOS Text Name fileio.c MacOS Text Name list.c MacOS Text Name globals.c MacOS Text Name match.c MacOS Text Name zipinfo.c MacOS Text Name inflate.c MacOS Text Name process.c MacOS Text Name unshrink.c MacOS Text Name unreduce.c MacOS Text Name unzpriv.h MacOS Text Name macdir.c MacOS Text Name crc32.c MacOS Text Name crctab.c MacOS Text Name crypt.c MacOS Text Name ttyio.c MacOS Text Name helpers.c MacOS Text Name helpers.h MacOS Text Name macstuff.h MacOS Text Name pathname.c MacOS Text Name pathname.h MacOS Text Name maccfg.h MacOS Text Name sxunzip.c MacOS Text Name UnZpSx.h MacOS Text Name mactime.c MacOS Text Name macstat.c MacOS Text Name macstat.h MacOS Text Name unzip.rc MacOS Resource Name charmap.h MacOS Text Name FSp_fopen.c MacOS Text Name getenv.c MacOS Text Name macos.c MacOS Text Name macbin3.h MacOS Text Name macbin3.c MacOS Text Name DirectoryCopy.h MacOS Text Name FileCopy.h MacOS Text Name FSpCompat.h MacOS Text Name FullPath.h MacOS Text Name IterateDirectory.h MacOS Text Name MoreDesktopMgr.h MacOS Text Name MoreFiles.h MacOS Text Name MoreFilesExtras.h MacOS Text Name Optimization.h MacOS Text Name OptimizationEnd.h MacOS Text Name Search.h MacOS Text Name inflate.h MacOS Name globals.h MacOS Name unzip.h MacOS Name unzip.c MacOS Name envargs.c MacOS Name explode.c MacOS Name extract.c MacOS Name fileio.c MacOS Name list.c MacOS Name globals.c MacOS Name match.c MacOS Name zipinfo.c MacOS Name inflate.c MacOS Name process.c MacOS Name unshrink.c MacOS Name unreduce.c MacOS Name unzpriv.h MacOS Name macdir.c MacOS Name crc32.c MacOS Name crctab.c MacOS Name crypt.c MacOS Name ttyio.c MacOS Name helpers.c MacOS Name helpers.h MacOS Name macstuff.h MacOS Name pathname.c MacOS Name pathname.h MacOS Name maccfg.h MacOS Name sxunzip.c MacOS Name UnZpSx.h MacOS Name macstat.c MacOS Name macstat.h MacOS Name unzip.rc MacOS Name charmap.h MacOS Name FSp_fopen.c MacOS Name mactime.c MacOS Name getenv.c MacOS Name macos.c MacOS Name macbin3.h MacOS Name macbin3.c MacOS Name MSL SIOUX.PPC.Lib MacOS Name MSL C.PPC.Lib MacOS Name MSL C++.PPC.Lib MacOS Name InterfaceLib MacOS Name MathLib MacOS Name MSL RuntimePPC.Lib MacOS Name DirectoryCopy.h MacOS Name FileCopy.h MacOS Name FSpCompat.h MacOS Name FullPath.h MacOS Name IterateDirectory.h MacOS Name MoreDesktopMgr.h MacOS Name MoreFiles.h MacOS Name MoreFilesExtras.h MacOS Name Optimization.h MacOS Name OptimizationEnd.h MacOS Name Search.h MacOS Unzip Lib (PPC) UserSourceTrees CustomColor1 Red0 Green32767 Blue0 CustomColor2 Red0 Green32767 Blue0 CustomColor3 Red0 Green32767 Blue0 CustomColor4 Red0 Green32767 Blue0 AlwaysSearchUserPathsfalse InterpretDOSAndUnixPathsfalse UserSearchPaths SearchPath Path: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::izshr:macos: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:CHeaders: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:PascalInterfaces: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:Sources: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SystemSearchPaths SearchPath Path:MSL: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path:MacOS Support: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll LinkerMacOS PPC Linker PreLinker PostLinker TargetnameUnzip Lib (PPC) OutputDirectory Path: PathFormatMacOS PathRootProject SaveEntriesUsingRelativePathsfalse FileMappings FileTypeAPPL FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeAppl FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeMMLB FileExtension CompilerLib Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMPLF FileExtension CompilerLib Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMWCD FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeRSRC FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeTEXT FileExtension.bh CompilerBalloon Help Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c++ CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cc CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cp CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cpp CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.exp Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.h CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMaketrue FileTypeTEXT FileExtension.p CompilerMW Pascal PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pas CompilerMW Pascal PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch CompilerMW C/C++ PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch++ CompilerMW C/C++ PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.ppu CompilerMW Pascal PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.r CompilerRez Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.s CompilerPPCAsm Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeXCOF FileExtension CompilerXCOFF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypedocu FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypersrc FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeshlb FileExtension CompilerPEF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypestub FileExtension CompilerPEF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileExtension.doc Compiler Precompilefalse Launchabletrue ResourceFilefalse IgnoredByMaketrue CacheModDatestrue ActivateBrowsertrue DumpBrowserInfofalse CacheSubprojectstrue UseThirdPartyDebuggerfalse DebuggerCommandLine Debugger Runtime 0002000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 LogSystemMessagestrue AutoTargetDLLsfalse StopAtWatchpointstrue PauseWhileRunningfalse PauseInterval5 PauseUIFlags0 AltExePath Path PathFormatGeneric PathRootAbsolute StopAtTempBPOnLaunchtrue CacheSymbolicstrue TempBPFunctionNamemain TempBPTypefalse MWCodeGen_68K_codesizeSmart MWCodeGen_68K_structalignmentMC68K MWCodeGen_68K_fp_modeSANE MWCodeGen_68K_code680200 MWCodeGen_68K_profiler0 MWCodeGen_68K_mpwc0 MWCodeGen_68K_fourbyteints1 MWCodeGen_68K_IEEEdoubles1 MWCodeGen_68K_fardata1 MWCodeGen_68K_farvtables1 MWCodeGen_68K_farstrings1 MWCodeGen_68K_pcrelstrings0 MWCodeGen_68K_macsbugNew MWCodeGen_68K_a6frames1 MWDisassembler_68K_showcode1 MWDisassembler_68K_mix0 MWDisassembler_68K_nohex0 MWDisassembler_68K_showdata1 MWDisassembler_68K_showexceptions1 MWDisassembler_68K_showsym0 MWDisassembler_68K_shownames1 GlobalOptimizer_68K_optimizationlevelLevel0 GlobalOptimizer_68K_optforSpeed MWLinker_68K_linksym1 MWLinker_68K_symfullpath1 MWLinker_68K_linksingle0 MWLinker_68K_fastlink1 MWLinker_68K_generateMap0 MWLinker_68K_nolinkwarnings0 MWLinker_68K_glueintosegone1 MWLinker_68K_dontdeadstripinitcode0 MWProject_68K_typeApplication MWProject_68K_outfileToolbox68k.out MWProject_68K_symfilename MWProject_68K_filecreator1061109567 MWProject_68K_filetype1095782476 MWProject_68K_size384 MWProject_68K_flags22688 MWProject_68K_rsrcheaderStandard MWProject_68K_rsrcname MWProject_68K_rsrctype1061109567 MWProject_68K_rsrcid0 MWProject_68K_rsrcmulti0 MWProject_68K_rsrcstore0 MWProject_68K_rsrcmerge0 MWProject_68K_rsrcflags0 MWProject_68K_a40 MWProject_68K_minsize384 MWProject_68K_rsrcsegtype0 MWProject_68K_cfm68kcodegen0 MWProject_68K_stacksize0 MWProject_68K_thedebugger0 MWProject_68K_rsrc_custom0 MWProject_68K_is_rseg_app0 MWProject_68K_is_pilot_lib0 MWProject_68K_pilot_main_entry MWFrontEnd_C_cplusplus0 MWFrontEnd_C_checkprotos1 MWFrontEnd_C_arm0 MWFrontEnd_C_trigraphs0 MWFrontEnd_C_onlystdkeywords0 MWFrontEnd_C_enumsalwaysint0 MWFrontEnd_C_mpwpointerstyle0 MWFrontEnd_C_prefixnameUnZpLib.h MWFrontEnd_C_ansistrict1 MWFrontEnd_C_mpwcnewline0 MWFrontEnd_C_wchar_type1 MWFrontEnd_C_enableexceptions0 MWFrontEnd_C_dontreusestrings1 MWFrontEnd_C_poolstrings0 MWFrontEnd_C_dontinline0 MWFrontEnd_C_useRTTI0 MWFrontEnd_C_multibyteaware0 MWFrontEnd_C_unsignedchars0 MWFrontEnd_C_autoinline0 MWFrontEnd_C_booltruefalse1 MWFrontEnd_C_direct_to_som0 MWFrontEnd_C_som_env_check0 MWFrontEnd_C_alwaysinline0 MWFrontEnd_C_inlinelevel0 MWFrontEnd_C_ecplusplus0 MWFrontEnd_C_objective_c0 MWFrontEnd_C_defer_codegen0 MWWarning_C_warn_illpragma1 MWWarning_C_warn_emptydecl1 MWWarning_C_warn_possunwant1 MWWarning_C_warn_unusedvar1 MWWarning_C_warn_unusedarg1 MWWarning_C_warn_extracomma1 MWWarning_C_pedantic1 MWWarning_C_warningerrors0 MWWarning_C_warn_hidevirtual1 MWWarning_C_warn_implicitconv0 MWWarning_C_warn_notinlined1 MWWarning_C_warn_structclass0 MWCFM68K_exportsNone MWCFM68K_olddefversion0 MWCFM68K_oldimpversion0 MWCFM68K_currentversion0 MWCFM68K_farthreshold256 PCFM68K_sharedata0 MWCFM68K_fragmentname MWCFM68K_initname MWCFM68K_mainname__start MWCFM68K_termname MWCFM68K_libfolder0 MWCFM68K_alignmentAlign_2 MWFTP_Post_hostName MWFTP_Post_username MWFTP_Post_password MWFTP_Post_remoteDir MWFTP_Post_uploadDir MWFTP_Post_ftp_port21 MWFTP_Post_SendBin1 MWFTP_Post_ShouldLog1 MWCommandLine_Java_clsName MWCommandLine_Java_args MWJava_Language_optimize0 MWJava_Language_warnDeprecated0 MWJava_Language_emitMap0 MWJava_Language_strictFileNames0 MWJava_Language_strictFileHierarchy0 MWJava_Language_emitHeadersNoNativeHeaders MWJava_Language_packageFilter MWJava_Language_genComments1 MWJava_Language_genHeaders0 MWJava_MacOS_typeJBindery MWJava_MacOS_grow0 MWJava_MacOS_profile0 MWJava_MacOS_verify0 MWJava_MacOS_useHttpProxy0 MWJava_MacOS_useFTPProxy0 MWJava_MacOS_useFirewallProxy0 MWJava_MacOS_outfileJBoundApp MWJava_MacOS_outcreator1061109567 MWJava_MacOS_maxMem1048576 MWJava_MacOS_minMem524288 MWJava_MacOS_red65535 MWJava_MacOS_green65535 MWJava_MacOS_blue65535 MWJava_MacOS_stdoutType1464421956 MWJava_MacOS_stdinType1853189228 MWJava_MacOS_httpProxyPort0 MWJava_MacOS_fTPProxyPort0 MWJava_MacOS_firewallProxyPort0 MWJava_MacOS_httpProxy MWJava_MacOS_fTPProxy MWJava_MacOS_firewallProxy MWJava_MacOS_merge0 MWJava_MacOS_write_old_rsrcs1 MWJava_MacOS_jbindrundebug0 MWJava_MacOS_stdoutfile MWJava_MacOS_stdinfile MWJava_Output_outputtypeJarFile MWJava_Output_outfileJavaClasses.jar MWJava_Output_ftype1514754080 MWJava_Output_fcreator1297570384 MWJava_Output_compress0 MWJava_Output_genManifest0 MWJava_Output_trunctypeFront MWJava_Output_deleteClasses0 MWJava_Output_consoleApp1 MWJava_Proj_projtypeApplet MWJava_Proj_runtimeArgs MWJava_Proj_mainClassName MWJava_Proj_HTMLAppCreator1297303877 MWJava_Proj_HTMLAppNameInternet Explorer MWJava_Proj_HTMLAppWin32NameIexplore.exe MWJava_Proj_compress0 MWJava_Proj_useVM1 MWJava_Proj_workingDir MWJava_Proj_vmarguments MWJava_Proj_vmName MWJavaDoc_Proj_Version1 MWJavaDoc_Proj_Depricated0 MWJavaDoc_Proj_Author1 MWJavaDoc_Proj_Index1 MWJavaDoc_Proj_Tree1 MWJavaDoc_Proj_SunResolveToSame1 MWJavaDoc_Proj_Shortnames1 MWJavaDoc_Proj_Folder0 MWJavaDoc_Proj_GenerateAPILinks0 MWJavaDoc_Proj_scopePublic MWJavaDoc_Proj_fcreator1297303877 MWJavaDoc_Proj_encodingName MWJavaDoc_Proj_decodingName MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ MWMerge_MacOS_projectTypeApplication MWMerge_MacOS_outputNameMerge Out MWMerge_MacOS_outputCreator1061109567 MWMerge_MacOS_outputType1095782476 MWMerge_MacOS_suppressWarning0 MWMerge_MacOS_copyFragments1 MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources ‰aˆ MWCodeGen_PPC_structalignmentPPC MWCodeGen_PPC_tracebacktablesInline MWCodeGen_PPC_processorP603e MWCodeGen_PPC_readonlystrings0 MWCodeGen_PPC_tocdata1 MWCodeGen_PPC_profiler0 MWCodeGen_PPC_fpcontract1 MWCodeGen_PPC_schedule1 MWCodeGen_PPC_peephole1 MWCodeGen_PPC_processorspecific0 MWCodeGen_PPC_altivec0 MWCodeGen_PPC_vectortocdata0 MWCodeGen_PPC_vrsave0 MWDisassembler_PPC_showcode1 MWDisassembler_PPC_extended1 MWDisassembler_PPC_mix0 MWDisassembler_PPC_nohex0 MWDisassembler_PPC_showdata1 MWDisassembler_PPC_showexceptions1 MWDisassembler_PPC_showsym0 MWDisassembler_PPC_shownames1 GlobalOptimizer_PPC_optimizationlevelLevel4 GlobalOptimizer_PPC_optforSpeed MWLinker_PPC_linksym0 MWLinker_PPC_symfullpath1 MWLinker_PPC_linkmap0 MWLinker_PPC_nolinkwarnings0 MWLinker_PPC_dontdeadstripinitcode0 MWLinker_PPC_permitmultdefs1 MWLinker_PPC_linkmodeFast MWLinker_PPC_initname MWLinker_PPC_mainname__start MWLinker_PPC_termname MWPEF_exportsNone MWPEF_libfolder0 MWPEF_sortcodeNone MWPEF_expandbss0 MWPEF_sharedata0 MWPEF_olddefversion0 MWPEF_oldimpversion0 MWPEF_currentversion0 MWPEF_fragmentname MWPEF_collapsereloads0 MWProject_PPC_typeLibrary MWProject_PPC_outfileUnzip Lib (PPC) MWProject_PPC_filecreator1061109567 MWProject_PPC_filetype1061109567 MWProject_PPC_size0 MWProject_PPC_minsize0 MWProject_PPC_stacksize0 MWProject_PPC_flags0 MWProject_PPC_symfilename MWProject_PPC_rsrcname MWProject_PPC_rsrcheaderNative MWProject_PPC_rsrctype1061109567 MWProject_PPC_rsrcid0 MWProject_PPC_rsrcflags0 MWProject_PPC_rsrcstore0 MWProject_PPC_rsrcmerge0 MWAssembler_PPC_auxheader0 MWAssembler_PPC_symmodeMac MWAssembler_PPC_dialectPPC MWAssembler_PPC_prefixfile MWAssembler_PPC_typecheck0 MWAssembler_PPC_warnings0 MWAssembler_PPC_casesensitive0 MWRez_Language_maxwidth80 MWRez_Language_scriptRoman MWRez_Language_alignmentAlign1 MWRez_Language_filtermodeFilterSkip MWRez_Language_suppresswarnings0 MWRez_Language_escapecontrolchars1 MWRez_Language_prefixname MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' Name inflate.h MacOS Text Name globals.h MacOS Text Name unzip.h MacOS Text Name unzip.c MacOS Text Name explode.c MacOS Text Name extract.c MacOS Text Name fileio.c MacOS Text Name list.c MacOS Text Name globals.c MacOS Text Name match.c MacOS Text Name zipinfo.c MacOS Text Name inflate.c MacOS Text Name process.c MacOS Text Name unshrink.c MacOS Text Name unreduce.c MacOS Text Name unzpriv.h MacOS Text Name macdir.c MacOS Text Name maccfg.h MacOS Text Name sxunzip.c MacOS Text Name UnZpLib.h MacOS Text Name macstat.c MacOS Text Name macstat.h MacOS Text Name macos.c MacOS Text Name crypt.c MacOS Text Name macbin3.h MacOS Text Name macbin3.c MacOS Text Name ttyio.c MacOS Text Name DirectoryCopy.h MacOS Text Name FileCopy.h MacOS Text Name FSpCompat.h MacOS Text Name FullPath.h MacOS Text Name IterateDirectory.h MacOS Text Name MoreDesktopMgr.h MacOS Text Name MoreFiles.h MacOS Text Name MoreFilesExtras.h MacOS Text Name Optimization.h MacOS Text Name OptimizationEnd.h MacOS Text Name Search.h MacOS Text Name inflate.h MacOS Name globals.h MacOS Name unzip.h MacOS Name unzip.c MacOS Name explode.c MacOS Name extract.c MacOS Name fileio.c MacOS Name list.c MacOS Name globals.c MacOS Name match.c MacOS Name zipinfo.c MacOS Name inflate.c MacOS Name process.c MacOS Name unshrink.c MacOS Name unreduce.c MacOS Name unzpriv.h MacOS Name macdir.c MacOS Name maccfg.h MacOS Name sxunzip.c MacOS Name UnZpLib.h MacOS Name macstat.c MacOS Name macstat.h MacOS Name macos.c MacOS Name crypt.c MacOS Name macbin3.h MacOS Name macbin3.c MacOS Name ttyio.c MacOS Name DirectoryCopy.h MacOS Name FileCopy.h MacOS Name FSpCompat.h MacOS Name FullPath.h MacOS Name IterateDirectory.h MacOS Name MoreDesktopMgr.h MacOS Name MoreFiles.h MacOS Name MoreFilesExtras.h MacOS Name Optimization.h MacOS Name OptimizationEnd.h MacOS Name Search.h MacOS Unzip Lib (68k) UserSourceTrees CustomColor1 Red0 Green32767 Blue0 CustomColor2 Red0 Green32767 Blue0 CustomColor3 Red0 Green32767 Blue0 CustomColor4 Red0 Green32767 Blue0 AlwaysSearchUserPathsfalse InterpretDOSAndUnixPathsfalse UserSearchPaths SearchPath Path: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::izshr:macos: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:CHeaders: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:PascalInterfaces: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:Sources: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SystemSearchPaths SearchPath Path:MSL: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path:MacOS Support: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll LinkerMacOS 68K Linker PreLinker PostLinker TargetnameUnzip Lib (68k) OutputDirectory Path: PathFormatMacOS PathRootProject SaveEntriesUsingRelativePathsfalse FileMappings FileTypeAPPL FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeAppl FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeMMLB FileExtension CompilerLib Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMPLF FileExtension CompilerLib Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMWCD FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeOBJ FileExtension CompilerMPW Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeRSRC FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeTEXT FileExtension.bh CompilerBalloon Help Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c++ CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cc CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cp CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cpp CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.exp Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.h CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMaketrue FileTypeTEXT FileExtension.p CompilerMW Pascal 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pas CompilerMW Pascal 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch CompilerMW C/C++ 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch++ CompilerMW C/C++ 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.ppu CompilerMW Pascal 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.r CompilerRez Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.seg Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypedocu FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypersrc FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeshlb FileExtension CompilerPEF Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypestub FileExtension CompilerPEF Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileExtension.doc Compiler Precompilefalse Launchabletrue ResourceFilefalse IgnoredByMaketrue CacheModDatestrue ActivateBrowsertrue DumpBrowserInfofalse CacheSubprojectstrue UseThirdPartyDebuggerfalse DebuggerCommandLine Debugger Runtime 0002000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 LogSystemMessagestrue AutoTargetDLLsfalse StopAtWatchpointstrue PauseWhileRunningfalse PauseInterval5 PauseUIFlags0 AltExePath Path PathFormatGeneric PathRootAbsolute StopAtTempBPOnLaunchtrue CacheSymbolicstrue TempBPFunctionNamemain TempBPTypefalse MWCodeGen_68K_codesizeLarge MWCodeGen_68K_structalignmentMC68K MWCodeGen_68K_fp_modeSANE MWCodeGen_68K_code680200 MWCodeGen_68K_profiler0 MWCodeGen_68K_mpwc0 MWCodeGen_68K_fourbyteints1 MWCodeGen_68K_IEEEdoubles1 MWCodeGen_68K_fardata1 MWCodeGen_68K_farvtables1 MWCodeGen_68K_farstrings1 MWCodeGen_68K_pcrelstrings0 MWCodeGen_68K_macsbugNew MWCodeGen_68K_a6frames0 MWDisassembler_68K_showcode1 MWDisassembler_68K_mix0 MWDisassembler_68K_nohex0 MWDisassembler_68K_showdata1 MWDisassembler_68K_showexceptions1 MWDisassembler_68K_showsym0 MWDisassembler_68K_shownames1 GlobalOptimizer_68K_optimizationlevelLevel4 GlobalOptimizer_68K_optforSpeed MWLinker_68K_linksym0 MWLinker_68K_symfullpath1 MWLinker_68K_linksingle1 MWLinker_68K_fastlink1 MWLinker_68K_generateMap0 MWLinker_68K_nolinkwarnings0 MWLinker_68K_glueintosegone1 MWLinker_68K_dontdeadstripinitcode0 MWProject_68K_typeLibrary MWProject_68K_outfileUnzip Lib (68k) MWProject_68K_symfilename MWProject_68K_filecreator1061109567 MWProject_68K_filetype1061109567 MWProject_68K_size0 MWProject_68K_flags0 MWProject_68K_rsrcheaderStandard MWProject_68K_rsrcname MWProject_68K_rsrctype1061109567 MWProject_68K_rsrcid0 MWProject_68K_rsrcmulti0 MWProject_68K_rsrcstore0 MWProject_68K_rsrcmerge0 MWProject_68K_rsrcflags0 MWProject_68K_a41 MWProject_68K_minsize0 MWProject_68K_rsrcsegtype0 MWProject_68K_cfm68kcodegen0 MWProject_68K_stacksize0 MWProject_68K_thedebugger0 MWProject_68K_rsrc_custom0 MWProject_68K_is_rseg_app0 MWProject_68K_is_pilot_lib0 MWProject_68K_pilot_main_entry MWFrontEnd_C_cplusplus0 MWFrontEnd_C_checkprotos1 MWFrontEnd_C_arm0 MWFrontEnd_C_trigraphs1 MWFrontEnd_C_onlystdkeywords0 MWFrontEnd_C_enumsalwaysint0 MWFrontEnd_C_mpwpointerstyle0 MWFrontEnd_C_prefixnameUnZpLib.h MWFrontEnd_C_ansistrict1 MWFrontEnd_C_mpwcnewline0 MWFrontEnd_C_wchar_type1 MWFrontEnd_C_enableexceptions0 MWFrontEnd_C_dontreusestrings1 MWFrontEnd_C_poolstrings0 MWFrontEnd_C_dontinline0 MWFrontEnd_C_useRTTI0 MWFrontEnd_C_multibyteaware0 MWFrontEnd_C_unsignedchars0 MWFrontEnd_C_autoinline0 MWFrontEnd_C_booltruefalse1 MWFrontEnd_C_direct_to_som0 MWFrontEnd_C_som_env_check0 MWFrontEnd_C_alwaysinline0 MWFrontEnd_C_inlinelevel0 MWFrontEnd_C_ecplusplus0 MWFrontEnd_C_objective_c0 MWFrontEnd_C_defer_codegen0 MWWarning_C_warn_illpragma1 MWWarning_C_warn_emptydecl1 MWWarning_C_warn_possunwant1 MWWarning_C_warn_unusedvar1 MWWarning_C_warn_unusedarg1 MWWarning_C_warn_extracomma1 MWWarning_C_pedantic1 MWWarning_C_warningerrors0 MWWarning_C_warn_hidevirtual1 MWWarning_C_warn_implicitconv0 MWWarning_C_warn_notinlined0 MWWarning_C_warn_structclass0 MWCFM68K_exportsNone MWCFM68K_olddefversion0 MWCFM68K_oldimpversion0 MWCFM68K_currentversion0 MWCFM68K_farthreshold256 PCFM68K_sharedata0 MWCFM68K_fragmentname MWCFM68K_initname MWCFM68K_mainname__start MWCFM68K_termname MWCFM68K_libfolder0 MWCFM68K_alignmentAlign_2 MWFTP_Post_hostName MWFTP_Post_username MWFTP_Post_password MWFTP_Post_remoteDir MWFTP_Post_uploadDir MWFTP_Post_ftp_port21 MWFTP_Post_SendBin1 MWFTP_Post_ShouldLog1 MWCommandLine_Java_clsName MWCommandLine_Java_args MWJava_Language_optimize0 MWJava_Language_warnDeprecated0 MWJava_Language_emitMap0 MWJava_Language_strictFileNames0 MWJava_Language_strictFileHierarchy0 MWJava_Language_emitHeadersNoNativeHeaders MWJava_Language_packageFilter MWJava_Language_genComments1 MWJava_Language_genHeaders0 MWJava_MacOS_typeJBindery MWJava_MacOS_grow0 MWJava_MacOS_profile0 MWJava_MacOS_verify0 MWJava_MacOS_useHttpProxy0 MWJava_MacOS_useFTPProxy0 MWJava_MacOS_useFirewallProxy0 MWJava_MacOS_outfileJBoundApp MWJava_MacOS_outcreator1061109567 MWJava_MacOS_maxMem1048576 MWJava_MacOS_minMem524288 MWJava_MacOS_red65535 MWJava_MacOS_green65535 MWJava_MacOS_blue65535 MWJava_MacOS_stdoutType1464421956 MWJava_MacOS_stdinType1853189228 MWJava_MacOS_httpProxyPort0 MWJava_MacOS_fTPProxyPort0 MWJava_MacOS_firewallProxyPort0 MWJava_MacOS_httpProxy MWJava_MacOS_fTPProxy MWJava_MacOS_firewallProxy MWJava_MacOS_merge0 MWJava_MacOS_write_old_rsrcs1 MWJava_MacOS_jbindrundebug0 MWJava_MacOS_stdoutfile MWJava_MacOS_stdinfile MWJava_Output_outputtypeJarFile MWJava_Output_outfileJavaClasses.jar MWJava_Output_ftype1514754080 MWJava_Output_fcreator1297570384 MWJava_Output_compress0 MWJava_Output_genManifest0 MWJava_Output_trunctypeFront MWJava_Output_deleteClasses0 MWJava_Output_consoleApp1 MWJava_Proj_projtypeApplet MWJava_Proj_runtimeArgs MWJava_Proj_mainClassName MWJava_Proj_HTMLAppCreator1297303877 MWJava_Proj_HTMLAppNameInternet Explorer MWJava_Proj_HTMLAppWin32NameIexplore.exe MWJava_Proj_compress0 MWJava_Proj_useVM1 MWJava_Proj_workingDir MWJava_Proj_vmarguments MWJava_Proj_vmName MWJavaDoc_Proj_Version1 MWJavaDoc_Proj_Depricated0 MWJavaDoc_Proj_Author1 MWJavaDoc_Proj_Index1 MWJavaDoc_Proj_Tree1 MWJavaDoc_Proj_SunResolveToSame1 MWJavaDoc_Proj_Shortnames1 MWJavaDoc_Proj_Folder0 MWJavaDoc_Proj_GenerateAPILinks0 MWJavaDoc_Proj_scopePublic MWJavaDoc_Proj_fcreator1297303877 MWJavaDoc_Proj_encodingName MWJavaDoc_Proj_decodingName MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ MWMerge_MacOS_projectTypeApplication MWMerge_MacOS_outputNameMerge Out MWMerge_MacOS_outputCreator1061109567 MWMerge_MacOS_outputType1095782476 MWMerge_MacOS_suppressWarning0 MWMerge_MacOS_copyFragments1 MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources ‰aˆ MWCodeGen_PPC_structalignmentMC68K MWCodeGen_PPC_tracebacktablesNone MWCodeGen_PPC_processorGeneric MWCodeGen_PPC_readonlystrings0 MWCodeGen_PPC_tocdata1 MWCodeGen_PPC_profiler0 MWCodeGen_PPC_fpcontract1 MWCodeGen_PPC_schedule0 MWCodeGen_PPC_peephole1 MWCodeGen_PPC_processorspecific0 MWCodeGen_PPC_altivec0 MWCodeGen_PPC_vectortocdata0 MWCodeGen_PPC_vrsave0 MWDisassembler_PPC_showcode1 MWDisassembler_PPC_extended1 MWDisassembler_PPC_mix0 MWDisassembler_PPC_nohex0 MWDisassembler_PPC_showdata1 MWDisassembler_PPC_showexceptions1 MWDisassembler_PPC_showsym0 MWDisassembler_PPC_shownames1 GlobalOptimizer_PPC_optimizationlevelLevel0 GlobalOptimizer_PPC_optforSpeed MWLinker_PPC_linksym1 MWLinker_PPC_symfullpath1 MWLinker_PPC_linkmap0 MWLinker_PPC_nolinkwarnings0 MWLinker_PPC_dontdeadstripinitcode0 MWLinker_PPC_permitmultdefs0 MWLinker_PPC_linkmodeFast MWLinker_PPC_initname MWLinker_PPC_mainname__start MWLinker_PPC_termname MWPEF_exportsNone MWPEF_libfolder0 MWPEF_sortcodeNone MWPEF_expandbss0 MWPEF_sharedata0 MWPEF_olddefversion0 MWPEF_oldimpversion0 MWPEF_currentversion0 MWPEF_fragmentname MWPEF_collapsereloads0 MWProject_PPC_typeApplication MWProject_PPC_outfilea.out MWProject_PPC_filecreator1061109567 MWProject_PPC_filetype1095782476 MWProject_PPC_size384 MWProject_PPC_minsize384 MWProject_PPC_stacksize64 MWProject_PPC_flags22720 MWProject_PPC_symfilename MWProject_PPC_rsrcname MWProject_PPC_rsrcheaderNative MWProject_PPC_rsrctype1061109567 MWProject_PPC_rsrcid0 MWProject_PPC_rsrcflags0 MWProject_PPC_rsrcstore0 MWProject_PPC_rsrcmerge0 MWAssembler_PPC_auxheader0 MWAssembler_PPC_symmodeMac MWAssembler_PPC_dialectPPC MWAssembler_PPC_prefixfile MWAssembler_PPC_typecheck0 MWAssembler_PPC_warnings0 MWAssembler_PPC_casesensitive0 MWRez_Language_maxwidth80 MWRez_Language_scriptRoman MWRez_Language_alignmentAlign1 MWRez_Language_filtermodeFilterSkip MWRez_Language_suppresswarnings0 MWRez_Language_escapecontrolchars1 MWRez_Language_prefixname MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' Name inflate.h MacOS Text Name globals.h MacOS Text Name unzip.h MacOS Text Name unzip.c MacOS Text Name explode.c MacOS Text Name extract.c MacOS Text Name fileio.c MacOS Text Name list.c MacOS Text Name globals.c MacOS Text Name match.c MacOS Text Name zipinfo.c MacOS Text Name inflate.c MacOS Text Name process.c MacOS Text Name unshrink.c MacOS Text Name unreduce.c MacOS Text Name unzpriv.h MacOS Text Name macdir.c MacOS Text Name maccfg.h MacOS Text Name sxunzip.c MacOS Text Name UnZpLib.h MacOS Text Name macstat.c MacOS Text Name macstat.h MacOS Text Name macos.c MacOS Text Name macbin3.h MacOS Text Name macbin3.c MacOS Text Name crypt.c MacOS Text Name ttyio.c MacOS Text Name DirectoryCopy.h MacOS Text Name FileCopy.h MacOS Text Name FSpCompat.h MacOS Text Name FullPath.h MacOS Text Name IterateDirectory.h MacOS Text Name MoreDesktopMgr.h MacOS Text Name MoreFiles.h MacOS Text Name MoreFilesExtras.h MacOS Text Name Optimization.h MacOS Text Name OptimizationEnd.h MacOS Text Name Search.h MacOS Text First Segment Protected, Locked Name inflate.h MacOS Name globals.h MacOS Name unzip.h MacOS Name unzip.c MacOS Name explode.c MacOS Name extract.c MacOS Name fileio.c MacOS Name list.c MacOS Name globals.c MacOS Name match.c MacOS Name zipinfo.c MacOS Name inflate.c MacOS Name process.c MacOS Name unshrink.c MacOS Name unreduce.c MacOS Name unzpriv.h MacOS Name macdir.c MacOS Name maccfg.h MacOS Name sxunzip.c MacOS Name UnZpLib.h MacOS Name macstat.c MacOS Name macstat.h MacOS Name macos.c MacOS Name macbin3.h MacOS Name macbin3.c MacOS Name crypt.c MacOS Name ttyio.c MacOS Name DirectoryCopy.h MacOS Name FileCopy.h MacOS Name FSpCompat.h MacOS Name FullPath.h MacOS Name IterateDirectory.h MacOS Name MoreDesktopMgr.h MacOS Name MoreFiles.h MacOS Name MoreFilesExtras.h MacOS Name Optimization.h MacOS Name OptimizationEnd.h MacOS Name Search.h MacOS Unzip (PPC) UserSourceTrees CustomColor1 Red0 Green32767 Blue0 CustomColor2 Red0 Green32767 Blue0 CustomColor3 Red0 Green32767 Blue0 CustomColor4 Red0 Green32767 Blue0 AlwaysSearchUserPathsfalse InterpretDOSAndUnixPathsfalse UserSearchPaths SearchPath Path: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::izshr:macos: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:CHeaders: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:PascalInterfaces: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:Sources: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SystemSearchPaths SearchPath Path:MSL: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path:MacOS Support: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll LinkerMacOS PPC Linker PreLinker PostLinker TargetnameUnzip (PPC) OutputDirectory Path: PathFormatMacOS PathRootProject SaveEntriesUsingRelativePathsfalse FileMappings FileTypeAPPL FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeAppl FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeMMLB FileExtension CompilerLib Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMPLF FileExtension CompilerLib Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMWCD FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeRSRC FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeTEXT FileExtension.bh CompilerBalloon Help Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c++ CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cc CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cp CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cpp CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.exp Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.h CompilerMW C/C++ PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMaketrue FileTypeTEXT FileExtension.p CompilerMW Pascal PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pas CompilerMW Pascal PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch CompilerMW C/C++ PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch++ CompilerMW C/C++ PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.ppu CompilerMW Pascal PPC Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.r CompilerRez Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.s CompilerPPCAsm Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeXCOF FileExtension CompilerXCOFF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypedocu FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypersrc FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeshlb FileExtension CompilerPEF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypestub FileExtension CompilerPEF Import PPC Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileExtension.doc Compiler Precompilefalse Launchabletrue ResourceFilefalse IgnoredByMaketrue CacheModDatestrue ActivateBrowsertrue DumpBrowserInfofalse CacheSubprojectstrue UseThirdPartyDebuggerfalse DebuggerCommandLine Debugger Runtime 0002000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 LogSystemMessagestrue AutoTargetDLLsfalse StopAtWatchpointstrue PauseWhileRunningfalse PauseInterval5 PauseUIFlags0 AltExePath Path PathFormatGeneric PathRootAbsolute StopAtTempBPOnLaunchtrue CacheSymbolicstrue TempBPFunctionNamemain TempBPTypefalse MWCodeGen_68K_codesizeSmart MWCodeGen_68K_structalignmentMC68K MWCodeGen_68K_fp_modeSANE MWCodeGen_68K_code680200 MWCodeGen_68K_profiler0 MWCodeGen_68K_mpwc0 MWCodeGen_68K_fourbyteints1 MWCodeGen_68K_IEEEdoubles1 MWCodeGen_68K_fardata1 MWCodeGen_68K_farvtables1 MWCodeGen_68K_farstrings1 MWCodeGen_68K_pcrelstrings0 MWCodeGen_68K_macsbugNew MWCodeGen_68K_a6frames1 MWDisassembler_68K_showcode1 MWDisassembler_68K_mix0 MWDisassembler_68K_nohex0 MWDisassembler_68K_showdata1 MWDisassembler_68K_showexceptions1 MWDisassembler_68K_showsym0 MWDisassembler_68K_shownames1 GlobalOptimizer_68K_optimizationlevelLevel0 GlobalOptimizer_68K_optforSpeed MWLinker_68K_linksym1 MWLinker_68K_symfullpath1 MWLinker_68K_linksingle0 MWLinker_68K_fastlink1 MWLinker_68K_generateMap0 MWLinker_68K_nolinkwarnings0 MWLinker_68K_glueintosegone1 MWLinker_68K_dontdeadstripinitcode0 MWProject_68K_typeApplication MWProject_68K_outfileToolbox68k.out MWProject_68K_symfilename MWProject_68K_filecreator1061109567 MWProject_68K_filetype1095782476 MWProject_68K_size384 MWProject_68K_flags22688 MWProject_68K_rsrcheaderStandard MWProject_68K_rsrcname MWProject_68K_rsrctype1061109567 MWProject_68K_rsrcid0 MWProject_68K_rsrcmulti0 MWProject_68K_rsrcstore0 MWProject_68K_rsrcmerge0 MWProject_68K_rsrcflags0 MWProject_68K_a40 MWProject_68K_minsize384 MWProject_68K_rsrcsegtype0 MWProject_68K_cfm68kcodegen0 MWProject_68K_stacksize0 MWProject_68K_thedebugger0 MWProject_68K_rsrc_custom0 MWProject_68K_is_rseg_app0 MWProject_68K_is_pilot_lib0 MWProject_68K_pilot_main_entry MWFrontEnd_C_cplusplus0 MWFrontEnd_C_checkprotos1 MWFrontEnd_C_arm0 MWFrontEnd_C_trigraphs1 MWFrontEnd_C_onlystdkeywords0 MWFrontEnd_C_enumsalwaysint0 MWFrontEnd_C_mpwpointerstyle0 MWFrontEnd_C_prefixnameUnZp.h MWFrontEnd_C_ansistrict1 MWFrontEnd_C_mpwcnewline0 MWFrontEnd_C_wchar_type1 MWFrontEnd_C_enableexceptions0 MWFrontEnd_C_dontreusestrings0 MWFrontEnd_C_poolstrings0 MWFrontEnd_C_dontinline0 MWFrontEnd_C_useRTTI0 MWFrontEnd_C_multibyteaware0 MWFrontEnd_C_unsignedchars0 MWFrontEnd_C_autoinline0 MWFrontEnd_C_booltruefalse1 MWFrontEnd_C_direct_to_som0 MWFrontEnd_C_som_env_check0 MWFrontEnd_C_alwaysinline0 MWFrontEnd_C_inlinelevel0 MWFrontEnd_C_ecplusplus0 MWFrontEnd_C_objective_c0 MWFrontEnd_C_defer_codegen0 MWWarning_C_warn_illpragma0 MWWarning_C_warn_emptydecl0 MWWarning_C_warn_possunwant0 MWWarning_C_warn_unusedvar0 MWWarning_C_warn_unusedarg0 MWWarning_C_warn_extracomma0 MWWarning_C_pedantic0 MWWarning_C_warningerrors0 MWWarning_C_warn_hidevirtual0 MWWarning_C_warn_implicitconv0 MWWarning_C_warn_notinlined0 MWWarning_C_warn_structclass0 MWCFM68K_exportsNone MWCFM68K_olddefversion0 MWCFM68K_oldimpversion0 MWCFM68K_currentversion0 MWCFM68K_farthreshold256 PCFM68K_sharedata0 MWCFM68K_fragmentname MWCFM68K_initname MWCFM68K_mainname__start MWCFM68K_termname MWCFM68K_libfolder0 MWCFM68K_alignmentAlign_2 MWFTP_Post_hostName MWFTP_Post_username MWFTP_Post_password MWFTP_Post_remoteDir MWFTP_Post_uploadDir MWFTP_Post_ftp_port21 MWFTP_Post_SendBin1 MWFTP_Post_ShouldLog1 MWCommandLine_Java_clsName MWCommandLine_Java_args MWJava_Language_optimize0 MWJava_Language_warnDeprecated0 MWJava_Language_emitMap0 MWJava_Language_strictFileNames0 MWJava_Language_strictFileHierarchy0 MWJava_Language_emitHeadersNoNativeHeaders MWJava_Language_packageFilter MWJava_Language_genComments1 MWJava_Language_genHeaders0 MWJava_MacOS_typeJBindery MWJava_MacOS_grow0 MWJava_MacOS_profile0 MWJava_MacOS_verify0 MWJava_MacOS_useHttpProxy0 MWJava_MacOS_useFTPProxy0 MWJava_MacOS_useFirewallProxy0 MWJava_MacOS_outfileJBoundApp MWJava_MacOS_outcreator1061109567 MWJava_MacOS_maxMem1048576 MWJava_MacOS_minMem524288 MWJava_MacOS_red65535 MWJava_MacOS_green65535 MWJava_MacOS_blue65535 MWJava_MacOS_stdoutType1464421956 MWJava_MacOS_stdinType1853189228 MWJava_MacOS_httpProxyPort0 MWJava_MacOS_fTPProxyPort0 MWJava_MacOS_firewallProxyPort0 MWJava_MacOS_httpProxy MWJava_MacOS_fTPProxy MWJava_MacOS_firewallProxy MWJava_MacOS_merge0 MWJava_MacOS_write_old_rsrcs1 MWJava_MacOS_jbindrundebug0 MWJava_MacOS_stdoutfile MWJava_MacOS_stdinfile MWJava_Output_outputtypeJarFile MWJava_Output_outfileJavaClasses.jar MWJava_Output_ftype1514754080 MWJava_Output_fcreator1297570384 MWJava_Output_compress0 MWJava_Output_genManifest0 MWJava_Output_trunctypeFront MWJava_Output_deleteClasses0 MWJava_Output_consoleApp1 MWJava_Proj_projtypeApplet MWJava_Proj_runtimeArgs MWJava_Proj_mainClassName MWJava_Proj_HTMLAppCreator1297303877 MWJava_Proj_HTMLAppNameInternet Explorer MWJava_Proj_HTMLAppWin32NameIexplore.exe MWJava_Proj_compress0 MWJava_Proj_useVM1 MWJava_Proj_workingDir MWJava_Proj_vmarguments MWJava_Proj_vmName MWJavaDoc_Proj_Version1 MWJavaDoc_Proj_Depricated0 MWJavaDoc_Proj_Author1 MWJavaDoc_Proj_Index1 MWJavaDoc_Proj_Tree1 MWJavaDoc_Proj_SunResolveToSame1 MWJavaDoc_Proj_Shortnames1 MWJavaDoc_Proj_Folder0 MWJavaDoc_Proj_GenerateAPILinks0 MWJavaDoc_Proj_scopePublic MWJavaDoc_Proj_fcreator1297303877 MWJavaDoc_Proj_encodingName MWJavaDoc_Proj_decodingName MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ MWMerge_MacOS_projectTypeApplication MWMerge_MacOS_outputNameMerge Out MWMerge_MacOS_outputCreator1061109567 MWMerge_MacOS_outputType1095782476 MWMerge_MacOS_suppressWarning0 MWMerge_MacOS_copyFragments1 MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources ‰aˆ MWCodeGen_PPC_structalignmentPPC MWCodeGen_PPC_tracebacktablesInline MWCodeGen_PPC_processorGeneric MWCodeGen_PPC_readonlystrings0 MWCodeGen_PPC_tocdata1 MWCodeGen_PPC_profiler0 MWCodeGen_PPC_fpcontract1 MWCodeGen_PPC_schedule0 MWCodeGen_PPC_peephole0 MWCodeGen_PPC_processorspecific0 MWCodeGen_PPC_altivec0 MWCodeGen_PPC_vectortocdata0 MWCodeGen_PPC_vrsave0 MWDisassembler_PPC_showcode1 MWDisassembler_PPC_extended1 MWDisassembler_PPC_mix0 MWDisassembler_PPC_nohex0 MWDisassembler_PPC_showdata1 MWDisassembler_PPC_showexceptions1 MWDisassembler_PPC_showsym0 MWDisassembler_PPC_shownames1 GlobalOptimizer_PPC_optimizationlevelLevel0 GlobalOptimizer_PPC_optforSpeed MWLinker_PPC_linksym0 MWLinker_PPC_symfullpath1 MWLinker_PPC_linkmap0 MWLinker_PPC_nolinkwarnings0 MWLinker_PPC_dontdeadstripinitcode0 MWLinker_PPC_permitmultdefs1 MWLinker_PPC_linkmodeFast MWLinker_PPC_initname MWLinker_PPC_mainname__start MWLinker_PPC_termname MWPEF_exportsNone MWPEF_libfolder0 MWPEF_sortcodeNone MWPEF_expandbss0 MWPEF_sharedata0 MWPEF_olddefversion0 MWPEF_oldimpversion0 MWPEF_currentversion0 MWPEF_fragmentname MWPEF_collapsereloads0 MWProject_PPC_typeApplication MWProject_PPC_outfileUnzip (PPC) MWProject_PPC_filecreator1230662000 MWProject_PPC_filetype1095782476 MWProject_PPC_size2048 MWProject_PPC_minsize1024 MWProject_PPC_stacksize512 MWProject_PPC_flags22720 MWProject_PPC_symfilename MWProject_PPC_rsrcname MWProject_PPC_rsrcheaderNative MWProject_PPC_rsrctype1061109567 MWProject_PPC_rsrcid0 MWProject_PPC_rsrcflags0 MWProject_PPC_rsrcstore0 MWProject_PPC_rsrcmerge0 MWAssembler_PPC_auxheader0 MWAssembler_PPC_symmodeMac MWAssembler_PPC_dialectPPC MWAssembler_PPC_prefixfile MWAssembler_PPC_typecheck0 MWAssembler_PPC_warnings0 MWAssembler_PPC_casesensitive0 MWRez_Language_maxwidth80 MWRez_Language_scriptRoman MWRez_Language_alignmentAlign1 MWRez_Language_filtermodeFilterSkip MWRez_Language_suppresswarnings0 MWRez_Language_escapecontrolchars1 MWRez_Language_prefixname MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' Name MSL C.PPC.Lib MacOS Library Name MSL C++.PPC.Lib MacOS Library Name InterfaceLib MacOS Library Name MathLib MacOS Library Name MSL RuntimePPC.Lib MacOS Library Name MSL SIOUX.PPC.Lib MacOS Library Debug Name inflate.h MacOS Text Name globals.h MacOS Text Name unzip.h MacOS Text Name unzip.c MacOS Text Name explode.c MacOS Text Name extract.c MacOS Text Name fileio.c MacOS Text Name list.c MacOS Text Name globals.c MacOS Text Name match.c MacOS Text Name zipinfo.c MacOS Text Name inflate.c MacOS Text Name process.c MacOS Text Name unshrink.c MacOS Text Name unreduce.c MacOS Text Name unzpriv.h MacOS Text Name macdir.c MacOS Text Name crc32.c MacOS Text Name crctab.c MacOS Text Name crypt.c MacOS Text Name ttyio.c MacOS Text Name helpers.c MacOS Text Name helpers.h MacOS Text Name macstuff.h MacOS Text Name pathname.c MacOS Text Name pathname.h MacOS Text Name maccfg.h MacOS Text Name macscreen.c MacOS Text Name macunzip.c MacOS Text Name sxunzip.c MacOS Text Name envargs.c MacOS Text Name UnZp.h MacOS Text Name mactime.c MacOS Text Name macstat.c MacOS Text Name macstat.h MacOS Text Name unzip.rc MacOS Resource Name charmap.h MacOS Text Name FSp_fopen.c MacOS Text Name getenv.c MacOS Text Name macos.c MacOS Text Name macbin3.h MacOS Text Name macbin3.c MacOS Text Name console.stubs.c MacOS Text Name DirectoryCopy.h MacOS Text Name FileCopy.h MacOS Text Name FSpCompat.h MacOS Text Name FullPath.h MacOS Text Name IterateDirectory.h MacOS Text Name MoreDesktopMgr.h MacOS Text Name MoreFiles.h MacOS Text Name MoreFilesExtras.h MacOS Text Name Optimization.h MacOS Text Name OptimizationEnd.h MacOS Text Name Search.h MacOS Text Name inflate.h MacOS Name globals.h MacOS Name unzip.h MacOS Name unzip.c MacOS Name explode.c MacOS Name extract.c MacOS Name fileio.c MacOS Name list.c MacOS Name globals.c MacOS Name match.c MacOS Name zipinfo.c MacOS Name inflate.c MacOS Name process.c MacOS Name unshrink.c MacOS Name unreduce.c MacOS Name unzpriv.h MacOS Name macdir.c MacOS Name crc32.c MacOS Name crctab.c MacOS Name crypt.c MacOS Name ttyio.c MacOS Name helpers.c MacOS Name helpers.h MacOS Name macstuff.h MacOS Name pathname.c MacOS Name pathname.h MacOS Name maccfg.h MacOS Name macscreen.c MacOS Name macunzip.c MacOS Name sxunzip.c MacOS Name envargs.c MacOS Name UnZp.h MacOS Name mactime.c MacOS Name macstat.c MacOS Name macstat.h MacOS Name charmap.h MacOS Name FSp_fopen.c MacOS Name getenv.c MacOS Name unzip.rc MacOS Name MSL C.PPC.Lib MacOS Name MSL C++.PPC.Lib MacOS Name InterfaceLib MacOS Name MathLib MacOS Name MSL RuntimePPC.Lib MacOS Name MSL SIOUX.PPC.Lib MacOS Name macos.c MacOS Name macbin3.h MacOS Name macbin3.c MacOS Name console.stubs.c MacOS Name DirectoryCopy.h MacOS Name FileCopy.h MacOS Name FSpCompat.h MacOS Name FullPath.h MacOS Name IterateDirectory.h MacOS Name MoreDesktopMgr.h MacOS Name MoreFiles.h MacOS Name MoreFilesExtras.h MacOS Name Optimization.h MacOS Name OptimizationEnd.h MacOS Name Search.h MacOS Unzip (68k) UserSourceTrees CustomColor1 Red0 Green32767 Blue0 CustomColor2 Red0 Green32767 Blue0 CustomColor3 Red0 Green32767 Blue0 CustomColor4 Red0 Green32767 Blue0 AlwaysSearchUserPathsfalse InterpretDOSAndUnixPathsfalse UserSearchPaths SearchPath Path: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::izshr:macos: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:CHeaders: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:PascalInterfaces: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:Sources: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SystemSearchPaths SearchPath Path:MSL: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path:MacOS Support: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll LinkerMacOS 68K Linker PreLinker PostLinker TargetnameUnzip (68k) OutputDirectory Path: PathFormatMacOS PathRootProject SaveEntriesUsingRelativePathsfalse FileMappings FileTypeAPPL FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeAppl FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeMMLB FileExtension CompilerLib Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMPLF FileExtension CompilerLib Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMWCD FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeOBJ FileExtension CompilerMPW Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeRSRC FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeTEXT FileExtension.bh CompilerBalloon Help Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c++ CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cc CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cp CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cpp CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.exp Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.h CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMaketrue FileTypeTEXT FileExtension.p CompilerMW Pascal 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pas CompilerMW Pascal 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch CompilerMW C/C++ 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch++ CompilerMW C/C++ 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.ppu CompilerMW Pascal 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.r CompilerRez Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.seg Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypedocu FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypersrc FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeshlb FileExtension CompilerPEF Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypestub FileExtension CompilerPEF Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileExtension.doc Compiler Precompilefalse Launchabletrue ResourceFilefalse IgnoredByMaketrue CacheModDatestrue ActivateBrowsertrue DumpBrowserInfofalse CacheSubprojectstrue UseThirdPartyDebuggerfalse DebuggerCommandLine Debugger Runtime 0002000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 LogSystemMessagestrue AutoTargetDLLsfalse StopAtWatchpointstrue PauseWhileRunningfalse PauseInterval5 PauseUIFlags0 AltExePath Path PathFormatGeneric PathRootAbsolute StopAtTempBPOnLaunchtrue CacheSymbolicstrue TempBPFunctionNamemain TempBPTypefalse MWCodeGen_68K_codesizeLarge MWCodeGen_68K_structalignmentMC68K MWCodeGen_68K_fp_modeSANE MWCodeGen_68K_code680200 MWCodeGen_68K_profiler0 MWCodeGen_68K_mpwc0 MWCodeGen_68K_fourbyteints1 MWCodeGen_68K_IEEEdoubles1 MWCodeGen_68K_fardata1 MWCodeGen_68K_farvtables1 MWCodeGen_68K_farstrings1 MWCodeGen_68K_pcrelstrings0 MWCodeGen_68K_macsbugNew MWCodeGen_68K_a6frames1 MWDisassembler_68K_showcode1 MWDisassembler_68K_mix0 MWDisassembler_68K_nohex0 MWDisassembler_68K_showdata1 MWDisassembler_68K_showexceptions1 MWDisassembler_68K_showsym0 MWDisassembler_68K_shownames1 GlobalOptimizer_68K_optimizationlevelLevel4 GlobalOptimizer_68K_optforSpeed MWLinker_68K_linksym0 MWLinker_68K_symfullpath1 MWLinker_68K_linksingle0 MWLinker_68K_fastlink1 MWLinker_68K_generateMap0 MWLinker_68K_nolinkwarnings0 MWLinker_68K_glueintosegone1 MWLinker_68K_dontdeadstripinitcode0 MWProject_68K_typeApplication MWProject_68K_outfileUnzip (68k) MWProject_68K_symfilename MWProject_68K_filecreator1061109567 MWProject_68K_filetype1095782476 MWProject_68K_size384 MWProject_68K_flags22720 MWProject_68K_rsrcheaderStandard MWProject_68K_rsrcname MWProject_68K_rsrctype1061109567 MWProject_68K_rsrcid0 MWProject_68K_rsrcmulti0 MWProject_68K_rsrcstore0 MWProject_68K_rsrcmerge0 MWProject_68K_rsrcflags0 MWProject_68K_a40 MWProject_68K_minsize384 MWProject_68K_rsrcsegtype0 MWProject_68K_cfm68kcodegen0 MWProject_68K_stacksize0 MWProject_68K_thedebugger0 MWProject_68K_rsrc_custom0 MWProject_68K_is_rseg_app0 MWProject_68K_is_pilot_lib0 MWProject_68K_pilot_main_entry MWFrontEnd_C_cplusplus0 MWFrontEnd_C_checkprotos1 MWFrontEnd_C_arm0 MWFrontEnd_C_trigraphs1 MWFrontEnd_C_onlystdkeywords0 MWFrontEnd_C_enumsalwaysint0 MWFrontEnd_C_mpwpointerstyle0 MWFrontEnd_C_prefixnameUnZp.h MWFrontEnd_C_ansistrict1 MWFrontEnd_C_mpwcnewline0 MWFrontEnd_C_wchar_type1 MWFrontEnd_C_enableexceptions0 MWFrontEnd_C_dontreusestrings0 MWFrontEnd_C_poolstrings0 MWFrontEnd_C_dontinline0 MWFrontEnd_C_useRTTI0 MWFrontEnd_C_multibyteaware0 MWFrontEnd_C_unsignedchars0 MWFrontEnd_C_autoinline0 MWFrontEnd_C_booltruefalse1 MWFrontEnd_C_direct_to_som0 MWFrontEnd_C_som_env_check0 MWFrontEnd_C_alwaysinline0 MWFrontEnd_C_inlinelevel0 MWFrontEnd_C_ecplusplus0 MWFrontEnd_C_objective_c0 MWFrontEnd_C_defer_codegen0 MWWarning_C_warn_illpragma0 MWWarning_C_warn_emptydecl0 MWWarning_C_warn_possunwant0 MWWarning_C_warn_unusedvar0 MWWarning_C_warn_unusedarg0 MWWarning_C_warn_extracomma0 MWWarning_C_pedantic0 MWWarning_C_warningerrors0 MWWarning_C_warn_hidevirtual0 MWWarning_C_warn_implicitconv0 MWWarning_C_warn_notinlined0 MWWarning_C_warn_structclass0 MWCFM68K_exportsNone MWCFM68K_olddefversion0 MWCFM68K_oldimpversion0 MWCFM68K_currentversion0 MWCFM68K_farthreshold256 PCFM68K_sharedata0 MWCFM68K_fragmentname MWCFM68K_initname MWCFM68K_mainname__start MWCFM68K_termname MWCFM68K_libfolder0 MWCFM68K_alignmentAlign_2 MWFTP_Post_hostName MWFTP_Post_username MWFTP_Post_password MWFTP_Post_remoteDir MWFTP_Post_uploadDir MWFTP_Post_ftp_port21 MWFTP_Post_SendBin1 MWFTP_Post_ShouldLog1 MWCommandLine_Java_clsName MWCommandLine_Java_args MWJava_Language_optimize0 MWJava_Language_warnDeprecated0 MWJava_Language_emitMap0 MWJava_Language_strictFileNames0 MWJava_Language_strictFileHierarchy0 MWJava_Language_emitHeadersNoNativeHeaders MWJava_Language_packageFilter MWJava_Language_genComments1 MWJava_Language_genHeaders0 MWJava_MacOS_typeJBindery MWJava_MacOS_grow0 MWJava_MacOS_profile0 MWJava_MacOS_verify0 MWJava_MacOS_useHttpProxy0 MWJava_MacOS_useFTPProxy0 MWJava_MacOS_useFirewallProxy0 MWJava_MacOS_outfileJBoundApp MWJava_MacOS_outcreator1061109567 MWJava_MacOS_maxMem1048576 MWJava_MacOS_minMem524288 MWJava_MacOS_red65535 MWJava_MacOS_green65535 MWJava_MacOS_blue65535 MWJava_MacOS_stdoutType1464421956 MWJava_MacOS_stdinType1853189228 MWJava_MacOS_httpProxyPort0 MWJava_MacOS_fTPProxyPort0 MWJava_MacOS_firewallProxyPort0 MWJava_MacOS_httpProxy MWJava_MacOS_fTPProxy MWJava_MacOS_firewallProxy MWJava_MacOS_merge0 MWJava_MacOS_write_old_rsrcs1 MWJava_MacOS_jbindrundebug0 MWJava_MacOS_stdoutfile MWJava_MacOS_stdinfile MWJava_Output_outputtypeJarFile MWJava_Output_outfileJavaClasses.jar MWJava_Output_ftype1514754080 MWJava_Output_fcreator1297570384 MWJava_Output_compress0 MWJava_Output_genManifest0 MWJava_Output_trunctypeFront MWJava_Output_deleteClasses0 MWJava_Output_consoleApp1 MWJava_Proj_projtypeApplet MWJava_Proj_runtimeArgs MWJava_Proj_mainClassName MWJava_Proj_HTMLAppCreator1297303877 MWJava_Proj_HTMLAppNameInternet Explorer MWJava_Proj_HTMLAppWin32NameIexplore.exe MWJava_Proj_compress0 MWJava_Proj_useVM1 MWJava_Proj_workingDir MWJava_Proj_vmarguments MWJava_Proj_vmName MWJavaDoc_Proj_Version1 MWJavaDoc_Proj_Depricated0 MWJavaDoc_Proj_Author1 MWJavaDoc_Proj_Index1 MWJavaDoc_Proj_Tree1 MWJavaDoc_Proj_SunResolveToSame1 MWJavaDoc_Proj_Shortnames1 MWJavaDoc_Proj_Folder0 MWJavaDoc_Proj_GenerateAPILinks0 MWJavaDoc_Proj_scopePublic MWJavaDoc_Proj_fcreator1297303877 MWJavaDoc_Proj_encodingName MWJavaDoc_Proj_decodingName MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ MWMerge_MacOS_projectTypeApplication MWMerge_MacOS_outputNameMerge Out MWMerge_MacOS_outputCreator1061109567 MWMerge_MacOS_outputType1095782476 MWMerge_MacOS_suppressWarning0 MWMerge_MacOS_copyFragments1 MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources ‰aˆ MWCodeGen_PPC_structalignmentPPC MWCodeGen_PPC_tracebacktablesInline MWCodeGen_PPC_processorGeneric MWCodeGen_PPC_readonlystrings0 MWCodeGen_PPC_tocdata1 MWCodeGen_PPC_profiler0 MWCodeGen_PPC_fpcontract1 MWCodeGen_PPC_schedule0 MWCodeGen_PPC_peephole0 MWCodeGen_PPC_processorspecific0 MWCodeGen_PPC_altivec0 MWCodeGen_PPC_vectortocdata0 MWCodeGen_PPC_vrsave0 MWDisassembler_PPC_showcode1 MWDisassembler_PPC_extended1 MWDisassembler_PPC_mix0 MWDisassembler_PPC_nohex0 MWDisassembler_PPC_showdata1 MWDisassembler_PPC_showexceptions1 MWDisassembler_PPC_showsym0 MWDisassembler_PPC_shownames1 GlobalOptimizer_PPC_optimizationlevelLevel0 GlobalOptimizer_PPC_optforSpeed MWLinker_PPC_linksym0 MWLinker_PPC_symfullpath1 MWLinker_PPC_linkmap0 MWLinker_PPC_nolinkwarnings0 MWLinker_PPC_dontdeadstripinitcode0 MWLinker_PPC_permitmultdefs1 MWLinker_PPC_linkmodeFast MWLinker_PPC_initname MWLinker_PPC_mainname__start MWLinker_PPC_termname MWPEF_exportsNone MWPEF_libfolder0 MWPEF_sortcodeNone MWPEF_expandbss0 MWPEF_sharedata0 MWPEF_olddefversion0 MWPEF_oldimpversion0 MWPEF_currentversion0 MWPEF_fragmentname MWPEF_collapsereloads0 MWProject_PPC_typeApplication MWProject_PPC_outfileUnzip (PPC) MWProject_PPC_filecreator1230662000 MWProject_PPC_filetype1095782476 MWProject_PPC_size2048 MWProject_PPC_minsize1024 MWProject_PPC_stacksize512 MWProject_PPC_flags22720 MWProject_PPC_symfilename MWProject_PPC_rsrcname MWProject_PPC_rsrcheaderNative MWProject_PPC_rsrctype1061109567 MWProject_PPC_rsrcid0 MWProject_PPC_rsrcflags0 MWProject_PPC_rsrcstore0 MWProject_PPC_rsrcmerge0 MWAssembler_PPC_auxheader0 MWAssembler_PPC_symmodeMac MWAssembler_PPC_dialectPPC MWAssembler_PPC_prefixfile MWAssembler_PPC_typecheck0 MWAssembler_PPC_warnings0 MWAssembler_PPC_casesensitive0 MWRez_Language_maxwidth80 MWRez_Language_scriptRoman MWRez_Language_alignmentAlign1 MWRez_Language_filtermodeFilterSkip MWRez_Language_suppresswarnings0 MWRez_Language_escapecontrolchars1 MWRez_Language_prefixname MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' Name inflate.h MacOS Text Name globals.h MacOS Text Name unzip.h MacOS Text Name unzip.c MacOS Text Name envargs.c MacOS Text Name explode.c MacOS Text Name extract.c MacOS Text Name fileio.c MacOS Text Name list.c MacOS Text Name globals.c MacOS Text Name match.c MacOS Text Name zipinfo.c MacOS Text Name inflate.c MacOS Text Name process.c MacOS Text Name unshrink.c MacOS Text Name unreduce.c MacOS Text Name unzpriv.h MacOS Text Name macdir.c MacOS Text Name crc32.c MacOS Text Name crctab.c MacOS Text Name crypt.c MacOS Text Name ttyio.c MacOS Text Name helpers.c MacOS Text Name helpers.h MacOS Text Name macstuff.h MacOS Text Name pathname.c MacOS Text Name pathname.h MacOS Text Name maccfg.h MacOS Text Name macscreen.c MacOS Text Name macunzip.c MacOS Text Name sxunzip.c MacOS Text Name UnZp.h MacOS Text Name mactime.c MacOS Text Name macstat.c MacOS Text Name macstat.h MacOS Text Name unzip.rc MacOS Resource Name charmap.h MacOS Text Name FSp_fopen.c MacOS Text Name getenv.c MacOS Text Name macos.c MacOS Text Name macbin3.h MacOS Text Name macbin3.c MacOS Text Name console.stubs.c MacOS Text Name MSL Runtime68K.Lib MacOS Library Name MacOS.lib MacOS Library Name MathLib68K (2i).Lib MacOS Library Name DirectoryCopy.h MacOS Text Name FileCopy.h MacOS Text Name FSpCompat.h MacOS Text Name FullPath.h MacOS Text Name IterateDirectory.h MacOS Text Name MoreDesktopMgr.h MacOS Text Name MoreFiles.h MacOS Text Name MoreFilesExtras.h MacOS Text Name Optimization.h MacOS Text Name OptimizationEnd.h MacOS Text Name Search.h MacOS Text First Segment Preloaded, Protected, Locked Name inflate.h MacOS Name globals.h MacOS Name unzip.h MacOS Name unzip.c MacOS Name envargs.c MacOS Name explode.c MacOS Name extract.c MacOS Name fileio.c MacOS Name list.c MacOS Name globals.c MacOS Name match.c MacOS Name zipinfo.c MacOS Name inflate.c MacOS Name process.c MacOS Name unshrink.c MacOS Name unreduce.c MacOS Name unzpriv.h MacOS Name macdir.c MacOS Name crc32.c MacOS Name crctab.c MacOS Name crypt.c MacOS Name ttyio.c MacOS Name helpers.c MacOS Name helpers.h MacOS Name macstuff.h MacOS Name pathname.c MacOS Name pathname.h MacOS Name maccfg.h MacOS Name macscreen.c MacOS Name macunzip.c MacOS Name sxunzip.c MacOS Name UnZp.h MacOS Name mactime.c MacOS Name macstat.c MacOS Name macstat.h MacOS Name charmap.h MacOS Name FSp_fopen.c MacOS Name getenv.c MacOS Name unzip.rc MacOS Name macos.c MacOS Name macbin3.h MacOS Name macbin3.c MacOS Name console.stubs.c MacOS Name MSL Runtime68K.Lib MacOS Name MacOS.lib MacOS Name MathLib68K (2i).Lib MacOS Name DirectoryCopy.h MacOS Name FileCopy.h MacOS Name FSpCompat.h MacOS Name FullPath.h MacOS Name IterateDirectory.h MacOS Name MoreDesktopMgr.h MacOS Name MoreFiles.h MacOS Name MoreFilesExtras.h MacOS Name Optimization.h MacOS Name OptimizationEnd.h MacOS Name Search.h MacOS Unzip Lib (CFM68k) UserSourceTrees CustomColor1 Red0 Green32767 Blue0 CustomColor2 Red0 Green32767 Blue0 CustomColor3 Red0 Green32767 Blue0 CustomColor4 Red0 Green32767 Blue0 AlwaysSearchUserPathsfalse InterpretDOSAndUnixPathsfalse UserSearchPaths SearchPath Path: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::izshr:macos: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:CHeaders: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:PascalInterfaces: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SearchPath Path:::MoreFiles:Sources: PathFormatMacOS PathRootProject Recursivetrue HostFlagsAll SystemSearchPaths SearchPath Path:MSL: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path:MacOS Support: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll SearchPath Path: PathFormatMacOS PathRootCodeWarrior Recursivetrue HostFlagsAll LinkerMacOS 68K Linker PreLinker PostLinker TargetnameUnzip Lib (CFM68k) OutputDirectory Path: PathFormatMacOS PathRootProject SaveEntriesUsingRelativePathsfalse FileMappings FileTypeAPPL FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeAppl FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeMMLB FileExtension CompilerLib Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMPLF FileExtension CompilerLib Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeMWCD FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeOBJ FileExtension CompilerMPW Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeRSRC FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeTEXT FileExtension.bh CompilerBalloon Help Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.c++ CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cc CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cp CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.cpp CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.exp Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.h CompilerMW C/C++ 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMaketrue FileTypeTEXT FileExtension.p CompilerMW Pascal 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pas CompilerMW Pascal 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch CompilerMW C/C++ 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.pch++ CompilerMW C/C++ 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.ppu CompilerMW Pascal 68K Precompiletrue Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.r CompilerRez Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypeTEXT FileExtension.seg Compiler Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypedocu FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypersrc FileExtension Compiler Precompilefalse Launchabletrue ResourceFiletrue IgnoredByMakefalse FileTypeshlb FileExtension CompilerPEF Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileTypestub FileExtension CompilerPEF Import 68K Precompilefalse Launchablefalse ResourceFilefalse IgnoredByMakefalse FileExtension.doc Compiler Precompilefalse Launchabletrue ResourceFilefalse IgnoredByMaketrue CacheModDatestrue ActivateBrowsertrue DumpBrowserInfofalse CacheSubprojectstrue UseThirdPartyDebuggerfalse DebuggerCommandLine Debugger Runtime 0002000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 LogSystemMessagestrue AutoTargetDLLsfalse StopAtWatchpointstrue PauseWhileRunningfalse PauseInterval5 PauseUIFlags0 AltExePath Path PathFormatGeneric PathRootAbsolute StopAtTempBPOnLaunchtrue CacheSymbolicstrue TempBPFunctionNamemain TempBPTypefalse MWCodeGen_68K_codesizeLarge MWCodeGen_68K_structalignmentMC68K MWCodeGen_68K_fp_modeSANE MWCodeGen_68K_code680200 MWCodeGen_68K_profiler0 MWCodeGen_68K_mpwc0 MWCodeGen_68K_fourbyteints1 MWCodeGen_68K_IEEEdoubles1 MWCodeGen_68K_fardata1 MWCodeGen_68K_farvtables1 MWCodeGen_68K_farstrings1 MWCodeGen_68K_pcrelstrings0 MWCodeGen_68K_macsbugNew MWCodeGen_68K_a6frames1 MWDisassembler_68K_showcode1 MWDisassembler_68K_mix0 MWDisassembler_68K_nohex0 MWDisassembler_68K_showdata1 MWDisassembler_68K_showexceptions1 MWDisassembler_68K_showsym0 MWDisassembler_68K_shownames1 GlobalOptimizer_68K_optimizationlevelLevel4 GlobalOptimizer_68K_optforSpeed MWLinker_68K_linksym0 MWLinker_68K_symfullpath1 MWLinker_68K_linksingle0 MWLinker_68K_fastlink1 MWLinker_68K_generateMap0 MWLinker_68K_nolinkwarnings0 MWLinker_68K_glueintosegone1 MWLinker_68K_dontdeadstripinitcode0 MWProject_68K_typeLibrary MWProject_68K_outfileUnzip Lib (CFM68k) MWProject_68K_symfilename MWProject_68K_filecreator1061109567 MWProject_68K_filetype1061109567 MWProject_68K_size0 MWProject_68K_flags0 MWProject_68K_rsrcheaderStandard MWProject_68K_rsrcname MWProject_68K_rsrctype1061109567 MWProject_68K_rsrcid0 MWProject_68K_rsrcmulti0 MWProject_68K_rsrcstore0 MWProject_68K_rsrcmerge0 MWProject_68K_rsrcflags0 MWProject_68K_a40 MWProject_68K_minsize0 MWProject_68K_rsrcsegtype0 MWProject_68K_cfm68kcodegen1 MWProject_68K_stacksize0 MWProject_68K_thedebugger0 MWProject_68K_rsrc_custom0 MWProject_68K_is_rseg_app0 MWProject_68K_is_pilot_lib0 MWProject_68K_pilot_main_entry MWFrontEnd_C_cplusplus0 MWFrontEnd_C_checkprotos1 MWFrontEnd_C_arm0 MWFrontEnd_C_trigraphs1 MWFrontEnd_C_onlystdkeywords0 MWFrontEnd_C_enumsalwaysint0 MWFrontEnd_C_mpwpointerstyle0 MWFrontEnd_C_prefixnameUnZpLib.h MWFrontEnd_C_ansistrict1 MWFrontEnd_C_mpwcnewline0 MWFrontEnd_C_wchar_type1 MWFrontEnd_C_enableexceptions0 MWFrontEnd_C_dontreusestrings1 MWFrontEnd_C_poolstrings0 MWFrontEnd_C_dontinline0 MWFrontEnd_C_useRTTI0 MWFrontEnd_C_multibyteaware0 MWFrontEnd_C_unsignedchars0 MWFrontEnd_C_autoinline0 MWFrontEnd_C_booltruefalse1 MWFrontEnd_C_direct_to_som0 MWFrontEnd_C_som_env_check0 MWFrontEnd_C_alwaysinline0 MWFrontEnd_C_inlinelevel0 MWFrontEnd_C_ecplusplus0 MWFrontEnd_C_objective_c0 MWFrontEnd_C_defer_codegen0 MWWarning_C_warn_illpragma1 MWWarning_C_warn_emptydecl1 MWWarning_C_warn_possunwant1 MWWarning_C_warn_unusedvar1 MWWarning_C_warn_unusedarg1 MWWarning_C_warn_extracomma1 MWWarning_C_pedantic1 MWWarning_C_warningerrors0 MWWarning_C_warn_hidevirtual1 MWWarning_C_warn_implicitconv0 MWWarning_C_warn_notinlined0 MWWarning_C_warn_structclass0 MWCFM68K_exportsNone MWCFM68K_olddefversion0 MWCFM68K_oldimpversion0 MWCFM68K_currentversion0 MWCFM68K_farthreshold256 PCFM68K_sharedata0 MWCFM68K_fragmentname MWCFM68K_initname MWCFM68K_mainname__start MWCFM68K_termname MWCFM68K_libfolder0 MWCFM68K_alignmentAlign_2 MWFTP_Post_hostName MWFTP_Post_username MWFTP_Post_password MWFTP_Post_remoteDir MWFTP_Post_uploadDir MWFTP_Post_ftp_port21 MWFTP_Post_SendBin1 MWFTP_Post_ShouldLog1 MWCommandLine_Java_clsName MWCommandLine_Java_args MWJava_Language_optimize0 MWJava_Language_warnDeprecated0 MWJava_Language_emitMap0 MWJava_Language_strictFileNames0 MWJava_Language_strictFileHierarchy0 MWJava_Language_emitHeadersNoNativeHeaders MWJava_Language_packageFilter MWJava_Language_genComments1 MWJava_Language_genHeaders0 MWJava_MacOS_typeJBindery MWJava_MacOS_grow0 MWJava_MacOS_profile0 MWJava_MacOS_verify0 MWJava_MacOS_useHttpProxy0 MWJava_MacOS_useFTPProxy0 MWJava_MacOS_useFirewallProxy0 MWJava_MacOS_outfileJBoundApp MWJava_MacOS_outcreator1061109567 MWJava_MacOS_maxMem1048576 MWJava_MacOS_minMem524288 MWJava_MacOS_red65535 MWJava_MacOS_green65535 MWJava_MacOS_blue65535 MWJava_MacOS_stdoutType1464421956 MWJava_MacOS_stdinType1853189228 MWJava_MacOS_httpProxyPort0 MWJava_MacOS_fTPProxyPort0 MWJava_MacOS_firewallProxyPort0 MWJava_MacOS_httpProxy MWJava_MacOS_fTPProxy MWJava_MacOS_firewallProxy MWJava_MacOS_merge0 MWJava_MacOS_write_old_rsrcs1 MWJava_MacOS_jbindrundebug0 MWJava_MacOS_stdoutfile MWJava_MacOS_stdinfile MWJava_Output_outputtypeJarFile MWJava_Output_outfileJavaClasses.jar MWJava_Output_ftype1514754080 MWJava_Output_fcreator1297570384 MWJava_Output_compress0 MWJava_Output_genManifest0 MWJava_Output_trunctypeFront MWJava_Output_deleteClasses0 MWJava_Output_consoleApp1 MWJava_Proj_projtypeApplet MWJava_Proj_runtimeArgs MWJava_Proj_mainClassName MWJava_Proj_HTMLAppCreator1297303877 MWJava_Proj_HTMLAppNameInternet Explorer MWJava_Proj_HTMLAppWin32NameIexplore.exe MWJava_Proj_compress0 MWJava_Proj_useVM1 MWJava_Proj_workingDir MWJava_Proj_vmarguments MWJava_Proj_vmName MWJavaDoc_Proj_Version1 MWJavaDoc_Proj_Depricated0 MWJavaDoc_Proj_Author1 MWJavaDoc_Proj_Index1 MWJavaDoc_Proj_Tree1 MWJavaDoc_Proj_SunResolveToSame1 MWJavaDoc_Proj_Shortnames1 MWJavaDoc_Proj_Folder0 MWJavaDoc_Proj_GenerateAPILinks0 MWJavaDoc_Proj_scopePublic MWJavaDoc_Proj_fcreator1297303877 MWJavaDoc_Proj_encodingName MWJavaDoc_Proj_decodingName MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ MWMerge_MacOS_projectTypeApplication MWMerge_MacOS_outputNameMerge Out MWMerge_MacOS_outputCreator1061109567 MWMerge_MacOS_outputType1095782476 MWMerge_MacOS_suppressWarning0 MWMerge_MacOS_copyFragments1 MWMerge_MacOS_copyResources1 MWMerge_MacOS_skipResources ‰aˆ MWCodeGen_PPC_structalignmentMC68K MWCodeGen_PPC_tracebacktablesNone MWCodeGen_PPC_processorGeneric MWCodeGen_PPC_readonlystrings0 MWCodeGen_PPC_tocdata1 MWCodeGen_PPC_profiler0 MWCodeGen_PPC_fpcontract1 MWCodeGen_PPC_schedule0 MWCodeGen_PPC_peephole1 MWCodeGen_PPC_processorspecific0 MWCodeGen_PPC_altivec0 MWCodeGen_PPC_vectortocdata0 MWCodeGen_PPC_vrsave0 MWDisassembler_PPC_showcode1 MWDisassembler_PPC_extended1 MWDisassembler_PPC_mix0 MWDisassembler_PPC_nohex0 MWDisassembler_PPC_showdata1 MWDisassembler_PPC_showexceptions1 MWDisassembler_PPC_showsym0 MWDisassembler_PPC_shownames1 GlobalOptimizer_PPC_optimizationlevelLevel0 GlobalOptimizer_PPC_optforSpeed MWLinker_PPC_linksym1 MWLinker_PPC_symfullpath1 MWLinker_PPC_linkmap0 MWLinker_PPC_nolinkwarnings0 MWLinker_PPC_dontdeadstripinitcode0 MWLinker_PPC_permitmultdefs0 MWLinker_PPC_linkmodeFast MWLinker_PPC_initname MWLinker_PPC_mainname__start MWLinker_PPC_termname MWPEF_exportsNone MWPEF_libfolder0 MWPEF_sortcodeNone MWPEF_expandbss0 MWPEF_sharedata0 MWPEF_olddefversion0 MWPEF_oldimpversion0 MWPEF_currentversion0 MWPEF_fragmentname MWPEF_collapsereloads0 MWProject_PPC_typeApplication MWProject_PPC_outfilea.out MWProject_PPC_filecreator1061109567 MWProject_PPC_filetype1095782476 MWProject_PPC_size384 MWProject_PPC_minsize384 MWProject_PPC_stacksize64 MWProject_PPC_flags22720 MWProject_PPC_symfilename MWProject_PPC_rsrcname MWProject_PPC_rsrcheaderNative MWProject_PPC_rsrctype1061109567 MWProject_PPC_rsrcid0 MWProject_PPC_rsrcflags0 MWProject_PPC_rsrcstore0 MWProject_PPC_rsrcmerge0 MWAssembler_PPC_auxheader0 MWAssembler_PPC_symmodeMac MWAssembler_PPC_dialectPPC MWAssembler_PPC_prefixfile MWAssembler_PPC_typecheck0 MWAssembler_PPC_warnings0 MWAssembler_PPC_casesensitive0 MWRez_Language_maxwidth80 MWRez_Language_scriptRoman MWRez_Language_alignmentAlign1 MWRez_Language_filtermodeFilterSkip MWRez_Language_suppresswarnings0 MWRez_Language_escapecontrolchars1 MWRez_Language_prefixname MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' Name inflate.h MacOS Text Name globals.h MacOS Text Name unzip.h MacOS Text Name unzip.c MacOS Text Name explode.c MacOS Text Name extract.c MacOS Text Name fileio.c MacOS Text Name list.c MacOS Text Name globals.c MacOS Text Name match.c MacOS Text Name zipinfo.c MacOS Text Name inflate.c MacOS Text Name process.c MacOS Text Name unshrink.c MacOS Text Name unreduce.c MacOS Text Name unzpriv.h MacOS Text Name macdir.c MacOS Text Name maccfg.h MacOS Text Name sxunzip.c MacOS Text Name UnZpLib.h MacOS Text Name macstat.c MacOS Text Name macstat.h MacOS Text Name macos.c MacOS Text Name macbin3.h MacOS Text Name macbin3.c MacOS Text Name crypt.c MacOS Text Name DirectoryCopy.h MacOS Text Name FileCopy.h MacOS Text Name FSpCompat.h MacOS Text Name FullPath.h MacOS Text Name IterateDirectory.h MacOS Text Name MoreDesktopMgr.h MacOS Text Name MoreFiles.h MacOS Text Name MoreFilesExtras.h MacOS Text Name Optimization.h MacOS Text Name OptimizationEnd.h MacOS Text Name Search.h MacOS Text First Segment Protected, Locked Name inflate.h MacOS Name globals.h MacOS Name unzip.h MacOS Name unzip.c MacOS Name explode.c MacOS Name extract.c MacOS Name fileio.c MacOS Name list.c MacOS Name globals.c MacOS Name match.c MacOS Name zipinfo.c MacOS Name inflate.c MacOS Name process.c MacOS Name unshrink.c MacOS Name unreduce.c MacOS Name unzpriv.h MacOS Name macdir.c MacOS Name maccfg.h MacOS Name sxunzip.c MacOS Name UnZpLib.h MacOS Name macstat.c MacOS Name macstat.h MacOS Name macos.c MacOS Name macbin3.h MacOS Name macbin3.c MacOS Name crypt.c MacOS Name DirectoryCopy.h MacOS Name FileCopy.h MacOS Name FSpCompat.h MacOS Name FullPath.h MacOS Name IterateDirectory.h MacOS Name MoreDesktopMgr.h MacOS Name MoreFiles.h MacOS Name MoreFilesExtras.h MacOS Name Optimization.h MacOS Name OptimizationEnd.h MacOS Name Search.h MacOS Unzip Sioux (68k) Unzip Sioux (PPC) Unzip Lib (PPC) Unzip Lib (68k) Unzip (PPC) Unzip (68k) Unzip Lib (CFM68k) Sources Unzip (PPC) Name UnZp.h MacOS Unzip Lib (PPC) Name UnZpLib.h MacOS Unzip Sioux (68k) Name UnZpSx.h MacOS Mac-Specific include Unzip Sioux (68k) Name maccfg.h MacOS Unzip Sioux (68k) Name macstat.h MacOS Unzip Sioux (68k) Name macbin3.h MacOS source Unzip Sioux (68k) Name macos.c MacOS Unzip Sioux (68k) Name macbin3.c MacOS Unzip Sioux (68k) Name macdir.c MacOS Unzip Sioux (68k) Name macstat.c MacOS Unzip (PPC) Name macunzip.c MacOS Unzip Sioux (68k) Name sxunzip.c MacOS Unzip (PPC) Name macscreen.c MacOS UnZip_H Unzip Sioux (68k) Name inflate.h MacOS Unzip Sioux (68k) Name globals.h MacOS Unzip Sioux (68k) Name unzpriv.h MacOS Unzip Sioux (68k) Name unzip.h MacOS shared code Unzip & Zip Unzip Sioux (68k) Name getenv.c MacOS Unzip Sioux (68k) Name ttyio.c MacOS Unzip Sioux (68k) Name crc32.c MacOS Unzip Sioux (68k) Name crctab.c MacOS Unzip Sioux (68k) Name crypt.c MacOS Unzip Sioux (68k) Name helpers.c MacOS Unzip Sioux (68k) Name helpers.h MacOS Unzip Sioux (68k) Name mactime.c MacOS Unzip Sioux (68k) Name macstuff.h MacOS Unzip Sioux (68k) Name pathname.c MacOS Unzip Sioux (68k) Name pathname.h MacOS Unzip Sioux (68k) Name charmap.h MacOS ObjS1 Unzip Sioux (68k) Name unzip.c MacOS Unzip Sioux (68k) Name envargs.c MacOS Unzip Sioux (68k) Name explode.c MacOS ObjS2 Unzip Sioux (68k) Name extract.c MacOS Unzip Sioux (68k) Name fileio.c MacOS Unzip Sioux (68k) Name list.c MacOS Unzip Sioux (68k) Name globals.c MacOS Unzip Sioux (68k) Name match.c MacOS Unzip Sioux (68k) Name zipinfo.c MacOS Unzip Sioux (68k) Name inflate.c MacOS ObjS3 Unzip Sioux (68k) Name process.c MacOS Unzip Sioux (68k) Name unshrink.c MacOS Unzip Sioux (68k) Name unreduce.c MacOS Mac Libraries 68k Unzip Sioux (68k) Name MSL Runtime68K.Lib MacOS Unzip Sioux (68k) Name MacOS.lib MacOS Unzip Sioux (68k) Name MathLib68K (2i).Lib MacOS PPC Unzip Sioux (PPC) Name InterfaceLib MacOS Unzip Sioux (PPC) Name MathLib MacOS Unzip Sioux (PPC) Name MSL RuntimePPC.Lib MacOS Unzip (PPC) Name console.stubs.c MacOS ANSI Libraries 68k PPC Unzip Sioux (PPC) Name MSL C.PPC.Lib MacOS Unzip Sioux (PPC) Name MSL C++.PPC.Lib MacOS Unzip Sioux (PPC) Name MSL SIOUX.PPC.Lib MacOS Unzip Sioux (68k) Name FSp_fopen.c MacOS FAT Target Files Resources Unzip Sioux (68k) Name unzip.rc MacOS MoreFiles CHeaders Unzip Sioux (68k) Name DirectoryCopy.h MacOS Unzip Sioux (68k) Name FileCopy.h MacOS Unzip Sioux (68k) Name FSpCompat.h MacOS Unzip Sioux (68k) Name FullPath.h MacOS Unzip Sioux (68k) Name IterateDirectory.h MacOS Unzip Sioux (68k) Name MoreDesktopMgr.h MacOS Unzip Sioux (68k) Name MoreFiles.h MacOS Unzip Sioux (68k) Name MoreFilesExtras.h MacOS Unzip Sioux (68k) Name Optimization.h MacOS Unzip Sioux (68k) Name OptimizationEnd.h MacOS Unzip Sioux (68k) Name Search.h MacOS \ No newline at end of file diff -Nru unzip-6.0/man/funzip.1 unzip-6.0/man/funzip.1 --- unzip-6.0/man/funzip.1 2009-04-19 22:38:10.000000000 +0000 +++ unzip-6.0/man/funzip.1 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ -.\" Copyright (c) 1990-2009 Info-ZIP. All rights reserved. +.\" Copyright (c) 1990-2005 Info-ZIP. All rights reserved. .\" -.\" See the accompanying file LICENSE, version 2009-Jan-02 or later +.\" See the accompanying file LICENSE, version 2000-Apr-09 or later .\" (the contents of which are also included in unzip.h) for terms of use. .\" If, for some reason, all these files are missing, the Info-ZIP license .\" also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -20,7 +20,7 @@ .in -4n .. .\" ========================================================================= -.TH FUNZIP 1L "20 April 2009 (v3.95)" "Info-ZIP" +.TH FUNZIP 1 "28 February 2005 (v3.94)" "Info-ZIP" .SH NAME funzip \- filter for extracting from a ZIP archive in a pipe .PD @@ -78,7 +78,7 @@ .EE .PP To use \fIzip\fP and \fIfunzip\fP in place of \fIcompress\fP(1) and -\fIzcat\fP(1) (or \fIgzip\fP(1L) and \fIgzcat\fP(1L)) for tape backups: +\fIzcat\fP(1) (or \fIgzip\fP(1) and \fIgzcat\fP(1)) for tape backups: .PP .EX tar cf \- . | zip \-7 | dd of=/dev/nrst0 obs=8k @@ -108,8 +108,8 @@ .PD .\" ========================================================================= .SH "SEE ALSO" -\fIgzip\fP(1L), \fIunzip\fP(1L), \fIunzipsfx\fP(1L), \fIzip\fP(1L), -\fIzipcloak\fP(1L), \fIzipinfo\fP(1L), \fIzipnote\fP(1L), \fIzipsplit\fP(1L) +\fIgzip\fP(1), \fIunzip\fP(1), \fIunzipsfx\fP(1), \fIzip\fP(1), +\fIzipcloak\fP(1), \fIzipinfo\fP(1), \fIzipnote\fP(1), \fIzipsplit\fP(1) .PD .\" ========================================================================= .SH URL diff -Nru unzip-6.0/man/unzip.1 unzip-6.0/man/unzip.1 --- unzip-6.0/man/unzip.1 2009-04-20 00:33:10.000000000 +0000 +++ unzip-6.0/man/unzip.1 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ -.\" Copyright (c) 1990-2009 Info-ZIP. All rights reserved. +.\" Copyright (c) 1990-2005 Info-ZIP. All rights reserved. .\" -.\" See the accompanying file LICENSE, version 2009-Jan-02 or later +.\" See the accompanying file LICENSE, version 2000-Apr-09 or later .\" (the contents of which are also included in unzip.h) for terms of use. .\" If, for some reason, all these files are missing, the Info-ZIP license .\" also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -20,12 +20,12 @@ .in -4n .. .\" ========================================================================= -.TH UNZIP 1L "20 April 2009 (v6.0)" "Info-ZIP" +.TH UNZIP 1 "28 February 2005 (v5.52)" "Info-ZIP" .SH NAME unzip \- list, test and extract compressed files in a ZIP archive .PD .SH SYNOPSIS -\fBunzip\fP [\fB\-Z\fP] [\fB\-cflptTuvz\fP[\fBabjnoqsCDKLMUVWX$/:^\fP]] +\fBunzip\fP [\fB\-Z\fP] [\fB\-cflptTuvz\fP[\fBabjnoqsCKLMVWX$/:\fP]] \fIfile\fP[\fI.zip\fP] [\fIfile(s)\fP\ .\|.\|.] [\fB\-x\fP\ \fIxfile(s)\fP\ .\|.\|.] [\fB\-d\fP\ \fIexdir\fP] .PD @@ -34,7 +34,7 @@ \fIunzip\fP will list, test, or extract files from a ZIP archive, commonly found on MS-DOS systems. The default behavior (with no options) is to extract into the current directory (and subdirectories below it) all files from the -specified ZIP archive. A companion program, \fIzip\fP(1L), creates ZIP +specified ZIP archive. A companion program, \fIzip\fP(1), creates ZIP archives; both programs are compatible with archives created by PKWARE's \fIPKZIP\fP and \fIPKUNZIP\fP for MS-DOS, but in many cases the program options or default behaviors differ. @@ -78,7 +78,7 @@ .IP [\fB\-x\fP\ \fIxfile(s)\fP] An optional list of archive members to be excluded from processing. Since wildcard characters normally match (`/') directory separators -(for exceptions see the option \fB\-W\fP), this option may be used +(for exceptions see the option \fb\-W\fp\), this option may be used to exclude any files that are in subdirectories. For example, ``\fCunzip foo *.[ch] -x */*\fR'' would extract all C source files in the main directory, but none in any subdirectories. Without the \fB\-x\fP @@ -105,8 +105,8 @@ list of all possible flags. The exhaustive list follows: .TP .B \-Z -\fIzipinfo\fP(1L) mode. If the first option on the command line is \fB\-Z\fP, -the remaining options are taken to be \fIzipinfo\fP(1L) options. See the +\fIzipinfo\fP(1) mode. If the first option on the command line is \fB\-Z\fP, +the remaining options are taken to be \fIzipinfo\fP(1) options. See the appropriate manual page for a description of these options. .TP .B \-A @@ -167,18 +167,17 @@ above for information on setting the timezone properly. .TP .B \-v -list archive files (verbose format) or show diagnostic version info. -This option has evolved and now behaves as both an option and a modifier. -As an option it has two purposes: when a zipfile is specified with no -other options, \fB\-v\fP lists archive files verbosely, adding to the -basic \fB\-l\fP info the compression method, compressed size, -compression ratio and 32-bit CRC. In contrast to most of the competing -utilities, \fIunzip\fP removes the 12 additional header bytes of -encrypted entries from the compressed size numbers. Therefore, +be verbose or print diagnostic version info. This option has evolved and +now behaves as both an option and a modifier. As an option it has two +purposes: when a zipfile is specified with no other options, \fB\-v\fP lists +archive files verbosely, adding to the basic \fB\-l\fP info the compression +method, compressed size, compression ratio and 32-bit CRC. In contrast to +most of the competing utilities, \fIunzip\fP removes the 12 additional header +bytes of encrypted entries from the compressed size numbers. Therefore, compressed size and compression ratio figures are independent of the entry's encryption status and show the correct compression performance. (The complete size of the encrypted compressed data stream for zipfile entries is reported -by the more verbose \fIzipinfo\fP(1L) reports, see the separate manual.) +by the more verbose \fIzipinfo\fP(1) reports, see the separate manual.) When no zipfile is specified (that is, the complete command is simply ``\fCunzip \-v\fR''), a diagnostic screen is printed. In addition to the normal header with release date and version, \fIunzip\fP lists the @@ -215,7 +214,6 @@ prints ``\fC[text]\fR'' or ``\fC[binary]\fR'' as a visual check for each file it extracts when using the \fB\-a\fP option. The \fB\-aa\fP option forces all files to be extracted as text, regardless of the supposed file type. -On VMS, see also \fB\-S\fP. .TP .B \-b [general] treat all files as binary (no text conversions). This is a shortcut @@ -235,30 +233,10 @@ files. .TP .B \-B -[when compiled with UNIXBACKUP defined] save a backup copy of each -overwritten file. The backup file is gets the name of the target file with -a tilde and optionally a unique sequence number (up to 5 digits) appended. -The sequence number is applied whenever another file with the original name -plus tilde already exists. When used together with the "overwrite all" -option \fB\-o\fP, numbered backup files are never created. In this case, -all backup files are named as the original file with an appended tilde, -existing backup files are deleted without notice. -This feature works similarly to the default behavior of \fIemacs\fP(1) -in many locations. -.IP -Example: the old copy of ``\fCfoo\fR'' is renamed to ``\fCfoo~\fR''. -.IP -Warning: Users should be aware that the \fB-B\fP option does not prevent -loss of existing data under all circumstances. For example, when -\fIunzip\fP is run in overwrite-all mode, an existing ``\fCfoo~\fR'' file -is deleted before \fIunzip\fP attempts to rename ``\fCfoo\fR'' to -``\fCfoo~\fR''. When this rename attempt fails (because of a file locks, -insufficient privileges, or ...), the extraction of ``\fCfoo~\fR'' gets -cancelled, but the old backup file is already lost. A similar scenario -takes place when the sequence number range for numbered backup files gets -exhausted (99999, or 65535 for 16-bit systems). In this case, the backup -file with the maximum sequence number is deleted and replaced by the new -backup version without notice. +[Unix only, and only if compiled with UNIXBACKUP defined] save a backup copy +of each overwritten file with a tilde appended (e.g., the old copy of +``\fCfoo\fR'' is renamed to ``\fCfoo~\fR''). This is similar to the default +behavior of \fIemacs\fP(1) in many locations. .TP .B \-C use case-insensitive matching for the selection of archive entries @@ -280,33 +258,11 @@ (or ``\fCmake*\fR'', or similar). The \fB\-C\fP option affects file specs in both the normal file list and the excluded-file list (xlist). .IP -Please note that the \fB\-C\fP option does neither affect the search for +Please note that the \fB\-L\fP option does neither affect the search for the zipfile(s) nor the matching of archive entries to existing files on the extraction path. On a case-sensitive file system, \fIunzip\fP will never try to overwrite a file ``FOO'' when extracting an entry ``foo''! .TP -.B \-D -skip restoration of timestamps for extracted items. Normally, \fIunzip\fP -tries to restore all meta-information for extracted items that are supplied -in the Zip archive (and do not require privileges or impose a security risk). -By specifying \fB\-D\fP, \fIunzip\fP is told to suppress restoration of -timestamps for directories explicitly created from Zip archive entries. -This option only applies to ports that support setting timestamps for -directories (currently ATheOS, BeOS, MacOS, OS/2, Unix, VMS, Win32, for other -\fIunzip\fP ports, \fB\-D\fP has no effect). -The duplicated option \fB\-DD\fP forces suppression of timestamp restoration -for all extracted entries (files and directories). This option results in -setting the timestamps for all extracted entries to the current time. -.IP -On VMS, the default setting for this option is \fB\-D\fP for consistency -with the behaviour of BACKUP: file timestamps are restored, timestamps of -extracted directories are left at the current time. To enable restoration -of directory timestamps, the negated option \fB\--D\fP should be specified. -On VMS, the option \fB\-D\fP disables timestamp restoration for all extracted -Zip archive items. (Here, a single \fB\-D\fP on the command line combines -with the default \fB\-D\fP to do what an explicit \fB\-DD\fP does on other -systems.) -.TP .B \-E [MacOS only] display contents of MacOS extra field during restore operation. .TP @@ -379,8 +335,8 @@ .TP .B \-N [Amiga] extract file comments as Amiga filenotes. File comments are created -with the \-c option of \fIzip\fP(1L), or with the \-N option of the Amiga port -of \fIzip\fP(1L), which stores filenotes as comments. +with the \-c option of \fIzip\fP(1), or with the \-N option of the Amiga port +of \fIzip\fP(1), which stores filenotes as comments. .TP .B \-o overwrite existing files without prompting. This is a dangerous option, so @@ -412,26 +368,8 @@ spaces in filenames. Conversion of spaces to underscores can eliminate the awkwardness in some cases. .TP -.B \-S -[VMS] convert text files (\fB\-a\fP, \fB\-aa\fP) into Stream_LF record format, -instead of the text-file default, variable-length record format. -(Stream_LF is the default record format of VMS \fIunzip\fP. It is applied -unless conversion (\fB\-a\fP, \fB\-aa\fP and/or \fB\-b\fP, \fB\-bb\fP) is -requested or a VMS-specific entry is processed.) -.TP .B \-U -[UNICODE_SUPPORT only] modify or disable UTF-8 handling. -When UNICODE_SUPPORT is available, the option \fB\-U\fP forces \fIunzip\fP -to escape all non-ASCII characters from UTF-8 coded filenames as ``#Uxxxx'' -(for UCS-2 characters, or ``#Lxxxxxx'' for unicode codepoints needing 3 -octets). This option is mainly provided for debugging purpose when the -fairly new UTF-8 support is suspected to mangle up extracted filenames. -.IP -The option \fB\-UU\fP allows to entirely disable the recognition of UTF-8 -encoded filenames. The handling of filename codings within \fIunzip\fP falls -back to the behaviour of previous versions. -.IP -[old, obsolete usage] leave filenames uppercase if +(obsolete; to be removed in a future release) leave filenames uppercase if created under MS-DOS, VMS, etc. See \fB\-L\fP above. .TP .B \-V @@ -467,29 +405,20 @@ would not work as expected on a wildcard zipfile specification.) .TP .B \-X -[VMS, Unix, OS/2, NT, Tandem] restore owner/protection info (UICs and ACL -entries) under VMS, or user and group info (UID/GID) under Unix, or access -control lists (ACLs) under certain network-enabled versions of OS/2 -(Warp Server with IBM LAN Server/Requester 3.0 to 5.0; Warp Connect with -IBM Peer 1.0), or security ACLs under Windows NT. In most cases this will -require special system privileges, and doubling the option (\fB\-XX\fP) -under NT instructs \fIunzip\fP to use privileges for extraction; but under -Unix, for example, a user who belongs to several groups can restore files -owned by any of those groups, as long as the user IDs match his or her own. -Note that ordinary file attributes are always restored--this option applies -only to optional, extra ownership info available on some operating systems. -[NT's access control lists do not appear to be especially compatible with -OS/2's, so no attempt is made at cross-platform portability of access -privileges. It is not clear under what conditions this would ever be -useful anyway.] -.TP -.B \-Y -[VMS] treat archived file name endings of ``.nnn'' (where ``nnn'' is a -decimal number) as if they were VMS version numbers (``;nnn''). -(The default is to treat them as file types.) Example: -.EX - "a.b.3" -> "a.b;3". -.EE +[VMS, Unix, OS/2, NT] restore owner/protection info (UICs) under VMS, or user +and group info (UID/GID) under Unix, or access control lists (ACLs) under +certain network-enabled versions of OS/2 (Warp Server with IBM LAN +Server/Requester 3.0 to 5.0; Warp Connect with IBM Peer 1.0), or security ACLs +under Windows NT. In most cases this will require special system privileges, +and doubling the option (\fB\-XX\fP) under NT instructs \fIunzip\fP to use +privileges for extraction; but under Unix, for example, a user who belongs to +several groups can restore files owned by any of those groups, as long as the +user IDs match his or her own. Note that ordinary file attributes are always +restored--this option applies only to optional, extra ownership info available +on some operating systems. [NT's access control lists do not appear to be +especially compatible with OS/2's, so no attempt is made at cross-platform +portability of access privileges. It is not clear under what conditions this +would ever be useful anyway.] .TP .B \-$ .\" Amiga support possible eventually, but not yet @@ -520,31 +449,6 @@ the root directory by specifying enough ``../'' path components within the zip archive. Use this option with extreme caution. -.TP -.B \-^ -[Unix only] allow control characters in names of extracted ZIP archive -entries. On Unix, a file name may contain any (8-bit) character code with -the two exception '/' (directory delimiter) and NUL (0x00, the C string -termination indicator), unless the specific file system has more -restrictive conventions. Generally, this allows to embed ASCII control -characters (or even sophisticated control sequences) in file names, at least -on 'native' Unix file systems. However, it may be highly suspicious to -make use of this Unix "feature". Embedded control characters in file names -might have nasty side effects when displayed on screen by some listing code -without sufficient filtering. And, for ordinary users, it may be difficult -to handle such file names (e.g. when trying to specify it for open, copy, -move, or delete operations). Therefore, \fIunzip\fP applies a filter by -default that removes potentially dangerous control characters from the -extracted file names. The \fB-^\fP option allows to override this filter -in the rare case that embedded filename control characters are to be -intentionally restored. -.TP -.B \-2 -[VMS] force unconditionally conversion of file names to ODS2-compatible -names. The default is to exploit the destination file system, preserving -case and extended file name characters on an ODS5 destination file system; -and applying the ODS2-compatibility file name filtering on an ODS2 destination -file system. .PD .\" ========================================================================= .SH "ENVIRONMENT OPTIONS" @@ -568,7 +472,7 @@ set UNZIP=\-qq .TP VMS (quotes for \fIlowercase\fP): -define UNZIP_OPTS "\-qq" +define UNZIP_OPTS ""\-qq"" .PP Environment options are, in effect, considered to be just like any other command-line options, except that they are effectively the first options @@ -598,7 +502,7 @@ As suggested by the examples above, the default variable names are UNZIP_OPTS for VMS (where the symbol used to install \fIunzip\fP as a foreign command would otherwise be confused with the environment variable), and UNZIP -for all other operating systems. For compatibility with \fIzip\fP(1L), +for all other operating systems. For compatibility with \fIzip\fP(1), UNZIPOPT is also accepted (don't ask). If both UNZIP and UNZIPOPT are defined, however, UNZIP takes precedence. \fIunzip\fP's diagnostic option (\fB\-v\fP with no zipfile name) can be used to check the values @@ -648,32 +552,25 @@ a password is not known, entering a null password (that is, just a carriage return or ``Enter'') is taken as a signal to skip all further prompting. Only unencrypted files in the archive(s) will thereafter be extracted. (In -fact, that's not quite true; older versions of \fIzip\fP(1L) and -\fIzipcloak\fP(1L) allowed null passwords, so \fIunzip\fP checks each encrypted +fact, that's not quite true; older versions of \fIzip\fP(1) and +\fIzipcloak\fP(1) allowed null passwords, so \fIunzip\fP checks each encrypted file to see if the null password works. This may result in ``false positives'' and extraction errors, as noted above.) .PP Archives encrypted with 8-bit passwords (for example, passwords with accented European characters) may not be portable across systems and/or other archivers. This problem stems from the use of multiple encoding methods for -such characters, including Latin-1 (ISO 8859-1) and OEM code page 850. -DOS \fIPKZIP\fP 2.04g uses the OEM code page; Windows \fIPKZIP\fP 2.50 -uses Latin-1 (and is therefore incompatible with DOS \fIPKZIP\fP); Info-ZIP -uses the OEM code page on DOS, OS/2 and Win3.x ports but ISO coding -(Latin-1 etc.) everywhere else; and Nico Mak's \fIWinZip\fP 6.x does not -allow 8-bit passwords at all. \fIUnZip\fP 5.3 (or newer) attempts to use -the default character set first (e.g., Latin-1), followed by the alternate -one (e.g., OEM code page) to test passwords. On EBCDIC systems, if both -of these fail, EBCDIC encoding will be tested as a last resort. (EBCDIC is -not tested on non-EBCDIC systems, because there are no known archivers -that encrypt using EBCDIC encoding.) ISO character encodings other than -Latin-1 are not supported. The new addition of (partially) Unicode (resp. -UTF-8) support in \fIUnZip\fP 6.0 has not yet been adapted to the encryption -password handling in \fIunzip\fP. On systems that use UTF-8 as native -character encoding, \fIunzip\fP simply tries decryption with the native -UTF-8 encoded password; the built-in attempts to check the password in -translated encoding have not yet been adapted for UTF-8 support and -will consequently fail. +such characters, including Latin-1 (ISO 8859-1) and OEM code page 850. DOS +\fIPKZIP\fP 2.04g uses the OEM code page; Windows \fIPKZIP\fP 2.50 uses +Latin-1 (and is therefore incompatible with DOS \fIPKZIP\fP); Info-ZIP uses +the OEM code page on DOS, OS/2 and Win3.x ports but Latin-1 everywhere +else; and Nico Mak's \fIWinZip\fP 6.x does not allow 8-bit passwords at all. +\fIUnZip\fP 5.3 (or newer) attempts to use the default character set first +(e.g., Latin-1), followed by the alternate one (e.g., OEM code page) to test +passwords. On EBCDIC systems, if both of these fail, EBCDIC encoding will +be tested as a last resort. (EBCDIC is not tested on non-EBCDIC systems, +because there are no known archivers that encrypt using EBCDIC encoding.) +ISO character encodings other than Latin-1 are not supported. .PD .\" ========================================================================= .SH EXAMPLES @@ -878,12 +775,8 @@ .SH BUGS Multi-part archives are not yet supported, except in conjunction with \fIzip\fP. (All parts must be concatenated together in order, and then -``\fCzip \-F\fR'' (for \fIzip 2.x\fP) or ``\fCzip \-FF\fR'' (for -\fIzip 3.x\fP) must be performed on the concatenated archive in order to -``fix'' it. Also, \fIzip 3.0\fP and later can combine multi-part (split) -archives into a combined single-file archive using ``\fCzip \-s\- inarchive --O outarchive\fR''. See the \fIzip 3\fP manual page for more information.) -This will definitely be corrected in the next major release. +``\fCzip \-F\fR'' must be performed on the concatenated archive in order +to ``fix'' it.) This will definitely be corrected in the next major release. .PP Archives read from standard input are not yet supported, except with \fIfunzip\fP (and then only the first member of the archive can be extracted). @@ -943,8 +836,8 @@ .PD .\" ========================================================================= .SH "SEE ALSO" -\fIfunzip\fP(1L), \fIzip\fP(1L), \fIzipcloak\fP(1L), \fIzipgrep\fP(1L), -\fIzipinfo\fP(1L), \fIzipnote\fP(1L), \fIzipsplit\fP(1L) +\fIfunzip\fP(1), \fIzip\fP(1), \fIzipcloak\fP(1), \fIzipgrep\fP(1), +\fIzipinfo\fP(1), \fIzipnote\fP(1), \fIzipsplit\fP(1) .PD .\" ========================================================================= .SH URL @@ -961,16 +854,15 @@ .SH AUTHORS The primary Info-ZIP authors (current semi-active members of the Zip-Bugs workgroup) are: Ed Gordon (Zip, general maintenance, shared code, Zip64, -Win32, Unix, Unicode); Christian Spieler (UnZip maintenance coordination, -VMS, MS-DOS, Win32, shared code, general Zip and UnZip integration and -optimization); Onno van der Linden (Zip); Mike White (Win32, Windows GUI, -Windows DLLs); Kai Uwe Rommel (OS/2, Win32); Steven M. Schweda (VMS, Unix, -support of new features); Paul Kienitz (Amiga, Win32, Unicode); Chris -Herborth (BeOS, QNX, Atari); Jonathan Hudson (SMS/QDOS); Sergio Monesi -(Acorn RISC OS); Harald Denker (Atari, MVS); John Bush (Solaris, Amiga); -Hunter Goatley (VMS, Info-ZIP Site maintenance); Steve Salisbury (Win32); -Steve Miller (Windows CE GUI), Johnny Lee (MS-DOS, Win32, Zip64); and Dave -Smith (Tandem NSK). +Win32, Unix); Christian Spieler (UnZip maintenance coordination, VMS, MS-DOS, +Win32, shared code, general Zip and UnZip integration and optimization); +Onno van der Linden (Zip); Mike White (Win32, Windows GUI, Windows DLLs); +Kai Uwe Rommel (OS/2, Win32); Steven M. Schweda (VMS, support of new features); +Paul Kienitz (Amiga, Win32); Chris Herborth (BeOS, QNX, Atari); Jonathan Hudson +(SMS/QDOS); Sergio Monesi (Acorn RISC OS); Harald Denker (Atari, MVS); +John Bush (Solaris, Amiga); Hunter Goatley (VMS, Info-ZIP Site maintenance); +Steve Salisbury (Win32); Steve Miller (Windows CE GUI), Johnny Lee (MS-DOS, +Win32, Zip64); and Dave Smith (Tandem NSK). .PP The following people were former members of the Info-ZIP development group and provided major contributions to key parts of the current code: @@ -1035,6 +927,4 @@ Info-ZIP (Zip-Bugs subgroup, SPC) .IP "v5.52\t28 Feb 05" Info-ZIP (Zip-Bugs subgroup, SPC) -.IP "v6.0\t20 Apr 09" -Info-ZIP (Zip-Bugs subgroup, SPC) .PD diff -Nru unzip-6.0/man/unzipsfx.1 unzip-6.0/man/unzipsfx.1 --- unzip-6.0/man/unzipsfx.1 2009-04-19 22:38:48.000000000 +0000 +++ unzip-6.0/man/unzipsfx.1 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ -.\" Copyright (c) 1990-2009 Info-ZIP. All rights reserved. +.\" Copyright (c) 1990-2005 Info-ZIP. All rights reserved. .\" -.\" See the accompanying file LICENSE, version 2009-Jan-02 or later +.\" See the accompanying file LICENSE, version 2000-Apr-09 or later .\" (the contents of which are also included in unzip.h) for terms of use. .\" If, for some reason, all these files are missing, the Info-ZIP license .\" also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -20,7 +20,7 @@ .in -4n .. .\" ========================================================================= -.TH UNZIPSFX 1L "20 April 2009 (v6.0)" "Info-ZIP" +.TH UNZIPSFX 1 "28 February 2005 (v5.52)" "Info-ZIP" .SH NAME unzipsfx \- self-extracting stub for prepending to ZIP archives .PD @@ -30,7 +30,7 @@ .PD .\" ========================================================================= .SH DESCRIPTION -\fIunzipsfx\fP is a modified version of \fIunzip\fP(1L) designed to be +\fIunzipsfx\fP is a modified version of \fIunzip\fP(1) designed to be prepended to existing ZIP archives in order to form self-extracting archives. Instead of taking its first non-flag argument to be the zipfile(s) to be extracted, \fIunzipsfx\fP seeks itself under the name by which it was invoked @@ -109,7 +109,7 @@ .PD .\" ========================================================================= .SH OPTIONS -\fIunzipsfx\fP supports the following \fIunzip\fP(1L) options: \fB\-c\fP +\fIunzipsfx\fP supports the following \fIunzip\fP(1) options: \fB\-c\fP and \fB\-p\fP (extract to standard output/screen), \fB\-f\fP and \fB\-u\fP (freshen and update existing files upon extraction), \fB\-t\fP (test archive) and \fB\-z\fP (print archive comment). All normal listing options @@ -118,11 +118,11 @@ those creating self-extracting archives may wish to include a short listing in the zipfile comment. .PP -See \fIunzip\fP(1L) for a more complete description of these options. +See \fIunzip\fP(1) for a more complete description of these options. .PD .\" ========================================================================= .SH MODIFIERS -\fIunzipsfx\fP currently supports all \fIunzip\fP(1L) modifiers: \fB\-a\fP +\fIunzipsfx\fP currently supports all \fIunzip\fP(1) modifiers: \fB\-a\fP (convert text files), \fB\-n\fP (never overwrite), \fB\-o\fP (overwrite without prompting), \fB\-q\fP (operate quietly), \fB\-C\fP (match names case-insensitively), \fB\-L\fP (convert uppercase-OS names to lowercase), @@ -137,18 +137,18 @@ of course continue to be supported since the zipfile format implies ASCII storage of text files.) .PP -See \fIunzip\fP(1L) for a more complete description of these modifiers. +See \fIunzip\fP(1) for a more complete description of these modifiers. .PD .\" ========================================================================= .SH "ENVIRONMENT OPTIONS" -\fIunzipsfx\fP uses the same environment variables as \fIunzip\fP(1L) does, +\fIunzipsfx\fP uses the same environment variables as \fIunzip\fP(1) does, although this is likely to be an issue only for the person creating and -testing the self-extracting archive. See \fIunzip\fP(1L) for details. +testing the self-extracting archive. See \fIunzip\fP(1) for details. .PD .\" ========================================================================= .SH DECRYPTION -Decryption is supported exactly as in \fIunzip\fP(1L); that is, interactively -with a non-echoing prompt for the password(s). See \fIunzip\fP(1L) for +Decryption is supported exactly as in \fIunzip\fP(1); that is, interactively +with a non-echoing prompt for the password(s). See \fIunzip\fP(1) for details. Once again, note that if the archive has no encrypted files there is no reason to use a version of \fIunzipsfx\fP with decryption support; that only adds to the size of the archive. @@ -286,7 +286,7 @@ from anywhere in the user's path. The situation is not known for AmigaDOS, Atari TOS, MacOS, etc. .PP -As noted above, a number of the normal \fIunzip\fP(1L) functions have +As noted above, a number of the normal \fIunzip\fP(1) functions have been removed in order to make \fIunzipsfx\fP smaller: usage and diagnostic info, listing functions and extraction to other directories. Also, only stored and deflated files are supported. The latter limitation is mainly @@ -303,17 +303,17 @@ defined as a ``debug hunk.'') There may be compatibility problems between the ROM levels of older Amigas and newer ones. .PP -All current bugs in \fIunzip\fP(1L) exist in \fIunzipsfx\fP as well. +All current bugs in \fIunzip\fP(1) exist in \fIunzipsfx\fP as well. .PD .\" ========================================================================= .SH DIAGNOSTICS \fIunzipsfx\fP's exit status (error level) is identical to that of -\fIunzip\fP(1L); see the corresponding man page. +\fIunzip\fP(1); see the corresponding man page. .PD .\" ========================================================================= .SH "SEE ALSO" -\fIfunzip\fP(1L), \fIunzip\fP(1L), \fIzip\fP(1L), \fIzipcloak\fP(1L), -\fIzipgrep\fP(1L), \fIzipinfo\fP(1L), \fIzipnote\fP(1L), \fIzipsplit\fP(1L) +\fIfunzip\fP(1), \fIunzip\fP(1), \fIzip\fP(1), \fIzipcloak\fP(1), +\fIzipgrep\fP(1), \fIzipinfo\fP(1), \fIzipnote\fP(1), \fIzipsplit\fP(1) .PD .PD .\" ========================================================================= @@ -330,7 +330,7 @@ .\" ========================================================================= .SH AUTHORS Greg Roelofs was responsible for the basic modifications to UnZip necessary -to create UnZipSFX. See \fIunzip\fP(1L) for the current list of Zip-Bugs +to create UnZipSFX. See \fIunzip\fP(1) for the current list of Zip-Bugs authors, or the file CONTRIBS in the UnZip source distribution for the full list of Info-ZIP contributors. .PD diff -Nru unzip-6.0/man/zipgrep.1 unzip-6.0/man/zipgrep.1 --- unzip-6.0/man/zipgrep.1 2009-04-19 22:38:52.000000000 +0000 +++ unzip-6.0/man/zipgrep.1 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ -.\" Copyright (c) 1990-2009 Info-ZIP. All rights reserved. +.\" Copyright (c) 1990-2005 Info-ZIP. All rights reserved. .\" -.\" See the accompanying file LICENSE, version 2009-Jan-02 or later +.\" See the accompanying file LICENSE, version 2000-Apr-09 or later .\" (the contents of which are also included in unzip.h) for terms of use. .\" If, for some reason, all these files are missing, the Info-ZIP license .\" also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -8,7 +8,7 @@ .\" zipgrep.1 by Greg Roelofs. .\" .\" ========================================================================= -.TH ZIPGREP 1L "20 April 2009" "Info-ZIP" +.TH ZIPGREP 1 "28 February 2005" "Info-ZIP" .SH NAME zipgrep \- search files in a ZIP archive for lines matching a pattern .PD @@ -21,7 +21,7 @@ .SH DESCRIPTION \fIzipgrep\fP will search files within a ZIP archive for lines matching the given string or pattern. \fIzipgrep\fP is a shell script and requires -\fIegrep\fP(1) and \fIunzip\fP(1L) to function. Its output is identical to +\fIegrep\fP(1) and \fIunzip\fP(1) to function. Its output is identical to that of \fIegrep\fP(1). .PD .\" ========================================================================= @@ -69,8 +69,8 @@ .PD .\" ========================================================================= .SH "SEE ALSO" -\fIegrep\fP(1), \fIunzip\fP(1L), \fIzip\fP(1L), \fIfunzip\fP(1L), -\fIzipcloak\fP(1L), \fIzipinfo\fP(1L), \fIzipnote\fP(1L), \fIzipsplit\fP(1L) +\fIegrep\fP(1), \fIunzip\fP(1), \fIzip\fP(1), \fIfunzip\fP(1), +\fIzipcloak\fP(1), \fIzipinfo\fP(1), \fIzipnote\fP(1), \fIzipsplit\fP(1) .PD .\" ========================================================================= .SH URL diff -Nru unzip-6.0/man/zipinfo.1 unzip-6.0/man/zipinfo.1 --- unzip-6.0/man/zipinfo.1 2009-04-19 22:39:00.000000000 +0000 +++ unzip-6.0/man/zipinfo.1 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ -.\" Copyright (c) 1990-2009 Info-ZIP. All rights reserved. +.\" Copyright (c) 1990-2005 Info-ZIP. All rights reserved. .\" -.\" See the accompanying file LICENSE, version 2009-Jan-02 or later +.\" See the accompanying file LICENSE, version 2000-Apr-09 or later .\" (the contents of which are also included in unzip.h) for terms of use. .\" If, for some reason, all these files are missing, the Info-ZIP license .\" also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -34,7 +34,7 @@ .in -4n .. .\" ========================================================================= -.TH ZIPINFO 1L "20 April 2009 (v3.0)" "Info-ZIP" +.TH ZIPINFO 1 "28 February 2005 (v2.42)" "Info-ZIP" .SH NAME zipinfo \- list detailed information about a ZIP archive .PD @@ -161,17 +161,6 @@ The default date format is a more standard, human-readable version with abbreviated month names (see examples below). .TP -.B \-U -[UNICODE_SUPPORT only] modify or disable UTF-8 handling. -When UNICODE_SUPPORT is available, the option \fB\-U\fP forces \fIunzip\fP -to escape all non-ASCII characters from UTF-8 coded filenames as ``#Uxxxx''. -This option is mainly provided for debugging purpose when the fairly new -UTF-8 support is suspected to mangle up extracted filenames. -.IP -The option \fB\-UU\fP allows to entirely disable the recognition of UTF-8 -encoded filenames. The handling of filename codings within \fIunzip\fP falls -back to the behaviour of previous versions. -.TP .B \-z include the archive comment (if any) in the listing. .PD @@ -272,7 +261,7 @@ Note that because of limitations in the MS-DOS format used to store file times, the seconds field is always rounded to the nearest even second. For Unix files this is expected to change in the next major releases of -\fIzip\fP(1L) and \fIunzip\fP. +\fIzip\fP(1) and \fIunzip\fP. .PP In addition to individual file information, a default zipfile listing also includes header and trailer lines: @@ -361,7 +350,7 @@ As suggested above, the default variable names are ZIPINFO_OPTS for VMS (where the symbol used to install \fIzipinfo\fP as a foreign command would otherwise be confused with the environment variable), and ZIPINFO -for all other operating systems. For compatibility with \fIzip\fP(1L), +for all other operating systems. For compatibility with \fIzip\fP(1), ZIPINFOOPT is also accepted (don't ask). If both ZIPINFO and ZIPINFOOPT are defined, however, ZIPINFO takes precedence. \fIunzip\fP's diagnostic option (\fB\-v\fP with no zipfile name) can be used to check the values @@ -496,8 +485,8 @@ .PP .\" ========================================================================= .SH "SEE ALSO" -\fIls\fP(1), \fIfunzip\fP(1L), \fIunzip\fP(1L), \fIunzipsfx\fP(1L), -\fIzip\fP(1L), \fIzipcloak\fP(1L), \fIzipnote\fP(1L), \fIzipsplit\fP(1L) +\fIls\fP(1), \fIfunzip\fP(1), \fIunzip\fP(1), \fIunzipsfx\fP(1), +\fIzip\fP(1), \fIzipcloak\fP(1), \fIzipnote\fP(1), \fIzipsplit\fP(1) .PD .\" ========================================================================= .SH URL diff -Nru unzip-6.0/match.c unzip-6.0/match.c --- unzip-6.0/match.c 2005-08-14 17:00:36.000000000 +0000 +++ unzip-6.0/match.c 2010-05-14 07:26:14.000000000 +0000 @@ -116,8 +116,7 @@ #endif /* 0 */ static int recmatch OF((ZCONST uch *pattern, ZCONST uch *string, int ignore_case __WDLPRO)); -static char *isshexp OF((ZCONST char *p)); -static int namecmp OF((ZCONST char *s1, ZCONST char *s2)); + /* match() is a shell to recmatch() to return only Boolean values. */ @@ -227,61 +226,10 @@ #endif /* WILD_STOP_AT_DIR */ if (*p == 0) return 1; - if (isshexp((ZCONST char *)p) == NULL) { - /* Optimization for rest of pattern being a literal string: - * If there are no other shell expression chars in the rest - * of the pattern behind the multi-char wildcard, then just - * compare the literal string tail. - */ - ZCONST uch *srest; - - srest = s + (strlen((ZCONST char *)s) - strlen((ZCONST char *)p)); - if (srest - s < 0) - /* remaining literal string from pattern is longer than rest - * of test string, there can't be a match - */ - return 0; - else - /* compare the remaining literal pattern string with the last - * bytes of the test string to check for a match - */ -#ifdef _MBCS - { - ZCONST uch *q = s; - - /* MBCS-aware code must not scan backwards into a string from - * the end. - * So, we have to move forward by character from our well-known - * character position s in the test string until we have - * advanced to the srest position. - */ - while (q < srest) - INCSTR(q); - /* In case the byte *srest is a trailing byte of a multibyte - * character in the test string s, we have actually advanced - * past the position (srest). - * For this case, the match has failed! - */ - if (q != srest) - return 0; - return ((ic - ? namecmp((ZCONST char *)p, (ZCONST char *)q) - : strcmp((ZCONST char *)p, (ZCONST char *)q) - ) == 0); - } -#else /* !_MBCS */ - return ((ic - ? namecmp((ZCONST char *)p, (ZCONST char *)srest) - : strcmp((ZCONST char *)p, (ZCONST char *)srest) - ) == 0); -#endif /* ?_MBCS */ - } else { - /* pattern contains more wildcards, continue with recursion... */ - for (; *s; INCSTR(s)) - if ((c = recmatch(p, s, ic __WDL)) != 0) - return (int)c; - return 2; /* 2 means give up--match will return false */ - } + for (; *s; INCSTR(s)) + if ((c = recmatch(p, s, ic __WDL)) != 0) + return (int)c; + return 2; /* 2 means give up--match will return false */ } /* Parse and process the list of characters and ranges in brackets */ @@ -338,40 +286,6 @@ } /* end function recmatch() */ - - -static char *isshexp(p) -ZCONST char *p; -/* If p is a sh expression, a pointer to the first special character is - returned. Otherwise, NULL is returned. */ -{ - for (; *p; INCSTR(p)) - if (*p == '\\' && *(p+1)) - p++; - else if (*p == WILDCHAR || *p == '*' || *p == BEG_RANGE) - return (char *)p; - return NULL; -} /* end function isshexp() */ - - - -static int namecmp(s1, s2) - ZCONST char *s1, *s2; -{ - int d; - - for (;;) { - d = (int)ToLower((uch)*s1) - - (int)ToLower((uch)*s2); - - if (d || *s1 == 0 || *s2 == 0) - return d; - - s1++; - s2++; - } -} /* end function namecmp() */ - #endif /* !THEOS */ diff -Nru unzip-6.0/msdos/crc_i86.asm unzip-6.0/msdos/crc_i86.asm --- unzip-6.0/msdos/crc_i86.asm 2007-01-07 05:06:06.000000000 +0000 +++ unzip-6.0/msdos/crc_i86.asm 2010-05-14 07:26:14.000000000 +0000 @@ -1,12 +1,12 @@ ;=========================================================================== -; Copyright (c) 1990-2007 Info-ZIP. All rights reserved. +; Copyright (c) 1990-2001 Info-ZIP. All rights reserved. ; ; See the accompanying file LICENSE, version 2000-Apr-09 or later ; (the contents of which are also included in zip.h) for terms of use. ; If, for some reason, all these files are missing, the Info-ZIP license ; also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html ;=========================================================================== -; Created by Christian Spieler, last modified 07 Jan 2007. +; Created by Christian Spieler, last modified 24 Dec 1998. ; TITLE crc_i86.asm NAME crc_i86 @@ -39,10 +39,6 @@ ; Likewise, "jcxz" was replaced by "jz", because the latter is faster on ; 486 and newer CPUs (without any penalty on 80286 and older CPU models). ; -; In January 2007, the "hand-made" memory model setup section has been guarded -; against redefinition of @CodeSize and @DataSize symbols, to work around a -; problem with current Open Watcom (version 1.6) wasm assembler. -; ; The code in this module should work with all kinds of C memory models ; (except Borland's __HUGE__ model), as long as the following ; restrictions are not violated: @@ -60,11 +56,9 @@ ; ;============================================================================== ; -; Do NOT assemble this source if external crc32 routine from zlib gets used, -; or only the precomputed CRC_32_Table is needed. +; Do NOT assemble this source if external crc32 routine from zlib gets used. ; ifndef USE_ZLIB -ifndef CRC_TABLE_ONLY ; ; Setup of amount of assemble time informational messages: ; @@ -95,12 +89,8 @@ ifdef __HUGE__ ; .MODEL Huge - ifndef @CodeSize - @CodeSize EQU 1 - endif - ifndef @DataSize - @DataSize EQU 1 - endif + @CodeSize EQU 1 + @DataSize EQU 1 Save_DS EQU 1 if VERBOSE_INFO if1 @@ -110,12 +100,8 @@ else ifdef __LARGE__ ; .MODEL Large - ifndef @CodeSize - @CodeSize EQU 1 - endif - ifndef @DataSize - @DataSize EQU 1 - endif + @CodeSize EQU 1 + @DataSize EQU 1 if VERBOSE_INFO if1 %out Assembling for C, Large memory model @@ -124,12 +110,8 @@ else ifdef __COMPACT__ ; .MODEL Compact - ifndef @CodeSize - @CodeSize EQU 0 - endif - ifndef @DataSize - @DataSize EQU 1 - endif + @CodeSize EQU 0 + @DataSize EQU 1 if VERBOSE_INFO if1 %out Assembling for C, Compact memory model @@ -138,12 +120,8 @@ else ifdef __MEDIUM__ ; .MODEL Medium - ifndef @CodeSize - @CodeSize EQU 1 - endif - ifndef @DataSize - @DataSize EQU 0 - endif + @CodeSize EQU 1 + @DataSize EQU 0 if VERBOSE_INFO if1 %out Assembling for C, Medium memory model @@ -151,12 +129,8 @@ endif else ; .MODEL Small - ifndef @CodeSize - @CodeSize EQU 0 - endif - ifndef @DataSize - @DataSize EQU 0 - endif + @CodeSize EQU 0 + @DataSize EQU 0 if VERBOSE_INFO if1 %out Assembling for C, Small memory model @@ -191,11 +165,6 @@ ; Selection of the supported CPU instruction set and initialization ; of CPU type related macros: ; -ifdef __686 - Use_286_code EQU 1 - Align_Size EQU 4 ; dword alignment on Pentium II/III/IV - Alig_PARA EQU 1 ; paragraph aligned code segment -else ifdef __586 Use_286_code EQU 1 Align_Size EQU 4 ; dword alignment on Pentium @@ -228,7 +197,6 @@ endif ;?__386 endif ;?__486 endif ;?__586 -endif ;?__686 ifdef Use_286_code .286 @@ -491,7 +459,6 @@ _TEXT ENDS endif ; -endif ;!CRC_TABLE_ONLY endif ;!USE_ZLIB ; END diff -Nru unzip-6.0/msdos/doscfg.h unzip-6.0/msdos/doscfg.h --- unzip-6.0/msdos/doscfg.h 2008-03-22 19:17:32.000000000 +0000 +++ unzip-6.0/msdos/doscfg.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2008 Info-ZIP. All rights reserved. + Copyright (c) 1990-2002 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. @@ -57,6 +57,11 @@ modify [ax cx dx bx] # endif /* !USE_ZLIB */ # endif /* ?__386__ */ + +# ifndef EPIPE +# define EPIPE -1 +# endif +# define PIPE_ERROR (errno == EPIPE) #endif /* __WATCOMC__ */ #ifdef __EMX__ @@ -142,19 +147,6 @@ # endif #endif -/* 32-bit MSDOS supports the 32-bit optimized CRC-32 C code */ -#ifdef IZ_CRC_BE_OPTIMIZ -# undef IZ_CRC_BE_OPTIMIZ -#endif -#ifdef __32BIT__ -# if !defined(IZ_CRC_LE_OPTIMIZ) && !defined(NO_CRC_OPTIMIZ) -# define IZ_CRC_LE_OPTIMIZ -# endif -#else /* __16BIT__ does not support optimized C crc32 code */ -# ifdef IZ_CRC_LE_OPTIMIZ -# undef IZ_CRC_LE_OPTIMIZ -# endif -#endif /* another stat()/fopen() bug with some 16-bit compilers on Novell drives; * very dangerous (silently overwrites executables in other directories) @@ -301,9 +293,6 @@ # define CRTL_CP_IS_OEM # endif #endif -#ifndef NEED_ISO_OEM_INIT -# define NEED_ISO_OEM_INIT -#endif /* SCREENLINES macros for 16-bit and djgpp compilers */ #ifdef __16BIT__ diff -Nru unzip-6.0/msdos/makefile.bc unzip-6.0/msdos/makefile.bc --- unzip-6.0/msdos/makefile.bc 2005-12-29 21:07:40.000000000 +0000 +++ unzip-6.0/msdos/makefile.bc 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ # Makefile for UnZip(SFX) and fUnZip for Borland C++ 2.x-4.x and Turbo C++ 1.0 -# Version: 5.53 and later Alvin Koh, Jim Knoble, Christian Spieler, etc. +# Version: 5.5 and later Alvin Koh, Jim Knoble, Christian Spieler, etc. # -# Last revised: 29 Dec 05 +# Last revised: 04 Mar 01 # # To compile with Turbo C++ 1.0, set the macro CC_REV to 1 at the command line # (make -fmsdos/makefile.bc -DCC_REV=1). @@ -103,14 +103,14 @@ # list macros -OBJU1 = unzip.obj crc32.obj crypt.obj envargs.obj explode.obj +OBJU1 = unzip.obj crc32.obj crctab.obj crypt.obj envargs.obj explode.obj OBJU2 = extract.obj fileio.obj globals.obj inflate.obj list.obj match.obj OBJU3 = process.obj ttyio.obj unreduce.obj unshrink.obj zipinfo.obj OBJUS = msdos.obj $(ASMOBJS) OBJU = $(OBJU1) $(OBJU2) $(OBJU3) $(OBJUS) OBJF = funzip.obj crc32f.obj cryptf.obj globalsf.obj inflatef.obj \ ttyiof.obj msdosf.obj $(ASMOBJF) -OBJX1 = unzipsfx.obj crc32x.obj cryptx.obj extractx.obj fileiox.obj +OBJX1 = unzipsfx.obj crc32x.obj crctabx.obj cryptx.obj extractx.obj fileiox.obj OBJX2 = globalsx.obj inflatex.obj matchx.obj processx.obj ttyiox.obj OBJXS = msdosx.obj $(ASMOBJX) OBJX = $(OBJX1) $(OBJX2) $(OBJXS) @@ -148,17 +148,18 @@ # individual file dependencies -crc32.obj: crc32.c $(UNZIP_H) zip.h crc32.h -crypt.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crc32.obj: crc32.c $(UNZIP_H) zip.h +crctab.obj: crctab.c $(UNZIP_H) zip.h +crypt.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h envargs.obj: envargs.c $(UNZIP_H) explode.obj: explode.c $(UNZIP_H) -extract.obj: extract.c $(UNZIP_H) crc32.h crypt.h -fileio.obj: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +extract.obj: extract.c $(UNZIP_H) crypt.h +fileio.obj: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h globals.obj: globals.c $(UNZIP_H) inflate.obj: inflate.c inflate.h $(UNZIP_H) list.obj: list.c $(UNZIP_H) match.obj: match.c $(UNZIP_H) -process.obj: process.c $(UNZIP_H) crc32.h +process.obj: process.c $(UNZIP_H) ttyio.obj: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h unreduce.obj: unreduce.c $(UNZIP_H) unshrink.obj: unshrink.c $(UNZIP_H) @@ -177,13 +178,13 @@ msdos.obj: msdos/msdos.c $(UNZIP_H) $(CC) -c $(UNFLAGS) msdos/msdos.c -funzip.obj: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +funzip.obj: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h $(CC) -c $(FUFLAGS) funzip.c -crc32f.obj: crc32.c $(UNZIP_H) zip.h crc32.h +crc32f.obj: crc32.c $(UNZIP_H) zip.h $(CC) -c $(FUFLAGS) -DFUNZIP -ocrc32f.obj crc32.c -cryptf.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +cryptf.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(FUFLAGS) -DFUNZIP -ocryptf.obj crypt.c globalsf.obj: globals.c $(UNZIP_H) @@ -201,16 +202,19 @@ unzipsfx.obj: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h $(CC) -c $(SXFLAGS) -DSFX -ounzipsfx.obj unzip.c -crc32x.obj: crc32.c $(UNZIP_H) zip.h crc32.h +crc32x.obj: crc32.c $(UNZIP_H) zip.h $(CC) -c $(SXFLAGS) -DSFX -ocrc32x.obj crc32.c -cryptx.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crctabx.obj: crctab.c $(UNZIP_H) zip.h + $(CC) -c $(SXFLAGS) -DSFX -ocrctabx.obj crctab.c + +cryptx.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(SXFLAGS) -DSFX -ocryptx.obj crypt.c -extractx.obj: extract.c $(UNZIP_H) crc32.h crypt.h +extractx.obj: extract.c $(UNZIP_H) crypt.h $(CC) -c $(SXFLAGS) -DSFX -oextractx.obj extract.c -fileiox.obj: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +fileiox.obj: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h $(CC) -c $(SXFLAGS) -DSFX -ofileiox.obj fileio.c globalsx.obj: globals.c $(UNZIP_H) @@ -222,7 +226,7 @@ matchx.obj: match.c $(UNZIP_H) $(CC) -c $(SXFLAGS) -DSFX -omatchx.obj match.c -processx.obj: process.c $(UNZIP_H) crc32.h +processx.obj: process.c $(UNZIP_H) $(CC) -c $(SXFLAGS) -DSFX -oprocessx.obj process.c ttyiox.obj: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h diff -Nru unzip-6.0/msdos/makefile.dj1 unzip-6.0/msdos/makefile.dj1 --- unzip-6.0/msdos/makefile.dj1 2006-12-25 19:14:16.000000000 +0000 +++ unzip-6.0/msdos/makefile.dj1 2010-05-14 07:26:14.000000000 +0000 @@ -71,25 +71,25 @@ # defaults for crc32 stuff and system dependent headers ifdef USE_ASMCRC ASMFLG = -DASM_CRC -CRCA_O = crc_gcc$O +CRC32 = crc_gcc else ASMFLG = -CRCA_O = +CRC32 = crc32 endif # object files -OBJS1 = unzip$O crc32$O $(CRCA_O) crypt$O envargs$O explode$O +OBJS1 = unzip$O $(CRC32)$O crctab$O crypt$O envargs$O explode$O OBJS2 = extract$O fileio$O globals$O inflate$O list$O match$O -OBJS3 = process$O ttyio$O ubz2err$O unreduce$O unshrink$O zipinfo$O +OBJS3 = process$O ttyio$O unreduce$O unshrink$O zipinfo$O OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $M$O -OBJX1 = unzipsfx$O crc32_$O $(CRCA_O) crypt_$O extract_$O fileio_$O -OBJX2 = globals_$O inflate_$O match_$O process_$O ttyio_$O ubz2err_$O $M_$O +OBJX1 = unzipsfx$O $(CRC32)$O crctab_$O crypt_$O extract_$O fileio_$O +OBJX2 = globals_$O inflate_$O match_$O process_$O ttyio_$O $M_$O OBJX = $(OBJX1) $(OBJX2) -OBJF = funzip$O crc32-$O $(CRCA_O) crypt-$O globals-$O inflate-$O ttyio-$O +OBJF = funzip$O $(CRC32)$O crypt-$O globals-$O inflate-$O ttyio-$O -OBJECTS_ALL = $(sort $(OBJS) $(OBJX) $(OBJF) crc_gcc$O) +OBJECTS_ALL = $(sort $(OBJS) $(OBJX) $(OBJF) crc32$O crc_gcc$O) # Common header files included by all C sources: UNZIP_H = unzip.h unzpriv.h globals.h msdos/doscfg.h @@ -176,19 +176,19 @@ # Source dependencies: crc_gcc$O: crc_i386.S -crc32$O: crc32.c $(UNZIP_H) zip.h crc32.h -crc32-$O: crc32.c $(UNZIP_H) zip.h crc32.h -crc32_$O: crc32.c $(UNZIP_H) zip.h crc32.h -crypt$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h -crypt-$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h -crypt_$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crc32$O: crc32.c $(UNZIP_H) zip.h +crctab$O: crctab.c $(UNZIP_H) zip.h +crctab_$O: crctab.c $(UNZIP_H) zip.h +crypt$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h +crypt-$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h +crypt_$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h envargs$O: envargs.c $(UNZIP_H) explode$O: explode.c $(UNZIP_H) -extract$O: extract.c $(UNZIP_H) crc32.h crypt.h -extract_$O: extract.c $(UNZIP_H) crc32.h crypt.h -fileio$O: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h -fileio_$O: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h -funzip$O: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +extract$O: extract.c $(UNZIP_H) crypt.h +extract_$O: extract.c $(UNZIP_H) crypt.h +fileio$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h +fileio_$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h +funzip$O: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h globals$O: globals.c $(UNZIP_H) globals-$O: globals.c $(UNZIP_H) globals_$O: globals.c $(UNZIP_H) @@ -200,13 +200,11 @@ match_$O: match.c $(UNZIP_H) msdos$O: msdos/msdos.c $(UNZIP_H) msdos_$O: msdos/msdos.c $(UNZIP_H) -process$O: process.c $(UNZIP_H) crc32.h -process_$O: process.c $(UNZIP_H) crc32.h +process$O: process.c $(UNZIP_H) +process_$O: process.c $(UNZIP_H) ttyio$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h ttyio-$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h ttyio_$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err$O: ubz2err.c $(UNZIP_H) -ubz2err_$O: ubz2err.c $(UNZIP_H) unreduce$O: unreduce.c $(UNZIP_H) unshrink$O: unshrink.c $(UNZIP_H) unzip$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h diff -Nru unzip-6.0/msdos/makefile.dj2 unzip-6.0/msdos/makefile.dj2 --- unzip-6.0/msdos/makefile.dj2 2008-07-21 21:34:10.000000000 +0000 +++ unzip-6.0/msdos/makefile.dj2 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ # Makefile for Info-ZIP's UnZip, UnZipSFX and fUnZip using DJGPP v2.01 or -# higher, by Frank Donahoe. Last updated: 21 Jul 2008 +# higher, by Frank Donahoe. Last updated: 17 Feb 02 # This Makefile is specifically tailored for GNU make and GNU C and # may not work with a generic Unix-compatible make utility. The latest @@ -9,7 +9,6 @@ # Features used: # - pattern rules (%.o : %.c, etc.) # - GNU-specific conditionals and functions (ifeq, $(patsubst,,),...) -# - simply expanded variables (VAR := text) # # The stand-alone executable requires DPMI services to run. If running # in a DOS window under Windows 3.1 or later, the dpmi server is auto- @@ -65,7 +64,7 @@ LOC= CC=gcc LD=$(CC) -CPPFLAGS=-I. $(INC_BZ2LIB) -DDOS -DUSE_VFAT $(ASMFLG) $(LOCAL_UNZIP) $(LOC) +CPPFLAGS=-I. -DDOS -DUSE_VFAT $(ASMFLG) $(LOCAL_UNZIP) $(LOC) ASFLAGS=$(CPPFLAGS) CFLAGS=-Wall -O2 $(BUTT) $(CPPFLAGS) @@ -112,37 +111,24 @@ # defaults for crc32 stuff and system dependent headers ifdef USE_ASMCRC ASMFLG = -DASM_CRC -CRCA_O = crc_gcc$O +CRC32 = crc_gcc else ASMFLG = -CRCA_O = -endif - -# optional inclusion of bzip2 decompression -IZ_BZIP2 = bzip2 -ifdef USEBZ2 -INC_BZ2LIB = -I$(IZ_BZIP2) -LOCAL_UNZIP:=-DUSE_BZIP2 $(LOCAL_UNZIP) -LD_BZ2LIB = -L$(IZ_BZIP2) -lbz2 -LIBBZIP2 = $(IZ_BZIP2)/libbz2.a -else -INC_BZ2LIB = -LD_BZ2LIB = -LIBBZIP2 = +CRC32 = crc32 endif # object files -OBJS1 = unzip$O crc32$O $(CRCA_O) crypt$O envargs$O explode$O +OBJS1 = unzip$O $(CRC32)$O crctab$O crypt$O envargs$O explode$O OBJS2 = extract$O fileio$O globals$O inflate$O list$O match$O -OBJS3 = process$O ttyio$O ubz2err$O unreduce$O unshrink$O zipinfo$O +OBJS3 = process$O ttyio$O unreduce$O unshrink$O zipinfo$O OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $M$O -OBJX = unzipsfx$O crc32_$O $(CRCA_O) crypt_$O extract_$O fileio_$O \ - globals_$O inflate_$O match_$O process_$O ttyio_$O ubz2err_$O $M_$O +OBJX = unzipsfx$O $(CRC32)$O crctab_$O crypt_$O extract_$O fileio_$O \ + globals_$O inflate_$O match_$O process_$O ttyio_$O $M_$O -OBJF = funzip$O crc32-$O $(CRCA_O) crypt-$O globals-$O inflate-$O ttyio-$O +OBJF = funzip$O $(CRC32)$O crypt-$O globals-$O inflate-$O ttyio-$O -OBJECTS_ALL = $(sort $(OBJS) $(OBJX) $(OBJF) crc_gcc$O) +OBJECTS_ALL = $(sort $(OBJS) $(OBJX) $(OBJF) crc32$O crc_gcc$O) # Common header files included by all C sources: UNZIP_H = unzip.h unzpriv.h globals.h msdos/doscfg.h @@ -167,8 +153,8 @@ unzips: unzip$E zipinfo$E funzip$E unzipsfx$E -unzip$E: $(OBJS) $(LIBBZIP2) - $(LD) $(LDFLAGS) $(OBJS) $(LD_BZ2LIB) -o $@ +unzip$E: $(OBJS) + $(LD) $(LDFLAGS) $(OBJS) -o $@ # $(DJP) $@ zipinfo$E: unzip$E @@ -183,14 +169,10 @@ $(LD) $(LDFLAGS) $(OBJX) -o $@ # $(DJPSX) $@ -# create/update the library for the optional bzip2 support: -$(IZ_BZIP2)/libbz2.a: - $(MAKE) -C $(IZ_BZIP2) -f Makebz2.iz CC="$(CC)" RM="$(RM)" - # explicit compilation instructions: crc_gcc$O: crc_i386.S # 32bit, GNU AS - $(CC) $(ASFLAGS) -x assembler-with-cpp -c -o $@ $< + $(CC) $(ASFLAGS) -x assembler-with-cpp -c -o $@ crc_i386.S # BIN_PATH may be defined in djgpp.env [make] or defined below. If the # installation is to the directory containing gcc.exe etc. place the @@ -210,7 +192,6 @@ command.com /c for %f in ($(UNZIPS)) do $(RM) $(BIN_PATH)\%f > NUL clean: - $(MAKE) -C $(IZ_BZIP2) -f Makebz2.iz CC="$(CC)" RM="$(RM)" clean ifeq ($(firstword $(RM)), del) $(RM) *$O $(RM) *.~ @@ -221,19 +202,19 @@ # Source dependencies: crc_gcc$O: crc_i386.S -crc32$O: crc32.c $(UNZIP_H) zip.h crc32.h -crc32-$O: crc32.c $(UNZIP_H) zip.h crc32.h -crc32_$O: crc32.c $(UNZIP_H) zip.h crc32.h -crypt$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h -crypt-$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h -crypt_$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crc32$O: crc32.c $(UNZIP_H) zip.h +crctab$O: crctab.c $(UNZIP_H) zip.h +crctab_$O: crctab.c $(UNZIP_H) zip.h +crypt$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h +crypt-$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h +crypt_$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h envargs$O: envargs.c $(UNZIP_H) explode$O: explode.c $(UNZIP_H) -extract$O: extract.c $(UNZIP_H) crc32.h crypt.h -extract_$O: extract.c $(UNZIP_H) crc32.h crypt.h -fileio$O: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h -fileio_$O: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h -funzip$O: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +extract$O: extract.c $(UNZIP_H) crypt.h +extract_$O: extract.c $(UNZIP_H) crypt.h +fileio$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h +fileio_$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h +funzip$O: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h globals$O: globals.c $(UNZIP_H) globals-$O: globals.c $(UNZIP_H) globals_$O: globals.c $(UNZIP_H) @@ -245,13 +226,11 @@ match_$O: match.c $(UNZIP_H) msdos$O: msdos/msdos.c $(UNZIP_H) msdos_$O: msdos/msdos.c $(UNZIP_H) -process$O: process.c $(UNZIP_H) crc32.h -process_$O: process.c $(UNZIP_H) crc32.h +process$O: process.c $(UNZIP_H) +process_$O: process.c $(UNZIP_H) ttyio$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h ttyio-$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h ttyio_$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err$O: ubz2err.c $(UNZIP_H) -ubz2err_$O: ubz2err.c $(UNZIP_H) unreduce$O: unreduce.c $(UNZIP_H) unshrink$O: unshrink.c $(UNZIP_H) unzip$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h diff -Nru unzip-6.0/msdos/makefile.emx unzip-6.0/msdos/makefile.emx --- unzip-6.0/msdos/makefile.emx 2006-12-25 19:12:36.000000000 +0000 +++ unzip-6.0/msdos/makefile.emx 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ # Makefile for UnZip, fUnZip and UnZipSFX # for emx 0.9c / gcc under MS-DOS. Derived from makefile.os2 # By E-Yen Tan (with mods by Christian Spieler). -# Last updated 25 December 2006 (Christian Spieler). +# Last updated 10 February 2001 (Christian Spieler). # # This makefile should work fine with GNU make and hopefully some others. # Tested with GNU make 3.71 gnuish 16-bit and djgpp 32-bit versions. @@ -37,12 +37,16 @@ OBJ=.o #ifdef NOASM -#CRCA_O= +#CRC32=crc32 +#CRC32F=crc32f +#CRC32X=crc32_ #else -CRCA_O=crc_gcc$(OBJ) +CRC32=crc_gcc +CRC32F=crc_gcc +CRC32X=crc_gcc #endif -OBJUS=msdos$(OBJ) -OBJXS=msdos_$(OBJ) +OBJUS=msdos.o +OBJXS=msdos_.o OSDEP_H=msdos/doscfg.h @@ -50,16 +54,16 @@ DIRSEP = / AS_DIRSEP = / -OBJU1 = unzip$(OBJ) crc32$(OBJ) $(CRCA_O) crypt$(OBJ) envargs$(OBJ) +OBJU1 = unzip$(OBJ) $(CRC32)$(OBJ) crctab$(OBJ) crypt$(OBJ) envargs$(OBJ) OBJU2 = explode$(OBJ) extract$(OBJ) fileio$(OBJ) globals$(OBJ) OBJU3 = inflate$(OBJ) list$(OBJ) match$(OBJ) process$(OBJ) ttyio$(OBJ) -OBJU4 = ubz2err$(OBJ) unreduce$(OBJ) unshrink$(OBJ) zipinfo$(OBJ) +OBJU4 = unreduce$(OBJ) unshrink$(OBJ) zipinfo$(OBJ) OBJU = $(OBJU1) $(OBJU2) $(OBJU3) $(OBJU4) $(OBJUS) -OBJX1 = unzipsf_$(OBJ) crc32_$(OBJ) $(CRCA_O) crypt_$(OBJ) +OBJX1 = unzipsf_$(OBJ) $(CRC32X)$(OBJ) crctab_$(OBJ) crypt_$(OBJ) OBJX2 = extract_$(OBJ) fileio_$(OBJ) globals_$(OBJ) inflate_$(OBJ) -OBJX3 = match_$(OBJ) process_$(OBJ) ttyio_$(OBJ) ubz2err_$(OBJ) +OBJX3 = match_$(OBJ) process_$(OBJ) ttyio_$(OBJ) OBJX = $(OBJX1) $(OBJX2) $(OBJX3) $(OBJXS) -OBJF = funzip$(OBJ) crc32f$(OBJ) $(CRCA_O) cryptf$(OBJ) inflatef$(OBJ) \ +OBJF = funzip$(OBJ) $(CRC32F)$(OBJ) cryptf$(OBJ) inflatef$(OBJ) \ globalsf$(OBJ) ttyiof$(OBJ) UNZIP_H = unzip.h unzpriv.h globals.h $(OSDEP_H) @@ -87,25 +91,24 @@ # @ for %f in ($(OBJU2)) do echo %f >> unzip.rsp # @ for %f in ($(OBJU3)) do echo %f >> unzip.rsp # @ for %f in ($(OBJU4) $(OBJUS)) do echo %f >> unzip.rsp - @ echo unzip$(OBJ) > unzip.rsp - @ echo crc32$(OBJ) >> unzip.rsp - @ if not "$(CRCA_O)"=="" echo $(CRCA_O) >> unzip.rsp - @ echo crypt$(OBJ) >> unzip.rsp - @ echo envargs$(OBJ) >> unzip.rsp - @ echo explode$(OBJ) >> unzip.rsp - @ echo extract$(OBJ) >> unzip.rsp - @ echo fileio$(OBJ) >> unzip.rsp - @ echo globals$(OBJ) >> unzip.rsp - @ echo inflate$(OBJ) >> unzip.rsp - @ echo list$(OBJ) >> unzip.rsp - @ echo match$(OBJ) >> unzip.rsp - @ echo process$(OBJ) >> unzip.rsp - @ echo ttyio$(OBJ) >> unzip.rsp - @ echo ubz2err$(OBJ) >> unzip.rsp - @ echo unreduce$(OBJ) >> unzip.rsp - @ echo unshrink$(OBJ) >> unzip.rsp - @ echo zipinfo$(OBJ) >> unzip.rsp - @ echo msdos$(OBJ) >> unzip.rsp + @ echo unzip.o > unzip.rsp + @ echo $(CRC32)$(OBJ) >> unzip.rsp + @ echo crctab.o >> unzip.rsp + @ echo crypt.o >> unzip.rsp + @ echo envargs.o >> unzip.rsp + @ echo explode.o >> unzip.rsp + @ echo extract.o >> unzip.rsp + @ echo fileio.o >> unzip.rsp + @ echo globals.o >> unzip.rsp + @ echo inflate.o >> unzip.rsp + @ echo list.o >> unzip.rsp + @ echo match.o >> unzip.rsp + @ echo process.o >> unzip.rsp + @ echo ttyio.o >> unzip.rsp + @ echo unreduce.o >> unzip.rsp + @ echo unshrink.o >> unzip.rsp + @ echo zipinfo.o >> unzip.rsp + @ echo msdos.o >> unzip.rsp $(CC) $(LDFLAGS)$@ $(DEF) @unzip.rsp $(LDFLAGS2) @ $(RM) unzip.rsp @@ -119,44 +122,43 @@ # @ for %f in ($(OBJX2)) do echo %f >> unzipsfx.rsp # @ for %f in ($(OBJX3)) do echo %f >> unzipsfx.rsp # @ for %f in ($(OBJXS)) do echo %f >> unzipsfx.rsp - @ echo unzipsf_$(OBJ) > unzipsfx.rsp - @ echo crc32_$(OBJ) >> unzipsfx.rsp - @ if not "$(CRCA_O)"=="" echo $(CRCA_O) >> unzipsfx.rsp - @ echo crypt_$(OBJ) >> unzipsfx.rsp - @ echo extract_$(OBJ) >> unzipsfx.rsp - @ echo fileio_$(OBJ) >> unzipsfx.rsp - @ echo globals_$(OBJ) >> unzipsfx.rsp - @ echo inflate_$(OBJ) >> unzipsfx.rsp - @ echo match_$(OBJ) >> unzipsfx.rsp - @ echo process_$(OBJ) >> unzipsfx.rsp - @ echo ttyio_$(OBJ) >> unzipsfx.rsp - @ echo ubz2err_$(OBJ) >> unzipsfx.rsp - @ echo msdos_$(OBJ) >> unzipsfx.rsp + @ echo unzipsf_.o > unzipsfx.rsp + @ echo $(CRC32X)$(OBJ) >> unzipsfx.rsp + @ echo crctab_.o >> unzipsfx.rsp + @ echo crypt_.o >> unzipsfx.rsp + @ echo extract_.o >> unzipsfx.rsp + @ echo fileio_.o >> unzipsfx.rsp + @ echo globals_.o >> unzipsfx.rsp + @ echo inflate_.o >> unzipsfx.rsp + @ echo match_.o >> unzipsfx.rsp + @ echo process_.o >> unzipsfx.rsp + @ echo ttyio_.o >> unzipsfx.rsp + @ echo msdos_.o >> unzipsfx.rsp $(CC) $(LDFLAGS)$@ $(DEF) @unzipsfx.rsp $(LDFLAGS2) @ $(RM) unzipsfx.rsp # dependencies apihelp$(OBJ): apihelp.c $(UNZIP_H) unzvers.h -crc32$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h +crc32$(OBJ): crc32.c $(UNZIP_H) zip.h +crctab$(OBJ): crctab.c $(UNZIP_H) zip.h envargs$(OBJ): envargs.c $(UNZIP_H) explode$(OBJ): explode.c $(UNZIP_H) -extract$(OBJ): extract.c $(UNZIP_H) crc32.h crypt.h -fileio$(OBJ): fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +extract$(OBJ): extract.c $(UNZIP_H) crypt.h +fileio$(OBJ): fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h globals$(OBJ): globals.c $(UNZIP_H) inflate$(OBJ): inflate.c $(UNZIP_H) list$(OBJ): list.c $(UNZIP_H) match$(OBJ): match.c $(UNZIP_H) -process$(OBJ): process.c $(UNZIP_H) crc32.h +process$(OBJ): process.c $(UNZIP_H) ttyio$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err$(OBJ): ubz2err.c $(UNZIP_H) unreduce$(OBJ): unreduce.c $(UNZIP_H) unshrink$(OBJ): unshrink.c $(UNZIP_H) unzip$(OBJ): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h api$(OBJ): api.c $(UNZIP_H) unzvers.h zipinfo$(OBJ): zipinfo.c $(UNZIP_H) -funzip$(OBJ): funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h # funzip only +funzip$(OBJ): funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h # funzip only $(CC) -c $(CFLAGS) $(OUT)$@ funzip.c msdos$(OBJ): msdos/msdos.c $(UNZIP_H) unzvers.h # DOS only @@ -169,55 +171,53 @@ $(AS) $(ASFLAGS) -x assembler-with-cpp -c -o $@ crc_i386.S # NFLAGS are solely used as work-around for optimization bug in IBM C++ Set -crypt$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crypt$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(CFLAGS) $(DLLFLAG) $(NFLAGS) $(OUT)$@ crypt.c -# funzip specific section -crc32f$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h - $(CC) -c $(CFLAGS) -DFUNZIP $(OUT)$@ crc32.c - -cryptf$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +cryptf$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only $(CC) -c $(CFLAGS) $(NFLAGS) -DFUNZIP $(OUT)$@ crypt.c -globalsf$(OBJ): globals.c $(UNZIP_H) +crc32f$(OBJ): crc32.c $(UNZIP_H) zip.h # funzip only + $(CC) -c $(CFLAGS) -DFUNZIP $(OUT)$@ crc32.c + +globalsf$(OBJ): globals.c $(UNZIP_H) # funzip only $(CC) -c $(CFLAGS) -DFUNZIP $(OUT)$@ globals.c -inflatef$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h +inflatef$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h # funzip only $(CC) -c $(CFLAGS) -DFUNZIP $(OUT)$@ inflate.c -ttyiof$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +ttyiof$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only $(CC) -c $(CFLAGS) $(NFLAGS) -DFUNZIP $(OUT)$@ ttyio.c -# unzipsfx specific section -crc32_$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h +crc32_$(OBJ): crc32.c $(UNZIP_H) zip.h # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ crc32.c -crypt_$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crctab_$(OBJ): crctab.c $(UNZIP_H) zip.h # unzipsfx only + $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ crctab.c + +crypt_$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ crypt.c -extract_$(OBJ): extract.c $(UNZIP_H) crc32.h crypt.h +extract_$(OBJ): extract.c $(UNZIP_H) crypt.h # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ extract.c -fileio_$(OBJ): fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +fileio_$(OBJ): fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ fileio.c -globals_$(OBJ): globals.c $(UNZIP_H) +globals_$(OBJ): globals.c $(UNZIP_H) # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ globals.c -inflate_$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h +inflate_$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ inflate.c -match_$(OBJ): match.c $(UNZIP_H) +match_$(OBJ): match.c $(UNZIP_H) # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ match.c -process_$(OBJ): process.c $(UNZIP_H) crc32.h +process_$(OBJ): process.c $(UNZIP_H) # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ process.c -ttyio_$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +ttyio_$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ ttyio.c -ubz2err_$(OBJ): ubz2err.c $(UNZIP_H) - $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ ubz2err.c - -unzipsf_$(OBJ): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h +unzipsf_$(OBJ): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ unzip.c diff -Nru unzip-6.0/msdos/makefile.msc unzip-6.0/msdos/makefile.msc --- unzip-6.0/msdos/makefile.msc 2005-12-29 21:08:52.000000000 +0000 +++ unzip-6.0/msdos/makefile.msc 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# Makefile for UnZip 5.53 and later Greg Roelofs and others -# Version: Microsoft C (5.x and later) 29 Dec 05 +# Makefile for UnZip 5.5 and later Greg Roelofs and others +# Version: Microsoft C (5.x and later) 20 Oct 03 #------------------------------------------------------------------------------ # Users of MSC 6/7 and NMAKE can use the Unix Makefile (target msc_dos), @@ -78,13 +78,13 @@ LDFLAGS2_FU = $(LDFLAGS2); LDFLAGS2_SX = $(LDFLAGS2); -OBJS1 = unzip.obj crc32.obj crypt.obj envargs.obj explode.obj +OBJS1 = unzip.obj crc32.obj crctab.obj crypt.obj envargs.obj explode.obj OBJS2 = extract.obj fileio.obj globals.obj inflate.obj list.obj match.obj OBJS3 = process.obj ttyio.obj unreduce.obj unshrink.obj zipinfo.obj OBJS4 = msdos.obj $(ASMOBJS) OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) -OBJX1 = unzipsfx.obj crc32x.obj cryptx.obj extractx.obj fileiox.obj +OBJX1 = unzipsfx.obj crc32x.obj crctabx.obj cryptx.obj extractx.obj fileiox.obj OBJX2 = globalsx.obj inflatex.obj matchx.obj processx.obj ttyiox.obj OBJX3 = msdosx.obj $(ASMOBJX) OBJX = $(OBJX1) $(OBJX2) $(OBJX3) @@ -119,37 +119,42 @@ crc_i86x.obj: msdos/crc_i86.asm $(AS) $(ASFLAGS) -D$(ASSXMODEL) msdos/crc_i86.asm, $@; -crc32.obj: crc32.c $(UNZIP_H) zip.h crc32.h +crc32.obj: crc32.c $(UNZIP_H) zip.h -crc32_.obj: crc32.c $(UNZIP_H) zip.h crc32.h +crc32_.obj: crc32.c $(UNZIP_H) zip.h $(CC) -c $(CFLAGS_FU) -Focrc32_.obj crc32.c -crc32x.obj: crc32.c $(UNZIP_H) zip.h crc32.h +crc32x.obj: crc32.c $(UNZIP_H) zip.h $(CC) -c $(CFLAGS_SX) -Focrc32x.obj crc32.c -crypt.obj: crypt.c $(UNZIP_H) crypt.h crc32.h ttyio.h zip.h +crctab.obj: crctab.c $(UNZIP_H) zip.h -crypt_.obj: crypt.c $(UNZIP_H) crypt.h crc32.h ttyio.h zip.h +crctabx.obj: crctab.c $(UNZIP_H) zip.h + $(CC) -c $(CFLAGS_SX) -Focrctabx.obj crctab.c + +crypt.obj: crypt.c $(UNZIP_H) crypt.h ttyio.h zip.h + +crypt_.obj: crypt.c $(UNZIP_H) crypt.h ttyio.h zip.h $(CC) -c $(CFLAGS_FU) -Focrypt_.obj crypt.c -cryptx.obj: crypt.c $(UNZIP_H) crypt.h crc32.h ttyio.h zip.h +cryptx.obj: crypt.c $(UNZIP_H) crypt.h ttyio.h zip.h $(CC) -c $(CFLAGS_SX) -Focryptx.obj crypt.c envargs.obj: envargs.c $(UNZIP_H) explode.obj: explode.c $(UNZIP_H) -extract.obj: extract.c $(UNZIP_H) crc32.h crypt.h +extract.obj: extract.c $(UNZIP_H) crypt.h -extractx.obj: extract.c $(UNZIP_H) crc32.h crypt.h +extractx.obj: extract.c $(UNZIP_H) crypt.h $(CC) -c $(CFLAGS_SX) -Foextractx.obj extract.c -fileio.obj: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +fileio.obj: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h -fileiox.obj: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +fileiox.obj: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h $(CC) -c $(CFLAGS_SX) -Fofileiox.obj fileio.c -funzip.obj: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +funzip.obj: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h $(CC) -c $(CFLAGS_FU) funzip.c globals.obj: globals.c $(UNZIP_H) @@ -184,9 +189,9 @@ msdosx.obj: msdos/msdos.c $(UNZIP_H) $(CC) -c $(CFLAGS_SX) -Fomsdosx.obj msdos/msdos.c -process.obj: process.c $(UNZIP_H) crc32.h +process.obj: process.c $(UNZIP_H) -processx.obj: process.c $(UNZIP_H) crc32.h +processx.obj: process.c $(UNZIP_H) $(CC) -c $(CFLAGS_SX) -Foprocessx.obj process.c ttyio.obj: ttyio.c $(UNZIP_H) crypt.h ttyio.h zip.h diff -Nru unzip-6.0/msdos/makefile.tc unzip-6.0/msdos/makefile.tc --- unzip-6.0/msdos/makefile.tc 2005-12-29 21:09:08.000000000 +0000 +++ unzip-6.0/msdos/makefile.tc 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ -# Makefile for UnZip 5.53 and later Jean-loup Gailly -# Version: Turbo C (edit and use makefile.bc for Turbo C++) 29 Dec 05 +# Makefile for UnZip 5.5 and later Jean-loup Gailly +# Version: Turbo C (edit and use makefile.bc for Turbo C++) 04 Mar 01 #------------------------------------------------------------------------------ # GNU make doesn't like the return value from "rem" @@ -55,12 +55,12 @@ LDFLAGS2 = -OBJS = unzip.obj crc32.obj crypt.obj envargs.obj explode.obj \ +OBJS = unzip.obj crc32.obj crctab.obj crypt.obj envargs.obj explode.obj \ extract.obj fileio.obj globals.obj inflate.obj list.obj match.obj \ process.obj ttyio.obj unreduce.obj unshrink.obj zipinfo.obj \ msdos.obj $(ASMOBJS) -OBJX = unzipsfx.obj crc32x.obj cryptx.obj extractx.obj \ +OBJX = unzipsfx.obj crc32x.obj crctabx.obj cryptx.obj extractx.obj \ fileiox.obj globalsx.obj inflatex.obj matchx.obj processx.obj \ ttyiox.obj \ msdosx.obj $(ASMOBJS) @@ -94,28 +94,30 @@ crc_i86_.obj: msdos/crc_i86.asm $(AS) $(ASFLAGS) -D$(ASFUMODEL) msdos\crc_i86.asm, $*.obj ; -crc32.obj: crc32.c $(UNZIP_H) zip.h crc32.h +crc32.obj: crc32.c $(UNZIP_H) zip.h -crc32_.obj: crc32.c $(UNZIP_H) zip.h crc32.h +crc32_.obj: crc32.c $(UNZIP_H) zip.h $(CC) -c $(FCFLAGS) -DFUNZIP -ocrc32_.obj crc32.c -crypt.obj: crypt.c $(UNZIP_H) crypt.h crc32.h ttyio.h zip.h +crctab.obj: crctab.c $(UNZIP_H) zip.h -crypt_.obj: crypt.c $(UNZIP_H) crypt.h crc32.h ttyio.h zip.h +crypt.obj: crypt.c $(UNZIP_H) crypt.h ttyio.h zip.h + +crypt_.obj: crypt.c $(UNZIP_H) crypt.h ttyio.h zip.h $(CC) -c $(FCFLAGS) -DFUNZIP -ocrypt_.obj crypt.c envargs.obj: envargs.c $(UNZIP_H) explode.obj: explode.c $(UNZIP_H) -extract.obj: extract.c $(UNZIP_H) crc32.h crypt.h +extract.obj: extract.c $(UNZIP_H) crypt.h -extractx.obj: extract.c $(UNZIP_H) crc32.h crypt.h +extractx.obj: extract.c $(UNZIP_H) crypt.h $(CC) -c $(UCFLAGS) -DSFX -oextractx.obj extract.c -fileio.obj: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +fileio.obj: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h -funzip.obj: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +funzip.obj: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h $(CC) -c $(FCFLAGS) funzip.c globals.obj: globals.c $(UNZIP_H) @@ -141,9 +143,9 @@ msdosx.obj: msdos/msdos.c $(UNZIP_H) $(CC) -c $(UCFLAGS) -DSFX -omsdos_.obj msdos/msdos.c -process.obj: process.c $(UNZIP_H) crc32.h +process.obj: process.c $(UNZIP_H) -processx.obj: process.c $(UNZIP_H) crc32.h +processx.obj: process.c $(UNZIP_H) $(CC) -c $(UCFLAGS) -DSFX -oprocess_.obj process.c ttyio.obj: ttyio.c $(UNZIP_H) crypt.h ttyio.h zip.h diff -Nru unzip-6.0/msdos/makefile.wat unzip-6.0/msdos/makefile.wat --- unzip-6.0/msdos/makefile.wat 2008-02-16 19:36:06.000000000 +0000 +++ unzip-6.0/msdos/makefile.wat 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ # WMAKE makefile for 16 bit MSDOS or 32 bit DOS extender (PMODE/W or DOS/4GW) -# using Watcom C/C++ v11.0+, by Paul Kienitz, last revised 16 Feb 2008. +# using Watcom C/C++ v11.0+, by Paul Kienitz, last revised 23 Jan 02. # Makes UnZip.exe, fUnZip.exe, and UnZipSFX.exe. # # Invoke from UnZip source dir with "WMAKE -F MSDOS\MAKEFILE.WAT [targets]". @@ -10,11 +10,8 @@ # PMODE/W is recommended over DOS/4GW for best performance. # To build with debug info use "WMAKE DEBUG=1 ..." # To build with no assembly modules use "WMAKE NOASM=1 ..." -# To omit unshrinking support use "WMAKE NO_LZW=1 ..." +# To support unshrinking use "WMAKE LAWSUIT=1 ..." # To support unreducing, get the real unreduce.c and go "WMAKE OFFEND_RMS=1 ..." -# To include support for bzip2 decompression (only for 32-bit), get the bzip2 -# source distribution into the bzip2/ subfolder and start compilation -# with "WMAKE PM=1 USEBZ2=1 ..." # # Other options to be fed to the compiler can be specified in an environment # variable called LOCAL_UNZIP. @@ -52,9 +49,9 @@ !endif O = $(OBDIR)\ # comment here so backslash won't continue the line -!ifdef NO_LZW -cvars = $+$(cvars)$- -DLZW_CLEAN -avars = $+$(avars)$- -DLZW_CLEAN +!ifdef LAWSUIT +cvars = $+$(cvars)$- -DUSE_UNSHRINK +avars = $+$(avars)$- -DUSE_UNSHRINK # "$+$(foo)$-" means expand foo as it has been defined up to now; normally, # this Make defers inner expansion until the outer macro is expanded. !endif @@ -63,62 +60,40 @@ avars = $+$(avars)$- -DUSE_SMITH_CODE !endif -IZ_BZIP2 = bzip2 -!ifdef USEBZ2 -!ifdef PM -cvars = $+$(cvars)$- -DUSE_BZIP2 -I$(IZ_BZIP2) -bz2errob = $(O)ubz2err.obj -bz2errox = $(O)ubz2err.obj -BZIPLIB = $(IZ_BZIP2)/$(OBDIR)/bz2.lib -BZ2LNKLIB = lib {$(BZIPLIB)} -!else -bz2errob = -bz2errox = -BZIPLIB = -BZ2LNKLIB = -!endif -!else -bz2errob = -bz2errox = -BZIPLIB = -BZ2LNKLIB = -!endif - # The assembly hot-spot code in crc_i[3]86.asm is optional. This section # controls its usage. !ifdef NOASM -crcaob = -crcaof = -crcaox = +crcob = $(O)crc32.obj +crcof = $(O)crc32f.obj +crcox = $(O)crc32.obx !else # !NOASM cvars = $+$(cvars)$- -DASM_CRC ! ifdef PM -crcaob = $(O)crc_i386.obj -crcaof = $(O)crc_i38f.obj -crcaox = $(O)crc_i386.obx +crcob = $(O)crc_i386.obj +crcof = $(O)crc_i38f.obj +crcox = $(O)crc_i386.obx crc_s = win32\crc_i386.asm # requires that the win32 directory be present ! else -crcaob = $(O)crc_i86.obj -crcaof = $(O)crc_i8f.obj -crcaox = $(O)crc_i86.obx +crcob = $(O)crc_i86.obj +crcof = $(O)crc_i8f.obj +crcox = $(O)crc_i86.obx crc_s = msdos\crc_i86.asm ! endif !endif -# Our object files: OBJ[A-C] is for UnZip, OBJX for UnZipSFX, OBJF for fUnZip: +# Our object files: OBJA/OBJB is for UnZip, OBJX for UnZipSFX, OBJF for fUnZip: -OBJA1 = $(O)unzip.obj $(O)crc32.obj $(crcaob) $(O)crypt.obj $(O)envargs.obj +OBJA1 = $(O)unzip.obj $(crcob) $(O)crctab.obj $(O)crypt.obj $(O)envargs.obj OBJA = $(OBJA1) $(O)explode.obj $(O)extract.obj $(O)fileio.obj $(O)globals.obj -OBJB2 = $(O)inflate.obj $(O)list.obj $(O)match.obj $(O)process.obj -OBJB = $(OBJB2) $(O)ttyio.obj $(bz2errob) $(O)unreduce.obj -OBJC = $(O)unshrink.obj $(O)zipinfo.obj $(O)msdos.obj +OBJB2 = $(O)inflate.obj $(O)list.obj $(O)match.obj $(O)process.obj $(O)ttyio.obj +OBJB = $(OBJB2) $(O)unreduce.obj $(O)unshrink.obj $(O)zipinfo.obj $(O)msdos.obj -OBJX2 = $(O)unzip.obx $(O)crc32.obx $(crcaox) $(O)crypt.obx $(O)extract.obx +OBJX2 = $(O)unzip.obx $(crcox) $(O)crctab.obx $(O)crypt.obx $(O)extract.obx OBJX1 = $(OBJX2) $(O)fileio.obx $(O)globals.obx $(O)inflate.obx $(O)match.obx -OBJX = $(OBJX1) $(O)process.obx $(bz2errox) $(O)ttyio.obx $(O)msdos.obx +OBJX = $(OBJX1) $(O)process.obx $(O)ttyio.obx $(O)msdos.obx -OBJF1 = $(O)funzip.obj $(O)crc32f.obj $(crcaof) $(O)cryptf.obj $(O)globalsf.obj +OBJF1 = $(O)funzip.obj $(crcof) $(O)cryptf.obj $(O)globalsf.obj OBJF = $(OBJF1) $(O)inflatef.obj $(O)ttyiof.obj $(O)msdosf.obj # Common header files included by all C sources: @@ -205,17 +180,15 @@ f: fUnZip.exe .SYMBOLIC x: UnZipSFX.exe .SYMBOLIC -UnZip.exe: $(OBDIR) $(OBJA) $(OBJB) $(OBJC) $(BZIPLIB) +UnZip.exe: $(OBDIR) $(OBJA) $(OBJB) set WLK_VA=file {$(OBJA)} set WLK_VB=file {$(OBJB)} - set WLK_VC=file {$(OBJC)} $(BZ2LNKLIB) - $(link) $(lflags) $(ldebug) name $@ @WLK_VA @WLK_VB @WLK_VC + $(link) $(lflags) $(ldebug) name $@ @WLK_VA @WLK_VB set WLK_VA= set WLK_VB= - set WLK_VC= -# We use WLK_VA/WLK_VB/WLK_VC to keep the size of each command below 256 chars. +# We use WLK_VA/WLK_VB to keep the size of each command under 256 chars. -UnZipSFX.exe: $(OBDIR) $(OBJX) $(BZIPLIB) +UnZipSFX.exe: $(OBDIR) $(OBJX) set WLK_VX=file {$(OBJX)} $(link) $(lflags) $(ldebug) name $@ @WLK_VX set WLK_VX= @@ -230,19 +203,19 @@ # for UnZip ... -$(O)crc32.obj: crc32.c $(UNZIP_H) zip.h crc32.h -$(O)crypt.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +$(O)crc32.obj: crc32.c $(UNZIP_H) zip.h +$(O)crctab.obj: crctab.c $(UNZIP_H) zip.h +$(O)crypt.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(O)envargs.obj: envargs.c $(UNZIP_H) $(O)explode.obj: explode.c $(UNZIP_H) -$(O)extract.obj: extract.c $(UNZIP_H) crc32.h crypt.h -$(O)fileio.obj: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +$(O)extract.obj: extract.c $(UNZIP_H) crypt.h +$(O)fileio.obj: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h $(O)globals.obj: globals.c $(UNZIP_H) $(O)inflate.obj: inflate.c inflate.h $(UNZIP_H) $(O)list.obj: list.c $(UNZIP_H) $(O)match.obj: match.c $(UNZIP_H) -$(O)process.obj: process.c $(UNZIP_H) crc32.h +$(O)process.obj: process.c $(UNZIP_H) $(O)ttyio.obj: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -$(O)ubz2err.obj: ubz2err.c $(UNZIP_H) $(O)unreduce.obj: unreduce.c $(UNZIP_H) $(O)unshrink.obj: unshrink.c $(UNZIP_H) $(O)unzip.obj: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h @@ -250,16 +223,16 @@ # for UnZipSFX ... -$(O)crc32.obx: crc32.c $(UNZIP_H) zip.h crc32.h -$(O)crypt.obx: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h -$(O)extract.obx: extract.c $(UNZIP_H) crc32.h crypt.h -$(O)fileio.obx: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +$(O)crc32.obx: crc32.c $(UNZIP_H) zip.h +$(O)crctab.obx: crctab.c $(UNZIP_H) zip.h +$(O)crypt.obx: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h +$(O)extract.obx: extract.c $(UNZIP_H) crypt.h +$(O)fileio.obx: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h $(O)globals.obx: globals.c $(UNZIP_H) $(O)inflate.obx: inflate.c inflate.h $(UNZIP_H) $(O)match.obx: match.c $(UNZIP_H) -$(O)process.obx: process.c $(UNZIP_H) crc32.h +$(O)process.obx: process.c $(UNZIP_H) $(O)ttyio.obx: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -$(O)ubz2err.obx: ubz2err.c $(UNZIP_H) $(O)unzip.obx: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h # Special case object files: @@ -271,25 +244,25 @@ $(cc) $(cdebux) $(cflagx) $(cvars) -DSFX msdos\msdos.c -fo=$@ !ifndef NOASM -$(crcaob): $(crc_s) +$(crcob): $(crc_s) $(asm) $(aflags) $(avars) $(crc_s) -fo=$@ -$(crcaof): $(crc_s) +$(crcof): $(crc_s) $(asm) $(aflagf) $(avars) $(crc_s) -fo=$@ -$(crcaox): $(crc_s) +$(crcox): $(crc_s) $(asm) $(aflagx) $(avars) $(crc_s) -fo=$@ !endif # Variant object files for fUnZip, using $(cflagf): -$(O)funzip.obj: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +$(O)funzip.obj: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h $(cc) $(cdebux) $(cflagf) $(cvars) funzip.c -fo=$@ -$(O)crc32f.obj: crc32.c $(UNZIP_H) zip.h crc32.h +$(O)crc32f.obj: crc32.c $(UNZIP_H) zip.h $(cc) $(cdebux) $(cflagf) $(cvars) -DFUNZIP crc32.c -fo=$@ -$(O)cryptf.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +$(O)cryptf.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(cc) $(cdebux) $(cflagf) $(cvars) -DFUNZIP crypt.c -fo=$@ $(O)globalsf.obj: globals.c $(UNZIP_H) @@ -304,23 +277,13 @@ $(O)msdosf.obj: msdos\msdos.c $(UNZIP_H) $(cc) $(cdebux) $(cflagf) $(cvars) -DFUNZIP msdos\msdos.c -fo=$@ -# The bzip2 (de)compression library for BZIP2 support: -$(IZ_BZIP2)/$(OBDIR)/bz2.lib : .ALWAYS .RECHECK - $(MAKE) -h -f $(IZ_BZIP2)/makbz2iz.wat CC=$(cc) AR=lib386 & - CFLSYS="$(cdebug) $(cflags)" & - BZROOTDIR=$(IZ_BZIP2) BZOBDIR=$(IZ_BZIP2)/$(OBDIR) - # Creation of subdirectory for intermediate files $(OBDIR): -mkdir $@ # Unwanted file removal: -clean_bz2_lib: .SYMBOLIC - $(MAKE) -h -f $(IZ_BZIP2)/makbz2iz.wat & - BZROOTDIR=$(IZ_BZIP2) BZOBDIR=$(IZ_BZIP2)\$(OBDIR) clean - -clean: clean_bz2_lib .SYMBOLIC +clean: .SYMBOLIC del $(O)*.ob? cleaner: clean .SYMBOLIC diff -Nru unzip-6.0/msdos/msdos.c unzip-6.0/msdos/msdos.c --- unzip-6.0/msdos/msdos.c 2008-03-24 10:59:26.000000000 +0000 +++ unzip-6.0/msdos/msdos.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2008 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. @@ -25,7 +25,6 @@ volumelabel() (non-djgpp, non-emx) close_outfile() stamp_file() (TIMESTAMP only) - prepare_ISO_OEM_translat() dateformat() version() zcalloc() (16-bit, only) @@ -42,7 +41,6 @@ _is_executable() (djgpp 2.x) __crt0_glob_function() (djgpp 2.x) __crt0_load_environment_file() (djgpp 2.x) - dos_getcodepage() (all, ASM system call) screensize() (emx, Watcom 32-bit) int86x_realmode() (Watcom 32-bit) stat_bandaid() (Watcom) @@ -66,10 +64,6 @@ static int isfloppy OF((int nDrive)); static int z_dos_chmod OF((__GPRO__ ZCONST char *fname, int attributes)); static int volumelabel OF((ZCONST char *newlabel)); -#if (!defined(SFX) && !defined(WINDLL)) - static int is_running_on_windows OF((void)); -#endif -static int getdoscodepage OF((void)); static int created_dir; /* used by mapname(), checkdir() */ static int renamed_fullpath; /* ditto */ @@ -108,11 +102,6 @@ #endif static ZCONST char Far AttribsMayBeWrong[] = "\nwarning: file attributes may not be correct\n"; -#if (!defined(SFX) && !defined(WINDLL)) - static ZCONST char Far WarnUsedOnWindows[] = - "\n%s warning: You are using the MSDOS version on Windows.\n" - "Please try the native Windows version before reporting any problems.\n"; -#endif @@ -128,11 +117,7 @@ # define F_intdosx(ir,or,sr) int86x_realmode(0x21, ir, or, sr) # define XXX__MK_FP_IS_BROKEN #else -# if (defined(__DJGPP__) && (__DJGPP__ >= 2)) -# define WREGS(v,r) (v.w.r) -# else -# define WREGS(v,r) (v.x.r) -# endif +# define WREGS(v,r) (v.x.r) # define F_intdosx(ir,or,sr) intdosx(ir, or, sr) #endif @@ -1514,83 +1499,78 @@ * the file, this routine is optional (but most compilers support it). */ { - /* skip restoring time stamps on user's request */ - if (uO.D_flag <= 1) { #ifdef USE_EF_UT_TIME - dos_fdatetime dos_dt; - iztimes z_utime; - struct tm *t; + dos_fdatetime dos_dt; + iztimes z_utime; + struct tm *t; #endif /* USE_EF_UT_TIME */ /*--------------------------------------------------------------------------- - Copy and/or convert time and date variables, if necessary; then set - the file time/date. WEIRD BORLAND "BUG": if output is buffered, - and if run under at least some versions of DOS (e.g., 6.0), and if - files are smaller than DOS physical block size (i.e., 512 bytes) (?), - then files MAY NOT get timestamped correctly--apparently setftime() - occurs before any data are written to the file, and when file is - closed and buffers are flushed, timestamp is overwritten with - current time. Even with a 32K buffer, this does not seem to occur - with larger files. UnZip output is now unbuffered, but if it were - not, could still avoid problem by adding "fflush(outfile)" just - before setftime() call. Weird, huh? + Copy and/or convert time and date variables, if necessary; then set the + file time/date. WEIRD BORLAND "BUG": if output is buffered, and if run + under at least some versions of DOS (e.g., 6.0), and if files are smaller + than DOS physical block size (i.e., 512 bytes) (?), then files MAY NOT + get timestamped correctly--apparently setftime() occurs before any data + are written to the file, and when file is closed and buffers are flushed, + timestamp is overwritten with current time. Even with a 32K buffer, this + does not seem to occur with larger files. UnZip output is now unbuffered, + but if it were not, could still avoid problem by adding "fflush(outfile)" + just before setftime() call. Weird, huh? ---------------------------------------------------------------------------*/ #ifdef USE_EF_UT_TIME - if (G.extra_field && + if (G.extra_field && #ifdef IZ_CHECK_TZ - G.tz_is_valid && + G.tz_is_valid && #endif - (ef_scan_for_izux(G.extra_field, G.lrec.extra_field_length, 0, - G.lrec.last_mod_dos_datetime, &z_utime, NULL) - & EB_UT_FL_MTIME)) - { - TTrace((stderr, "close_outfile: Unix e.f. modif. time = %ld\n", - z_utime.mtime)); - /* round up (down if "up" overflows) to even seconds */ - if (z_utime.mtime & 1) - z_utime.mtime = (z_utime.mtime + 1 > z_utime.mtime) ? - z_utime.mtime + 1 : z_utime.mtime - 1; - TIMET_TO_NATIVE(z_utime.mtime) /* NOP unless MSC 7 or Macintosh */ - t = localtime(&(z_utime.mtime)); - } else - t = (struct tm *)NULL; - if (t != (struct tm *)NULL) { - if (t->tm_year < 80) { - dos_dt.z_dtf.zt_se = 0; - dos_dt.z_dtf.zt_mi = 0; - dos_dt.z_dtf.zt_hr = 0; - dos_dt.z_dtf.zd_dy = 1; - dos_dt.z_dtf.zd_mo = 1; - dos_dt.z_dtf.zd_yr = 0; - } else { - dos_dt.z_dtf.zt_se = t->tm_sec >> 1; - dos_dt.z_dtf.zt_mi = t->tm_min; - dos_dt.z_dtf.zt_hr = t->tm_hour; - dos_dt.z_dtf.zd_dy = t->tm_mday; - dos_dt.z_dtf.zd_mo = t->tm_mon + 1; - dos_dt.z_dtf.zd_yr = t->tm_year - 80; - } + (ef_scan_for_izux(G.extra_field, G.lrec.extra_field_length, 0, + G.lrec.last_mod_dos_datetime, &z_utime, NULL) + & EB_UT_FL_MTIME)) + { + TTrace((stderr, "close_outfile: Unix e.f. modif. time = %ld\n", + z_utime.mtime)); + /* round up (down if "up" overflows) to even seconds */ + if (z_utime.mtime & 1) + z_utime.mtime = (z_utime.mtime + 1 > z_utime.mtime) ? + z_utime.mtime + 1 : z_utime.mtime - 1; + TIMET_TO_NATIVE(z_utime.mtime) /* NOP unless MSC 7.0 or Macintosh */ + t = localtime(&(z_utime.mtime)); + } else + t = (struct tm *)NULL; + if (t != (struct tm *)NULL) { + if (t->tm_year < 80) { + dos_dt.z_dtf.zt_se = 0; + dos_dt.z_dtf.zt_mi = 0; + dos_dt.z_dtf.zt_hr = 0; + dos_dt.z_dtf.zd_dy = 1; + dos_dt.z_dtf.zd_mo = 1; + dos_dt.z_dtf.zd_yr = 0; } else { - dos_dt.z_dostime = G.lrec.last_mod_dos_datetime; + dos_dt.z_dtf.zt_se = t->tm_sec >> 1; + dos_dt.z_dtf.zt_mi = t->tm_min; + dos_dt.z_dtf.zt_hr = t->tm_hour; + dos_dt.z_dtf.zd_dy = t->tm_mday; + dos_dt.z_dtf.zd_mo = t->tm_mon + 1; + dos_dt.z_dtf.zd_yr = t->tm_year - 80; } + } else { + dos_dt.z_dostime = G.lrec.last_mod_dos_datetime; + } # ifdef __TURBOC__ - setftime(fileno(G.outfile), &dos_dt.ft); + setftime(fileno(G.outfile), &dos_dt.ft); # else - _dos_setftime(fileno(G.outfile), dos_dt.zft.zdate, dos_dt.zft.ztime); + _dos_setftime(fileno(G.outfile), dos_dt.zft.zdate, dos_dt.zft.ztime); # endif #else /* !USE_EF_UT_TIME */ # ifdef __TURBOC__ - setftime(fileno(G.outfile), - (struct ftime *)(&(G.lrec.last_mod_dos_datetime))); + setftime(fileno(G.outfile), + (struct ftime *)(&(G.lrec.last_mod_dos_datetime))); # else - _dos_setftime(fileno(G.outfile), - (ush)(G.lrec.last_mod_dos_datetime >> 16), - (ush)(G.lrec.last_mod_dos_datetime)); + _dos_setftime(fileno(G.outfile), (ush)(G.lrec.last_mod_dos_datetime >> 16), + (ush)(G.lrec.last_mod_dos_datetime)); # endif #endif /* ?USE_EF_UT_TIME */ - } /*--------------------------------------------------------------------------- And finally we can close the file...at least everybody agrees on how to @@ -1665,46 +1645,6 @@ -void prepare_ISO_OEM_translat(__G) - __GDEF -{ - switch (getdoscodepage()) { - case 437: - case 850: - case 858: -#ifdef IZ_ISO2OEM_ARRAY - iso2oem = iso2oem_850; -#endif -#ifdef IZ_OEM2ISO_ARRAY - oem2iso = oem2iso_850; -#endif - - case 932: /* Japanese */ - case 949: /* Korean */ - case 936: /* Chinese, simple */ - case 950: /* Chinese, traditional */ - case 874: /* Thai */ - case 1258: /* Vietnamese */ -#ifdef IZ_ISO2OEM_ARRAY - iso2oem = NULL; -#endif -#ifdef IZ_OEM2ISO_ARRAY - oem2iso = NULL; -#endif - - default: -#ifdef IZ_ISO2OEM_ARRAY - iso2oem = NULL; -#endif -#ifdef IZ_OEM2ISO_ARRAY - oem2iso = NULL; -#endif - } -} /* end function prepare_ISO_OEM_translat() */ - - - - #ifndef SFX /*************************/ @@ -1783,7 +1723,7 @@ case 2: return DF_YMD; } -#endif /* !WINDLL */ +#endif /* !WINDLL && !WATCOMC_386 */ return DF_MDY; /* default for systems without locale info */ @@ -1794,52 +1734,6 @@ #ifndef WINDLL -/**************************************/ -/* Function is_running_on_windows() */ -/**************************************/ - -static int is_running_on_windows(void) -{ - char *var = getenv("OS"); - - /* if the OS env.var says 'Windows_NT' then */ - /* we're likely running on a variant of WinNT */ - if ((var != NULL) && (strcmp("Windows_NT", var) == 0)) - return TRUE; - - /* if the windir env.var is non-null then */ - /* we're likely running on a variant of Win9x */ - /* DOS mode of Win9x doesn't define windir, only winbootdir */ - /* NT's command.com can't see lowercase env. vars */ - var = getenv("windir"); - if ((var != NULL) && (var[0] != '\0')) - return TRUE; - - return FALSE; -} - - -/**********************************/ -/* Function check_for_windows() */ -/**********************************/ - -void check_for_windows(ZCONST char *app) -{ -#ifdef SMALL_MEM - char msg_str[160]; /* enough space for two 79-char-lines */ - - (void)zfstrcpy(msg_buf, WarnUsedOnWindows) -#else -# define msg_str WarnUsedOnWindows -#endif - /* Print a warning for users running under Windows */ - /* to reduce bug reports due to running DOS version */ - /* under Windows, when Windows version usually works correctly */ - if (is_running_on_windows()) - printf(msg_str, app); -} /* end function check_for_windows() */ - - /************************/ /* Function version() */ /************************/ @@ -2280,29 +2174,6 @@ -static int getdoscodepage(void) -{ - union REGS regs; - - WREGS(regs,ax) = 0x6601; -#ifdef __EMX__ - _int86(0x21, ®s, ®s); - if (WREGS(regs,flags) & 1) -#else - intdos(®s, ®s); - if (WREGS(regs,cflag)) -#endif - { - Trace((stderr, - "error in DOS function 0x66 (AX = 0x%04x): default to 850...\n", - (unsigned int)(WREGS(regs,ax)))); - return 858; - } else - return WREGS(regs,bx); -} - - - #ifdef __EMX__ #ifdef MORE diff -Nru unzip-6.0/novell/Contents unzip-6.0/novell/Contents --- unzip-6.0/novell/Contents 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/novell/Contents 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,15 @@ +Contents of the "novell" subdirectory for UnZip 5.41 and later: + + Contents this file + README notes about Novell NetWare port + makefile.wat makefile for compiling unzip.nlm using Watcom C 11.0 + nlmcfg.h OS-dependent configuration, included by unzpriv.h + novell.c OS-dependent UnZip routines for NetWare + unzip.build Korn-shell build script + unzip.link Watcom link directive file + +Notes: + +This port is courtesy of Vance Baarda (Novell NetWare Server Install). +It is designed to compile with the Watcom C compiler. See the README +for further info. diff -Nru unzip-6.0/novell/makefile.wat unzip-6.0/novell/makefile.wat --- unzip-6.0/novell/makefile.wat 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/novell/makefile.wat 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,147 @@ +#------------------------------------------------------------------------------ +# Makefile for UnZip 5.5 and later Mark Wright and others +# Version: Watcom C 10 Feb 01 +#------------------------------------------------------------------------------ + + +# WARNING: this is a hacked-up version of an ancient (1993) makefile. It will +# not work without modifications to the UnZip 5.3 sources. This makefile is +# (for now) included only for completeness and as a starting point for a real +# Novell Netware NLM port. (This makefile was intended for Netware 3.11.) + + +# Commands to execute before making any target +# Set environment variables for compiler +.BEFORE + @set inc386=\watcom\novh + @set wcg386=\watcom\binp\wcl386.exe + +# Macro definitions +NLMNAME = unzip +DESCRIPTION = unzip utility +VERSION = 5.5.0 +COPYRIGHT = Copyright 1990-2001 Info-ZIP (Zip-Bugs@lists.wku.edu). +SCREENNAME = Info-ZIP's UnZip Utility +CLIBIMP = \watcom\novi\clib.imp +OBJFILE = $NLMNAME.obj +PRELUDE = \watcom\novi\prelude.obj + +# Compile switches +# d2 include full symbolic debugging information +# 5s generate 586 instructions, use stack-based argument-passing conventions +# zdp allows DS register to "peg" it to DGROUP +# zq "quiet" mode +# NLM produce Novell Loadable Module +# DEBUG include debug info + +CC = wcc386 +# COMPILE = wcc386 -zq -d2 -3s -zdp -w4 -DNLM +# COMPILE = wcc386 -zq -d2 -5s -zdp -w4 -DNLM $(LOCAL_UNZIP) +COMPILE = $(CC) -zq -olax -5s -zp1 -ei -ez -ri -w4 -DNLM -DN_PLAT_NLM -U_WIN32 $(LOCAL_UNZIP) +LINK = wlink +DESTDIR = target + +# All .obj files implicitly depend on .c files +.c.obj : + @echo Compiling $[*.c + @$COMPILE $[*.c + + +UNZIP_H = unzip.h unzpriv.h globals.h novell/nlmcfg.h + +crc32.obj: crc32.c $(UNZIP_H) zip.h +crctab.obj: crctab.c $(UNZIP_H) zip.h +crypt.obj: crypt.c $(UNZIP_H) crypt.h ttyio.h zip.h +envargs.obj: envargs.c $(UNZIP_H) +explode.obj: explode.c $(UNZIP_H) +extract.obj: extract.c $(UNZIP_H) crypt.h +fileio.obj: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h +globals.obj: globals.c $(UNZIP_H) +inflate.obj: inflate.c inflate.h $(UNZIP_H) +list.obj: list.c $(UNZIP_H) +match.obj: match.c $(UNZIP_H) +process.obj: process.c $(UNZIP_H) +ttyio.obj: ttyio.c $(UNZIP_H) crypt.h ttyio.h zip.h +unreduce.obj: unreduce.c $(UNZIP_H) +unshrink.obj: unshrink.c $(UNZIP_H) +unzip.obj: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h +zipinfo.obj: zipinfo.c $(UNZIP_H) + +# individual dependencies and action rules: +#crc_i86.obj: msdos\crc_i86.asm +# $(AS) $(ASFLAGS) -D$(ASUNMODEL) msdos\crc_i86.asm, $@; + +novell.obj: novell/novell.c $(UNZIP_H) + $(CC) -c -A$(UNMODEL) $(CFLAGS) novell/novell.c + + +OBJ01 = unzip.obj +OBJ02 = crc32.obj +OBJ03 = crctab.obj +OBJ04 = crypt.obj +OBJ05 = envargs.obj +OBJ06 = explode.obj +OBJ07 = extract.obj +OBJ08 = fileio.obj +OBJ09 = globals.obj +OBJ10 = inflate.obj +OBJ11 = list.obj +OBJ12 = match.obj +OBJ13 = process.obj +OBJ14 = ttyio.obj +OBJ15 = unreduce.obj +OBJ16 = unshrink.obj +OBJ17 = zipinfo.obj +OBJ18 = novell.obj +#OBJ19 = $(ASMOBJS) +OBJS = $OBJFILE $OBJ01 $OBJ02 $OBJ03 $OBJ04 $OBJ05 $OBJ06 $OBJ07 $OBJ08 \ + $OBJ09 $OBJ10 $OBJ11 $OBJ12 $OBJ13 $OBJ14 $OBJ15 $OBJ16 $OBJ17 \ + $OBJ18 + + +# if .obj or .lnk files are modified, link new .nlm and maybe copy to DESTDIR +$NLMNAME.nlm : $OBJS + @echo Linking... + @$LINK @$NLMNAME +# @echo Copying $[*.nlm to $DESTDIR +# @copy $NLMNAME.nlm $DESTDIR + + +# if makefile is modified, create new linker option file +$NLMNAME.lnk : $NLMNAME.mak + @echo FORMAT NOVELL NLM '$DESCRIPTION' >$NLMNAME.lnk + @echo OPTION THREADNAME '$NLMNAME' >>$NLMNAME.lnk + @echo OPTION SCREENNAME '$SCREENNAME' >>$NLMNAME.lnk + @echo NAME $NLMNAME >>$NLMNAME.lnk + @echo OPTION VERSION=$VERSION >>$NLMNAME.lnk + @echo OPTION COPYRIGHT '$COPYRIGHT' >>$NLMNAME.lnk + @echo DEBUG NOVELL >>$NLMNAME.lnk + @echo DEBUG ALL >>$NLMNAME.lnk + @echo OPTION NODEFAULTLIBS >>$NLMNAME.lnk + @echo OPTION DOSSEG >>$NLMNAME.lnk + @echo OPTION STACK=40000 >>$NLMNAME.lnk + @echo OPTION CASEEXACT >>$NLMNAME.lnk + @echo OPTION PSEUDOPREEMPTION >>$NLMNAME.lnk + @echo OPTION MAP >>$NLMNAME.lnk + @echo FILE $PRELUDE >>$NLMNAME.lnk + @echo FILE $OBJFILE >>$NLMNAME.lnk + @echo FILE $OBJ01 >>$NLMNAME.lnk + @echo FILE $OBJ02 >>$NLMNAME.lnk + @echo FILE $OBJ03 >>$NLMNAME.lnk + @echo FILE $OBJ04 >>$NLMNAME.lnk + @echo FILE $OBJ05 >>$NLMNAME.lnk + @echo FILE $OBJ06 >>$NLMNAME.lnk + @echo FILE $OBJ07 >>$NLMNAME.lnk + @echo FILE $OBJ08 >>$NLMNAME.lnk + @echo FILE $OBJ09 >>$NLMNAME.lnk + @echo FILE $OBJ10 >>$NLMNAME.lnk + @echo FILE $OBJ11 >>$NLMNAME.lnk + @echo FILE $OBJ12 >>$NLMNAME.lnk + @echo FILE $OBJ13 >>$NLMNAME.lnk + @echo FILE $OBJ14 >>$NLMNAME.lnk + @echo FILE $OBJ15 >>$NLMNAME.lnk + @echo FILE $OBJ16 >>$NLMNAME.lnk + @echo FILE $OBJ17 >>$NLMNAME.lnk + @echo FILE $OBJ18 >>$NLMNAME.lnk + @echo MODULE clib >>$NLMNAME.lnk + @echo IMPORT @$CLIBIMP >>$NLMNAME.lnk diff -Nru unzip-6.0/novell/nlmcfg.h unzip-6.0/novell/nlmcfg.h --- unzip-6.0/novell/nlmcfg.h 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/novell/nlmcfg.h 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,33 @@ +/* + Copyright (c) 1990-2000 Info-ZIP. All rights reserved. + + See the accompanying file LICENSE, version 2000-Apr-09 or later + (the contents of which are also included in unzip.h) for terms of use. + If, for some reason, all these files are missing, the Info-ZIP license + also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html +*/ +#ifdef NLM +# include +# include +# include +# include +# include +# include +# define DIRENT +# include +# ifndef DATE_FORMAT +# define DATE_FORMAT DF_MDY +# endif +# define lenEOL 2 +# define PutNativeEOL {*q++ = native(CR); *q++ = native(LF);} +# define USE_FWRITE /* write() fails to support textmode output */ +# if (!defined(NOTIMESTAMP) && !defined(TIMESTAMP)) +# define TIMESTAMP +# endif +# define MAIN main +# define DECLARE_TIMEZONE +# define SCREENWIDTH 80 +# define SCREENSIZE(scrrows, scrcols) screensize(scrrows, scrcols) + void InitUnZipConsole OF((void)); + int screensize OF((int *tt_rows, int *tt_cols)); +#endif /* NLM */ diff -Nru unzip-6.0/novell/nlm_EOL.pat unzip-6.0/novell/nlm_EOL.pat --- unzip-6.0/novell/nlm_EOL.pat 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/novell/nlm_EOL.pat 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,82 @@ +diff -rc2 ./fileio.c e:fileio.c +*** ./fileio.c Sat Dec 4 19:58:26 1999 +--- e:fileio.c Sat Dec 4 20:54:10 1999 +*************** +*** 85,88 **** +--- 85,91 ---- + (win_fprintf(pG, strm, (extent)len, (char far *)buf) != (int)(len)) + #else /* !WINDLL */ ++ #ifdef NLM ++ # define WriteError(buf,len,strm) nlm_WriteError(buf, (extent)(len), strm) ++ #else /* !NLM */ + # ifdef USE_FWRITE + # define WriteError(buf,len,strm) \ +*************** +*** 92,95 **** +--- 95,99 ---- + ((extent)write(fileno(strm),(char *)(buf),(extent)(len)) != (extent)(len)) + # endif ++ #endif /* ?NLM */ + #endif /* ?WINDLL */ + +diff -rc2 ./novell/nlmcfg.h e:novell/nlmcfg.h +*** ./novell/nlmcfg.h Sat Dec 4 20:39:20 1999 +--- e:novell/nlmcfg.h Sat Dec 4 21:20:36 1999 +*************** +*** 21,25 **** + # define lenEOL 2 + # define PutNativeEOL {*q++ = native(CR); *q++ = native(LF);} +- # define USE_FWRITE /* write() fails to support textmode output */ + # if (!defined(NOTIMESTAMP) && !defined(TIMESTAMP)) + # define TIMESTAMP +--- 21,24 ---- +*************** +*** 30,32 **** +--- 29,32 ---- + void InitUnZipConsole OF((void)); + int screenlines OF((void)); ++ int nlm_WriteError OF((uch *buf, extent len, FILE *strm)); + #endif /* NLM */ +diff -rc2 ./novell/novell.c e:novell/novell.c +*** ./novell/novell.c Sat Dec 4 21:11:52 1999 +--- e:novell/novell.c Sat Dec 4 21:28:38 1999 +*************** +*** 22,25 **** +--- 22,26 ---- + version() + screenlines() ++ nlm_WriteError() + + ---------------------------------------------------------------------------*/ +*************** +*** 821,822 **** +--- 822,850 ---- + + #endif /* MORE */ ++ ++ ++ /*******************************/ ++ /* Function nlm_WriteError() */ ++ /*******************************/ ++ ++ int nlm_WriteError(buf, len, strm) ++ uch *buf; ++ extent len; ++ FILE *strm; ++ { ++ /* The write() implementation in the Novell C RTL lacks support of ++ text-mode streams (fails to translate '\n' into "CR-LF" when ++ writing to text-mode channels like the console). ++ In contrast, fwrite() takes into account when an output stream ++ was opened in text-mode, but fails to handle output of large ++ buffers correctly. ++ So, we have to use Unix I/O style write() when emitting data ++ to "regular" files but switch over to stdio's fwrite() when ++ writing to the console streams. ++ */ ++ if ((strm == stdout)) || (file == stderr)) { ++ return ((extent)fwrite((char *)buf, 1, len, strm) != len); ++ } else { ++ return ((extent)write(fileno(strm), (char *)buf, len) != len); ++ } ++ } /* end function nlm_WriteError() */ diff -Nru unzip-6.0/novell/novell.c unzip-6.0/novell/novell.c --- unzip-6.0/novell/novell.c 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/novell/novell.c 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,911 @@ +/* + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. + + See the accompanying file LICENSE, version 2000-Apr-09 or later + (the contents of which are also included in unzip.h) for terms of use. + If, for some reason, all these files are missing, the Info-ZIP license + also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html +*/ +/*--------------------------------------------------------------------------- + + novell.c + + This file implements these functions for a NetWare Loadable Module (NLM): + + Contains: InitUnZipConsole() + do_wild() + mapattr() + mapname() + checkdir() + close_outfile() + stamp_file() + version() + screensize() + + ---------------------------------------------------------------------------*/ + + +#define UNZIP_INTERNAL +#include "unzip.h" +#include +#include +#include +#include +#include +#include + +#ifdef ACORN_FTYPE_NFS +/* Acorn bits for NFS filetyping */ +typedef struct { + uch ID[2]; + uch size[2]; + uch ID_2[4]; + uch loadaddr[4]; + uch execaddr[4]; + uch attr[4]; +} RO_extra_block; + +#endif /* ACORN_FTYPE_NFS */ + +static int created_dir; /* used in mapname(), checkdir() */ +static int renamed_fullpath; /* ditto */ + + +/*********************************/ +/* Function InitUnZipConsole() */ +/*********************************/ + +void InitUnZipConsole() +{ + unsigned int myHandle = GetNLMHandle(); + unsigned int *activeScreen = + ImportSymbol(myHandle, "activeScreen"); + unsigned int *systemConsoleScreen = + ImportSymbol(myHandle, "systemConsoleScreen"); + void (*pUseAccurateCaseForPaths)(int) = + ImportSymbol(myHandle, "UseAccurateCaseForPaths"); + + if (!activeScreen || !systemConsoleScreen || + *activeScreen == *systemConsoleScreen) + CreateScreen("Info-ZIP UnZip Utility", 0); + else + CreateScreen("System Console", DONT_AUTO_ACTIVATE); + + SetCurrentNameSpace(NW_NS_LONG); + if (pUseAccurateCaseForPaths) + pUseAccurateCaseForPaths(TRUE); + + UnimportSymbol(myHandle, "activeScreen"); + UnimportSymbol(myHandle, "systemConsoleScreen"); + UnimportSymbol(myHandle, "UseAccurateCaseForPaths"); +} + + +/**********************/ +/* Function do_wild() */ /* for porting: dir separator; match(ignore_case) */ +/**********************/ + +char *do_wild(__G__ wildspec) + __GDEF + ZCONST char *wildspec; /* only used first time on a given dir */ +{ + static DIR *wild_dir = (DIR *)NULL; + static ZCONST char *wildname; + static char *dirname, matchname[FILNAMSIZ]; + static int notfirstcall=FALSE, have_dirname, dirnamelen; + struct dirent *file; + + /* Even when we're just returning wildspec, we *always* do so in + * matchname[]--calling routine is allowed to append four characters + * to the returned string, and wildspec may be a pointer to argv[]. + */ + if (!notfirstcall) { /* first call: must initialize everything */ + notfirstcall = TRUE; + + if (!iswild(wildspec)) { + strncpy(matchname, wildspec, FILNAMSIZ); + matchname[FILNAMSIZ-1] = '\0'; + have_dirname = FALSE; + dir = NULL; + return matchname; + } + + /* break the wildspec into a directory part and a wildcard filename */ + if ((wildname = strrchr(wildspec, '/')) == (ZCONST char *)NULL) { + dirname = "."; + dirnamelen = 1; + have_dirname = FALSE; + wildname = wildspec; + } else { + ++wildname; /* point at character after '/' */ + dirnamelen = wildname - wildspec; + if ((dirname = (char *)malloc(dirnamelen+1)) == (char *)NULL) { + Info(slide, 0x201, ((char *)slide, + "warning: cannot allocate wildcard buffers\n")); + strncpy(matchname, wildspec, FILNAMSIZ); + matchname[FILNAMSIZ-1] = '\0'; + return matchname; /* but maybe filespec was not a wildcard */ + } + strncpy(dirname, wildspec, dirnamelen); + dirname[dirnamelen] = '\0'; /* terminate for strcpy below */ + have_dirname = TRUE; + } + + if ((wild_dir = opendir(dirname)) != (DIR *)NULL) { + while ((file = readdir(wild_dir)) != (struct dirent *)NULL) { + Trace((stderr, "do_wild: readdir returns %s\n", + FnFilter1(file->d_name))); + if (file->d_name[0] == '.' && wildname[0] != '.') + continue; /* Unix: '*' and '?' do not match leading dot */ + if (match(file->d_name, wildname, 0 WISEP) && /* 0=case sens.*/ + /* skip "." and ".." directory entries */ + strcmp(file->d_name, ".") && strcmp(file->d_name, "..")) { + Trace((stderr, "do_wild: match() succeeds\n")); + if (have_dirname) { + strcpy(matchname, dirname); + strcpy(matchname+dirnamelen, file->d_name); + } else + strcpy(matchname, file->d_name); + return matchname; + } + } + /* if we get to here directory is exhausted, so close it */ + closedir(wild_dir); + wild_dir = (DIR *)NULL; + } + + /* return the raw wildspec in case that works (e.g., directory not + * searchable, but filespec was not wild and file is readable) */ + strncpy(matchname, wildspec, FILNAMSIZ); + matchname[FILNAMSIZ-1] = '\0'; + return matchname; + } + + /* last time through, might have failed opendir but returned raw wildspec */ + if (wild_dir == (DIR *)NULL) { + notfirstcall = FALSE; /* nothing left to try--reset for new wildspec */ + if (have_dirname) + free(dirname); + return (char *)NULL; + } + + /* If we've gotten this far, we've read and matched at least one entry + * successfully (in a previous call), so dirname has been copied into + * matchname already. + */ + while ((file = readdir(wild_dir)) != (struct dirent *)NULL) { + Trace((stderr, "do_wild: readdir returns %s\n", + FnFilter1(file->d_name))); + if (file->d_name[0] == '.' && wildname[0] != '.') + continue; /* Unix: '*' and '?' do not match leading dot */ + if (match(file->d_name, wildname, 0 WISEP)) { /* 0 == case sens. */ + Trace((stderr, "do_wild: match() succeeds\n")); + if (have_dirname) { + /* strcpy(matchname, dirname); */ + strcpy(matchname+dirnamelen, file->d_name); + } else + strcpy(matchname, file->d_name); + return matchname; + } + } + + closedir(wild_dir); /* have read at least one entry; nothing left */ + wild_dir = (DIR *)NULL; + notfirstcall = FALSE; /* reset for new wildspec */ + if (have_dirname) + free(dirname); + return (char *)NULL; + +} /* end function do_wild() */ + + +/**********************/ +/* Function mapattr() */ +/**********************/ + +int mapattr(__G) + __GDEF +{ + ulg tmp = G.crec.external_file_attributes; + + G.pInfo->file_attr = 0; + /* initialized to 0 for check in "default" branch below... */ + + switch (G.pInfo->hostnum) { + case AMIGA_: + tmp = (unsigned)(tmp>>17 & 7); /* Amiga RWE bits */ + G.pInfo->file_attr = (unsigned)(tmp<<6 | tmp<<3 | tmp); + break; + case UNIX_: + case VMS_: + case ACORN_: + case ATARI_: + case ATHEOS_: + case BEOS_: + case QDOS_: + case TANDEM_: + G.pInfo->file_attr = (unsigned)(tmp >> 16); + if (G.pInfo->file_attr != 0 || !G.extra_field) { + return 0; + } else { + /* Some (non-Info-ZIP) implementations of Zip for Unix and + * VMS (and probably others ??) leave 0 in the upper 16-bit + * part of the external_file_attributes field. Instead, they + * store file permission attributes in some extra field. + * As a work-around, we search for the presence of one of + * these extra fields and fall back to the MSDOS compatible + * part of external_file_attributes if one of the known + * e.f. types has been detected. + * Later, we might implement extraction of the permission + * bits from the VMS extra field. But for now, the work-around + * should be sufficient to provide "readable" extracted files. + * (For ASI Unix e.f., an experimental remap from the e.f. + * mode value IS already provided!) + */ + ush ebID; + unsigned ebLen; + uch *ef = G.extra_field; + unsigned ef_len = G.crec.extra_field_length; + int r = FALSE; + + while (!r && ef_len >= EB_HEADSIZE) { + ebID = makeword(ef); + ebLen = (unsigned)makeword(ef+EB_LEN); + if (ebLen > (ef_len - EB_HEADSIZE)) + /* discoverd some e.f. inconsistency! */ + break; + switch (ebID) { + case EF_ASIUNIX: + if (ebLen >= (EB_ASI_MODE+2)) { + G.pInfo->file_attr = + (unsigned)makeword(ef+(EB_HEADSIZE+EB_ASI_MODE)); + /* force stop of loop: */ + ef_len = (ebLen + EB_HEADSIZE); + break; + } + /* else: fall through! */ + case EF_PKVMS: + /* "found nondecypherable e.f. with perm. attr" */ + r = TRUE; + default: + break; + } + ef_len -= (ebLen + EB_HEADSIZE); + ef += (ebLen + EB_HEADSIZE); + } + if (!r) + return 0; + } + /* fall through! */ + /* all remaining cases: expand MSDOS read-only bit into write perms */ + case FS_FAT_: + /* PKWARE's PKZip for Unix marks entries as FS_FAT_, but stores the + * Unix attributes in the upper 16 bits of the external attributes + * field, just like Info-ZIP's Zip for Unix. We try to use that + * value, after a check for consistency with the MSDOS attribute + * bits (see below). + */ + G.pInfo->file_attr = (unsigned)(tmp >> 16); + /* fall through! */ + case FS_HPFS_: + case FS_NTFS_: + case MAC_: + case TOPS20_: + default: + /* Ensure that DOS subdir bit is set when the entry's name ends + * in a '/'. Some third-party Zip programs fail to set the subdir + * bit for directory entries. + */ + if ((tmp & 0x10) == 0) { + extent fnlen = strlen(G.filename); + if (fnlen > 0 && G.filename[fnlen-1] == '/') + tmp |= 0x10; + } + /* read-only bit --> write perms; subdir bit --> dir exec bit */ + tmp = !(tmp & 1) << 1 | (tmp & 0x10) >> 4; + if ((G.pInfo->file_attr & 0700) == (unsigned)(0400 | tmp<<6)) + /* keep previous G.pInfo->file_attr setting, when its "owner" + * part appears to be consistent with DOS attribute flags! + */ + return 0; + G.pInfo->file_attr = (unsigned)(0444 | tmp<<6 | tmp<<3 | tmp); + break; + } /* end switch (host-OS-created-by) */ + + /* for originating systems with no concept of "group," "other," "system": */ + umask( (int)(tmp=umask(0)) ); /* apply mask to expanded r/w(/x) perms */ + G.pInfo->file_attr &= ~tmp; + + return 0; + +} /* end function mapattr() */ + + + + +/**********************/ +/* Function mapname() */ +/**********************/ + +int mapname(__G__ renamed) + __GDEF + int renamed; +/* + * returns: + * MPN_OK - no problem detected + * MPN_INF_TRUNC - caution (truncated filename) + * MPN_INF_SKIP - info "skip entry" (dir doesn't exist) + * MPN_ERR_SKIP - error -> skip entry + * MPN_ERR_TOOLONG - error -> path is too long + * MPN_NOMEM - error (memory allocation failed) -> skip entry + * [also MPN_VOL_LABEL, MPN_CREATED_DIR] + */ +{ + char pathcomp[FILNAMSIZ]; /* path-component buffer */ + char *pp, *cp=(char *)NULL; /* character pointers */ + char *lastsemi=(char *)NULL; /* pointer to last semi-colon in pathcomp */ +#ifdef ACORN_FTYPE_NFS + char *lastcomma=(char *)NULL; /* pointer to last comma in pathcomp */ + RO_extra_block *ef_spark; /* pointer Acorn FTYPE ef block */ +#endif + int killed_ddot = FALSE; /* is set when skipping "../" pathcomp */ + int error = MPN_OK; + register unsigned workch; /* hold the character being tested */ + + +/*--------------------------------------------------------------------------- + Initialize various pointers and counters and stuff. + ---------------------------------------------------------------------------*/ + + if (G.pInfo->vollabel) + return MPN_VOL_LABEL; /* can't set disk volume labels in Netware */ + + /* can create path as long as not just freshening, or if user told us */ + G.create_dirs = (!uO.fflag || renamed); + + created_dir = FALSE; /* not yet */ + + /* user gave full pathname: don't prepend rootpath */ + renamed_fullpath = (renamed && (*G.filename == '/')); + + if (checkdir(__G__ (char *)NULL, INIT) == MPN_NOMEM) + return MPN_NOMEM; /* initialize path buffer, unless no memory */ + + *pathcomp = '\0'; /* initialize translation buffer */ + pp = pathcomp; /* point to translation buffer */ + if (uO.jflag) /* junking directories */ + cp = (char *)strrchr(G.filename, '/'); + if (cp == (char *)NULL) /* no '/' or not junking dirs */ + cp = G.filename; /* point to internal zipfile-member pathname */ + else + ++cp; /* point to start of last component of path */ + +/*--------------------------------------------------------------------------- + Begin main loop through characters in filename. + ---------------------------------------------------------------------------*/ + + while ((workch = (uch)*cp++) != 0) { + + switch (workch) { + case '/': /* can assume -j flag not given */ + *pp = '\0'; + if (strcmp(pathcomp, ".") == 0) { + /* don't bother appending "./" to the path */ + *pathcomp = '\0'; + } else if (!uO.ddotflag && strcmp(pathcomp, "..") == 0) { + /* "../" dir traversal detected, skip over it */ + *pathcomp = '\0'; + killed_ddot = TRUE; /* set "show message" flag */ + } + /* when path component is not empty, append it now */ + if (*pathcomp != '\0' && + ((error = checkdir(__G__ pathcomp, APPEND_DIR)) + & MPN_MASK) > MPN_INF_TRUNC) + return error; + pp = pathcomp; /* reset conversion buffer for next piece */ + lastsemi = (char *)NULL; /* leave direct. semi-colons alone */ + break; + + case ';': /* VMS version (or DEC-20 attrib?) */ + lastsemi = pp; + *pp++ = ';'; /* keep for now; remove VMS ";##" */ + break; /* later, if requested */ + +#ifdef ACORN_FTYPE_NFS + case ',': /* NFS filetype extension */ + lastcomma = pp; + *pp++ = ','; /* keep for now; may need to remove */ + break; /* later, if requested */ +#endif + + default: + /* allow European characters in filenames: */ + if (isprint(workch) || (128 <= workch && workch <= 254)) + *pp++ = (char)workch; + } /* end switch */ + + } /* end while loop */ + + /* Show warning when stripping insecure "parent dir" path components */ + if (killed_ddot && QCOND2) { + Info(slide, 0, ((char *)slide, + "warning: skipped \"../\" path component(s) in %s\n", + FnFilter1(G.filename))); + if (!(error & ~MPN_MASK)) + error = (error & MPN_MASK) | PK_WARN; + } + +/*--------------------------------------------------------------------------- + Report if directory was created (and no file to create: filename ended + in '/'), check name to be sure it exists, and combine path and name be- + fore exiting. + ---------------------------------------------------------------------------*/ + + if (G.filename[strlen(G.filename) - 1] == '/') { + checkdir(__G__ G.filename, GETPATH); + if (created_dir) { + if (QCOND2) { + Info(slide, 0, ((char *)slide, " creating: %s\n", + FnFilter1(G.filename))); + } +#if !defined(NO_CHMOD) && !defined(NLM) + /* In NetWare, chmod does not work on directories */ + /* set approx. dir perms (make sure can still read/write in dir) */ + if (chmod(G.filename, (0xffff & G.pInfo->file_attr) | 0700)) + perror("chmod (directory attributes) error"); +#endif + /* set dir time (note trailing '/') */ + return (error & ~MPN_MASK) | MPN_CREATED_DIR; + } + /* dir existed already; don't look for data to extract */ + return (error & ~MPN_MASK) | MPN_INF_SKIP; + } + + *pp = '\0'; /* done with pathcomp: terminate it */ + + /* if not saving them, remove VMS version numbers (appended ";###") */ + if (!uO.V_flag && lastsemi) { + pp = lastsemi + 1; + while (isdigit((uch)(*pp))) + ++pp; + if (*pp == '\0') /* only digits between ';' and end: nuke */ + *lastsemi = '\0'; + } + +#ifdef ACORN_FTYPE_NFS + /* translate Acorn filetype information if asked to do so */ + if (uO.acorn_nfs_ext && + (ef_spark = (RO_extra_block *) + getRISCOSexfield(G.extra_field, G.lrec.extra_field_length)) + != (RO_extra_block *)NULL) + { + /* file *must* have a RISC OS extra field */ + long ft = (long)makelong(ef_spark->loadaddr); + /*32-bit*/ + if (lastcomma) { + pp = lastcomma + 1; + while (isxdigit((uch)(*pp))) ++pp; + if (pp == lastcomma+4 && *pp == '\0') *lastcomma='\0'; /* nuke */ + } + if ((ft & 1<<31)==0) ft=0x000FFD00; + sprintf(pathcomp+strlen(pathcomp), ",%03x", (int)(ft>>8) & 0xFFF); + } +#endif /* ACORN_FTYPE_NFS */ + + if (*pathcomp == '\0') { + Info(slide, 1, ((char *)slide, "mapname: conversion of %s failed\n", + FnFilter1(G.filename))); + return (error & ~MPN_MASK) | MPN_ERR_SKIP; + } + + checkdir(__G__ pathcomp, APPEND_NAME); /* returns 1 if truncated: care? */ + checkdir(__G__ G.filename, GETPATH); + + return error; + +} /* end function mapname() */ + + + + +/***********************/ +/* Function checkdir() */ +/***********************/ + +int checkdir(__G__ pathcomp, flag) + __GDEF + char *pathcomp; + int flag; +/* + * returns: + * MPN_OK - no problem detected + * MPN_INF_TRUNC - (on APPEND_NAME) truncated filename + * MPN_INF_SKIP - path doesn't exist, not allowed to create + * MPN_ERR_SKIP - path doesn't exist, tried to create and failed; or path + * exists and is not a directory, but is supposed to be + * MPN_ERR_TOOLONG - path is too long + * MPN_NOMEM - can't allocate memory for filename buffers + */ +{ + static int rootlen = 0; /* length of rootpath */ + static char *rootpath; /* user's "extract-to" directory */ + static char *buildpath; /* full path (so far) to extracted file */ + static char *end; /* pointer to end of buildpath ('\0') */ + +# define FN_MASK 7 +# define FUNCTION (flag & FN_MASK) + + +/*--------------------------------------------------------------------------- + APPEND_DIR: append the path component to the path being built and check + for its existence. If doesn't exist and we are creating directories, do + so for this one; else signal success or error as appropriate. + ---------------------------------------------------------------------------*/ + + if (FUNCTION == APPEND_DIR) { + int too_long = FALSE; +#ifdef SHORT_NAMES + char *old_end = end; +#endif + + Trace((stderr, "appending dir segment [%s]\n", FnFilter1(pathcomp))); + while ((*end = *pathcomp++) != '\0') + ++end; +#ifdef SHORT_NAMES /* path components restricted to 14 chars, typically */ + if ((end-old_end) > FILENAME_MAX) /* GRR: proper constant? */ + *(end = old_end + FILENAME_MAX) = '\0'; +#endif + + /* GRR: could do better check, see if overrunning buffer as we go: + * check end-buildpath after each append, set warning variable if + * within 20 of FILNAMSIZ; then if var set, do careful check when + * appending. Clear variable when begin new path. */ + + if ((end-buildpath) > FILNAMSIZ-3) /* need '/', one-char name, '\0' */ + too_long = TRUE; /* check if extracting directory? */ + if (stat(buildpath, &G.statbuf)) { /* path doesn't exist */ + if (!G.create_dirs) { /* told not to create (freshening) */ + free(buildpath); + /* path doesn't exist: nothing to do */ + return MPN_INF_SKIP; + } + if (too_long) { + Info(slide, 1, ((char *)slide, + "checkdir error: path too long: %s\n", + FnFilter1(buildpath))); + free(buildpath); + /* no room for filenames: fatal */ + return MPN_ERR_TOOLONG; + } + if (mkdir(buildpath) == -1) { /* create the directory */ + Info(slide, 1, ((char *)slide, + "checkdir error: cannot create %s\n\ + unable to process %s.\n", + FnFilter2(buildpath), FnFilter1(G.filename))); + free(buildpath); + /* path didn't exist, tried to create, failed */ + return MPN_ERR_SKIP; + } + created_dir = TRUE; + } else if (!S_ISDIR(G.statbuf.st_mode)) { + Info(slide, 1, ((char *)slide, + "checkdir error: %s exists but is not directory\n\ + unable to process %s.\n", + FnFilter2(buildpath), FnFilter1(G.filename))); + free(buildpath); + /* path existed but wasn't dir */ + return MPN_ERR_SKIP; + } + if (too_long) { + Info(slide, 1, ((char *)slide, + "checkdir error: path too long: %s\n", FnFilter1(buildpath))); + free(buildpath); + /* no room for filenames: fatal */ + return MPN_ERR_TOOLONG; + } + *end++ = '/'; + *end = '\0'; + Trace((stderr, "buildpath now = [%s]\n", FnFilter1(buildpath))); + return MPN_OK; + + } /* end if (FUNCTION == APPEND_DIR) */ + +/*--------------------------------------------------------------------------- + GETPATH: copy full path to the string pointed at by pathcomp, and free + buildpath. + ---------------------------------------------------------------------------*/ + + if (FUNCTION == GETPATH) { + strcpy(pathcomp, buildpath); + Trace((stderr, "getting and freeing path [%s]\n", + FnFilter1(pathcomp))); + free(buildpath); + buildpath = end = (char *)NULL; + return MPN_OK; + } + +/*--------------------------------------------------------------------------- + APPEND_NAME: assume the path component is the filename; append it and + return without checking for existence. + ---------------------------------------------------------------------------*/ + + if (FUNCTION == APPEND_NAME) { +#ifdef SHORT_NAMES + char *old_end = end; +#endif + + Trace((stderr, "appending filename [%s]\n", FnFilter1(pathcomp))); + while ((*end = *pathcomp++) != '\0') { + ++end; +#ifdef SHORT_NAMES /* truncate name at 14 characters, typically */ + if ((end-old_end) > FILENAME_MAX) /* GRR: proper constant? */ + *(end = old_end + FILENAME_MAX) = '\0'; +#endif + if ((end-buildpath) >= FILNAMSIZ) { + *--end = '\0'; + Info(slide, 0x201, ((char *)slide, + "checkdir warning: path too long; truncating\n\ + %s\n -> %s\n", + FnFilter1(G.filename), FnFilter2(buildpath))); + return MPN_INF_TRUNC; /* filename truncated */ + } + } + Trace((stderr, "buildpath now = [%s]\n", FnFilter1(buildpath))); + /* could check for existence here, prompt for new name... */ + return MPN_OK; + } + +/*--------------------------------------------------------------------------- + INIT: allocate and initialize buffer space for the file currently being + extracted. If file was renamed with an absolute path, don't prepend the + extract-to path. + ---------------------------------------------------------------------------*/ + +/* GRR: for VMS and TOPS-20, add up to 13 to strlen */ + + if (FUNCTION == INIT) { + Trace((stderr, "initializing buildpath to ")); +#ifdef ACORN_FTYPE_NFS + if ((buildpath = (char *)malloc(strlen(G.filename)+rootlen+ + (uO.acorn_nfs_ext ? 5 : 1))) +#else + if ((buildpath = (char *)malloc(strlen(G.filename)+rootlen+1)) +#endif + == (char *)NULL) + return MPN_NOMEM; + if ((rootlen > 0) && !renamed_fullpath) { + strcpy(buildpath, rootpath); + end = buildpath + rootlen; + } else { + *buildpath = '\0'; + end = buildpath; + } + Trace((stderr, "[%s]\n", FnFilter1(buildpath))); + return MPN_OK; + } + +/*--------------------------------------------------------------------------- + ROOT: if appropriate, store the path in rootpath and create it if neces- + sary; else assume it's a zipfile member and return. This path segment + gets used in extracting all members from every zipfile specified on the + command line. + ---------------------------------------------------------------------------*/ + +#if (!defined(SFX) || defined(SFX_EXDIR)) + if (FUNCTION == ROOT) { + Trace((stderr, "initializing root path to [%s]\n", + FnFilter1(pathcomp))); + if (pathcomp == (char *)NULL) { + rootlen = 0; + return MPN_OK; + } + if ((rootlen = strlen(pathcomp)) > 0) { + if (pathcomp[rootlen-1] == '/') { + pathcomp[--rootlen] = '\0'; + } + if (rootlen > 0 && (stat(pathcomp, &G.statbuf) || + !S_ISDIR(G.statbuf.st_mode))) /* path does not exist */ + { + if (!G.create_dirs /* || iswild(pathcomp) */ ) { + rootlen = 0; + /* skip (or treat as stored file) */ + return MPN_INF_SKIP; + } + /* create the directory (could add loop here to scan pathcomp + * and create more than one level, but why really necessary?) */ + if (mkdir(pathcomp) == -1) { + Info(slide, 1, ((char *)slide, + "checkdir: cannot create extraction directory: %s\n", + FnFilter1(pathcomp))); + rootlen = 0; + /* path didn't exist, tried to create, and failed: */ + /* file exists, or 2+ subdirectory levels required */ + return MPN_ERR_SKIP; + } + } + if ((rootpath = (char *)malloc(rootlen+2)) == (char *)NULL) { + rootlen = 0; + return MPN_NOMEM; + } + strcpy(rootpath, pathcomp); + rootpath[rootlen++] = '/'; + rootpath[rootlen] = '\0'; + Trace((stderr, "rootpath now = [%s]\n", FnFilter1(rootpath))); + } + return MPN_OK; + } +#endif /* !SFX || SFX_EXDIR */ + +/*--------------------------------------------------------------------------- + END: free rootpath, immediately prior to program exit. + ---------------------------------------------------------------------------*/ + + if (FUNCTION == END) { + Trace((stderr, "freeing rootpath\n")); + if (rootlen > 0) { + free(rootpath); + rootlen = 0; + } + return MPN_OK; + } + + return MPN_INVALID; /* should never reach */ + +} /* end function checkdir() */ + + + +/****************************/ +/* Function close_outfile() */ +/****************************/ + +void close_outfile(__G) /* GRR: change to return PK-style warning level */ + __GDEF +{ + WORD date = G.lrec.last_mod_dos_datetime >> 16; + WORD time = G.lrec.last_mod_dos_datetime & 0xffff; + static struct ModifyStructure changeBuffer; + + fclose(G.outfile); + + /* set the file's access and modification times */ + changeBuffer.MLastAccessedDate = date; + changeBuffer.MLastUpdatedDate = date; + changeBuffer.MLastUpdatedTime = time; + if (ChangeDirectoryEntry(G.filename, &changeBuffer, + MLastAccessedDateBit | MLastUpdatedDateBit | MLastUpdatedTimeBit, + 0)) + { + if (uO.qflag) + Info(slide, 0x201, ((char *)slide, + "warning: cannot set times for %s\n", FnFilter1(G.filename))); + else + Info(slide, 0x201, ((char *)slide, + " (warning) cannot set times")); + } + +/*--------------------------------------------------------------------------- + Change the file permissions from default ones to those stored in the + zipfile. + ---------------------------------------------------------------------------*/ + + if (chmod(G.filename, 0xffff & G.pInfo->file_attr)) + perror("chmod (file attributes) error"); + +} /* end function close_outfile() */ + + +#ifdef TIMESTAMP + +/***************************/ +/* Function stamp_file() */ +/***************************/ + +int stamp_file(fname, modtime) + ZCONST char *fname; + time_t modtime; +{ + ztimbuf tp; + + tp.modtime = tp.actime = modtime; + return (utime(fname, &tp)); + +} /* end function stamp_file() */ + +#endif /* TIMESTAMP */ + + +/************************/ +/* Function version() */ +/************************/ + +void version(__G) + __GDEF +{ + int len; +#if defined(__IBMC__) || defined(__WATCOMC__) || defined(_MSC_VER) + char buf[80]; +#endif + + len = sprintf((char *)slide, LoadFarString(CompiledWith), + +#if defined(__GNUC__) +# ifdef __EMX__ /* __EMX__ is defined as "1" only (sigh) */ + "emx+gcc ", __VERSION__, +# else + "gcc/2 ", __VERSION__, +# endif +#elif defined(__WATCOMC__) + "Watcom C", (sprintf(buf, " (__WATCOMC__ = %d)", __WATCOMC__), buf), +#elif defined(__TURBOC__) +# ifdef __BORLANDC__ + "Borland C++", +# if (__BORLANDC__ < 0x0460) + " 1.0", +# elif (__BORLANDC__ == 0x0460) + " 1.5", /* from Kai Uwe: three less than DOS */ +# else + " 2.0", /* (__BORLANDC__ == 0x0500)? */ +# endif +# else + "Turbo C", /* these are probably irrelevant */ +# if (__TURBOC__ >= 661) + "++ 1.0 or later", +# elif (__TURBOC__ == 661) + " 3.0?", +# elif (__TURBOC__ == 397) + " 2.0", +# else + " 1.0 or 1.5?", +# endif +# endif +#elif defined(MSC) + "Microsoft C ", +# ifdef _MSC_VER + (sprintf(buf, "%d.%02d", _MSC_VER/100, _MSC_VER%100), buf), +# else + "5.1 or earlier", +# endif +#else + "unknown compiler", "", +#endif /* ?compilers */ + + "NetWare", + " (32-bit)", + +#ifdef __DATE__ + " on ", __DATE__ +#else + "", "" +#endif + ); + + (*G.message)((zvoid *)&G, slide, (ulg)len, 0); + /* MSC can't handle huge macro expansions */ + +} /* end function version() */ + + +#ifdef MORE + +/*************************/ +/* Function screensize() */ +/*************************/ + +int screensize(int *tt_rows, int *tt_cols) +{ + WORD height; + WORD width; + + if (GetSizeOfScreen(&height, &width) == 0) { + if (tt_rows != NULL) *tt_rows = height; + if (tt_cols != NULL) *tt_cols = width; + return 0; /* signal success */ + } else { + if (tt_rows != NULL) *tt_rows = 25; + if (tt_cols != NULL) *tt_cols = 80; + return 1; /* signal failure */ + } +} + +#endif /* MORE */ diff -Nru unzip-6.0/novell/README unzip-6.0/novell/README --- unzip-6.0/novell/README 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/novell/README 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,66 @@ +1) I used the Watcom version 11 compiler and the Novell NetWare SDK + from October 1998. You can get the latest NetWare SDK (free). Go to + http://developer.novell.com/ndk/netware.htm#C/C++ and look for "NLM and + NetWare Libraries for C (including CLIB and XPlat)" + +2) The unzip.nlm runs in the same address space as the NetWare OS. + In other words, if unzip.nlm crashes, the server will most likely crash. + Therefore, I recommend you do not load unzip.nlm on a server that your + company depends on for business until it's been thoroughly tested on a + test server. + +3) I've designed this unzip.nlm port to load on any version of NetWare + starting with NetWare 3.12. However, I've tested it only on NetWare 5.0. + If unzip.nlm does not load or run correctly, try the following in + this order: + + a) Load clibaux.nlm version 1.21a or later before loading + unzip.nlm. The clibaux.nlm is part of the NetWare SDK package + mentioned above. It's also part of the 3.x C library package + mentioned below. + + b) On NetWare 3.x, install the latest 3.x C library modules. + Go to http://support.novell.com/misc/patlst.htm#nw and look for + "NetWare 3.12/3.2 CLIB". + + c) On NetWare 4.10, install the latest 4.10 C library modules. + Go to http://support.novell.com/misc/patlst.htm#nw and look for + "Updated modular CLIB and DSAPI". + + d) On NetWare 4.11 and 4.2, install the latest support pack. + Go to http://support.novell.com/misc/patlst.htm#nw and look for + "NetWare 4 Support Pack". + +4) This unzip.nlm assumes that support for the long name space (also + known as the OS/2 name space) has already been added to the current + working volume. If it has not, and the zip archive contains files with + long names, then the fopen() for such files will just fail. The code + does not attempt to rename the file to fit in a DOS-style name. The same + problem would occur with long directory names. + +5) If unzip.nlm works correctly on NetWare 3.x (which it should, + but I've not tried it), it will create all files and directories with + all-uppercase names. The reason is that the NetWare 3.x C library does + not support creating mixed-case or lowercase file names, even in the long + (OS/2) name space. + +6) To change the current working volume and current working directory + in which unzip.nlm loads and runs, load unzip.nlm like this: + + load unzip (CLIB_OPT)/P: + + For example: + + load unzip archive.zip (CLIB_OPT)/Pvol1:\usr\home + + For more information on CLIB_OPT, go to http://developer.novell.com/search/ + and enter "CLIB_OPT" in the "Novell Developer Kit Search" box. + +7) To find out more about clibaux.nlm, go to + http://developer.novell.com/search/ and enter "clibaux" in the "Novell + Developer Kit Search" box. + + +Vance Baarda +NetWare Server Install +Novell, Inc. diff -Nru unzip-6.0/novell/unzip.build unzip-6.0/novell/unzip.build --- unzip-6.0/novell/unzip.build 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/novell/unzip.build 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,17 @@ +export WATCOM='\\prv-dev2\dev\tool\wcc\1100' +CC='\\prv-dev2\dev\tool\wcc\1100\binnt\wcc386' +LINK='\\prv-dev2\dev\tool\wcc\1100\binnt\wlink' + +CFLAGS="-olax -5s -zq -zp1 -ei -ez -ri -w4" +DEFS="-DNLM -DN_PLAT_NLM -U_WIN32" +INCS='-I. -Inovell -Ic:\novell\ndk\nwsdk\include\nlm -Ic:\novell\ndk\nwsdk\include\nlm\sys -Ic:\novell\ndk\nwsdk\include -Ic:\novell\ndk\nwsdk\include\nlm\nit' + +cd .. +for i in crc32.c crctab.c crypt.c envargs.c explode.c extract.c fileio.c \ + globals.c inflate.c list.c match.c novell\\novell.c process.c \ + ttyio.c unreduce.c unshrink.c unzip.c zipinfo.c +do + $CC $CFLAGS $DEFS $INCS $i +done + +$LINK @novell/unzip.link diff -Nru unzip-6.0/novell/unzip.link unzip-6.0/novell/unzip.link --- unzip-6.0/novell/unzip.link 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/novell/unzip.link 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,36 @@ +format novell NLM 'unzip utility' +name unzip +option caseexact +option copyright 'Copyright 1990-2002 Info-ZIP (Zip-Bugs@lists.wku.edu).' +option map = unzip.map +option nodefaultlibs +option quiet +option screenname 'none' +option stack = 32k +option symfile = unzip.sym +option threadname 'unzip' +option version = 5.5.1 +module clib +import @c:/novell/ndk/nwsdk/imports/clib.imp +import @c:/novell/ndk/nwsdk/imports/nlmlib.imp +import @c:/novell/ndk/nwsdk/imports/threads.imp +import @c:/novell/ndk/nwsdk/imports/nit.imp +file crc32.obj +file crctab.obj +file crypt.obj +file envargs.obj +file explode.obj +file extract.obj +file fileio.obj +file globals.obj +file inflate.obj +file list.obj +file match.obj +file novell.obj +file process.obj +file ttyio.obj +file unreduce.obj +file unshrink.obj +file unzip.obj +file zipinfo.obj +file c:/novell/ndk/nwsdk/imports/nwpre.obj diff -Nru unzip-6.0/os2/makefile.os2 unzip-6.0/os2/makefile.os2 --- unzip-6.0/os2/makefile.os2 2007-01-03 20:42:36.000000000 +0000 +++ unzip-6.0/os2/makefile.os2 2010-05-14 07:26:14.000000000 +0000 @@ -1,4 +1,4 @@ -# Makefile for UnZip, UnZipSFX and fUnZip 03 January 2007 +# Makefile for UnZip, UnZipSFX and fUnZip 17 February 2002 # # supported compilers: # - Microsoft C, version 6.00 or higher, for use under OS/2 1.x (16-bit) @@ -25,12 +25,6 @@ # To use, enter "{d,n}make -f os2/makefile.os2" (this makefile depends on its # name being "makefile.os2", and it must be in the os2 subdirectory). -# In case you want to use Watcom wmake instead, you have to switch wmake into -# the "MS nmake compatible" mode by specifying the "-ms" option. Additionally, -# it is required to override the MAKE macro definition for the recursive -# invokation of wmake. An example: -# wmake -ms -f os2/makefile.os2 MAKE="wmake -ms" watcom - # Notes on Microsoft C 6.00 compilation for OS/2: # # The resulting programs can be used under OS/2 protected mode only, not @@ -84,7 +78,9 @@ LDFLAGS2="-link /noe" \ OUT="-Fo" \ OBJ=".obj" \ - CRCA_O="crc_i86.obj" \ + CRC32="crc_i86" \ + CRC32F="crc_i86" \ + CRC32X="crc_i86" \ OBJF2="os2f.obj" \ DEF="os2\unzip.def" @@ -101,7 +97,9 @@ LDFLAGS2="-link /noe" \ OUT="-Fo" \ OBJ=".obj" \ - CRCA_O="crc_i86.obj" \ + CRC32="crc_i86" \ + CRC32F="crc_i86" \ + CRC32X="crc_i86" \ OBJF2="os2f.obj" \ DEF="os2\unzip.def" @@ -119,7 +117,9 @@ LDFLAGS2="-link /noe /exe" \ OUT="-Fo" \ OBJ=".obj" \ - CRCA_O="crc_i86" \ + CRC32="crc_i86" \ + CRC32F="crc_i86" \ + CRC32X="crc_i86" \ OBJU2="msdos.obj" \ OBJX2="msdos_.obj" \ OBJF2="msdosf.obj" \ @@ -254,7 +254,9 @@ LDFLAGS2="" \ OUT="-Fo" \ OBJ=".obj" \ - CRCA_O="crc_i386.obj" \ + CRC32="crc_i386" \ + CRC32F="crc_i386" \ + CRC32X="crc_i386" \ DEF="" \ DIRSEP="\\" \ AS_DIRSEP="\\" @@ -272,7 +274,9 @@ LDFLAGS2="" \ OUT="-Fo" \ OBJ=".obj" \ - CRCA_O="crc_i86.obj" \ + CRC32="crc_i86" \ + CRC32F="crc_i86" \ + CRC32X="crc_i86" \ OBJF2="os2f.obj" \ DIRSEP="\\" \ AS_DIRSEP="\\" @@ -290,7 +294,9 @@ LDFLAGS2="" \ OUT="-Fo" \ OBJ=".obj" \ - CRCA_O="crc_i386.obj" \ + CRC32="crc_i386" \ + CRC32F="crc_i386" \ + CRC32X="crc_i386" \ OBJU2="msdos.obj" \ OBJX2="msdos_.obj" \ OSDEP_H="msdos/doscfg.h" \ @@ -310,7 +316,9 @@ LDFLAGS2="" \ OUT="-Fo" \ OBJ=".obj" \ - CRCA_O="crc_i386.obj" \ + CRC32="crc_i386" \ + CRC32F="crc_i386" \ + CRC32X="crc_i386" \ OBJU2="msdos.obj" \ OBJX2="msdos_.obj" \ OSDEP_H="msdos/doscfg.h" \ @@ -350,7 +358,9 @@ LDFLAGS2="" \ OUT="-Fo" \ OBJ=".obj" \ - CRCA_O="crc_i386.obj" \ + CRC32="crc_i386" \ + CRC32F="crc_i386" \ + CRC32X="crc_i386" \ OBJU2="win32.obj nt.obj" \ OBJX2="win32_.obj nt_.obj" \ OBJF2="win32f.obj" \ @@ -397,7 +407,9 @@ LDFLAGS2="-Zsmall-conv -Zstack 320 -Zsys -s" \ OUT="-o" \ OBJ=".obj" \ - CRCA_O="crc_gcc.obj" \ + CRC32="crc_gcc" \ + CRC32F="crc_gcc" \ + CRC32X="crc_gcc" \ DEF="os2/unzip.def" # emx, gcc, OMF format, dynamically linked C runtime @@ -413,7 +425,9 @@ LDFLAGS2="-Zstack 320 -Zcrtdll -s" \ OUT="-o" \ OBJ=".obj" \ - CRCA_O="crc_gcc.obj" \ + CRC32="crc_gcc" \ + CRC32F="crc_gcc" \ + CRC32X="crc_gcc" \ DEF="os2/unzip.def" # emx, gcc, a.out format, with debug info for gdb @@ -429,7 +443,9 @@ LDFLAGS2="-Zsmall-conv" \ OUT="-o" \ OBJ=".o" \ - CRCA_O="crc_gcc.o" \ + CRC32="crc_gcc" \ + CRC32F="crc_gcc" \ + CRC32X="crc_gcc" # emx, gcc, a.out format, cross-compilation for MS-DOS gccdos: @@ -444,7 +460,9 @@ LDFLAGS2="-Zsmall-conv -s" \ OUT="-o" \ OBJ=".o" \ - CRCA_O="crc_gcc.o" \ + CRC32="crc_gcc" \ + CRC32F="crc_gcc" \ + CRC32X="crc_gcc" \ OBJU2="msdos.o" \ OBJX2="msdos_.o" \ OSDEP_H="msdos/doscfg.h" @@ -462,7 +480,9 @@ LDFLAGS2="-ladvapi32 -Zsmall-conv -s" \ OUT="-o" \ OBJ=".o" \ - CRCA_O="crc_gcc.o" \ + CRC32="crc_gcc" \ + CRC32F="crc_gcc" \ + CRC32X="crc_gcc" \ OBJU2="win32.o nt.o" \ OBJX2="win32_.o nt_.o" \ OBJF2="win32f.o" \ @@ -477,19 +497,21 @@ AS_DIRSEP = / OSDEP_H = os2/os2data.h os2/os2cfg.h -CRCA_O = +CRC32 = crc32 +CRC32F = crc32f +CRC32X = crc32_ -OBJU = unzip$(OBJ) crc32$(OBJ) $(CRCA_O) crypt$(OBJ) envargs$(OBJ) \ +OBJU = unzip$(OBJ) $(CRC32)$(OBJ) crctab$(OBJ) crypt$(OBJ) envargs$(OBJ) \ explode$(OBJ) extract$(OBJ) fileio$(OBJ) globals$(OBJ) \ inflate$(OBJ) list$(OBJ) match$(OBJ) process$(OBJ) ttyio$(OBJ) \ - ubz2err$(OBJ) unreduce$(OBJ) unshrink$(OBJ) zipinfo$(OBJ) + unreduce$(OBJ) unshrink$(OBJ) zipinfo$(OBJ) OBJU2 = os2$(OBJ) os2acl$(OBJ) -OBJX = unzipsf_$(OBJ) crc32_$(OBJ) $(CRCA_O) crypt_$(OBJ) \ +OBJX = unzipsf_$(OBJ) $(CRC32X)$(OBJ) crctab_$(OBJ) crypt_$(OBJ) \ extract_$(OBJ) fileio_$(OBJ) globals_$(OBJ) inflate_$(OBJ) \ - match_$(OBJ) process_$(OBJ) ttyio_$(OBJ) ubz2err_$(OBJ) + match_$(OBJ) process_$(OBJ) ttyio_$(OBJ) OBJX2 = os2_$(OBJ) os2acl_$(OBJ) OBJDLL= api$(OBJ) apihelp$(OBJ) rexxhelp$(OBJ) rexxapi$(OBJ) -OBJF = funzip$(OBJ) crc32f$(OBJ) $(CRCA_O) cryptf$(OBJ) inflatef$(OBJ) \ +OBJF = funzip$(OBJ) $(CRC32F)$(OBJ) cryptf$(OBJ) inflatef$(OBJ) \ globalsf$(OBJ) ttyiof$(OBJ) OBJF2 = @@ -529,24 +551,27 @@ # dependencies apihelp$(OBJ): apihelp.c $(UNZIP_H) unzvers.h -crc32$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h +crc32$(OBJ): crc32.c $(UNZIP_H) zip.h +crctab$(OBJ): crctab.c $(UNZIP_H) zip.h envargs$(OBJ): envargs.c $(UNZIP_H) explode$(OBJ): explode.c $(UNZIP_H) -extract$(OBJ): extract.c $(UNZIP_H) crc32.h crypt.h -fileio$(OBJ): fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +extract$(OBJ): extract.c $(UNZIP_H) crypt.h +fileio$(OBJ): fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h globals$(OBJ): globals.c $(UNZIP_H) inflate$(OBJ): inflate.c $(UNZIP_H) list$(OBJ): list.c $(UNZIP_H) match$(OBJ): match.c $(UNZIP_H) -process$(OBJ): process.c $(UNZIP_H) crc32.h +process$(OBJ): process.c $(UNZIP_H) ttyio$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err$(OBJ): ubz2err.c $(UNZIP_H) unreduce$(OBJ): unreduce.c $(UNZIP_H) unshrink$(OBJ): unshrink.c $(UNZIP_H) unzip$(OBJ): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h api$(OBJ): api.c $(UNZIP_H) unzvers.h zipinfo$(OBJ): zipinfo.c $(UNZIP_H) +funzip$(OBJ): funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h # funzip only + $(CC) -c $(CFLAGS) funzip.c + unzipstb$(OBJ): unzipstb.c # DLL version $(CC) -c $(CFLAGS) unzipstb.c @@ -605,58 +630,53 @@ $(AS) $(ASFLAGS) -x assembler-with-cpp -c -o $@ crc_i386.S # NFLAGS are solely used as work-around for optimization bug in IBM C++ Set -crypt$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crypt$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(CFLAGS) $(DLLFLAG) $(NFLAGS) crypt.c -# funzip compilation section -funzip$(OBJ): funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h - $(CC) -c $(CFLAGS) funzip.c +cryptf$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only + $(CC) -c $(CFLAGS) $(NFLAGS) -DFUNZIP $(OUT)$@ crypt.c -crc32f$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h +crc32f$(OBJ): crc32.c $(UNZIP_H) zip.h # funzip only $(CC) -c $(CFLAGS) -DFUNZIP $(OUT)$@ crc32.c -cryptf$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h - $(CC) -c $(CFLAGS) $(NFLAGS) -DFUNZIP $(OUT)$@ crypt.c - -globalsf$(OBJ): globals.c $(UNZIP_H) +globalsf$(OBJ): globals.c $(UNZIP_H) # funzip only $(CC) -c $(CFLAGS) -DFUNZIP $(OUT)$@ globals.c -inflatef$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h +inflatef$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h # funzip only $(CC) -c $(CFLAGS) -DFUNZIP $(OUT)$@ inflate.c -ttyiof$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +ttyiof$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only $(CC) -c $(CFLAGS) $(NFLAGS) -DFUNZIP $(OUT)$@ ttyio.c -# unzipsfx compilation section -crc32_$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h +crc32_$(OBJ): crc32.c $(UNZIP_H) zip.h # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ crc32.c -crypt_$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crctab_$(OBJ): crctab.c $(UNZIP_H) zip.h # unzipsfx only + $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ crctab.c + +crypt_$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ crypt.c -extract_$(OBJ): extract.c $(UNZIP_H) crypt.h +extract_$(OBJ): extract.c $(UNZIP_H) crypt.h # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ extract.c -fileio_$(OBJ): fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +fileio_$(OBJ): fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ fileio.c -globals_$(OBJ): globals.c $(UNZIP_H) +globals_$(OBJ): globals.c $(UNZIP_H) # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ globals.c -inflate_$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h +inflate_$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ inflate.c -match_$(OBJ): match.c $(UNZIP_H) +match_$(OBJ): match.c $(UNZIP_H) # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ match.c -process_$(OBJ): process.c $(UNZIP_H) crc32.h +process_$(OBJ): process.c $(UNZIP_H) # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ process.c -ttyio_$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +ttyio_$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ ttyio.c -ubz2err_$(OBJ): ubz2err.c $(UNZIP_H) - $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ ubz2err.c - -unzipsf_$(OBJ): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h +unzipsf_$(OBJ): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h # unzipsfx only $(CC) -c $(CFLAGS) -DSFX $(OUT)$@ unzip.c diff -Nru unzip-6.0/os2/os2.c unzip-6.0/os2/os2.c --- unzip-6.0/os2/os2.c 2007-12-08 23:11:34.000000000 +0000 +++ unzip-6.0/os2/os2.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in zip.h) for terms of use. @@ -494,21 +494,19 @@ return; } - if (uO.D_flag <= (dir ? 1 : 0)) { - /* set date/time stamps */ - gotTimes = getOS2filetimes(__G__ &Mod_dt, &Acc_dt, &Cre_dt); - if (gotTimes & EB_UT_FL_MTIME) { - fs.fdateLastWrite = ((F_DATE_TIME *)&Mod_dt)->_fdt.fd; - fs.ftimeLastWrite = ((F_DATE_TIME *)&Mod_dt)->_fdt.ft; - } - if (gotTimes & EB_UT_FL_ATIME) { - fs.fdateLastAccess = ((F_DATE_TIME *)&Acc_dt)->_fdt.fd; - fs.ftimeLastAccess = ((F_DATE_TIME *)&Acc_dt)->_fdt.ft; - } - if (gotTimes & EB_UT_FL_CTIME) { - fs.fdateCreation = ((F_DATE_TIME *)&Cre_dt)->_fdt.fd; - fs.ftimeCreation = ((F_DATE_TIME *)&Cre_dt)->_fdt.ft; - } + /* set date/time stamps */ + gotTimes = getOS2filetimes(__G__ &Mod_dt, &Acc_dt, &Cre_dt); + if (gotTimes & EB_UT_FL_MTIME) { + fs.fdateLastWrite = ((F_DATE_TIME *)&Mod_dt)->_fdt.fd; + fs.ftimeLastWrite = ((F_DATE_TIME *)&Mod_dt)->_fdt.ft; + } + if (gotTimes & EB_UT_FL_ATIME) { + fs.fdateLastAccess = ((F_DATE_TIME *)&Acc_dt)->_fdt.fd; + fs.ftimeLastAccess = ((F_DATE_TIME *)&Acc_dt)->_fdt.ft; + } + if (gotTimes & EB_UT_FL_CTIME) { + fs.fdateCreation = ((F_DATE_TIME *)&Cre_dt)->_fdt.fd; + fs.ftimeCreation = ((F_DATE_TIME *)&Cre_dt)->_fdt.ft; } if ( flags != -1 ) @@ -1593,21 +1591,14 @@ int error = MPN_OK; Trace((stderr, "appending filename [%s]\n", FnFilter1(pathcomp))); - /* The buildpathHPFS buffer has been allocated large enough to - * hold the complete combined name, so there is no need to check - * for OS filename size limit overflow within the copy loop. - */ - while ((*G.os2.endHPFS = *p++) != '\0') { /* copy to HPFS filename */ + while ((*G.os2.endHPFS = *p++) != '\0') { /* copy to HPFS filename */ ++G.os2.endHPFS; - } - /* Now, check for OS filename size overflow. When detected, the - * mapped HPFS name is truncated and a warning message is shown. - */ - if ((G.os2.endHPFS-G.os2.buildpathHPFS) >= FILNAMSIZ) { - G.os2.buildpathHPFS[FILNAMSIZ-1] = '\0'; - Info(slide, 1, ((char *)slide, LoadFarString(PathTooLongTrunc), - FnFilter1(G.filename), FnFilter2(G.os2.buildpathHPFS))); - error = MPN_INF_TRUNC; /* filename truncated */ + if ((G.os2.endHPFS-G.os2.buildpathHPFS) >= FILNAMSIZ) { + *--G.os2.endHPFS = '\0'; + Info(slide, 1, ((char *)slide, LoadFarString(PathTooLongTrunc), + FnFilter1(G.filename), FnFilter2(G.os2.buildpathHPFS))); + error = MPN_INF_TRUNC; /* filename truncated */ + } } /* GRR: how can longnameEA ever be set before this point??? we don't want @@ -1615,15 +1606,10 @@ * * if (!G.os2.longnameEA && ((G.os2.longnameEA = !IsFileNameValid(name)) != 0)) */ - /* The buildpathFAT buffer has the same allocated size as the - * buildpathHPFS buffer, so there is no need for an overflow check - * within the following copy loop, either. - */ if (G.pInfo->vollabel || IsFileNameValid(G.os2.buildpathHPFS)) { G.os2.longnameEA = FALSE; - /* copy to FAT filename, too */ p = pathcomp; - while ((*G.os2.endFAT = *p++) != '\0') + while ((*G.os2.endFAT = *p++) != '\0') /* copy to FAT filename, too */ ++G.os2.endFAT; } else { G.os2.longnameEA = TRUE; @@ -1637,19 +1623,8 @@ error = MPN_INF_TRUNC; } else /* used and freed in close_outfile() */ strcpy(G.os2.lastpathcomp, pathcomp); - /* map, put in FAT fn, update endFAT */ - map2fat(pathcomp, &G.os2.endFAT); + map2fat(pathcomp, &G.os2.endFAT); /* map, put in FAT fn, update endFAT */ } - - /* Check that the FAT path does not exceed the FILNAMSIZ limit, and - * truncate when neccessary. - * Note that truncation can only happen when the HPFS path (which is - * never shorter than the FAT path) has been already truncated. - * So, emission of the warning message and setting the error code - * has already happened. - */ - if ((G.os2.endFAT-G.os2.buildpathFAT) >= FILNAMSIZ) - G.os2.buildpathFAT[FILNAMSIZ-1] = '\0'; Trace((stderr, "buildpathHPFS: %s\nbuildpathFAT: %s\n", FnFilter1(G.os2.buildpathHPFS), FnFilter2(G.os2.buildpathFAT))); diff -Nru unzip-6.0/os2/os2cfg.h unzip-6.0/os2/os2cfg.h --- unzip-6.0/os2/os2cfg.h 2008-03-15 17:29:04.000000000 +0000 +++ unzip-6.0/os2/os2cfg.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2008 Info-ZIP. All rights reserved. + Copyright (c) 1990-2001 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. @@ -55,6 +55,11 @@ modify [ax cx dx bx] # endif /* !USE_ZLIB */ # endif /* ?__386__ */ + +# ifndef EPIPE +# define EPIPE -1 +# endif +# define PIPE_ERROR (errno == EPIPE) #endif /* __WATCOMC__ */ #ifdef __EMX__ diff -Nru unzip-6.0/process.c unzip-6.0/process.c --- unzip-6.0/process.c 2009-03-06 01:25:10.000000000 +0000 +++ unzip-6.0/process.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2004 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -15,15 +15,11 @@ Contains: process_zipfiles() free_G_buffers() do_seekable() - file_size() - rec_find() - find_ecrec64() find_ecrec() - process_zip_cmmnt() + uz_end_central() process_cdir_file_hdr() get_cdir_ent() process_local_file_hdr() - getZip64Data() ef_scan_for_izux() getRISCOSexfield() @@ -39,28 +35,9 @@ # include "windll/windll.h" # endif #endif -#if defined(DYNALLOC_CRCTAB) || defined(UNICODE_SUPPORT) -# include "crc32.h" -#endif static int do_seekable OF((__GPRO__ int lastchance)); -#ifdef DO_SAFECHECK_2GB -# ifdef USE_STRM_INPUT -static zoff_t file_size OF((FILE *file)); -# else -static zoff_t file_size OF((int fh)); -# endif -#endif /* DO_SAFECHECK_2GB */ -static int rec_find OF((__GPRO__ zoff_t, char *, int)); -static int find_ecrec64 OF((__GPRO__ zoff_t searchlen)); -static int find_ecrec OF((__GPRO__ zoff_t searchlen)); -static int process_zip_cmmnt OF((__GPRO)); -static int get_cdir_ent OF((__GPRO)); -#ifdef IZ_HAVE_UXUIDGID -static int read_ux3_value OF((ZCONST uch *dbuf, unsigned uidgid_sz, - ulg *p_uidgid)); -#endif /* IZ_HAVE_UXUIDGID */ - +static int find_ecrec OF((__GPRO__ long searchlen)); static ZCONST char Far CannotAllocateBuffers[] = "error: cannot allocate unzip buffers\n"; @@ -81,10 +58,6 @@ static ZCONST char Far WarnInvalidTZ[] = "Warning: TZ environment variable not found, cannot use UTC times!!\n"; # endif -# if !(defined(UNIX) || defined(AMIGA)) - static ZCONST char Far CannotFindWildcardMatch[] = - "%s: cannot find any matches for wildcard specification \"%s\".\n"; -# endif /* !(UNIX || AMIGA) */ static ZCONST char Far FilesProcessOK[] = "%d archive%s successfully processed.\n"; static ZCONST char Far ArchiveWarning[] = @@ -101,21 +74,20 @@ /* do_seekable() strings */ # ifdef UNIX static ZCONST char Far CannotFindZipfileDirMsg[] = - "%s: cannot find zipfile directory in one of %s or\n\ - %s%s.zip, and cannot find %s, period.\n"; + "%s: cannot find zipfile directory in one of %.512s or\n\ + %s%.512s.zip, and cannot find %.512s, period.\n"; static ZCONST char Far CannotFindEitherZipfile[] = - "%s: cannot find or open %s, %s.zip or %s.\n"; + "%s: cannot find or open %.512s, %.512s.zip or %.512s.\n"; # else /* !UNIX */ +# ifndef AMIGA + static ZCONST char Far CannotFindWildcardMatch[] = + "%s: cannot find any matches for wildcard specification \"%.512s\".\n"; +# endif /* !AMIGA */ static ZCONST char Far CannotFindZipfileDirMsg[] = - "%s: cannot find zipfile directory in %s,\n\ - %sand cannot find %s, period.\n"; -# ifdef VMS - static ZCONST char Far CannotFindEitherZipfile[] = - "%s: cannot find %s (%s).\n"; -# else /* !VMS */ + "%s: cannot find zipfile directory in %.512s,\n\ + %sand cannot find %.512s, period.\n"; static ZCONST char Far CannotFindEitherZipfile[] = - "%s: cannot find either %s or %s.\n"; -# endif /* ?VMS */ + "%s: cannot find either %.512s or %.512s.\n"; # endif /* ?UNIX */ extern ZCONST char Far Zipnfo[]; /* in unzip.c */ #ifndef WINDLL @@ -123,19 +95,15 @@ #else static ZCONST char Far Unzip[] = "UnZip DLL"; #endif -#ifdef DO_SAFECHECK_2GB - static ZCONST char Far ZipfileTooBig[] = - "Trying to read large file (> 2 GiB) without large file support\n"; -#endif /* DO_SAFECHECK_2GB */ static ZCONST char Far MaybeExe[] = "note: %s may be a plain executable, not an archive\n"; static ZCONST char Far CentDirNotInZipMsg[] = "\n\ [%s]:\n\ - Zipfile is disk %lu of a multi-disk archive, and this is not the disk on\n\ - which the central zipfile directory begins (disk %lu).\n"; + Zipfile is disk %u of a multi-disk archive, and this is not the disk on\n\ + which the central zipfile directory begins (disk %u).\n"; static ZCONST char Far EndCentDirBogus[] = "\nwarning [%s]: end-of-central-directory record claims this\n\ - is disk %lu but that the central directory starts on disk %lu; this is a\n\ + is disk %u but that the central directory starts on disk %u; this is a\n\ contradiction. Attempting to process anyway.\n"; # ifdef NO_MULTIPART static ZCONST char Far NoMultiDiskArcSupport[] = @@ -157,16 +125,12 @@ \n doesn't exist yet (coming soon).\n"; # endif static ZCONST char Far ExtraBytesAtStart[] = - "warning [%s]: %s extra byte%s at beginning or within zipfile\n\ + "warning [%s]: %ld extra byte%s at beginning or within zipfile\n\ (attempting to process anyway)\n"; #endif /* ?SFX */ -#if ((!defined(WINDLL) && !defined(SFX)) || !defined(NO_ZIPINFO)) - static ZCONST char Far LogInitline[] = "Archive: %s\n"; -#endif - static ZCONST char Far MissingBytes[] = - "error [%s]: missing %s bytes in zipfile\n\ + "error [%s]: missing %ld bytes in zipfile\n\ (attempting to process anyway)\n"; static ZCONST char Far NullCentDirOffset[] = "error [%s]: NULL central directory offset\n\ @@ -175,16 +139,10 @@ static ZCONST char Far CentDirStartNotFound[] = "error [%s]: start of central directory not found;\n\ zipfile corrupt.\n%s"; -static ZCONST char Far Cent64EndSigSearchErr[] = - "fatal error: read failure while seeking for End-of-centdir-64 signature.\n\ - This zipfile is corrupt.\n"; -static ZCONST char Far Cent64EndSigSearchOff[] = - "error: End-of-centdir-64 signature not where expected (prepended bytes?)\n\ - (attempting to process anyway)\n"; #ifndef SFX static ZCONST char Far CentDirTooLong[] = "error [%s]: reported length of central directory is\n\ - %s bytes too long (Atari STZip zipfile? J.H.Holm ZIPSPLIT 1.1\n\ + %ld bytes too long (Atari STZip zipfile? J.H.Holm ZIPSPLIT 1.1\n\ zipfile?). Compensating...\n"; static ZCONST char Far CentDirEndSigNotFound[] = "\ End-of-central-directory signature not found. Either this file is not\n\ @@ -195,34 +153,8 @@ static ZCONST char Far CentDirEndSigNotFound[] = " End-of-central-directory signature not found.\n"; #endif /* ?SFX */ -#ifdef TIMESTAMP - static ZCONST char Far ZipTimeStampFailed[] = - "warning: cannot set time for %s\n"; - static ZCONST char Far ZipTimeStampSuccess[] = - "Updated time stamp for %s.\n"; -#endif static ZCONST char Far ZipfileCommTrunc1[] = "\ncaution: zipfile comment truncated\n"; -#ifndef NO_ZIPINFO - static ZCONST char Far NoZipfileComment[] = - "There is no zipfile comment.\n"; - static ZCONST char Far ZipfileCommentDesc[] = - "The zipfile comment is %u bytes long and contains the following text:\n"; - static ZCONST char Far ZipfileCommBegin[] = - "======================== zipfile comment begins\ - ==========================\n"; - static ZCONST char Far ZipfileCommEnd[] = - "========================= zipfile comment ends\ - ===========================\n"; - static ZCONST char Far ZipfileCommTrunc2[] = - "\n The zipfile comment is truncated.\n"; -#endif /* !NO_ZIPINFO */ -#ifdef UNICODE_SUPPORT - static ZCONST char Far UnicodeVersionError[] = - "\nwarning: Unicode Path version > 1\n"; - static ZCONST char Far UnicodeMismatchError[] = - "\nwarning: Unicode Path checksum invalid\n"; -#endif @@ -263,25 +195,23 @@ #endif /* !VMS */ #if 0 /* CRC_32_TAB has been NULLified by CONSTRUCTGLOBALS !!!! */ - /* allocate the CRC table later when we know we can read zipfile data */ + /* allocate the CRC table only later when we know we have a zipfile */ CRC_32_TAB = NULL; #endif /* 0 */ /* finish up initialization of magic signature strings */ local_hdr_sig[0] /* = extd_local_sig[0] */ = /* ASCII 'P', */ - central_hdr_sig[0] = end_central_sig[0] = /* not EBCDIC */ - end_centloc64_sig[0] = end_central64_sig[0] = 0x50; + central_hdr_sig[0] = end_central_sig[0] = 0x50; /* not EBCDIC */ local_hdr_sig[1] /* = extd_local_sig[1] */ = /* ASCII 'K', */ - central_hdr_sig[1] = end_central_sig[1] = /* not EBCDIC */ - end_centloc64_sig[1] = end_central64_sig[1] = 0x4B; + central_hdr_sig[1] = end_central_sig[1] = 0x4B; /* not EBCDIC */ /*--------------------------------------------------------------------------- - Make sure timezone info is set correctly; localtime() returns GMT on some - OSes (e.g., Solaris 2.x) if this isn't done first. The ifdefs around - tzset() were initially copied from dos_to_unix_time() in fileio.c. They - may still be too strict; any listed OS that supplies tzset(), regardless - of whether the function does anything, should be removed from the ifdefs. + Make sure timezone info is set correctly; localtime() returns GMT on + some OSes (e.g., Solaris 2.x) if this isn't done first. The ifdefs were + initially copied from dos_to_unix_time() in fileio.c. probably, they are + still too strict; any listed OS that supplies tzset(), regardless of + whether the function does anything, should be removed from the ifdefs. ---------------------------------------------------------------------------*/ #if (defined(WIN32) && defined(USE_EF_UT_TIME)) @@ -317,12 +247,6 @@ #endif #endif -/* Initialize UnZip's built-in pseudo hard-coded "ISO <--> OEM" translation, - depending on the detected codepage setup. */ -#ifdef NEED_ISO_OEM_INIT - prepare_ISO_OEM_translat(__G); -#endif - /*--------------------------------------------------------------------------- Initialize the internal flag holding the mode of processing "overwrite existing file" cases. We do not use the calling interface flags directly @@ -404,7 +328,7 @@ ++NumMissDirs; else if (error == PK_NOZIP) ++NumMissFiles; - else if (error != PK_OK) + else if (error) ++NumLoseFiles; else ++NumWinFiles; @@ -429,35 +353,18 @@ if (iswild(lastzipfn)) { NumMissDirs = NumMissFiles = 0; error_in_archive = PK_COOL; - if (uO.qflag < 3) - Info(slide, 0x401, ((char *)slide, - LoadFarString(CannotFindWildcardMatch), - LoadFarStringSmall((uO.zipinfo_mode ? Zipnfo : Unzip)), - G.wildzipfn)); + Info(slide, 0x401, ((char *)slide, + LoadFarString(CannotFindWildcardMatch), uO.zipinfo_mode? + LoadFarStringSmall(Zipnfo) : LoadFarStringSmall(Unzip), + G.wildzipfn)); } } else #endif { -#ifndef VMS - /* 2004-11-24 SMS. - * VMS has already tried a default file type of ".zip" in - * do_wild(), so adding ZSUFX here only causes confusion by - * corrupting some valid (though nonexistent) file names. - * Complaining below about "fred;4.zip" is unlikely to be - * helpful to the victim. - */ - /* 2005-08-14 Chr. Spieler - * Although we already "know" the failure result, we call - * do_seekable() again with the same zipfile name (and the - * lastchance flag set), just to trigger the error report... - */ -#if defined(UNIX) || defined(QDOS) - char *p = -#endif - strcpy(lastzipfn + strlen(lastzipfn), ZSUFX); -#endif /* !VMS */ + char *p = lastzipfn + strlen(lastzipfn); G.zipfn = lastzipfn; + strcpy(p, ZSUFX); NumMissDirs = NumMissFiles = 0; error_in_archive = PK_COOL; @@ -518,19 +425,18 @@ #ifndef SFX if (iswild(G.wildzipfn) && uO.qflag < 3 #ifdef TIMESTAMP - && !(uO.T_flag && !uO.zipinfo_mode && uO.qflag > 1) + && !(uO.T_flag && uO.qflag && !uO.zipinfo_mode) #endif ) { if ((NumMissFiles + NumLoseFiles + NumWarnFiles > 0 || NumWinFiles != 1) #ifdef TIMESTAMP - && !(uO.T_flag && !uO.zipinfo_mode && uO.qflag) + && !(uO.T_flag && !uO.zipinfo_mode) #endif && !(uO.tflag && uO.qflag > 1)) (*G.message)((zvoid *)&G, (uch *)"\n", 1L, 0x401); - if ((NumWinFiles > 1) || - (NumWinFiles == 1 && - NumMissDirs + NumMissFiles + NumLoseFiles + NumWarnFiles > 0)) + if ((NumWinFiles > 1) || (NumWinFiles == 1 && + NumMissDirs + NumMissFiles + NumLoseFiles + NumWarnFiles > 0)) Info(slide, 0x401, ((char *)slide, LoadFarString(FilesProcessOK), NumWinFiles, (NumWinFiles == 1)? " was" : "s were")); if (NumWarnFiles > 0) @@ -613,14 +519,6 @@ free(G.inbuf); G.inbuf = G.outbuf = (uch *)NULL; -#ifdef UNICODE_SUPPORT - if (G.filename_full) { - free(G.filename_full); - G.filename_full = (char *)NULL; - G.fnfull_bufsize = 0; - } -#endif /* UNICODE_SUPPORT */ - #ifndef SFX for (i = 0; i < DIR_BLKSIZ; i++) { if (G.info[i].cfilname != (char Far *)NULL) { @@ -679,34 +577,26 @@ #if defined(UNIX) || defined(QDOS) if (G.no_ecrec) Info(slide, 1, ((char *)slide, - LoadFarString(CannotFindZipfileDirMsg), - LoadFarStringSmall((uO.zipinfo_mode ? Zipnfo : Unzip)), + LoadFarString(CannotFindZipfileDirMsg), uO.zipinfo_mode? + LoadFarStringSmall(Zipnfo) : LoadFarStringSmall(Unzip), G.wildzipfn, uO.zipinfo_mode? " " : "", G.wildzipfn, G.zipfn)); else Info(slide, 1, ((char *)slide, - LoadFarString(CannotFindEitherZipfile), - LoadFarStringSmall((uO.zipinfo_mode ? Zipnfo : Unzip)), + LoadFarString(CannotFindEitherZipfile), uO.zipinfo_mode? + LoadFarStringSmall(Zipnfo) : LoadFarStringSmall(Unzip), G.wildzipfn, G.wildzipfn, G.zipfn)); #else /* !(UNIX || QDOS) */ if (G.no_ecrec) Info(slide, 0x401, ((char *)slide, - LoadFarString(CannotFindZipfileDirMsg), - LoadFarStringSmall((uO.zipinfo_mode ? Zipnfo : Unzip)), + LoadFarString(CannotFindZipfileDirMsg), uO.zipinfo_mode? + LoadFarStringSmall(Zipnfo) : LoadFarStringSmall(Unzip), G.wildzipfn, uO.zipinfo_mode? " " : "", G.zipfn)); else -#ifdef VMS Info(slide, 0x401, ((char *)slide, - LoadFarString(CannotFindEitherZipfile), - LoadFarStringSmall((uO.zipinfo_mode ? Zipnfo : Unzip)), - G.wildzipfn, - (*G.zipfn ? G.zipfn : vms_msg_text()))); -#else /* !VMS */ - Info(slide, 0x401, ((char *)slide, - LoadFarString(CannotFindEitherZipfile), - LoadFarStringSmall((uO.zipinfo_mode ? Zipnfo : Unzip)), + LoadFarString(CannotFindEitherZipfile), uO.zipinfo_mode? + LoadFarStringSmall(Zipnfo) : LoadFarStringSmall(Unzip), G.wildzipfn, G.zipfn)); -#endif /* ?VMS */ #endif /* ?(UNIX || QDOS) */ } #endif /* !SFX */ @@ -729,22 +619,6 @@ if (open_input_file(__G)) /* this should never happen, given */ return PK_NOZIP; /* the stat() test above, but... */ -#ifdef DO_SAFECHECK_2GB - /* Need more care: Do not trust the size returned by stat() but - determine it by reading beyond the end of the file. */ - G.ziplen = file_size(G.zipfd); - - if (G.ziplen == EOF) { - Info(slide, 0x401, ((char *)slide, LoadFarString(ZipfileTooBig))); - /* - printf( -" We need a better error message for: 64-bit file, 32-bit program.\n"); - */ - CLOSE_INFILE(); - return IZ_ERRBF; - } -#endif /* DO_SAFECHECK_2GB */ - /*--------------------------------------------------------------------------- Find and process the end-of-central-directory header. UnZip need only check last 65557 bytes of zipfile: comment may be up to 65535, end-of- @@ -753,37 +627,51 @@ a debugging tool, search the whole zipfile if zipinfo_mode is true. ---------------------------------------------------------------------------*/ + /* initialize the CRC table pointer (once) */ + if (CRC_32_TAB == NULL) { + if ((CRC_32_TAB = get_crc_table()) == NULL) { + CLOSE_INFILE(); + return PK_MEM; + } + } + +#if (!defined(SFX) || defined(SFX_EXDIR)) + /* check out if specified extraction root directory exists */ + if (uO.exdir != (char *)NULL && G.extract_flag) { + G.create_dirs = !uO.fflag; + if ((error = checkdir(__G__ uO.exdir, ROOT)) > MPN_INF_SKIP) { + /* out of memory, or file in way */ + CLOSE_INFILE(); + return (error == MPN_NOMEM ? PK_MEM : PK_ERR); + } + } +#endif /* !SFX || SFX_EXDIR */ + G.cur_zipfile_bufstart = 0; G.inptr = G.inbuf; -#if ((!defined(WINDLL) && !defined(SFX)) || !defined(NO_ZIPINFO)) -# if (!defined(WINDLL) && !defined(SFX)) - if ( (!uO.zipinfo_mode && !uO.qflag -# ifdef TIMESTAMP - && !uO.T_flag -# endif - ) -# ifndef NO_ZIPINFO - || (uO.zipinfo_mode && uO.hflag) -# endif - ) -# else /* not (!WINDLL && !SFX) ==> !NO_ZIPINFO !! */ - if (uO.zipinfo_mode && uO.hflag) -# endif /* if..else..: (!WINDLL && !SFX) */ -# ifdef WIN32 /* Win32 console may require codepage conversion for G.zipfn */ - Info(slide, 0, ((char *)slide, LoadFarString(LogInitline), - FnFilter1(G.zipfn))); -# else - Info(slide, 0, ((char *)slide, LoadFarString(LogInitline), G.zipfn)); -# endif -#endif /* (!WINDLL && !SFX) || !NO_ZIPINFO */ +#if (!defined(WINDLL) && !defined(SFX)) +#ifdef TIMESTAMP + if (!uO.zipinfo_mode && !uO.qflag && !uO.T_flag) +#else + if (!uO.zipinfo_mode && !uO.qflag) +#endif +#ifdef WIN32 /* Win32 console may require codepage conversion for G.zipfn */ + Info(slide, 0, ((char *)slide, "Archive: %s\n", FnFilter1(G.zipfn))); +#else + Info(slide, 0, ((char *)slide, "Archive: %s\n", G.zipfn)); +#endif +#endif /* !WINDLL && !SFX */ - if ( (error_in_archive = find_ecrec(__G__ + if (( #ifndef NO_ZIPINFO - uO.zipinfo_mode ? G.ziplen : + uO.zipinfo_mode && + ((error_in_archive = find_ecrec(__G__ G.ziplen)) != 0 || + (error_in_archive = zi_end_central(__G)) > PK_WARN)) + || (!uO.zipinfo_mode && #endif - MIN(G.ziplen, 66000L))) - > PK_WARN ) + ((error_in_archive = find_ecrec(__G__ MIN(G.ziplen,66000L))) != 0 || + (error_in_archive = uz_end_central(__G)) > PK_WARN))) { CLOSE_INFILE(); @@ -827,15 +715,13 @@ if (G.ecrec.number_this_disk > G.ecrec.num_disk_start_cdir) { Info(slide, 0x401, ((char *)slide, LoadFarString(CentDirNotInZipMsg), G.zipfn, - (ulg)G.ecrec.number_this_disk, - (ulg)G.ecrec.num_disk_start_cdir)); + G.ecrec.number_this_disk, G.ecrec.num_disk_start_cdir)); error_in_archive = PK_FIND; too_weird_to_continue = TRUE; } else { Info(slide, 0x401, ((char *)slide, LoadFarString(EndCentDirBogus), G.zipfn, - (ulg)G.ecrec.number_this_disk, - (ulg)G.ecrec.num_disk_start_cdir)); + G.ecrec.number_this_disk, G.ecrec.num_disk_start_cdir)); error_in_archive = PK_WARN; } #ifdef NO_MULTIPART /* concatenation of multiple parts works in some cases */ @@ -855,10 +741,10 @@ } #endif /* !SFX */ if ((G.extra_bytes = G.real_ecrec_offset-G.expect_ecrec_offset) < - (zoff_t)0) + (Z_OFF_T)0) { Info(slide, 0x401, ((char *)slide, LoadFarString(MissingBytes), - G.zipfn, FmZofft((-G.extra_bytes), NULL, NULL))); + G.zipfn, (long)(-G.extra_bytes))); error_in_archive = PK_ERR; } else if (G.extra_bytes > 0) { if ((G.ecrec.offset_start_central_directory == 0) && @@ -874,8 +760,7 @@ else { Info(slide, 0x401, ((char *)slide, LoadFarString(ExtraBytesAtStart), G.zipfn, - FmZofft(G.extra_bytes, NULL, NULL), - (G.extra_bytes == 1)? "":"s")); + (long)G.extra_bytes, (G.extra_bytes == 1)? "":"s")); error_in_archive = PK_WARN; } #endif /* !SFX */ @@ -913,20 +798,20 @@ CLOSE_INFILE(); return PK_ERR; /* file may be locked, or possibly disk error(?) */ } - if (memcmp(G.sig, central_hdr_sig, 4)) + if (strncmp(G.sig, central_hdr_sig, 4)) #else if ((error != PK_OK) || (readbuf(__G__ G.sig, 4) == 0) || - memcmp(G.sig, central_hdr_sig, 4)) + strncmp(G.sig, central_hdr_sig, 4)) #endif { #ifndef SFX - zoff_t tmp = G.extra_bytes; + long tmp = G.extra_bytes; #endif G.extra_bytes = 0; error = seek_zipf(__G__ G.ecrec.offset_start_central_directory); if ((error != PK_OK) || (readbuf(__G__ G.sig, 4) == 0) || - memcmp(G.sig, central_hdr_sig, 4)) + strncmp(G.sig, central_hdr_sig, 4)) { if (error != PK_BADERR) Info(slide, 0x401, ((char *)slide, @@ -937,7 +822,7 @@ } #ifndef SFX Info(slide, 0x401, ((char *)slide, LoadFarString(CentDirTooLong), - G.zipfn, FmZofft((-tmp), NULL, NULL))); + G.zipfn, -tmp)); #endif error_in_archive = PK_ERR; } @@ -1007,13 +892,9 @@ # endif if (uO.qflag < 3) Info(slide, 0x201, ((char *)slide, - LoadFarString(ZipTimeStampFailed), G.zipfn)); + "warning: cannot set time for %s\n", G.zipfn)); if (error_in_archive < PK_WARN) error_in_archive = PK_WARN; - } else { - if (!uO.qflag) - Info(slide, 0, ((char *)slide, - LoadFarString(ZipTimeStampSuccess), G.zipfn)); } } #endif @@ -1024,419 +905,6 @@ -#ifdef DO_SAFECHECK_2GB -/************************/ -/* Function file_size() */ -/************************/ -/* File size determination which does not mislead for large files in a - small-file program. Probably should be somewhere else. - The file has to be opened previously -*/ -#ifdef USE_STRM_INPUT -static zoff_t file_size(file) - FILE *file; -{ - int sts; - size_t siz; -#else /* !USE_STRM_INPUT */ -static zoff_t file_size(fh) - int fh; -{ - int siz; -#endif /* ?USE_STRM_INPUT */ - zoff_t ofs; - char waste[4]; - -#ifdef USE_STRM_INPUT - /* Seek to actual EOF. */ - sts = zfseeko(file, 0, SEEK_END); - if (sts != 0) { - /* fseeko() failed. (Unlikely.) */ - ofs = EOF; - } else { - /* Get apparent offset at EOF. */ - ofs = zftello(file); - if (ofs < 0) { - /* Offset negative (overflow). File too big. */ - ofs = EOF; - } else { - /* Seek to apparent EOF offset. - Won't be at actual EOF if offset was truncated. - */ - sts = zfseeko(file, ofs, SEEK_SET); - if (sts != 0) { - /* fseeko() failed. (Unlikely.) */ - ofs = EOF; - } else { - /* Read a byte at apparent EOF. Should set EOF flag. */ - siz = fread(waste, 1, 1, file); - if (feof(file) == 0) { - /* Not at EOF, but should be. File too big. */ - ofs = EOF; - } - } - } - } -#else /* !USE_STRM_INPUT */ - /* Seek to actual EOF. */ - ofs = zlseek(fh, 0, SEEK_END); - if (ofs == (zoff_t) -1) { - /* zlseek() failed. (Unlikely.) */ - ofs = EOF; - } else if (ofs < 0) { - /* Offset negative (overflow). File too big. */ - ofs = EOF; - } else { - /* Seek to apparent EOF offset. - Won't be at actual EOF if offset was truncated. - */ - ofs = zlseek(fh, ofs, SEEK_SET); - if (ofs == (zoff_t) -1) { - /* zlseek() failed. (Unlikely.) */ - ofs = EOF; - } else { - /* Read a byte at apparent EOF. Should set EOF flag. */ - siz = read(fh, waste, 1); - if (siz != 0) { - /* Not at EOF, but should be. File too big. */ - ofs = EOF; - } - } - } -#endif /* ?USE_STRM_INPUT */ - return ofs; -} /* end function file_size() */ -#endif /* DO_SAFECHECK_2GB */ - - - - -/***********************/ -/* Function rec_find() */ -/***********************/ - -static int rec_find(__G__ searchlen, signature, rec_size) - /* return 0 when rec found, 1 when not found, 2 in case of read error */ - __GDEF - zoff_t searchlen; - char* signature; - int rec_size; -{ - int i, numblks, found=FALSE; - zoff_t tail_len; - -/*--------------------------------------------------------------------------- - Zipfile is longer than INBUFSIZ: may need to loop. Start with short - block at end of zipfile (if not TOO short). - ---------------------------------------------------------------------------*/ - - if ((tail_len = G.ziplen % INBUFSIZ) > rec_size) { -#ifdef USE_STRM_INPUT - zfseeko(G.zipfd, G.ziplen-tail_len, SEEK_SET); - G.cur_zipfile_bufstart = zftello(G.zipfd); -#else /* !USE_STRM_INPUT */ - G.cur_zipfile_bufstart = zlseek(G.zipfd, G.ziplen-tail_len, SEEK_SET); -#endif /* ?USE_STRM_INPUT */ - if ((G.incnt = read(G.zipfd, (char *)G.inbuf, - (unsigned int)tail_len)) != (int)tail_len) - return 2; /* it's expedient... */ - - /* 'P' must be at least (rec_size+4) bytes from end of zipfile */ - for (G.inptr = G.inbuf+(int)tail_len-(rec_size+4); - G.inptr >= G.inbuf; - --G.inptr) { - if ( (*G.inptr == (uch)0x50) && /* ASCII 'P' */ - !memcmp((char *)G.inptr, signature, 4) ) { - G.incnt -= (int)(G.inptr - G.inbuf); - found = TRUE; - break; - } - } - /* sig may span block boundary: */ - memcpy((char *)G.hold, (char *)G.inbuf, 3); - } else - G.cur_zipfile_bufstart = G.ziplen - tail_len; - -/*----------------------------------------------------------------------- - Loop through blocks of zipfile data, starting at the end and going - toward the beginning. In general, need not check whole zipfile for - signature, but may want to do so if testing. - -----------------------------------------------------------------------*/ - - numblks = (int)((searchlen - tail_len + (INBUFSIZ-1)) / INBUFSIZ); - /* ==amount= ==done== ==rounding== =blksiz= */ - - for (i = 1; !found && (i <= numblks); ++i) { - G.cur_zipfile_bufstart -= INBUFSIZ; -#ifdef USE_STRM_INPUT - zfseeko(G.zipfd, G.cur_zipfile_bufstart, SEEK_SET); -#else /* !USE_STRM_INPUT */ - zlseek(G.zipfd, G.cur_zipfile_bufstart, SEEK_SET); -#endif /* ?USE_STRM_INPUT */ - if ((G.incnt = read(G.zipfd,(char *)G.inbuf,INBUFSIZ)) - != INBUFSIZ) - return 2; /* read error is fatal failure */ - - for (G.inptr = G.inbuf+INBUFSIZ-1; G.inptr >= G.inbuf; --G.inptr) - if ( (*G.inptr == (uch)0x50) && /* ASCII 'P' */ - !memcmp((char *)G.inptr, signature, 4) ) { - G.incnt -= (int)(G.inptr - G.inbuf); - found = TRUE; - break; - } - /* sig may span block boundary: */ - memcpy((char *)G.hold, (char *)G.inbuf, 3); - } - return (found ? 0 : 1); -} /* end function rec_find() */ - - - - -#if 0 -/********************************/ -/* Function check_ecrec_zip64() */ -/********************************/ - -static int check_ecrec_zip64(__G) - __GDEF -{ - return G.ecrec.offset_start_central_directory == 0xFFFFFFFFL - || G.ecrec.size_central_directory == 0xFFFFFFFFL - || G.ecrec.total_entries_central_dir == 0xFFFF - || G.ecrec.num_entries_centrl_dir_ths_disk == 0xFFFF - || G.ecrec.num_disk_start_cdir == 0xFFFF - || G.ecrec.number_this_disk == 0xFFFF; -} /* end function check_ecrec_zip64() */ -#endif /* never */ - - - -/***************************/ -/* Function find_ecrec64() */ -/***************************/ - -static int find_ecrec64(__G__ searchlen) /* return PK-class error */ - __GDEF - zoff_t searchlen; -{ - ec_byte_rec64 byterec; /* buf for ecrec64 */ - ec_byte_loc64 byterecL; /* buf for ecrec64 locator */ - zoff_t ecloc64_start_offset; /* start offset of ecrec64 locator */ - zusz_t ecrec64_start_offset; /* start offset of ecrec64 */ - zuvl_t ecrec64_start_disk; /* start disk of ecrec64 */ - zuvl_t ecloc64_total_disks; /* total disks */ - zuvl_t ecrec64_disk_cdstart; /* disk number of central dir start */ - zucn_t ecrec64_this_entries; /* entries on disk with ecrec64 */ - zucn_t ecrec64_tot_entries; /* total number of entries */ - zusz_t ecrec64_cdirsize; /* length of central dir */ - zusz_t ecrec64_offs_cdstart; /* offset of central dir start */ - - /* First, find the ecrec64 locator. By definition, this must be before - ecrec with nothing in between. We back up the size of the ecrec64 - locator and check. */ - - ecloc64_start_offset = G.real_ecrec_offset - (ECLOC64_SIZE+4); - if (ecloc64_start_offset < 0) - /* Seeking would go past beginning, so probably empty archive */ - return PK_COOL; - -#ifdef USE_STRM_INPUT - zfseeko(G.zipfd, ecloc64_start_offset, SEEK_SET); - G.cur_zipfile_bufstart = zftello(G.zipfd); -#else /* !USE_STRM_INPUT */ - G.cur_zipfile_bufstart = zlseek(G.zipfd, ecloc64_start_offset, SEEK_SET); -#endif /* ?USE_STRM_INPUT */ - - if ((G.incnt = read(G.zipfd, (char *)byterecL, ECLOC64_SIZE+4)) - != (ECLOC64_SIZE+4)) { - if (uO.qflag || uO.zipinfo_mode) - Info(slide, 0x401, ((char *)slide, "[%s]\n", G.zipfn)); - Info(slide, 0x401, ((char *)slide, - LoadFarString(Cent64EndSigSearchErr))); - return PK_ERR; - } - - if (memcmp((char *)byterecL, end_centloc64_sig, 4) ) { - /* not found */ - return PK_COOL; - } - - /* Read the locator. */ - ecrec64_start_disk = (zuvl_t)makelong(&byterecL[NUM_DISK_START_EOCDR64]); - ecrec64_start_offset = (zusz_t)makeint64(&byterecL[OFFSET_START_EOCDR64]); - ecloc64_total_disks = (zuvl_t)makelong(&byterecL[NUM_THIS_DISK_LOC64]); - - /* Check for consistency */ -#ifdef TEST - fprintf(stdout,"\nnumber of disks (ECR) %u, (ECLOC64) %lu\n", - G.ecrec.number_this_disk, ecloc64_total_disks); fflush(stdout); -#endif - if ((G.ecrec.number_this_disk != 0xFFFF) && - (G.ecrec.number_this_disk != ecloc64_total_disks - 1)) { - /* Note: For some unknown reason, the developers at PKWARE decided to - store the "zip64 total disks" value as a counter starting from 1, - whereas all other "split/span volume" related fields use 0-based - volume numbers. Sigh... */ - /* When the total number of disks as found in the traditional ecrec - is not 0xFFFF, the disk numbers in ecrec and ecloc64 must match. - When this is not the case, the found ecrec64 locator cannot be valid. - -> This is not a Zip64 archive. - */ - Trace((stderr, - "\ninvalid ECLOC64, differing disk# (ECR %u, ECL64 %lu)\n", - G.ecrec.number_this_disk, ecloc64_total_disks - 1)); - return PK_COOL; - } - - /* If found locator, look for ecrec64 where the locator says it is. */ - - /* For now assume that ecrec64 is on the same disk as ecloc64 and ecrec, - which is usually the case and is how Zip writes it. To do this right, - however, we should allow the ecrec64 to be on another disk since - the AppNote allows it and the ecrec64 can be large, especially if - Version 2 is used (AppNote uses 8 bytes for the size of this record). */ - - /* FIX BELOW IF ADD SUPPORT FOR MULTIPLE DISKS */ - - if (ecrec64_start_offset > (zusz_t)ecloc64_start_offset) { - /* ecrec64 has to be before ecrec64 locator */ - if (uO.qflag || uO.zipinfo_mode) - Info(slide, 0x401, ((char *)slide, "[%s]\n", G.zipfn)); - Info(slide, 0x401, ((char *)slide, - LoadFarString(Cent64EndSigSearchErr))); - return PK_ERR; - } - -#ifdef USE_STRM_INPUT - zfseeko(G.zipfd, ecrec64_start_offset, SEEK_SET); - G.cur_zipfile_bufstart = zftello(G.zipfd); -#else /* !USE_STRM_INPUT */ - G.cur_zipfile_bufstart = zlseek(G.zipfd, ecrec64_start_offset, SEEK_SET); -#endif /* ?USE_STRM_INPUT */ - - if ((G.incnt = read(G.zipfd, (char *)byterec, ECREC64_SIZE+4)) - != (ECREC64_SIZE+4)) { - if (uO.qflag || uO.zipinfo_mode) - Info(slide, 0x401, ((char *)slide, "[%s]\n", G.zipfn)); - Info(slide, 0x401, ((char *)slide, - LoadFarString(Cent64EndSigSearchErr))); - return PK_ERR; - } - - if (memcmp((char *)byterec, end_central64_sig, 4) ) { - /* Zip64 EOCD Record not found */ - /* Since we already have seen the Zip64 EOCD Locator, it's - possible we got here because there are bytes prepended - to the archive, like the sfx prefix. */ - - /* Make a guess as to where the Zip64 EOCD Record might be */ - ecrec64_start_offset = ecloc64_start_offset - ECREC64_SIZE - 4; - -#ifdef USE_STRM_INPUT - zfseeko(G.zipfd, ecrec64_start_offset, SEEK_SET); - G.cur_zipfile_bufstart = zftello(G.zipfd); -#else /* !USE_STRM_INPUT */ - G.cur_zipfile_bufstart = zlseek(G.zipfd, ecrec64_start_offset, SEEK_SET); -#endif /* ?USE_STRM_INPUT */ - - if ((G.incnt = read(G.zipfd, (char *)byterec, ECREC64_SIZE+4)) - != (ECREC64_SIZE+4)) { - if (uO.qflag || uO.zipinfo_mode) - Info(slide, 0x401, ((char *)slide, "[%s]\n", G.zipfn)); - Info(slide, 0x401, ((char *)slide, - LoadFarString(Cent64EndSigSearchErr))); - return PK_ERR; - } - - if (memcmp((char *)byterec, end_central64_sig, 4) ) { - /* Zip64 EOCD Record not found */ - /* Probably something not so easy to handle so exit */ - if (uO.qflag || uO.zipinfo_mode) - Info(slide, 0x401, ((char *)slide, "[%s]\n", G.zipfn)); - Info(slide, 0x401, ((char *)slide, - LoadFarString(Cent64EndSigSearchErr))); - return PK_ERR; - } - - if (uO.qflag || uO.zipinfo_mode) - Info(slide, 0x401, ((char *)slide, "[%s]\n", G.zipfn)); - Info(slide, 0x401, ((char *)slide, - LoadFarString(Cent64EndSigSearchOff))); - } - - /* Check consistency of found ecrec64 with ecloc64 (and ecrec): */ - if ( (zuvl_t)makelong(&byterec[NUMBER_THIS_DSK_REC64]) - != ecrec64_start_disk ) - /* found ecrec64 does not match ecloc64 info -> no Zip64 archive */ - return PK_COOL; - /* Read all relevant ecrec64 fields and compare them to the corresponding - ecrec fields unless those are set to "all-ones". - */ - ecrec64_disk_cdstart = - (zuvl_t)makelong(&byterec[NUM_DISK_START_CEN_DIR64]); - if ( (G.ecrec.num_disk_start_cdir != 0xFFFF) && - (G.ecrec.num_disk_start_cdir != ecrec64_disk_cdstart) ) - return PK_COOL; - ecrec64_this_entries - = makeint64(&byterec[NUM_ENTRIES_CEN_DIR_THS_DISK64]); - if ( (G.ecrec.num_entries_centrl_dir_ths_disk != 0xFFFF) && - (G.ecrec.num_entries_centrl_dir_ths_disk != ecrec64_this_entries) ) - return PK_COOL; - ecrec64_tot_entries - = makeint64(&byterec[TOTAL_ENTRIES_CENTRAL_DIR64]); - if ( (G.ecrec.total_entries_central_dir != 0xFFFF) && - (G.ecrec.total_entries_central_dir != ecrec64_tot_entries) ) - return PK_COOL; - ecrec64_cdirsize - = makeint64(&byterec[SIZE_CENTRAL_DIRECTORY64]); - if ( (G.ecrec.size_central_directory != 0xFFFFFFFFL) && - (G.ecrec.size_central_directory != ecrec64_cdirsize) ) - return PK_COOL; - ecrec64_offs_cdstart - = makeint64(&byterec[OFFSET_START_CENTRAL_DIRECT64]); - if ( (G.ecrec.offset_start_central_directory != 0xFFFFFFFFL) && - (G.ecrec.offset_start_central_directory != ecrec64_offs_cdstart) ) - return PK_COOL; - - /* Now, we are (almost) sure that we have a Zip64 archive. */ - G.ecrec.have_ecr64 = 1; - - /* Update the "end-of-central-dir offset" for later checks. */ - G.real_ecrec_offset = ecrec64_start_offset; - - /* Update all ecdir_rec data that are flagged to be invalid - in Zip64 mode. Set the ecrec64-mandatory flag when such a - case is found. */ - if (G.ecrec.number_this_disk == 0xFFFF) { - G.ecrec.number_this_disk = ecrec64_start_disk; - if (ecrec64_start_disk != 0xFFFF) G.ecrec.is_zip64_archive = TRUE; - } - if (G.ecrec.num_disk_start_cdir == 0xFFFF) { - G.ecrec.num_disk_start_cdir = ecrec64_disk_cdstart; - if (ecrec64_disk_cdstart != 0xFFFF) G.ecrec.is_zip64_archive = TRUE; - } - if (G.ecrec.num_entries_centrl_dir_ths_disk == 0xFFFF) { - G.ecrec.num_entries_centrl_dir_ths_disk = ecrec64_this_entries; - if (ecrec64_this_entries != 0xFFFF) G.ecrec.is_zip64_archive = TRUE; - } - if (G.ecrec.total_entries_central_dir == 0xFFFF) { - G.ecrec.total_entries_central_dir = ecrec64_tot_entries; - if (ecrec64_tot_entries != 0xFFFF) G.ecrec.is_zip64_archive = TRUE; - } - if (G.ecrec.size_central_directory == 0xFFFFFFFFL) { - G.ecrec.size_central_directory = ecrec64_cdirsize; - if (ecrec64_cdirsize != 0xFFFFFFFF) G.ecrec.is_zip64_archive = TRUE; - } - if (G.ecrec.offset_start_central_directory == 0xFFFFFFFFL) { - G.ecrec.offset_start_central_directory = ecrec64_offs_cdstart; - if (ecrec64_offs_cdstart != 0xFFFFFFFF) G.ecrec.is_zip64_archive = TRUE; - } - - return PK_COOL; -} /* end function find_ecrec64() */ - - /*************************/ /* Function find_ecrec() */ @@ -1444,23 +912,19 @@ static int find_ecrec(__G__ searchlen) /* return PK-class error */ __GDEF - zoff_t searchlen; + long searchlen; { - int found = FALSE; - int error_in_archive; - int result; + int i, numblks, found=FALSE; + Z_OFF_T tail_len; ec_byte_rec byterec; + /*--------------------------------------------------------------------------- Treat case of short zipfile separately. ---------------------------------------------------------------------------*/ if (G.ziplen <= INBUFSIZ) { -#ifdef USE_STRM_INPUT - zfseeko(G.zipfd, 0L, SEEK_SET); -#else /* !USE_STRM_INPUT */ - zlseek(G.zipfd, 0L, SEEK_SET); -#endif /* ?USE_STRM_INPUT */ + lseek(G.zipfd, 0L, SEEK_SET); if ((G.incnt = read(G.zipfd,(char *)G.inbuf,(unsigned int)G.ziplen)) == (int)G.ziplen) @@ -1469,7 +933,7 @@ G.inptr >= G.inbuf; --G.inptr) { if ( (*G.inptr == (uch)0x50) && /* ASCII 'P' */ - !memcmp((char *)G.inptr, end_central_sig, 4)) { + !strncmp((char *)G.inptr, end_central_sig, 4)) { G.incnt -= (int)(G.inptr - G.inbuf); found = TRUE; break; @@ -1477,17 +941,66 @@ } /*--------------------------------------------------------------------------- - Zipfile is longer than INBUFSIZ: - - MB - this next block of code moved to rec_find so that same code can be - used to look for zip64 ec record. No need to include code above since - a zip64 ec record will only be looked for if it is a BIG file. + Zipfile is longer than INBUFSIZ: may need to loop. Start with short + block at end of zipfile (if not TOO short). ---------------------------------------------------------------------------*/ } else { - found = - (rec_find(__G__ searchlen, end_central_sig, ECREC_SIZE) == 0 - ? TRUE : FALSE); + if ((tail_len = G.ziplen % INBUFSIZ) > ECREC_SIZE) { +#ifdef USE_STRM_INPUT + fseek((FILE *)G.zipfd, G.ziplen-tail_len, SEEK_SET); + G.cur_zipfile_bufstart = ftell((FILE *)G.zipfd); +#else /* !USE_STRM_INPUT */ + G.cur_zipfile_bufstart = lseek(G.zipfd, G.ziplen-tail_len, + SEEK_SET); +#endif /* ?USE_STRM_INPUT */ + if ((G.incnt = read(G.zipfd, (char *)G.inbuf, + (unsigned int)tail_len)) != (int)tail_len) + goto fail; /* it's expedient... */ + + /* 'P' must be at least (ECREC_SIZE+4) bytes from end of zipfile */ + for (G.inptr = G.inbuf+(int)tail_len-(ECREC_SIZE+4); + G.inptr >= G.inbuf; + --G.inptr) { + if ( (*G.inptr == (uch)0x50) && /* ASCII 'P' */ + !strncmp((char *)G.inptr, end_central_sig, 4)) { + G.incnt -= (int)(G.inptr - G.inbuf); + found = TRUE; + break; + } + } + /* sig may span block boundary: */ + memcpy((char *)G.hold, (char *)G.inbuf, 3); + } else + G.cur_zipfile_bufstart = G.ziplen - tail_len; + + /*----------------------------------------------------------------------- + Loop through blocks of zipfile data, starting at the end and going + toward the beginning. In general, need not check whole zipfile for + signature, but may want to do so if testing. + -----------------------------------------------------------------------*/ + + numblks = (int)((searchlen - tail_len + (INBUFSIZ-1)) / INBUFSIZ); + /* ==amount= ==done== ==rounding== =blksiz= */ + + for (i = 1; !found && (i <= numblks); ++i) { + G.cur_zipfile_bufstart -= INBUFSIZ; + lseek(G.zipfd, G.cur_zipfile_bufstart, SEEK_SET); + if ((G.incnt = read(G.zipfd,(char *)G.inbuf,INBUFSIZ)) + != INBUFSIZ) + break; /* fall through and fail */ + + for (G.inptr = G.inbuf+INBUFSIZ-1; G.inptr >= G.inbuf; + --G.inptr) + if ((native(*G.inptr) == 'P') && + !strncmp((char *)G.inptr, end_central_sig, 4)) { + G.incnt -= (int)(G.inptr - G.inbuf); + found = TRUE; + break; + } + /* sig may span block boundary: */ + memcpy((char *)G.hold, (char *)G.inbuf, 3); + } } /* end if (ziplen > INBUFSIZ) */ /*--------------------------------------------------------------------------- @@ -1495,6 +1008,7 @@ it. Print informational message and die a horrible death. ---------------------------------------------------------------------------*/ +fail: if (!found) { if (uO.qflag || uO.zipinfo_mode) Info(slide, 0x401, ((char *)slide, "[%s]\n", G.zipfn)); @@ -1511,9 +1025,8 @@ G.real_ecrec_offset = G.cur_zipfile_bufstart + (G.inptr-G.inbuf); #ifdef TEST - printf("\n found end-of-central-dir signature at offset %s (%sh)\n", - FmZofft(G.real_ecrec_offset, NULL, NULL), - FmZofft(G.real_ecrec_offset, FZOFFT_HEX_DOT_WID, "X")); + printf("\n found end-of-central-dir signature at offset %ld (%.8lXh)\n", + G.real_ecrec_offset, G.real_ecrec_offset); printf(" from beginning of file; offset %d (%.4Xh) within block\n", G.inptr-G.inbuf, G.inptr-G.inbuf); #endif @@ -1524,9 +1037,9 @@ G.ecrec.number_this_disk = makeword(&byterec[NUMBER_THIS_DISK]); G.ecrec.num_disk_start_cdir = - makeword(&byterec[NUM_DISK_WITH_START_CEN_DIR]); + makeword(&byterec[NUM_DISK_WITH_START_CENTRAL_DIR]); G.ecrec.num_entries_centrl_dir_ths_disk = - makeword(&byterec[NUM_ENTRIES_CEN_DIR_THS_DISK]); + makeword(&byterec[NUM_ENTRIES_CENTRL_DIR_THS_DISK]); G.ecrec.total_entries_central_dir = makeword(&byterec[TOTAL_ENTRIES_CENTRAL_DIR]); G.ecrec.size_central_directory = @@ -1536,44 +1049,9 @@ G.ecrec.zipfile_comment_length = makeword(&byterec[ZIPFILE_COMMENT_LENGTH]); - /* Now, we have to read the archive comment, BEFORE the file pointer - is moved away backwards to seek for a Zip64 ECLOC64 structure. - */ - if ( (error_in_archive = process_zip_cmmnt(__G)) > PK_WARN ) - return error_in_archive; - - /* Next: Check for existence of Zip64 end-of-cent-dir locator - ECLOC64. This structure must reside on the same volume as the - classic ECREC, at exactly (ECLOC64_SIZE+4) bytes in front - of the ECREC. - The ECLOC64 structure directs to the longer ECREC64 structure - A ECREC64 will ALWAYS exist for a proper Zip64 archive, as - the "Version Needed To Extract" field is required to be set - to 4.5 or higher whenever any Zip64 features are used anywhere - in the archive, so just check for that to see if this is a - Zip64 archive. - */ - result = find_ecrec64(__G__ searchlen+76); - /* 76 bytes for zip64ec & zip64 locator */ - if (result != PK_COOL) { - if (error_in_archive < result) - error_in_archive = result; - return error_in_archive; - } - G.expect_ecrec_offset = G.ecrec.offset_start_central_directory + - G.ecrec.size_central_directory; - -#ifndef NO_ZIPINFO - if (uO.zipinfo_mode) { - /* In ZipInfo mode, additional info about the data found in the - end-of-central-directory areas is printed out. - */ - zi_end_central(__G); - } -#endif - - return error_in_archive; + G.ecrec.size_central_directory; + return PK_COOL; } /* end function find_ecrec() */ @@ -1581,11 +1059,11 @@ -/********************************/ -/* Function process_zip_cmmnt() */ -/********************************/ +/*****************************/ +/* Function uz_end_central() */ +/*****************************/ -static int process_zip_cmmnt(__G) /* return PK-type error code */ +int uz_end_central(__G) /* return PK-type error code */ __GDEF { int error = PK_COOL; @@ -1593,74 +1071,29 @@ /*--------------------------------------------------------------------------- Get the zipfile comment (up to 64KB long), if any, and print it out. + Then position the file pointer to the beginning of the central directory + and fill buffer. ---------------------------------------------------------------------------*/ #ifdef WINDLL /* for comment button: */ if ((!G.fValidate) && (G.lpUserFunctions != NULL)) G.lpUserFunctions->cchComment = G.ecrec.zipfile_comment_length; -#endif /* WINDLL */ - -#ifndef NO_ZIPINFO - /* ZipInfo, verbose format */ - if (uO.zipinfo_mode && uO.lflag > 9) { - /*------------------------------------------------------------------- - Get the zipfile comment, if any, and print it out. - (Comment may be up to 64KB long. May the fleas of a thousand - camels infest the arm-pits of anyone who actually takes advantage - of this fact.) - -------------------------------------------------------------------*/ - - if (!G.ecrec.zipfile_comment_length) - Info(slide, 0, ((char *)slide, LoadFarString(NoZipfileComment))); - else { - Info(slide, 0, ((char *)slide, LoadFarString(ZipfileCommentDesc), - G.ecrec.zipfile_comment_length)); - Info(slide, 0, ((char *)slide, LoadFarString(ZipfileCommBegin))); - if (do_string(__G__ G.ecrec.zipfile_comment_length, DISPLAY)) - error = PK_WARN; - Info(slide, 0, ((char *)slide, LoadFarString(ZipfileCommEnd))); - if (error) - Info(slide, 0, ((char *)slide, - LoadFarString(ZipfileCommTrunc2))); - } /* endif (comment exists) */ - - /* ZipInfo, non-verbose mode: print zipfile comment only if requested */ - } else if (G.ecrec.zipfile_comment_length && - (uO.zflag > 0) && uO.zipinfo_mode) { - if (do_string(__G__ G.ecrec.zipfile_comment_length, DISPLAY)) { - Info(slide, 0x401, ((char *)slide, - LoadFarString(ZipfileCommTrunc1))); - error = PK_WARN; - } - } else -#endif /* !NO_ZIPINFO */ - if ( G.ecrec.zipfile_comment_length && - (uO.zflag > 0 -#ifndef WINDLL - || (uO.zflag == 0 -# ifndef NO_ZIPINFO - && !uO.zipinfo_mode -# endif -# ifdef TIMESTAMP - && !uO.T_flag -# endif - && !uO.qflag) -#endif /* !WINDLL */ - ) ) + if (G.ecrec.zipfile_comment_length && (uO.zflag > 0)) +#else /* !WINDLL */ + if (G.ecrec.zipfile_comment_length && (uO.zflag > 0 || + (uO.zflag == 0 && +#ifdef TIMESTAMP + !uO.T_flag && +#endif + !uO.qflag))) +#endif /* ?WINDLL */ { - if (do_string(__G__ G.ecrec.zipfile_comment_length, #if (defined(SFX) && defined(CHEAP_SFX_AUTORUN)) -# ifndef NO_ZIPINFO - (oU.zipinfo_mode ? DISPLAY : CHECK_AUTORUN) -# else - CHECK_AUTORUN -# endif + if (do_string(__G__ G.ecrec.zipfile_comment_length, CHECK_AUTORUN)) { #else - DISPLAY + if (do_string(__G__ G.ecrec.zipfile_comment_length, DISPLAY)) { #endif - )) - { Info(slide, 0x401, ((char *)slide, LoadFarString(ZipfileCommTrunc1))); error = PK_WARN; @@ -1668,8 +1101,7 @@ } #if (defined(SFX) && defined(CHEAP_SFX_AUTORUN)) else if (G.ecrec.zipfile_comment_length) { - if (do_string(__G__ G.ecrec.zipfile_comment_length, CHECK_AUTORUN_Q)) - { + if (do_string(__G__ G.ecrec.zipfile_comment_length, CHECK_AUTORUN_Q)) { Info(slide, 0x401, ((char *)slide, LoadFarString(ZipfileCommTrunc1))); error = PK_WARN; @@ -1678,7 +1110,7 @@ #endif return error; -} /* end function process_zip_cmmnt() */ +} /* end function uz_end_central() */ @@ -1744,13 +1176,6 @@ strings (see do_string() function in fileio.c) */ G.pInfo->HasUxAtt = (G.crec.external_file_attributes & 0xffff0000L) != 0L; -#ifdef UNICODE_SUPPORT - /* remember the state of GPB11 (General Purpuse Bit 11) which indicates - that the standard path and comment are UTF-8. */ - G.pInfo->GPFIsUTF8 - = (G.crec.general_purpose_bit_flag & (1 << 11)) == (1 << 11); -#endif - return PK_COOL; } /* end function process_cdir_file_hdr() */ @@ -1763,7 +1188,7 @@ /* Function get_cdir_ent() */ /***************************/ -static int get_cdir_ent(__G) /* return PK-type error code */ +int get_cdir_ent(__G) /* return PK-type error code */ __GDEF { cdir_byte_hdr byterec; @@ -1863,805 +1288,15 @@ G.lrec.ucsize = G.pInfo->uncompr_size; } - G.csize = G.lrec.csize; + G.csize = (long)G.lrec.csize; return PK_COOL; } /* end function process_local_file_hdr() */ -/*******************************/ -/* Function getZip64Data() */ -/*******************************/ - -int getZip64Data(__G__ ef_buf, ef_len) - __GDEF - ZCONST uch *ef_buf; /* buffer containing extra field */ - unsigned ef_len; /* total length of extra field */ -{ - unsigned eb_id; - unsigned eb_len; - -/*--------------------------------------------------------------------------- - This function scans the extra field for zip64 information, ie 8-byte - versions of compressed file size, uncompressed file size, relative offset - and a 4-byte version of disk start number. - Sets both local header and central header fields. Not terribly clever, - but it means that this procedure is only called in one place. - ---------------------------------------------------------------------------*/ - - if (ef_len == 0 || ef_buf == NULL) - return PK_COOL; - - Trace((stderr,"\ngetZip64Data: scanning extra field of length %u\n", - ef_len)); - - while (ef_len >= EB_HEADSIZE) { - eb_id = makeword(EB_ID + ef_buf); - eb_len = makeword(EB_LEN + ef_buf); - - if (eb_len > (ef_len - EB_HEADSIZE)) { - /* discovered some extra field inconsistency! */ - Trace((stderr, - "getZip64Data: block length %u > rest ef_size %u\n", eb_len, - ef_len - EB_HEADSIZE)); - break; - } - if (eb_id == EF_PKSZ64) { - - int offset = EB_HEADSIZE; - - if (G.crec.ucsize == 0xffffffff || G.lrec.ucsize == 0xffffffff){ - G.lrec.ucsize = G.crec.ucsize = makeint64(offset + ef_buf); - offset += sizeof(G.crec.ucsize); - } - if (G.crec.csize == 0xffffffff || G.lrec.csize == 0xffffffff){ - G.csize = G.lrec.csize = G.crec.csize = makeint64(offset + ef_buf); - offset += sizeof(G.crec.csize); - } - if (G.crec.relative_offset_local_header == 0xffffffff){ - G.crec.relative_offset_local_header = makeint64(offset + ef_buf); - offset += sizeof(G.crec.relative_offset_local_header); - } - if (G.crec.disk_number_start == 0xffff){ - G.crec.disk_number_start = (zuvl_t)makelong(offset + ef_buf); - offset += sizeof(G.crec.disk_number_start); - } - } - - /* Skip this extra field block */ - ef_buf += (eb_len + EB_HEADSIZE); - ef_len -= (eb_len + EB_HEADSIZE); - } - - return PK_COOL; -} /* end function getZip64Data() */ - - -#ifdef UNICODE_SUPPORT - -/*******************************/ -/* Function getUnicodeData() */ -/*******************************/ - -int getUnicodeData(__G__ ef_buf, ef_len) - __GDEF - ZCONST uch *ef_buf; /* buffer containing extra field */ - unsigned ef_len; /* total length of extra field */ -{ - unsigned eb_id; - unsigned eb_len; - -/*--------------------------------------------------------------------------- - This function scans the extra field for Unicode information, ie UTF-8 - path extra fields. - - On return, G.unipath_filename = - NULL, if no Unicode path extra field or error - "", if the standard path is UTF-8 (free when done) - null-terminated UTF-8 path (free when done) - Return PK_COOL if no error. - ---------------------------------------------------------------------------*/ - - G.unipath_filename = NULL; - - if (ef_len == 0 || ef_buf == NULL) - return PK_COOL; - - Trace((stderr,"\ngetUnicodeData: scanning extra field of length %u\n", - ef_len)); - - while (ef_len >= EB_HEADSIZE) { - eb_id = makeword(EB_ID + ef_buf); - eb_len = makeword(EB_LEN + ef_buf); - - if (eb_len > (ef_len - EB_HEADSIZE)) { - /* discovered some extra field inconsistency! */ - Trace((stderr, - "getUnicodeData: block length %u > rest ef_size %u\n", eb_len, - ef_len - EB_HEADSIZE)); - break; - } - if (eb_id == EF_UNIPATH) { - - int offset = EB_HEADSIZE; - ush ULen = eb_len - 5; - ulg chksum = CRCVAL_INITIAL; - - /* version */ - G.unipath_version = (uch) *(offset + ef_buf); - offset += 1; - if (G.unipath_version > 1) { - /* can do only version 1 */ - Info(slide, 0x401, ((char *)slide, - LoadFarString(UnicodeVersionError))); - return PK_ERR; - } - - /* filename CRC */ - G.unipath_checksum = makelong(offset + ef_buf); - offset += 4; - - /* - * Compute 32-bit crc - */ - - chksum = crc32(chksum, (uch *)(G.filename_full), - strlen(G.filename_full)); - - /* If the checksums's don't match then likely filename has been - * modified and the Unicode Path is no longer valid. - */ - if (chksum != G.unipath_checksum) { - Info(slide, 0x401, ((char *)slide, - LoadFarString(UnicodeMismatchError))); - if (G.unicode_mismatch == 1) { - /* warn and continue */ - } else if (G.unicode_mismatch == 2) { - /* ignore and continue */ - } else if (G.unicode_mismatch == 0) { - } - return PK_ERR; - } - - /* UTF-8 Path */ - if ((G.unipath_filename = malloc(ULen + 1)) == NULL) { - return PK_ERR; - } - if (ULen == 0) { - /* standard path is UTF-8 so use that */ - G.unipath_filename[0] = '\0'; - } else { - /* UTF-8 path */ - strncpy(G.unipath_filename, - (ZCONST char *)(offset + ef_buf), ULen); - G.unipath_filename[ULen] = '\0'; - } - } - - /* Skip this extra field block */ - ef_buf += (eb_len + EB_HEADSIZE); - ef_len -= (eb_len + EB_HEADSIZE); - } - - return PK_COOL; -} /* end function getUnicodeData() */ - - - - -#ifdef UNICODE_WCHAR - /*--------------------------------------------- - * Unicode conversion functions - * - * Based on functions provided by Paul Kienitz - * - *--------------------------------------------- - */ - -/* - NOTES APPLICABLE TO ALL STRING FUNCTIONS: - - All of the x_to_y functions take parameters for an output buffer and - its available length, and return an int. The value returned is the - length of the string that the input produces, which may be larger than - the provided buffer length. If the returned value is less than the - buffer length, then the contents of the buffer will be null-terminated; - otherwise, it will not be terminated and may be invalid, possibly - stopping in the middle of a multibyte sequence. - - In all cases you may pass NULL as the buffer and/or 0 as the length, if - you just want to learn how much space the string is going to require. - - The functions will return -1 if the input is invalid UTF-8 or cannot be - encoded as UTF-8. -*/ - -static int utf8_char_bytes OF((ZCONST char *utf8)); -static ulg ucs4_char_from_utf8 OF((ZCONST char **utf8)); -static int utf8_to_ucs4_string OF((ZCONST char *utf8, ulg *ucs4buf, - int buflen)); - -/* utility functions for managing UTF-8 and UCS-4 strings */ - - -/* utf8_char_bytes - * - * Returns the number of bytes used by the first character in a UTF-8 - * string, or -1 if the UTF-8 is invalid or null. - */ -static int utf8_char_bytes(utf8) - ZCONST char *utf8; -{ - int t, r; - unsigned lead; - - if (!utf8) - return -1; /* no input */ - lead = (unsigned char) *utf8; - if (lead < 0x80) - r = 1; /* an ascii-7 character */ - else if (lead < 0xC0) - return -1; /* error: trailing byte without lead byte */ - else if (lead < 0xE0) - r = 2; /* an 11 bit character */ - else if (lead < 0xF0) - r = 3; /* a 16 bit character */ - else if (lead < 0xF8) - r = 4; /* a 21 bit character (the most currently used) */ - else if (lead < 0xFC) - r = 5; /* a 26 bit character (shouldn't happen) */ - else if (lead < 0xFE) - r = 6; /* a 31 bit character (shouldn't happen) */ - else - return -1; /* error: invalid lead byte */ - for (t = 1; t < r; t++) - if ((unsigned char) utf8[t] < 0x80 || (unsigned char) utf8[t] >= 0xC0) - return -1; /* error: not enough valid trailing bytes */ - return r; -} - - -/* ucs4_char_from_utf8 - * - * Given a reference to a pointer into a UTF-8 string, returns the next - * UCS-4 character and advances the pointer to the next character sequence. - * Returns ~0 (= -1 in twos-complement notation) and does not advance the - * pointer when input is ill-formed. - */ -static ulg ucs4_char_from_utf8(utf8) - ZCONST char **utf8; -{ - ulg ret; - int t, bytes; - - if (!utf8) - return ~0L; /* no input */ - bytes = utf8_char_bytes(*utf8); - if (bytes <= 0) - return ~0L; /* invalid input */ - if (bytes == 1) - ret = **utf8; /* ascii-7 */ - else - ret = **utf8 & (0x7F >> bytes); /* lead byte of a multibyte sequence */ - (*utf8)++; - for (t = 1; t < bytes; t++) /* consume trailing bytes */ - ret = (ret << 6) | (*((*utf8)++) & 0x3F); - return (zwchar) ret; -} - - -#if 0 /* currently unused */ -/* utf8_from_ucs4_char - Convert UCS char to UTF-8 - * - * Returns the number of bytes put into utf8buf to represent ch, from 1 to 6, - * or -1 if ch is too large to represent. utf8buf must have room for 6 bytes. - */ -static int utf8_from_ucs4_char(utf8buf, ch) - char *utf8buf; - ulg ch; -{ - int trailing = 0; - int leadmask = 0x80; - int leadbits = 0x3F; - int tch = ch; - int ret; - - if (ch > 0x7FFFFFFFL) - return -1; /* UTF-8 can represent 31 bits */ - if (ch < 0x7F) - { - *utf8buf++ = (char) ch; /* ascii-7 */ - return 1; - } - do { - trailing++; - leadmask = (leadmask >> 1) | 0x80; - leadbits >>= 1; - tch >>= 6; - } while (tch & ~leadbits); - ret = trailing + 1; - /* produce lead byte */ - *utf8buf++ = (char) (leadmask | (ch >> (6 * trailing))); - while (--trailing >= 0) - /* produce trailing bytes */ - *utf8buf++ = (char) (0x80 | ((ch >> (6 * trailing)) & 0x3F)); - return ret; -} -#endif /* unused */ - - -/*===================================================================*/ - -/* utf8_to_ucs4_string - convert UTF-8 string to UCS string - * - * Return UCS count. Now returns int so can return -1. - */ -static int utf8_to_ucs4_string(utf8, ucs4buf, buflen) - ZCONST char *utf8; - ulg *ucs4buf; - int buflen; -{ - int count = 0; - - for (;;) - { - ulg ch = ucs4_char_from_utf8(&utf8); - if (ch == ~0L) - return -1; - else - { - if (ucs4buf && count < buflen) - ucs4buf[count] = ch; - if (ch == 0) - return count; - count++; - } - } -} - - -#if 0 /* currently unused */ -/* ucs4_string_to_utf8 - * - * - */ -static int ucs4_string_to_utf8(ucs4, utf8buf, buflen) - ZCONST ulg *ucs4; - char *utf8buf; - int buflen; -{ - char mb[6]; - int count = 0; - - if (!ucs4) - return -1; - for (;;) - { - int mbl = utf8_from_ucs4_char(mb, *ucs4++); - int c; - if (mbl <= 0) - return -1; - /* We could optimize this a bit by passing utf8buf + count */ - /* directly to utf8_from_ucs4_char when buflen >= count + 6... */ - c = buflen - count; - if (mbl < c) - c = mbl; - if (utf8buf && count < buflen) - strncpy(utf8buf + count, mb, c); - if (mbl == 1 && !mb[0]) - return count; /* terminating nul */ - count += mbl; - } -} - - -/* utf8_chars - * - * Wrapper: counts the actual unicode characters in a UTF-8 string. - */ -static int utf8_chars(utf8) - ZCONST char *utf8; -{ - return utf8_to_ucs4_string(utf8, NULL, 0); -} -#endif /* unused */ - -/* --------------------------------------------------- */ -/* Unicode Support - * - * These functions common for all Unicode ports. - * - * These functions should allocate and return strings that can be - * freed with free(). - * - * 8/27/05 EG - * - * Use zwchar for wide char which is unsigned long - * in zip.h and 32 bits. This avoids problems with - * different sizes of wchar_t. - */ - -#if 0 /* currently unused */ -/* is_ascii_string - * Checks if a string is all ascii - */ -int is_ascii_string(mbstring) - ZCONST char *mbstring; -{ - char *p; - uch c; - - for (p = mbstring; c = (uch)*p; p++) { - if (c > 0x7F) { - return 0; - } - } - return 1; -} - -/* local to UTF-8 */ -char *local_to_utf8_string(local_string) - ZCONST char *local_string; -{ - return wide_to_utf8_string(local_to_wide_string(local_string)); -} -# endif /* unused */ - -/* wide_to_escape_string - provides a string that represents a wide char not in local char set - - An initial try at an algorithm. Suggestions welcome. - - According to the standard, Unicode character points are restricted to - the number range from 0 to 0x10FFFF, respective 21 bits. - For a hexadecimal notation, 2 octets are sufficient for the mostly - used characters from the "Basic Multilingual Plane", all other - Unicode characters can be represented by 3 octets (= 6 hex digits). - The Unicode standard suggests to write Unicode character points - as 4 resp. 6 hex digits, preprended by "U+". - (e.g.: U+10FFFF for the highest character point, or U+0030 for the ASCII - digit "0") - - However, for the purpose of escaping non-ASCII chars in an ASCII character - stream, the "U" is not a very good escape initializer. Therefore, we - use the following convention within our Info-ZIP code: - - If not an ASCII char probably need 2 bytes at least. So if - a 2-byte wide encode it as 4 hex digits with a leading #U. If - needs 3 bytes then prefix the string with #L. So - #U1234 - is a 2-byte wide character with bytes 0x12 and 0x34 while - #L123456 - is a 3-byte wide character with bytes 0x12, 0x34, 0x56. - On Windows, wide that need two wide characters need to be converted - to a single number. - */ - - /* set this to the max bytes an escape can be */ -#define MAX_ESCAPE_BYTES 8 - -char *wide_to_escape_string(wide_char) - zwchar wide_char; -{ - int i; - zwchar w = wide_char; - uch b[sizeof(zwchar)]; - char d[3]; - char e[11]; - int len; - char *r; - - /* fill byte array with zeros */ - memzero(b, sizeof(zwchar)); - /* get bytes in right to left order */ - for (len = 0; w; len++) { - b[len] = (char)(w % 0x100); - w /= 0x100; - } - strcpy(e, "#"); - /* either 2 bytes or 3 bytes */ - if (len <= 2) { - len = 2; - strcat(e, "U"); - } else { - strcat(e, "L"); - } - for (i = len - 1; i >= 0; i--) { - sprintf(d, "%02x", b[i]); - strcat(e, d); - } - if ((r = malloc(strlen(e) + 1)) == NULL) { - return NULL; - } - strcpy(r, e); - return r; -} - -#if 0 /* currently unused */ -/* returns the wide character represented by the escape string */ -zwchar escape_string_to_wide(escape_string) - ZCONST char *escape_string; -{ - int i; - zwchar w; - char c; - int len; - ZCONST char *e = escape_string; - - if (e == NULL) { - return 0; - } - if (e[0] != '#') { - /* no leading # */ - return 0; - } - len = strlen(e); - /* either #U1234 or #L123456 format */ - if (len != 6 && len != 8) { - return 0; - } - w = 0; - if (e[1] == 'L') { - if (len != 8) { - return 0; - } - /* 3 bytes */ - for (i = 2; i < 8; i++) { - c = e[i]; - if (c < '0' || c > '9') { - return 0; - } - w = w * 0x10 + (zwchar)(c - '0'); - } - } else if (e[1] == 'U') { - /* 2 bytes */ - for (i = 2; i < 6; i++) { - c = e[i]; - if (c < '0' || c > '9') { - return 0; - } - w = w * 0x10 + (zwchar)(c - '0'); - } - } - return w; -} -#endif /* unused */ - -#ifndef WIN32 /* WIN32 supplies a special variant of this function */ -/* convert wide character string to multi-byte character string */ -char *wide_to_local_string(wide_string, escape_all) - ZCONST zwchar *wide_string; - int escape_all; -{ - int i; - wchar_t wc; - int b; - int state_dependent; - int wsize = 0; - int max_bytes = MB_CUR_MAX; - char buf[9]; - char *buffer = NULL; - char *local_string = NULL; - - for (wsize = 0; wide_string[wsize]; wsize++) ; - - if (max_bytes < MAX_ESCAPE_BYTES) - max_bytes = MAX_ESCAPE_BYTES; - - if ((buffer = (char *)malloc(wsize * max_bytes + 1)) == NULL) { - return NULL; - } - - /* convert it */ - buffer[0] = '\0'; - /* set initial state if state-dependent encoding */ - wc = (wchar_t)'a'; - b = wctomb(NULL, wc); - if (b == 0) - state_dependent = 0; - else - state_dependent = 1; - for (i = 0; i < wsize; i++) { - if (sizeof(wchar_t) < 4 && wide_string[i] > 0xFFFF) { - /* wchar_t probably 2 bytes */ - /* could do surrogates if state_dependent and wctomb can do */ - wc = zwchar_to_wchar_t_default_char; - } else { - wc = (wchar_t)wide_string[i]; - } - b = wctomb(buf, wc); - if (escape_all) { - if (b == 1 && (uch)buf[0] <= 0x7f) { - /* ASCII */ - strncat(buffer, buf, b); - } else { - /* use escape for wide character */ - char *escape_string = wide_to_escape_string(wide_string[i]); - strcat(buffer, escape_string); - free(escape_string); - } - } else if (b > 0) { - /* multi-byte char */ - strncat(buffer, buf, b); - } else { - /* no MB for this wide */ - /* use escape for wide character */ - char *escape_string = wide_to_escape_string(wide_string[i]); - strcat(buffer, escape_string); - free(escape_string); - } - } - if ((local_string = (char *)malloc(strlen(buffer) + 1)) != NULL) { - strcpy(local_string, buffer); - } - free(buffer); - - return local_string; -} -#endif /* !WIN32 */ - -#if 0 /* currently unused */ -/* convert local string to display character set string */ -char *local_to_display_string(local_string) - ZCONST char *local_string; -{ - char *display_string; - - /* For Windows, OEM string should never be bigger than ANSI string, says - CharToOem description. - For all other ports, just make a copy of local_string. - */ - if ((display_string = (char *)malloc(strlen(local_string) + 1)) == NULL) { - return NULL; - } - - strcpy(display_string, local_string); - -#ifdef EBCDIC - { - char *ebc; - - if ((ebc = malloc(strlen(display_string) + 1)) == NULL) { - return NULL; - } - strtoebc(ebc, display_string); - free(display_string); - display_string = ebc; - } -#endif - - return display_string; -} -#endif /* unused */ - -/* UTF-8 to local */ -char *utf8_to_local_string(utf8_string, escape_all) - ZCONST char *utf8_string; - int escape_all; -{ - zwchar *wide = utf8_to_wide_string(utf8_string); - char *loc = wide_to_local_string(wide, escape_all); - free(wide); - return loc; -} - -#if 0 /* currently unused */ -/* convert multi-byte character string to wide character string */ -zwchar *local_to_wide_string(local_string) - ZCONST char *local_string; -{ - int wsize; - wchar_t *wc_string; - zwchar *wide_string; - - /* for now try to convert as string - fails if a bad char in string */ - wsize = mbstowcs(NULL, local_string, strlen(local_string) + 1); - if (wsize == (size_t)-1) { - /* could not convert */ - return NULL; - } - - /* convert it */ - if ((wc_string = (wchar_t *)malloc((wsize + 1) * sizeof(wchar_t))) == NULL) { - return NULL; - } - wsize = mbstowcs(wc_string, local_string, strlen(local_string) + 1); - wc_string[wsize] = (wchar_t) 0; - - /* in case wchar_t is not zwchar */ - if ((wide_string = (zwchar *)malloc((wsize + 1) * sizeof(zwchar))) == NULL) { - return NULL; - } - for (wsize = 0; wide_string[wsize] = (zwchar)wc_string[wsize]; wsize++) ; - wide_string[wsize] = (zwchar) 0; - free(wc_string); - - return wide_string; -} - - -/* convert wide string to UTF-8 */ -char *wide_to_utf8_string(wide_string) - ZCONST zwchar *wide_string; -{ - int mbcount; - char *utf8_string; - - /* get size of utf8 string */ - mbcount = ucs4_string_to_utf8(wide_string, NULL, 0); - if (mbcount == -1) - return NULL; - if ((utf8_string = (char *) malloc(mbcount + 1)) == NULL) { - return NULL; - } - mbcount = ucs4_string_to_utf8(wide_string, utf8_string, mbcount + 1); - if (mbcount == -1) - return NULL; - - return utf8_string; -} -#endif /* unused */ - -/* convert UTF-8 string to wide string */ -zwchar *utf8_to_wide_string(utf8_string) - ZCONST char *utf8_string; -{ - int wcount; - zwchar *wide_string; - - wcount = utf8_to_ucs4_string(utf8_string, NULL, 0); - if (wcount == -1) - return NULL; - if ((wide_string = (zwchar *) malloc((wcount + 1) * sizeof(zwchar))) - == NULL) { - return NULL; - } - wcount = utf8_to_ucs4_string(utf8_string, wide_string, wcount + 1); - - return wide_string; -} - -#endif /* UNICODE_WCHAR */ -#endif /* UNICODE_SUPPORT */ - - - - - #ifdef USE_EF_UT_TIME -#ifdef IZ_HAVE_UXUIDGID -static int read_ux3_value(dbuf, uidgid_sz, p_uidgid) - ZCONST uch *dbuf; /* buffer a uid or gid value */ - unsigned uidgid_sz; /* size of uid/gid value */ - ulg *p_uidgid; /* return storage: uid or gid value */ -{ - zusz_t uidgid64; - - switch (uidgid_sz) { - case 2: - *p_uidgid = (ulg)makeword(dbuf); - break; - case 4: - *p_uidgid = (ulg)makelong(dbuf); - break; - case 8: - uidgid64 = makeint64(dbuf); -#ifndef LARGE_FILE_SUPPORT - if (uidgid64 == (zusz_t)0xffffffffL) - return FALSE; -#endif - *p_uidgid = (ulg)uidgid64; - if ((zusz_t)(*p_uidgid) != uidgid64) - return FALSE; - break; - } - return TRUE; -} -#endif /* IZ_HAVE_UXUIDGID */ - - /*******************************/ /* Function ef_scan_for_izux() */ /*******************************/ @@ -2673,12 +1308,12 @@ int ef_is_c; /* flag indicating "is central extra field" */ ulg dos_mdatetime; /* last_mod_file_date_time in DOS format */ iztimes *z_utim; /* return storage: atime, mtime, ctime */ - ulg *z_uidgid; /* return storage: uid and gid */ + ush *z_uidgid; /* return storage: uid and gid */ { unsigned flags = 0; unsigned eb_id; unsigned eb_len; - int have_new_type_eb = 0; + int have_new_type_eb = FALSE; long i_time; /* buffer for Unix style 32-bit integer time value */ #ifdef TIME_T_TYPE_DOUBLE int ut_in_archive_sgn = 0; @@ -2725,7 +1360,7 @@ switch (eb_id) { case EF_TIME: flags &= ~0x0ff; /* ignore previous IZUNIX or EF_TIME fields */ - have_new_type_eb = 1; + have_new_type_eb = TRUE; if ( eb_len >= EB_UT_MINLEN && z_utim != NULL) { unsigned eb_idx = EB_UT_TIME1; TTrace((stderr,"ef_scan_for_izux: found TIME extra field\n")); @@ -2867,57 +1502,15 @@ break; case EF_IZUNIX2: - if (have_new_type_eb == 0) { + if (!have_new_type_eb) { flags &= ~0x0ff; /* ignore any previous IZUNIX field */ - have_new_type_eb = 1; + have_new_type_eb = TRUE; } -#ifdef IZ_HAVE_UXUIDGID - if (have_new_type_eb > 1) - break; /* IZUNIX3 overrides IZUNIX2 e.f. block ! */ - if (eb_len == EB_UX2_MINLEN && z_uidgid != NULL) { - z_uidgid[0] = (ulg)makeword((EB_HEADSIZE+EB_UX2_UID) + ef_buf); - z_uidgid[1] = (ulg)makeword((EB_HEADSIZE+EB_UX2_GID) + ef_buf); + if (eb_len >= EB_UX2_MINLEN && z_uidgid != NULL) { + z_uidgid[0] = makeword((EB_HEADSIZE+EB_UX2_UID) + ef_buf); + z_uidgid[1] = makeword((EB_HEADSIZE+EB_UX2_GID) + ef_buf); flags |= EB_UX2_VALID; /* signal success */ } -#endif - break; - - case EF_IZUNIX3: - /* new 3rd generation Unix ef */ - have_new_type_eb = 2; - - /* - Version 1 byte version of this extra field, currently 1 - UIDSize 1 byte Size of UID field - UID Variable UID for this entry - GIDSize 1 byte Size of GID field - GID Variable GID for this entry - */ - -#ifdef IZ_HAVE_UXUIDGID - if (eb_len >= EB_UX3_MINLEN - && z_uidgid != NULL - && (*((EB_HEADSIZE + 0) + ef_buf) == 1) - /* only know about version 1 */ - { - uch uid_size; - uch gid_size; - - uid_size = *((EB_HEADSIZE + 1) + ef_buf); - gid_size = *((EB_HEADSIZE + uid_size + 2) + ef_buf); - - flags &= ~0x0ff; /* ignore any previous UNIX field */ - - if ( read_ux3_value((EB_HEADSIZE + 2) + ef_buf, - uid_size, z_uidgid[0]) - && - read_ux3_value((EB_HEADSIZE + uid_size + 3) + ef_buf, - gid_size, z_uidgid[1]) ) - { - flags |= EB_UX2_VALID; /* signal success */ - } - } -#endif /* IZ_HAVE_UXUIDGID */ break; case EF_IZUNIX: @@ -2925,7 +1518,7 @@ if (eb_len >= EB_UX_MINLEN) { TTrace((stderr,"ef_scan_for_izux: found %s extra field\n", (eb_id == EF_IZUNIX ? "IZUNIX" : "PKUNIX"))); - if (have_new_type_eb > 0) { + if (have_new_type_eb) { break; /* Ignore IZUNIX extra field block ! */ } if (z_utim != NULL) { @@ -3005,13 +1598,11 @@ } #endif /* ?TIME_T_TYPE_DOUBLE */ } -#ifdef IZ_HAVE_UXUIDGID if (eb_len >= EB_UX_FULLSIZE && z_uidgid != NULL) { z_uidgid[0] = makeword((EB_HEADSIZE+EB_UX_UID) + ef_buf); z_uidgid[1] = makeword((EB_HEADSIZE+EB_UX_GID) + ef_buf); flags |= EB_UX2_VALID; } -#endif /* IZ_HAVE_UXUIDGID */ } break; @@ -3055,7 +1646,7 @@ if (ef_len == 0 || ef_buf == NULL) return NULL; - Trace((stderr,"\ngetRISCOSexfield: scanning extra field of length %u\n", + TTrace((stderr,"\ngetRISCOSexfield: scanning extra field of length %u\n", ef_len)); while (ef_len >= EB_HEADSIZE) { @@ -3064,7 +1655,7 @@ if (eb_len > (ef_len - EB_HEADSIZE)) { /* discovered some extra field inconsistency! */ - Trace((stderr, + TTrace((stderr, "getRISCOSexfield: block length %u > rest ef_size %u\n", eb_len, ef_len - EB_HEADSIZE)); break; diff -Nru unzip-6.0/proginfo/Contents unzip-6.0/proginfo/Contents --- unzip-6.0/proginfo/Contents 2007-10-04 00:01:00.000000000 +0000 +++ unzip-6.0/proginfo/Contents 2010-05-14 07:26:14.000000000 +0000 @@ -5,7 +5,7 @@ ZipPorts Info-ZIP rules and guidelines on contributions to the cause 3rdparty.bug known bugs in PK[UN]ZIP, WinZip, etc. defer.in info about the NEXTBYTE macro and defer/undefer_input functions - extrafld.txt info about all known "extra field" types + extra.fld info about all known "extra field" types fileinfo.cms info about the VM/CMS file system, including record formats nt.sd info about support for Windows NT's Security Descriptors (ACLs) perform.dos relative performance of Zip and UnZip with various DOS compilers diff -Nru unzip-6.0/proginfo/CONTRIBS unzip-6.0/proginfo/CONTRIBS --- unzip-6.0/proginfo/CONTRIBS 2008-02-29 23:53:02.000000000 +0000 +++ unzip-6.0/proginfo/CONTRIBS 2010-05-14 07:26:14.000000000 +0000 @@ -14,7 +14,6 @@ Bob Babcock DOS volume-label code (FCBs) Charles Bailey VMS_SEVERITY fix; VMSWILD () extension Audrey Beck "WHERE" file info for AOL OS/2 forum - Myles Bennet Initial start of Zip64 and Large-File handling Mike Bernardi Unix makefile entry; CIX uploads James Birdsall extract.c/makefile/NT stuff, etc.; awesome beta tester Allan Bjorklund in misc.c @@ -123,7 +122,6 @@ Peter Kunath DLL bugfixes, MSVC __asm support Russell Lang OS/2 DLL calling-convention bugfix Michael Lawler Borland version() info; process.c string fix; DOS fixes - Rudolf Lechleitner inflate memory leak fix Johnny Lee Macintosh port; Win3.1 port; far strings; fixes; etc. Alexander Lehmann makefile.tc bugfix; MS-DOS mapname() bugfix Marty Leisner Unix perms fix for non-Unix dirs; man pages fonts; etc. @@ -147,7 +145,6 @@ Rafal Maszkowski Convex unzip.h fixes; Unix makefile entry Jim Mathies signal handler installing bugfix Eberhard Mattes handler() bugfix; docs update - Adrian Maull .NET C# example projects for Zip and UnZip dll Peter Mauzey Unix makefile entry Scott Maxwell version.h; massive reentrancy fixes; OS/2 DLL port Bob Maynard 16-bit OS/2 pathname bugfix @@ -210,7 +207,6 @@ Chris Seaman Unix time stuff Richard Seay MS-DOS Quick C makefile Peter Seebach fUnZip int main() bugfix - Matthew Seitz keep inherited SGID attrib for created dirs on Unix Gisbert Selke Unix makefile entry Alex Sergejew fileio.c, stat(), Makefile fixes; Down Under jokes :-) Jim Seymour Borland OS/2 fixes @@ -256,7 +252,6 @@ Mark Wright original Netware 3.11 NLM port Randy Wright Unix makefile entry Meiwei Wu open() return bugfix - Steve Youngs win32 timestamp conversion bugfix Clay Zahrobsky .zip/wildcard bugfix Eli Zaretskii improvements to DOS-mode VFAT support; djgpp 2.x fixes Martin P.J. Zinser VMS .hlp file for unzipsfx; MAKESFX.COM command file diff -Nru unzip-6.0/proginfo/extra.fld unzip-6.0/proginfo/extra.fld --- unzip-6.0/proginfo/extra.fld 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/proginfo/extra.fld 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,1441 @@ +The following are the known types of zipfile extra fields as of this +writing. Extra fields are documented in PKWARE's appnote.txt and are +intended to allow for backward- and forward-compatible extensions to +the zipfile format. Multiple extra-field types may be chained together, +provided that the total length of all extra-field data is less than 64KB. +(In fact, PKWARE requires that the total length of the entire file header, +including timestamp, file attributes, filename, comment, extra field, etc., +be no more than 64KB.) + +Each extra-field type (or subblock) must contain a four-byte header con- +sisting of a two-byte header ID and a two-byte length (little-endian) for +the remaining data in the subblock. If there are additional subblocks +within the extra field, the header for each one will appear immediately +following the data for the previous subblock (i.e., with no padding for +alignment). + +All integer fields in the descriptions below are in little-endian (Intel) +format unless otherwise specified. Note that "Short" means two bytes, +"Long" means four bytes, and "Long-Long" means eight bytes, regardless +of their native sizes. Unless specifically noted, all integer fields should +be interpreted as unsigned (non-negative) numbers. + +Christian Spieler, 20040507 + + ------------------------- + + Header ID's of 0 thru 31 are reserved for use by PKWARE. + The remaining ID's can be used by third party vendors for + proprietary usage. + + The current Header ID mappings defined by PKWARE are: + + 0x0001 ZIP64 extended information extra field + 0x0007 AV Info + 0x0008 Reserved for future Unicode file name data (PFS) + 0x0009 OS/2 extended attributes (also Info-ZIP) + 0x000a NTFS (Win9x/WinNT FileTimes) + 0x000c OpenVMS (also Info-ZIP) + 0x000d Unix + 0x000e Reserved for file stream and fork descriptors + 0x000f Patch Descriptor + 0x0014 PKCS#7 Store for X.509 Certificates + 0x0015 X.509 Certificate ID and Signature for + individual file + 0x0016 X.509 Certificate ID for Central Directory + 0x0017 Strong Encryption Header + 0x0018 Record Management Controls + 0x0019 PKCS#7 Encryption Recipient Certificate List + 0x0065 IBM S/390 (Z390), AS/400 (I400) attributes + - uncompressed + 0x0066 Reserved for IBM S/390 (Z390), AS/400 (I400) + attributes - compressed + + The Header ID mappings defined by Info-ZIP and third parties are: + + 0x07c8 Info-ZIP Macintosh (old, J. Lee) + 0x2605 ZipIt Macintosh (first version) + 0x2705 ZipIt Macintosh v 1.3.5 and newer (w/o full filename) + 0x2805 ZipIt Macintosh 1.3.5+ + 0x334d Info-ZIP Macintosh (new, D. Haase's 'Mac3' field) + 0x4154 Tandem NSK + 0x4341 Acorn/SparkFS (David Pilling) + 0x4453 Windows NT security descriptor (binary ACL) + 0x4704 VM/CMS + 0x470f MVS + 0x4854 Theos, old inofficial port + 0x4b46 FWKCS MD5 (see below) + 0x4c41 OS/2 access control list (text ACL) + 0x4d49 Info-ZIP OpenVMS (obsolete) + 0x4d63 Macintosh SmartZIP, by Macro Bambini + 0x4f4c Xceed original location extra field + 0x5356 AOS/VS (binary ACL) + 0x5455 extended timestamp + 0x554e Xceed unicode extra field + 0x5855 Info-ZIP Unix (original; also OS/2, NT, etc.) + 0x6542 BeOS (BeBox, PowerMac, etc.) + 0x6854 Theos + 0x7441 AtheOS (AtheOS/Syllable attributes) + 0x756e ASi Unix + 0x7855 Info-ZIP Unix (new) + 0xfb4a SMS/QDOS + +The following are detailed descriptions of the known extra-field block types: + + -ZIP64 Extended Information Extra Field (0x0001): + =============================================== + + The following is the layout of the ZIP64 extended + information "extra" block. If one of the size or + offset fields in the Local or Central directory + record is too small to hold the required data, + a ZIP64 extended information record is created. + The order of the fields in the ZIP64 extended + information record is fixed, but the fields will + only appear if the corresponding Local or Central + directory record field is set to 0xFFFF or 0xFFFFFFFF. + + Note: all fields stored in Intel low-byte/high-byte order. + + Value Size Description + ----- ---- ----------- + (ZIP64) 0x0001 2 bytes Tag for this "extra" block type + Size 2 bytes Size of this "extra" block + Original + Size 8 bytes Original uncompressed file size + Compressed + Size 8 bytes Size of compressed data + Relative Header + Offset 8 bytes Offset of local header record + Disk Start + Number 4 bytes Number of the disk on which + this file starts + + This entry in the Local header must include BOTH original + and compressed file sizes. + + + -OS/2 Extended Attributes Extra Field (0x0009): + ============================================= + + The following is the layout of the OS/2 extended attributes "extra" + block. (Last Revision 19960922) + + Note: all fields stored in Intel low-byte/high-byte order. + + Local-header version: + + Value Size Description + ----- ---- ----------- + (OS/2) 0x0009 Short tag for this extra block type + TSize Short total data size for this block + BSize Long uncompressed EA data size + CType Short compression type + EACRC Long CRC value for uncompressed EA data + (var.) variable compressed EA data + + Central-header version: + + Value Size Description + ----- ---- ----------- + (OS/2) 0x0009 Short tag for this extra block type + TSize Short total data size for this block (4) + BSize Long size of uncompressed local EA data + + The value of CType is interpreted according to the "compression + method" section above; i.e., 0 for stored, 8 for deflated, etc. + + The OS/2 extended attribute structure (FEA2LIST) is + compressed and then stored in its entirety within this + structure. There will only ever be one "block" of data in + the variable-length field. + + + -OS/2 Access Control List Extra Field: + ==================================== + + The following is the layout of the OS/2 ACL extra block. + (Last Revision 19960922) + + Local-header version: + + Value Size Description + ----- ---- ----------- + (ACL) 0x4c41 Short tag for this extra block type ("AL") + TSize Short total data size for this block + BSize Long uncompressed ACL data size + CType Short compression type + EACRC Long CRC value for uncompressed ACL data + (var.) variable compressed ACL data + + Central-header version: + + Value Size Description + ----- ---- ----------- + (ACL) 0x4c41 Short tag for this extra block type ("AL") + TSize Short total data size for this block (4) + BSize Long size of uncompressed local ACL data + + The value of CType is interpreted according to the "compression + method" section above; i.e., 0 for stored, 8 for deflated, etc. + + The uncompressed ACL data consist of a text header of the form + "ACL1:%hX,%hd\n", where the first field is the OS/2 ACCINFO acc_attr + member and the second is acc_count, followed by acc_count strings + of the form "%s,%hx\n", where the first field is acl_ugname (user + group name) and the second acl_access. This block type will be + extended for other operating systems as needed. + + + -Windows NT Security Descriptor Extra Field (0x4453): + =================================================== + + The following is the layout of the NT Security Descriptor (another + type of ACL) extra block. (Last Revision 19960922) + + Local-header version: + + Value Size Description + ----- ---- ----------- + (SD) 0x4453 Short tag for this extra block type ("SD") + TSize Short total data size for this block + BSize Long uncompressed SD data size + Version Byte version of uncompressed SD data format + CType Short compression type + EACRC Long CRC value for uncompressed SD data + (var.) variable compressed SD data + + Central-header version: + + Value Size Description + ----- ---- ----------- + (SD) 0x4453 Short tag for this extra block type ("SD") + TSize Short total data size for this block (4) + BSize Long size of uncompressed local SD data + + The value of CType is interpreted according to the "compression + method" section above; i.e., 0 for stored, 8 for deflated, etc. + Version specifies how the compressed data are to be interpreted + and allows for future expansion of this extra field type. Currently + only version 0 is defined. + + For version 0, the compressed data are to be interpreted as a single + valid Windows NT SECURITY_DESCRIPTOR data structure, in self-relative + format. + + + -PKWARE Win95/WinNT Extra Field (0x000a): + ======================================= + + The following description covers PKWARE's "NTFS" attributes + "extra" block, introduced with the release of PKZIP 2.50 for + Windows. (Last Revision 20001118) + + (Note: At this time the Mtime, Atime and Ctime values may + be used on any WIN32 system.) + [Info-ZIP note: In the current implementations, this field has + a fixed total data size of 32 bytes and is only stored as local + extra field.] + + Value Size Description + ----- ---- ----------- + (NTFS) 0x000a Short Tag for this "extra" block type + TSize Short Total Data Size for this block + Reserved Long for future use + Tag1 Short NTFS attribute tag value #1 + Size1 Short Size of attribute #1, in bytes + (var.) SubSize1 Attribute #1 data + . + . + . + TagN Short NTFS attribute tag value #N + SizeN Short Size of attribute #N, in bytes + (var.) SubSizeN Attribute #N data + + For NTFS, values for Tag1 through TagN are as follows: + (currently only one set of attributes is defined for NTFS) + + Tag Size Description + ----- ---- ----------- + 0x0001 2 bytes Tag for attribute #1 + Size1 2 bytes Size of attribute #1, in bytes (24) + Mtime 8 bytes 64-bit NTFS file last modification time + Atime 8 bytes 64-bit NTFS file last access time + Ctime 8 bytes 64-bit NTFS file creation time + + The total length for this block is 28 bytes, resulting in a + fixed size value of 32 for the TSize field of the NTFS block. + + The NTFS filetimes are 64-bit unsigned integers, stored in Intel + (least significant byte first) byte order. They determine the + number of 1.0E-07 seconds (1/10th microseconds!) past WinNT "epoch", + which is "01-Jan-1601 00:00:00 UTC". + + + -PKWARE OpenVMS Extra Field (0x000c): + =================================== + + The following is the layout of PKWARE's OpenVMS attributes + "extra" block. (Last Revision 12/17/91) + + Note: all fields stored in Intel low-byte/high-byte order. + + Value Size Description + ----- ---- ----------- + (VMS) 0x000c Short Tag for this "extra" block type + TSize Short Total Data Size for this block + CRC Long 32-bit CRC for remainder of the block + Tag1 Short OpenVMS attribute tag value #1 + Size1 Short Size of attribute #1, in bytes + (var.) Size1 Attribute #1 data + . + . + . + TagN Short OpenVMS attribute tage value #N + SizeN Short Size of attribute #N, in bytes + (var.) SizeN Attribute #N data + + Rules: + + 1. There will be one or more of attributes present, which + will each be preceded by the above TagX & SizeX values. + These values are identical to the ATR$C_XXXX and + ATR$S_XXXX constants which are defined in ATR.H under + OpenVMS C. Neither of these values will ever be zero. + + 2. No word alignment or padding is performed. + + 3. A well-behaved PKZIP/OpenVMS program should never produce + more than one sub-block with the same TagX value. Also, + there will never be more than one "extra" block of type + 0x000c in a particular directory record. + + + -Info-ZIP VMS Extra Field: + ======================== + + The following is the layout of Info-ZIP's VMS attributes extra + block for VAX or Alpha AXP. The local-header and central-header + versions are identical. (Last Revision 19960922) + + Value Size Description + ----- ---- ----------- + (VMS2) 0x4d49 Short tag for this extra block type ("JM") + TSize Short total data size for this block + ID Long block ID + Flags Short info bytes + BSize Short uncompressed block size + Reserved Long (reserved) + (var.) variable compressed VMS file-attributes block + + The block ID is one of the following unterminated strings: + + "VFAB" struct FAB + "VALL" struct XABALL + "VFHC" struct XABFHC + "VDAT" struct XABDAT + "VRDT" struct XABRDT + "VPRO" struct XABPRO + "VKEY" struct XABKEY + "VMSV" version (e.g., "V6.1"; truncated at hyphen) + "VNAM" reserved + + The lower three bits of Flags indicate the compression method. The + currently defined methods are: + + 0 stored (not compressed) + 1 simple "RLE" + 2 deflated + + The "RLE" method simply replaces zero-valued bytes with zero-valued + bits and non-zero-valued bytes with a "1" bit followed by the byte + value. + + The variable-length compressed data contains only the data corre- + sponding to the indicated structure or string. Typically multiple + VMS2 extra fields are present (each with a unique block type). + + + -Info-ZIP Macintosh Extra Field: + ============================== + + The following is the layout of the (old) Info-ZIP resource-fork extra + block for Macintosh. The local-header and central-header versions + are identical. (Last Revision 19960922) + + Value Size Description + ----- ---- ----------- + (Mac) 0x07c8 Short tag for this extra block type + TSize Short total data size for this block + "JLEE" beLong extra-field signature + FInfo 16 bytes Macintosh FInfo structure + CrDat beLong HParamBlockRec fileParam.ioFlCrDat + MdDat beLong HParamBlockRec fileParam.ioFlMdDat + Flags beLong info bits + DirID beLong HParamBlockRec fileParam.ioDirID + VolName 28 bytes volume name (optional) + + All fields but the first two are in native Macintosh format + (big-endian Motorola order, not little-endian Intel). The least + significant bit of Flags is 1 if the file is a data fork, 0 other- + wise. In addition, if this extra field is present, the filename + has an extra 'd' or 'r' appended to indicate data fork or resource + fork. The 28-byte VolName field may be omitted. + + + -ZipIt Macintosh Extra Field (long): + ================================== + + The following is the layout of the ZipIt extra block for Macintosh. + The local-header and central-header versions are identical. + (Last Revision 19970130) + + Value Size Description + ----- ---- ----------- + (Mac2) 0x2605 Short tag for this extra block type + TSize Short total data size for this block + "ZPIT" beLong extra-field signature + FnLen Byte length of FileName + FileName variable full Macintosh filename + FileType Byte[4] four-byte Mac file type string + Creator Byte[4] four-byte Mac creator string + + + -ZipIt Macintosh Extra Field (short, for files): + ============================================== + + The following is the layout of a shortened variant of the + ZipIt extra block for Macintosh (without "full name" entry). + This variant is used by ZipIt 1.3.5 and newer for entries of + files (not directories) that do not have a MacBinary encoded + file. The local-header and central-header versions are identical. + (Last Revision 20030602) + + Value Size Description + ----- ---- ----------- + (Mac2b) 0x2705 Short tag for this extra block type + TSize Short total data size for this block (min. 12) + "ZPIT" beLong extra-field signature + FileType Byte[4] four-byte Mac file type string + Creator Byte[4] four-byte Mac creator string + fdFlags beShort attributes from FInfo.frFlags, + may be omitted + 0x0000 beShort reserved, may be omitted + + + -ZipIt Macintosh Extra Field (short, for directories): + ==================================================== + + The following is the layout of a shortened variant of the + ZipIt extra block for Macintosh used only for directory + entries. This variant is used by ZipIt 1.3.5 and newer to + save some optional Mac-specific information about directories. + The local-header and central-header versions are identical. + + Value Size Description + ----- ---- ----------- + (Mac2c) 0x2805 Short tag for this extra block type + TSize Short total data size for this block (12) + "ZPIT" beLong extra-field signature + frFlags beShort attributes from DInfo.frFlags, may + be omitted + View beShort ZipIt view flag, may be omitted + + + The View field specifies ZipIt-internal settings as follows: + + Bits of the Flags: + bit 0 if set, the folder is shown expanded (open) + when the archive contents are viewed in ZipIt. + bits 1-15 reserved, zero; + + + -Info-ZIP Macintosh Extra Field (new): + ==================================== + + The following is the layout of the (new) Info-ZIP extra + block for Macintosh, designed by Dirk Haase. + All values are in little-endian. + (Last Revision 19981005) + + Local-header version: + + Value Size Description + ----- ---- ----------- + (Mac3) 0x334d Short tag for this extra block type ("M3") + TSize Short total data size for this block + BSize Long uncompressed finder attribute data size + Flags Short info bits + fdType Byte[4] Type of the File (4-byte string) + fdCreator Byte[4] Creator of the File (4-byte string) + (CType) Short compression type + (CRC) Long CRC value for uncompressed MacOS data + Attribs variable finder attribute data (see below) + + + Central-header version: + + Value Size Description + ----- ---- ----------- + (Mac3) 0x334d Short tag for this extra block type ("M3") + TSize Short total data size for this block + BSize Long uncompressed finder attribute data size + Flags Short info bits + fdType Byte[4] Type of the File (4-byte string) + fdCreator Byte[4] Creator of the File (4-byte string) + + The third bit of Flags in both headers indicates whether + the LOCAL extra field is uncompressed (and therefore whether CType + and CRC are omitted): + + Bits of the Flags: + bit 0 if set, file is a data fork; otherwise unset + bit 1 if set, filename will be not changed + bit 2 if set, Attribs is uncompressed (no CType, CRC) + bit 3 if set, date and times are in 64 bit + if zero date and times are in 32 bit. + bit 4 if set, timezone offsets fields for the native + Mac times are omitted (UTC support deactivated) + bits 5-15 reserved; + + + Attributes: + + Attribs is a Mac-specific block of data in little-endian format with + the following structure (if compressed, uncompress it first): + + Value Size Description + ----- ---- ----------- + fdFlags Short Finder Flags + fdLocation.v Short Finder Icon Location + fdLocation.h Short Finder Icon Location + fdFldr Short Folder containing file + + FXInfo 16 bytes Macintosh FXInfo structure + FXInfo-Structure: + fdIconID Short + fdUnused[3] Short unused but reserved 6 bytes + fdScript Byte Script flag and number + fdXFlags Byte More flag bits + fdComment Short Comment ID + fdPutAway Long Home Dir ID + + FVersNum Byte file version number + may be not used by MacOS + ACUser Byte directory access rights + + FlCrDat ULong date and time of creation + FlMdDat ULong date and time of last modification + FlBkDat ULong date and time of last backup + These time numbers are original Mac FileTime values (local time!). + Currently, date-time width is 32-bit, but future version may + support be 64-bit times (see flags) + + CrGMTOffs Long(signed!) difference "local Creat. time - UTC" + MdGMTOffs Long(signed!) difference "local Modif. time - UTC" + BkGMTOffs Long(signed!) difference "local Backup time - UTC" + These "local time - UTC" differences (stored in seconds) may be + used to support timestamp adjustment after inter-timezone transfer. + These fields are optional; bit 4 of the flags word controls their + presence. + + Charset Short TextEncodingBase (Charset) + valid for the following two fields + + FullPath variable Path of the current file. + Zero terminated string (C-String) + Currently coded in the native Charset. + + Comment variable Finder Comment of the current file. + Zero terminated string (C-String) + Currently coded in the native Charset. + + + -SmartZIP Macintosh Extra Field: + ==================================== + + The following is the layout of the SmartZIP extra + block for Macintosh, designed by Marco Bambini. + + Local-header version: + + Value Size Description + ----- ---- ----------- + 0x4d63 Short tag for this extra block type ("cM") + TSize Short total data size for this block (64) + "dZip" beLong extra-field signature + fdType Byte[4] Type of the File (4-byte string) + fdCreator Byte[4] Creator of the File (4-byte string) + fdFlags beShort Finder Flags + fdLocation.v beShort Finder Icon Location + fdLocation.h beShort Finder Icon Location + fdFldr beShort Folder containing file + CrDat beLong HParamBlockRec fileParam.ioFlCrDat + MdDat beLong HParamBlockRec fileParam.ioFlMdDat + frScroll.v Byte vertical pos. of folder's scroll bar + fdScript Byte Script flag and number + frScroll.h Byte horizontal pos. of folder's scroll bar + fdXFlags Byte More flag bits + FileName Byte[32] full Macintosh filename (pascal string) + + All fields but the first two are in native Macintosh format + (big-endian Motorola order, not little-endian Intel). + The extra field size is fixed to 64 bytes. + The local-header and central-header versions are identical. + + + -Acorn SparkFS Extra Field: + ========================= + + The following is the layout of David Pilling's SparkFS extra block + for Acorn RISC OS. The local-header and central-header versions are + identical. (Last Revision 19960922) + + Value Size Description + ----- ---- ----------- + (Acorn) 0x4341 Short tag for this extra block type ("AC") + TSize Short total data size for this block (20) + "ARC0" Long extra-field signature + LoadAddr Long load address or file type + ExecAddr Long exec address + Attr Long file permissions + Zero Long reserved; always zero + + The following bits of Attr are associated with the given file + permissions: + + bit 0 user-writable ('W') + bit 1 user-readable ('R') + bit 2 reserved + bit 3 locked ('L') + bit 4 publicly writable ('w') + bit 5 publicly readable ('r') + bit 6 reserved + bit 7 reserved + + + -VM/CMS Extra Field: + ================== + + The following is the layout of the file-attributes extra block for + VM/CMS. The local-header and central-header versions are + identical. (Last Revision 19960922) + + Value Size Description + ----- ---- ----------- + (VM/CMS) 0x4704 Short tag for this extra block type + TSize Short total data size for this block + flData variable file attributes data + + flData is an uncompressed fldata_t struct. + + + -MVS Extra Field: + =============== + + The following is the layout of the file-attributes extra block for + MVS. The local-header and central-header versions are identical. + (Last Revision 19960922) + + Value Size Description + ----- ---- ----------- + (MVS) 0x470f Short tag for this extra block type + TSize Short total data size for this block + flData variable file attributes data + + flData is an uncompressed fldata_t struct. + + + -PKWARE Unix Extra Field (0x000d): + ================================ + + The following is the layout of PKWARE's Unix "extra" block. + It was introduced with the release of PKZIP for Unix 2.50. + Note: all fields are stored in Intel low-byte/high-byte order. + (Last Revision 19980901) + + This field has a minimum data size of 12 bytes and is only stored + as local extra field. + + Value Size Description + ----- ---- ----------- + (Unix0) 0x000d Short Tag for this "extra" block type + TSize Short Total Data Size for this block + AcTime Long time of last access (UTC/GMT) + ModTime Long time of last modification (UTC/GMT) + UID Short Unix user ID + GID Short Unix group ID + (var) variable Variable length data field + + The variable length data field will contain file type + specific data. Currently the only values allowed are + the original "linked to" file names for hard or symbolic + links, and the major and minor device node numbers for + character and block device nodes. Since device nodes + cannot be either symbolic or hard links, only one set of + variable length data is stored. Link files will have the + name of the original file stored. This name is NOT NULL + terminated. Its size can be determined by checking TSize - + 12. Device entries will have eight bytes stored as two 4 + byte entries (in little-endian format). The first entry + will be the major device number, and the second the minor + device number. + + [Info-ZIP note: The fixed part of this field has the same layout as + Info-ZIP's abandoned "Unix1 timestamps & owner ID info" extra field; + only the two tag bytes are different.] + + + -PATCH Descriptor Extra Field (0x000f): + ===================================== + + The following is the layout of the Patch Descriptor "extra" + block. + + Note: all fields stored in Intel low-byte/high-byte order. + + Value Size Description + ----- ---- ----------- + (Patch) 0x000f Short Tag for this "extra" block type + TSize Short Size of the total "extra" block + Version Short Version of the descriptor + Flags Long Actions and reactions (see below) + OldSize Long Size of the file about to be patched + OldCRC Long 32-bit CRC of the file about to be patched + NewSize Long Size of the resulting file + NewCRC Long 32-bit CRC of the resulting file + + + Actions and reactions + + Bits Description + ---- ---------------- + 0 Use for auto detection + 1 Treat as a self-patch + 2-3 RESERVED + 4-5 Action (see below) + 6-7 RESERVED + 8-9 Reaction (see below) to absent file + 10-11 Reaction (see below) to newer file + 12-13 Reaction (see below) to unknown file + 14-15 RESERVED + 16-31 RESERVED + + Actions + + Action Value + ------ ----- + none 0 + add 1 + delete 2 + patch 3 + + Reactions + + Reaction Value + -------- ----- + ask 0 + skip 1 + ignore 2 + fail 3 + + Patch support is provided by PKPatchMaker(tm) technology and is + covered under U.S. Patents and Patents Pending. + + + -PKCS#7 Store for X.509 Certificates (0x0014): + ============================================ + + This field contains information about each of the certificates + files may be signed with. When the Central Directory Encryption + feature is enabled for a ZIP file, this record will appear in + the Archive Extra Data Record, otherwise it will appear in the + first central directory record and will be ignored in any + other record. + + Note: all fields stored in Intel low-byte/high-byte order. + + Value Size Description + ----- ---- ----------- + (Store) 0x0014 2 bytes Tag for this "extra" block type + TSize 2 bytes Size of the store data + SData TSize Data about the store + + SData + Value Size Description + ----- ---- ----------- + Version 2 bytes Version number, 0x0001 for now + StoreD (variable) Actual store data + + The StoreD member is suitable for passing as the pbData + member of a CRYPT_DATA_BLOB to the CertOpenStore() function + in Microsoft's CryptoAPI. The SSize member above will be + cbData + 6, where cbData is the cbData member of the same + CRYPT_DATA_BLOB. The encoding type to pass to + CertOpenStore() should be + PKCS_7_ANS_ENCODING | X509_ASN_ENCODING. + + + -X.509 Certificate ID and Signature for individual file (0x0015): + =============================================================== + + This field contains the information about which certificate in + the PKCS#7 store was used to sign a particular file. It also + contains the signature data. This field can appear multiple + times, but can only appear once per certificate. + + Note: all fields stored in Intel low-byte/high-byte order. + + Value Size Description + ----- ---- ----------- + (CID) 0x0015 2 bytes Tag for this "extra" block type + CSize 2 bytes Size of Method + Method (variable) + + Method + Value Size Description + ----- ---- ----------- + Version 2 bytes Version number, for now 0x0001 + AlgID 2 bytes Algorithm ID used for signing + IDSize 2 bytes Size of Certificate ID data + CertID (variable) Certificate ID data + SigSize 2 bytes Size of Signature data + Sig (variable) Signature data + + CertID + Value Size Description + ----- ---- ----------- + Size1 4 bytes Size of CertID, should be (IDSize - 4) + Size1 4 bytes A bug in version one causes this value + to appear twice. + IssSize 4 bytes Issuer data size + Issuer (variable) Issuer data + SerSize 4 bytes Serial Number size + Serial (variable) Serial Number data + + The Issuer and IssSize members are suitable for creating a + CRYPT_DATA_BLOB to be the Issuer member of a CERT_INFO + struct. The Serial and SerSize members would be the + SerialNumber member of the same CERT_INFO struct. This + struct would be used to find the certificate in the store + the file was signed with. Those structures are from the MS + CryptoAPI. + + Sig and SigSize are the actual signature data and size + generated by signing the file with the MS CryptoAPI using a + hash created with the given AlgID. + + + -X.509 Certificate ID and Signature for central directory (0x0016): + ================================================================= + + This field contains the information about which certificate in + the PKCS#7 store was used to sign the central directory structure. + When the Central Directory Encryption feature is enabled for a + ZIP file, this record will appear in the Archive Extra Data Record, + otherwise it will appear in the first central directory record, + along with the store. The data structure is the + same as the CID, except that SigSize will be 0, and there + will be no Sig member. + + This field is also kept after the last central directory + record, as the signature data (ID 0x05054b50, it looks like + a central directory record of a different type). This + second copy of the data is the Signature Data member of the + record, and will have a SigSize that is non-zero, and will + have Sig data. + + Note: all fields stored in Intel low-byte/high-byte order. + + Value Size Description + ----- ---- ----------- + (CDID) 0x0016 2 bytes Tag for this "extra" block type + TSize 2 bytes Size of data that follows + TData TSize Data + + + -Strong Encryption Header (0x0017) (EFS): + =============================== + + Value Size Description + ----- ---- ----------- + 0x0017 2 bytes Tag for this "extra" block type + TSize 2 bytes Size of data that follows + Format 2 bytes Format definition for this record + AlgID 2 bytes Encryption algorithm identifier + Bitlen 2 bytes Bit length of encryption key + Flags 2 bytes Processing flags + CertData TSize-8 Certificate decryption extra field data + (refer to the explanation for CertData + in the section describing the + Certificate Processing Method under + the Strong Encryption Specification) + + + -Record Management Controls (0x0018): + =================================== + + Value Size Description + ----- ---- ----------- +(Rec-CTL) 0x0018 2 bytes Tag for this "extra" block type + CSize 2 bytes Size of total extra block data + Tag1 2 bytes Record control attribute 1 + Size1 2 bytes Size of attribute 1, in bytes + Data1 Size1 Attribute 1 data + . + . + . + TagN 2 bytes Record control attribute N + SizeN 2 bytes Size of attribute N, in bytes + DataN SizeN Attribute N data + + + -PKCS#7 Encryption Recipient Certificate List (0x0019): (EFS) + ===================================================== + + This field contains the information about each of the certificates + that files may be encrypted with. This field should only appear + in the archive extra data record. This field is not required and + serves only to aide archive modifications by preserving public + encryption data. Individual security requirements may dictate + that this data be omitted to deter information exposure. + + Note: all fields stored in Intel low-byte/high-byte order. + + Value Size Description + ----- ---- ----------- + (CStore) 0x0019 2 bytes Tag for this "extra" block type + TSize 2 bytes Size of the store data + TData TSize Data about the store + + TData: + + Value Size Description + ----- ---- ----------- + Version 2 bytes Format version number - must 0x0001 at this time + CStore (var) PKCS#7 data blob + + + -MVS Extra Field (PKWARE, 0x0065): + ================================ + + The following is the layout of the MVS "extra" block. + Note: Some fields are stored in Big Endian format. + All text is in EBCDIC format unless otherwise specified. + + Value Size Description + ----- ---- ----------- + (MVS) 0x0065 2 bytes Tag for this "extra" block type + TSize 2 bytes Size for the following data block + ID 4 bytes EBCDIC "Z390" 0xE9F3F9F0 or + "T4MV" for TargetFour + (var) TSize-4 Attribute data + + + -OS/400 Extra Field (0x0065): + =========================== + + The following is the layout of the OS/400 "extra" block. + Note: Some fields are stored in Big Endian format. + All text is in EBCDIC format unless otherwise specified. + + Value Size Description + ----- ---- ----------- + (OS400) 0x0065 2 bytes Tag for this "extra" block type + TSize 2 bytes Size for the following data block + ID 4 bytes EBCDIC "I400" 0xC9F4F0F0 or + "T4MV" for TargetFour + (var) TSize-4 Attribute data + + + -Extended Timestamp Extra Field: + ============================== + + The following is the layout of the extended-timestamp extra block. + (Last Revision 19970118) + + Local-header version: + + Value Size Description + ----- ---- ----------- + (time) 0x5455 Short tag for this extra block type ("UT") + TSize Short total data size for this block + Flags Byte info bits + (ModTime) Long time of last modification (UTC/GMT) + (AcTime) Long time of last access (UTC/GMT) + (CrTime) Long time of original creation (UTC/GMT) + + Central-header version: + + Value Size Description + ----- ---- ----------- + (time) 0x5455 Short tag for this extra block type ("UT") + TSize Short total data size for this block + Flags Byte info bits (refers to local header!) + (ModTime) Long time of last modification (UTC/GMT) + + The central-header extra field contains the modification time only, + or no timestamp at all. TSize is used to flag its presence or + absence. But note: + + If "Flags" indicates that Modtime is present in the local header + field, it MUST be present in the central header field, too! + This correspondence is required because the modification time + value may be used to support trans-timezone freshening and + updating operations with zip archives. + + The time values are in standard Unix signed-long format, indicating + the number of seconds since 1 January 1970 00:00:00. The times + are relative to Coordinated Universal Time (UTC), also sometimes + referred to as Greenwich Mean Time (GMT). To convert to local time, + the software must know the local timezone offset from UTC/GMT. + + The lower three bits of Flags in both headers indicate which time- + stamps are present in the LOCAL extra field: + + bit 0 if set, modification time is present + bit 1 if set, access time is present + bit 2 if set, creation time is present + bits 3-7 reserved for additional timestamps; not set + + Those times that are present will appear in the order indicated, but + any combination of times may be omitted. (Creation time may be + present without access time, for example.) TSize should equal + (1 + 4*(number of set bits in Flags)), as the block is currently + defined. Other timestamps may be added in the future. + + + -Info-ZIP Unix Extra Field (type 1): + ================================== + + The following is the layout of the old Info-ZIP extra block for + Unix. It has been replaced by the extended-timestamp extra block + (0x5455) and the Unix type 2 extra block (0x7855). + (Last Revision 19970118) + + Local-header version: + + Value Size Description + ----- ---- ----------- + (Unix1) 0x5855 Short tag for this extra block type ("UX") + TSize Short total data size for this block + AcTime Long time of last access (UTC/GMT) + ModTime Long time of last modification (UTC/GMT) + UID Short Unix user ID (optional) + GID Short Unix group ID (optional) + + Central-header version: + + Value Size Description + ----- ---- ----------- + (Unix1) 0x5855 Short tag for this extra block type ("UX") + TSize Short total data size for this block + AcTime Long time of last access (GMT/UTC) + ModTime Long time of last modification (GMT/UTC) + + The file access and modification times are in standard Unix signed- + long format, indicating the number of seconds since 1 January 1970 + 00:00:00. The times are relative to Coordinated Universal Time + (UTC), also sometimes referred to as Greenwich Mean Time (GMT). To + convert to local time, the software must know the local timezone + offset from UTC/GMT. The modification time may be used by non-Unix + systems to support inter-timezone freshening and updating of zip + archives. + + The local-header extra block may optionally contain UID and GID + info for the file. The local-header TSize value is the only + indication of this. Note that Unix UIDs and GIDs are usually + specific to a particular machine, and they generally require root + access to restore. + + This extra field type is obsolete, but it has been in use since + mid-1994. Therefore future archiving software should continue to + support it. Some guidelines: + + An archive member should either contain the old "Unix1" + extra field block or the new extra field types "time" and/or + "Unix2". + + If both the old "Unix1" block type and one or both of the new + block types "time" and "Unix2" are found, the "Unix1" block + should be considered invalid and ignored. + + Unarchiving software should recognize both old and new extra + field block types, but the info from new types overrides the + old "Unix1" field. + + Archiving software should recognize "Unix1" extra fields for + timestamp comparison but never create it for updated, freshened + or new archive members. When copying existing members to a new + archive, any "Unix1" extra field blocks should be converted to + the new "time" and/or "Unix2" types. + + + -Info-ZIP Unix Extra Field (type 2): + ================================== + + The following is the layout of the new Info-ZIP extra block for + Unix. (Last Revision 19960922) + + Local-header version: + + Value Size Description + ----- ---- ----------- + (Unix2) 0x7855 Short tag for this extra block type ("Ux") + TSize Short total data size for this block (4) + UID Short Unix user ID + GID Short Unix group ID + + Central-header version: + + Value Size Description + ----- ---- ----------- + (Unix2) 0x7855 Short tag for this extra block type ("Ux") + TSize Short total data size for this block (0) + + The data size of the central-header version is zero; it is used + solely as a flag that UID/GID info is present in the local-header + extra field. If additional fields are ever added to the local + version, the central version may be extended to indicate this. + + Note that Unix UIDs and GIDs are usually specific to a particular + machine, and they generally require root access to restore. + + + -ASi Unix Extra Field: + ==================== + + The following is the layout of the ASi extra block for Unix. The + local-header and central-header versions are identical. + (Last Revision 19960916) + + Value Size Description + ----- ---- ----------- + (Unix3) 0x756e Short tag for this extra block type ("nu") + TSize Short total data size for this block + CRC Long CRC-32 of the remaining data + Mode Short file permissions + SizDev Long symlink'd size OR major/minor dev num + UID Short user ID + GID Short group ID + (var.) variable symbolic link filename + + Mode is the standard Unix st_mode field from struct stat, containing + user/group/other permissions, setuid/setgid and symlink info, etc. + + If Mode indicates that this file is a symbolic link, SizDev is the + size of the file to which the link points. Otherwise, if the file + is a device, SizDev contains the standard Unix st_rdev field from + struct stat (includes the major and minor numbers of the device). + SizDev is undefined in other cases. + + If Mode indicates that the file is a symbolic link, the final field + will be the name of the file to which the link points. The file- + name length can be inferred from TSize. + + [Note that TSize may incorrectly refer to the data size not counting + the CRC; i.e., it may be four bytes too small.] + + + -BeOS Extra Field: + ================ + + The following is the layout of the file-attributes extra block for + BeOS. (Last Revision 19970531) + + Local-header version: + + Value Size Description + ----- ---- ----------- + (BeOS) 0x6542 Short tag for this extra block type ("Be") + TSize Short total data size for this block + BSize Long uncompressed file attribute data size + Flags Byte info bits + (CType) Short compression type + (CRC) Long CRC value for uncompressed file attribs + Attribs variable file attribute data + + Central-header version: + + Value Size Description + ----- ---- ----------- + (BeOS) 0x6542 Short tag for this extra block type ("Be") + TSize Short total data size for this block (5) + BSize Long size of uncompr. local EF block data + Flags Byte info bits + + The least significant bit of Flags in both headers indicates whether + the LOCAL extra field is uncompressed (and therefore whether CType + and CRC are omitted): + + bit 0 if set, Attribs is uncompressed (no CType, CRC) + bits 1-7 reserved; if set, assume error or unknown data + + Currently the only supported compression types are deflated (type 8) + and stored (type 0); the latter is not used by Info-ZIP's Zip but is + supported by UnZip. + + Attribs is a BeOS-specific block of data in big-endian format with + the following structure (if compressed, uncompress it first): + + Value Size Description + ----- ---- ----------- + Name variable attribute name (null-terminated string) + Type Long attribute type (32-bit unsigned integer) + Size Long Long data size for this sub-block (64 bits) + Data variable attribute data + + The attribute structure is repeated for every attribute. The Data + field may contain anything--text, flags, bitmaps, etc. + + + -AtheOS Extra Field: + ================== + + The following is the layout of the file-attributes extra block for + AtheOS. This field is a very close spin-off from the BeOS e.f. + The only differences are: + - a new extra field signature + - numeric field in the attributes data are stored in little-endian + format ("i386" was initial hardware for AtheOS) + (Last Revision 20040908) + + Local-header version: + + Value Size Description + ----- ---- ----------- + (AtheOS) 0x7441 Short tag for this extra block type ("At") + TSize Short total data size for this block + BSize Long uncompressed file attribute data size + Flags Byte info bits + (CType) Short compression type + (CRC) Long CRC value for uncompressed file attribs + Attribs variable file attribute data + + Central-header version: + + Value Size Description + ----- ---- ----------- + (AtheOS) 0x7441 Short tag for this extra block type ("At") + TSize Short total data size for this block (5) + BSize Long size of uncompr. local EF block data + Flags Byte info bits + + The least significant bit of Flags in both headers indicates whether + the LOCAL extra field is uncompressed (and therefore whether CType + and CRC are omitted): + + bit 0 if set, Attribs is uncompressed (no CType, CRC) + bits 1-7 reserved; if set, assume error or unknown data + + Currently the only supported compression types are deflated (type 8) + and stored (type 0); the latter is not used by Info-ZIP's Zip but is + supported by UnZip. + + Attribs is a AtheOS-specific block of data in little-endian format + with the following structure (if compressed, uncompress it first): + + Value Size Description + ----- ---- ----------- + Name variable attribute name (null-terminated string) + Type Long attribute type (32-bit unsigned integer) + Size Long Long data size for this sub-block (64 bits) + Data variable attribute data + + The attribute structure is repeated for every attribute. The Data + field may contain anything--text, flags, bitmaps, etc. + + + -SMS/QDOS Extra Field: + ==================== + + The following is the layout of the file-attributes extra block for + SMS/QDOS. The local-header and central-header versions are identical. + (Last Revision 19960929) + + Value Size Description + ----- ---- ----------- + (QDOS) 0xfb4a Short tag for this extra block type + TSize Short total data size for this block + LongID Long extra-field signature + (ExtraID) Long additional signature/flag bytes + QDirect 64 bytes qdirect structure + + LongID may be "QZHD" or "QDOS". In the latter case, ExtraID will + be present. Its first three bytes are "02\0"; the last byte is + currently undefined. + + QDirect contains the file's uncompressed directory info (qdirect + struct). Its elements are in native (big-endian) format: + + d_length beLong file length + d_access byte file access type + d_type byte file type + d_datalen beLong data length + d_reserved beLong unused + d_szname beShort size of filename + d_name 36 bytes filename + d_update beLong time of last update + d_refdate beLong file version number + d_backup beLong time of last backup (archive date) + + + -AOS/VS Extra Field: + ================== + + The following is the layout of the extra block for Data General + AOS/VS. The local-header and central-header versions are identical. + (Last Revision 19961125) + + Value Size Description + ----- ---- ----------- + (AOSVS) 0x5356 Short tag for this extra block type ("VS") + TSize Short total data size for this block + "FCI\0" Long extra-field signature + Version Byte version of AOS/VS extra block (10 = 1.0) + Fstat variable fstat packet + AclBuf variable raw ACL data ($MXACL bytes) + + Fstat contains the file's uncompressed fstat packet, which is one of + the following: + + normal fstat packet (P_FSTAT struct) + DIR/CPD fstat packet (P_FSTAT_DIR struct) + unit (device) fstat packet (P_FSTAT_UNIT struct) + IPC file fstat packet (P_FSTAT_IPC struct) + + AclBuf contains the raw ACL data; its length is $MXACL. + + + -Tandem NSK Extra Field: + ====================== + + The following is the layout of the file-attributes extra block for + Tandem NSK. The local-header and central-header versions are + identical. (Last Revision 19981221) + + Value Size Description + ----- ---- ----------- + (TA) 0x4154 Short tag for this extra block type ("TA") + TSize Short total data size for this block (20) + NSKattrs 20 Bytes NSK attributes + + + -THEOS Extra Field: + ================= + + The following is the layout of the file-attributes extra block for + Theos. The local-header and central-header versions are identical. + (Last Revision 19990206) + + Value Size Description + ----- ---- ----------- + (Theos) 0x6854 Short 'Th' signature + size Short size of extra block + flags Byte reserved for future use + filesize Long file size + fileorg Byte type of file (see below) + keylen Short key length for indexed and keyed files, + data segment size for 16 bits programs + reclen Short record length for indexed,keyed and direct, + text segment size for 16 bits programs + filegrow Byte growing factor for indexed,keyed and direct + protect Byte protections (see below) + reserved Short reserved for future use + + File types + ========== + + 0x80 library (keyed access list of files) + 0x40 directory + 0x10 stream file + 0x08 direct file + 0x04 keyed file + 0x02 indexed file + 0x0e reserved + 0x01 16 bits real mode program (obsolete) + 0x21 16 bits protected mode program + 0x41 32 bits protected mode program + + Protection codes + ================ + + User protection + --------------- + 0x01 non readable + 0x02 non writable + 0x04 non executable + 0x08 non erasable + + Other protection + ---------------- + 0x10 non readable + 0x20 non writable + 0x40 non executable Theos before 4.0 + 0x40 modified Theos 4.x + 0x80 not hidden + + + -THEOS old inofficial Extra Field: + ================================ + + The following is the layout of an inoffical former version of a + Theos file-attributes extra blocks. This layout was never published + and is no longer created. However, UnZip can optionally support it + when compiling with the option flag OLD_THEOS_EXTRA defined. + Both the local-header and central-header versions are identical. + (Last Revision 19990206) + + Value Size Description + ----- ---- ----------- + (THS0) 0x4854 Short 'TH' signature + size Short size of extra block + flags Short reserved for future use + filesize Long file size + reclen Short record length for indexed,keyed and direct, + text segment size for 16 bits programs + keylen Short key length for indexed and keyed files, + data segment size for 16 bits programs + filegrow Byte growing factor for indexed,keyed and direct + reserved 3 Bytes reserved for future use + + + -FWKCS MD5 Extra Field (0x4b46): + ============================== + + The FWKCS Contents_Signature System, used in automatically + identifying files independent of filename, optionally adds + and uses an extra field to support the rapid creation of + an enhanced contents_signature. + There is no local-header version; the following applies + only to the central header. (Last Revision 19961207) + + Central-header version: + + Value Size Description + ----- ---- ----------- + (MD5) 0x4b46 Short tag for this extra block type ("FK") + TSize Short total data size for this block (19) + "MD5" 3 bytes extra-field signature + MD5hash 16 bytes 128-bit MD5 hash of uncompressed data + (low byte first) + + When FWKCS revises a .ZIP file central directory to add + this extra field for a file, it also replaces the + central directory entry for that file's uncompressed + file length with a measured value. + + FWKCS provides an option to strip this extra field, if + present, from a .ZIP file central directory. In adding + this extra field, FWKCS preserves .ZIP file Authenticity + Verification; if stripping this extra field, FWKCS + preserves all versions of AV through PKZIP version 2.04g. + + FWKCS, and FWKCS Contents_Signature System, are + trademarks of Frederick W. Kantor. + + (1) R. Rivest, RFC1321.TXT, MIT Laboratory for Computer + Science and RSA Data Security, Inc., April 1992. + ll.76-77: "The MD5 algorithm is being placed in the + public domain for review and possible adoption as a + standard." diff -Nru unzip-6.0/proginfo/ziplimit.txt unzip-6.0/proginfo/ziplimit.txt --- unzip-6.0/proginfo/ziplimit.txt 2009-01-02 19:15:06.000000000 +0000 +++ unzip-6.0/proginfo/ziplimit.txt 2010-05-14 07:26:14.000000000 +0000 @@ -1,14 +1,14 @@ ziplimit.txt -A1) Hard limits of the Zip archive format (without Zip64 extensions): +A) Hard limits of the Zip archive format: - Number of entries in Zip archive: 64 Ki (2^16 - 1 entries) - Compressed size of archive entry: 4 GiByte (2^32 - 1 Bytes) - Uncompressed size of entry: 4 GiByte (2^32 - 1 Bytes) - Size of single-volume Zip archive: 4 GiByte (2^32 - 1 Bytes) - Per-volume size of multi-volume archives: 4 GiByte (2^32 - 1 Bytes) - Number of parts for multi-volume archives: 64 Ki (2^16 - 1 parts) - Total size of multi-volume archive: 256 TiByte (4G * 64k) + Number of entries in Zip archive: 64 k (2^16 - 1 entries) + Compressed size of archive entry: 4 GByte (2^32 - 1 Bytes) + Uncompressed size of entry: 4 GByte (2^32 - 1 Bytes) + Size of single-volume Zip archive: 4 GByte (2^32 - 1 Bytes) + Per-volume size of multi-volume archives: 4 GByte (2^32 - 1 Bytes) + Number of parts for multi-volume archives: 64 k (1^16 - 1 parts) + Total size of multi-volume archive: 256 TByte (4G * 64k) The number of archive entries and of multivolume parts are limited by the structure of the "end-of-central-directory" record, where the these @@ -19,52 +19,40 @@ is not really neccessary to retrieve the contents of a Zip archive; it should rather be used for consistency checks.) - Length of an archive entry name: 64 KiByte (2^16 - 1) - Length of archive member comment: 64 KiByte (2^16 - 1) - Total length of "extra field": 64 KiByte (2^16 - 1) - Length of a single e.f. block: 64 KiByte (2^16 - 1) - Length of archive comment: 64 KiByte (2^16 - 1) + Length of an archive entry name: 64 kByte (2^16 - 1) + Length of archive member comment: 64 kByte (2^16 - 1) + Total length of "extra field": 64 kByte (2^16 - 1) + Length of a single e.f. block: 64 kByte (2^16 - 1) + Length of archive comment: 64 KByte (2^16 - 1) Additional limitation claimed by PKWARE: Size of local-header structure (fixed fields of 30 Bytes + filename - local extra field): < 64 KiByte + local extra field): < 64 kByte Size of central-directory structure (46 Bytes + filename + - central extra field + member comment): < 64 KiByte + central extra field + member comment): < 64 kByte -A2) Hard limits of the Zip archive format with Zip64 extensions: + Note: In 2001, PKWARE has published version 4.5 of the Zip format specification (together with the release of PKZIP for Windows 4.5). This specification defines new extra field blocks that allow to break the size limits of the - standard zipfile structures. This extended "Zip64" format enlarges the - theoretical limits to the following values: - - Number of entries in Zip archive: 16 Ei (2^64 - 1 entries) - Compressed size of archive entry: 16 EiByte (2^64 - 1 Bytes) - Uncompressed size of entry: 16 EiByte (2^64 - 1 Bytes) - Size of single-volume Zip archive: 16 EiByte (2^64 - 1 Bytes) - Per-volume size of multi-volume archives: 16 EiByte (2^64 - 1 Bytes) - Number of parts for multi-volume archives: 4 Gi (2^32 - 1 parts) - Total size of multi-volume archive: 2^96 Byte (16 Ei * 4Gi) - - The Info-ZIP software releases (beginning with Zip 3.0 and UnZip 6.0) - support Zip64 archives on selected environments (where the underlying - operating system capabilities are sufficient, e.g. Unix, VMS and Win32). + standard zipfile structures. In this extended "Zip64" format, the limits + on the size of zip entries and the size of the complete zip archive are + extended to (2^64 - 1) Bytes; the maximum number of archive entries and + split volumes are enlarged to (2^64 - 1) respective (2^32 - 1). + Currently, these extensions are not yet supported by the released Info-ZIP + software. However, new major releases (Zip 3.0 and UnZip 6.0) are under + development and will support Zip64 archives on selected environments. + (Beta releases are already available for Unix, VMS and Win32.) B) Implementation limits of UnZip: 1. Size limits caused by file I/O and decompression handling: - a) Without "Zip64" and "LargeFile" extensions: - Size of Zip archive: 2 GiByte (2^31 - 1 Bytes) - Compressed size of archive entry: 2 GiByte (2^31 - 1 Bytes) - - b) With "Zip64" enabled and "LargeFile" supported: - Size of Zip archive: 8 EiByte (2^63 - 1 Bytes) - Compressed size of archive entry: 8 EiByte (2^63 - 1 Bytes) - Uncompressed size of entry: 8 EiByte (2^63 - 1 Bytes) - - Note: On some systems, even UnZip without "LargeFile" extensions enabled - may support archive sizes up to 4 GiByte. To get this support, the - target environment has to meet the following requirements: + Size of Zip archive: 2 GByte (2^31 - 1 Bytes) + Compressed size of archive entry: 2 GByte (2^31 - 1 Bytes) + + Note: On some systems, UnZip may support archive sizes up to 4 GByte. + To get this support, the target environment has to meet the following + requirements: a) The compiler's intrinsic "long" data types must be able to hold integer numbers of 2^32. In other words - the standard intrinsic integer types "long" and "unsigned long" have to be wider than @@ -73,22 +61,20 @@ with the more-than-32-bit-wide "long int" type of condition a) c) The standard file positioning functions fseek(), ftell() (and/or the Unix style lseek() and tell() functions) have to be capable - to move to absolute file offsets of up to 4 GiByte from the file + to move to absolute file offsets of up to 4 GByte from the file start. On 32-bit CPU hardware, you generally cannot expect that a C compiler provides a "long int" type that is wider than 32-bit. So, many of the most popular systems (i386, PowerPC, 680x0, et. al) are out of luck. You may find environment that provide all requirements on systems - with 64-bit CPU hardware. Examples might be Cray number crunchers, - Compaq (former DEC) Alpha AXP machines, or Intel/AMD x64 computers. + with 64-bit CPU hardware. Examples might be Cray number crunchers + or Compaq (former DEC) Alpha AXP machines. The number of Zip archive entries is unlimited. The "number-of-entries" field of the "end-of-central-dir" record is checked against the "number - of entries found in the central directory" modulus 64k (2^16) (without - Zip64 extension) or modulus 2^64 (with Zip64 extensions enabled for - Zip64 archives). + of entries found in the central directory" modulus 64k (2^16). - Multi-volume archive extraction is not (yet) supported. + Multi-volume archive extraction is not supported. Memory requirements are mostly independent of the archive size and archive contents. @@ -97,7 +83,7 @@ processed entry's local header. Here, a large extra field (could be up to 64 kByte) may exceed the available memory for MSDOS 16-bit executables (when they were compiled in small - or medium memory model, with a fixed 64 KiByte limit on data space). + or medium memory model, with a fixed 64kByte limit on data space). The other exception where memory requirements scale with "larger" archives is the "restore directory attributes" feature. Here, the @@ -110,19 +96,11 @@ C) Implementation limits of the Zip executables: 1. Size limits caused by file I/O and compression handling: - a) Without "Zip64" and "LargeFile" extensions: - Size of Zip archive: 2 GiByte (2^31 - 1 Bytes) - Compressed size of archive entry: 2 GiByte (2^31 - 1 Bytes) - Uncompressed size of entry: 2 GiByte (2^31 - 1 Bytes), - (could/should be 4 GiBytes...) - - b) With "Zip64" enabled and "LargeFile" supported: - Size of Zip archive: 8 EiByte (2^63 - 1 Bytes) - Compressed size of archive entry: 8 EiByte (2^63 - 1 Bytes) - Uncompressed size of entry: 8 EiByte (2^63 - 1 Bytes) - - Multi-volume archive creation now supported in the form of split - archives. Currently up to 99,999 splits are supported. + Size of Zip archive: 2 GByte (2^31 - 1 Bytes) + Compressed size of archive entry: 2 GByte (2^31 - 1 Bytes) + Uncompressed size of entry: 2 GByte (2^31 - 1 Bytes), + (could/should be 4 GBytes...) + Multi-volume archive creation is not supported. 2. Limits caused by handling of archive contents lists @@ -132,15 +110,9 @@ a1) 16-bit executable: <16k ((2^16)/4) (The smaller limit a1) results from the array size limit of the "qsort()" function.) - - 32-bit executable: <1G ((2^32)/4) + 32-bit executables <1G ((2^32)/4) (usual system limit of the "qsort()" function on 32-bit systems) - 64-bit executable: <2Ei ((2^64)/8) - (theoretical limit of 64-bit flat memory model, the actual limit of - currently available OS implementations is several orders of magnitude - lower) - b) stack space needed by qsort to sort list of archive entries NOTE: In the current executables, overflows of limits a) and b) are NOT @@ -148,7 +120,7 @@ c) amount of free memory to hold "central directory information" of all archive entries; one entry needs: - 128 bytes (Zip64), 96 bytes (32-bit) resp. 80 bytes (16-bit) + 96 bytes (32-bit) resp. 80 bytes (16-bit) + 3 * length of entry name + length of zip entry comment (when present) + length of extra field(s) (when present, e.g.: UT needs 9 bytes) @@ -180,30 +152,24 @@ c) amount of free memory to hold the directory info list for new entries; one entry needs: - 32 bytes (Zip64), 24 bytes (32-bit) resp. 22 bytes (16-bit) + 24 bytes (32-bit) resp. 22 bytes (16-bit) + 3 * length of filename - NOTE: For larger systems, the actual usability limits may be more - performance issues (how long you want to wait) rather than available - memory and other resources. - D) Some technical remarks: - 1. For executables without support for "Zip64" archives and "LargeFile" - I/O extensions, the 2GiByte size limit on archive files is a consequence - of the portable C implementation used for the Info-ZIP programs. + 1. The 2GByte size limit on archive files is a consequence of the portable + C implementation of the Info-ZIP programs. Zip archive processing requires random access to the archive file for jumping between different parts of the archive's structure. In standard C, this is done via stdio functions fseek()/ftell() resp. - unix-io functions lseek()/tell(). In many (most?) C implementations, + unix-io functions lseek()/tell(). In many (most?) C implementations, these functions use "signed long" variables to hold offset pointers - into sequential files. In most cases, this is a signed 32-bit number, - which is limited to ca. 2E+09. There may be specific C runtime library + into sequential files. In most cases, this is a signed 32-bit number, + which is limited to ca. 2E+09. There may be specific C runtime library implementations that interpret the offset numbers as unsigned, but for us, this is not reliable in the context of portable programming. - 2. Similarly, for executables without "Zip64" and "LargeFile" support, - the 2GiByte limit on the size of a single compressed archive member + 2. The 2GByte limit on the size of a single compressed archive member is again a consequence of the implementation in C. The variables used internally to count the size of the compressed data stream are of type "long", which is guaranted to be at least @@ -211,46 +177,42 @@ But, why do we use "signed" long and not "unsigned long"? - Throughout the I/O handling of the compressed data stream, the sign bit - of the "long" numbers is (mis-)used as a kind of overflow detection. - In the end, this is caused by the fact that standard C lacks any - overflow checking on integer arithmetics and does not support access - to the underlying hardware's overflow detection (the status bits, - especially "carry" and "overflow" of the CPU's flags-register) in a - system-independent manner. - - So, we "misuse" the most-significant bit of the compressed data size - counters as carry bit for efficient overflow/underflow detection. We - could change the code to a different method of overflow detection, by - using a bunch of "sanity" comparisons (kind of "is the calculated result - plausible when compared with the operands"). But, this would "blow up" - the code of the "inner loop", with remarkable loss of processing speed. - Or, we could reduce the amount of consistency checks of the compressed - data (e.g. detection of premature end of stream) to an absolute minimum, - at the cost of the programs' stability when processing corrupted data. - - 3. The argumentation above is somewhat out-dated. Beginning with the - releases of Zip 3 and UnZip 6, Info-ZIP programs support archive - sizes larger than 4GiB on systems where the required underlying - support for 64-bit file offsets and file sizes is available from - the OS (and the C runtime environment). - - For executables with support for "Zip64" archive format and "LargeFile" - extension, the I/O limits are lifted by applying extended 64-bit off_t - file offsets. All limits discussed above are then based on integer - sizes of 64 bits instead of 32, this should allow to handle file and - archive sizes up to the limits of manufacturable hardware for the - foreseeable future. The reduction of the theoretical limits from - (2^64 - 1) to (2^63 - 1) because of the throughout use of signed - numbers can be neglected with the currently imaginable hardware. - - However, this new support partially breaks compatibility with older - "legacy" systems. And it should be noted that the portability and - readability of the UnZip and Zip code has suffered somehow caused - by the extensive use of non-standard language extension needed for - 64-bit support on the major target systems. + Throughout the I/O handling of the compressed data stream, the + sign bit of the "long" numbers is (mis-)used as a kind of overflow + detection. In the end, this is caused by the fact that standard C + lacks any overflow checking on integer arithmetics and does not + support access to the underlying hardware's overflow detection + (the status bits, especially "carry" and "overflow" of the CPU's + flags-register) in a system-independent manner. + + So, we "misuse" the most-significant bit of the compressed data + size counters as carry bit for efficient overflow/underflow detection. + We could change the code to a different method of overflow detection, + by using a bunch of "sanity" comparisons (kind of "is the calculated + result plausible when compared with the operands"). But, this would + "blow up" the code of the "inner loop", with remarkable loss of + processing speed. Or, we could reduce the amount of consistency checks + of the compressed data (e.g. detection of premature end of stream) to + an absolute minimum, at the cost of the programs' stability when + processing corrupted data. + + Summary: Changing the compression/decompression core routines to + be "unsigned safe" would require excessive recoding, with little + gain on maximum processable uncompressed size (a gain can only be + expected for hardly compressable data), but at severe costs on + performance, stability and maintainability. Therefore, it is + quite unlikely that this will ever happen for Zip/UnZip. + + The argumentation above is somewhat out-dated. The new releases + Zip 3 and UnZip 6 will support archive sizes larger than 4GB on + systems where the required underlying support for 64-bit file offsets + and file sizes is available from the OS (and the C runtime environment). + However, this new support will partially break compatibility with + older "legacy" systems. And it should be expected that the portability + and readability of the UnZip and Zip code may be reduced due to the + extensive use of non-standard language extension needed for 64-bit + support on the major target systems. Please report any problems to: Zip-Bugs at www.info-zip.org -Last updated: 25 May 2008, Ed Gordon - 02 January 2009, Christian Spieler +Last updated: 22 February 2005, Christian Spieler diff -Nru unzip-6.0/qdos/Makefile unzip-6.0/qdos/Makefile --- unzip-6.0/qdos/Makefile 2006-12-25 20:03:14.000000000 +0000 +++ unzip-6.0/qdos/Makefile 2010-05-14 07:26:14.000000000 +0000 @@ -1,22 +1,22 @@ -# Makefile for UnZip 5.53+ using QDOS/xtc68 and GNU make +# Makefile for UnZip 5.5+ using QDOS/xtc68 and GNU make # # This makefile is a makefile for the xtc68 cross-compiler on Linux; # conversion to a native c68 makefile should be trivial. This builds # native QDOS binaries. # -# Last modified: 25 Dec 06 +# Last modified: 13 Feb 01 include /etc/ql.mak CFLAGS = -O -I. -I./qdos/ OBJS = unzip.o process.o crypt.o envargs.o explode.o \ unshrink.o extract.o zipinfo.o inflate.o match.o unreduce.o \ - ubz2err.o ttyio.o fileio.o list.o globals.o qdos.o config.o crc32.o + ttyio.o fileio.o list.o globals.o crctab.o qdos.o config.o crc32.o -FOBJS = funzip.o ttyio.o crypt.fo inflate.fo globals.fo config.o crc32.fo qdos.fo +FOBJS = funzip.o ttyio.o crypt.fo inflate.fo globals.fo config.o crc32.o qdos.fo XOBJS = unzip.xo process.xo crypt.xo extract.xo fileio.xo \ - ttyio.xo inflate.xo match.xo globals.xo ubz2err.xo \ + ttyio.xo inflate.xo match.xo globals.xo crctab.xo \ qdos.xo config.o crc32.xo all : unzip unzipsfx funzip makesfx callstub @@ -72,17 +72,13 @@ $(OBJS) $(XOBJS) $(FOBJS) : unzip.h unzpriv.h globals.h \ qdos/izqdos.h -crc32.o crc32.fo crc32.xo : zip.h +crc32.o crc32.xo crctab.o crctab.xo : zip.h crypt.o crypt.fo crypt.xo ttyio.o ttyio.fo ttyio.xo : zip.h inflate.o inflate.fo inflate.xo : inflate.h fileio.o fileio.xo : ebcdic.h - -funzip.o : crc32.h -crc32.o crc32.fo crc32.xo crypt.o crypt.fo crypt.xo : crc32.h -fileio.o fileio.xo extract.o extract.xo process.o process.xo : crc32.h - +funzip.o : tables.h crypt.o crypt.fo crypt.xo ttyio.o ttyio.fo ttyio.xo : crypt.h unzip.o unzip.xo funzip.o : crypt.h diff -Nru unzip-6.0/qdos/qdos.c unzip-6.0/qdos/qdos.c --- unzip-6.0/qdos/qdos.c 2007-12-23 16:24:46.000000000 +0000 +++ unzip-6.0/qdos/qdos.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. @@ -994,46 +994,37 @@ we're laughing: both mtime and atime are ours. ---------------------------------------------------------------------------*/ - /* skip restoring time stamps on user's request */ - if (uO.D_flag <= 1) { #ifdef USE_EF_UT_TIME - eb_izux_flg = (G.extra_field ? ef_scan_for_izux(G.extra_field, - G.lrec.extra_field_length, 0, - G.lrec.last_mod_dos_datetime, + eb_izux_flg = (G.extra_field ? ef_scan_for_izux(G.extra_field, + G.lrec.extra_field_length, 0, G.lrec.last_mod_dos_datetime, #ifdef IZ_CHECK_TZ - (G.tz_is_valid ? &(zt.t3) : NULL), + (G.tz_is_valid ? &(zt.t3) : NULL), #else - &(zt.t3), + &(zt.t3), #endif - NULL) : 0); - if (eb_izux_flg & EB_UT_FL_MTIME) { - TTrace((stderr, - "\nclose_outfile: Unix e.f. modif. time = %ld\n", - zt.t3.mtime)); - } else { - zt.t3.mtime = dos_to_unix_time(G.lrec.last_mod_dos_datetime); - } - if (eb_izux_flg & EB_UT_FL_ATIME) { - TTrace((stderr, - "close_outfile: Unix e.f. access time = %ld\n", - zt.t3.atime)); - } else { - zt.t3.atime = zt.t3.mtime; - TTrace((stderr, - "\nclose_outfile: modification/access times = %ld\n", - zt.t3.mtime)); - } + z_uidgid) : 0); + if (eb_izux_flg & EB_UT_FL_MTIME) { + TTrace((stderr, "\nclose_outfile: Unix e.f. modif. time = %ld\n", + zt.t3.mtime)); + } else { + zt.t3.mtime = dos_to_unix_time(G.lrec.last_mod_dos_datetime); + } + if (eb_izux_flg & EB_UT_FL_ATIME) { + TTrace((stderr, "close_outfile: Unix e.f. access time = %ld\n", + zt.t3.atime)); + } else { + zt.t3.atime = zt.t3.mtime; + TTrace((stderr, "\nclose_outfile: modification/access times = %ld\n", + zt.t3.mtime)); + } #else - zt.t3.atime = zt.t3.mtime - = dos_to_unix_time(G.lrec.last_mod_dos_datetime); + zt.t3.atime = zt.t3.mtime = dos_to_unix_time(G.lrec.last_mod_dos_datetime); #endif - /* set the file's access and modification times */ - if (utime(G.filename, &(zt.t2))) { - Info(slide, 0x201, ((char *)slide, - "warning: cannot set the time for %s\n", - FnFilter1(G.filename))); - } + /* set the file's access and modification times */ + if (utime(G.filename, &(zt.t2))) { + Info(slide, 0x201, ((char *)slide, + "warning: cannot set the time for %s\n", FnFilter1(G.filename))); } } /* end function close_outfile() */ diff -Nru unzip-6.0/README unzip-6.0/README --- unzip-6.0/README 2009-04-19 22:37:36.000000000 +0000 +++ unzip-6.0/README 2010-05-14 07:26:14.000000000 +0000 @@ -1,10 +1,10 @@ -This is the README file for the 20 April 2009 public release of the +This is the README file for the 28 February 2005 public release of the Info-ZIP group's portable UnZip zipfile-extraction program (and related utilities). -unzip60.zip portable UnZip, version 6.0, source code distribution -unzip60.tar.Z same as above, but compress'd tar format -unzip60.tar.gz same as above, but gzip'd tar format +unzip552.zip portable UnZip, version 5.52, source code distribution +unzip552.tar.Z same as above, but compress'd tar format +unzip552.tar.gz same as above, but gzip'd tar format __________________________________________________________________________ @@ -53,54 +53,6 @@ CHANGES AND NEW FEATURES ------------------------ -UnZip 6.0 finally supports nowadays "large" files of sizes > 2 GiB! -This is the first release containing support for the PKWARE Zip64 -enhancements. -Major changes are: - - Support PKWARE ZIP64 extensions, allowing Zip archives and Zip archive - entries larger than 4 GiBytes and more than 65536 entries within a single - Zip archive. This support is currently only available for Unix, - OpenVMS and Win32/Win64. - - Support for bzip2 compression method. - - Support for UTF-8 encoded entry names, both through PKWARE's "General - Purpose Flags Bit 11" indicator and Info-ZIP's new "up" unicode path - extra field. (Currently, on Windows the UTF-8 handling is limited to - the character subset contained in the configured non-unicode "system - code page".) - - Added "wrong implementation used" warning to error messages of the MSDOS - port when used under Win32, in an attempt to reduce false bug reports. - - Fixed "Time of Creation/Time of Use" vulnerability when setting attributes - of extracted files, for Unix and Unix-like ports. - - Fixed memory leak when processing invalid deflated data. - - Fixed long-standing bug in unshrink (partial_clear), added boundary checks - against invalid compressed data. - - On Unix, keep inherited SGID attribute bit for extracted directories - unless restoration of owner/group id or SUID/SGID/Tacky attributes was - requested. - - On Unix, allow extracted filenames to contain embedded control characters - when explicitly requested by specifying the new command line option "-^". - - On Unix, support restoration of symbolic link attributes. - - On Unix, support restoration of 32-bit UID/GID data using the new "ux" - IZUNIX3 extra field introduced with Zip 3.0. - - Support for ODS5 extended filename syntax on new OpenVMS systems. - - Support symbolic links zipped up on VMS. - - On VMS (only 8.x or better), support symbolic link creation. - - On VMS, support option to create converted text files in Stream_LF format. - - New -D option to suppress restoration of timestamps for extracted - directory entries (on those ports that support setting of directory - timestamps). By specifying "-DD", this new option also allows to suppress - timestamp restoration for ALL extracted files on all UnZip ports which - support restoration of timestamps. - On VMS, the default behaviour is now to skip restoration of directory - timestamps; here, "--D" restores ALL timestamps, "-D" restores none. - - On OS/2, Win32, and Unix, the (previously optional) feature UNIXBACKUP - to allow saving backup copies of overwritten files on extraction is now - enabled by default. - -For the UnZip 6.0 release, we want to give special credit to Myles Bennet, -who started the job of supporting ZIP64 extensions and Large-File (> 2GiB) -and provided a first (alpha-state) port. - The 5.52 maintenance release fixes a few minor problems found in the 5.51 release, closes some more security holes, adds a new AtheOS port, and contains a Win32 extra-field code cleanup that was not finished earlier. @@ -219,9 +171,8 @@ - updated Solaris/SVR4 package facility What is (still!) not added is multi-part archive support (a.k.a. "diskette -spanning", though we really mean archive splitting and not the old diskette -spanning) and a unified and more powerful DLL interface. These are the two -highest priorities for the 6.x releases. Work on the former is almost +spanning") and a unified and more powerful DLL interface. These are the +two highest priorities for the 6.x releases. Work on the former is almost certain to have commenced by the time you read this. This time we mean it! You betcha. :-) @@ -230,6 +181,11 @@ they should now be compatible with C/C++, Visual BASIC and Delphi. Weirder languages (FoxBase, etc.) are probably Right Out. +Finally, note that support for unshrinking has now been turned OFF by default, +although the source code is still available (as with unreducing). This was +done for legal reasons, not technical ones, and no, we're not any happier +about it than you are. :-( See the COPYING file for details. + INTERNET RESOURCES ------------------ @@ -239,7 +195,7 @@ links to binaries, and common problems. (See http://www.info-zip.org/pub/infozip/FAQ.html for the latter.) Files may also be retrieved via ftp://ftp.info-zip.org/pub/infozip/ . -Thanks to LEO (Munich, Germany) for previously hosting our primary site. +Thanks to LEO (Munich, Germany) for hosting our primary site. DISTRIBUTION @@ -247,16 +203,13 @@ If you have a question regarding redistribution of Info-ZIP software, either as is, as packaging for a commercial product, or as an integral part of a commercial product, please read the Frequently Asked Questions (FAQ) section -of the included COPYING file. All Info-ZIP releases are now covered by -the Info-ZIP license. See the file LICENSE. The most current license -should be available at http://www.info-zip.org/license.html and -ftp://ftp.info-zip.org/pub/infozip/license.html. +of the included COPYING file. Insofar as C compilers are rare on some platforms and the authors only have direct access to a subset of the supported systems, others may wish to pro- vide ready-to-run executables for new systems. In general there is no prob- lem with this; we require only that such distributions include this README -file, the WHERE file, the LICENSE file (contains copyright/redistribution +file, the WHERE file, the COPYING file (contains copyright/redistribution information), and the appropriate documentation files (unzip.txt and/or unzip.1 for UnZip, etc.). If the local system provides a way to make self- extracting archives in which both the executables and text files can be @@ -269,16 +222,13 @@ BUGS AND NEW PORTS: CONTACTING INFO-ZIP ---------------------------------------- -All bug reports and patches (context diffs only, please!) should be -submitted either through the new Info-ZIP Discussion Forum at -http://www.info-zip.org/board/board.pl or through the Info-ZIP SourceForge -site at http://sourceforge.net/projects/infozip/. The forum allows file -attachments while SourceForge provides a place to post patches. The old -Zip-Bugs@lists.wku.edu e-mail address for the Info-ZIP authors was -discontinued after heavy continuous spam, as was the QuickTopic discussion -forum. The above methods are public, but we also can be reached directly -using the web reply page at http://www.info-zip.org/zip-bug.html. If you -need to send us files privately, contact us first for instructions. +All bug reports and patches (context diffs only, please!) should go to +Zip-Bugs@lists.wku.edu, which is the e-mail address for the Info-ZIP +authors. (Note that a few rare systems require the Zip-Bugs part to be +capitalized as shown; most systems work OK with lowercase "zip-bugs," +however.) DO NOT MAIL US LARGE BINARIES--EVER. If you need to send us +a problem archive that happens to be large (> 20K), contact us first for +instructions. "Dumb questions" that aren't adequately answered in the documentation should also be directed to Zip-Bugs rather than to a global forum such @@ -286,17 +236,16 @@ the documentation, however--a great deal of effort has gone into making it clear and complete.) -Suggestions for new features can be discussed on the new Discussion Forum. -A new mailing list for Info-ZIP beta testers and interested parties may -be created someday, but for now any issues found in the betas should use -the forum. We make no promises to act on all suggestions or even all -patches, but if it is something that is manifestly useful, sending the -required patches to Zip-Bugs directly (as per the instructions in the -ZipPorts file) is likely to produce a quicker response than asking us to -do it--the authors are always ridiculously short on time. (Please do -NOT send patches or encoded zipfiles to the Info-ZIP list. Please DO -read the ZipPorts file before sending any large patch. It would be -difficult to over-emphasize this point...) +Suggestions for new features can be discussed on Info-ZIP@lists.wku.edu, +a mailing list for Info-ZIP beta testers and interested parties; you need +to subscribe first, however (see below). We make no promises to act on all +suggestions or even all patches, but if it is something that is manifestly +useful, sending the required patches to Zip-Bugs directly (as per the +instructions in the ZipPorts file) is likely to produce a quicker response +than asking us to do it--the authors are always ridiculously short on time. +(Please do NOT send patches or encoded zipfiles to the Info-ZIP list. +Please DO read the ZipPorts file before sending any large patch. It would +be difficult to over-emphasize this point...) If you are considering a port, not only should you read the ZipPorts file, but also please check in with Zip-Bugs BEFORE getting started, since the @@ -325,15 +274,7 @@ interim ...) Feel free to use our bug-reporting web page for bug reports and to ask questions not answered on the FAQ page above: - http://www.info-zip.org/zip-bug.html - -For now the best option is to monitor and contribute to the various threads -on the new discussion forum site at: - - http://www.info-zip.org/board/board.pl - -The second best way to contribute is through the various features at -SourceForge, such as the bug posting areas. + http://www.info-zip.org/zip-bug.html There is also a closed mailing list for internal discussions of our core development team. This list is now kept secret to prevent us from being @@ -344,4 +285,4 @@ guy, with inspiration from David Kirschbaum, was Author of this text. -- Christian Spieler (shorthand: SPC), current UnZip maintenance coordinator, - applied the most recent changes, with Ed Gordon providing a few additions. + applied the most recent changes. diff -Nru unzip-6.0/tables.h unzip-6.0/tables.h --- unzip-6.0/tables.h 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/tables.h 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,89 @@ +/* + Copyright (c) 1990-2000 Info-ZIP. All rights reserved. + + See the accompanying file LICENSE, version 2000-Apr-09 or later + (the contents of which are also included in unzip.h) for terms of use. + If, for some reason, all these files are missing, the Info-ZIP license + also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html +*/ +/*--------------------------------------------------------------------------- + + tables.h + + This file contains only the 32-bit CRC table used in fUnZip; + it is in a separate file because it is rather big and ugly and + gets in the way during editing. + This file can be included in no more than ONE source file per + executable, of course. + + ---------------------------------------------------------------------------*/ + +#ifndef __tables_h /* prevent multiple inclusions */ +#define __tables_h + +#ifdef FUNZIP +#if (!defined(USE_ZLIB) || defined(USE_OWN_CRCTAB)) + +/* Table of CRC-32's of all single-byte values (made by makecrc.c) */ +ZCONST ulg near crc_32_tab[256] = { + 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, + 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, + 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, + 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, + 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L, + 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, + 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, + 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, + 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, + 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL, + 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, + 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, + 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L, + 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, + 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, + 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L, + 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, + 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L, + 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, + 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, + 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL, + 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L, + 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L, + 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL, + 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, + 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L, + 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, + 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, + 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L, + 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, + 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, + 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L, + 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, + 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL, + 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL, + 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L, + 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL, + 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L, + 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, + 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L, + 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL, + 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L, + 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, + 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL, + 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L, + 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L, + 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, + 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L, + 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L, + 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L, + 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, + 0x2d02ef8dL +}; + +#else /* USE_ZLIB && !USE_OWN_CRCTAB */ + +ZCONST uLongf *crc_32_tab = NULL; + +#endif /* ?(!USE_ZLIB || USE_OWN_CRCTAB) */ +#endif /* FUNZIP */ +#endif /* __tables_h */ diff -Nru unzip-6.0/tandem/macros unzip-6.0/tandem/macros --- unzip-6.0/tandem/macros 2005-12-30 20:14:18.000000000 +0000 +++ unzip-6.0/tandem/macros 2010-05-14 07:26:14.000000000 +0000 @@ -12,6 +12,7 @@ #OUTPUT Building [lib] #APPEND bin CLEAR add^list CRC32O +add^list CRCTABO add^list CRYPTO add^list DEFLATEO add^list FILEIOO @@ -134,6 +135,7 @@ #OUTPUT Building [lib] #APPEND bin CLEAR add^list CRC32O +add^list CRCTABO add^list CRYPTO add^list ENVARGSO add^list EXPLODEO @@ -217,6 +219,7 @@ #OUTPUT Building [lib] #APPEND bin CLEAR add^list CRC32O +add^list CRCTABX add^list EXTRACTX add^list FILEIOX add^list GLOBALSX diff -Nru unzip-6.0/tandem/README unzip-6.0/tandem/README --- unzip-6.0/tandem/README 2008-07-31 00:09:28.000000000 +0000 +++ unzip-6.0/tandem/README 2010-05-14 07:26:14.000000000 +0000 @@ -11,7 +11,7 @@ New DOIT macro for extracting files from archive Fix in2ex to expand full vol/subvol depending on '-j' flag 17/08/98 5.33f Set USE_EF_UT_TIME to allow for timezone changes -18/08/98 5.33f Use define LICENSED to build object able to update timestamps +18/08/98 5.33f Use define LICENSED to buld object able to update timestamps 19/08/98 5.33f Add -X flag support (restore file owner id) via unzip.c/h new chown function in tandem.c. Modified close_outfile to make the chown the last step. diff -Nru unzip-6.0/tandem/tandem.h unzip-6.0/tandem/tandem.h --- unzip-6.0/tandem/tandem.h 2006-12-30 04:10:16.000000000 +0000 +++ unzip-6.0/tandem/tandem.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2006 Info-ZIP. All rights reserved. + Copyright (c) 1990-2002 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in zip.h) for terms of use. @@ -20,7 +20,7 @@ #define NO_MKTEMP /* TANDEM supplies proper UTC vs. local time conversion, so enable Info-ZIP's - UT e.f. support unless explicitly suppressed by a compilation option. */ + UT e.f. support unless explicitely suppressed by a compilation option. */ #if (!defined(USE_EF_UT_TIME) && !defined(NO_EF_UT_TIME)) # define USE_EF_UT_TIME #endif diff -Nru unzip-6.0/tandem/tannsk.h unzip-6.0/tandem/tannsk.h --- unzip-6.0/tandem/tannsk.h 2002-02-06 02:16:44.000000000 +0000 +++ unzip-6.0/tandem/tannsk.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2002 Info-ZIP. All rights reserved. + Copyright (c) 1990-2000 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in zip.h) for terms of use. diff -Nru unzip-6.0/tandem/tanunz.c unzip-6.0/tandem/tanunz.c --- unzip-6.0/tandem/tanunz.c 2008-09-13 21:01:10.000000000 +0000 +++ unzip-6.0/tandem/tanunz.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2008 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. @@ -223,7 +223,7 @@ /* Function open_outfile() */ /***************************/ -int open_outfile(__G) /* return 1 if fail */ +int open_outfile(__G) /* return 1 if fail */ __GDEF { int fdesc; @@ -880,7 +880,7 @@ iztimes t3; /* mtime, atime, ctime */ ztimbuf t2; /* modtime, actime */ } zt; - ulg z_uidgid[2]; + ush z_uidgid[2]; unsigned eb_izux_flg; nsk_file_attrs *znsk_attr; short err; @@ -968,18 +968,13 @@ Not sure how (yet) or whether it's a good idea to set the last open time ---------------------------------------------------------------------------*/ - /* skip restoring time stamps on user's request */ - if (uO.D_flag <= 1) { - /* set the file's access and modification times */ - if (utime(G.filename, &(zt.t2))) - if (uO.qflag) - Info(slide, 0x201, ((char *)slide, - "warning: cannot set times for %s\n", - FnFilter1(G.filename))); - else - Info(slide, 0x201, ((char *)slide, - " (warning) cannot set times")); - } + if (utime(G.filename, &(zt.t2))) + if (uO.qflag) + Info(slide, 0x201, ((char *)slide, + "warning: cannot set times for %s\n", FnFilter1(G.filename))); + else + Info(slide, 0x201, ((char *)slide, + " (warning) cannot set times")); /*--------------------------------------------------------------------------- Change the file permissions from default ones to those stored in the @@ -1003,11 +998,11 @@ { if (uO.qflag) Info(slide, 0x201, ((char *)slide, - "warning: cannot set UID %lu and/or GID %lu for %s\n", + "warning: cannot set UID %d and/or GID %d for %s\n", z_uidgid[0], z_uidgid[1], FnFilter1(G.filename))); else Info(slide, 0x201, ((char *)slide, - " (warning) cannot set UID %lu and/or GID %lu", + " (warning) cannot set UID %d and/or GID %d", z_uidgid[0], z_uidgid[1])); } } diff -Nru unzip-6.0/theos/makefile unzip-6.0/theos/makefile --- unzip-6.0/theos/makefile 2006-12-25 20:06:32.000000000 +0000 +++ unzip-6.0/theos/makefile 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ #============================================================================== # Makefile for UnZip, UnZipSFX and fUnZip: Unix and MS-DOS ("real" makes only) -# Version: 5.53 25 December 2006 +# Version: 5.52 27 February 2005 #============================================================================== @@ -50,7 +50,7 @@ LF2 = -m # defaults for crc32 stuff and system dependent headers -CRCA_O = +CRC32 = crc32 OSDEP_H = # general-purpose stuff @@ -62,18 +62,18 @@ $(CC) $(CF) $*.c # object files -OBJS1 = unzip.o crc32.o $(CRCA_O) crypt.o envargs.o explode.o +OBJS1 = unzip.o $(CRC32).o crctab.o crypt.o envargs.o explode.o OBJS2 = extract.o fileio.o globals.o inflate.o list.o match.o -OBJS3 = process.o ttyio.o ubz2err.o unreduce.o unshrink.o zipinfo.o +OBJS3 = process.o ttyio.o unreduce.o unshrink.o zipinfo.o OBJS4 = _sprintf.o _fprintf.o _isatty.o _stat.o _setargv.o OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) theos.o #LOBJS = $(OBJS) LOBJS = $(OBJS1) $(OBJS2) $(OBJS3) theos.o -OBJX = unzipsfx.o crc32_.o $(CRCA_O) crypt_.o extract_.o fileio_.o \ - globals_.o inflate_.o match_.o process_.o ttyio_.o obz2err_.o theos_.o +OBJX = unzipsfx.o $(CRC32).o crctab_.o crypt_.o extract_.o fileio_.o \ + globals_.o inflate_.o match_.o process_.o ttyio_.o theos_.o LOBJX = $(OBJX) -OBJF = funzip.o crc32f.o $(CRCA_O) cryptf.o globalsf.o inflatef.o ttyiof.o \ - _sprintf.o _fprintf.o _isatty.o +OBJF = funzip.o $(CRC32).o cryptf.o globalsf.o inflatef.o ttyiof.o _sprintf.o \ + _fprintf.o _isatty.o UNZIP_H = unzip.h unzpriv.h globals.h $(OSDEP_H) EBCDIC_H = ebcdic.h theos/charconv.h @@ -82,73 +82,65 @@ unzips: $(UNZIPS) -crc32.o: crc32.c $(UNZIP_H) zip.h crc32.h -crypt.o: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crc32.o: crc32.c $(UNZIP_H) zip.h +crctab.o: crctab.c $(UNZIP_H) zip.h +crypt.o: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h envargs.o: envargs.c $(UNZIP_H) explode.o: explode.c $(UNZIP_H) -extract.o: extract.c $(UNZIP_H) crc32.h crypt.h -fileio.o: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h EBCDIC_H -funzip.o: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +extract.o: extract.c $(UNZIP_H) crypt.h +fileio.o: fileio.c $(UNZIP_H) crypt.h ttyio.h EBCDIC_H +funzip.o: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h globals.o: globals.c $(UNZIP_H) inflate.o: inflate.c inflate.h $(UNZIP_H) list.o: list.c $(UNZIP_H) match.o: match.c $(UNZIP_H) -process.o: process.c $(UNZIP_H) crc32.h +process.o: process.c $(UNZIP_H) ttyio.o: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err.o: ubz2err.c $(UNZIP_H) unreduce.o: unreduce.c $(UNZIP_H) unshrink.o: unshrink.c $(UNZIP_H) unzip.o: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h zipinfo.o: zipinfo.c $(UNZIP_H) -# unzipsfx only -crc32_.o: crc32.c $(UNZIP_H) zip.h crc32.h - $(CC) $(CF) -DSFX -Fo$@ crc32.c +crctab_.o: crctab.c $(UNZIP_H) zip.h # unzipsfx only + $(CC) $(CF) -DSFX -Fo$@ crctab.c -crypt_.o: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crypt_.o: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only $(CC) $(CF) -DSFX -Fo$@ crypt.c -extract_.o: extract.c $(UNZIP_H) crc32.h crypt.h +extract_.o: extract.c $(UNZIP_H) crypt.h # unzipsfx only $(CC) $(CF) -DSFX -Fo$@ extract.c -fileio_.o: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h EBCDIC_H +fileio_.o: fileio.c $(UNZIP_H) crypt.h ttyio.h EBCDIC_H # unzipsfx only $(CC) $(CF) -DSFX -Fo$@ fileio.c -globals_.o: globals.c $(UNZIP_H) +globals_.o: globals.c $(UNZIP_H) # unzipsfx only $(CC) $(CF) -DSFX -Fo$@ globals.c -inflate_.o: inflate.c inflate.h $(UNZIP_H) crypt.h +inflate_.o: inflate.c inflate.h $(UNZIP_H) crypt.h # unzipsfx only $(CC) $(CF) -DSFX -Fo$@ inflate.c -match_.o: match.c $(UNZIP_H) +match_.o: match.c $(UNZIP_H) # unzipsfx only $(CC) $(CF) -DSFX -Fo$@ match.c -process_.o: process.c $(UNZIP_H) crc32.h +process_.o: process.c $(UNZIP_H) # unzipsfx only $(CC) $(CF) -DSFX -Fo$@ process.c -ttyio_.o: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +ttyio_.o: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only $(CC) $(CF) -DSFX -Fo$@ ttyio.c -ubz2err_.o: ubz2err.c $(UNZIP_H) - $(CC) $(CF) -DSFX -Fo$@ ubz2err.c - -unzipsfx.o: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h +unzipsfx.o: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h # unzipsfx only $(CC) $(CF) -DSFX -Fo$@ unzip.c -# funzip only -crc32f.o: crc32.c $(UNZIP_H) zip.h crc32.h - $(CC) $(CF) -DFUNZIP -Fo$@ crc32.c - -cryptf.o: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +cryptf.o: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only $(CC) $(CF) -DFUNZIP -Fo$@ crypt.c -globalsf.o: globals.c $(UNZIP_H) +globalsf.o: globals.c $(UNZIP_H) # funzip only $(CC) $(CF) -DFUNZIP -Fo$@ globals.c -inflatef.o: inflate.c inflate.h $(UNZIP_H) crypt.h +inflatef.o: inflate.c inflate.h $(UNZIP_H) crypt.h # funzip only $(CC) $(CF) -DFUNZIP -Fo$@ inflate.c -ttyiof.o: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +ttyiof.o: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only $(CC) $(CF) -DFUNZIP -Fo$@ ttyio.c theos.o: theos/theos.c $(UNZIP_H) unzvers.h # THEOS only diff -Nru unzip-6.0/ToDo unzip-6.0/ToDo --- unzip-6.0/ToDo 2009-04-19 23:10:22.000000000 +0000 +++ unzip-6.0/ToDo 2010-05-14 07:26:14.000000000 +0000 @@ -1,102 +1,46 @@ ================================ -For UnZip 6.1/who knows: +For UnZip 6.0/6.1/who knows: ================================ - o add extraction support for other compression algorithms used by new - PKZIP, WinZIP, 7-Zip versions - - LZMA, compression type 14 (most important, because of its efficiency) - - PPMd, compression type 98 (maybe, less important) - - WavPacked, compression type 97 (maybe, less important) - - LZMA is first-level priority for 6.1, other formats may be taken - into consideration - - o add support for reading AES encrypted archives - - WinZIP format (priority 1) - - PKZip format (priority 2) - - top level item for 6.1 + o implement handling of file sizes beyond the 32-bit limit of + 2GByte (resp. 4GByte), using the new 64-bit extra field extensions + as defined by PKWARE (this will not get implemented for the present + 16-bit ports - plain DOS and OS/2 1.x) + + top of the list for 6.0! + UnZip 6.0 is now under development, first betas for Win32 and Unix + are available o add multi-part zipfile handling - major feature for 6.x! + major feature for 6.0! - could happen for 6.1 + could happen for 6.0 - 10/8/2004 EG o better support for multilingual uses and different codepages; support unicode (UTF-8 coded) filenames and comment texts a requested feature getting more and more important, - - partially done for the Windows port in 6.0 - (support restricted for chars of the current system codepage) - - partially done (beta state) for Unix - (requires native codepage to be UTF-8) - - o complete support for UTF-8 coded entry names (and comments) - - add new "win32_wide" port to extend unicode support on Windows - beyond the restrictions of the current (ANSI) system codepage - - revise/extend the WinDLL interface to allow passing of "wide" - string argument data - - add simple built-in character translation between UTF-8 and the - old (ISO-8851-1 / IBM850) code pages to allow old systems without - standard UTF-8 support to read UTF-8 encoded archives. - - extend the built-in translation tables to support other language - regions besides "Western_Latin1" (e.g. Russian-kyrillic, Japanese, - Chinese) - - streamline the multilingual codepage and UTF-8 support for the UNIX - port (standard codepage translation facility?, like WideChar<->AnsiCP - translation functions under MS Windows) - - should happen for 6.1 - (there is internal alpha-state code for better "wide" support on - Windows available at the time of the 6.0 release) - - o revise the "extended charcodes" handling in decryption password to - support UTF-8 encoding on Unicode-aware systems where the "native" - character coding is NOT UTF-8 (e.g. Windows). - - o revise the command line interface for more compatibility with Zip' - command parser - - implement the versatile command parser from Zip 3.0. - - add "long option" definitions for all existing options; revise - the UnZip user manual to document the long-option alternatives. - - add support for reading the "process these entries" and the "skip - these entries" pattern lists from a file (or from separate files ?). - - add a (long) option to switch off UnZip's internal pattern matching - on filename arguments. - - probably in 6.1, - (first prototype of the revised command parser was available at the - time of the 6.0 release) - - o add command line options for miscellaneous features requested by users - and/or development team members: - - display the Info-ZIP software license - - more fine-tuning for file attributes set/restored at extraction, like: - set/clear archive attribute on DOS/OS2/WIN32; - apply/skip standard or user-defined umask filter on UNIX (& Unix-alike) - - additional time-stamp related processing filters - - more listing display modifications - - overriding the default date-time display style - - ... - - All these options are of minor importance and/or would collide with - existing "one-character" options. The current UnZip maintainer does not - want to reserve any of the few not-yet-occupied short option characters. - for one of these features. So, any implementation effort for items - of this feature wish-list has to be delayed until the "long option" - support of the revised command line parser becomes available. - - some option may get implemented in 6.1 - - o support for - and/or development team members: + maybe in 6.1 o add new low-level, binary API; rewrite "normal" (command-line) UnZip to use it maybe soon (maybe 6.1) + o use (simple!) configure script in combination with Unix Makefile + + very soon (6.0 or 6.1) + + may be needed in 6.0 to autodetect large file support - 10/8/2004 EG + + o add precautions against extracting files outside the tree below + the current directory resp. the specified extraction folder. + (automatically remove absolute path specs from zip entries; emit + warnings when traversing outside the extraction tree...) + + done as of version 5.51 + o MSDOS/WIN32/others: detection of "reserved" names (= names of character devices, or system extensions that look like a characters device driver) at runtime; with the goal of emitting "meaningful" error messages and/or @@ -185,6 +129,15 @@ o miscellaneous little stuff: whenever -------------------------- + - add support for setting directory time stamps to win32 port. This requires + a solution similar to the UNIX SET_DIR_ATTRIB optional code; maybe, it could + be combined with the delayed restoring of directory ACLs. Unfortunately, + the simple version used in the OS/2 case (setting dir time stamp just after + creating the directory) does not work, because WinNT updates directory + change times whenever the directory content gets modified (addition, + deletion, rename, file change), at least for NTFS file systems. + (SPC, 2000-11-16) + - change DOS -f/-u stuff to use DOS API for getting filetimes, not stat() - add (-N?) option to lose all user input and/or switch to "(*input)()" diff -Nru unzip-6.0/tops20/make.mic unzip-6.0/tops20/make.mic --- unzip-6.0/tops20/make.mic 2005-12-30 19:46:42.000000000 +0000 +++ unzip-6.0/tops20/make.mic 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,7 @@ @te no pau e @cc -c -q unzip @cc -c -q crc32 +@cc -c -q crctab @cc -c -q crypt @cc -c -q envarg @cc -c -q explod @@ -16,5 +17,5 @@ @cc -c -q unshri @cc -c -q zipinf @cc -c -q tops20 -@cc -o unzip unzip.rel crc32.rel crypt.rel envarg.rel explod.rel extrac.rel fileio.rel global.rel inflat.rel match.rel proces.rel ttyio.rel unredu.rel unshri.rel zipinf.rel tops20.rel -ltmx +@cc -o unzip unzip.rel crc32.rel crctab.rel crypt.rel envarg.rel explod.rel extrac.rel fileio.rel global.rel inflat.rel match.rel proces.rel ttyio.rel unredu.rel unshri.rel zipinf.rel tops20.rel -ltmx @kmic diff -Nru unzip-6.0/tops20/tops20.c unzip-6.0/tops20/tops20.c --- unzip-6.0/tops20/tops20.c 2007-12-23 16:23:00.000000000 +0000 +++ unzip-6.0/tops20/tops20.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + Copyright (c) 1990-2004 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. @@ -100,79 +100,74 @@ struct tm *t; - /* skip restoring time stamps on user's request */ - if (uO.D_flag <= 1) { - - if (G.extra_field && + if (G.extra_field && #ifdef IZ_CHECK_TZ - G.tz_is_valid && + G.tz_is_valid && #endif - (ef_scan_for_izux(G.extra_field, G.lrec.extra_field_length, 0, - G.lrec.last_mod_dos_date, &z_utime, NULL) - & EB_UT_FL_MTIME)) - t = localtime(&(z_utime.mtime)); - else - t = (struct tm *)NULL; - - if (t != (struct tm *)NULL) - { - yr = t->tm_year + 1900; - mo = t->tm_mon; - dy = t->tm_mday; - hh = t->tm_hour; - mm = t->tm_min; - ss = t->tm_sec; - } - else - { - /* dissect the date */ - yr = ((G.lrec.last_mod_dos_date >> 9) & 0x7f) + 1980; - mo = ((G.lrec.last_mod_dos_date >> 5) & 0x0f) - 1; - dy = (G.lrec.last_mod_dos_date & 0x1f); - - /* dissect the time */ - hh = (G.lrec.last_mod_dos_time >> 11) & 0x1f; - mm = (G.lrec.last_mod_dos_time >> 5) & 0x3f; - ss = (G.lrec.last_mod_dos_time & 0x1f) * 2; - } -#else /* !USE_EF_UT_TIME */ - + (ef_scan_for_izux(G.extra_field, G.lrec.extra_field_length, 0, + G.lrec.last_mod_dos_date, &z_utime, NULL) + & EB_UT_FL_MTIME)) + t = localtime(&(z_utime.mtime)); + else + t = (struct tm *)NULL; + + if (t != (struct tm *)NULL) + { + yr = t->tm_year + 1900; + mo = t->tm_mon; + dy = t->tm_mday; + hh = t->tm_hour; + mm = t->tm_min; + ss = t->tm_sec; + } + else + { /* dissect the date */ - yr = ((G.lrec.last_mod_dos_datetime >> 25) & 0x7f) + (1980 - YRBASE); - mo = (G.lrec.last_mod_dos_datetime >> 21) & 0x0f; - dy = (G.lrec.last_mod_dos_datetime >> 16) & 0x1f; + yr = ((G.lrec.last_mod_dos_date >> 9) & 0x7f) + 1980; + mo = ((G.lrec.last_mod_dos_date >> 5) & 0x0f) - 1; + dy = (G.lrec.last_mod_dos_date & 0x1f); /* dissect the time */ - hh = (G.lrec.last_mod_dos_datetime >> 11) & 0x1f; - mm = (G.lrec.last_mod_dos_datetime >> 5) & 0x3f; - ss = (G.lrec.last_mod_dos_datetime << 1) & 0x1f; -#endif /* ?USE_EF_UT_TIME */ + hh = (G.lrec.last_mod_dos_time >> 11) & 0x1f; + mm = (G.lrec.last_mod_dos_time >> 5) & 0x3f; + ss = (G.lrec.last_mod_dos_time & 0x1f) * 2; + } +#else /* !USE_EF_UT_TIME */ - sprintf(temp, "%02d/%02d/%02d %02d:%02d:%02d", mo, dy, yr, hh, mm, ss); + /* dissect the date */ + yr = ((G.lrec.last_mod_dos_datetime >> 25) & 0x7f) + (1980 - YRBASE); + mo = (G.lrec.last_mod_dos_datetime >> 21) & 0x0f; + dy = (G.lrec.last_mod_dos_datetime >> 16) & 0x1f; + + /* dissect the time */ + hh = (G.lrec.last_mod_dos_datetime >> 11) & 0x1f; + mm = (G.lrec.last_mod_dos_datetime >> 5) & 0x3f; + ss = (G.lrec.last_mod_dos_datetime << 1) & 0x1f; +#endif /* ?USE_EF_UT_TIME */ - ablock[1] = (int)(temp - 1); - ablock[2] = 0; - if (!jsys(IDTIM, ablock)) { - Info(slide, 1, ((char *)slide, "error: IDTIM failure for %s\n", - G.filename)); - fclose(G.outfile); - return; - } + sprintf(temp, "%02d/%02d/%02d %02d:%02d:%02d", mo, dy, yr, hh, mm, ss); - tad = ablock[2]; - tblock[0] = tad; - tblock[1] = tad; - tblock[2] = -1; - - ablock[1] = fcntl(fileno(G.outfile), F_GETSYSFD, 0); - /* _uffd[outfd]->uf_ch */ - ablock[2] = (int) tblock; - ablock[3] = 3; - if (!jsys(SFTAD, ablock)) - Info(slide, 1,((char *)slide, - "error: cannot set the time for %s\n", G.filename)); + ablock[1] = (int)(temp - 1); + ablock[2] = 0; + if (!jsys(IDTIM, ablock)) { + Info(slide, 1, ((char *)slide, "error: IDTIM failure for %s\n", + G.filename)); + fclose(G.outfile); + return; + } - } /* if (uO.D_flag <= 1) */ + tad = ablock[2]; + tblock[0] = tad; + tblock[1] = tad; + tblock[2] = -1; + + ablock[1] = fcntl(fileno(G.outfile), F_GETSYSFD, 0); + /* _uffd[outfd]->uf_ch */ + ablock[2] = (int) tblock; + ablock[3] = 3; + if (!jsys(SFTAD, ablock)) + Info(slide, 1,((char *)slide, "error: cannot set the time for %s\n", + G.filename)); fclose(G.outfile); diff -Nru unzip-6.0/ttyio.c unzip-6.0/ttyio.c --- unzip-6.0/ttyio.c 2008-01-05 20:24:16.000000000 +0000 +++ unzip-6.0/ttyio.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2008 Info-ZIP. All rights reserved. + Copyright (c) 1990-2004 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in zip.h) for terms of use. @@ -117,11 +117,6 @@ # include # include # include - /* Workaround for broken header files of older DECC distributions - * that are incompatible with the /NAMES=AS_IS qualifier. */ -# define sys$assign SYS$ASSIGN -# define sys$dassgn SYS$DASSGN -# define sys$qiow SYS$QIOW # include # include # else /* !VMS */ diff -Nru unzip-6.0/unix/Contents unzip-6.0/unix/Contents --- unzip-6.0/unix/Contents 2005-10-02 16:50:42.000000000 +0000 +++ unzip-6.0/unix/Contents 2010-05-14 07:26:14.000000000 +0000 @@ -1,8 +1,7 @@ -Contents of the "unix" subdirectory for UnZip 6.0 and later: +Contents of the "unix" subdirectory for UnZip 5.3 and later: Contents this file Makefile makefile for UnZip for various architectures and OS's - configure automatic build configuration script unix.c Unix-specific support routines unxcfg.h Unix-specific configuration settings zipgrep script to scan zip archive entries for lines matching a pattern diff -Nru unzip-6.0/unix/Makefile unzip-6.0/unix/Makefile --- unzip-6.0/unix/Makefile 2009-01-18 22:41:18.000000000 +0000 +++ unzip-6.0/unix/Makefile 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ #============================================================================== # Makefile for UnZip, UnZipSFX and fUnZip: Unix and MS-DOS ("real" makes only) -# Version: 6.0 18 Jan 2009 +# Version: 5.52 04 Feb 2005 #============================================================================== @@ -45,21 +45,18 @@ CC = cc# try using "gcc" target rather than changing this (CC and LD LD = $(CC)# must match, else "unresolved symbol: ___main" is possible) AS = as -LOC = $(D_USE_BZ2) $(LOCAL_UNZIP) +LOC = $(LOCAL_UNZIP) AF = $(LOC) -CFLAGS = -O -CF_NOOPT = -I. -I$(IZ_BZIP2) -DUNIX $(LOC) -CF = $(CFLAGS) $(CF_NOOPT) -LFLAGS1 = -LF = -o unzip$E $(LFLAGS1) +CF = -O -I. -DUNIX $(LOC) +LF = -o unzip LF2 = -s # UnZipSFX flags -SL = -o unzipsfx$E $(LFLAGS1) +SL = -o unzipsfx SL2 = $(LF2) # fUnZip flags -FL = -o funzip$E $(LFLAGS1) +FL = -o funzip FL2 = $(LF2) # general-purpose stuff @@ -75,44 +72,28 @@ O = .o M = unix SHELL = /bin/sh -MAKEF = -f unix/Makefile # Version info for unix/unix.c HOST_VERSINFO=-DIZ_CC_NAME='\"\$$(CC) \"' -DIZ_OS_NAME='\"`uname -a`\"' # defaults for crc32 stuff and system dependent headers -CRCA_O = -OSDEP_H = unix/unxcfg.h -# default for dependency on auto-configure result, is an empty symbol -# so that the static non-autoconfigure targets continue to work -ACONF_DEP = - -# optional inclusion of bzip2 decompression -IZ_OUR_BZIP2_DIR = bzip2 -IZ_BZIP2 = $(IZ_OUR_BZIP2_DIR) -## The following symbols definitions need to be set to activate bzip2 support: -#D_USE_BZ2 = -DUSE_BZIP2 -#L_BZ2 = -lbz2 -#LIBBZ2 = $(IZ_BZIP2)/libbz2.a - -# defaults for unzip's "built-in" bzip2 library compilation -CC_BZ = $(CC) -CFLAGS_BZ = $(CFLAGS) +CRC32 = crc32 +OSDEP_H = # object files -OBJS1 = unzip$O crc32$O $(CRCA_O) crypt$O envargs$O explode$O +OBJS1 = unzip$O $(CRC32)$O crctab$O crypt$O envargs$O explode$O OBJS2 = extract$O fileio$O globals$O inflate$O list$O match$O -OBJS3 = process$O ttyio$O ubz2err$O unreduce$O unshrink$O zipinfo$O +OBJS3 = process$O ttyio$O unreduce$O unshrink$O zipinfo$O OBJS = $(OBJS1) $(OBJS2) $(OBJS3) $M$O LOBJS = $(OBJS) OBJSDLL = $(OBJS:.o=.pic.o) api.pic.o -OBJX = unzipsfx$O crc32_$O $(CRCA_O) crypt_$O extract_$O fileio_$O \ - globals_$O inflate_$O match_$O process_$O ttyio_$O ubz2err_$O $M_$O +OBJX = unzipsfx$O $(CRC32)$O crctab_$O crypt_$O extract_$O fileio_$O \ + globals_$O inflate_$O match_$O process_$O ttyio_$O $M_$O LOBJX = $(OBJX) -OBJF = funzip$O crc32$O $(CRCA_O) cryptf$O globalsf$O inflatef$O ttyiof$O +OBJF = funzip$O $(CRC32)$O cryptf$O globalsf$O inflatef$O ttyiof$O #OBJS_OS2 = $(OBJS1:.o=.obj) $(OBJS2:.o=.obj) os2.obj #OBJF_OS2 = $(OBJF:.o=.obj) -UNZIP_H = unzip.h unzpriv.h globals.h $(OSDEP_H) $(ACONF_DEP) +UNZIP_H = unzip.h unzpriv.h globals.h $(OSDEP_H) # installation # (probably can change next two to `install' and `install -d' if you have it) @@ -132,7 +113,7 @@ # Solaris 2.x stuff: PKGDIR = IZunzip -VERSION = Version 6.0 +VERSION = Version 5.52 UNZIPS = unzip$E funzip$E unzipsfx$E # this is a little ugly...well, OK, it's a lot ugly: @@ -140,8 +121,7 @@ DOCS = funzip.txt unzip.txt unzipsfx.txt zipgrep.txt zipinfo.txt # list of supported systems/targets in this version -SYSTEMG1 = generic generic_gcc generic_pkg generic_gccpkg -SYSTEMG2 = generic1 generic2 generic3 generic_bz2 generic_zlib generic_shlib +SYSTEMSG = generic generic2 generic3 generic_zlib generic_shlib SYSTEMS1 = 386i 3Bx 7300 7300_gcc aix aix_rt amdahl amdahl_eft apollo aviion SYSTEMS2 = bsd bsdi bsdi_noasm bull coherent convex cray cray_opt cyber_sgi SYSTEMS3 = cygwin dec dnix encore eta freebsd gcc gould hk68 hp hpux @@ -162,26 +142,32 @@ help: @echo "" - @echo " If you're not sure about the characteristics of your system, try typing" - @echo " \"make generic\". This is new and uses the configure script, though it is" - @echo " still being worked on." - @echo "" - @echo " If that does not do it, try the original generic which is \"make generic1\"." - @echo "" - @echo " If the compiler barfs and says something unpleasant about \"timezone redefined\"," - @echo " try typing \"make clean\" followed by \"make generic2\". If, on the other" - @echo " hand, it complains about an undefined symbol _ftime, try typing \"make clean\"" - @echo " followed by \"make generic3\"." - @echo "" - @echo " One of these actions should produce a working copy of unzip on most Unix" - @echo " systems. If you know a bit more about the machine on which you work, you" - @echo " might try \"make list\" for a list of the specific systems supported herein." - @echo " (Many of them do exactly the same thing, so don't agonize too much over" - @echo " which to pick if two or more sound equally likely.) Also check out the" - @echo " INSTALL file for notes on compiling various targets. As a last resort," - @echo " feel free to read the numerous comments within the Makefile itself." - @echo "" - @echo " Have a mostly pretty good day." + @echo\ + " If you're not sure about the characteristics of your system, try typing" + @echo\ + ' "make generic". If the compiler barfs and says something unpleasant about' + @echo\ + ' "timezone redefined," try typing "make clean" followed by "make generic2".' + @echo\ + ' If, on the other hand, it complains about an undefined symbol _ftime, try' + @echo\ + ' typing "make clean" followed by "make generic3". One of these actions' + @echo\ + ' should produce a working copy of unzip on most Unix systems. If you know' + @echo\ + ' a bit more about the machine on which you work, you might try "make list"' + @echo\ + ' for a list of the specific systems supported herein. (Many of them do' + @echo\ + " exactly the same thing, so don't agonize too much over which to pick if" + @echo\ + ' two or more sound equally likely.) Also check out the INSTALL file for' + @echo\ + ' notes on compiling various targets. As a last resort, feel free to read' + @echo\ + ' the numerous comments within the Makefile itself.' + @echo\ + ' Have a mostly pretty good day.' @echo "" list: @@ -189,8 +175,7 @@ @echo\ 'Type "make ", where is one of the following:' @echo "" - @echo " $(SYSTEMG1)" - @echo " $(SYSTEMG2)" + @echo " $(SYSTEMSG)" @echo "" @echo " $(SYSTEMS1)" @echo " $(SYSTEMS2)" @@ -252,19 +237,19 @@ # systems... funzip.txt: man/funzip.1 - nroff -Tascii -man man/funzip.1 | col -bx | uniq | expand > $@ + nroff -Tascii -man man/funzip.1 | col -b | uniq | expand > $@ unzip.txt: man/unzip.1 - nroff -Tascii -man man/unzip.1 | col -bx | uniq | expand > $@ + nroff -Tascii -man man/unzip.1 | col -b | uniq | expand > $@ unzipsfx.txt: man/unzipsfx.1 - nroff -Tascii -man man/unzipsfx.1 | col -bx | uniq | expand > $@ + nroff -Tascii -man man/unzipsfx.1 | col -b | uniq | expand > $@ zipgrep.txt: man/zipgrep.1 - nroff -Tascii -man man/zipgrep.1 | col -bx | uniq | expand > $@ + nroff -Tascii -man man/zipgrep.1 | col -b | uniq | expand > $@ zipinfo.txt: man/zipinfo.1 - nroff -Tascii -man man/zipinfo.1 | col -bx | uniq | expand > $@ + nroff -Tascii -man man/zipinfo.1 | col -b | uniq | expand > $@ all: generic_msg generic @@ -279,8 +264,8 @@ # EDIT HERE FOR PARALLEL MAKES on Sequent (and others?)--screws up MS-DOS # make utilities if default: change "unzip$E:" to "unzip$E:&" -unzip$E: $(OBJS) $(LIBBZ2) # add `&' for parallel makes - $(LD) $(LF) -L$(IZ_BZIP2) $(LOBJS) $(L_BZ2) $(LF2) +unzip$E: $(OBJS) # add `&' for parallel makes + $(LD) $(LF) $(LOBJS) $(LF2) unzipsfx$E: $(OBJX) # add `&' for parallel makes $(LD) $(SL) $(LOBJX) $(SL2) @@ -297,93 +282,109 @@ ' or else invoke as "unzip -Z" (in a batch file, for example).' $(LN) unzip$E zipinfo$E -# when the optional bzip2 support is provided (as recommended) by sources -# in the 'bzip2' subdirectory, create/update the library: -$(IZ_OUR_BZIP2_DIR)/libbz2.a: - @echo "Building/updating bzip2 object library..." - ( cd $(IZ_OUR_BZIP2_DIR) ; $(MAKE) -f Makebz2.iz CC="$(CC_BZ)"\ - CFLAGS="$(CFLAGS_BZ)" RM="rm -f" ) - -crc32$O: crc32.c $(UNZIP_H) zip.h crc32.h -crypt$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crc32$O: crc32.c $(UNZIP_H) zip.h +crctab$O: crctab.c $(UNZIP_H) zip.h +crypt$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h envargs$O: envargs.c $(UNZIP_H) explode$O: explode.c $(UNZIP_H) -extract$O: extract.c $(UNZIP_H) crc32.h crypt.h -fileio$O: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h -funzip$O: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +extract$O: extract.c $(UNZIP_H) crypt.h +fileio$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h +funzip$O: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h globals$O: globals.c $(UNZIP_H) inflate$O: inflate.c inflate.h $(UNZIP_H) list$O: list.c $(UNZIP_H) match$O: match.c $(UNZIP_H) -process$O: process.c $(UNZIP_H) crc32.h +process$O: process.c $(UNZIP_H) ttyio$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err$O: ubz2err.c $(UNZIP_H) unreduce$O: unreduce.c $(UNZIP_H) unshrink$O: unshrink.c $(UNZIP_H) unzip$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h zipinfo$O: zipinfo.c $(UNZIP_H) -# unzipsfx compilation section -unzipsfx$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h - $(CC) -c $(CF) -DSFX -o $@ unzip.c - -crc32_$O: crc32.c $(UNZIP_H) zip.h crc32.h - $(CC) -c $(CF) -DSFX -o $@ crc32.c - -crypt_$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h - $(CC) -c $(CF) -DSFX -o $@ crypt.c - -extract_$O: extract.c $(UNZIP_H) crc32.h crypt.h - $(CC) -c $(CF) -DSFX -o $@ extract.c - -fileio_$O: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h - $(CC) -c $(CF) -DSFX -o $@ fileio.c - -globals_$O: globals.c $(UNZIP_H) - $(CC) -c $(CF) -DSFX -o $@ globals.c - -inflate_$O: inflate.c inflate.h $(UNZIP_H) crypt.h - $(CC) -c $(CF) -DSFX -o $@ inflate.c - -match_$O: match.c $(UNZIP_H) - $(CC) -c $(CF) -DSFX -o $@ match.c - -process_$O: process.c $(UNZIP_H) crc32.h - $(CC) -c $(CF) -DSFX -o $@ process.c - -ttyio_$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h - $(CC) -c $(CF) -DSFX -o $@ ttyio.c - -ubz2err_$O: ubz2err.c $(UNZIP_H) - $(CC) -c $(CF) -DSFX -o $@ ubz2err.c - - -# funzip compilation section -cryptf$O: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h - $(CC) -c $(CF) -DFUNZIP -o $@ crypt.c - -globalsf$O: globals.c $(UNZIP_H) - $(CC) -c $(CF) -DFUNZIP -o $@ globals.c - -inflatef$O: inflate.c inflate.h $(UNZIP_H) crypt.h - $(CC) -c $(CF) -DFUNZIP -o $@ inflate.c - -ttyiof$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h - $(CC) -c $(CF) -DFUNZIP -o $@ ttyio.c +unzipsfx$O: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h # unzipsfx only + -$(CP) unzip.c unzipsfx.c + $(CC) -c $(CF) -DSFX unzipsfx.c + $(RM) unzipsfx.c + +crctab_$O: crctab.c $(UNZIP_H) zip.h + -$(CP) crctab.c crctab_.c + $(CC) -c $(CF) -DSFX crctab_.c + $(RM) crctab_.c + +crypt_$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only + -$(CP) crypt.c crypt_.c + $(CC) -c $(CF) -DSFX crypt_.c + $(RM) crypt_.c + +extract_$O: extract.c $(UNZIP_H) crypt.h # unzipsfx only + -$(CP) extract.c extract_.c + $(CC) -c $(CF) -DSFX extract_.c + $(RM) extract_.c + +fileio_$O: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h + -$(CP) fileio.c fileio_.c + $(CC) -c $(CF) -DSFX fileio_.c + $(RM) fileio_.c + +globals_$O: globals.c $(UNZIP_H) # unzipsfx only + -$(CP) globals.c globals_.c + $(CC) -c $(CF) -DSFX globals_.c + $(RM) globals_.c + +inflate_$O: inflate.c inflate.h $(UNZIP_H) crypt.h # unzipsfx only + -$(CP) inflate.c inflate_.c + $(CC) -c $(CF) -DSFX inflate_.c + $(RM) inflate_.c + +match_$O: match.c $(UNZIP_H) # unzipsfx only + -$(CP) match.c match_.c + $(CC) -c $(CF) -DSFX match_.c + $(RM) match_.c + +process_$O: process.c $(UNZIP_H) # unzipsfx only + -$(CP) process.c process_.c + $(CC) -c $(CF) -DSFX process_.c + $(RM) process_.c + +ttyio_$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only + -$(CP) ttyio.c ttyio_.c + $(CC) -c $(CF) -DSFX ttyio_.c + $(RM) ttyio_.c + + +cryptf$O: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only + -$(CP) crypt.c cryptf.c + $(CC) -c $(CF) -DFUNZIP cryptf.c + $(RM) cryptf.c + +globalsf$O: globals.c $(UNZIP_H) # funzip only + -$(CP) globals.c globalsf.c + $(CC) -c $(CF) -DFUNZIP globalsf.c + $(RM) globalsf.c + +inflatef$O: inflate.c inflate.h $(UNZIP_H) crypt.h # funzip only + -$(CP) inflate.c inflatef.c + $(CC) -c $(CF) -DFUNZIP inflatef.c + $(RM) inflatef.c + +ttyiof$O: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only + -$(CP) ttyio.c ttyiof.c + $(CC) -c $(CF) -DFUNZIP ttyiof.c + $(RM) ttyiof.c # optional assembler replacements crc_i86$O: msdos/crc_i86.asm # 16bit only $(AS) $(AF) msdos/crc_i86.asm $(ASEOL) -crc_gcc$O: crc_i386.S $(ACONF_DEP) # 32bit, GNU AS +crc_gcc$O: crc_i386.S # 32bit, GNU AS $(AS) $(AF) -x assembler-with-cpp -c -o $@ crc_i386.S -crc_gcc.pic.o: crc_i386.S $(ACONF_DEP) # 32bit, GNU AS +crc_gcc.pic.o: crc_i386.S # 32bit, GNU AS $(AS) $(AF) -x assembler-with-cpp -c -o $@ crc_i386.S -crc_sysv$O: crc_i386.S $(ACONF_DEP) # 32bit, SysV AS +crc_sysv$O: crc_i386.S # 32bit, SysV AS $(CC) -E $(AF) crc_i386.S > crc_i386s.s $(AS) -o $@ crc_i386s.s $(RM) crc_i386s.s @@ -403,7 +404,9 @@ $(CC) -c $(CF) unix/unix.c unix_$O: unix/unix.c $(UNZIP_H) # Unix unzipsfx - $(CC) -c $(CF) -DSFX -o $@ unix/unix.c + -$(CP) unix/unix.c unix_.c + $(CC) -c $(CF) -DSFX unix_.c + $(RM) unix_.c unix.pic.o: unix/unix.c $(UNZIP_H) unzvers.h # Unix shlib $(CC) -c $(CF) -o $@ unix/unix.c @@ -419,11 +422,9 @@ @echo "" @echo ' This is a Unix-specific target. (Just so you know.)' @echo "" - -( cd $(IZ_OUR_BZIP2_DIR); $(MAKE) -f Makebz2.iz RM="rm -f" clean ) rm -f $(UNZIPS) $(OBJS) $(OBJF) $(OBJX) api$O apihelp$O crc_gcc$O \ crc_sysv$O unzipstb$O crypt_.c extract_.c globals_.c inflate_.c \ ttyio_.c crc_i386s.s msdos_.c process_.c unix_.c unzipsfx.c - rm -f flags rm -rf ./$(PKGDIR) # Package generation interface (by J.Bush). Originally tested under Sun @@ -465,9 +466,6 @@ uninstall: $(RM) $(INSTALLEDBIN) $(INSTALLEDMAN) -# added 10/28/04 EG -flags: unix/configure - sh unix/configure "${CC}" "${CF_NOOPT}" "${IZ_BZIP2}" # the test zipfile TESTZIP = testmake.zip @@ -536,42 +534,16 @@ ################################ #---------------------------------------------------------------------------- -# Generic targets using the configure script to determine configuration. +# Generic targets (can't assume make utility groks "$(MAKE)") #---------------------------------------------------------------------------- -# Well, try MAKE and see. By now everyone may be happy. 10/28/04 EG -generic: flags # now try autoconfigure first - eval $(MAKE) $(MAKEF) unzips ACONF_DEP=flags `cat flags` -# make $(MAKEF) unzips CF="${CF} `cat flags`" - -generic_gcc: - $(MAKE) $(MAKEF) generic CC=gcc IZ_BZIP2="$(IZ_BZIP2)" - -# extensions to perform SVR4 package-creation after compilation -generic_pkg: generic svr4package -generic_gccpkg: generic_gcc svr4package - -#---------------------------------------------------------------------------- -# Old static generic targets (can't assume make utility groks "$(MAKE)") -#---------------------------------------------------------------------------- - -generic1: unzips # first try if unknown +generic: unzips # first try if unknown generic2: unix_make # second try if unknown: hope make is called "make" - make $(MAKEF) unzips CF="$(CF) -DBSD" + make -f unix/Makefile unzips CF="$(CF) -DBSD" generic3: unix_make # third try if unknown: hope make is called "make" - make $(MAKEF) unzips CF="$(CF) -DSYSV" - -# Generic build including bzip2 decompression support for unzip. -# Requires presence of the bzip2 sources in subdirectory bzip2. - -generic_bz2: unix_make - @echo\ - "This target assumes bzip2 sources are available in subfolder bzip2/." - $(MAKE) $(MAKEF) unzips D_USE_BZ2="-DUSE_BZIP2"\ - L_BZ2="-lbz2" LIBBZ2="$(IZ_OUR_BZIP2_DIR)/libbz2.a" \ - CC_BZ="$(CC)" CFLAGS_BZ="$(CFLAGS)" + make -f unix/Makefile unzips CF="$(CF) -DSYSV" # Generic unzip and funzip target using either shared or static zlib for # inflate rather than the original UnZip version. (libz was libgz prior @@ -594,7 +566,7 @@ @echo\ 'which is UnZip linked with the DLL). This target is an example only.' @echo "" - $(MAKE) objsdll CC=gcc CFLAGS="-O3 -Wall -fPIC -DDLL" + $(MAKE) objsdll CC=gcc CF="-O3 -Wall -I. -fPIC -DDLL -DUNIX $(LOC)" gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.4 $(OBJSDLL) $(RM) libunzip.so.0 libunzip.so $(LN) -s libunzip.so.0.4 libunzip.so.0 @@ -603,16 +575,6 @@ gcc -o unzip_shlib unzipstb.o -L. -lunzip #---------------------------------------------------------------------------- -# "Autoconfig" group, aliases for the generic targets using configure: -#---------------------------------------------------------------------------- - -# Solaris: generic, plus generation of installable package. -solaris_pkg: generic_pkg - -# Solaris: forcing usage of GCC, plus generation of installable package. -solaris_gccpkg: generic_gcc_pkg - -#---------------------------------------------------------------------------- # "Normal" group (BSD vs. SysV may be set in unzip.h via predefined macros): #---------------------------------------------------------------------------- @@ -660,6 +622,8 @@ aix_rt: _sysv # IBM RT 6150 under AIX 2.2.1 aviion: _sysv # Data General AViiONs, DG/UX 4.3x pyr_att: _sysv # Pyramids running AT&T (SysV) universe by default +solaris: _sysv # Sun SPARC & x86, Solaris 2.x +solaris_pkg: _sysvp # Sun SPARC & x86, Solaris 2.x; make package when done stardent: _sysv # Stardent ... sysv: _sysv # generic System V Unix (Xenix handled in unzip.h) xos: _sysv # Olivetti LSX-3005..3045, X/OS 2.3 and 2.4 @@ -678,8 +642,8 @@ v7: _v7 # generic Unix Version 7 box (prob. only Pixel...) _v7: - make $(MAKEF) unzips \ - CF="$(CF) -DV7 -DNO_PARAM_H -DSHORT_NAMES -DBSD -DZMEM -DNO_LCHOWN -DNO_LCHMOD" + make -f unix/Makefile unzips \ + CF="$(CF) -DV7 -DNO_PARAM_H -DSHORT_NAMES -DBSD -DZMEM" #---------------------------------------------------------------------------- # "Unique" group (require non-standard options): @@ -691,11 +655,11 @@ # AT&T 7300 (M68000/SysV.3) (add -DSYSV? -DNO_LIMITS?) 7300: unix_make - $(MAKE) unzips CF="$(CF) -DNO_DIR -DNO_MKDIR -DNO_STRNICMP -DNO_UID_GID -DNO_FCHMOD -DNO_LCHOWN -DNO_LCHMOD -DCBREAK=2" + $(MAKE) unzips CF="$(CF) -DNO_DIR -DNO_MKDIR -DNO_STRNICMP -DNO_UID_GID -DCBREAK=2" 7300_gcc: unix_make - $(MAKE) unzips CC=gcc LD=gcc LF2="" CFLAGS="-O2" \ - LOC="-DNO_DIR -DNO_MKDIR -DNO_STDLIB_H -DNO_STRNICMP -DNO_UID_GID -DNO_FCHMOD -DNO_LCHOWN -DNO_LCHMOD -DCBREAK=2 $(LOC)" + $(MAKE) unzips CC=gcc LD=gcc LF2="" \ + CF="-O2 -I. -DNO_DIR -DNO_MKDIR -DNO_STDLIB_H -DNO_STRNICMP -DNO_UID_GID -DCBREAK=2 $(LOC)" $(STRIP) $(UNZIPS) # IBM AIX 3.x on an RS/6000: see rs6000 target below @@ -703,43 +667,43 @@ # Amdahl (IBMish) mainframe, UTS (SysV) 1.2.4, 2.0.1, 3.x amdahl: unix_make - $(MAKE) unzips CF="$(CF) -DSYSV -DNO_UID_GID -DNO_LCHOWN -DNO_LCHMOD" + $(MAKE) unzips CF="$(CF) -DSYSV -DNO_UID_GID" # Amdahl UTS 2.1.4 with "extended file types" filesystem (aarrrggghhhh...) amdahl_eft: unix_make - $(MAKE) unzips CF="$(CF) -eft -DSYSV -DNO_UID_GID -DNO_LCHOWN -DNO_LCHMOD" + $(MAKE) unzips CF="$(CF) -eft -DSYSV -DNO_UID_GID" # Apollo Domain/OS machines (added -D...SOURCE options) [Gordon Fox, 960810] apollo: unix_make - $(MAKE) unzips CF="$(CF) -D_INCLUDE_BSD_SOURCE -D_INCLUDE_XOPEN_SOURCE -DNO_LCHOWN -DNO_LCHMOD" + $(MAKE) unzips CF="$(CF) -D_INCLUDE_BSD_SOURCE -D_INCLUDE_XOPEN_SOURCE" # BSDI BSD/OS on 386 platform, using the assembler replacement for crc32.c bsdi: unix_make @echo 'NOTE: use bsdi_noasm target for non-Intel BSD/OS compiles.' $(MAKE) unzips CC=gcc2 LD=shlicc2 AS=gcc2\ - CFLAGS="-O3 -Wall -DASM_CRC -DBSD" CRCA_O=crc_gcc$O + CF="-O3 -Wall -I. -DASM_CRC -DUNIX -DBSD $(LOC)" CRC32=crc_gcc # BSDI BSD/OS bsdi_noasm: unix_make # @echo 'NOTE: use bsd target for non-Intel BSD/OS compiles.' $(MAKE) unzips CC=gcc2 LD=shlicc2 AS=gcc2\ - CFLAGS="-O3 -Wall -DBSD" + CF="-O3 -Wall -I. -DUNIX -DBSD $(LOC)" # Coherent 3.x/4.x, Mark Williams C. ``For Coherent's CC, it needs either # -T0 or -T150000 (or bigger) added to the CFLAGS, otherwise the compiler # runs out of memory and dies in zipinfo.c.'' [Fred "Fredex" Smith, 940719] coherent: unix_make - $(MAKE) unzips CFLAGS="$(CFLAGS) -T0 -DNO_LCHOWN -DNO_LCHMOD" + $(MAKE) unzips CF="$(CF) -T0" # Cray-2, Y-MP or C90, running Unicos 5.x to 8.x (SysV + BSD enhancements) # and Standard (ANSI) C compiler 3.0 or later. cray_opt: unix_make - $(MAKE) unzips CFLAGS="$(CFLAGS) -h scalar3 -h vector3 -DNO_LCHOWN -DNO_LCHMOD" + $(MAKE) unzips CF="$(CF) -h scalar3 -h vector3" # The unzip41 build on a Cyber 910/SGI running Irix v3.3.3 was successful # with the following change to Makefile: cyber_sgi: unix_make - $(MAKE) unzips CFLAGS="$(CFLAGS) -I/usr/include/bsd -DNO_LCHOWN -DNO_LCHMOD"\ + $(MAKE) unzips CF="$(CF) -I/usr/include/bsd"\ LF="-lbsd $(LF)" SL="-lbsd $(SL)" # The Cygwin environment on a Win32 system, treated as an UNIX emulator. @@ -747,8 +711,8 @@ # Info-ZIP recommends using "win32/Makefile.gcc" instead. cygwin: unix_make $(MAKE) unzips CC=gcc LD=gcc AS=gcc\ - CFLAGS="-O3 -DASM_CRC -DNO_LCHOWN -DNO_LCHMOD"\ - AF="-Di386 $(AF)" CRCA_O=crc_gcc$O\ + CF="-O3 -I. -DUNIX -DASM_CRC $(LOC)"\ + AF="-Di386 $(AF)" CRC32=crc_gcc\ E=".exe" CP="cp" LN="ln -s" # 680x0, DIAB dnix 5.2/5.3 (a Swedish System V clone) @@ -758,14 +722,14 @@ # -X9 = warnings if a function is used without a declaration # dnix: unix_make - $(MAKE) unzips CFLAGS="$(CFLAGS) -X7 -X9 -DDNIX" + $(MAKE) unzips CF="$(CF) -X7 -X9 -DDNIX" # FreeBSD on Intel: freebsd: unix_make @echo 'NOTE: use bsd target for non-Intel FreeBSD compiles (if any).' $(MAKE) unzips CC=gcc LD=gcc AS=gcc\ - CFLAGS="-O3 -Wall -DASM_CRC -DBSD"\ - AF="-Di386 $(AF)" CRCA_O=crc_gcc$O + CF="-O3 -Wall -I. -DASM_CRC -DUNIX -DBSD $(LOC)"\ + AF="-Di386 $(AF)" CRC32=crc_gcc # Generic BSDish Unix gcc. ``The -O3 only works with later versions of gcc; # you may have to use -O2 or -O for earlier versions. I have no idea why @@ -775,32 +739,32 @@ # with "echo" instead). # gcc: unix_make - $(MAKE) unzips CC=gcc LD=gcc CFLAGS="-O3" LF2="" + $(MAKE) unzips CC=gcc LD=gcc CF="-O3 -I. $(LOC)" LF2="" $(STRIP) $(UNZIPS) # Heurikon HK68 (68010), UniPlus+ System V 5.0, Green Hills C-68000 hk68: unix_make $(MAKE) unzips CC="gcc" LD="gcc"\ LF="-n $(LF)" SL="-n $(SL)" FL="-n $(FL)"\ - CFLAGS="-ga -X138 -Dlocaltime=localti -Dtimezone=timezon" + CF="-ga -X138 -I. $(LOC) -Dlocaltime=localti -Dtimezone=timezon" # ISC Unix on 386 platform isc: unix_make - $(MAKE) unzips LF2="-lc_s $(LF2)" CRCA_O=crc_sysv$O \ - CFLAGS="-O" LOC="-DASM_CRC -DSYSV -DNO_UID_GID -DNEED_PTEM -DNO_LCHOWN -DNO_LCHMOD $(LOC)" \ + $(MAKE) unzips LF2="-lc_s $(LF2)" CRC32=crc_sysv \ + CF="-O -I. -DASM_CRC -DSYSV -DNO_UID_GID -DNEED_PTEM $(LOC)" \ AF="-DNO_UNDERLINE -Djecxz=jcxz -DALIGNMENT='.align 16' $(AF)" isc_gcc: unix_make - $(MAKE) unzips AS=gcc CC=gcc LD=gcc CRCA_O=crc_gcc$O \ - LF="-shlib $(LF)" SL="-shlib $(SL)" FL="-shlib $(FL)" LF2="" \ - CFLAGS="-O3" LOC="-DSYSV -DASM_CRC -DNO_UID_GID -DNEED_PTEM -DNO_LCHOWN -DNO_LCHMOD $(LOC)" \ + $(MAKE) unzips AS=gcc CC=gcc LD=gcc CRC32=crc_gcc LF="-shlib $(LF)" \ + SL="-shlib $(SL)" FL="-shlib $(FL)" \ + LF2="" CF="-O3 -I. -DSYSV -DASM_CRC -DNO_UID_GID -DNEED_PTEM $(LOC)" \ AF="-DNO_UNDERLINE -Djecxz=jcxz -DALIGNMENT='.align 16' $(AF)" $(STRIP) $(UNZIPS) # "ISI machine (68025 CPU)" (based on e-mail from Rob White ; # no further information). May also need DIRENT defined. isi: unix_make - $(MAKE) unzips CF="$(CF) -DDECLARE_ERRNO -DNO_LCHOWN -DNO_LCHMOD" + $(MAKE) unzips CF="$(CF) -DDECLARE_ERRNO" # Linux on 386 platform, using the assembler replacement for crc32.c. (-O4 and # -fno-strength-reduce have virtually no effect beyond -O3. Add "-m486 @@ -809,8 +773,8 @@ linux: unix_make @echo 'NOTE: use linux_noasm target for non-Intel Linux compiles.' $(MAKE) unzips CC=gcc LD=gcc AS=gcc\ - CFLAGS="-O3 -Wall -DASM_CRC"\ - AF="-Di386 $(AF)" CRCA_O=crc_gcc$O + CF="-O3 -Wall -I. -DASM_CRC $(LOC)"\ + AF="-Di386 $(AF)" CRC32=crc_gcc # GRR: this echo is pointless; if user gets this far, no difference to install # @echo 'Be sure to use the install_asm target rather than the install target' @@ -819,19 +783,18 @@ # Linux (Posix, approximately SysV): virtually any version since before 0.96, # for any platform. Change "-O" to "-O3" or whatever, as desired... linux_noasm: unix_make - $(MAKE) unzips CC=gcc LD=gcc CFLAGS="-O -Wall" + $(MAKE) unzips CC=gcc LD=gcc CF="-O -Wall -I. $(LOC)" # Linux with lcc compiler: __inline__ (stat.h) not recognized, and must edit # /usr/include/gnu/types.h to get rid of "long long" if __LCC__ defined. -O3 # (or -O2 or -O) is ignored. [GRR 960828: test target only] # linux_lcc: unix_make - $(MAKE) unzips CC=lcc LD=lcc CFLAGS="-O3 -Wall -D__inline__= " + $(MAKE) unzips CC=lcc LD=lcc CF="-O3 -Wall -I. -D__inline__= $(LOC)" # Linux host with go32 (djgpp) cross-compiler (go32crs.tgz) for 32-bit DOS. linux_dos: unix_make - $(MAKE) unzips CC=go32gcc LD=go32gcc M=msdos OSDEP_H="msdos/doscfg.h" \ - CFLAGS="-O2 -Wall" + $(MAKE) unzips CC=go32gcc LD=go32gcc M=msdos CF="-O2 -Wall -I. $(LOC)" # go32-strip unzip # Due to limitations of the cross-compiling package, this has to be # done manually: @@ -845,11 +808,11 @@ # library). # linux_shlib: unix_make - $(MAKE) objsdll CC=gcc CFLAGS="-O3 -Wall -fPIC"\ - LOC="-DDLL -DASM_CRC $(LOC)"\ - AS=gcc AF="-fPIC -Di386 $(AF)" CRCA_O=crc_gcc$O - gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.4 $(OBJSDLL)\ - crc_gcc.pic.o +# $(MAKE) objsdll CC=gcc CF="-O3 -Wall -I. -fPIC -DDLL $(LOC)" + $(MAKE) objsdll CC=gcc CF="-O3 -Wall -I. -fPIC -DDLL -DASM_CRC $(LOC)"\ + AS=gcc AF="-fPIC -Di386 $(AF)" CRC32=crc_gcc + ln -sf crc_gcc.pic.o crc32.pic.o + gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.4 $(OBJSDLL) ln -sf libunzip.so.0.4 libunzip.so.0 ln -sf libunzip.so.0 libunzip.so gcc -c -O unzipstb.c @@ -858,10 +821,11 @@ # Linux ELF shared library, as above, but using inflate() from zlib (libz.so) # instead of the original UnZip version. (libz was libgz prior to 0.94) linux_shlibz: unix_make - $(MAKE) objsdll CC=gcc AS=gcc AF="-fPIC -Di386 $(AF)" CRCA_O=crc_gcc$O\ - CFLAGS="-O3 -Wall -fPIC" LOC="-DDLL -DUSE_ZLIB -DASM_CRC $(LOC)" - gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.4 $(OBJSDLL)\ - crc_gcc.pic.o +# $(MAKE) objsdll CC=gcc CF="-O3 -Wall -I. -fPIC -DDLL -DUSE_ZLIB $(LOC)" + $(MAKE) objsdll CC=gcc AS=gcc AF="-fPIC -Di386 $(AF)" CRC32=crc_gcc\ + CF="-O3 -Wall -I. -fPIC -DDLL -DUSE_ZLIB -DASM_CRC $(LOC)" + ln -sf crc_gcc.pic.o crc32.pic.o + gcc -shared -Wl,-soname,libunzip.so.0 -o libunzip.so.0.4 $(OBJSDLL) ln -sf libunzip.so.0.4 libunzip.so.0 gcc -c -O unzipstb.c gcc -o unzip unzipstb.o -L. -lunzip -lz @@ -872,23 +836,23 @@ # Macintosh MacOS X (Unix-compatible enviroment), using standard compiler macosx: unix_make - $(MAKE) unzips CFLAGS="-O3 -Wall -DBSD" LF2="" + $(MAKE) unzips CF="-O3 -Wall -I. -DBSD -DUNIX $(LOC)" LF2="" $(STRIP) $(UNZIPS) # Macintosh MacOS X (Unix-compatible enviroment), using gcc macosx_gcc: unix_make - $(MAKE) unzips CC=gcc CFLAGS="-O3 -Wall -DBSD" LF2="" + $(MAKE) unzips CC=gcc CF="-O3 -Wall -I. -DBSD -DUNIX $(LOC)" LF2="" $(STRIP) $(UNZIPS) # Minix 1.5 PC for the 386. Invoke as is to use default cc, or as "make # minix CC=gcc" to use gcc. Try "make linux" if you have a working termios.h. minix: unix_make - $(MAKE) unzips CF="$(CF) -DMINIX -DSHORT_NAMES -DNO_LCHOWN -DNO_LCHMOD" CC=$(CC) LD=$(CC) + $(MAKE) unzips CF="$(CF) -DMINIX -DSHORT_NAMES" CC=$(CC) LD=$(CC) # MPE/iX, the Unix variant for HP 3000 systems. mpeix: unix_make $(MAKE) unzips CC=c89\ - CF="$(CF) -DUNIX -D_POSIX_SOURCE -DHAVE_TERMIOS_H -DPASSWD_FROM_STDIN -DNO_PARAM_H -DNO_LCHOWN -DNO_LCHMOD"\ + CF="$(CF) -DUNIX -D_POSIX_SOURCE -DHAVE_TERMIOS_H -DPASSWD_FROM_STDIN -DNO_PARAM_H"\ LF2=-lbsd CP=cp LN="ln -s" # NeXT info. @@ -914,33 +878,32 @@ # NeXT 3.x: as above, plus better optimization. next3x: unix_make - $(MAKE) unzips CFLAGS="-O2" LF2="-object -s" + $(MAKE) unzips CF="-O2 -I. $(LOC)" LF2="-object -s" # NeXT 3.1+: make the executable fat (multi-architecture binary [MAB], # for "black" [NeXT] and "white" [x86] hardware, so far). nextfat: unix_make - $(MAKE) unzips CFLAGS="-O2 -arch i386 -arch m68k" \ + $(MAKE) unzips CF="-O2 -I. $(LOC) -arch i386 -arch m68k" \ LF2="-arch i386 -arch m68k -object -s" # IBM OS/390 (formerly MVS) compiled under "OpenEdition" shell os390: unix_make set -x; \ - $(MAKE) $(MAKEF) unzips \ + $(MAKE) -f unix/Makefile unzips \ CC=c89 LD="\$$(CC) -Wl,EDIT=NO" \ CF="$(CF) -DSYSV -DUNIX -DOS390 -DEBCDIC -DNO_PARAM_H \ - -DNO_LCHOWN -DNO_LCHMOD \ -D_ALL_SOURCE $(HOST_VERSINFO)" LF2="" # Sequent Symmetry running Dynix/ptx (sort of SysV.3): needs to link # with libseq to get symlink(). ptx: unix_make - $(MAKE) unzips CF="$(CF) -DSYSV -DTERMIO -DPTX -DNO_LCHOWN -DNO_LCHMOD" LF2="$(LF2) -lseq" + $(MAKE) unzips CF="$(CF) -DSYSV -DTERMIO -DPTX" LF2="$(LF2) -lseq" # Pyramid 90X (probably all) under >= OSx4.1, either universe. (This is an # experimental target! If it fails, use either pyr_ucb or pyr_att instead.) # The make in the BSD half is too stupid to understand $(MAKE), sigh... pyramid: unix_make - -make $(MAKEF) pyr_`universe` + -make -f unix/Makefile pyr_`universe` # QNX/Neutrino is "special" because you don't have any native development # tools yet. Set ARCH to "x86", "ppcbe", "ppcle", "mipsbe", or "mipsle" @@ -950,17 +913,17 @@ @if [ "$(ARCH)" = "" ] ; then \ echo "You didn't set ARCH; I'll assume you meant ARCH=x86..." ; \ echo "" ; \ - $(MAKE) $(MAKEF) CC="qcc -Vgcc_ntox86" unzips ; \ + $(MAKE) -f unix/Makefile CC="qcc -Vgcc_ntox86" unzips ; \ else \ echo "Making unzip for $(ARCH)..." ; \ echo "" ; \ - $(MAKE) $(MAKEF) CC="qcc -Vgcc_nto$(ARCH)" unzips ; \ + $(MAKE) -f unix/Makefile CC="qcc -Vgcc_nto$(ARCH)" unzips ; \ fi # REGULUS: 68040-based, "real-time" SysV.3 mutant; uses gcc, with "REGULUS" # predefined. regulus: unix_make - $(MAKE) unzips CF="$(CF) -traditional -DSYSV -DNO_MKDIR -DNO_LCHOWN -DNO_LCHMOD" + $(MAKE) unzips CF="$(CF) -traditional -DSYSV -DNO_MKDIR" # IBM RS/6000 under AIX 3.2 rs6000: unix_make @@ -972,7 +935,7 @@ # recognize the -M0 flag that forces 8086 code.) (GRR: may need to reduce # stack to 0c00h if using 286/small-model code...?) sco_dos: unix_make - $(MAKE) unzips CFLAGS="-O -dos -M0" M=msdos OSDEP_H="msdos/doscfg.h" \ + $(MAKE) unzips CF="-O -I. $(LOC) -dos -M0" M=msdos \ LF="-dos -F 2000" LF2="-o unzip.exe" \ FL="-dos" FL2="-o funzip.exe" SL="-dos" SL2="-o unzipsfx.exe" @@ -985,33 +948,33 @@ # SCO Xenix/286 2.2.3 or later with development system 2.2.1 or later sco_x286: unix_make - $(MAKE) unzips CF="$(CF) -Mel2 -LARGE -DNO_MKDIR -DNO_LCHOWN -DNO_LCHMOD" \ + $(MAKE) unzips CF="$(CF) -Mel2 -LARGE -DNO_MKDIR" \ LF="$(LF) -Mel2 -LARGE -lx" SL="$(SL) -Mel2 -LARGE" \ FL="$(FL) -Mel2 -LARGE" # Sequent Symmetry with Dynix. (386, but needs -DZMEM) # This should also work on Balance but I can't test it just yet. sequent: unix_make - $(MAKE) unzips CF="$(CF) -DBSD -DZMEM -DNO_LCHOWN -DNO_LCHMOD" + $(MAKE) unzips CF="$(CF) -DBSD -DZMEM" # Sun 2, 3, 4 running SunOS 3.x sunos3: unix_make - $(MAKE) unzips CF="$(CF) -DNO_UID_GID -DUID_USHORT -DNO_LCHOWN -DNO_LCHMOD" + $(MAKE) unzips CF="$(CF) -DNO_UID_GID -DUID_USHORT" # Generic System V + GNU C sysv_gcc: unix_make - $(MAKE) unzips CC=gcc LD=gcc CFLAGS="-O2 -DSYSV" LF2="" + $(MAKE) unzips CC=gcc LD=gcc CF="-O2 -I. -DUNIX -DSYSV $(LOC)" LF2="" $(STRIP) $(UNZIPS) # AT&T 6300+, System V.2 Unix: run-time out-of-memory error if don't use -Ml; # also compile-time error if work arrays dimensioned at HSIZE+2 (>32K) sysv6300: unix_make - $(MAKE) unzips CF="$(CF) -Ml -DSYSV -DNO_LCHOWN -DNO_LCHMOD" LF="$(LF) -Ml"\ + $(MAKE) unzips CF="$(CF) -Ml -DSYSV" LF="$(LF) -Ml"\ SL="$(SL) -Ml" FL="$(FL) -Ml" # Texas Instruments System V.3 (running on HP 9000-1500) ti_sysv: unix_make - $(MAKE) unzips CF="$(CF) -DSYSV -DNO_UID_GID -DUID_USHORT -DNO_LCHOWN -DNO_LCHMOD" + $(MAKE) unzips CF="$(CF) -DSYSV -DNO_UID_GID -DUID_USHORT" # SCO Xenix (Joe Foster 950508: "unzip needs to be linked with -lx [for the # opendir(), readdir(), telldir(), rewinddir(), and closedir() calls]") diff -Nru unzip-6.0/unix/Packaging/prototype unzip-6.0/unix/Packaging/prototype --- unzip-6.0/unix/Packaging/prototype 2005-11-29 04:37:50.000000000 +0000 +++ unzip-6.0/unix/Packaging/prototype 2010-05-14 07:26:14.000000000 +0000 @@ -9,8 +9,7 @@ d none $PKG/doc 0755 root bin f none $PKG/doc/ZipPorts=proginfo/ZipPorts 0644 root bin f none $PKG/doc/CONTRIBS=proginfo/CONTRIBS 0644 root bin -f none $PKG/doc/COPYING.OLD=COPYING.OLD 0644 root bin -f none $PKG/doc/LICENSE=LICENSE 0644 root bin +f none $PKG/doc/COPYING=COPYING 0644 root bin f none $PKG/doc/README=README 0644 root bin f none $PKG/doc/WHERE=WHERE 0644 root bin f none $PKG/doc/INSTALL=INSTALL 0644 root bin diff -Nru unzip-6.0/unix/unix.c unzip-6.0/unix/unix.c --- unzip-6.0/unix/unix.c 2009-01-23 23:31:26.000000000 +0000 +++ unzip-6.0/unix/unix.c 2010-05-14 07:30:18.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -30,6 +30,9 @@ #define UNZIP_INTERNAL #include "unzip.h" +#include +#include + #ifdef SCO_XENIX # define SYSNDIR #else /* SCO Unix, AIX, DNIX, TI SysV, Coherent 4.x, ... */ @@ -81,7 +84,7 @@ } u; unsigned perms; /* same as min_info.file_attr */ int have_uidgid; /* flag */ - ulg uidgid[2]; + ush uidgid[2]; char fnbuf[1]; /* buffer stub for directory name */ } uxdirattr; #define UxAtt(d) ((uxdirattr *)d) /* typecast shortcut */ @@ -106,24 +109,6 @@ static unsigned filtattr OF((__GPRO__ unsigned perms)); -/*****************************/ -/* Strings used multiple */ -/* times in unix.c */ -/*****************************/ - -#ifndef MTS -/* messages of code for setting file/directory attributes */ -static ZCONST char CannotSetItemUidGid[] = - "warning: cannot set UID %lu and/or GID %lu for %s\n %s\n"; -static ZCONST char CannotSetUidGid[] = - " (warning) cannot set UID %lu and/or GID %lu\n %s"; -static ZCONST char CannotSetItemTimestamps[] = - "warning: cannot set modif./access times for %s\n %s\n"; -static ZCONST char CannotSetTimestamps[] = - " (warning) cannot set modif./access times\n %s"; -#endif /* !MTS */ - - #ifndef SFX #ifdef NO_DIR /* for AT&T 3B1 */ @@ -315,14 +300,14 @@ #ifndef S_ISGID # define S_ISGID 0002000 /* set group id on execution */ #endif -#ifndef S_ISVTX +#ifndef S_ISVTX # define S_ISVTX 0001000 /* save swapped text even after use */ #endif /************************/ /* Function filtattr() */ /************************/ -/* This is used to clear or keep the SUID and SGID bits on file permissions. +/* This is used to clear or keep the SUID and GID bits on file permissions. * It's possible that a file in an archive could have one of these bits set * and, unknown to the person unzipping, could allow others to execute the * file as the user or group. The new option -K bypasses this check. @@ -350,7 +335,6 @@ int mapattr(__G) __GDEF { - int r; ulg tmp = G.crec.external_file_attributes; G.pInfo->file_attr = 0; @@ -376,9 +360,10 @@ case BEOS_: case QDOS_: case TANDEM_: - r = FALSE; G.pInfo->file_attr = (unsigned)(tmp >> 16); - if (G.pInfo->file_attr == 0 && G.extra_field) { + if (G.pInfo->file_attr != 0 || !G.extra_field) { + return 0; + } else { /* Some (non-Info-ZIP) implementations of Zip for Unix and * VMS (and probably others ??) leave 0 in the upper 16-bit * part of the external_file_attributes field. Instead, they @@ -397,6 +382,7 @@ unsigned ebLen; uch *ef = G.extra_field; unsigned ef_len = G.crec.extra_field_length; + int r = FALSE; while (!r && ef_len >= EB_HEADSIZE) { ebID = makeword(ef); @@ -423,17 +409,8 @@ ef_len -= (ebLen + EB_HEADSIZE); ef += (ebLen + EB_HEADSIZE); } - } - if (!r) { -#ifdef SYMLINKS - /* Check if the file is a (POSIX-compatible) symbolic link. - * We restrict symlink support to those "made-by" hosts that - * are known to support symbolic links. - */ - G.pInfo->symlink = S_ISLNK(G.pInfo->file_attr) && - SYMLINK_HOST(G.pInfo->hostnum); -#endif - return 0; + if (!r) + return 0; } /* fall through! */ /* all remaining cases: expand MSDOS read-only bit into write perms */ @@ -462,19 +439,11 @@ } /* read-only bit --> write perms; subdir bit --> dir exec bit */ tmp = !(tmp & 1) << 1 | (tmp & 0x10) >> 4; - if ((G.pInfo->file_attr & 0700) == (unsigned)(0400 | tmp<<6)) { + if ((G.pInfo->file_attr & 0700) == (unsigned)(0400 | tmp<<6)) /* keep previous G.pInfo->file_attr setting, when its "owner" * part appears to be consistent with DOS attribute flags! */ -#ifdef SYMLINKS - /* Entries "made by FS_FAT_" could have been zipped on a - * system that supports POSIX-style symbolic links. - */ - G.pInfo->symlink = S_ISLNK(G.pInfo->file_attr) && - (G.pInfo->hostnum == FS_FAT_); -#endif return 0; - } G.pInfo->file_attr = (unsigned)(0444 | tmp<<6 | tmp<<3 | tmp); break; } /* end switch (host-OS-created-by) */ @@ -606,11 +575,8 @@ #endif default: - /* disable control character filter when requested, - * else allow 8-bit characters (e.g. UTF-8) in filenames: - */ - if (uO.cflxflag || - (isprint(workch) || (128 <= workch && workch <= 254))) + /* allow European characters in filenames: */ + if (isprint(workch) || (128 <= workch && workch <= 254)) *pp++ = (char)workch; } /* end switch */ @@ -639,25 +605,8 @@ FnFilter1(G.filename))); } #ifndef NO_CHMOD - /* Filter out security-relevant attributes bits. */ - G.pInfo->file_attr = filtattr(__G__ G.pInfo->file_attr); - /* When extracting non-UNIX directories or when extracting - * without UID/GID restoration or SGID preservation, any - * SGID flag inherited from the parent directory should be - * maintained to allow files extracted into this new folder - * to inherit the GID setting from the parent directory. - */ - if (G.pInfo->hostnum != UNIX_ || !(uO.X_flag || uO.K_flag)) { - /* preserve SGID bit when inherited from parent dir */ - if (!SSTAT(G.filename, &G.statbuf)) { - G.pInfo->file_attr |= G.statbuf.st_mode & S_ISGID; - } else { - perror("Could not read directory attributes"); - } - } - /* set approx. dir perms (make sure can still read/write in dir) */ - if (chmod(G.filename, G.pInfo->file_attr | 0700)) + if (chmod(G.filename, filtattr(__G__ G.pInfo->file_attr) | 0700)) perror("chmod (directory attributes) error"); #endif /* set dir time (note trailing '/') */ @@ -678,15 +627,6 @@ *lastsemi = '\0'; } - /* On UNIX (and compatible systems), "." and ".." are reserved for - * directory navigation and cannot be used as regular file names. - * These reserved one-dot and two-dot names are mapped to "_" and "__". - */ - if (strcmp(pathcomp, ".") == 0) - *pathcomp = '_'; - else if (strcmp(pathcomp, "..") == 0) - strcpy(pathcomp, "__"); - #ifdef ACORN_FTYPE_NFS /* translate Acorn filetype information if asked to do so */ if (uO.acorn_nfs_ext && @@ -817,11 +757,8 @@ if (mkdir(G.buildpath, 0777) == -1) { /* create the directory */ Info(slide, 1, ((char *)slide, "checkdir error: cannot create %s\n\ - %s\n\ unable to process %s.\n", - FnFilter2(G.buildpath), - strerror(errno), - FnFilter1(G.filename))); + FnFilter2(G.buildpath), FnFilter1(G.filename))); free(G.buildpath); /* path didn't exist, tried to create, failed */ return MPN_ERR_SKIP; @@ -965,9 +902,8 @@ * to create more than one level, but why really necessary?) */ if (mkdir(tmproot, 0777) == -1) { Info(slide, 1, ((char *)slide, - "checkdir: cannot create extraction directory: %s\n\ - %s\n", - FnFilter1(tmproot), strerror(errno))); + "checkdir: cannot create extraction directory: %s\n", + FnFilter1(tmproot))); free(tmproot); G.rootlen = 0; /* path didn't exist, tried to create, and failed: */ @@ -1039,12 +975,12 @@ #if (!defined(MTS) || defined(SET_DIR_ATTRIB)) -static int get_extattribs OF((__GPRO__ iztimes *pzt, ulg z_uidgid[2])); +static int get_extattribs OF((__GPRO__ iztimes *pzt, ush z_uidgid[2])); static int get_extattribs(__G__ pzt, z_uidgid) __GDEF iztimes *pzt; - ulg z_uidgid[2]; + ush z_uidgid[2]; { /*--------------------------------------------------------------------------- Convert from MSDOS-format local time and date to Unix-format 32-bit GMT @@ -1106,11 +1042,9 @@ iztimes t3; /* mtime, atime, ctime */ ztimbuf t2; /* modtime, actime */ } zt; - ulg z_uidgid[2]; + ush z_uidgid[2]; int have_uidgid_flg; - have_uidgid_flg = get_extattribs(__G__ &(zt.t3), z_uidgid); - /*--------------------------------------------------------------------------- If symbolic links are supported, allocate storage for a symlink control structure, put the uncompressed "data" and other required info in it, and @@ -1121,23 +1055,12 @@ #ifdef SYMLINKS if (G.symlnk) { - extent ucsize = (extent)G.lrec.ucsize; -# ifdef SET_SYMLINK_ATTRIBS - extent attribsize = sizeof(unsigned) + - (have_uidgid_flg ? sizeof(z_uidgid) : 0); -# else - extent attribsize = 0; -# endif - /* size of the symlink entry is the sum of - * (struct size (includes 1st '\0') + 1 additional trailing '\0'), - * system specific attribute data size (might be 0), - * and the lengths of name and link target. - */ - extent slnk_entrysize = (sizeof(slinkentry) + 1) + attribsize + - ucsize + strlen(G.filename); + unsigned ucsize = (unsigned)G.lrec.ucsize; + extent slnk_entrysize = sizeof(slinkentry) + ucsize + + strlen(G.filename); slinkentry *slnk_entry; - if (slnk_entrysize < ucsize) { + if ((unsigned)slnk_entrysize < ucsize) { Info(slide, 0x201, ((char *)slide, "warning: symbolic link (%s) failed: mem alloc overflow\n", FnFilter1(G.filename))); @@ -1154,21 +1077,15 @@ } slnk_entry->next = NULL; slnk_entry->targetlen = ucsize; - slnk_entry->attriblen = attribsize; -# ifdef SET_SYMLINK_ATTRIBS - memcpy(slnk_entry->buf, &(G.pInfo->file_attr), - sizeof(unsigned)); - if (have_uidgid_flg) - memcpy(slnk_entry->buf + 4, z_uidgid, sizeof(z_uidgid)); -# endif - slnk_entry->target = slnk_entry->buf + slnk_entry->attriblen; + slnk_entry->attriblen = 0; /* don't set attributes for symlinks */ + slnk_entry->target = slnk_entry->buf; slnk_entry->fname = slnk_entry->target + ucsize + 1; strcpy(slnk_entry->fname, G.filename); /* move back to the start of the file to re-read the "link data" */ rewind(G.outfile); - if (fread(slnk_entry->target, 1, ucsize, G.outfile) != ucsize) + if (fread(slnk_entry->target, 1, ucsize, G.outfile) != (int)ucsize) { Info(slide, 0x201, ((char *)slide, "warning: symbolic link (%s) failed\n", @@ -1200,36 +1117,32 @@ } #endif -#if (defined(NO_FCHOWN)) +#if (defined(NO_FCHOWN) || defined(NO_FCHMOD)) fclose(G.outfile); #endif + have_uidgid_flg = get_extattribs(__G__ &(zt.t3), z_uidgid); + /* if -X option was specified and we have UID/GID info, restore it */ - if (have_uidgid_flg - /* check that both uid and gid values fit into their data sizes */ - && ((ulg)(uid_t)(z_uidgid[0]) == z_uidgid[0]) - && ((ulg)(gid_t)(z_uidgid[1]) == z_uidgid[1])) { + if (have_uidgid_flg) { TTrace((stderr, "close_outfile: restoring Unix UID/GID info\n")); -#if (defined(NO_FCHOWN)) +#if (defined(NO_FCHOWN) || defined(NO_FCHMOD)) if (chown(G.filename, (uid_t)z_uidgid[0], (gid_t)z_uidgid[1])) #else if (fchown(fileno(G.outfile), (uid_t)z_uidgid[0], (gid_t)z_uidgid[1])) #endif { if (uO.qflag) - Info(slide, 0x201, ((char *)slide, CannotSetItemUidGid, - z_uidgid[0], z_uidgid[1], FnFilter1(G.filename), - strerror(errno))); + Info(slide, 0x201, ((char *)slide, + "warning: cannot set UID %d and/or GID %d for %s\n", + z_uidgid[0], z_uidgid[1], FnFilter1(G.filename))); else - Info(slide, 0x201, ((char *)slide, CannotSetUidGid, - z_uidgid[0], z_uidgid[1], strerror(errno))); + Info(slide, 0x201, ((char *)slide, + " (warning) cannot set UID %d and/or GID %d", + z_uidgid[0], z_uidgid[1])); } } -#if (!defined(NO_FCHOWN) && defined(NO_FCHMOD)) - fclose(G.outfile); -#endif - #if (!defined(NO_FCHOWN) && !defined(NO_FCHMOD)) /*--------------------------------------------------------------------------- Change the file permissions from default ones to those stored in the @@ -1237,22 +1150,27 @@ ---------------------------------------------------------------------------*/ if (fchmod(fileno(G.outfile), filtattr(__G__ G.pInfo->file_attr))) - perror("fchmod (file attributes) error"); + perror("chmod (file attributes) error"); fclose(G.outfile); #endif /* !NO_FCHOWN && !NO_FCHMOD */ - /* skip restoring time stamps on user's request */ - if (uO.D_flag <= 1) { - /* set the file's access and modification times */ - if (utime(G.filename, &(zt.t2))) { - if (uO.qflag) - Info(slide, 0x201, ((char *)slide, CannotSetItemTimestamps, - FnFilter1(G.filename), strerror(errno))); - else - Info(slide, 0x201, ((char *)slide, CannotSetTimestamps, - strerror(errno))); - } + /* set the file's access and modification times */ + if (utime(G.filename, &(zt.t2))) { +#ifdef AOS_VS + if (uO.qflag) + Info(slide, 0x201, ((char *)slide, "... cannot set time for %s\n", + FnFilter1(G.filename))); + else + Info(slide, 0x201, ((char *)slide, "... cannot set time")); +#else + if (uO.qflag) + Info(slide, 0x201, ((char *)slide, + "warning: cannot set times for %s\n", FnFilter1(G.filename))); + else + Info(slide, 0x201, ((char *)slide, + " (warning) cannot set times")); +#endif /* ?AOS_VS */ } #if (defined(NO_FCHOWN) || defined(NO_FCHMOD)) @@ -1272,52 +1190,15 @@ #endif /* !MTS */ -#if (defined(SYMLINKS) && defined(SET_SYMLINK_ATTRIBS)) -int set_symlnk_attribs(__G__ slnk_entry) - __GDEF - slinkentry *slnk_entry; -{ - if (slnk_entry->attriblen > 0) { -# if (!defined(NO_LCHOWN)) - if (slnk_entry->attriblen > sizeof(unsigned)) { - ulg *z_uidgid_p = (zvoid *)(slnk_entry->buf + sizeof(unsigned)); - /* check that both uid and gid values fit into their data sizes */ - if (((ulg)(uid_t)(z_uidgid_p[0]) == z_uidgid_p[0]) && - ((ulg)(gid_t)(z_uidgid_p[1]) == z_uidgid_p[1])) { - TTrace((stderr, - "set_symlnk_attribs: restoring Unix UID/GID info for\n\ - %s\n", - FnFilter1(slnk_entry->fname))); - if (lchown(slnk_entry->fname, - (uid_t)z_uidgid_p[0], (gid_t)z_uidgid_p[1])) - { - Info(slide, 0x201, ((char *)slide, CannotSetItemUidGid, - z_uidgid_p[0], z_uidgid_p[1], FnFilter1(slnk_entry->fname), - strerror(errno))); - } - } - } -# endif /* !NO_LCHOWN */ -# if (!defined(NO_LCHMOD)) - TTrace((stderr, - "set_symlnk_attribs: restoring Unix attributes for\n %s\n", - FnFilter1(slnk_entry->fname))); - if (lchmod(slnk_entry->fname, - filtattr(__G__ *(unsigned *)(zvoid *)slnk_entry->buf))) - perror("lchmod (file attributes) error"); -# endif /* !NO_LCHMOD */ - } - /* currently, no error propagation... */ - return PK_OK; -} /* end function set_symlnk_attribs() */ -#endif /* SYMLINKS && SET_SYMLINK_ATTRIBS */ - - #ifdef SET_DIR_ATTRIB /* messages of code for setting directory attributes */ +static ZCONST char Far DirlistUidGidFailed[] = + "warning: cannot set UID %d and/or GID %d for %s\n"; +static ZCONST char Far DirlistUtimeFailed[] = + "warning: cannot set modification, access times for %s\n"; # ifndef NO_CHMOD - static ZCONST char DirlistChmodFailed[] = - "warning: cannot set permissions for %s\n %s\n"; + static ZCONST char Far DirlistChmodFailed[] = + "warning: cannot set permissions for %s\n"; # endif @@ -1350,32 +1231,26 @@ int errval = PK_OK; if (UxAtt(d)->have_uidgid && - /* check that both uid and gid values fit into their data sizes */ - ((ulg)(uid_t)(UxAtt(d)->uidgid[0]) == UxAtt(d)->uidgid[0]) && - ((ulg)(gid_t)(UxAtt(d)->uidgid[1]) == UxAtt(d)->uidgid[1]) && chown(UxAtt(d)->fn, (uid_t)UxAtt(d)->uidgid[0], (gid_t)UxAtt(d)->uidgid[1])) { - Info(slide, 0x201, ((char *)slide, CannotSetItemUidGid, - UxAtt(d)->uidgid[0], UxAtt(d)->uidgid[1], FnFilter1(d->fn), - strerror(errno))); + Info(slide, 0x201, ((char *)slide, + LoadFarString(DirlistUidGidFailed), + UxAtt(d)->uidgid[0], UxAtt(d)->uidgid[1], FnFilter1(d->fn))); if (!errval) errval = PK_WARN; } - /* Skip restoring directory time stamps on user' request. */ - if (uO.D_flag <= 0) { - /* restore directory timestamps */ - if (utime(d->fn, &UxAtt(d)->u.t2)) { - Info(slide, 0x201, ((char *)slide, CannotSetItemTimestamps, - FnFilter1(d->fn), strerror(errno))); - if (!errval) - errval = PK_WARN; - } + if (utime(d->fn, &UxAtt(d)->u.t2)) { + Info(slide, 0x201, ((char *)slide, + LoadFarString(DirlistUtimeFailed), FnFilter1(d->fn))); + if (!errval) + errval = PK_WARN; } #ifndef NO_CHMOD - if (chmod(d->fn, UxAtt(d)->perms)) { - Info(slide, 0x201, ((char *)slide, DirlistChmodFailed, - FnFilter1(d->fn), strerror(errno))); + if (chmod(d->fn, filtattr(__G__ UxAtt(d)->perms))) { + Info(slide, 0x201, ((char *)slide, + LoadFarString(DirlistChmodFailed), FnFilter1(d->fn))); + /* perror("chmod (file attributes) error"); */ if (!errval) errval = PK_WARN; } @@ -1423,24 +1298,10 @@ char cc_namebuf[40]; char cc_versbuf[40]; #else -#if (defined(__SUNPRO_C)) - char cc_versbuf[17]; -#else -#if (defined(__HP_cc) || defined(__IBMC__)) - char cc_versbuf[25]; -#else -#if (defined(__DECC_VER)) - char cc_versbuf[17]; - int cc_verstyp; -#else #if (defined(CRAY) && defined(_RELEASE)) char cc_versbuf[40]; -#endif /* (CRAY && _RELEASE) */ -#endif /* __DECC_VER */ -#endif /* __HP_cc || __IBMC__ */ -#endif /* __SUNPRO_C */ -#endif /* (__GNUC__ && NX_CURRENT_COMPILER_RELEASE) */ - +#endif +#endif #if ((defined(CRAY) || defined(cray)) && defined(_UNICOS)) char os_namebuf[40]; #else @@ -1463,52 +1324,21 @@ "gcc ", __VERSION__, # endif #else -#if defined(__SUNPRO_C) - "Sun C ", (sprintf(cc_versbuf, "version %x", __SUNPRO_C), cc_versbuf), -#else -#if (defined(__HP_cc)) - "HP C ", - (((__HP_cc% 100) == 0) ? - (sprintf(cc_versbuf, "version A.%02d.%02d", - (__HP_cc/ 10000), ((__HP_cc% 10000)/ 100))) : - (sprintf(cc_versbuf, "version A.%02d.%02d.%02d", - (__HP_cc/ 10000), ((__HP_cc% 10000)/ 100), (__HP_cc% 100))), - cc_versbuf), -#else -#if (defined(__DECC_VER)) - "DEC C ", - (sprintf(cc_versbuf, "%c%d.%d-%03d", - ((cc_verstyp = (__DECC_VER / 10000) % 10) == 6 ? 'T' : - (cc_verstyp == 8 ? 'S' : 'V')), - __DECC_VER / 10000000, - (__DECC_VER % 10000000) / 100000, __DECC_VER % 1000), - cc_versbuf), -#else -#if defined(CRAY) && defined(_RELEASE) +# if defined(CRAY) && defined(_RELEASE) "cc ", (sprintf(cc_versbuf, "version %d", _RELEASE), cc_versbuf), -#else -#ifdef __IBMC__ - "IBM C ", - (sprintf(cc_versbuf, "version %d.%d.%d", - (__IBMC__ / 100), ((__IBMC__ / 10) % 10), (__IBMC__ % 10)), - cc_versbuf), -#else -#ifdef __VERSION__ +# else +# ifdef __VERSION__ # ifndef IZ_CC_NAME # define IZ_CC_NAME "cc " # endif IZ_CC_NAME, __VERSION__ -#else +# else # ifndef IZ_CC_NAME # define IZ_CC_NAME "cc" # endif IZ_CC_NAME, "", -#endif /* ?__VERSION__ */ -#endif /* ?__IBMC__ */ -#endif /* ?(CRAY && _RELEASE) */ -#endif /* ?__DECC_VER */ -#endif /* ?__HP_cc */ -#endif /* ?__SUNPRO_C */ +# endif +# endif #endif /* ?__GNUC__ */ #ifndef IZ_OS_NAME @@ -1539,7 +1369,7 @@ # endif #else #ifdef __hpux - " (HP-UX)", + " (HP/UX)", #else #ifdef __osf__ " (DEC OSF/1)", @@ -1657,23 +1487,7 @@ #ifdef Lynx " (LynxOS)", #else -#ifdef __APPLE__ -# ifdef __i386__ - " Mac OS X Intel i32", -# else -# ifdef __ppc__ - " Mac OS X PowerPC", -# else -# ifdef __ppc64__ - " Mac OS X PowerPC64", -# else - " Mac OS X", -# endif /* __ppc64__ */ -# endif /* __ppc__ */ -# endif /* __i386__ */ -#else "", -#endif /* Apple */ #endif /* Lynx */ #endif /* QNX Neutrino */ #endif /* QNX 4 */ @@ -1701,7 +1515,7 @@ #endif /* RT/AIX */ #endif /* AIX */ #endif /* OSF/1 */ -#endif /* HP-UX */ +#endif /* HP/UX */ #endif /* Sun */ #endif /* SGI */ @@ -1773,7 +1587,7 @@ static ulg LG(ulg val) { /* convert the big-endian unsigned long number `val' to the machine - * dependent representation + * dependant representation */ ush swapbuf[2]; @@ -1842,7 +1656,7 @@ else Info(slide, 0x201, ((char *)slide, "warning: invalid length in QZ field")); - if (jbp->header.d_type) + if(jbp->header.d_type) { dlen = jbp->header.d_datalen; } @@ -1850,9 +1664,9 @@ if ((long)LG(dlen) > 0) { - zfseeko(G.outfile, -8, SEEK_END); + fseek(G.outfile, -8, SEEK_END); fread(&ntc, 8, 1, G.outfile); - if (ntc.id != *(long *)"XTcc") + if(ntc.id != *(long *)"XTcc") { ntc.id = *(long *)"XTcc"; ntc.dlen = dlen; @@ -1874,3 +1688,90 @@ } } #endif /* QLZIP */ + + +typedef struct { + char *local_charset; + char *archive_charset; +} CHARSET_MAP; + +/* A mapping of local <-> archive charsets used by default to convert filenames + * of DOS/Windows Zip archives. Currently very basic. */ +static CHARSET_MAP dos_charset_map[] = { + { "ANSI_X3.4-1968", "CP850" }, + { "ISO-8859-1", "CP850" }, + { "CP1252", "CP850" }, + { "UTF-8", "CP866" }, + { "KOI8-R", "CP866" }, + { "KOI8-U", "CP866" }, + { "ISO-8859-5", "CP866" } +}; + +char OEM_CP[MAX_CP_NAME] = ""; +char ISO_CP[MAX_CP_NAME] = ""; + +/* Try to guess the default value of OEM_CP based on the current locale. + * ISO_CP is left alone for now. */ +void init_conversion_charsets() +{ + const char *local_charset; + int i; + + /* Make a guess only if OEM_CP not already set. */ + if(*OEM_CP == '\0') { + local_charset = nl_langinfo(CODESET); + for(i = 0; i < sizeof(dos_charset_map)/sizeof(CHARSET_MAP); i++) + if(!strcasecmp(local_charset, dos_charset_map[i].local_charset)) { + strncpy(OEM_CP, dos_charset_map[i].archive_charset, + sizeof(OEM_CP)); + break; + } + } +} + +/* Convert a string from one encoding to the current locale using iconv(). + * Be as non-intrusive as possible. If error is encountered during covertion + * just leave the string intact. */ +static void charset_to_intern(char *string, char *from_charset) +{ + iconv_t cd; + char *s,*d, *buf; + size_t slen, dlen, buflen; + const char *local_charset; + + if(*from_charset == '\0') + return; + + buf = NULL; + local_charset = nl_langinfo(CODESET); + + if((cd = iconv_open(local_charset, from_charset)) == (iconv_t)-1) + return; + + slen = strlen(string); + s = string; + dlen = buflen = 2*slen; + d = buf = malloc(buflen + 1); + if(!d) + goto cleanup; + bzero(buf,buflen); + if(iconv(cd, &s, &slen, &d, &dlen) == (size_t)-1) + goto cleanup; + strncpy(string, buf, buflen); + + cleanup: + free(buf); + iconv_close(cd); +} + +/* Convert a string from OEM_CP to the current locale charset. */ +inline void oem_intern(char *string) +{ + charset_to_intern(string, OEM_CP); +} + +/* Convert a string from ISO_CP to the current locale charset. */ +inline void iso_intern(char *string) +{ + charset_to_intern(string, ISO_CP); +} diff -Nru unzip-6.0/unix/unxcfg.h unzip-6.0/unix/unxcfg.h --- unzip-6.0/unix/unxcfg.h 2009-04-16 18:36:12.000000000 +0000 +++ unzip-6.0/unix/unxcfg.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -13,54 +13,9 @@ #ifndef __unxcfg_h #define __unxcfg_h - -/* LARGE FILE SUPPORT - 10/6/04 EG */ -/* This needs to be set before the includes so they set the right sizes */ - -#if (defined(NO_LARGE_FILE_SUPPORT) && defined(LARGE_FILE_SUPPORT)) -# undef LARGE_FILE_SUPPORT -#endif - -/* Automatically set ZIP64_SUPPORT if LFS */ -#ifdef LARGE_FILE_SUPPORT -# if (!defined(NO_ZIP64_SUPPORT) && !defined(ZIP64_SUPPORT)) -# define ZIP64_SUPPORT -# endif -#endif - -/* NO_ZIP64_SUPPORT takes preceedence over ZIP64_SUPPORT */ -#if defined(NO_ZIP64_SUPPORT) && defined(ZIP64_SUPPORT) -# undef ZIP64_SUPPORT -#endif - -#ifdef LARGE_FILE_SUPPORT - /* 64-bit Large File Support */ - - /* The following Large File Summit (LFS) defines turn on large file support - on Linux (probably 2.4 or later kernel) and many other unixen */ - - /* These have to be before any include that sets types so the large file - versions of the types are set in the includes */ - -# define _LARGEFILE_SOURCE /* some OSes need this for fseeko */ -# define _LARGEFILE64_SOURCE -# define _FILE_OFFSET_BITS 64 /* select default interface as 64 bit */ -# define _LARGE_FILES /* some OSes need this for 64-bit off_t */ -# define __USE_LARGEFILE64 -#endif /* LARGE_FILE_SUPPORT */ - - #include /* off_t, time_t, dev_t, ... */ #include - -#ifdef NO_OFF_T - typedef long zoff_t; -#else - typedef off_t zoff_t; -#endif -#define ZOFF_T_DEFINED -typedef struct stat z_stat; -#define Z_STAT_DEFINED +#include #ifndef COHERENT # include /* O_BINARY for open() w/o CR/LF translation */ @@ -126,10 +81,6 @@ # include # define GOT_UTIMBUF # endif -# if (!defined(GOT_UTIMBUF) && (defined(__hpux) || defined(__SUNPRO_C))) -# include -# define GOT_UTIMBUF -# endif # if (!defined(GOT_UTIMBUF) && defined(__GNU__)) # include # define GOT_UTIMBUF @@ -151,33 +102,6 @@ # define O_RDWR 2 #endif -#if defined(NO_UNICODE_SUPPORT) && defined(UNICODE_SUPPORT) - /* disable Unicode (UTF-8) support when requested */ -# undef UNICODE_SUPPORT -#endif - -#if (defined(_MBCS) && defined(NO_MBCS)) - /* disable MBCS support when requested */ -# undef _MBCS -#endif - -#if (!defined(NO_SETLOCALE) && !defined(_MBCS)) -# if (!defined(UNICODE_SUPPORT) || !defined(UTF8_MAYBE_NATIVE)) - /* enable setlocale here, unless this happens later for UTF-8 and/or - * MBCS support */ -# include -# ifndef SETLOCALE -# define SETLOCALE(category, locale) setlocale(category, locale) -# endif -# endif -#endif -#ifndef NO_SETLOCALE -# if (!defined(NO_WORKING_ISPRINT) && !defined(HAVE_WORKING_ISPRINT)) - /* enable "enhanced" unprintable chars detection in fnfilter() */ -# define HAVE_WORKING_ISPRINT -# endif -#endif - #ifdef MINIX # include #endif @@ -197,20 +121,11 @@ #define SCREENWIDTH 80 #define SCREENLWRAP 1 #define USE_EF_UT_TIME -#if (!defined(NO_LCHOWN) || !defined(NO_LCHMOD)) -# define SET_SYMLINK_ATTRIBS +#define SET_DIR_ATTRIB +#if (!defined(NOTIMESTAMP) && !defined(TIMESTAMP)) /* GRR 970513 */ +# define TIMESTAMP #endif -#ifdef MTS -# ifdef SET_DIR_ATTRIB -# undef SET_DIR_ATTRIB -# endif -#else /* !MTS */ -# define SET_DIR_ATTRIB -# if (!defined(NOTIMESTAMP) && !defined(TIMESTAMP)) /* GRR 970513 */ -# define TIMESTAMP -# endif -# define RESTORE_UIDGID -#endif /* ?MTS */ +#define RESTORE_UIDGID /* Static variables that we have to add to Uz_Globs: */ #define SYSTEM_SPECIFIC_GLOBALS \ @@ -227,4 +142,30 @@ /* wild_dir, dirname, wildname, matchname[], dirnamelen, have_dirname, */ /* and notfirstcall are used by do_wild(). */ + +#define MAX_CP_NAME 25 + +#ifdef SETLOCALE +# undef SETLOCALE +#endif +#define SETLOCALE(category, locale) setlocale(category, locale) +#include + +#ifdef _ISO_INTERN +# undef _ISO_INTERN +#endif +#define _ISO_INTERN(str1) iso_intern(str1) + +#ifdef _OEM_INTERN +# undef _OEM_INTERN +#endif +#ifndef IZ_OEM2ISO_ARRAY +# define IZ_OEM2ISO_ARRAY +#endif +#define _OEM_INTERN(str1) oem_intern(str1) + +void iso_intern(char *); +void oem_intern(char *); +void init_conversion_charsets(void); + #endif /* !__unxcfg_h */ diff -Nru unzip-6.0/unix/zipgrep unzip-6.0/unix/zipgrep --- unzip-6.0/unix/zipgrep 2008-10-10 17:40:36.000000000 +0000 +++ unzip-6.0/unix/zipgrep 2010-05-14 07:26:14.000000000 +0000 @@ -1,13 +1,6 @@ -#!/bin/sh -# -# zipgrep: Use unzip and egrep to search the specified members of a -# Zip archive for a string or pattern. Search all members if no members -# are specified explicitly. The script attempts to handle egrep's "-h" -# and "-l" options internally. -# -# This script assumes that the desired "unzip" and "egrep" (and "sed") -# programs are on the user's PATH. -# +#! /bin/sh +# zipgrep: searches the given zip members for a string or pattern +# This shell script assumes that you have installed UnZip. pat="" opt="" @@ -25,8 +18,8 @@ done if test $# = 0; then - echo usage: `basename "$0"` "[egrep_options] pattern zipfile [members...]" - echo Uses unzip and egrep to search the zip members for a string or pattern. + echo "usage: `basename $0` [egrep_options] pattern zipfile [members...]" + echo searches the given zip members for a string or pattern exit 1 fi zipfile="$1"; shift @@ -44,62 +37,22 @@ opt="-$opt" fi -status_grep_global=1 +res=0 IFS=' ' - -# Escape shell-special characters in "pat". -pat=` echo "$pat" | \ - sed -e 's/\\\\/\\\\\\\\/g' -e 's/|/\\\|/g' -e 's/&/\\\&/g' ` - -# Use "unzip -Z1" to get a listing of the specified members from the -# specified archive. Escape any backslashes in a file name. -for i in `unzip -Z1 "$zipfile" ${1+"$@"} | sed -e 's/\\\\/\\\\\\\\/g' `; do +for i in `unzip -Z1 "$zipfile" ${1+"$@"}`; do if test $list -eq 1; then - # "-l": Show only the archive member name, not the matching line(s). - unzip -p-L "$zipfile" "$i" | \ - egrep $opt "$pat" > /dev/null && echo "$i" - status_grep=$? - elif test $silent -eq 1; then - # "-h": Show only the matching line(s), not the archive member name. - # ("-s" in "opt" will silence "egrep", stopping all output.) - unzip -p-L "$zipfile" "$i" | \ - egrep $opt "$pat" - status_grep=$? - else - # Escape (or re-escape) shell-special characters in the archive - # member name, "i". - i=` echo "$i" | \ - sed -e 's/\\\\/\\\\\\\\/g' -e 's/|/\\\|/g' -e 's/&/\\\&/g' ` - - # Globally, send fd 4 to stdout. In the pipeline, send normal - # stdout to fd 4, and send grep status to fd 3. Collect fd 3 - # with ``. - exec 4>&1 - status_grep=` ( \ - ( unzip -p-L "$zipfile" "$i" | \ - egrep $opt "$pat" 1>&4 ; echo $? >&3 ) 4>&1 | \ - sed "s|^|${i}:|" 1>&4 \ - ) 3>&1 ` - fi - - # Save the primary command status. (May be the grep status.) - sts=$? - # If this grep status was zero, set the global grep status to zero. - test "$status_grep" -eq 0 && status_grep_global=0 - # If this grep status was not zero or one, exit now. - test "$status_grep" -gt 1 && exit "$status_grep" -done + unzip -p-L "$zipfile" "$i" | egrep $opt "$pat" > /dev/null && echo $i + r=$? + elif test $silent -eq 1; then -# If "sts" is good (0), then exit with the global grep status. -# Else, when "sts" is bad, exit with the worst status we can find. -if test $sts -eq 0 ; then - exit $status_grep_global -else - if test "$status_grep" -gt 1 ; then - exit "$status_grep" + unzip -p-L "$zipfile" "$i" | egrep $opt "$pat" + r=$? else - exit $sts + unzip -p-L "$zipfile" "$i" | egrep $opt "$pat" | sed "s|^|${i}:|" + r=$? fi -fi + test "$r" -ne 0 && res="$r" +done +exit $res diff -Nru unzip-6.0/unzip.c unzip-6.0/unzip.c --- unzip-6.0/unzip.c 2009-04-16 18:26:52.000000000 +0000 +++ unzip-6.0/unzip.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -23,10 +23,6 @@ the many (near infinite) contributors, see "CONTRIBS" in the UnZip source distribution. - UnZip 6.0 adds support for archives larger than 4 GiB using the Zip64 - extensions as well as support for Unicode information embedded per the - latest zip standard additions. - --------------------------------------------------------------------------- [from original zipinfo.c] @@ -93,7 +89,6 @@ int signal_type, void (*newhandler)(int))); #endif #ifndef SFX -static void help_extended OF((__GPRO)); static void show_version_info OF((__GPRO)); #endif @@ -116,11 +111,9 @@ #ifdef RISCOS static ZCONST char Far EnvUnZipExts[] = ENV_UNZIPEXTS; #endif /* RISCOS */ - static ZCONST char Far NoMemEnvArguments[] = + static ZCONST char Far NoMemArguments[] = "envargs: cannot get memory for arguments"; #endif /* !_WIN32_WCE */ - static ZCONST char Far CmdLineParamTooLong[] = - "error: command line parameter #%d exceeds internal size limit\n"; #endif /* !SFX */ #if (defined(REENTRANT) && !defined(NO_EXCEPT_SIGNALS)) @@ -136,10 +129,6 @@ static ZCONST char Far OnlyOneExdir[] = "error: -d option used more than once (only one exdir allowed)\n"; #endif -#if (defined(UNICODE_SUPPORT) && !defined(UNICODE_WCHAR)) - static ZCONST char Far UTF8EscapeUnSupp[] = - "warning: -U \"escape all non-ASCII UTF-8 chars\" is not supported\n"; -#endif #if CRYPT static ZCONST char Far MustGivePasswd[] = @@ -182,12 +171,12 @@ #endif /* ?VMS */ /* local1[]: command options */ -#if defined(TIMESTAMP) +#if (defined(DLL) && defined(API_DOC)) static ZCONST char Far local1[] = - " -T timestamp archive to latest"; -#else /* !TIMESTAMP */ + " -A print extended help for API functions"; +#else /* !(DLL && API_DOC) */ static ZCONST char Far local1[] = ""; -#endif /* ?TIMESTAMP */ +#endif /* ?(DLL && API_DOC) */ /* local2[] and local3[]: modifier options */ #ifdef DOS_FLX_H68_OS2_W32 @@ -239,19 +228,12 @@ #endif /* ?OS2 || ?WIN32 */ #else /* !DOS_FLX_OS2_W32 */ #ifdef VMS - static ZCONST char Far local2[] = " -X restore owner/ACL protection info"; + static ZCONST char Far local2[] = "\"-X\" restore owner/protection info"; #ifdef MORE - static ZCONST char Far local3[] = "\ - -Y treat \".nnn\" as \";nnn\" version -2 force ODS2 names\n\ - --D restore dir (-D: no) timestamps -M pipe through \"more\" pager\n\ - (Must quote upper-case options, like \"-V\", unless SET PROC/PARSE=EXTEND.)\ -\n\n"; + static ZCONST char Far local3[] = " \ + \"-M\" pipe through \"more\" pager\n"; #else - static ZCONST char Far local3[] = "\n\ - -Y treat \".nnn\" as \";nnn\" version -2 force ODS2 names\n\ - --D restore dir (-D: no) timestamps\n\ - (Must quote upper-case options, like \"-V\", unless SET PROC/PARSE=EXTEND.)\ -\n\n"; + static ZCONST char Far local3[] = "\n"; #endif #else /* !VMS */ #ifdef ATH_BEO_UNX @@ -327,14 +309,29 @@ -2 just filenames but allow -h/-t/-z -l long Unix \"ls -l\" format\n\ -v verbose, multi-page format\n"; +#ifndef UNIX static ZCONST char Far ZipInfoUsageLine3[] = "miscellaneous options:\n\ -h print header line -t print totals for listed files or for all\n\ - -z print zipfile comment -T print file times in sortable decimal format\ -\n -C be case-insensitive %s\ + -z print zipfile comment %c-T%c print file times in sortable decimal format\ +\n %c-C%c be case-insensitive %s\ -x exclude filenames that follow from listing\n"; +#else /* UNIX */ +static ZCONST char Far ZipInfoUsageLine3[] = "miscellaneous options:\n\ + -h print header line -t print totals for listed files or for all\n\ + -z print zipfile comment %c-T%c print file times in sortable decimal format\ +\n %c-C%c be case-insensitive %s\ + -x exclude filenames that follow from listing\n\ + -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives\n\ + -I CHARSET specify a character encoding for UNIX and other archives\n"; +#endif /* !UNIX */ #ifdef MORE +#ifdef VMS + static ZCONST char Far ZipInfoUsageLine4[] = + " \"-M\" page output through built-in \"more\"\n"; +#else static ZCONST char Far ZipInfoUsageLine4[] = " -M page output through built-in \"more\"\n"; +#endif #else /* !MORE */ static ZCONST char Far ZipInfoUsageLine4[] = ""; #endif /* ?MORE */ @@ -369,11 +366,11 @@ #else /* !SFX */ static ZCONST char Far CompileOptions[] = "UnZip special compilation options:\n"; - static ZCONST char Far CompileOptFormat[] = " %s\n"; + static ZCONST char Far CompileOptFormat[] = "\t%s\n"; #ifndef _WIN32_WCE /* Win CE does not support environment variables */ static ZCONST char Far EnvOptions[] = "\nUnZip and ZipInfo environment options:\n"; - static ZCONST char Far EnvOptFormat[] = "%16s: %.1024s\n"; + static ZCONST char Far EnvOptFormat[] = "%16s: %s\n"; #endif static ZCONST char Far None[] = "[none]"; # ifdef ACORN_FTYPE_NFS @@ -442,10 +439,6 @@ # ifdef SET_DIR_ATTRIB static ZCONST char Far SetDirAttrib[] = "SET_DIR_ATTRIB"; # endif -# ifdef SYMLINKS - static ZCONST char Far SymLinkSupport[] = - "SYMLINKS (symbolic links supported, if RTL and file system permit)"; -# endif # ifdef TIMESTAMP static ZCONST char Far TimeStamp[] = "TIMESTAMP"; # endif @@ -467,41 +460,10 @@ static ZCONST char Far Use_Deflate64[] = "USE_DEFLATE64 (PKZIP 4.x Deflate64(tm) supported)"; # endif -# ifdef UNICODE_SUPPORT -# ifdef UTF8_MAYBE_NATIVE -# ifdef UNICODE_WCHAR - /* direct native UTF-8 check AND charset transform via wchar_t */ - static ZCONST char Far Use_Unicode[] = - "UNICODE_SUPPORT [wide-chars, char coding: %s] (handle UTF-8 paths)"; -# else - /* direct native UTF-8 check, only */ - static ZCONST char Far Use_Unicode[] = - "UNICODE_SUPPORT [char coding: %s] (handle UTF-8 paths)"; -# endif - static ZCONST char Far SysChUTF8[] = "UTF-8"; - static ZCONST char Far SysChOther[] = "other"; -# else /* !UTF8_MAYBE_NATIVE */ - /* charset transform via wchar_t, no native UTF-8 support */ - static ZCONST char Far Use_Unicode[] = - "UNICODE_SUPPORT [wide-chars] (handle UTF-8 paths)"; -# endif /* ?UTF8_MAYBE_NATIVE */ -# endif /* UNICODE_SUPPORT */ -# ifdef _MBCS - static ZCONST char Far Have_MBCS_Support[] = - "MBCS-support (multibyte character support, MB_CUR_MAX = %u)"; -# endif # ifdef MULT_VOLUME static ZCONST char Far Use_MultiVol[] = "MULT_VOLUME (multi-volume archives supported)"; # endif -# ifdef LARGE_FILE_SUPPORT - static ZCONST char Far Use_LFS[] = - "LARGE_FILE_SUPPORT (large files over 2 GiB supported)"; -# endif -# ifdef ZIP64_SUPPORT - static ZCONST char Far Use_Zip64[] = - "ZIP64_SUPPORT (archives using Zip64 for large files supported)"; -# endif # if (defined(__DJGPP__) && (__DJGPP__ >= 2)) # ifdef USE_DJGPP_ENV static ZCONST char Far Use_DJGPP_Env[] = "USE_DJGPP_ENV"; @@ -517,10 +479,6 @@ static ZCONST char Far UseZlib[] = "USE_ZLIB (compiled with version %s; using version %s)"; # endif -# ifdef USE_BZIP2 - static ZCONST char Far UseBZip2[] = - "USE_BZIP2 (PKZIP 4.6+, using bzip2 lib version %s)"; -# endif # ifdef VMS_TEXT_CONV static ZCONST char Far VmsTextConv[] = "VMS_TEXT_CONV"; # endif @@ -538,7 +496,7 @@ static ZCONST char Far PasswdStdin[] = "PASSWD_FROM_STDIN"; # endif static ZCONST char Far Decryption[] = - " [decryption, version %d.%d%s of %s]\n"; + "\t[decryption, version %d.%d%s of %s]\n"; static ZCONST char Far CryptDate[] = CR_VERSION_DATE; # endif # ifndef __RSXNT__ @@ -570,8 +528,7 @@ #else /* !VMS */ # ifdef COPYRIGHT_CLEAN static ZCONST char Far UnzipUsageLine1[] = "\ -UnZip %d.%d%d%s of %s, by Info-ZIP. Maintained by C. Spieler. Send\n\ -bug reports using http://www.info-zip.org/zip-bug.html; see README for details.\ +UnZip %d.%d%d%s of %s, by Ubuntu. Original by Info-ZIP.\ \n\n"; # else static ZCONST char Far UnzipUsageLine1[] = "\ @@ -612,8 +569,13 @@ "(ZipInfo mode is disabled in this version.)"; #else # define ZIPINFO_MODE_OPTION "[-Z] " - static ZCONST char Far ZipInfoMode[] = - "-Z => ZipInfo mode (\"unzip -Z\" for usage)."; +# ifdef VMS + static ZCONST char Far ZipInfoMode[] = + "\"-Z\" => ZipInfo mode (`unzip \"-Z\"' for usage)."; +# else + static ZCONST char Far ZipInfoMode[] = + "-Z => ZipInfo mode (\"unzip -Z\" for usage)."; +# endif #endif /* ?NO_ZIPINFO */ #ifdef VMS @@ -626,78 +588,48 @@ static ZCONST char Far UnzipUsageLine3[] = "\n\ -d extract files into exdir -l list files (short format)\n\ -f freshen existing files, create none -t test compressed archive data\n\ - -u update files, create if necessary -z display archive comment only\n\ - -v list verbosely/show version info %s\n"; + -u update files, create if necessary -z display archive comment\n\ +%s\n"; #else /* !MACOS */ #ifdef VM_CMS static ZCONST char Far UnzipUsageLine3[] = "\n\ -p extract files to pipe, no messages -l list files (short format)\n\ -f freshen existing files, create none -t test compressed archive data\n\ - -u update files, create if necessary -z display archive comment only\n\ - -v list verbosely/show version info %s\n\ - -x exclude files that follow (in xlist) -d extract files onto disk fm\n"; + -u update files, create if necessary -z display archive comment\n\ + -x exclude files that follow (in xlist) -d extract files onto disk fm\n\ +%s\n"; #else /* !VM_CMS */ static ZCONST char Far UnzipUsageLine3[] = "\n\ -p extract files to pipe, no messages -l list files (short format)\n\ -f freshen existing files, create none -t test compressed archive data\n\ - -u update files, create if necessary -z display archive comment only\n\ - -v list verbosely/show version info %s\n\ - -x exclude files that follow (in xlist) -d extract files into exdir\n"; + -u update files, create if necessary -z display archive comment\n\ + -x exclude files that follow (in xlist) -d extract files into exdir\n\ +%s\n"; #endif /* ?VM_CMS */ #endif /* ?MACOS */ -/* There is not enough space on a standard 80x25 Windows console screen for - * the additional line advertising the UTF-8 debugging options. This may - * eventually also be the case for other ports. Probably, the -U option need - * not be shown on the introductory screen at all. [Chr. Spieler, 2008-02-09] - * - * Likely, other advanced options should be moved to an extended help page and - * the option to list that page put here. [E. Gordon, 2008-3-16] - */ -#if (defined(UNICODE_SUPPORT) && !defined(WIN32)) -#ifdef VMS +#ifndef UNIX static ZCONST char Far UnzipUsageLine4[] = "\ -modifiers:\n\ - -n never overwrite or make a new version of an existing file\n\ - -o always make a new version (-oo: overwrite original) of an existing file\n\ - -q quiet mode (-qq => quieter) -a auto-convert any text files\n\ - -j junk paths (do not make directories) -aa treat ALL files as text\n\ - -U use escapes for all non-ASCII Unicode -UU ignore any Unicode fields\n\ - -C match filenames case-insensitively -L make (some) names \ -lowercase\n %-42s -V retain VMS version numbers\n%s"; -#else /* !VMS */ +modifiers: -q quiet mode (-qq => quieter)\n\ + -n never overwrite existing files -a auto-convert any text files\n\ + -o overwrite files WITHOUT prompting -aa treat ALL files as text\n \ + -j junk paths (do not make directories) -v be verbose/print version info\n\ + %c-C%c match filenames case-insensitively %c-L%c make (some) names \ +lowercase\n %-42s %c-V%c retain VMS version numbers\n%s"; +#else /* UNIX */ static ZCONST char Far UnzipUsageLine4[] = "\ -modifiers:\n\ - -n never overwrite existing files -q quiet mode (-qq => quieter)\n\ - -o overwrite files WITHOUT prompting -a auto-convert any text files\n\ - -j junk paths (do not make directories) -aa treat ALL files as text\n\ - -U use escapes for all non-ASCII Unicode -UU ignore any Unicode fields\n\ - -C match filenames case-insensitively -L make (some) names \ -lowercase\n %-42s -V retain VMS version numbers\n%s"; -#endif /* ?VMS */ -#else /* !UNICODE_SUPPORT */ -#ifdef VMS -static ZCONST char Far UnzipUsageLine4[] = "\ -modifiers:\n\ - -n never overwrite or make a new version of an existing file\n\ - -o always make a new version (-oo: overwrite original) of an existing file\n\ - -q quiet mode (-qq => quieter) -a auto-convert any text files\n\ - -j junk paths (do not make directories) -aa treat ALL files as text\n\ - -C match filenames case-insensitively -L make (some) names \ -lowercase\n %-42s -V retain VMS version numbers\n%s"; -#else /* !VMS */ -static ZCONST char Far UnzipUsageLine4[] = "\ -modifiers:\n\ - -n never overwrite existing files -q quiet mode (-qq => quieter)\n\ - -o overwrite files WITHOUT prompting -a auto-convert any text files\n\ - -j junk paths (do not make directories) -aa treat ALL files as text\n\ - -C match filenames case-insensitively -L make (some) names \ -lowercase\n %-42s -V retain VMS version numbers\n%s"; -#endif /* ?VMS */ -#endif /* ?UNICODE_SUPPORT */ +modifiers: -q quiet mode (-qq => quieter)\n\ + -n never overwrite existing files -a auto-convert any text files\n\ + -o overwrite files WITHOUT prompting -aa treat ALL files as text\n \ + -j junk paths (do not make directories) -v be verbose/print version info\n\ + %c-C%c match filenames case-insensitively %c-L%c make (some) names \ +lowercase\n %-42s %c-V%c retain VMS version numbers\n%s\n\ + -O CHARSET specify a character encoding for DOS, Windows and OS/2 archives\n\ + -I CHARSET specify a character encoding for UNIX and other archives\n\n"; +#endif /* !UNIX */ static ZCONST char Far UnzipUsageLine5[] = "\ -See \"unzip -hh\" or unzip.txt for more help. Examples:\n\ +Examples (see unzip.txt for more info):\n\ unzip data1 -x joe => extract all files except joe from zipfile data1.zip\n\ %s\ unzip -fo foo %-6s => quietly replace existing %s if archive file newer\n"; @@ -738,7 +670,7 @@ #ifndef NO_ZIPINFO char *p; #endif -#if (defined(DOS_FLX_H68_NLM_OS2_W32) || !defined(SFX)) +#ifdef DOS_FLX_H68_NLM_OS2_W32 int i; #endif int retcode, error=FALSE; @@ -755,53 +687,11 @@ #endif #endif /* NO_EXCEPT_SIGNALS */ - /* initialize international char support to the current environment */ - SETLOCALE(LC_CTYPE, ""); - -#ifdef UNICODE_SUPPORT - /* see if can use UTF-8 Unicode locale */ -# ifdef UTF8_MAYBE_NATIVE - { - char *codeset; -# if !(defined(NO_NL_LANGINFO) || defined(NO_LANGINFO_H)) - /* get the codeset (character set encoding) currently used */ -# include - - codeset = nl_langinfo(CODESET); -# else /* NO_NL_LANGINFO || NO_LANGINFO_H */ - /* query the current locale setting for character classification */ - codeset = setlocale(LC_CTYPE, NULL); - if (codeset != NULL) { - /* extract the codeset portion of the locale name */ - codeset = strchr(codeset, '.'); - if (codeset != NULL) ++codeset; - } -# endif /* ?(NO_NL_LANGINFO || NO_LANGINFO_H) */ - /* is the current codeset UTF-8 ? */ - if ((codeset != NULL) && (strcmp(codeset, "UTF-8") == 0)) { - /* successfully found UTF-8 char coding */ - G.native_is_utf8 = TRUE; - } else { - /* Current codeset is not UTF-8 or cannot be determined. */ - G.native_is_utf8 = FALSE; - } - /* Note: At least for UnZip, trying to change the process codeset to - * UTF-8 does not work. For the example Linux setup of the - * UnZip maintainer, a successful switch to "en-US.UTF-8" - * resulted in garbage display of all non-basic ASCII characters. - */ - } -# endif /* UTF8_MAYBE_NATIVE */ - - /* initialize Unicode */ - G.unicode_escape_all = 0; - G.unicode_mismatch = 0; - - G.unipath_version = 0; - G.unipath_checksum = 0; - G.unipath_filename = NULL; -#endif /* UNICODE_SUPPORT */ + SETLOCALE(LC_CTYPE,""); +#ifdef UNIX + init_conversion_charsets(); +#endif #if (defined(__IBMC__) && defined(__DEBUG_ALLOC__)) extern void DebugMalloc(void); @@ -842,18 +732,9 @@ #ifdef SIGTERM /* some systems really have no SIGTERM */ SET_SIGHANDLER(SIGTERM, handler); #endif -#if defined(SIGABRT) && !(defined(AMIGA) && defined(__SASC)) - SET_SIGHANDLER(SIGABRT, handler); -#endif -#ifdef SIGBREAK - SET_SIGHANDLER(SIGBREAK, handler); -#endif #ifdef SIGBUS SET_SIGHANDLER(SIGBUS, handler); #endif -#ifdef SIGILL - SET_SIGHANDLER(SIGILL, handler); -#endif #ifdef SIGSEGV SET_SIGHANDLER(SIGSEGV, handler); #endif @@ -861,7 +742,7 @@ #if (defined(WIN32) && defined(__RSXNT__)) for (i = 0 ; i < argc; i++) { - _ISO_INTERN(argv[i]); + _ISO_INTERN(argv[i]); } #endif @@ -901,7 +782,7 @@ #ifdef THEOS /* The easiest way found to force creation of libraries when selected - * members are to be unzipped. Explicitly add libraries names to the + * members are to be unzipped. Explicitely add libraries names to the * arguments list before the first member of the library. */ if (! _setargv(&argc, &argv)) { @@ -912,74 +793,6 @@ #endif /*--------------------------------------------------------------------------- - Sanity checks. Commentary by Otis B. Driftwood and Fiorello: - - D: It's all right. That's in every contract. That's what they - call a sanity clause. - - F: Ha-ha-ha-ha-ha. You can't fool me. There ain't no Sanity - Claus. - ---------------------------------------------------------------------------*/ - -#ifdef DEBUG -# ifdef LARGE_FILE_SUPPORT - /* test if we can support large files - 10/6/04 EG */ - if (sizeof(zoff_t) < 8) { - Info(slide, 0x401, ((char *)slide, "LARGE_FILE_SUPPORT set but not supported\n")); - retcode = PK_BADERR; - goto cleanup_and_exit; - } - /* test if we can show 64-bit values */ - { - zoff_t z = ~(zoff_t)0; /* z should be all 1s now */ - char *sz; - - sz = FmZofft(z, FZOFFT_HEX_DOT_WID, "X"); - if ((sz[0] != 'F') || (strlen(sz) != 16)) - { - z = 0; - } - - /* shift z so only MSB is set */ - z <<= 63; - sz = FmZofft(z, FZOFFT_HEX_DOT_WID, "X"); - if ((sz[0] != '8') || (strlen(sz) != 16)) - { - Info(slide, 0x401, ((char *)slide, - "Can't show 64-bit values correctly\n")); - retcode = PK_BADERR; - goto cleanup_and_exit; - } - } -# endif /* LARGE_FILE_SUPPORT */ - - /* 2004-11-30 SMS. - Test the NEXTBYTE macro for proper operation. - */ - { - int test_char; - static uch test_buf[2] = { 'a', 'b' }; - - G.inptr = test_buf; - G.incnt = 1; - - test_char = NEXTBYTE; /* Should get 'a'. */ - if (test_char == 'a') - { - test_char = NEXTBYTE; /* Should get EOF, not 'b'. */ - } - if (test_char != EOF) - { - Info(slide, 0x401, ((char *)slide, - "NEXTBYTE macro failed. Try compiling with ALT_NEXTBYTE defined?")); - - retcode = PK_BADERR; - goto cleanup_and_exit; - } - } -#endif /* DEBUG */ - -/*--------------------------------------------------------------------------- First figure out if we're running in UnZip mode or ZipInfo mode, and put the appropriate environment-variable options into the queue. Then rip through any command-line options lurking about... @@ -1054,8 +867,10 @@ #ifndef _WIN32_WCE /* Win CE does not support environment variables */ if ((error = envargs(&argc, &argv, LoadFarStringSmall(EnvZipInfo), LoadFarStringSmall2(EnvZipInfo2))) != PK_OK) - perror(LoadFarString(NoMemEnvArguments)); + perror(LoadFarString(NoMemArguments)); + else #endif + error = zi_opts(__G__ &argc, &argv); } else #endif /* !NO_ZIPINFO */ { @@ -1063,31 +878,9 @@ #ifndef _WIN32_WCE /* Win CE does not support environment variables */ if ((error = envargs(&argc, &argv, LoadFarStringSmall(EnvUnZip), LoadFarStringSmall2(EnvUnZip2))) != PK_OK) - perror(LoadFarString(NoMemEnvArguments)); -#endif - } - - if (!error) { - /* Check the length of all passed command line parameters. - * Command arguments might get sent through the Info() message - * system, which uses the sliding window area as string buffer. - * As arguments may additionally get fed through one of the FnFilter - * macros, we require all command line arguments to be shorter than - * WSIZE/4 (and ca. 2 standard line widths for fixed message text). - */ - for (i = 1 ; i < argc; i++) { - if (strlen(argv[i]) > ((WSIZE>>2) - 160)) { - Info(slide, 0x401, ((char *)slide, - LoadFarString(CmdLineParamTooLong), i)); - retcode = PK_PARAM; - goto cleanup_and_exit; - } - } -#ifndef NO_ZIPINFO - if (uO.zipinfo_mode) - error = zi_opts(__G__ &argc, &argv); + perror(LoadFarString(NoMemArguments)); else -#endif /* !NO_ZIPINFO */ +#endif error = uz_opts(__G__ &argc, &argv); } @@ -1124,8 +917,8 @@ *q = '/'; INCSTR(q); } -#endif /* ?__human68k__ */ ++G.pfnames; +#endif /* ?__human68k__ */ } #endif /* DOS_FLX_H68_NLM_OS2_W32 */ @@ -1236,17 +1029,6 @@ Info(slide, 0x401, ((char *)slide, LoadFarString(NotExtracting))); #endif /* ?(SFX && !SFX_EXDIR) */ -#ifdef UNICODE_SUPPORT - /* set Unicode-escape-all if option -U used */ - if (uO.U_flag == 1) -# ifdef UNICODE_WCHAR - G.unicode_escape_all = TRUE; -# else - Info(slide, 0x401, ((char *)slide, LoadFarString(UTF8EscapeUnSupp))); -# endif -#endif - - /*--------------------------------------------------------------------------- Okey dokey, we have everything we need to get started. Let's roll. ---------------------------------------------------------------------------*/ @@ -1270,10 +1052,6 @@ G.area.Slide = (uch *)NULL; } #endif -#if (defined(MSDOS) && !defined(SFX) && !defined(WINDLL)) - if (retcode != PK_OK) - check_for_windows("UnZip"); -#endif return(retcode); } /* end main()/unzip() */ @@ -1330,12 +1108,17 @@ char ***pargv; { char **argv, *s; - int argc, c, error=FALSE, negative=0, showhelp=0; + int argc, c, error=FALSE, negative=0; argc = *pargc; argv = *pargv; +#ifdef UNIX + extern char OEM_CP[MAX_CP_NAME]; + extern char ISO_CP[MAX_CP_NAME]; +#endif + while (++argv, (--argc > 0 && *argv != NULL && **argv == '-')) { s = *argv + 1; while ((c = *s++) != 0) { /* "!= 0": prevent Turbo C warning */ @@ -1462,15 +1245,6 @@ } break; #endif /* !SFX || SFX_EXDIR */ -#if (!defined(NO_TIMESTAMPS)) - case ('D'): /* -D: Skip restoring dir (or any) timestamp. */ - if (negative) { - uO.D_flag = MAX(uO.D_flag-negative,0); - negative = 0; - } else - uO.D_flag++; - break; -#endif /* (!NO_TIMESTAMPS) */ case ('e'): /* just ignore -e, -x options (extract) */ break; #ifdef MACOS @@ -1497,17 +1271,8 @@ break; #endif /* RISCOS || ACORN_FTYPE_NFS */ case ('h'): /* just print help message and quit */ - if (showhelp == 0) { -#ifndef SFX - if (*s == 'h') - showhelp = 2; - else -#endif /* !SFX */ - { - showhelp = 1; - } - } - break; + *pargc = -1; + return USAGE(PK_OK); #ifdef MACOS case ('i'): /* -i [MacOS] ignore filenames stored in Mac ef */ if( negative ) { @@ -1517,6 +1282,35 @@ } break; #endif /* MACOS */ +#ifdef UNIX + case ('I'): + if (negative) { + Info(slide, 0x401, ((char *)slide, + "error: encodings can't be negated")); + return(PK_PARAM); + } else { + if(*s) { /* Handle the -Icharset case */ + /* Assume that charsets can't start with a dash to spot arguments misuse */ + if(*s == '-') { + Info(slide, 0x401, ((char *)slide, + "error: a valid character encoding should follow the -I argument")); + return(PK_PARAM); + } + strncpy(ISO_CP, s, sizeof(ISO_CP)); + } else { /* -I charset */ + ++argv; + if(!(--argc > 0 && *argv != NULL && **argv != '-')) { + Info(slide, 0x401, ((char *)slide, + "error: a valid character encoding should follow the -I argument")); + return(PK_PARAM); + } + s = *argv; + strncpy(ISO_CP, s, sizeof(ISO_CP)); + } + while(*(++s)); /* No params straight after charset name */ + } + break; +#endif /* ?UNIX */ case ('j'): /* junk pathnames/directory structure */ if (negative) uO.jflag = FALSE, negative = 0; @@ -1592,6 +1386,35 @@ } else ++uO.overwrite_all; break; +#ifdef UNIX + case ('O'): + if (negative) { + Info(slide, 0x401, ((char *)slide, + "error: encodings can't be negated")); + return(PK_PARAM); + } else { + if(*s) { /* Handle the -Ocharset case */ + /* Assume that charsets can't start with a dash to spot arguments misuse */ + if(*s == '-') { + Info(slide, 0x401, ((char *)slide, + "error: a valid character encoding should follow the -I argument")); + return(PK_PARAM); + } + strncpy(OEM_CP, s, sizeof(OEM_CP)); + } else { /* -O charset */ + ++argv; + if(!(--argc > 0 && *argv != NULL && **argv != '-')) { + Info(slide, 0x401, ((char *)slide, + "error: a valid character encoding should follow the -O argument")); + return(PK_PARAM); + } + s = *argv; + strncpy(OEM_CP, s, sizeof(OEM_CP)); + } + while(*(++s)); /* No params straight after charset name */ + } + break; +#endif /* ?UNIX */ case ('p'): /* pipes: extract to stdout, no messages */ if (negative) { uO.cflag = FALSE; @@ -1675,15 +1498,6 @@ uO.sflag = TRUE; break; #endif /* DOS_FLX_NLM_OS2_W32 */ -#ifdef VMS - /* VMS: extract "text" files in Stream_LF format (-a[a]) */ - case ('S'): - if (negative) - uO.S_flag = FALSE, negative = 0; - else - uO.S_flag = TRUE; - break; -#endif /* VMS */ case ('t'): if (negative) uO.tflag = FALSE, negative = 0; @@ -1704,15 +1518,6 @@ else uO.uflag = TRUE; break; -#ifdef UNICODE_SUPPORT - case ('U'): /* escape UTF-8, or disable UTF-8 support */ - if (negative) { - uO.U_flag = MAX(uO.U_flag-negative,0); - negative = 0; - } else - uO.U_flag++; - break; -#else /* !UNICODE_SUPPORT */ #ifndef CMS_MVS case ('U'): /* obsolete; to be removed in version 6.0 */ if (negative) @@ -1721,7 +1526,6 @@ uO.L_flag = FALSE; break; #endif /* !CMS_MVS */ -#endif /* ?UNICODE_SUPPORT */ #ifndef SFX case ('v'): /* verbose */ if (negative) { @@ -1773,14 +1577,6 @@ ++uO.X_flag; break; #endif /* RESTORE_UIDGID || RESTORE_ACL */ -#ifdef VMS - case ('Y'): /* Treat ".nnn" as ";nnn" version. */ - if (negative) - uO.Y_flag = FALSE, negative = 0; - else - uO.Y_flag = TRUE; - break; -#endif /* VMS */ case ('z'): /* display only the archive comment */ if (negative) { uO.zflag = MAX(uO.zflag-negative,0); @@ -1794,14 +1590,6 @@ error = TRUE; break; #endif /* !SFX */ -#ifdef VMS - case ('2'): /* Force ODS2-compliant names. */ - if (negative) - uO.ods2_flag = FALSE, negative = 0; - else - uO.ods2_flag = TRUE; - break; -#endif /* VMS */ #ifdef DOS_H68_OS2_W32 case ('$'): if (negative) { @@ -1812,7 +1600,7 @@ break; #endif /* DOS_H68_OS2_W32 */ #if (!defined(RISCOS) && !defined(CMS_MVS) && !defined(TANDEM)) - case (':'): /* allow "parent dir" path components */ + case (':'): if (negative) { uO.ddotflag = MAX(uO.ddotflag-negative,0); negative = 0; @@ -1820,15 +1608,6 @@ ++uO.ddotflag; break; #endif /* !RISCOS && !CMS_MVS && !TANDEM */ -#ifdef UNIX - case ('^'): /* allow control chars in filenames */ - if (negative) { - uO.cflxflag = MAX(uO.cflxflag-negative,0); - negative = 0; - } else - ++uO.cflxflag; - break; -#endif /* UNIX */ default: error = TRUE; break; @@ -1845,20 +1624,7 @@ opts_done: /* yes, very ugly...but only used by UnZipSFX with -x xlist */ #endif - if (showhelp > 0) { /* just print help message and quit */ - *pargc = -1; -#ifndef SFX - if (showhelp == 2) { - help_extended(__G); - return PK_OK; - } else -#endif /* !SFX */ - { - return USAGE(PK_OK); - } - } - - if ((uO.cflag && (uO.tflag || uO.uflag)) || + if ((uO.cflag && uO.tflag) || (uO.cflag && uO.uflag) || (uO.tflag && uO.uflag) || (uO.fflag && uO.overwrite_none)) { Info(slide, 0x401, ((char *)slide, LoadFarString(InvalidOptionsMsg))); @@ -1869,10 +1635,7 @@ #ifdef VMS if (uO.bflag > 2) uO.bflag = 2; - /* Clear -s flag when converting text files. */ - if (uO.aflag <= 0) - uO.S_flag = 0; -#endif /* VMS */ +#endif if (uO.overwrite_all && uO.overwrite_none) { Info(slide, 0x401, ((char *)slide, LoadFarString(IgnoreOOptionMsg))); uO.overwrite_all = FALSE; @@ -1896,7 +1659,7 @@ return PK_OK; } if (!G.noargs && !error) - error = TRUE; /* had options (not -h or -v) but no zipfile */ + error = PK_PARAM; /* had options (not -h or -v) but no zipfile */ #endif /* !SFX */ return USAGE(error); } @@ -1958,18 +1721,10 @@ # define LOCAL "" # endif -# ifndef NO_TIMESTAMP -# ifdef MORE -# define SFXOPT1 "DM" -# else -# define SFXOPT1 "D" -# endif +# ifdef MORE +# define SFXOPT1 "M" # else -# ifdef MORE -# define SFXOPT1 "M" -# else -# define SFXOPT1 "" -# endif +# define SFXOPT1 "" # endif int usage(__G__ error) /* return PK-type error code */ @@ -2028,7 +1783,7 @@ LoadFarStringSmall2(ZipInfoExample), QUOTS,QUOTS)); Info(slide, flag, ((char *)slide, LoadFarString(ZipInfoUsageLine2))); Info(slide, flag, ((char *)slide, LoadFarString(ZipInfoUsageLine3), - LoadFarStringSmall(ZipInfoUsageLine4))); + QUOT,QUOT, QUOT,QUOT, LoadFarStringSmall(ZipInfoUsageLine4))); #ifdef VMS Info(slide, flag, ((char *)slide, "\n\ You must quote non-lowercase options and filespecs, unless SET PROC/PARSE=EXT.\ @@ -2057,7 +1812,8 @@ LoadFarStringSmall(local1))); Info(slide, flag, ((char *)slide, LoadFarString(UnzipUsageLine4), - LoadFarStringSmall(local2), LoadFarStringSmall2(local3))); + QUOT,QUOT, QUOT,QUOT, LoadFarStringSmall(local2), QUOT,QUOT, + LoadFarStringSmall2(local3))); /* This is extra work for SMALL_MEM, but it will work since * LoadFarStringSmall2 uses the same buffer. Remember, this @@ -2082,246 +1838,6 @@ #ifndef SFX -/* Print extended help to stdout. */ -static void help_extended(__G) - __GDEF -{ - extent i; /* counter for help array */ - - /* help array */ - static ZCONST char *text[] = { - "", - "Extended Help for UnZip", - "", - "See the UnZip Manual for more detailed help", - "", - "", - "UnZip lists and extracts files in zip archives. The default action is to", - "extract zipfile entries to the current directory, creating directories as", - "needed. With appropriate options, UnZip lists the contents of archives", - "instead.", - "", - "Basic unzip command line:", - " unzip [-Z] options archive[.zip] [file ...] [-x xfile ...] [-d exdir]", - "", - "Some examples:", - " unzip -l foo.zip - list files in short format in archive foo.zip", - "", - " unzip -t foo - test the files in archive foo", - "", - " unzip -Z foo - list files using more detailed zipinfo format", - "", - " unzip foo - unzip the contents of foo in current dir", - "", - " unzip -a foo - unzip foo and convert text files to local OS", - "", - "If unzip is run in zipinfo mode, a more detailed list of archive contents", - "is provided. The -Z option sets zipinfo mode and changes the available", - "options.", - "", - "Basic zipinfo command line:", - " zipinfo options archive[.zip] [file ...] [-x xfile ...]", - " unzip -Z options archive[.zip] [file ...] [-x xfile ...]", - "", - "Below, Mac OS refers to Mac OS before Mac OS X. Mac OS X is a Unix based", - "port and is referred to as Unix Apple.", - "", - "", - "unzip options:", - " -Z Switch to zipinfo mode. Must be first option.", - " -hh Display extended help.", - " -A [OS/2, Unix DLL] Print extended help for DLL.", - " -c Extract files to stdout/screen. As -p but include names. Also,", - " -a allowed and EBCDIC conversions done if needed.", - " -f Freshen by extracting only if older file on disk.", - " -l List files using short form.", - " -p Extract files to pipe (stdout). Only file data is output and all", - " files extracted in binary mode (as stored).", - " -t Test archive files.", - " -T Set timestamp on archive(s) to that of newest file. Similar to", - " zip -o but faster.", - " -u Update existing older files on disk as -f and extract new files.", - " -v Use verbose list format. If given alone as unzip -v show version", - " information. Also can be added to other list commands for more", - " verbose output.", - " -z Display only archive comment.", - "", - "unzip modifiers:", - " -a Convert text files to local OS format. Convert line ends, EOF", - " marker, and from or to EBCDIC character set as needed.", - " -b Treat all files as binary. [Tandem] Force filecode 180 ('C').", - " [VMS] Autoconvert binary files. -bb forces convert of all files.", - " -B [UNIXBACKUP compile option enabled] Save a backup copy of each", - " overwritten file in foo~ or foo~99999 format.", - " -C Use case-insensitive matching.", - " -D Skip restoration of timestamps for extracted directories. On VMS this", - " is on by default and -D essentially becames -DD.", - " -DD Skip restoration of timestamps for all entries.", - " -E [MacOS (not Unix Apple)] Display contents of MacOS extra field during", - " restore.", - " -F [Acorn] Suppress removal of NFS filetype extension. [Non-Acorn if", - " ACORN_FTYPE_NFS] Translate filetype and append to name.", - " -i [MacOS] Ignore filenames in MacOS extra field. Instead, use name in", - " standard header.", - " -j Junk paths and deposit all files in extraction directory.", - " -J [BeOS] Junk file attributes. [MacOS] Ignore MacOS specific info.", - " -K [AtheOS, BeOS, Unix] Restore SUID/SGID/Tacky file attributes.", - " -L Convert to lowercase any names from uppercase only file system.", - " -LL Convert all files to lowercase.", - " -M Pipe all output through internal pager similar to Unix more(1).", - " -n Never overwrite existing files. Skip extracting that file, no prompt.", - " -N [Amiga] Extract file comments as Amiga filenotes.", - " -o Overwrite existing files without prompting. Useful with -f. Use with", - " care.", - " -P p Use password p to decrypt files. THIS IS INSECURE! Some OS show", - " command line to other users.", - " -q Perform operations quietly. The more q (as in -qq) the quieter.", - " -s [OS/2, NT, MS-DOS] Convert spaces in filenames to underscores.", - " -S [VMS] Convert text files (-a, -aa) into Stream_LF format.", - " -U [UNICODE enabled] Show non-local characters as #Uxxxx or #Lxxxxxx ASCII", - " text escapes where x is hex digit. [Old] -U used to leave names", - " uppercase if created on MS-DOS, VMS, etc. See -L.", - " -UU [UNICODE enabled] Disable use of stored UTF-8 paths. Note that UTF-8", - " paths stored as native local paths are still processed as Unicode.", - " -V Retain VMS file version numbers.", - " -W [Only if WILD_STOP_AT_DIR] Modify pattern matching so ? and * do not", - " match directory separator /, but ** does. Allows matching at specific", - " directory levels.", - " -X [VMS, Unix, OS/2, NT, Tandem] Restore UICs and ACL entries under VMS,", - " or UIDs/GIDs under Unix, or ACLs under certain network-enabled", - " versions of OS/2, or security ACLs under Windows NT. Can require", - " user privileges.", - " -XX [NT] Extract NT security ACLs after trying to enable additional", - " system privileges.", - " -Y [VMS] Treat archived name endings of .nnn as VMS version numbers.", - " -$ [MS-DOS, OS/2, NT] Restore volume label if extraction medium is", - " removable. -$$ allows fixed media (hard drives) to be labeled.", - " -/ e [Acorn] Use e as extension list.", - " -: [All but Acorn, VM/CMS, MVS, Tandem] Allow extract archive members into", - " locations outside of current extraction root folder. This allows", - " paths such as ../foo to be extracted above the current extraction", - " directory, which can be a security problem.", - " -^ [Unix] Allow control characters in names of extracted entries. Usually", - " this is not a good thing and should be avoided.", - " -2 [VMS] Force unconditional conversion of names to ODS-compatible names.", - " Default is to exploit destination file system, preserving cases and", - " extended name characters on ODS5 and applying ODS2 filtering on ODS2.", - "", - "", - "Wildcards:", - " Internally unzip supports the following wildcards:", - " ? (or %% or #, depending on OS) matches any single character", - " * matches any number of characters, including zero", - " [list] matches char in list (regex), can do range [ac-f], all but [!bf]", - " If port supports [], must escape [ as [[]", - " For shells that expand wildcards, escape (\\* or \"*\") so unzip can recurse.", - "", - "Include and Exclude:", - " -i pattern pattern ... include files that match a pattern", - " -x pattern pattern ... exclude files that match a pattern", - " Patterns are paths with optional wildcards and match paths as stored in", - " archive. Exclude and include lists end at next option or end of line.", - " unzip archive -x pattern pattern ...", - "", - "Multi-part (split) archives (archives created as a set of split files):", - " Currently split archives are not readable by unzip. A workaround is", - " to use zip to convert the split archive to a single-file archive and", - " use unzip on that. See the manual page for Zip 3.0 or later.", - "", - "Streaming (piping into unzip):", - " Currently unzip does not support streaming. The funzip utility can be", - " used to process the first entry in a stream.", - " cat archive | funzip", - "", - "Testing archives:", - " -t test contents of archive", - " This can be modified using -q for quieter operation, and -qq for even", - " quieter operation.", - "", - "Unicode:", - " If compiled with Unicode support, unzip automatically handles archives", - " with Unicode entries. Currently Unicode on Win32 systems is limited.", - " Characters not in the current character set are shown as ASCII escapes", - " in the form #Uxxxx where the Unicode character number fits in 16 bits,", - " or #Lxxxxxx where it doesn't, where x is the ASCII character for a hex", - " digit.", - "", - "", - "zipinfo options (these are used in zipinfo mode (unzip -Z ...)):", - " -1 List names only, one per line. No headers/trailers. Good for scripts.", - " -2 List names only as -1, but include headers, trailers, and comments.", - " -s List archive entries in short Unix ls -l format. Default list format.", - " -m List in long Unix ls -l format. As -s, but includes compression %.", - " -l List in long Unix ls -l format. As -m, but compression in bytes.", - " -v List zipfile information in verbose, multi-page format.", - " -h List header line. Includes archive name, actual size, total files.", - " -M Pipe all output through internal pager similar to Unix more(1) command.", - " -t List totals for files listed or for all files. Includes uncompressed", - " and compressed sizes, and compression factors.", - " -T Print file dates and times in a sortable decimal format (yymmdd.hhmmss)", - " Default date and time format is a more human-readable version.", - " -U [UNICODE] If entry has a UTF-8 Unicode path, display any characters", - " not in current character set as text #Uxxxx and #Lxxxxxx escapes", - " representing the Unicode character number of the character in hex.", - " -UU [UNICODE] Disable use of any UTF-8 path information.", - " -z Include archive comment if any in listing.", - "", - "", - "funzip stream extractor:", - " funzip extracts the first member in an archive to stdout. Typically", - " used to unzip the first member of a stream or pipe. If a file argument", - " is given, read from that file instead of stdin.", - "", - "funzip command line:", - " funzip [-password] [input[.zip|.gz]]", - "", - "", - "unzipsfx self extractor:", - " Self-extracting archives made with unzipsfx are no more (or less)", - " portable across different operating systems than unzip executables.", - " In general, a self-extracting archive made on a particular Unix system,", - " for example, will only self-extract under the same flavor of Unix.", - " Regular unzip may still be used to extract embedded archive however.", - "", - "unzipsfx command line:", - " [-options] [file(s) ... [-x xfile(s) ...]]", - "", - "unzipsfx options:", - " -c, -p - Output to pipe. (See above for unzip.)", - " -f, -u - Freshen and Update, as for unzip.", - " -t - Test embedded archive. (Can be used to list contents.)", - " -z - Print archive comment. (See unzip above.)", - "", - "unzipsfx modifiers:", - " Most unzip modifiers are supported. These include", - " -a - Convert text files.", - " -n - Never overwrite.", - " -o - Overwrite without prompting.", - " -q - Quiet operation.", - " -C - Match names case-insensitively.", - " -j - Junk paths.", - " -V - Keep version numbers.", - " -s - Convert spaces to underscores.", - " -$ - Restore volume label.", - "", - "If unzipsfx compiled with SFX_EXDIR defined, -d option also available:", - " -d exd - Extract to directory exd.", - "By default, all files extracted to current directory. This option", - "forces extraction to specified directory.", - "", - "See unzipsfx manual page for more information.", - "" - }; - - for (i = 0; i < sizeof(text)/sizeof(char *); i++) - { - Info(slide, 0, ((char *)slide, "%s\n", text[i])); - } -} /* end function help_extended() */ - - - - #ifndef _WIN32_WCE /* Win CE does not support environment variables */ #if (!defined(MODERN) || defined(NO_STDLIB_H)) /* Declare getenv() to be sure (might be missing in some environments) */ @@ -2457,11 +1973,6 @@ LoadFarStringSmall(SetDirAttrib))); ++numopts; #endif -#ifdef SYMLINKS - Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat), - LoadFarStringSmall(SymLinkSupport))); - ++numopts; -#endif #ifdef TIMESTAMP Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat), LoadFarStringSmall(TimeStamp))); @@ -2492,40 +2003,11 @@ LoadFarStringSmall(Use_Deflate64))); ++numopts; #endif -#ifdef UNICODE_SUPPORT -# ifdef UTF8_MAYBE_NATIVE - sprintf((char *)(slide+256), LoadFarStringSmall(Use_Unicode), - LoadFarStringSmall2(G.native_is_utf8 ? SysChUTF8 : SysChOther)); - Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat), - (char *)(slide+256))); -# else - Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat), - LoadFarStringSmall(Use_Unicode))); -# endif - ++numopts; -#endif -#ifdef _MBCS - sprintf((char *)(slide+256), LoadFarStringSmall(Have_MBCS_Support), - (unsigned int)MB_CUR_MAX); - Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat), - (char *)(slide+256))); - ++numopts; -#endif #ifdef MULT_VOLUME Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat), LoadFarStringSmall(Use_MultiVol))); ++numopts; #endif -#ifdef LARGE_FILE_SUPPORT - Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat), - LoadFarStringSmall(Use_LFS))); - ++numopts; -#endif -#ifdef ZIP64_SUPPORT - Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat), - LoadFarStringSmall(Use_Zip64))); - ++numopts; -#endif #if (defined(__DJGPP__) && (__DJGPP__ >= 2)) # ifdef USE_DJGPP_ENV Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat), @@ -2550,13 +2032,6 @@ (char *)(slide+256))); ++numopts; #endif -#ifdef USE_BZIP2 - sprintf((char *)(slide+256), LoadFarStringSmall(UseBZip2), - BZ2_bzlibVersion()); - Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat), - (char *)(slide+256))); - ++numopts; -#endif #ifdef VMS_TEXT_CONV Info(slide, 0, ((char *)slide, LoadFarString(CompileOptFormat), LoadFarStringSmall(VmsTextConv))); diff -Nru unzip-6.0/unzip.h unzip-6.0/unzip.h --- unzip-6.0/unzip.h 2009-02-15 18:12:54.000000000 +0000 +++ unzip-6.0/unzip.h 2010-05-14 07:26:14.000000000 +0000 @@ -2,7 +2,7 @@ unzip.h (new) - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. This header file contains the public macros and typedefs required by both the UnZip sources and by any application using the UnZip API. If @@ -11,13 +11,12 @@ ---------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------- -This is version 2009-Jan-02 of the Info-ZIP license. +This is version 2005-Feb-10 of the Info-ZIP copyright and license. The definitive version of this document should be available at -ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely and -a copy at http://www.info-zip.org/pub/infozip/license.html. +ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely. -Copyright (c) 1990-2009 Info-ZIP. All rights reserved. +Copyright (c) 1990-2005 Info-ZIP. All rights reserved. For the purposes of this copyright and license, "Info-ZIP" is defined as the following set of individuals: @@ -29,7 +28,7 @@ Steve P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs, Kai Uwe Rommel, Steve Salisbury, Dave Smith, Steven M. Schweda, Christian Spieler, Cosmin Truta, Antoine Verheijen, Paul von Behren, - Rich Wales, Mike White. + Rich Wales, Mike White This software is provided "as is," without warranty of any kind, express or implied. In no event shall Info-ZIP or its contributors be held liable @@ -38,37 +37,31 @@ Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it -freely, subject to the above disclaimer and the following restrictions: +freely, subject to the following restrictions: - 1. Redistributions of source code (in whole or in part) must retain - the above copyright notice, definition, disclaimer, and this list - of conditions. - - 2. Redistributions in binary form (compiled executables and libraries) - must reproduce the above copyright notice, definition, disclaimer, - and this list of conditions in documentation and/or other materials - provided with the distribution. Additional documentation is not needed - for executables where a command line license option provides these and - a note regarding this option is in the executable's startup banner. The - sole exception to this condition is redistribution of a standard - UnZipSFX binary (including SFXWiz) as part of a self-extracting archive; - that is permitted without inclusion of this license, as long as the - normal SFX banner has not been removed from the binary or disabled. + 1. Redistributions of source code must retain the above copyright notice, + definition, disclaimer, and this list of conditions. + + 2. Redistributions in binary form (compiled executables) must reproduce + the above copyright notice, definition, disclaimer, and this list of + conditions in documentation and/or other materials provided with the + distribution. The sole exception to this condition is redistribution + of a standard UnZipSFX binary (including SFXWiz) as part of a + self-extracting archive; that is permitted without inclusion of this + license, as long as the normal SFX banner has not been removed from + the binary or disabled. 3. Altered versions--including, but not limited to, ports to new operating - systems, existing ports with new graphical interfaces, versions with - modified or added functionality, and dynamic, shared, or static library - versions not from Info-ZIP--must be plainly marked as such and must not - be misrepresented as being the original source or, if binaries, - compiled from the original source. Such altered versions also must not - be misrepresented as being Info-ZIP releases--including, but not - limited to, labeling of the altered versions with the names "Info-ZIP" - (or any variation thereof, including, but not limited to, different - capitalizations), "Pocket UnZip," "WiZ" or "MacZip" without the - explicit permission of Info-ZIP. Such altered versions are further - prohibited from misrepresentative use of the Zip-Bugs or Info-ZIP - e-mail addresses or the Info-ZIP URL(s), such as to imply Info-ZIP - will provide support for the altered versions. + systems, existing ports with new graphical interfaces, and dynamic, + shared, or static library versions--must be plainly marked as such + and must not be misrepresented as being the original source. Such + altered versions also must not be misrepresented as being Info-ZIP + releases--including, but not limited to, labeling of the altered + versions with the names "Info-ZIP" (or any variation thereof, including, + but not limited to, different capitalizations), "Pocket UnZip," "WiZ" + or "MacZip" without the explicit permission of Info-ZIP. Such altered + versions are further prohibited from misrepresentative use of the + Zip-Bugs or Info-ZIP e-mail addresses or of the Info-ZIP URL(s). 4. Info-ZIP retains the right to use the names "Info-ZIP," "Zip," "UnZip," "UnZipSFX," "WiZ," "Pocket UnZip," "Pocket Zip," and "MacZip" for its @@ -260,12 +253,6 @@ # define MODERN # endif #endif -/* Bundled C compiler on HP-UX needs this. Others shouldn't care. */ -#if (defined(__hpux)) -# ifndef MODERN -# define MODERN -# endif -#endif /* turn off prototypes if requested */ #if (defined(NOPROTO) && defined(PROTO)) @@ -290,28 +277,6 @@ # define ZCONST #endif -/* Tell Microsoft Visual C++ 2005 (and newer) to leave us alone - * and let us use standard C functions the way we're supposed to. - * (These preprocessor symbols must appear before the first system - * header include. They are located here, because for WINDLL the - * first system header includes follow just below.) - */ -#if defined(_MSC_VER) && (_MSC_VER >= 1400) -# ifndef _CRT_SECURE_NO_WARNINGS -# define _CRT_SECURE_NO_WARNINGS -# endif -# ifndef _CRT_NONSTDC_NO_WARNINGS -# define _CRT_NONSTDC_NO_WARNINGS -# endif -# if defined(POCKET_UNZIP) && !defined(_CRT_NON_CONFORMING_SWPRINTFS) -# define _CRT_NON_CONFORMING_SWPRINTFS -# endif -#endif - -/* NO_UNIXBACKUP overrides UNIXBACKUP */ -#if defined(NO_UNIXBACKUP) && defined(UNIXBACKUP) -# undef UNIXBACKUP -#endif /*--------------------------------------------------------------------------- Grab system-specific public include headers. @@ -470,16 +435,11 @@ #ifdef TANDEM int bflag; /* -b: create text files in 'C' format (180)*/ #endif -#if defined(UNIX) || defined(OS2) || defined(WIN32) - int B_flag; /* -B: back up existing files by renaming to *~##### */ -#else #ifdef UNIXBACKUP - int B_flag; /* -B: back up existing files by renaming to *~##### */ -#endif + int B_flag; /* -B: back up existing files by renaming to *~ first */ #endif int cflag; /* -c: output to stdout */ int C_flag; /* -C: match filenames case-insensitively */ - int D_flag; /* -D: don't restore directory (-DD: any) timestamps */ #ifdef MACOS int E_flag; /* -E: [MacOS] show Mac extra field during restoring */ #endif @@ -520,18 +480,12 @@ #if (defined(NLM)) int sflag; /* -s: convert spaces in filenames to underscores */ #endif -#ifdef VMS - int S_flag; /* -S: use Stream_LF for text files (-a[a]) */ -#endif #if (defined(MSDOS) || defined(__human68k__) || defined(OS2) || defined(WIN32)) int volflag; /* -$: extract volume labels */ #endif int tflag; /* -t: test (unzip) or totals line (zipinfo) */ int T_flag; /* -T: timestamps (unzip) or dec. time fmt (zipinfo) */ int uflag; /* -u: "update" (extract only newer/brand-new files) */ -#if defined(UNIX) || defined(VMS) || defined(WIN32) - int U_flag; /* -U: escape non-ASCII, -UU No Unicode paths */ -#endif int vflag; /* -v: (verbosely) list directory */ int V_flag; /* -V: don't strip VMS version numbers */ int W_flag; /* -W: wildcard '*' won't match '/' dir separator */ @@ -546,19 +500,10 @@ #endif #endif #endif -#ifdef VMS - int Y_flag; /* -Y: treat ".nnn" as ";nnn" version */ -#endif int zflag; /* -z: display the zipfile comment (only, for unzip) */ -#ifdef VMS - int ods2_flag; /* -2: force names to conform to ODS2 */ -#endif #if (!defined(RISCOS) && !defined(CMS_MVS) && !defined(TANDEM)) int ddotflag; /* -:: don't skip over "../" path elements */ #endif -#ifdef UNIX - int cflxflag; /* -^: allow control chars in extracted filenames */ -#endif #endif /* !FUNZIP */ } UzpOpts; @@ -571,60 +516,52 @@ } _version_type; typedef struct _UzpVer { - ulg structlen; /* length of the struct being passed */ - ulg flag; /* bit 0: is_beta bit 1: uses_zlib */ - ZCONST char *betalevel; /* e.g. "g BETA" or "" */ - ZCONST char *date; /* e.g. "9 Oct 08" (beta) or "9 October 2008" */ - ZCONST char *zlib_version;/* e.g. "1.2.3" or NULL */ - _version_type unzip; /* current UnZip version */ - _version_type zipinfo; /* current ZipInfo version */ - _version_type os2dll; /* OS2DLL version (retained for compatibility */ - _version_type windll; /* WinDLL version (retained for compatibility */ - _version_type dllapimin; /* last incompatible change of library API */ + ulg structlen; /* length of the struct being passed */ + ulg flag; /* bit 0: is_beta bit 1: uses_zlib */ + char *betalevel; /* e.g., "g BETA" or "" */ + char *date; /* e.g., "4 Sep 95" (beta) or "4 September 1995" */ + char *zlib_version; /* e.g., "0.95" or NULL */ + _version_type unzip; + _version_type zipinfo; + _version_type os2dll; + _version_type windll; } UzpVer; /* for Visual BASIC access to Windows DLLs: */ typedef struct _UzpVer2 { - ulg structlen; /* length of the struct being passed */ - ulg flag; /* bit 0: is_beta bit 1: uses_zlib */ - char betalevel[10]; /* e.g. "g BETA" or "" */ - char date[20]; /* e.g. "9 Oct 08" (beta) or "9 October 2008" */ - char zlib_version[10]; /* e.g. "1.2.3" or NULL */ - _version_type unzip; /* current UnZip version */ - _version_type zipinfo; /* current ZipInfo version */ - _version_type os2dll; /* OS2DLL version (retained for compatibility */ - _version_type windll; /* WinDLL version (retained for compatibility */ - _version_type dllapimin; /* last incompatible change of library API */ + ulg structlen; /* length of the struct being passed */ + ulg flag; /* bit 0: is_beta bit 1: uses_zlib */ + char betalevel[10]; /* e.g., "g BETA" or "" */ + char date[20]; /* e.g., "4 Sep 95" (beta) or "4 September 1995" */ + char zlib_version[10]; /* e.g., "0.95" or NULL */ + _version_type unzip; + _version_type zipinfo; + _version_type os2dll; + _version_type windll; } UzpVer2; - -typedef struct _Uzp_Siz64 { - unsigned long lo32; - unsigned long hi32; -} Uzp_Siz64; - -typedef struct _Uzp_cdir_Rec { +typedef struct central_directory_file_header { /* CENTRAL */ uch version_made_by[2]; uch version_needed_to_extract[2]; ush general_purpose_bit_flag; ush compression_method; ulg last_mod_dos_datetime; ulg crc32; - Uzp_Siz64 csize; - Uzp_Siz64 ucsize; + ulg csize; + ulg ucsize; ush filename_length; ush extra_field_length; ush file_comment_length; ush disk_number_start; ush internal_file_attributes; ulg external_file_attributes; - Uzp_Siz64 relative_offset_local_header; -} Uzp_cdir_Rec; + ulg relative_offset_local_header; +} cdir_file_hdr; #define UZPINIT_LEN sizeof(UzpInit) #define UZPVER_LEN sizeof(UzpVer) -#define cbList(func) int (* UZ_EXP func)(char *filename, Uzp_cdir_Rec *crec) +#define cbList(func) int (* UZ_EXP func)(char *filename, cdir_file_hdr *crec) /*--------------------------------------------------------------------------- @@ -651,7 +588,6 @@ #define IZ_CTRLC 80 /* user hit ^C to terminate */ #define IZ_UNSUP 81 /* no files found: all unsup. compr/encrypt. */ #define IZ_BADPWD 82 /* no files found: all had bad password */ -#define IZ_ERRBF 83 /* big-file archive, small-file program */ /* return codes of password fetches (negative = user abort; positive = error) */ #define IZ_PW_ENTERED 0 /* got some password string; use/try it */ @@ -677,7 +613,7 @@ int UZ_EXP UzpMain OF((int argc, char **argv)); int UZ_EXP UzpAltMain OF((int argc, char **argv, UzpInit *init)); -ZCONST UzpVer * UZ_EXP UzpVersion OF((void)); +UzpVer * UZ_EXP UzpVersion OF((void)); void UZ_EXP UzpFreeMemBuffer OF((UzpBuffer *retstr)); #ifndef WINDLL int UZ_EXP UzpUnzipToMemory OF((char *zip, char *file, UzpOpts *optflgs, @@ -691,7 +627,7 @@ char *cpInclude[], char *cpExclude[])); #endif -unsigned UZ_EXP UzpVersion2 OF((UzpVer2 *version)); +void UZ_EXP UzpVersion2 OF((UzpVer2 *version)); int UZ_EXP UzpValidate OF((char *archive, int AllCodes)); diff -Nru unzip-6.0/unzipsfx.txt unzip-6.0/unzipsfx.txt --- unzip-6.0/unzipsfx.txt 2009-04-20 01:00:30.000000000 +0000 +++ unzip-6.0/unzipsfx.txt 2010-05-14 07:26:14.000000000 +0000 @@ -1,164 +1,207 @@ -UNZIPSFX(1L) UNZIPSFX(1L) + +UNZIPSFX(1L) UNZIPSFX(1L) NAME - unzipsfx - self-extracting stub for prepending to ZIP archives + unzipsfx - self-extracting stub for prepending to ZIP + archives SYNOPSIS - [-cfptuz[ajnoqsCLV$]] [file(s) ... - [-x xfile(s) ...]] + [-cfptuz[ajnoqsCLV$]] + [file(s) ... [-x xfile(s) ...]] DESCRIPTION - unzipsfx is a modified version of unzip(1L) designed to be prepended to - existing ZIP archives in order to form self-extracting archives. - Instead of taking its first non-flag argument to be the zipfile(s) to - be extracted, unzipsfx seeks itself under the name by which it was - invoked and tests or extracts the contents of the appended archive. - Because the executable stub adds bulk to the archive (the whole purpose - of which is to be as small as possible), a number of the less-vital - capabilities in regular unzip have been removed. Among these are the - usage (or help) screen, the listing and diagnostic functions (-l and - -v), the ability to decompress older compression formats (the - ``reduce,'' ``shrink'' and ``implode'' methods). The ability to - extract to a directory other than the current one can be selected as a - compile-time option, which is now enabled by default since UnZipSFX - version 5.5. Similarly, decryption is supported as a compile-time - option but should be avoided unless the attached archive contains - encrypted files. Starting with release 5.5, another compile-time option - adds a simple ``run command after extraction'' feature. This feature - is currently incompatible with the ``extract to different directory'' - feature and remains disabled by default. - - Note that self-extracting archives made with unzipsfx are no more (or - less) portable across different operating systems than is the unzip - executable itself. In general a self-extracting archive made on a par- - ticular Unix system, for example, will only self-extract under the same - flavor of Unix. Regular unzip may still be used to extract the embed- - ded archive as with any normal zipfile, although it will generate a - harmless warning about extra bytes at the beginning of the zipfile. - Despite this, however, the self-extracting archive is technically not a - valid ZIP archive, and PKUNZIP may be unable to test or extract it. - This limitation is due to the simplistic manner in which the archive is - created; the internal directory structure is not updated to reflect the - extra bytes prepended to the original zipfile. + unzipsfx is a modified version of unzip(1L) designed to be + prepended to existing ZIP archives in order to form self- + extracting archives. Instead of taking its first non-flag + argument to be the zipfile(s) to be extracted, unzipsfx + seeks itself under the name by which it was invoked and + tests or extracts the contents of the appended archive. + Because the executable stub adds bulk to the archive (the + whole purpose of which is to be as small as possible), a + number of the less-vital capabilities in regular unzip + have been removed. Among these are the usage (or help) + screen, the listing and diagnostic functions (-l and -v), + the ability to decompress older compression formats (the + ``reduce,'' ``shrink'' and ``implode'' methods). The + ability to extract to a directory other than the current + one can be selected as a compile-time option, which is now + enabled by default since UnZipSFX version 5.5. Similary, + decryption is supported as a compile-time option but + should be avoided unless the attached archive contains + encrypted files. Starting with release 5.5, another com- + pile-time option adds a simple ``run command after extrac- + tion'' feature. This feature is currently incompatible + with the ``extract to different directory'' feature and + remains disabled by default. + + Note that self-extracting archives made with unzipsfx are + no more (or less) portable across different operating sys- + tems than is the unzip executable itself. In general a + self-extracting archive made on a particular Unix system, + for example, will only self-extract under the same flavor + of Unix. Regular unzip may still be used to extract the + embedded archive as with any normal zipfile, although it + will generate a harmless warning about extra bytes at the + beginning of the zipfile. Despite this, however, the + self-extracting archive is technically not a valid ZIP + archive, and PKUNZIP may be unable to test or extract it. + This limitation is due to the simplistic manner in which + the archive is created; the internal directory structure + is not updated to reflect the extra bytes prepended to the + original zipfile. ARGUMENTS [file(s)] - An optional list of archive members to be processed. Regular - expressions (wildcards) similar to those in Unix egrep(1) may be - used to match multiple members. These wildcards may contain: + An optional list of archive members to be pro- + cessed. Regular expressions (wildcards) similar to + those in Unix egrep(1) may be used to match + +Info-ZIP 28 February 2005 (v5.52) 1 + +UNZIPSFX(1L) UNZIPSFX(1L) + + multiple members. These wildcards may contain: * matches a sequence of 0 or more characters ? matches exactly 1 character - [...] matches any single character found inside the brackets; - ranges are specified by a beginning character, a hyphen, - and an ending character. If an exclamation point or a - caret (`!' or `^') follows the left bracket, then the - range of characters within the brackets is complemented - (that is, anything except the characters inside the - brackets is considered a match). - - (Be sure to quote any character that might otherwise be inter- - preted or modified by the operating system, particularly under - Unix and VMS.) + [...] matches any single character found inside + the brackets; ranges are specified by a + beginning character, a hyphen, and an ending + character. If an exclamation point or a + caret (`!' or `^') follows the left bracket, + then the range of characters within the + brackets is complemented (that is, anything + except the characters inside the brackets is + considered a match). + + (Be sure to quote any character that might other- + wise be interpreted or modified by the operating + system, particularly under Unix and VMS.) [-x xfile(s)] - An optional list of archive members to be excluded from process- - ing. Since wildcard characters match directory separators - (`/'), this option may be used to exclude any files that are in - subdirectories. For example, ``foosfx *.[ch] -x */*'' would - extract all C source files in the main directory, but none in - any subdirectories. Without the -x option, all C source files - in all directories within the zipfile would be extracted. + An optional list of archive members to be excluded + from processing. Since wildcard characters match + directory separators (`/'), this option may be used + to exclude any files that are in subdirectories. + For example, ``foosfx *.[ch] -x */*'' would extract + all C source files in the main directory, but none + in any subdirectories. Without the -x option, all + C source files in all directories within the zip- + file would be extracted. - If unzipsfx is compiled with SFX_EXDIR defined, the following option is - also enabled: + If unzipsfx is compiled with SFX_EXDIR defined, the fol- + lowing option is also enabled: [-d exdir] - An optional directory to which to extract files. By default, - all files and subdirectories are recreated in the current direc- - tory; the -d option allows extraction in an arbitrary directory - (always assuming one has permission to write to the directory). - The option and directory may be concatenated without any white - space between them, but note that this may cause normal shell - behavior to be suppressed. In particular, ``-d ~'' (tilde) is - expanded by Unix C shells into the name of the user's home - directory, but ``-d~'' is treated as a literal subdirectory - ``~'' of the current directory. + An optional directory to which to extract files. + By default, all files and subdirectories are recre- + ated in the current directory; the -d option allows + extraction in an arbitrary directory (always assum- + ing one has permission to write to the directory). + The option and directory may be concatenated with- + out any white space between them, but note that + this may cause normal shell behavior to be sup- + pressed. In particular, ``-d ~'' (tilde) is + expanded by Unix C shells into the name of the + user's home directory, but ``-d~'' is treated as a + literal subdirectory ``~'' of the current direc- + tory. OPTIONS - unzipsfx supports the following unzip(1L) options: -c and -p (extract - to standard output/screen), -f and -u (freshen and update existing - files upon extraction), -t (test archive) and -z (print archive com- - ment). All normal listing options (-l, -v and -Z) have been removed, - but the testing option (-t) may be used as a ``poor man's'' listing. - Alternatively, those creating self-extracting archives may wish to - include a short listing in the zipfile comment. + unzipsfx supports the following unzip(1L) options: -c and + -p (extract to standard output/screen), -f and -u (freshen + and update existing files upon extraction), -t (test + archive) and -z (print archive comment). All normal + +Info-ZIP 28 February 2005 (v5.52) 2 + +UNZIPSFX(1L) UNZIPSFX(1L) + + listing options (-l, -v and -Z) have been removed, but the + testing option (-t) may be used as a ``poor man's'' list- + ing. Alternatively, those creating self-extracting + archives may wish to include a short listing in the zip- + file comment. - See unzip(1L) for a more complete description of these options. + See unzip(1L) for a more complete description of these + options. MODIFIERS - unzipsfx currently supports all unzip(1L) modifiers: -a (convert text - files), -n (never overwrite), -o (overwrite without prompting), -q - (operate quietly), -C (match names case-insensitively), -L (convert - uppercase-OS names to lowercase), -j (junk paths) and -V (retain ver- - sion numbers); plus the following operating-system specific options: - -X (restore VMS owner/protection info), -s (convert spaces in filenames - to underscores [DOS, OS/2, NT]) and -$ (restore volume label [DOS, - OS/2, NT, Amiga]). - - (Support for regular ASCII text-conversion may be removed in future - versions, since it is simple enough for the archive's creator to ensure - that text files have the appropriate format for the local OS. EBCDIC - conversion will of course continue to be supported since the zipfile + unzipsfx currently supports all unzip(1L) modifiers: -a + (convert text files), -n (never overwrite), -o (overwrite + without prompting), -q (operate quietly), -C (match names + case-insensitively), -L (convert uppercase-OS names to + lowercase), -j (junk paths) and -V (retain version num- + bers); plus the following operating-system specific + options: -X (restore VMS owner/protection info), -s (con- + vert spaces in filenames to underscores [DOS, OS/2, NT]) + and -$ (restore volume label [DOS, OS/2, NT, Amiga]). + + (Support for regular ASCII text-conversion may be removed + in future versions, since it is simple enough for the + archive's creator to ensure that text files have the + appropriate format for the local OS. EBCDIC conversion + will of course continue to be supported since the zipfile format implies ASCII storage of text files.) - See unzip(1L) for a more complete description of these modifiers. + See unzip(1L) for a more complete description of these + modifiers. ENVIRONMENT OPTIONS - unzipsfx uses the same environment variables as unzip(1L) does, - although this is likely to be an issue only for the person creating and - testing the self-extracting archive. See unzip(1L) for details. + unzipsfx uses the same environment variables as unzip(1L) + does, although this is likely to be an issue only for the + person creating and testing the self-extracting archive. + See unzip(1L) for details. DECRYPTION - Decryption is supported exactly as in unzip(1L); that is, interactively - with a non-echoing prompt for the password(s). See unzip(1L) for - details. Once again, note that if the archive has no encrypted files - there is no reason to use a version of unzipsfx with decryption sup- + Decryption is supported exactly as in unzip(1L); that is, + interactively with a non-echoing prompt for the pass- + word(s). See unzip(1L) for details. Once again, note + that if the archive has no encrypted files there is no + reason to use a version of unzipsfx with decryption sup- port; that only adds to the size of the archive. AUTORUN COMMAND - When unzipsfx was compiled with CHEAP_SFX_AUTORUN defined, a simple - ``command autorun'' feature is supported. You may enter a command into - the Zip archive comment, using the following format: + When unzipsfx was compiled with CHEAP_SFX_AUTORUN defined, + a simple ``command autorun'' feature is supported. You may + enter a command into the Zip archive comment, using the + following format: $AUTORUN$>[command line string] - When unzipsfx recognizes the ``$AUTORUN$>'' token at the beginning of - the Zip archive comment, the remainder of the first line of the comment - (until the first newline character) is passed as a shell command to the - operating system using the C rtl ``system'' function. Before executing - the command, unzipsfx displays the command on the console and prompts - the user for confirmation. When the user has switched off prompting by - specifying the -q option, autorun commands are never executed. - - In case the archive comment contains additional lines of text, the - remainder of the archive comment following the first line is displayed - normally, unless quiet operation was requested by supplying a -q - option. + When unzipsfxP recognizes the ``$AUTORUN$>'' token at the + beginning of the Zip archive comment, the remainder of the + +Info-ZIP 28 February 2005 (v5.52) 3 + +UNZIPSFX(1L) UNZIPSFX(1L) + + first line of the comment (until the first newline charac- + ter) is passed as a shell command to the operating system + using the C rtl ``system'' function. Before executing the + command, unzipsfxP displays the command on the console and + prompts the user for confirmation. When the user has + switched off prompting by specifying the -q option, + autorun commands are never executed. + + In case the archive comment contains additonal lines of + text, the remainder of the archive comment following the + first line is displayed normally, unless quiet operation + was requested by supplying a -q option. EXAMPLES - To create a self-extracting archive letters from a regular zipfile let- - ters.zip and change the new archive's permissions to be world-exe- - cutable under Unix: + To create a self-extracting archive letters from a regular + zipfile letters.zip and change the new archive's permis- + sions to be world-executable under Unix: cat unzipsfx letters.zip > letters chmod 755 letters zip -A letters - To create the same archive under MS-DOS, OS/2 or NT (note the use of - the /b [binary] option to the copy command): + To create the same archive under MS-DOS, OS/2 or NT (note + the use of the /b [binary] option to the copy command): copy /b unzipsfx.exe+letters.zip letters.exe zip -A letters.exe @@ -169,27 +212,33 @@ letters == "$currentdisk:[currentdir]letters.exe" zip -A letters.exe - (The VMS append command may also be used. The second command installs - the new program as a ``foreign command'' capable of taking arguments. - The third line assumes that Zip is already installed as a foreign com- - mand.) Under AmigaDOS: + (The VMS append command may also be used. The second com- + mand installs the new program as a ``foreign command'' + capable of taking arguments. The third line assumes that + Zip is already installed as a foreign command.) Under + AmigaDOS: MakeSFX letters letters.zip UnZipSFX - (MakeSFX is included with the UnZip source distribution and with Amiga - binary distributions. ``zip -A'' doesn't work on Amiga self-extracting - archives.) To test (or list) the newly created self-extracting - archive: + (MakeSFX is included with the UnZip source distribution + and with Amiga binary distributions. ``zip -A'' doesn't + work on Amiga self-extracting archives.) To test (or + list) the newly created self-extracting archive: letters -t - To test letters quietly, printing only a summary message indicating - whether the archive is OK or not: + To test letters quietly, printing only a summary message + indicating whether the archive is OK or not: letters -tqq - To extract the complete contents into the current directory, recreating - all files and subdirectories as necessary: +Info-ZIP 28 February 2005 (v5.52) 4 + +UNZIPSFX(1L) UNZIPSFX(1L) + + To extract the complete contents into the current direc- + tory, recreating all files and subdirectories as neces- + sary: letters @@ -201,7 +250,8 @@ letters -x *.txt - To extract only the README file to standard output (the screen): + To extract only the README file to standard output (the + screen): letters -c README @@ -210,59 +260,70 @@ letters -z LIMITATIONS - The principle and fundamental limitation of unzipsfx is that it is not - portable across architectures or operating systems, and therefore nei- - ther are the resulting archives. For some architectures there is lim- - ited portability, however (e.g., between some flavors of Intel-based - Unix). - - Another problem with the current implementation is that any archive - with ``junk'' prepended to the beginning technically is no longer a - zipfile (unless zip(1) is used to adjust the zipfile offsets appropri- - ately, as noted above). unzip(1) takes note of the prepended bytes and - ignores them since some file-transfer protocols, notably MacBinary, are - also known to prepend junk. But PKWARE's archiver suite may not be - able to deal with the modified archive unless its offsets have been - adjusted. - - unzipsfx has no knowledge of the user's PATH, so in general an archive - must either be in the current directory when it is invoked, or else a - full or relative path must be given. If a user attempts to extract the - archive from a directory in the PATH other than the current one, - unzipsfx will print a warning to the effect, ``can't find myself.'' - This is always true under Unix and may be true in some cases under MS- - DOS, depending on the compiler used (Microsoft C fully qualifies the - program name, but other compilers may not). Under OS/2 and NT there - are operating-system calls available that provide the full path name, - so the archive may be invoked from anywhere in the user's path. The - situation is not known for AmigaDOS, Atari TOS, MacOS, etc. - - As noted above, a number of the normal unzip(1L) functions have been - removed in order to make unzipsfx smaller: usage and diagnostic info, - listing functions and extraction to other directories. Also, only - stored and deflated files are supported. The latter limitation is - mainly relevant to those who create SFX archives, however. - - VMS users must know how to set up self-extracting archives as foreign - commands in order to use any of unzipsfx's options. This is not neces- - sary for simple extraction, but the command to do so then becomes, - e.g., ``run letters'' (to continue the examples given above). - - unzipsfx on the Amiga requires the use of a special program, MakeSFX, - in order to create working self-extracting archives; simple concatena- - tion does not work. (For technically oriented users, the attached - archive is defined as a ``debug hunk.'') There may be compatibility - problems between the ROM levels of older Amigas and newer ones. + The principle and fundamental limitation of unzipsfx is + that it is not portable across architectures or operating + systems, and therefore neither are the resulting archives. + For some architectures there is limited portability, how- + ever (e.g., between some flavors of Intel-based Unix). + + Another problem with the current implementation is that + any archive with ``junk'' prepended to the beginning tech- + nically is no longer a zipfile (unless zip(1) is used to + adjust the zipfile offsets appropriately, as noted above). + unzip(1) takes note of the prepended bytes and ignores + them since some file-transfer protocols, notably MacBi- + nary, are also known to prepend junk. But PKWARE's + archiver suite may not be able to deal with the modified + archive unless its offsets have been adjusted. + + unzipsfx has no knowledge of the user's PATH, so in gen- + eral an archive must either be in the current directory + when it is invoked, or else a full or relative path must + be given. If a user attempts to extract the archive from + a directory in the PATH other than the current one, + unzipsfx will print a warning to the effect, ``can't find + myself.'' This is always true under Unix and may be true + in some cases under MS-DOS, depending on the compiler used + (Microsoft C fully qualifies the program name, but other + compilers may not). Under OS/2 and NT there are operat- + ing-system calls available that provide the full path + name, so the archive may be invoked from anywhere in the + user's path. The situation is not known for AmigaDOS, + Atari TOS, MacOS, etc. + +Info-ZIP 28 February 2005 (v5.52) 5 + +UNZIPSFX(1L) UNZIPSFX(1L) + + As noted above, a number of the normal unzip(1L) functions + have been removed in order to make unzipsfx smaller: + usage and diagnostic info, listing functions and extrac- + tion to other directories. Also, only stored and deflated + files are supported. The latter limitation is mainly rel- + evant to those who create SFX archives, however. + + VMS users must know how to set up self-extracting archives + as foreign commands in order to use any of unzipsfx's + options. This is not necessary for simple extraction, but + the command to do so then becomes, e.g., ``run letters'' + (to continue the examples given above). + + unzipsfx on the Amiga requires the use of a special pro- + gram, MakeSFX, in order to create working self-extracting + archives; simple concatenation does not work. (For tech- + nically oriented users, the attached archive is defined as + a ``debug hunk.'') There may be compatibility problems + between the ROM levels of older Amigas and newer ones. All current bugs in unzip(1L) exist in unzipsfx as well. DIAGNOSTICS - unzipsfx's exit status (error level) is identical to that of unzip(1L); - see the corresponding man page. + unzipsfx's exit status (error level) is identical to that + of unzip(1L); see the corresponding man page. SEE ALSO - funzip(1L), unzip(1L), zip(1L), zipcloak(1L), zipgrep(1L), zipinfo(1L), - zipnote(1L), zipsplit(1L) + funzip(1L), unzip(1L), zip(1L), zipcloak(1L), zipgrep(1L), + zipinfo(1L), zipnote(1L), zipsplit(1L) URL The Info-ZIP home page is currently at @@ -271,9 +332,11 @@ ftp://ftp.info-zip.org/pub/infozip/ . AUTHORS - Greg Roelofs was responsible for the basic modifications to UnZip nec- - essary to create UnZipSFX. See unzip(1L) for the current list of Zip- - Bugs authors, or the file CONTRIBS in the UnZip source distribution for - the full list of Info-ZIP contributors. + Greg Roelofs was responsible for the basic modifications + to UnZip necessary to create UnZipSFX. See unzip(1L) for + the current list of Zip-Bugs authors, or the file CONTRIBS + in the UnZip source distribution for the full list of + Info-ZIP contributors. + +Info-ZIP 28 February 2005 (v5.52) 6 -Info-ZIP 20 April 2009 (v6.0) UNZIPSFX(1L) diff -Nru unzip-6.0/unzipstb.c unzip-6.0/unzipstb.c --- unzip-6.0/unzipstb.c 2009-01-25 19:53:08.000000000 +0000 +++ unzip-6.0/unzipstb.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2001 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -22,103 +22,33 @@ #include #include "unzip.h" -#if defined(MODERN) && !defined(NO_STDDEF_H) -# include -#endif #include "unzvers.h" int main(int argc, char *argv[]) { - static ZCONST UzpVer *pVersion; /* no pervert jokes, please... */ + static UzpVer *pVersion; /* no pervert jokes, please... */ pVersion = UzpVersion(); printf("UnZip stub: checking version numbers (DLL is dated %s)\n", pVersion->date); - printf(" UnZip versions: expecting %u.%u%u, using %u.%u%u%s\n", + printf(" UnZip versions: expecting %d.%d%d, using %d.%d%d%s\n", UZ_MAJORVER, UZ_MINORVER, UZ_PATCHLEVEL, pVersion->unzip.major, pVersion->unzip.minor, pVersion->unzip.patchlevel, pVersion->betalevel); - printf(" ZipInfo versions: expecting %u.%u%u, using %u.%u%u\n", + printf(" ZipInfo versions: expecting %d.%d%d, using %d.%d%d\n", ZI_MAJORVER, ZI_MINORVER, UZ_PATCHLEVEL, pVersion->zipinfo.major, pVersion->zipinfo.minor, pVersion->zipinfo.patchlevel); /* D2_M*VER and os2dll.* are obsolete, though retained for compatibility: - printf(" OS2 DLL versions: expecting %u.%u%u, using %u.%u%u\n", + printf(" OS2 DLL versions: expecting %d.%d%d, using %d.%d%d\n", D2_MAJORVER, D2_MINORVER, D2_PATCHLEVEL, pVersion->os2dll.major, pVersion->os2dll.minor, pVersion->os2dll.patchlevel); */ if (pVersion->flag & 2) printf(" using zlib version %s\n", pVersion->zlib_version); - - /* This example code only uses the dll calls UzpVersion() and - * UzpMain(). The APIs for these two calls have maintained backward - * compatibility since at least the UnZip release 5.3 ! - */ -# define UZDLL_MINVERS_MAJOR 5 -# define UZDLL_MINVERS_MINOR 3 -# define UZDLL_MINVERS_PATCHLEVEL 0 - /* This UnZip DLL stub requires a DLL version of at least: */ - if ( (pVersion->unzip.major < UZDLL_MINVERS_MAJOR) || - ((pVersion->unzip.major == UZDLL_MINVERS_MAJOR) && - ((pVersion->unzip.minor < UZDLL_MINVERS_MINOR) || - ((pVersion->unzip.minor == UZDLL_MINVERS_MINOR) && - (pVersion->unzip.patchlevel < UZDLL_MINVERS_PATCHLEVEL) - ) - ) - ) ) - { - printf(" aborting because of too old UnZip DLL version!\n"); - return -1; - } - - /* In case the offsetof() macro is not supported by some C compiler - environment, it might be replaced by something like: - ((extent)(void *)&(((UzpVer *)0)->dllapimin)) - */ - if (pVersion->structlen >= -#if defined(MODERN) && !defined(NO_STDDEF_H) - ( offsetof(UzpVer, dllapimin) -#else - ((unsigned)&(((UzpVer *)0)->dllapimin)) -#endif - + sizeof(_version_type) )) - { -#ifdef OS2DLL -# define UZ_API_COMP_MAJOR UZ_OS2API_COMP_MAJOR -# define UZ_API_COMP_MINOR UZ_OS2API_COMP_MINOR -# define UZ_API_COMP_REVIS UZ_OS2API_COMP_REVIS -#else /* !OS2DLL */ -#ifdef WINDLL -# define UZ_API_COMP_MAJOR UZ_WINAPI_COMP_MAJOR -# define UZ_API_COMP_MINOR UZ_WINAPI_COMP_MINOR -# define UZ_API_COMP_REVIS UZ_WINAPI_COMP_REVIS -#else /* !WINDLL */ -# define UZ_API_COMP_MAJOR UZ_GENAPI_COMP_MAJOR -# define UZ_API_COMP_MINOR UZ_GENAPI_COMP_MINOR -# define UZ_API_COMP_REVIS UZ_GENAPI_COMP_REVIS -#endif /* ?WINDLL */ -#endif /* ?OS2DLL */ - printf( - " UnZip API version: can handle <= %u.%u%u, DLL supplies %u.%u%u\n", - UZ_API_COMP_MAJOR, UZ_API_COMP_MINOR, UZ_API_COMP_REVIS, - pVersion->dllapimin.major, pVersion->dllapimin.minor, - pVersion->dllapimin.patchlevel); - if ( (pVersion->dllapimin.major > UZ_API_COMP_MAJOR) || - ((pVersion->dllapimin.major == UZ_API_COMP_MAJOR) && - ((pVersion->dllapimin.minor > UZ_API_COMP_MINOR) || - ((pVersion->dllapimin.minor == UZ_API_COMP_MINOR) && - (pVersion->dllapimin.patchlevel > UZ_API_COMP_REVIS) - ) - ) - ) ) - { - printf(" aborting because of unsupported dll api version!\n"); - return -1; - } - } printf("\n"); /* call the actual UnZip routine (string-arguments version) */ diff -Nru unzip-6.0/unzip.txt unzip-6.0/unzip.txt --- unzip-6.0/unzip.txt 2009-04-20 01:00:30.000000000 +0000 +++ unzip-6.0/unzip.txt 2010-05-14 07:26:14.000000000 +0000 @@ -1,435 +1,482 @@ -UNZIP(1L) UNZIP(1L) + +UNZIP(1L) UNZIP(1L) NAME - unzip - list, test and extract compressed files in a ZIP archive + unzip - list, test and extract compressed files in a ZIP + archive SYNOPSIS - unzip [-Z] [-cflptTuvz[abjnoqsCDKLMUVWX$/:^]] file[.zip] [file(s) ...] - [-x xfile(s) ...] [-d exdir] + unzip [-Z] [-cflptTuvz[abjnoqsCKLMVWX$/:]] file[.zip] + [file(s) ...] [-x xfile(s) ...] [-d exdir] DESCRIPTION - unzip will list, test, or extract files from a ZIP archive, commonly - found on MS-DOS systems. The default behavior (with no options) is to - extract into the current directory (and subdirectories below it) all - files from the specified ZIP archive. A companion program, zip(1L), - creates ZIP archives; both programs are compatible with archives cre- - ated by PKWARE's PKZIP and PKUNZIP for MS-DOS, but in many cases the - program options or default behaviors differ. + unzip will list, test, or extract files from a ZIP + archive, commonly found on MS-DOS systems. The default + behavior (with no options) is to extract into the current + directory (and subdirectories below it) all files from the + specified ZIP archive. A companion program, zip(1L), cre- + ates ZIP archives; both programs are compatible with + archives created by PKWARE's PKZIP and PKUNZIP for MS-DOS, + but in many cases the program options or default behaviors + differ. ARGUMENTS file[.zip] - Path of the ZIP archive(s). If the file specification is a - wildcard, each matching file is processed in an order determined - by the operating system (or file system). Only the filename can - be a wildcard; the path itself cannot. Wildcard expressions are - similar to those supported in commonly used Unix shells (sh, - ksh, csh) and may contain: + Path of the ZIP archive(s). If the file specifica- + tion is a wildcard, each matching file is processed + in an order determined by the operating system (or + file system). Only the filename can be a wildcard; + the path itself cannot. Wildcard expressions are + similar to those supported in commonly used Unix + shells (sh, ksh, csh) and may contain: * matches a sequence of 0 or more characters ? matches exactly 1 character - [...] matches any single character found inside the brackets; - ranges are specified by a beginning character, a hyphen, - and an ending character. If an exclamation point or a - caret (`!' or `^') follows the left bracket, then the - range of characters within the brackets is complemented - (that is, anything except the characters inside the - brackets is considered a match). To specify a verbatim - left bracket, the three-character sequence ``[[]'' has to - be used. - - (Be sure to quote any character that might otherwise be inter- - preted or modified by the operating system, particularly under - Unix and VMS.) If no matches are found, the specification is - assumed to be a literal filename; and if that also fails, the - suffix .zip is appended. Note that self-extracting ZIP files - are supported, as with any other ZIP archive; just specify the - .exe suffix (if any) explicitly. + [...] matches any single character found inside + the brackets; ranges are specified by a + beginning character, a hyphen, and an ending + character. If an exclamation point or a + caret (`!' or `^') follows the left bracket, + then the range of characters within the + brackets is complemented (that is, anything + except the characters inside the brackets is + considered a match). To specify a verbatim + left bracket, the three-character sequence + ``[[]'' has to be used. + + (Be sure to quote any character that might other- + wise be interpreted or modified by the operating + system, particularly under Unix and VMS.) If no + matches are found, the specification is assumed to + be a literal filename; and if that also fails, the + suffix .zip is appended. Note that self-extracting + ZIP files are supported, as with any other ZIP + archive; just specify the .exe suffix (if any) + explicitly. + +Info-ZIP 28 February 2005 (v5.52) 1 + +UNZIP(1L) UNZIP(1L) [file(s)] - An optional list of archive members to be processed, separated - by spaces. (VMS versions compiled with VMSCLI defined must - delimit files with commas instead. See -v in OPTIONS below.) - Regular expressions (wildcards) may be used to match multiple - members; see above. Again, be sure to quote expressions that - would otherwise be expanded or modified by the operating system. + An optional list of archive members to be pro- + cessed, separated by spaces. (VMS versions com- + piled with VMSCLI defined must delimit files with + commas instead. See -v in OPTIONS below.) Regular + expressions (wildcards) may be used to match multi- + ple members; see above. Again, be sure to quote + expressions that would otherwise be expanded or + modified by the operating system. [-x xfile(s)] - An optional list of archive members to be excluded from process- - ing. Since wildcard characters normally match (`/') directory - separators (for exceptions see the option -W), this option may - be used to exclude any files that are in subdirectories. For - example, ``unzip foo *.[ch] -x */*'' would extract all C source - files in the main directory, but none in any subdirectories. - Without the -x option, all C source files in all directories - within the zipfile would be extracted. + An optional list of archive members to be excluded + from processing. Since wildcard characters nor- + mally match (`/') directory separators (for exep- + tions see the option -W, this option may be used to + exclude any files that are in subdirectories. For + example, ``unzip foo *.[ch] -x */*'' would extract + all C source files in the main directory, but none + in any subdirectories. Without the -x option, all + C source files in all directories within the zip- + file would be extracted. [-d exdir] - An optional directory to which to extract files. By default, - all files and subdirectories are recreated in the current direc- - tory; the -d option allows extraction in an arbitrary directory - (always assuming one has permission to write to the directory). - This option need not appear at the end of the command line; it - is also accepted before the zipfile specification (with the nor- - mal options), immediately after the zipfile specification, or - between the file(s) and the -x option. The option and directory - may be concatenated without any white space between them, but - note that this may cause normal shell behavior to be suppressed. - In particular, ``-d ~'' (tilde) is expanded by Unix C shells - into the name of the user's home directory, but ``-d~'' is - treated as a literal subdirectory ``~'' of the current direc- - tory. + An optional directory to which to extract files. + By default, all files and subdirectories are recre- + ated in the current directory; the -d option allows + extraction in an arbitrary directory (always assum- + ing one has permission to write to the directory). + This option need not appear at the end of the com- + mand line; it is also accepted before the zipfile + specification (with the normal options), immedi- + ately after the zipfile specification, or between + the file(s) and the -x option. The option and + directory may be concatenated without any white + space between them, but note that this may cause + normal shell behavior to be suppressed. In partic- + ular, ``-d ~'' (tilde) is expanded by Unix C shells + into the name of the user's home directory, but + ``-d~'' is treated as a literal subdirectory ``~'' + of the current directory. OPTIONS - Note that, in order to support obsolescent hardware, unzip's usage - screen is limited to 22 or 23 lines and should therefore be considered - only a reminder of the basic unzip syntax rather than an exhaustive - list of all possible flags. The exhaustive list follows: - - -Z zipinfo(1L) mode. If the first option on the command line is - -Z, the remaining options are taken to be zipinfo(1L) options. - See the appropriate manual page for a description of these - options. - - -A [OS/2, Unix DLL] print extended help for the DLL's programming - interface (API). - - -c extract files to stdout/screen (``CRT''). This option is simi- - lar to the -p option except that the name of each file is - printed as it is extracted, the -a option is allowed, and ASCII- - EBCDIC conversion is automatically performed if appropriate. - This option is not listed in the unzip usage screen. - - -f freshen existing files, i.e., extract only those files that - already exist on disk and that are newer than the disk copies. - By default unzip queries before overwriting, but the -o option - may be used to suppress the queries. Note that under many oper- - ating systems, the TZ (timezone) environment variable must be - set correctly in order for -f and -u to work properly (under - Unix the variable is usually set automatically). The reasons - for this are somewhat subtle but have to do with the differences - between DOS-format file times (always local time) and Unix-for- - mat times (always in GMT/UTC) and the necessity to compare the - two. A typical TZ value is ``PST8PDT'' (US Pacific time with - automatic adjustment for Daylight Savings Time or ``summer - time''). - - -l list archive files (short format). The names, uncompressed file - sizes and modification dates and times of the specified files - are printed, along with totals for all files specified. If - UnZip was compiled with OS2_EAS defined, the -l option also - lists columns for the sizes of stored OS/2 extended attributes - (EAs) and OS/2 access control lists (ACLs). In addition, the - zipfile comment and individual file comments (if any) are dis- - played. If a file was archived from a single-case file system - (for example, the old MS-DOS FAT file system) and the -L option - was given, the filename is converted to lowercase and is pre- - fixed with a caret (^). - - -p extract files to pipe (stdout). Nothing but the file data is - sent to stdout, and the files are always extracted in binary - format, just as they are stored (no conversions). - - -t test archive files. This option extracts each specified file in - memory and compares the CRC (cyclic redundancy check, an - enhanced checksum) of the expanded file with the original file's - stored CRC value. - - -T [most OSes] set the timestamp on the archive(s) to that of the - newest file in each one. This corresponds to zip's -go option - except that it can be used on wildcard zipfiles (e.g., ``unzip - -T \*.zip'') and is much faster. - - -u update existing files and create new ones if needed. This - option performs the same function as the -f option, extracting - (with query) files that are newer than those with the same name - on disk, and in addition it extracts those files that do not - already exist on disk. See -f above for information on setting - the timezone properly. - - -v list archive files (verbose format) or show diagnostic version - info. This option has evolved and now behaves as both an option - and a modifier. As an option it has two purposes: when a zip- - file is specified with no other options, -v lists archive files - verbosely, adding to the basic -l info the compression method, - compressed size, compression ratio and 32-bit CRC. In contrast - to most of the competing utilities, unzip removes the 12 addi- - tional header bytes of encrypted entries from the compressed - size numbers. Therefore, compressed size and compression ratio - figures are independent of the entry's encryption status and - show the correct compression performance. (The complete size of - the encrypted compressed data stream for zipfile entries is - reported by the more verbose zipinfo(1L) reports, see the sepa- - rate manual.) When no zipfile is specified (that is, the com- - plete command is simply ``unzip -v''), a diagnostic screen is - printed. In addition to the normal header with release date and - version, unzip lists the home Info-ZIP ftp site and where to - find a list of other ftp and non-ftp sites; the target operating - system for which it was compiled, as well as (possibly) the - hardware on which it was compiled, the compiler and version - used, and the compilation date; any special compilation options - that might affect the program's operation (see also DECRYPTION - below); and any options stored in environment variables that - might do the same (see ENVIRONMENT OPTIONS below). As a modi- - fier it works in conjunction with other options (e.g., -t) to - produce more verbose or debugging output; this is not yet fully - implemented but will be in future releases. + Note that, in order to support obsolescent hardware, + unzip's usage screen is limited to 22 or 23 lines and + should therefore be considered only a reminder of the + basic unzip syntax rather than an exhaustive list of all + possible flags. The exhaustive list follows: + + -Z zipinfo(1L) mode. If the first option on the com- + mand line is -Z, the remaining options are taken to + be zipinfo(1L) options. See the appropriate manual + page for a description of these options. + + -A [OS/2, Unix DLL] print extended help for the DLL's + +Info-ZIP 28 February 2005 (v5.52) 2 + +UNZIP(1L) UNZIP(1L) + + programming interface (API). + + -c extract files to stdout/screen (``CRT''). This + option is similar to the -p option except that the + name of each file is printed as it is extracted, + the -a option is allowed, and ASCII-EBCDIC conver- + sion is automatically performed if appropriate. + This option is not listed in the unzip usage + screen. + + -f freshen existing files, i.e., extract only those + files that already exist on disk and that are newer + than the disk copies. By default unzip queries + before overwriting, but the -o option may be used + to suppress the queries. Note that under many + operating systems, the TZ (timezone) environment + variable must be set correctly in order for -f and + -u to work properly (under Unix the variable is + usually set automatically). The reasons for this + are somewhat subtle but have to do with the differ- + ences between DOS-format file times (always local + time) and Unix-format times (always in GMT/UTC) and + the necessity to compare the two. A typical TZ + value is ``PST8PDT'' (US Pacific time with auto- + matic adjustment for Daylight Savings Time or + ``summer time''). + + -l list archive files (short format). The names, + uncompressed file sizes and modification dates and + times of the specified files are printed, along + with totals for all files specified. If UnZip was + compiled with OS2_EAS defined, the -l option also + lists columns for the sizes of stored OS/2 extended + attributes (EAs) and OS/2 access control lists + (ACLs). In addition, the zipfile comment and indi- + vidual file comments (if any) are displayed. If a + file was archived from a single-case file system + (for example, the old MS-DOS FAT file system) and + the -L option was given, the filename is converted + to lowercase and is prefixed with a caret (^). + + -p extract files to pipe (stdout). Nothing but the + file data is sent to stdout, and the files are + always extracted in binary format, just as they are + stored (no conversions). + + -t test archive files. This option extracts each + specified file in memory and compares the CRC + (cyclic redundancy check, an enhanced checksum) of + the expanded file with the original file's stored + CRC value. + + -T [most OSes] set the timestamp on the archive(s) to + that of the newest file in each one. This + +Info-ZIP 28 February 2005 (v5.52) 3 + +UNZIP(1L) UNZIP(1L) + + corresponds to zip's -go option except that it can + be used on wildcard zipfiles (e.g., ``unzip -T + \*.zip'') and is much faster. + + -u update existing files and create new ones if + needed. This option performs the same function as + the -f option, extracting (with query) files that + are newer than those with the same name on disk, + and in addition it extracts those files that do not + already exist on disk. See -f above for informa- + tion on setting the timezone properly. + + -v be verbose or print diagnostic version info. This + option has evolved and now behaves as both an + option and a modifier. As an option it has two + purposes: when a zipfile is specified with no + other options, -v lists archive files verbosely, + adding to the basic -l info the compression method, + compressed size, compression ratio and 32-bit CRC. + In contrast to most of the competing utilities, + unzip removes the 12 additional header bytes of + encrypted entries from the compressed size numbers. + Therefore, compressed size and compression ratio + figures are independent of the entry's encryption + status and show the correct compression perfor- + mance. (The complete size of the encryped com- + pressed data stream for zipfile entries is reported + by the more verbose zipinfo(1L) reports, see the + separate manual.) When no zipfile is specified + (that is, the complete command is simply ``unzip + -v''), a diagnostic screen is printed. In addition + to the normal header with release date and version, + unzip lists the home Info-ZIP ftp site and where to + find a list of other ftp and non-ftp sites; the + target operating system for which it was compiled, + as well as (possibly) the hardware on which it was + compiled, the compiler and version used, and the + compilation date; any special compilation options + that might affect the program's operation (see also + DECRYPTION below); and any options stored in envi- + ronment variables that might do the same (see ENVI- + RONMENT OPTIONS below). As a modifier it works in + conjunction with other options (e.g., -t) to pro- + duce more verbose or debugging output; this is not + yet fully implemented but will be in future + releases. -z display only the archive comment. MODIFIERS - -a convert text files. Ordinarily all files are extracted exactly - as they are stored (as ``binary'' files). The -a option causes - files identified by zip as text files (those with the `t' label - in zipinfo listings, rather than `b') to be automatically - extracted as such, converting line endings, end-of-file charac- - ters and the character set itself as necessary. (For example, - Unix files use line feeds (LFs) for end-of-line (EOL) and have - no end-of-file (EOF) marker; Macintoshes use carriage returns - (CRs) for EOLs; and most PC operating systems use CR+LF for EOLs - and control-Z for EOF. In addition, IBM mainframes and the - Michigan Terminal System use EBCDIC rather than the more common - ASCII character set, and NT supports Unicode.) Note that zip's - identification of text files is by no means perfect; some - ``text'' files may actually be binary and vice versa. unzip - therefore prints ``[text]'' or ``[binary]'' as a visual check - for each file it extracts when using the -a option. The -aa - option forces all files to be extracted as text, regardless of - the supposed file type. On VMS, see also -S. - - -b [general] treat all files as binary (no text conversions). This - is a shortcut for ---a. - - -b [Tandem] force the creation files with filecode type 180 ('C') - when extracting Zip entries marked as "text". (On Tandem, -a is - enabled by default, see above). - - -b [VMS] auto-convert binary files (see -a above) to fixed-length, - 512-byte record format. Doubling the option (-bb) forces all - files to be extracted in this format. When extracting to stan- - dard output (-c or -p option in effect), the default conversion - of text record delimiters is disabled for binary (-b) resp. all - (-bb) files. - - -B [when compiled with UNIXBACKUP defined] save a backup copy of - each overwritten file. The backup file is gets the name of the - target file with a tilde and optionally a unique sequence number - (up to 5 digits) appended. The sequence number is applied when- - ever another file with the original name plus tilde already - exists. When used together with the "overwrite all" option -o, - numbered backup files are never created. In this case, all - backup files are named as the original file with an appended - tilde, existing backup files are deleted without notice. This - feature works similarly to the default behavior of emacs(1) in - many locations. - - Example: the old copy of ``foo'' is renamed to ``foo~''. - - Warning: Users should be aware that the -B option does not pre- - vent loss of existing data under all circumstances. For exam- - ple, when unzip is run in overwrite-all mode, an existing - ``foo~'' file is deleted before unzip attempts to rename ``foo'' - to ``foo~''. When this rename attempt fails (because of a file - locks, insufficient privileges, or ...), the extraction of - ``foo~'' gets cancelled, but the old backup file is already - lost. A similar scenario takes place when the sequence number - range for numbered backup files gets exhausted (99999, or 65535 - for 16-bit systems). In this case, the backup file with the - maximum sequence number is deleted and replaced by the new - backup version without notice. - - -C use case-insensitive matching for the selection of archive - entries from the command-line list of extract selection pat- - terns. unzip's philosophy is ``you get what you ask for'' (this - is also responsible for the -L/-U change; see the relevant - options below). Because some file systems are fully case-sensi- - tive (notably those under the Unix operating system) and because - both ZIP archives and unzip itself are portable across plat- - forms, unzip's default behavior is to match both wildcard and - literal filenames case-sensitively. That is, specifying ``make- - file'' on the command line will only match ``makefile'' in the - archive, not ``Makefile'' or ``MAKEFILE'' (and similarly for - wildcard specifications). Since this does not correspond to the - behavior of many other operating/file systems (for example, OS/2 - HPFS, which preserves mixed case but is not sensitive to it), - the -C option may be used to force all filename matches to be - case-insensitive. In the example above, all three files would - then match ``makefile'' (or ``make*'', or similar). The -C - option affects file specs in both the normal file list and the - excluded-file list (xlist). - - Please note that the -C option does neither affect the search - for the zipfile(s) nor the matching of archive entries to exist- - ing files on the extraction path. On a case-sensitive file sys- - tem, unzip will never try to overwrite a file ``FOO'' when - extracting an entry ``foo''! - - -D skip restoration of timestamps for extracted items. Normally, - unzip tries to restore all meta-information for extracted items - that are supplied in the Zip archive (and do not require privi- - leges or impose a security risk). By specifying -D, unzip is - told to suppress restoration of timestamps for directories - explicitly created from Zip archive entries. This option only - applies to ports that support setting timestamps for directories - (currently ATheOS, BeOS, MacOS, OS/2, Unix, VMS, Win32, for - other unzip ports, -D has no effect). The duplicated option -DD - forces suppression of timestamp restoration for all extracted - entries (files and directories). This option results in setting - the timestamps for all extracted entries to the current time. - - On VMS, the default setting for this option is -D for consis- - tency with the behaviour of BACKUP: file timestamps are - restored, timestamps of extracted directories are left at the - current time. To enable restoration of directory timestamps, - the negated option --D should be specified. On VMS, the option - -D disables timestamp restoration for all extracted Zip archive - items. (Here, a single -D on the command line combines with the - default -D to do what an explicit -DD does on other systems.) - - -E [MacOS only] display contents of MacOS extra field during - restore operation. - - -F [Acorn only] suppress removal of NFS filetype extension from - stored filenames. - - -F [non-Acorn systems supporting long filenames with embedded com- - mas, and only if compiled with ACORN_FTYPE_NFS defined] trans- - late filetype information from ACORN RISC OS extra field blocks - into a NFS filetype extension and append it to the names of the - extracted files. (When the stored filename appears to already - have an appended NFS filetype extension, it is replaced by the - info from the extra field.) - - -i [MacOS only] ignore filenames stored in MacOS extra fields. - Instead, the most compatible filename stored in the generic part - of the entry's header is used. - - -j junk paths. The archive's directory structure is not recreated; - all files are deposited in the extraction directory (by default, - the current one). - - -J [BeOS only] junk file attributes. The file's BeOS file - attributes are not restored, just the file's data. - - -J [MacOS only] ignore MacOS extra fields. All Macintosh specific - info is skipped. Data-fork and resource-fork are restored as - separate files. - - -K [AtheOS, BeOS, Unix only] retain SUID/SGID/Tacky file - attributes. Without this flag, these attribute bits are cleared - for security reasons. - - -L convert to lowercase any filename originating on an uppercase- - only operating system or file system. (This was unzip's default - behavior in releases prior to 5.11; the new default behavior is - identical to the old behavior with the -U option, which is now - obsolete and will be removed in a future release.) Depending on - the archiver, files archived under single-case file systems - (VMS, old MS-DOS FAT, etc.) may be stored as all-uppercase - names; this can be ugly or inconvenient when extracting to a - case-preserving file system such as OS/2 HPFS or a case-sensi- - tive one such as under Unix. By default unzip lists and - extracts such filenames exactly as they're stored (excepting - truncation, conversion of unsupported characters, etc.); this - option causes the names of all files from certain systems to be - converted to lowercase. The -LL option forces conversion of - every filename to lowercase, regardless of the originating file + -a convert text files. Ordinarily all files are + extracted exactly as they are stored (as ``binary'' + files). The -a option causes files identified by + zip as text files (those with the `t' label in + +Info-ZIP 28 February 2005 (v5.52) 4 + +UNZIP(1L) UNZIP(1L) + + zipinfo listings, rather than `b') to be automati- + cally extracted as such, converting line endings, + end-of-file characters and the character set itself + as necessary. (For example, Unix files use line + feeds (LFs) for end-of-line (EOL) and have no end- + of-file (EOF) marker; Macintoshes use carriage + returns (CRs) for EOLs; and most PC operating sys- + tems use CR+LF for EOLs and control-Z for EOF. In + addition, IBM mainframes and the Michigan Terminal + System use EBCDIC rather than the more common ASCII + character set, and NT supports Unicode.) Note that + zip's identification of text files is by no means + perfect; some ``text'' files may actually be binary + and vice versa. unzip therefore prints ``[text]'' + or ``[binary]'' as a visual check for each file it + extracts when using the -a option. The -aa option + forces all files to be extracted as text, regard- + less of the supposed file type. + + -b [general] treat all files as binary (no text con- + versions). This is a shortcut for ---a. + + -b [Tandem] force the creation files with filecode + type 180 ('C') when extracting Zip entries marked + as "text". (On Tandem, -a is enabled by default, + see above). + + -b [VMS] auto-convert binary files (see -a above) to + fixed-length, 512-byte record format. Doubling the + option (-bb) forces all files to be extracted in + this format. When extracting to standard output (-c + or -p option in effect), the default conversion of + text record delimiters is disabled for binary (-b) + resp. all (-bb) files. + + -B [Unix only, and only if compiled with UNIXBACKUP + defined] save a backup copy of each overwritten + file with a tilde appended (e.g., the old copy of + ``foo'' is renamed to ``foo~''). This is similar + to the default behavior of emacs(1) in many loca- + tions. + + -C use case-insensitive matching for the selection of + archive entries from the command-line list of + extract selection patterns. unzip's philosophy is + ``you get what you ask for'' (this is also respon- + sible for the -L/-U change; see the relevant + options below). Because some file systems are + fully case-sensitive (notably those under the Unix + operating system) and because both ZIP archives and + unzip itself are portable across platforms, unzip's + default behavior is to match both wildcard and lit- + eral filenames case-sensitively. That is, specify- + ing ``makefile'' on the command line will only + +Info-ZIP 28 February 2005 (v5.52) 5 + +UNZIP(1L) UNZIP(1L) + + match ``makefile'' in the archive, not ``Makefile'' + or ``MAKEFILE'' (and similarly for wildcard speci- + fications). Since this does not correspond to the + behavior of many other operating/file systems (for + example, OS/2 HPFS, which preserves mixed case but + is not sensitive to it), the -C option may be used + to force all filename matches to be case-insensi- + tive. In the example above, all three files would + then match ``makefile'' (or ``make*'', or similar). + The -C option affects file specs in both the normal + file list and the excluded-file list (xlist). + + Please note that the -L option does neither affect + the search for the zipfile(s) nor the matching of + archive entries to existing files on the extraction + path. On a case-sensitive file system, unzip will + never try to overwrite a file ``FOO'' when extract- + ing an entry ``foo''! + + -E [MacOS only] display contents of MacOS extra field + during restore operation. + + -F [Acorn only] suppress removal of NFS filetype + extension from stored filenames. + + -F [non-Acorn systems supporting long filenames with + embedded commas, and only if compiled with + ACORN_FTYPE_NFS defined] translate filetype infor- + mation from ACORN RISC OS extra field blocks into a + NFS filetype extension and append it to the names + of the extracted files. (When the stored filename + appears to already have an appended NFS filetype + extension, it is replaced by the info from the + extra field.) + + -i [MacOS only] ignore filenames stored in MacOS extra + fields. Instead, the most compatible filename + stored in the generic part of the entry's header is + used. + + -j junk paths. The archive's directory structure is + not recreated; all files are deposited in the + extraction directory (by default, the current one). + + -J [BeOS only] junk file attributes. The file's BeOS + file attributes are not restored, just the file's + data. + + -J [MacOS only] ignore MacOS extra fields. All Macin- + tosh specific info is skipped. Data-fork and + resource-fork are restored as separate files. + + -K [AtheOS, BeOS, Unix only] retain SUID/SGID/Tacky + file attributes. Without this flag, these + +Info-ZIP 28 February 2005 (v5.52) 6 + +UNZIP(1L) UNZIP(1L) + + attribute bits are cleared for security reasons. + + -L convert to lowercase any filename originating on an + uppercase-only operating system or file system. + (This was unzip's default behavior in releases + prior to 5.11; the new default behavior is identi- + cal to the old behavior with the -U option, which + is now obsolete and will be removed in a future + release.) Depending on the archiver, files + archived under single-case file systems (VMS, old + MS-DOS FAT, etc.) may be stored as all-uppercase + names; this can be ugly or inconvenient when + extracting to a case-preserving file system such as + OS/2 HPFS or a case-sensitive one such as under + Unix. By default unzip lists and extracts such + filenames exactly as they're stored (excepting + truncation, conversion of unsupported characters, + etc.); this option causes the names of all files + from certain systems to be converted to lowercase. + The -LL option forces conversion of every filename + to lowercase, regardless of the originating file system. - -M pipe all output through an internal pager similar to the Unix - more(1) command. At the end of a screenful of output, unzip - pauses with a ``--More--'' prompt; the next screenful may be - viewed by pressing the Enter (Return) key or the space bar. - unzip can be terminated by pressing the ``q'' key and, on some - systems, the Enter/Return key. Unlike Unix more(1), there is no - forward-searching or editing capability. Also, unzip doesn't - notice if long lines wrap at the edge of the screen, effectively - resulting in the printing of two or more lines and the likeli- - hood that some text will scroll off the top of the screen before - being viewed. On some systems the number of available lines on - the screen is not detected, in which case unzip assumes the - height is 24 lines. - - -n never overwrite existing files. If a file already exists, skip - the extraction of that file without prompting. By default unzip - queries before extracting any file that already exists; the user - may choose to overwrite only the current file, overwrite all - files, skip extraction of the current file, skip extraction of - all existing files, or rename the current file. - - -N [Amiga] extract file comments as Amiga filenotes. File comments - are created with the -c option of zip(1L), or with the -N option - of the Amiga port of zip(1L), which stores filenotes as com- - ments. - - -o overwrite existing files without prompting. This is a dangerous - option, so use it with care. (It is often used with -f, how- - ever, and is the only way to overwrite directory EAs under - OS/2.) + -M pipe all output through an internal pager similar + to the Unix more(1) command. At the end of a + screenful of output, unzip pauses with a + ``--More--'' prompt; the next screenful may be + viewed by pressing the Enter (Return) key or the + space bar. unzip can be terminated by pressing the + ``q'' key and, on some systems, the Enter/Return + key. Unlike Unix more(1), there is no forward- + searching or editing capability. Also, unzip + doesn't notice if long lines wrap at the edge of + the screen, effectively resulting in the printing + of two or more lines and the likelihood that some + text will scroll off the top of the screen before + being viewed. On some systems the number of avail- + able lines on the screen is not detected, in which + case unzip assumes the height is 24 lines. + + -n never overwrite existing files. If a file already + exists, skip the extraction of that file without + prompting. By default unzip queries before + extracting any file that already exists; the user + may choose to overwrite only the current file, + overwrite all files, skip extraction of the current + file, skip extraction of all existing files, or + rename the current file. + + -N [Amiga] extract file comments as Amiga filenotes. + File comments are created with the -c option of + zip(1L), or with the -N option of the Amiga port of + zip(1L), which stores filenotes as comments. + +Info-ZIP 28 February 2005 (v5.52) 7 + +UNZIP(1L) UNZIP(1L) + + -o overwrite existing files without prompting. This + is a dangerous option, so use it with care. (It is + often used with -f, however, and is the only way to + overwrite directory EAs under OS/2.) -P password - use password to decrypt encrypted zipfile entries (if any). - THIS IS INSECURE! Many multi-user operating systems provide - ways for any user to see the current command line of any other - user; even on stand-alone systems there is always the threat of - over-the-shoulder peeking. Storing the plaintext password as - part of a command line in an automated script is even worse. - Whenever possible, use the non-echoing, interactive prompt to - enter passwords. (And where security is truly important, use - strong encryption such as Pretty Good Privacy instead of the - relatively weak encryption provided by standard zipfile utili- - ties.) - - -q perform operations quietly (-qq = even quieter). Ordinarily - unzip prints the names of the files it's extracting or testing, - the extraction methods, any file or zipfile comments that may be - stored in the archive, and possibly a summary when finished with - each archive. The -q[q] options suppress the printing of some - or all of these messages. - - -s [OS/2, NT, MS-DOS] convert spaces in filenames to underscores. - Since all PC operating systems allow spaces in filenames, unzip - by default extracts filenames with spaces intact (e.g., - ``EA DATA. SF''). This can be awkward, however, since MS-DOS in - particular does not gracefully support spaces in filenames. - Conversion of spaces to underscores can eliminate the awkward- - ness in some cases. - - -S [VMS] convert text files (-a, -aa) into Stream_LF record format, - instead of the text-file default, variable-length record format. - (Stream_LF is the default record format of VMS unzip. It is - applied unless conversion (-a, -aa and/or -b, -bb) is requested - or a VMS-specific entry is processed.) - - -U [UNICODE_SUPPORT only] modify or disable UTF-8 handling. When - UNICODE_SUPPORT is available, the option -U forces unzip to - escape all non-ASCII characters from UTF-8 coded filenames as - ``#Uxxxx'' (for UCS-2 characters, or ``#Lxxxxxx'' for unicode - codepoints needing 3 octets). This option is mainly provided - for debugging purpose when the fairly new UTF-8 support is sus- - pected to mangle up extracted filenames. - - The option -UU allows to entirely disable the recognition of - UTF-8 encoded filenames. The handling of filename codings - within unzip falls back to the behaviour of previous versions. - - [old, obsolete usage] leave filenames uppercase if created under - MS-DOS, VMS, etc. See -L above. - - -V retain (VMS) file version numbers. VMS files can be stored with - a version number, in the format file.ext;##. By default the - ``;##'' version numbers are stripped, but this option allows - them to be retained. (On file systems that limit filenames to - particularly short lengths, the version numbers may be truncated - or stripped regardless of this option.) - - -W [only when WILD_STOP_AT_DIR compile-time option enabled] modi- - fies the pattern matching routine so that both `?' (single-char - wildcard) and `*' (multi-char wildcard) do not match the direc- - tory separator character `/'. (The two-character sequence - ``**'' acts as a multi-char wildcard that includes the directory - separator in its matched characters.) Examples: + use password to decrypt encrypted zipfile entries + (if any). THIS IS INSECURE! Many multi-user oper- + ating systems provide ways for any user to see the + current command line of any other user; even on + stand-alone systems there is always the threat of + over-the-shoulder peeking. Storing the plaintext + password as part of a command line in an automated + script is even worse. Whenever possible, use the + non-echoing, interactive prompt to enter passwords. + (And where security is truly important, use strong + encryption such as Pretty Good Privacy instead of + the relatively weak encryption provided by standard + zipfile utilities.) + + -q perform operations quietly (-qq = even quieter). + Ordinarily unzip prints the names of the files it's + extracting or testing, the extraction methods, any + file or zipfile comments that may be stored in the + archive, and possibly a summary when finished with + each archive. The -q[q] options suppress the + printing of some or all of these messages. + + -s [OS/2, NT, MS-DOS] convert spaces in filenames to + underscores. Since all PC operating systems allow + spaces in filenames, unzip by default extracts + filenames with spaces intact (e.g., + ``EA DATA. SF''). This can be awkward, however, + since MS-DOS in particular does not gracefully sup- + port spaces in filenames. Conversion of spaces to + underscores can eliminate the awkwardness in some + cases. + + -U (obsolete; to be removed in a future release) leave + filenames uppercase if created under MS-DOS, VMS, + etc. See -L above. + + -V retain (VMS) file version numbers. VMS files can + be stored with a version number, in the format + file.ext;##. By default the ``;##'' version num- + bers are stripped, but this option allows them to + be retained. (On file systems that limit filenames + to particularly short lengths, the version numbers + may be truncated or stripped regardless of this + option.) + + -W [only when WILD_STOP_AT_DIR compile-time option + enabled] modifies the pattern matching routine so + that both `?' (single-char wildcard) and `*' + +Info-ZIP 28 February 2005 (v5.52) 8 + +UNZIP(1L) UNZIP(1L) + + (multi-char wildcard) do not match the directory + separator character `/'. (The two-character + sequence ``**'' acts as a multi-char wildcard that + includes the directory separator in its matched + characters.) Examples: "*.c" matches "foo.c" but not "mydir/foo.c" "**.c" matches both "foo.c" and "mydir/foo.c" @@ -437,105 +484,93 @@ "??*/*" matches "ab/foo" and "abc/foo" but not "a/foo" or "a/b/foo" - This modified behaviour is equivalent to the pattern matching - style used by the shells of some of UnZip's supported target OSs - (one example is Acorn RISC OS). This option may not be avail- - able on systems where the Zip archive's internal directory sepa- - rator character `/' is allowed as regular character in native - operating system filenames. (Currently, UnZip uses the same - pattern matching rules for both wildcard zipfile specifications - and zip entry selection patterns in most ports. For systems - allowing `/' as regular filename character, the -W option would - not work as expected on a wildcard zipfile specification.) - - -X [VMS, Unix, OS/2, NT, Tandem] restore owner/protection info - (UICs and ACL entries) under VMS, or user and group info - (UID/GID) under Unix, or access control lists (ACLs) under cer- - tain network-enabled versions of OS/2 (Warp Server with IBM LAN - Server/Requester 3.0 to 5.0; Warp Connect with IBM Peer 1.0), or - security ACLs under Windows NT. In most cases this will require - special system privileges, and doubling the option (-XX) under - NT instructs unzip to use privileges for extraction; but under - Unix, for example, a user who belongs to several groups can - restore files owned by any of those groups, as long as the user - IDs match his or her own. Note that ordinary file attributes - are always restored--this option applies only to optional, extra - ownership info available on some operating systems. [NT's - access control lists do not appear to be especially compatible - with OS/2's, so no attempt is made at cross-platform portability - of access privileges. It is not clear under what conditions - this would ever be useful anyway.] - - -Y [VMS] treat archived file name endings of ``.nnn'' (where - ``nnn'' is a decimal number) as if they were VMS version num- - bers (``;nnn''). (The default is to treat them as file types.) - Example: - "a.b.3" -> "a.b;3". - - -$ [MS-DOS, OS/2, NT] restore the volume label if the extraction - medium is removable (e.g., a diskette). Doubling the option - (-$$) allows fixed media (hard disks) to be labelled as well. - By default, volume labels are ignored. + This modified behaviour is equivalent to the pat- + tern matching style used by the shells of some of + UnZip's supported target OSs (one example is Acorn + RISC OS). This option may not be available on sys- + tems where the Zip archive's interal directory sep- + arator character `/' is allowed as regular charac- + ter in native operating system filenames. (Cur- + rently, UnZip uses the same pattern matching rules + for both wildcard zipfile specifications and zip + entry selection patterns in most ports. For sys- + tems allowing `/' as regular filename character, + the -W option would not work as expected on a wild- + card zipfile specification.) + + -X [VMS, Unix, OS/2, NT] restore owner/protection info + (UICs) under VMS, or user and group info (UID/GID) + under Unix, or access control lists (ACLs) under + certain network-enabled versions of OS/2 (Warp + Server with IBM LAN Server/Requester 3.0 to 5.0; + Warp Connect with IBM Peer 1.0), or security ACLs + under Windows NT. In most cases this will require + special system privileges, and doubling the option + (-XX) under NT instructs unzip to use privileges + for extraction; but under Unix, for example, a user + who belongs to several groups can restore files + owned by any of those groups, as long as the user + IDs match his or her own. Note that ordinary file + attributes are always restored--this option applies + only to optional, extra ownership info available on + some operating systems. [NT's access control lists + do not appear to be especially compatible with + OS/2's, so no attempt is made at cross-platform + portability of access privileges. It is not clear + under what conditions this would ever be useful + anyway.] + + -$ [MS-DOS, OS/2, NT] restore the volume label if the + extraction medium is removable (e.g., a diskette). + Doubling the option (-$$) allows fixed media (hard + disks) to be labelled as well. By default, volume + labels are ignored. + +Info-ZIP 28 February 2005 (v5.52) 9 + +UNZIP(1L) UNZIP(1L) -/ extensions - [Acorn only] overrides the extension list supplied by Unzip$Ext - environment variable. During extraction, filename extensions - that match one of the items in this extension list are swapped - in front of the base name of the extracted file. - - -: [all but Acorn, VM/CMS, MVS, Tandem] allows to extract archive - members into locations outside of the current `` extraction root - folder''. For security reasons, unzip normally removes ``parent - dir'' path components (``../'') from the names of extracted - file. This safety feature (new for version 5.50) prevents unzip - from accidentally writing files to ``sensitive'' areas outside - the active extraction folder tree head. The -: option lets - unzip switch back to its previous, more liberal behaviour, to - allow exact extraction of (older) archives that used ``../'' - components to create multiple directory trees at the level of - the current extraction folder. This option does not enable - writing explicitly to the root directory (``/''). To achieve - this, it is necessary to set the extraction target folder to - root (e.g. -d / ). However, when the -: option is specified, it - is still possible to implicitly write to the root directory by - specifying enough ``../'' path components within the zip - archive. Use this option with extreme caution. - - -^ [Unix only] allow control characters in names of extracted ZIP - archive entries. On Unix, a file name may contain any (8-bit) - character code with the two exception '/' (directory delimiter) - and NUL (0x00, the C string termination indicator), unless the - specific file system has more restrictive conventions. Gener- - ally, this allows to embed ASCII control characters (or even - sophisticated control sequences) in file names, at least on - 'native' Unix file systems. However, it may be highly suspi- - cious to make use of this Unix "feature". Embedded control - characters in file names might have nasty side effects when dis- - played on screen by some listing code without sufficient filter- - ing. And, for ordinary users, it may be difficult to handle - such file names (e.g. when trying to specify it for open, copy, - move, or delete operations). Therefore, unzip applies a filter - by default that removes potentially dangerous control characters - from the extracted file names. The -^ option allows to override - this filter in the rare case that embedded filename control - characters are to be intentionally restored. - - -2 [VMS] force unconditionally conversion of file names to - ODS2-compatible names. The default is to exploit the destina- - tion file system, preserving case and extended file name charac- - ters on an ODS5 destination file system; and applying the - ODS2-compatibility file name filtering on an ODS2 destination - file system. + [Acorn only] overrides the extension list supplied + by Unzip$Ext environment variable. During extrac- + tion, filename extensions that match one of the + items in this extension list are swapped in front + of the base name of the extracted file. + + -: [all but Acorn, VM/CMS, MVS, Tandem] allows to + extract archive members into locations outside of + the current `` extraction root folder''. For secu- + rity reasons, unzip normally removes ``parent dir'' + path components (``../'') from the names of + extracted file. This safety feature (new for ver- + sion 5.50) prevents unzip from accidentally writing + files to ``sensitive'' areas outside the active + extraction folder tree head. The -: option lets + unzip switch back to its previous, more liberal + behaviour, to allow exact extraction of (older) + archives that used ``../'' components to create + multiple directory trees at the level of the cur- + rent extraction folder. This option does not + enable writing explicitly to the root directory + (``/''). To achieve this, it is necessary to set + the extraction target folder to root (e.g. -d / ). + However, when the -: option is specified, it is + still possible to implicitly write to the root + directory by specifiying enough ``../'' path compo- + nents within the zip archive. Use this option with + extreme caution. ENVIRONMENT OPTIONS - unzip's default behavior may be modified via options placed in an envi- - ronment variable. This can be done with any option, but it is probably - most useful with the -a, -L, -C, -q, -o, or -n modifiers: make unzip - auto-convert text files by default, make it convert filenames from - uppercase systems to lowercase, make it match names case-insensitively, - make it quieter, or make it always overwrite or never overwrite files - as it extracts them. For example, to make unzip act as quietly as pos- - sible, only reporting errors, one would use one of the following com- + unzip's default behavior may be modified via options + placed in an environment variable. This can be done with + any option, but it is probably most useful with the -a, + -L, -C, -q, -o, or -n modifiers: make unzip auto-convert + text files by default, make it convert filenames from + uppercase systems to lowercase, make it match names case- + insensitively, make it quieter, or make it always over- + write or never overwrite files as it extracts them. For + example, to make unzip act as quietly as possible, only + reporting errors, one would use one of the following com- mands: Unix Bourne shell: @@ -548,183 +583,218 @@ set UNZIP=-qq VMS (quotes for lowercase): - define UNZIP_OPTS "-qq" + define UNZIP_OPTS ""-qq"" + +Info-ZIP 28 February 2005 (v5.52) 10 - Environment options are, in effect, considered to be just like any - other command-line options, except that they are effectively the first - options on the command line. To override an environment option, one - may use the ``minus operator'' to remove it. For instance, to override - one of the quiet-flags in the example above, use the command +UNZIP(1L) UNZIP(1L) + + Environment options are, in effect, considered to be just + like any other command-line options, except that they are + effectively the first options on the command line. To + override an environment option, one may use the ``minus + operator'' to remove it. For instance, to override one of + the quiet-flags in the example above, use the command unzip --q[other options] zipfile - The first hyphen is the normal switch character, and the second is a - minus sign, acting on the q option. Thus the effect here is to cancel - one quantum of quietness. To cancel both quiet flags, two (or more) - minuses may be used: + The first hyphen is the normal switch character, and the + second is a minus sign, acting on the q option. Thus the + effect here is to cancel one quantum of quietness. To + cancel both quiet flags, two (or more) minuses may be + used: unzip -t--q zipfile unzip ---qt zipfile - (the two are equivalent). This may seem awkward or confusing, but it - is reasonably intuitive: just ignore the first hyphen and go from - there. It is also consistent with the behavior of Unix nice(1). - - As suggested by the examples above, the default variable names are - UNZIP_OPTS for VMS (where the symbol used to install unzip as a foreign - command would otherwise be confused with the environment variable), and - UNZIP for all other operating systems. For compatibility with zip(1L), - UNZIPOPT is also accepted (don't ask). If both UNZIP and UNZIPOPT are - defined, however, UNZIP takes precedence. unzip's diagnostic option - (-v with no zipfile name) can be used to check the values of all four - possible unzip and zipinfo environment variables. - - The timezone variable (TZ) should be set according to the local time- - zone in order for the -f and -u to operate correctly. See the descrip- - tion of -f above for details. This variable may also be necessary to - get timestamps of extracted files to be set correctly. The WIN32 - (Win9x/ME/NT4/2K/XP/2K3) port of unzip gets the timezone configuration - from the registry, assuming it is correctly set in the Control Panel. - The TZ variable is ignored for this port. + (the two are equivalent). This may seem awkward or con- + fusing, but it is reasonably intuitive: just ignore the + first hyphen and go from there. It is also consistent + with the behavior of Unix nice(1). + + As suggested by the examples above, the default variable + names are UNZIP_OPTS for VMS (where the symbol used to + install unzip as a foreign command would otherwise be con- + fused with the environment variable), and UNZIP for all + other operating systems. For compatibility with zip(1L), + UNZIPOPT is also accepted (don't ask). If both UNZIP and + UNZIPOPT are defined, however, UNZIP takes precedence. + unzip's diagnostic option (-v with no zipfile name) can be + used to check the values of all four possible unzip and + zipinfo environment variables. + + The timezone variable (TZ) should be set according to the + local timezone in order for the -f and -u to operate cor- + rectly. See the description of -f above for details. + This variable may also be necessary to get timestamps of + extracted files to be set correctly. The WIN32 + (Win9x/ME/NT4/2K/XP/2K3) port of unzip gets the timezone + configuration from the registry, assuming it is correctly + set in the Control Panel. The TZ variable is ignored for + this port. DECRYPTION - Encrypted archives are fully supported by Info-ZIP software, but due to - United States export restrictions, de-/encryption support might be dis- - abled in your compiled binary. However, since spring 2000, US export - restrictions have been liberated, and our source archives do now - include full crypt code. In case you need binary distributions with - crypt support enabled, see the file ``WHERE'' in any Info-ZIP source or - binary distribution for locations both inside and outside the US. - - Some compiled versions of unzip may not support decryption. To check a - version for crypt support, either attempt to test or extract an - encrypted archive, or else check unzip's diagnostic screen (see the -v - option above) for ``[decryption]'' as one of the special compilation + Encrypted archives are fully supported by Info-ZIP soft- + ware, but due to United States export restrictions, + de-/encryption support might be disabled in your compiled + binary. However, since spring 2000, US export restric- + tions have been liberated, and our source archives do now + include full crypt code. In case you need binary distri- + butions with crypt support enabled, see the file ``WHERE'' + in any Info-ZIP source or binary distribution for loca- + tions both inside and outside the US. + +Info-ZIP 28 February 2005 (v5.52) 11 + +UNZIP(1L) UNZIP(1L) + + Some compiled versions of unzip may not support decryp- + tion. To check a version for crypt support, either + attempt to test or extract an encrypted archive, or else + check unzip's diagnostic screen (see the -v option above) + for ``[decryption]'' as one of the special compilation options. - As noted above, the -P option may be used to supply a password on the - command line, but at a cost in security. The preferred decryption - method is simply to extract normally; if a zipfile member is encrypted, - unzip will prompt for the password without echoing what is typed. - unzip continues to use the same password as long as it appears to be - valid, by testing a 12-byte header on each file. The correct password - will always check out against the header, but there is a 1-in-256 - chance that an incorrect password will as well. (This is a security - feature of the PKWARE zipfile format; it helps prevent brute-force - attacks that might otherwise gain a large speed advantage by testing - only the header.) In the case that an incorrect password is given but - it passes the header test anyway, either an incorrect CRC will be gen- - erated for the extracted data or else unzip will fail during the - extraction because the ``decrypted'' bytes do not constitute a valid - compressed data stream. - - If the first password fails the header check on some file, unzip will - prompt for another password, and so on until all files are extracted. - If a password is not known, entering a null password (that is, just a - carriage return or ``Enter'') is taken as a signal to skip all further - prompting. Only unencrypted files in the archive(s) will thereafter be - extracted. (In fact, that's not quite true; older versions of zip(1L) - and zipcloak(1L) allowed null passwords, so unzip checks each encrypted - file to see if the null password works. This may result in ``false - positives'' and extraction errors, as noted above.) - - Archives encrypted with 8-bit passwords (for example, passwords with - accented European characters) may not be portable across systems and/or - other archivers. This problem stems from the use of multiple encoding - methods for such characters, including Latin-1 (ISO 8859-1) and OEM - code page 850. DOS PKZIP 2.04g uses the OEM code page; Windows PKZIP - 2.50 uses Latin-1 (and is therefore incompatible with DOS PKZIP); Info- - ZIP uses the OEM code page on DOS, OS/2 and Win3.x ports but ISO coding - (Latin-1 etc.) everywhere else; and Nico Mak's WinZip 6.x does not - allow 8-bit passwords at all. UnZip 5.3 (or newer) attempts to use the - default character set first (e.g., Latin-1), followed by the alternate - one (e.g., OEM code page) to test passwords. On EBCDIC systems, if - both of these fail, EBCDIC encoding will be tested as a last resort. - (EBCDIC is not tested on non-EBCDIC systems, because there are no known - archivers that encrypt using EBCDIC encoding.) ISO character encodings - other than Latin-1 are not supported. The new addition of (partially) - Unicode (resp. UTF-8) support in UnZip 6.0 has not yet been adapted to - the encryption password handling in unzip. On systems that use UTF-8 - as native character encoding, unzip simply tries decryption with the - native UTF-8 encoded password; the built-in attempts to check the pass- - word in translated encoding have not yet been adapted for UTF-8 support - and will consequently fail. + As noted above, the -P option may be used to supply a + password on the command line, but at a cost in security. + The preferred decryption method is simply to extract nor- + mally; if a zipfile member is encrypted, unzip will prompt + for the password without echoing what is typed. unzip + continues to use the same password as long as it appears + to be valid, by testing a 12-byte header on each file. + The correct password will always check out against the + header, but there is a 1-in-256 chance that an incorrect + password will as well. (This is a security feature of the + PKWARE zipfile format; it helps prevent brute-force + attacks that might otherwise gain a large speed advantage + by testing only the header.) In the case that an incor- + rect password is given but it passes the header test any- + way, either an incorrect CRC will be generated for the + extracted data or else unzip will fail during the extrac- + tion because the ``decrypted'' bytes do not constitute a + valid compressed data stream. + + If the first password fails the header check on some file, + unzip will prompt for another password, and so on until + all files are extracted. If a password is not known, + entering a null password (that is, just a carriage return + or ``Enter'') is taken as a signal to skip all further + prompting. Only unencrypted files in the archive(s) will + thereafter be extracted. (In fact, that's not quite true; + older versions of zip(1L) and zipcloak(1L) allowed null + passwords, so unzip checks each encrypted file to see if + the null password works. This may result in ``false posi- + tives'' and extraction errors, as noted above.) + + Archives encrypted with 8-bit passwords (for example, + passwords with accented European characters) may not be + portable across systems and/or other archivers. This + problem stems from the use of multiple encoding methods + for such characters, including Latin-1 (ISO 8859-1) and + OEM code page 850. DOS PKZIP 2.04g uses the OEM code + page; Windows PKZIP 2.50 uses Latin-1 (and is therefore + incompatible with DOS PKZIP); Info-ZIP uses the OEM code + page on DOS, OS/2 and Win3.x ports but Latin-1 everywhere + else; and Nico Mak's WinZip 6.x does not allow 8-bit pass- + words at all. UnZip 5.3 (or newer) attempts to use the + default character set first (e.g., Latin-1), followed by + the alternate one (e.g., OEM code page) to test passwords. + On EBCDIC systems, if both of these fail, EBCDIC encoding + will be tested as a last resort. (EBCDIC is not tested on + non-EBCDIC systems, because there are no known archivers + +Info-ZIP 28 February 2005 (v5.52) 12 + +UNZIP(1L) UNZIP(1L) + + that encrypt using EBCDIC encoding.) ISO character encod- + ings other than Latin-1 are not supported. EXAMPLES - To use unzip to extract all members of the archive letters.zip into the - current directory and subdirectories below it, creating any subdirecto- - ries as necessary: + To use unzip to extract all members of the archive let- + ters.zip into the current directory and subdirectories + below it, creating any subdirectories as necessary: unzip letters - To extract all members of letters.zip into the current directory only: + To extract all members of letters.zip into the current + directory only: unzip -j letters - To test letters.zip, printing only a summary message indicating whether - the archive is OK or not: + To test letters.zip, printing only a summary message indi- + cating whether the archive is OK or not: unzip -tq letters - To test all zipfiles in the current directory, printing only the sum- - maries: + To test all zipfiles in the current directory, printing + only the summaries: unzip -tq \*.zip - (The backslash before the asterisk is only required if the shell - expands wildcards, as in Unix; double quotes could have been used - instead, as in the source examples below.) To extract to standard out- - put all members of letters.zip whose names end in .tex, auto-converting - to the local end-of-line convention and piping the output into more(1): + (The backslash before the asterisk is only required if the + shell expands wildcards, as in Unix; double quotes could + have been used instead, as in the source examples + below.) To extract to standard output all members of let- + ters.zip whose names end in .tex, auto-converting to the + local end-of-line convention and piping the output into + more(1): unzip -ca letters \*.tex | more - To extract the binary file paper1.dvi to standard output and pipe it to - a printing program: + To extract the binary file paper1.dvi to standard output + and pipe it to a printing program: unzip -p articles paper1.dvi | dvips - To extract all FORTRAN and C source files--*.f, *.c, *.h, and Make- - file--into the /tmp directory: + To extract all FORTRAN and C source files--*.f, *.c, *.h, + and Makefile--into the /tmp directory: unzip source.zip "*.[fch]" Makefile -d /tmp - (the double quotes are necessary only in Unix and only if globbing is - turned on). To extract all FORTRAN and C source files, regardless of - case (e.g., both *.c and *.C, and any makefile, Makefile, MAKEFILE or - similar): + (the double quotes are necessary only in Unix and only if + globbing is turned on). To extract all FORTRAN and C + source files, regardless of case (e.g., both *.c and *.C, + and any makefile, Makefile, MAKEFILE or similar): unzip -C source.zip "*.[fch]" makefile -d /tmp - To extract any such files but convert any uppercase MS-DOS or VMS names - to lowercase and convert the line-endings of all of the files to the - local standard (without respect to any files that might be marked - ``binary''): + To extract any such files but convert any uppercase MS-DOS + or VMS names to lowercase and convert the line-endings of + +Info-ZIP 28 February 2005 (v5.52) 13 + +UNZIP(1L) UNZIP(1L) + + all of the files to the local standard (without respect to + any files that might be marked ``binary''): unzip -aaCL source.zip "*.[fch]" makefile -d /tmp - To extract only newer versions of the files already in the current - directory, without querying (NOTE: be careful of unzipping in one - timezone a zipfile created in another--ZIP archives other than those - created by Zip 2.1 or later contain no timezone information, and a - ``newer'' file from an eastern timezone may, in fact, be older): + To extract only newer versions of the files already in the + current directory, without querying (NOTE: be careful of + unzipping in one timezone a zipfile created in + another--ZIP archives other than those created by Zip 2.1 + or later contain no timezone information, and a ``newer'' + file from an eastern timezone may, in fact, be older): unzip -fo sources - To extract newer versions of the files already in the current directory - and to create any files not already there (same caveat as previous - example): + To extract newer versions of the files already in the cur- + rent directory and to create any files not already there + (same caveat as previous example): unzip -uo sources - To display a diagnostic screen showing which unzip and zipinfo options - are stored in environment variables, whether decryption support was - compiled in, the compiler with which unzip was compiled, etc.: + To display a diagnostic screen showing which unzip and + zipinfo options are stored in environment variables, + whether decryption support was compiled in, the compiler + with which unzip was compiled, etc.: unzip -v - In the last five examples, assume that UNZIP or UNZIP_OPTS is set to - -q. To do a singly quiet listing: + In the last five examples, assume that UNZIP or UNZIP_OPTS + is set to -q. To do a singly quiet listing: unzip -l file.zip @@ -732,8 +802,8 @@ unzip -ql file.zip - (Note that the ``.zip'' is generally not necessary.) To do a standard - listing: + (Note that the ``.zip'' is generally not necessary.) To + do a standard listing: unzip --ql file.zip or @@ -743,188 +813,230 @@ (Extra minuses in options don't hurt.) TIPS - The current maintainer, being a lazy sort, finds it very useful to - define a pair of aliases: tt for ``unzip -tq'' and ii for ``unzip -Z'' - (or ``zipinfo''). One may then simply type ``tt zipfile'' to test an - archive, something that is worth making a habit of doing. With luck - unzip will report ``No errors detected in compressed data of zip- - file.zip,'' after which one may breathe a sigh of relief. - - The maintainer also finds it useful to set the UNZIP environment vari- - able to ``-aL'' and is tempted to add ``-C'' as well. His ZIPINFO - variable is set to ``-z''. + The current maintainer, being a lazy sort, finds it very + useful to define a pair of aliases: tt for ``unzip -tq'' + and ii for ``unzip -Z'' (or ``zipinfo''). One may then + simply type ``tt zipfile'' to test an archive, something + that is worth making a habit of doing. With luck unzip + will report ``No errors detected in compressed data of + zipfile.zip,'' after which one may breathe a sigh of + +Info-ZIP 28 February 2005 (v5.52) 14 + +UNZIP(1L) UNZIP(1L) + + relief. + + The maintainer also finds it useful to set the UNZIP envi- + ronment variable to ``-aL'' and is tempted to add ``-C'' + as well. His ZIPINFO variable is set to ``-z''. DIAGNOSTICS - The exit status (or error level) approximates the exit codes defined by - PKWARE and takes on the following values, except under VMS: + The exit status (or error level) approximates the exit + codes defined by PKWARE and takes on the following values, + except under VMS: 0 normal; no errors or warnings detected. - 1 one or more warning errors were encountered, but process- - ing completed successfully anyway. This includes zip- - files where one or more files was skipped due to unsup- - ported compression method or encryption with an unknown - password. - - 2 a generic error in the zipfile format was detected. Pro- - cessing may have completed successfully anyway; some bro- - ken zipfiles created by other archivers have simple work- + 1 one or more warning errors were encountered, + but processing completed successfully any- + way. This includes zipfiles where one or + more files was skipped due to unsupported + compression method or encryption with an + unknown password. + + 2 a generic error in the zipfile format was + detected. Processing may have completed + successfully anyway; some broken zipfiles + created by other archivers have simple work- arounds. - 3 a severe error in the zipfile format was detected. Pro- - cessing probably failed immediately. + 3 a severe error in the zipfile format was + detected. Processing probably failed imme- + diately. - 4 unzip was unable to allocate memory for one or more - buffers during program initialization. + 4 unzip was unable to allocate memory for one + or more buffers during program initializa- + tion. - 5 unzip was unable to allocate memory or unable to obtain a - tty to read the decryption password(s). + 5 unzip was unable to allocate memory or + unable to obtain a tty to read the decryp- + tion password(s). - 6 unzip was unable to allocate memory during decompression - to disk. + 6 unzip was unable to allocate memory during + decompression to disk. - 7 unzip was unable to allocate memory during in-memory - decompression. + 7 unzip was unable to allocate memory during + in-memory decompression. 8 [currently not used] 9 the specified zipfiles were not found. - 10 invalid options were specified on the command line. + 10 invalid options were specified on the com- + mand line. 11 no matching files were found. 50 the disk is (or was) full during extraction. - 51 the end of the ZIP archive was encountered prematurely. +Info-ZIP 28 February 2005 (v5.52) 15 - 80 the user aborted unzip prematurely with control-C (or - similar) +UNZIP(1L) UNZIP(1L) - 81 testing or extraction of one or more files failed due to - unsupported compression methods or unsupported decryp- - tion. + 51 the end of the ZIP archive was encountered + prematurely. - 82 no files were found due to bad decryption password(s). - (If even one file is successfully processed, however, the - exit status is 1.) - - VMS interprets standard Unix (or PC) return values as other, scarier- - looking things, so unzip instead maps them into VMS-style status codes. - The current mapping is as follows: 1 (success) for normal exit, - 0x7fff0001 for warning errors, and (0x7fff000? + 16*nor- - mal_unzip_exit_status) for all other errors, where the `?' is 2 (error) - for unzip values 2, 9-11 and 80-82, and 4 (fatal error) for the remain- - ing ones (3-8, 50, 51). In addition, there is a compilation option to - expand upon this behavior: defining RETURN_CODES results in a human- + 80 the user aborted unzip prematurely with con- + trol-C (or similar) + + 81 testing or extraction of one or more files + failed due to unsupported compression meth- + ods or unsupported decryption. + + 82 no files were found due to bad decryption + password(s). (If even one file is success- + fully processed, however, the exit status is + 1.) + + VMS interprets standard Unix (or PC) return values as + other, scarier-looking things, so unzip instead maps them + into VMS-style status codes. The current mapping is as + follows: 1 (success) for normal exit, 0x7fff0001 for + warning errors, and (0x7fff000? + 16*nor- + mal_unzip_exit_status) for all other errors, where the `?' + is 2 (error) for unzip values 2, 9-11 and 80-82, and 4 + (fatal error) for the remaining ones (3-8, 50, 51). In + addition, there is a compilation option to expand upon + this behavior: defining RETURN_CODES results in a human- readable explanation of what the error status means. BUGS - Multi-part archives are not yet supported, except in conjunction with - zip. (All parts must be concatenated together in order, and then ``zip - -F'' (for zip 2.x) or ``zip -FF'' (for zip 3.x) must be performed on - the concatenated archive in order to ``fix'' it. Also, zip 3.0 and - later can combine multi-part (split) archives into a combined single- - file archive using ``zip -s- inarchive -O outarchive''. See the zip 3 - manual page for more information.) This will definitely be corrected - in the next major release. - - Archives read from standard input are not yet supported, except with - funzip (and then only the first member of the archive can be - extracted). - - Archives encrypted with 8-bit passwords (e.g., passwords with accented - European characters) may not be portable across systems and/or other - archivers. See the discussion in DECRYPTION above. - - unzip's -M (``more'') option tries to take into account automatic wrap- - ping of long lines. However, the code may fail to detect the correct - wrapping locations. First, TAB characters (and similar control - sequences) are not taken into account, they are handled as ordinary - printable characters. Second, depending on the actual system / OS - port, unzip may not detect the true screen geometry but rather rely on - "commonly used" default dimensions. The correct handling of tabs would - require the implementation of a query for the actual tabulator setup on - the output console. - - Dates, times and permissions of stored directories are not restored - except under Unix. (On Windows NT and successors, timestamps are now - restored.) - - [MS-DOS] When extracting or testing files from an archive on a defec- - tive floppy diskette, if the ``Fail'' option is chosen from DOS's - ``Abort, Retry, Fail?'' message, older versions of unzip may hang the - system, requiring a reboot. This problem appears to be fixed, but con- - trol-C (or control-Break) can still be used to terminate unzip. - - Under DEC Ultrix, unzip would sometimes fail on long zipfiles (bad CRC, - not always reproducible). This was apparently due either to a hardware - bug (cache memory) or an operating system bug (improper handling of - page faults?). Since Ultrix has been abandoned in favor of Digital - Unix (OSF/1), this may not be an issue anymore. - - [Unix] Unix special files such as FIFO buffers (named pipes), block - devices and character devices are not restored even if they are somehow - represented in the zipfile, nor are hard-linked files relinked. Basi- - cally the only file types restored by unzip are regular files, directo- - ries and symbolic (soft) links. - - [OS/2] Extended attributes for existing directories are only updated if - the -o (``overwrite all'') option is given. This is a limitation of - the operating system; because directories only have a creation time - associated with them, unzip has no way to determine whether the stored - attributes are newer or older than those on disk. In practice this may - mean a two-pass approach is required: first unpack the archive nor- - mally (with or without freshening/updating existing files), then - overwrite just the directory entries (e.g., ``unzip -o foo */''). - - [VMS] When extracting to another directory, only the [.foo] syntax is - accepted for the -d option; the simple Unix foo syntax is silently - ignored (as is the less common VMS foo.dir syntax). - - [VMS] When the file being extracted already exists, unzip's query only - allows skipping, overwriting or renaming; there should additionally be - a choice for creating a new version of the file. In fact, the ``over- - write'' choice does create a new version; the old version is not over- - written or deleted. + Multi-part archives are not yet supported, except in con- + junction with zip. (All parts must be concatenated + together in order, and then ``zip -F'' must be performed + on the concatenated archive in order to ``fix'' it.) This + will definitely be corrected in the next major release. + + Archives read from standard input are not yet supported, + except with funzip (and then only the first member of the + archive can be extracted). + + Archives encrypted with 8-bit passwords (e.g., passwords + with accented European characters) may not be portable + across systems and/or other archivers. See the discussion + in DECRYPTION above. + + unzip's -M (``more'') option tries to take into account + automatic wrapping of long lines. However, the code may + fail to detect the correct wrapping locations. First, TAB + characters (and similar control sequences) are not taken + into account, they are handled as ordinary printable char- + acters. Second, depending on the actual system / OS port, + unzip may not detect the true screen geometry but rather + rely on "commonly used" default dimensions. The correct + handling of tabs would require the implementation of a + query for the actual tabulator setup on the output con- + sole. + +Info-ZIP 28 February 2005 (v5.52) 16 + +UNZIP(1L) UNZIP(1L) + + Dates, times and permissions of stored directories are not + restored except under Unix. (On Windows NT and successors, + timestamps are now restored.) + + [MS-DOS] When extracting or testing files from an archive + on a defective floppy diskette, if the ``Fail'' option is + chosen from DOS's ``Abort, Retry, Fail?'' message, older + versions of unzip may hang the system, requiring a reboot. + This problem appears to be fixed, but control-C (or con- + trol-Break) can still be used to terminate unzip. + + Under DEC Ultrix, unzip would sometimes fail on long zip- + files (bad CRC, not always reproducible). This was appar- + ently due either to a hardware bug (cache memory) or an + operating system bug (improper handling of page faults?). + Since Ultrix has been abandoned in favor of Digital Unix + (OSF/1), this may not be an issue anymore. + + [Unix] Unix special files such as FIFO buffers (named + pipes), block devices and character devices are not + restored even if they are somehow represented in the zip- + file, nor are hard-linked files relinked. Basically the + only file types restored by unzip are regular files, + directories and symbolic (soft) links. + + [OS/2] Extended attributes for existing directories are + only updated if the -o (``overwrite all'') option is + given. This is a limitation of the operating system; + because directories only have a creation time associated + with them, unzip has no way to determine whether the + stored attributes are newer or older than those on disk. + In practice this may mean a two-pass approach is required: + first unpack the archive normally (with or without fresh- + ening/updating existing files), then overwrite just the + directory entries (e.g., ``unzip -o foo */''). + + [VMS] When extracting to another directory, only the + [.foo] syntax is accepted for the -d option; the simple + Unix foo syntax is silently ignored (as is the less common + VMS foo.dir syntax). + + [VMS] When the file being extracted already exists, + unzip's query only allows skipping, overwriting or renam- + ing; there should additionally be a choice for creating a + new version of the file. In fact, the ``overwrite'' + choice does create a new version; the old version is not + overwritten or deleted. SEE ALSO - funzip(1L), zip(1L), zipcloak(1L), zipgrep(1L), zipinfo(1L), zip- - note(1L), zipsplit(1L) + funzip(1L), zip(1L), zipcloak(1L), zipgrep(1L), zip- + info(1L), zipnote(1L), zipsplit(1L) URL The Info-ZIP home page is currently at + +Info-ZIP 28 February 2005 (v5.52) 17 + +UNZIP(1L) UNZIP(1L) + http://www.info-zip.org/pub/infozip/ or ftp://ftp.info-zip.org/pub/infozip/ . AUTHORS - The primary Info-ZIP authors (current semi-active members of the Zip- - Bugs workgroup) are: Ed Gordon (Zip, general maintenance, shared code, - Zip64, Win32, Unix, Unicode); Christian Spieler (UnZip maintenance - coordination, VMS, MS-DOS, Win32, shared code, general Zip and UnZip - integration and optimization); Onno van der Linden (Zip); Mike White - (Win32, Windows GUI, Windows DLLs); Kai Uwe Rommel (OS/2, Win32); - Steven M. Schweda (VMS, Unix, support of new features); Paul Kienitz - (Amiga, Win32, Unicode); Chris Herborth (BeOS, QNX, Atari); Jonathan - Hudson (SMS/QDOS); Sergio Monesi (Acorn RISC OS); Harald Denker (Atari, - MVS); John Bush (Solaris, Amiga); Hunter Goatley (VMS, Info-ZIP Site - maintenance); Steve Salisbury (Win32); Steve Miller (Windows CE GUI), - Johnny Lee (MS-DOS, Win32, Zip64); and Dave Smith (Tandem NSK). - - The following people were former members of the Info-ZIP development - group and provided major contributions to key parts of the current - code: Greg ``Cave Newt'' Roelofs (UnZip, unshrink decompression); Jean- - loup Gailly (deflate compression); Mark Adler (inflate decompression, - fUnZip). - - The author of the original unzip code upon which Info-ZIP's was based - is Samuel H. Smith; Carl Mascott did the first Unix port; and David P. - Kirschbaum organized and led Info-ZIP in its early days with Keith - Petersen hosting the original mailing list at WSMR-SimTel20. The full - list of contributors to UnZip has grown quite large; please refer to - the CONTRIBS file in the UnZip source distribution for a relatively - complete version. + The primary Info-ZIP authors (current semi-active members + of the Zip-Bugs workgroup) are: Ed Gordon (Zip, general + maintenance, shared code, Zip64, Win32, Unix); Christian + Spieler (UnZip maintenance coordination, VMS, MS-DOS, + Win32, shared code, general Zip and UnZip integration and + optimization); Onno van der Linden (Zip); Mike White + (Win32, Windows GUI, Windows DLLs); Kai Uwe Rommel (OS/2, + Win32); Steven M. Schweda (VMS, support of new features); + Paul Kienitz (Amiga, Win32); Chris Herborth (BeOS, QNX, + Atari); Jonathan Hudson (SMS/QDOS); Sergio Monesi (Acorn + RISC OS); Harald Denker (Atari, MVS); John Bush (Solaris, + Amiga); Hunter Goatley (VMS, Info-ZIP Site maintenance); + Steve Salisbury (Win32); Steve Miller (Windows CE GUI), + Johnny Lee (MS-DOS, Win32, Zip64); and Dave Smith (Tandem + NSK). + + The following people were former members of the Info-ZIP + development group and provided major contributions to key + parts of the current code: Greg ``Cave Newt'' Roelofs + (UnZip, unshrink decompression); Jean-loup Gailly (deflate + compression); Mark Adler (inflate decompression, fUnZip). + + The author of the original unzip code upon which Info- + ZIP's was based is Samuel H. Smith; Carl Mascott did the + first Unix port; and David P. Kirschbaum organized and + led Info-ZIP in its early days with Keith Petersen hosting + the original mailing list at WSMR-SimTel20. The full list + of contributors to UnZip has grown quite large; please + refer to the CONTRIBS file in the UnZip source distribu- + tion for a relatively complete version. VERSIONS v1.2 15 Mar 89 Samuel H. Smith @@ -944,12 +1056,17 @@ v5.3 22 Apr 97 Info-ZIP (Zip-Bugs subgroup, GRR) v5.31 31 May 97 Info-ZIP (Zip-Bugs subgroup, GRR) v5.32 3 Nov 97 Info-ZIP (Zip-Bugs subgroup, GRR) + +Info-ZIP 28 February 2005 (v5.52) 18 + +UNZIP(1L) UNZIP(1L) + v5.4 28 Nov 98 Info-ZIP (Zip-Bugs subgroup, SPC) v5.41 16 Apr 00 Info-ZIP (Zip-Bugs subgroup, SPC) v5.42 14 Jan 01 Info-ZIP (Zip-Bugs subgroup, SPC) v5.5 17 Feb 02 Info-ZIP (Zip-Bugs subgroup, SPC) v5.51 22 May 04 Info-ZIP (Zip-Bugs subgroup, SPC) v5.52 28 Feb 05 Info-ZIP (Zip-Bugs subgroup, SPC) - v6.0 20 Apr 09 Info-ZIP (Zip-Bugs subgroup, SPC) -Info-ZIP 20 April 2009 (v6.0) UNZIP(1L) +Info-ZIP 28 February 2005 (v5.52) 19 + diff -Nru unzip-6.0/unzpriv.h unzip-6.0/unzpriv.h --- unzip-6.0/unzpriv.h 2009-04-19 23:59:26.000000000 +0000 +++ unzip-6.0/unzpriv.h 2010-05-14 07:30:18.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -42,15 +42,12 @@ # ifdef DLL # undef DLL # endif -# ifdef SFX /* fUnZip is NOT the sfx stub! */ +# ifdef SFX /* fUnZip is NOT the sfx stub! */ # undef SFX # endif -# ifdef USE_BZIP2 /* fUnZip does not support bzip2 decompression */ -# undef USE_BZIP2 -# endif #endif -#if (defined(USE_ZLIB) && !defined(HAVE_ZL_INFLAT64) && !defined(NO_DEFLATE64)) +#if (defined(USE_ZLIB) && !defined(NO_DEFLATE64)) /* zlib does not (yet?) provide Deflate64(tm) support */ # define NO_DEFLATE64 #endif @@ -67,11 +64,6 @@ # endif #endif -/* disable bzip2 support for SFX stub, unless explicitly requested */ -#if (defined(SFX) && !defined(BZIP2_SFX) && defined(USE_BZIP2)) -# undef USE_BZIP2 -#endif - #if (defined(NO_VMS_TEXT_CONV) || defined(VMS)) # ifdef VMS_TEXT_CONV # undef VMS_TEXT_CONV @@ -82,17 +74,6 @@ # endif #endif -/* Enable -B option per default on specific systems, to allow backing up - * files that would be overwritten. - * (This list of systems must be kept in sync with the list of systems - * that add the B_flag to the UzpOpts structure, see unzip.h.) - */ -#if (!defined(NO_UNIXBACKUP) && !defined(UNIXBACKUP)) -# if defined(UNIX) || defined(OS2) || defined(WIN32) -# define UNIXBACKUP -# endif -#endif - #if (defined(DLL) && !defined(REENTRANT)) # define REENTRANT #endif @@ -121,7 +102,7 @@ # undef FORCE_UNIX_OVER_WIN32 # endif # ifdef FORCE_WIN32_OVER_UNIX - /* native Win32 support was explicitly requested... */ + /* native Win32 support was explicitely requested... */ # undef UNIX # else /* use the POSIX (Unix) emulation features by default... */ @@ -219,6 +200,54 @@ OS-dependent includes ---------------------------------------------------------------------------*/ +#ifdef EFT +# define Z_OFF_T off_t /* Amdahl UTS nonsense ("extended file types") */ +#else +#if (defined(UNIX) && defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)) +# define Z_OFF_T off_t /* 64bit offsets to support 2GB < zipfile size < 4GB */ +#else +# define Z_OFF_T long +#endif +#endif + +#ifdef MODERN +# ifndef NO_STDDEF_H +# include +# endif +# ifndef NO_STDLIB_H +# include /* standard library prototypes, malloc(), etc. */ +# endif + typedef size_t extent; +#else /* !MODERN */ +# ifndef AOS_VS /* mostly modern? */ + Z_OFF_T lseek(); +# ifdef VAXC /* not fully modern, but has stdlib.h and void */ +# include +# else + char *malloc(); +# endif /* ?VAXC */ +# endif /* !AOS_VS */ + typedef unsigned int extent; +#endif /* ?MODERN */ + + +#ifndef MINIX /* Minix needs it after all the other includes (?) */ +# include +#endif +#include /* skip for VMS, to use tolower() function? */ +#include /* used in mapname() */ +#ifdef USE_STRINGS_H +# include /* strcpy, strcmp, memcpy, index/rindex, etc. */ +#else +# include /* strcpy, strcmp, memcpy, strchr/strrchr, etc. */ +#endif +#if (defined(MODERN) && !defined(NO_LIMITS_H)) +# include /* GRR: EXPERIMENTAL! (can be deleted) */ +#endif + +/* this include must be down here for SysV.4, for some reason... */ +#include /* used in unzip.c, fileio.c */ + /*--------------------------------------------------------------------------- API (DLL) section: @@ -312,14 +341,9 @@ #ifdef __human68k__ /* DO NOT DEFINE DOS_OS2 HERE! If Human68k is so much */ /* like MS-DOS and/or OS/2, create DOS_H68_OS2 macro. */ -# if (!defined(_MBCS) && !defined(NO_MBCS)) - /* enable MBCS support by default for this system */ +# ifndef _MBCS # define _MBCS # endif -# if (defined(_MBCS) && defined(NO_MBCS)) - /* disable MBCS support when explicitely requested */ -# undef _MBCS -# endif # include # include # include @@ -449,11 +473,11 @@ #endif /* MTS */ /*--------------------------------------------------------------------------- - Novell Netware NLM section + Novell NLM section ---------------------------------------------------------------------------*/ #ifdef NLM -# include "netware/nlmcfg.h" +# include "novell/nlmcfg.h" #endif /*--------------------------------------------------------------------------- @@ -575,7 +599,70 @@ ---------------------------------------------------------------------------*/ #ifdef VMS -# include "vms/vmscfg.h" +# include /* GRR: experimenting... */ +# include +# include /* the usual non-BSD time functions */ +# include /* same things as fcntl.h has */ +# include +# include +# define _MAX_PATH (NAM$C_MAXRSS+1) /* to define FILNAMSIZ below */ +# ifndef HAVE_STRNICMP /* use our private zstrnicmp() */ +# define NO_STRNICMP /* unless explicitely overridden */ +# endif +# ifdef RETURN_CODES /* VMS interprets standard PK return codes incorrectly */ +# define RETURN(ret) return_VMS(__G__ (ret)) /* verbose version */ +# define EXIT(ret) return_VMS(__G__ (ret)) +# else +# define RETURN return_VMS /* quiet version */ +# define EXIT return_VMS +# endif +# ifdef VMSCLI +# define USAGE(ret) VMSCLI_usage(__G__ (ret)) +# endif +# define DIR_BEG '[' +# define DIR_END ']' +# define DIR_EXT ".dir" +# ifndef DATE_FORMAT +# define DATE_FORMAT DF_MDY +# endif +# define lenEOL 1 +# define PutNativeEOL *q++ = native(LF); +# define SCREENSIZE(ttrows, ttcols) screensize(ttrows, ttcols) +# define SCREENWIDTH 80 +# define SCREENLWRAP screenlinewrap() +# if (defined(__VMS_VERSION) && !defined(VMS_VERSION)) +# define VMS_VERSION __VMS_VERSION +# endif +# if (defined(__VMS_VER) && !defined(__CRTL_VER)) +# define __CRTL_VER __VMS_VER +# endif +# if ((!defined(__CRTL_VER)) || (__CRTL_VER < 70000000)) +# define NO_GMTIME /* gmtime() of earlier VMS C RTLs is broken */ +# else +# if (!defined(NO_EF_UT_TIME) && !defined(USE_EF_UT_TIME)) +# define USE_EF_UT_TIME +# endif +# endif +# if (!defined(NOTIMESTAMP) && !defined(TIMESTAMP)) +# define TIMESTAMP +# endif +# define RESTORE_UIDGID +# ifdef __DECC + /* File open callback ID values. */ +# define OPENR_ID 1 + /* File open callback ID storage. */ + extern int openr_id; + /* File open callback function. */ + extern int acc_cb(); + /* Option macros for open(). + * General: Stream access + * + * Callback function (DEC C only) sets deq, mbc, mbf, rah, wbh, ... + */ +# define OPNZIP_RMS_ARGS "ctx=stm", "acc", acc_cb, &openr_id +# else /* !__DECC */ /* (So, GNU C, VAX C, ...)*/ +# define OPNZIP_RMS_ARGS "ctx=stm" +# endif /* ?__DECC */ #endif /* VMS */ /*--------------------------------------------------------------------------- @@ -587,7 +674,7 @@ #endif /*--------------------------------------------------------------------------- - Win32 Windows CE section (also POCKET_UNZIP) + Win32 Windows CE section (when not using POCKET_UNZIP) ---------------------------------------------------------------------------*/ #if (defined(_WIN32_WCE) || defined(POCKET_UNZIP)) @@ -596,100 +683,17 @@ -/* ---------------------------------------------------------------------------- - MUST BE AFTER LARGE FILE INCLUDES - ---------------------------------------------------------------------------- */ -/* This stuff calls in types and messes up large file includes. It needs to - go after large file defines in local includes. - I am guessing that moving them here probably broke some ports, but hey. - 10/31/2004 EG */ -/* ---------------------------------------------------------------------------- - Common includes - ---------------------------------------------------------------------------- */ - -/* Some ports apply specific adjustments which must be in effect before - reading the "standard" include headers. - */ - -#ifdef EFT -# define Z_OFF_T off_t /* Amdahl UTS nonsense ("extended file types") */ -#else -#if (defined(UNIX) && defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)) -# define Z_OFF_T off_t /* 64bit offsets to support 2GB < zipfile size < 4GB */ -#else -# define Z_OFF_T long -#endif -#endif - -#ifndef ZOFF_T_DEFINED - typedef Z_OFF_T zoff_t; -# define ZOFF_T_DEFINED -#endif -#ifndef Z_STAT_DEFINED - typedef struct stat z_stat; -# define Z_STAT_DEFINED -#endif - -#ifndef MINIX /* Minix needs it after all the other includes (?) */ -# include -#endif - -#include /* skip for VMS, to use tolower() function? */ -#include /* used in mapname() */ -#ifdef USE_STRINGS_H -# include /* strcpy, strcmp, memcpy, index/rindex, etc. */ -#else -# include /* strcpy, strcmp, memcpy, strchr/strrchr, etc. */ -#endif -#if (defined(MODERN) && !defined(NO_LIMITS_H)) -# include /* MAX/MIN constant symbols for system types... */ -#endif - -/* this include must be down here for SysV.4, for some reason... */ -#include /* used in unzip.c, fileio.c */ - - -#ifdef MODERN -# ifndef NO_STDDEF_H -# include -# endif -# ifndef NO_STDLIB_H -# include /* standard library prototypes, malloc(), etc. */ -# endif - typedef size_t extent; -#else /* !MODERN */ -# ifndef AOS_VS /* mostly modern? */ - Z_OFF_T lseek(); -# ifdef VAXC /* not fully modern, but has stdlib.h and void */ -# include -# else - char *malloc(); -# endif /* ?VAXC */ -# endif /* !AOS_VS */ - typedef unsigned int extent; -#endif /* ?MODERN */ - - /*************/ /* Defines */ /*************/ -#define UNZIP_BZ2VERS 46 -#ifdef ZIP64_SUPPORT -# ifdef USE_BZIP2 -# define UNZIP_VERSION UNZIP_BZ2VERS -# else -# define UNZIP_VERSION 45 -# endif -#else #ifdef USE_DEFLATE64 # define UNZIP_VERSION 21 /* compatible with PKUNZIP 4.0 */ #else # define UNZIP_VERSION 20 /* compatible with PKUNZIP 2.0 */ #endif -#endif #define VMS_UNZIP_VERSION 42 /* if OS-needed-to-extract is VMS: can do */ #if (defined(MSDOS) || defined(OS2)) @@ -758,11 +762,7 @@ # define DIR_END '/' /* last char before program name or filename */ #endif #ifndef DATE_FORMAT -# ifdef DATEFMT_ISO_DEFAULT -# define DATE_FORMAT DF_YMD /* defaults to invariant ISO-style */ -# else # define DATE_FORMAT DF_MDY /* defaults to US convention */ -# endif #endif #ifndef DATE_SEPCHAR # define DATE_SEPCHAR '-' @@ -783,6 +783,13 @@ # define TIMET_TO_NATIVE(x) # define NATIVE_TO_TIMET(x) #endif +#ifndef SSTAT +# ifdef WILD_STAT_BUG +# define SSTAT(path,pbuf) (iswild(path) || stat(path,pbuf)) +# else +# define SSTAT stat +# endif +#endif #ifndef STRNICMP # ifdef NO_STRNICMP # define STRNICMP zstrnicmp @@ -874,13 +881,8 @@ # endif #endif -#if (defined(__16BIT__) || defined(MED_MEM) || defined(SMALL_MEM)) -# define DIR_BLKSIZ 64 /* number of directory entries per block +#define DIR_BLKSIZ 64 /* number of directory entries per block * (should fit in 4096 bytes, usually) */ -#else -# define DIR_BLKSIZ 16384 /* use more memory, to reduce long-range seeks */ -#endif - #ifndef WSIZE # ifdef USE_DEFLATE64 # define WSIZE 65536L /* window size--must be a power of two, and */ @@ -924,20 +926,6 @@ # undef ASM_CRC #endif -#ifdef USE_ZLIB -# ifdef IZ_CRC_BE_OPTIMIZ -# undef IZ_CRC_BE_OPTIMIZ -# endif -# ifdef IZ_CRC_LE_OPTIMIZ -# undef IZ_CRC_LE_OPTIMIZ -# endif -#endif -#if (!defined(IZ_CRC_BE_OPTIMIZ) && !defined(IZ_CRC_LE_OPTIMIZ)) -# ifdef IZ_CRCOPTIM_UNFOLDTBL -# undef IZ_CRCOPTIM_UNFOLDTBL -# endif -#endif - #ifndef INBUFSIZ # if (defined(MED_MEM) || defined(SMALL_MEM)) # define INBUFSIZ 2048 /* works for MS-DOS small model */ @@ -950,7 +938,7 @@ /* For environments using 16-bit integers OUTBUFSIZ must be limited to * less than 64k (do_string() uses "unsigned" in calculations involving * OUTBUFSIZ). This is achieved by defining MED_MEM when WSIZE = 64k (aka - * Deflate64 support enabled) or EOL markers contain multiple characters. + * Deflate64 support enabled) or EOL markers consist multiple characters. * (The rule gets applied AFTER the default rule for INBUFSIZ because it * is not neccessary to reduce INBUFSIZE in this case.) */ @@ -1085,9 +1073,6 @@ #endif #ifndef PIPE_ERROR -# ifndef EPIPE -# define EPIPE -1 -# endif # define PIPE_ERROR (errno == EPIPE) #endif @@ -1150,7 +1135,7 @@ # define FOPWT "w" # endif # ifndef FOPWR -# define FOPWR "w+" +# define FOPWR "w+b" # endif #endif /* ?MODERN */ @@ -1163,18 +1148,6 @@ # include #endif -/* 2008-07-22 SMS. - * Unfortunately, on VMS, exists, and is included by - * (so it's pretty much unavoidable), and it defines PATH_MAX to a fixed - * short value (256, correct only for older systems without ODS-5 support), - * rather than one based on the real RMS NAM[L] situation. So, we - * artificially undefine it here, to allow our better-defined _MAX_PATH - * (see vms/vmscfg.h) to be used. - */ -#ifdef VMS -# undef PATH_MAX -#endif - #ifndef PATH_MAX # ifdef MAXPATHLEN # define PATH_MAX MAXPATHLEN /* in on some systems */ @@ -1191,36 +1164,8 @@ # endif /* ?MAXPATHLEN */ #endif /* !PATH_MAX */ -/* - * buffer size required to hold the longest legal local filepath - * (including the trailing '\0') - */ #define FILNAMSIZ PATH_MAX -#ifdef UNICODE_SUPPORT -# if !(defined(UTF8_MAYBE_NATIVE) || defined(UNICODE_WCHAR)) -# undef UNICODE_SUPPORT -# endif -#endif -/* 2007-09-18 SMS. - * Include here if it will be needed later for Unicode. - * Otherwise, SETLOCALE may be defined here, and then defined again - * (differently) when is read later. - */ -#ifdef UNICODE_SUPPORT -# ifdef UNICODE_WCHAR -# if !(defined(_WIN32_WCE) || defined(POCKET_UNZIP)) -# include -# endif -# endif -# ifndef _MBCS /* no need to include twice, see below */ -# include -# ifndef SETLOCALE -# define SETLOCALE(category, locale) setlocale(category, locale) -# endif -# endif -#endif /* UNICODE_SUPPORT */ - /* DBCS support for Info-ZIP (mainly for japanese (-: ) * by Yoshioka Tsuneo (QWF00133@nifty.ne.jp,tsuneo-y@is.aist-nara.ac.jp) */ @@ -1229,10 +1174,7 @@ /* Multi Byte Character Set */ # define ___MBS_TMP_DEF char *___tmp_ptr; # define ___TMP_PTR ___tmp_ptr -# ifndef CLEN -# define NEED_UZMBCLEN -# define CLEN(ptr) (int)uzmbclen((ZCONST unsigned char *)(ptr)) -# endif +# define CLEN(ptr) mblen((ZCONST char *)(ptr), MB_CUR_MAX) # ifndef PREINCSTR # define PREINCSTR(ptr) (ptr += CLEN(ptr)) # endif @@ -1247,9 +1189,7 @@ # define NEED_UZMBSRCHR # define MBSRCHR(str,c) (char *)uzmbsrchr((ZCONST unsigned char *)(str), c) # endif -# ifndef SETLOCALE -# define SETLOCALE(category, locale) setlocale(category, locale) -# endif +# define SETLOCALE(category, locale) setlocale(category, locale) #else /* !_MBCS */ # define ___MBS_TMP_DEF # define ___TMP_PTR @@ -1278,6 +1218,10 @@ # endif #endif /* MALLOC_WORK && !MY_ZCALLOC */ +#ifdef REGULUS /* returns the inode number on success(!)...argh argh argh */ +# define stat(p,s) zstat((p),(s)) +#endif + #if (defined(CRAY) && defined(ZMEM)) # undef ZMEM #endif @@ -1327,220 +1271,6 @@ # define IS_VOLID(m) ((m) & 0x08) #endif -/***********************************/ -/* LARGE_FILE_SUPPORT */ -/***********************************/ -/* This whole section lifted from Zip 3b tailor.h - - * Types are in OS dependent headers (eg, w32cfg.h) - * - * LARGE_FILE_SUPPORT and ZIP64_SUPPORT are automatically - * set in OS dependent headers (for some ports) based on the port and compiler. - * - * Function prototypes are below as OF is defined earlier in this file - * but after OS dependent header is included. - * - * E. Gordon 9/21/2003 - * Updated 1/28/2004 - * Lifted and placed here 6/7/2004 - Myles Bennett - */ -#ifdef LARGE_FILE_SUPPORT - /* 64-bit Large File Support */ - -/* ---------------------------- */ - -# if defined(UNIX) || defined(VMS) - - /* 64-bit stat functions */ -# define zstat stat -# define zfstat fstat - - /* 64-bit fseeko */ -# define zlseek lseek -# define zfseeko fseeko - - /* 64-bit ftello */ -# define zftello ftello - - /* 64-bit fopen */ -# define zfopen fopen -# define zfdopen fdopen - -# endif /* UNIX || VMS */ - -/* ---------------------------- */ - -# ifdef WIN32 - -# if defined(_MSC_VER) || defined(__MINGW32__) || defined(__LCC__) - /* MS C (VC), MinGW GCC port and LCC-32 use the MS C Runtime lib */ - - /* 64-bit stat functions */ -# define zstat _stati64 -# define zfstat _fstati64 - - /* 64-bit lseek */ -# define zlseek _lseeki64 - -# if defined(_MSC_VER) && (_MSC_VER >= 1400) - /* Beginning with VS 8.0 (Visual Studio 2005, MSC 14), the Microsoft - C rtl publishes its (previously internal) implmentations of - "fseeko" and "ftello" for 64-bit file offsets. */ - /* 64-bit fseeko */ -# define zfseeko _fseeki64 - /* 64-bit ftello */ -# define zftello _ftelli64 - -# else /* not (defined(_MSC_VER) && (_MSC_VER >= 1400)) */ - -# if defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__ >= 0x800) - /* Up-to-date versions of MinGW define the macro __MSVCRT_VERSION__ - to denote the version of the MS C rtl dll used for linking. When - configured to link against the runtime of MS Visual Studio 8 (or - newer), the built-in 64-bit fseek/ftell functions are available. */ - /* 64-bit fseeko */ -# define zfseeko _fseeki64 - /* 64-bit ftello */ -# define zftello _ftelli64 - -# else /* !(defined(__MSVCRT_VERSION__) && (__MSVCRT_VERSION__>=0x800)) */ - /* The version of the C runtime is lower than MSC 14 or unknown. */ - - /* The newest MinGW port contains built-in extensions to the MSC rtl - that provide fseeko and ftello, but our implementations will do - for now. */ - /* 64-bit fseeko */ - int zfseeko OF((FILE *, zoff_t, int)); - - /* 64-bit ftello */ - zoff_t zftello OF((FILE *)); - -# endif /* ? (__MSVCRT_VERSION__ >= 0x800) */ -# endif /* ? (_MSC_VER >= 1400) */ - - /* 64-bit fopen */ -# define zfopen fopen -# define zfdopen fdopen - -# endif /* _MSC_VER || __MINGW__ || __LCC__ */ - -# ifdef __CYGWIN__ - /* CYGWIN GCC Posix emulator on Windows - (configuration not yet finished/tested) */ - - /* 64-bit stat functions */ -# define zstat _stati64 -# define zfstat _fstati64 - - /* 64-bit lseek */ -# define zlseek _lseeki64 - - /* 64-bit fseeko */ -# define zfseeko fseeko - - /* 64-bit ftello */ -# define zftello ftello - - /* 64-bit fopen */ -# define zfopen fopen -# define zfdopen fdopen - -# endif -# if defined(__WATCOMC__) || defined(__BORLANDC__) - /* WATCOM C and Borland C provide their own C runtime libraries, - but they are sufficiently compatible with MS CRTL. */ - - /* 64-bit stat functions */ -# define zstat _stati64 -# define zfstat _fstati64 - -# ifdef __WATCOMC__ - /* 64-bit lseek */ -# define zlseek _lseeki64 -# endif - - /* 64-bit fseeko */ - int zfseeko OF((FILE *, zoff_t, int)); - - /* 64-bit ftello */ - zoff_t zftello OF((FILE *)); - - /* 64-bit fopen */ -# define zfopen fopen -# define zfdopen fdopen - -# endif -# ifdef __IBMC__ - /* IBM C */ - - /* 64-bit stat functions */ - - /* 64-bit fseeko */ - - /* 64-bit ftello */ - - /* 64-bit fopen */ - -# endif - -# endif /* WIN32 */ - -#else - /* No Large File Support */ - -# ifndef REGULUS /* returns the inode number on success(!)...argh argh argh */ -# define zstat stat -# endif -# define zfstat fstat -# define zlseek lseek -# define zfseeko fseek -# define zftello ftell -# define zfopen fopen -# define zfdopen fdopen - -# if defined(UNIX) || defined(VMS) || defined(WIN32) - /* For these systems, implement "64bit file vs. 32bit prog" check */ -# ifndef DO_SAFECHECK_2GB -# define DO_SAFECHECK_2GB -# endif -# endif - -#endif - -/* No "64bit file vs. 32bit prog" check for SFX stub, to save space */ -#if (defined(DO_SAFECHECK_2GB) && defined(SFX)) -# undef DO_SAFECHECK_2GB -#endif - -#ifndef SSTAT -# ifdef WILD_STAT_BUG -# define SSTAT(path,pbuf) (iswild(path) || zstat(path,pbuf)) -# else -# define SSTAT zstat -# endif -#endif - - -/* Default fzofft() format selection. */ - -#ifndef FZOFFT_FMT - -# ifdef LARGE_FILE_SUPPORT -# define FZOFFT_FMT "ll" -# define FZOFFT_HEX_WID_VALUE "16" -# else /* def LARGE_FILE_SUPPORT */ -# define FZOFFT_FMT "l" -# define FZOFFT_HEX_WID_VALUE "8" -# endif /* def LARGE_FILE_SUPPORT */ - -#endif /* ndef FZOFFT_FMT */ - -#define FZOFFT_HEX_WID ((char *) -1) -#define FZOFFT_HEX_DOT_WID ((char *) -2) - -#define FZOFFT_NUM 4 /* Number of chambers. */ -#define FZOFFT_LEN 24 /* Number of characters/chamber. */ - #ifdef SHORT_SYMS /* Mark Williams C, ...? */ # define extract_or_test_files xtr_or_tst_files @@ -1646,14 +1376,6 @@ #define IS_OVERWRT_ALL (G.overwrite_mode == OVERWRT_ALWAYS) #define IS_OVERWRT_NONE (G.overwrite_mode == OVERWRT_NEVER) -#ifdef VMS - /* return codes for VMS-specific open_outfile() function */ -# define OPENOUT_OK 0 /* file openend normally */ -# define OPENOUT_FAILED 1 /* file open failed */ -# define OPENOUT_SKIPOK 2 /* file not opened, skip at error level OK */ -# define OPENOUT_SKIPWARN 3 /* file not opened, skip at error level WARN */ -#endif /* VMS */ - #define ROOT 0 /* checkdir() extract-to path: called once */ #define INIT 1 /* allocate buildpath: called once per member */ #define APPEND_DIR 2 /* append a dir comp.: many times per member */ @@ -1698,15 +1420,11 @@ #define DEFLATED 8 #define ENHDEFLATED 9 #define DCLIMPLODED 10 -#define BZIPPED 12 -#define LZMAED 14 -#define IBMTERSED 18 -#define IBMLZ77ED 19 -#define WAVPACKED 97 -#define PPMDED 98 -#define NUM_METHODS 17 /* number of known method IDs */ -/* don't forget to update list.c (list_files()), extract.c and zipinfo.c - * appropriately if NUM_METHODS changes */ +#define PKRESMOD11 11 +#define BZIP2ED 12 +#define NUM_METHODS 13 /* index of last method + 1 */ +/* don't forget to update list_files(), extract.c and zipinfo.c appropriately + * if NUM_METHODS changes */ /* (the PK-class error codes are public and have been moved into unzip.h) */ @@ -1720,28 +1438,14 @@ /* extra-field ID values, all little-endian: */ #define EF_PKSZ64 0x0001 /* PKWARE's 64-bit filesize extensions */ #define EF_AV 0x0007 /* PKWARE's authenticity verification */ -#define EF_EFS 0x0008 /* PKWARE's extended language encoding */ #define EF_OS2 0x0009 /* OS/2 extended attributes */ #define EF_PKW32 0x000a /* PKWARE's Win95/98/WinNT filetimes */ #define EF_PKVMS 0x000c /* PKWARE's VMS */ #define EF_PKUNIX 0x000d /* PKWARE's Unix */ -#define EF_PKFORK 0x000e /* PKWARE's future stream/fork descriptors */ -#define EF_PKPATCH 0x000f /* PKWARE's patch descriptor */ -#define EF_PKPKCS7 0x0014 /* PKWARE's PKCS#7 store for X.509 Certs */ -#define EF_PKFX509 0x0015 /* PKWARE's file X.509 Cert&Signature ID */ -#define EF_PKCX509 0x0016 /* PKWARE's central dir X.509 Cert ID */ -#define EF_PKENCRHD 0x0017 /* PKWARE's Strong Encryption header */ -#define EF_PKRMCTL 0x0018 /* PKWARE's Record Management Controls*/ -#define EF_PKLSTCS7 0x0019 /* PKWARE's PKCS#7 Encr. Recipient Cert List */ -#define EF_PKIBM 0x0065 /* PKWARE's IBM S/390 & AS/400 attributes */ -#define EF_PKIBM2 0x0066 /* PKWARE's IBM S/390 & AS/400 compr. attribs */ #define EF_IZVMS 0x4d49 /* Info-ZIP's VMS ("IM") */ -#define EF_IZUNIX 0x5855 /* Info-ZIP's first Unix[1] ("UX") */ -#define EF_IZUNIX2 0x7855 /* Info-ZIP's second Unix[2] ("Ux") */ -#define EF_IZUNIX3 0x7875 /* Info-ZIP's newest Unix[3] ("ux") */ +#define EF_IZUNIX 0x5855 /* Info-ZIP's old Unix[1] ("UX") */ +#define EF_IZUNIX2 0x7855 /* Info-ZIP's new Unix[2] ("Ux") */ #define EF_TIME 0x5455 /* universal timestamp ("UT") */ -#define EF_UNIPATH 0x7075 /* Info-ZIP Unicode Path ("up") */ -#define EF_UNICOMNT 0x6375 /* Info-ZIP Unicode Comment ("uc") */ #define EF_MAC3 0x334d /* Info-ZIP's new Macintosh (= "M3") */ #define EF_JLMAC 0x07c8 /* Johnny Lee's old Macintosh (= 1992) */ #define EF_ZIPIT 0x2605 /* Thomas Brown's Macintosh (ZipIt) */ @@ -1780,8 +1484,6 @@ #define EB_UX2_GID 2 /* byte offset of GID in "Ux" field data */ #define EB_UX2_VALID (1 << 8) /* UID/GID present */ -#define EB_UX3_MINLEN 7 /* minimal "ux" field size (2-byte UID/GID) */ - #define EB_UT_MINLEN 1 /* minimal UT field contains Flags byte */ #define EB_UT_FLAGS 0 /* byte offset of Flags field */ #define EB_UT_TIME1 1 /* byte offset of 1st time value */ @@ -1819,23 +1521,13 @@ /*--------------------------------------------------------------------------- - True sizes of the various headers (excluding their 4-byte signatures), - as defined by PKWARE--so it is not likely that these will ever change. - But if they do, make sure both these defines AND the typedefs below get - updated accordingly. - - 12/27/2006 - The Zip64 End Of Central Directory record is variable size and now - comes in two flavors, version 1 and the new version 2 that supports - central directory encryption. We only use the old fields at the - top of the Zip64 EOCDR, and this block is a fixed size still, but - need to be aware of the stuff following. - ---------------------------------------------------------------------------*/ -#define LREC_SIZE 26 /* lengths of local file headers, central */ -#define CREC_SIZE 42 /* directory headers, end-of-central-dir */ -#define ECREC_SIZE 18 /* record, zip64 end-of-cent-dir locator */ -#define ECLOC64_SIZE 16 /* and zip64 end-of-central-dir record, */ -#define ECREC64_SIZE 52 /* respectively */ + True sizes of the various headers, as defined by PKWARE--so it is not + likely that these will ever change. But if they do, make sure both these + defines AND the typedefs below get updated accordingly. + ---------------------------------------------------------------------------*/ +#define LREC_SIZE 26 /* lengths of local file headers, central */ +#define CREC_SIZE 42 /* directory headers, and the end-of- */ +#define ECREC_SIZE 18 /* central-dir record, respectively */ #define MAX_BITS 13 /* used in unshrink() */ #define HSIZE (1 << MAX_BITS) /* size of global work area */ @@ -1902,69 +1594,6 @@ /* Typedefs */ /**************/ -#ifdef ZIP64_SUPPORT -# ifndef Z_UINT8_DEFINED -# if (defined(__GNUC__) || defined(__hpux) || defined(__SUNPRO_C)) - typedef unsigned long long z_uint8; -# else - typedef unsigned __int64 z_uint8; -# endif -# define Z_UINT8_DEFINED -# endif -#endif -#ifndef Z_UINT4_DEFINED -# if (defined(MODERN) && !defined(NO_LIMITS_H)) -# if (defined(UINT_MAX) && (UINT_MAX == 0xffffffffUL)) - typedef unsigned int z_uint4; -# define Z_UINT4_DEFINED -# else -# if (defined(ULONG_MAX) && (ULONG_MAX == 0xffffffffUL)) - typedef unsigned long z_uint4; -# define Z_UINT4_DEFINED -# else -# if (defined(USHRT_MAX) && (USHRT_MAX == 0xffffffffUL)) - typedef unsigned short z_uint4; -# define Z_UINT4_DEFINED -# endif -# endif -# endif -# endif /* MODERN && !NO_LIMITS_H */ -#endif /* !Z_UINT4_DEFINED */ -#ifndef Z_UINT4_DEFINED - typedef ulg z_uint4; -# define Z_UINT4_DEFINED -#endif - -/* The following three user-defined unsigned integer types are used for - holding zipfile entities (required widths without / with Zip64 support): - a) sizes and offset of zipfile entries - (4 bytes / 8 bytes) - b) enumeration and counts of zipfile entries - (2 bytes / 8 bytes) - Remark: internally, we use 4 bytes for archive member counting in the - No-Zip64 case, because UnZip supports more than 64k entries for - classic Zip archives without Zip64 extensions. - c) enumeration and counts of zipfile volumes of multivolume archives - (2 bytes / 4 bytes) - */ -#ifdef ZIP64_SUPPORT - typedef z_uint8 zusz_t; /* zipentry sizes & offsets */ - typedef z_uint8 zucn_t; /* archive entry counts */ - typedef z_uint4 zuvl_t; /* multivolume numbers */ -# define MASK_ZUCN64 (~(zucn_t)0) -/* In case we ever get to support an environment where z_uint8 may be WIDER - than 64 bit wide, we will have to apply a construct similar to - #define MASK_ZUCN64 (~(zucn_t)0 & (zucn_t)0xffffffffffffffffULL) - for the 64-bit mask. - */ -#else - typedef ulg zusz_t; /* zipentry sizes & offsets */ - typedef unsigned int zucn_t; /* archive entry counts */ - typedef unsigned short zuvl_t; /* multivolume numbers */ -# define MASK_ZUCN64 (~(zucn_t)0) -#endif -#define MASK_ZUCN16 ((zucn_t)0xFFFF) - #ifdef NO_UID_GID # ifdef UID_USHORT typedef unsigned short uid_t; /* TI SysV.3 */ @@ -2005,16 +1634,16 @@ extent attriblen; /* length of system-specific attrib data */ char *target; /* pointer to target filespec */ char *fname; /* pointer to name of link */ - char buf[1]; /* data/name/link buffer */ + char buf[2]; /* name of link, allocs space for 2 '\0's */ } slinkentry; #endif /* SYMLINKS */ typedef struct min_info { - zoff_t offset; - zusz_t compr_size; /* compressed size (needed if extended header) */ - zusz_t uncompr_size; /* uncompressed size (needed if extended header) */ + Z_OFF_T offset; + ulg compr_size; /* compressed size (needed if extended header) */ + ulg uncompr_size; /* uncompressed size (needed if extended header) */ ulg crc; /* crc (needed if extended header) */ - zuvl_t diskstart; /* no of volume where this entry starts */ + ush diskstart; /* no of volume where this entry starts */ uch hostver; uch hostnum; unsigned file_attr; /* local flavor, as used by creat(), chmod()... */ @@ -2024,13 +1653,7 @@ unsigned textmode : 1; /* file is to be extracted as text */ unsigned lcflag : 1; /* convert filename to lowercase */ unsigned vollabel : 1; /* "file" is an MS-DOS volume (disk) label */ -#ifdef SYMLINKS - unsigned symlink : 1; /* file is a symbolic link */ -#endif unsigned HasUxAtt : 1; /* crec ext_file_attr has Unix style mode bits */ -#ifdef UNICODE_SUPPORT - unsigned GPFIsUTF8: 1; /* crec gen_purpose_flag UTF-8 bit 11 is set */ -#endif #ifndef SFX char Far *cfilname; /* central header version of filename */ #endif @@ -2112,29 +1735,13 @@ typedef uch ec_byte_rec[ ECREC_SIZE+4 ]; /* define SIGNATURE 0 space-holder only */ # define NUMBER_THIS_DISK 4 -# define NUM_DISK_WITH_START_CEN_DIR 6 -# define NUM_ENTRIES_CEN_DIR_THS_DISK 8 +# define NUM_DISK_WITH_START_CENTRAL_DIR 6 +# define NUM_ENTRIES_CENTRL_DIR_THS_DISK 8 # define TOTAL_ENTRIES_CENTRAL_DIR 10 # define SIZE_CENTRAL_DIRECTORY 12 # define OFFSET_START_CENTRAL_DIRECTORY 16 # define ZIPFILE_COMMENT_LENGTH 20 - typedef uch ec_byte_loc64[ ECLOC64_SIZE+4 ]; -# define NUM_DISK_START_EOCDR64 4 -# define OFFSET_START_EOCDR64 8 -# define NUM_THIS_DISK_LOC64 16 - - typedef uch ec_byte_rec64[ ECREC64_SIZE+4 ]; -# define ECREC64_LENGTH 4 -# define EC_VERSION_MADE_BY_0 12 -# define EC_VERSION_NEEDED_0 14 -# define NUMBER_THIS_DSK_REC64 16 -# define NUM_DISK_START_CEN_DIR64 20 -# define NUM_ENTRIES_CEN_DIR_THS_DISK64 24 -# define TOTAL_ENTRIES_CENTRAL_DIR64 32 -# define SIZE_CENTRAL_DIRECTORY64 40 -# define OFFSET_START_CENTRAL_DIRECT64 48 - /* The following structs are used to hold all header data of a zip entry. Traditionally, the structs' layouts followed the data layout of the @@ -2146,8 +1753,8 @@ (top-down), to prevent internal padding and optimize memory usage! */ typedef struct local_file_header { /* LOCAL */ - zusz_t csize; - zusz_t ucsize; + ulg csize; + ulg ucsize; ulg last_mod_dos_datetime; ulg crc32; uch version_needed_to_extract[2]; @@ -2157,33 +1764,33 @@ ush extra_field_length; } local_file_hdr; +#if 0 typedef struct central_directory_file_header { /* CENTRAL */ - zusz_t csize; - zusz_t ucsize; - zusz_t relative_offset_local_header; - ulg last_mod_dos_datetime; - ulg crc32; - ulg external_file_attributes; - zuvl_t disk_number_start; - ush internal_file_attributes; uch version_made_by[2]; uch version_needed_to_extract[2]; ush general_purpose_bit_flag; ush compression_method; + ulg last_mod_dos_datetime; + ulg crc32; + ulg csize; + ulg ucsize; ush filename_length; ush extra_field_length; ush file_comment_length; + ush disk_number_start; + ush internal_file_attributes; + ulg external_file_attributes; + ulg relative_offset_local_header; } cdir_file_hdr; +#endif /* 0 */ typedef struct end_central_dir_record { /* END CENTRAL */ - zusz_t size_central_directory; - zusz_t offset_start_central_directory; - zucn_t num_entries_centrl_dir_ths_disk; - zucn_t total_entries_central_dir; - zuvl_t number_this_disk; - zuvl_t num_disk_start_cdir; - int have_ecr64; /* valid Zip64 ecdir-record exists */ - int is_zip64_archive; /* Zip64 ecdir-record is mandatory */ + ush number_this_disk; + ush num_disk_start_cdir; + ush num_entries_centrl_dir_ths_disk; + ush total_entries_central_dir; + ulg size_central_directory; + ulg offset_start_central_directory; ush zipfile_comment_length; } ecdir_rec; @@ -2251,18 +1858,13 @@ void free_G_buffers OF((__GPRO)); /* static int do_seekable OF((__GPRO__ int lastchance)); */ /* static int find_ecrec OF((__GPRO__ long searchlen)); */ -/* static int process_central_comment OF((__GPRO)); */ +int uz_end_central OF((__GPRO)); int process_cdir_file_hdr OF((__GPRO)); +int get_cdir_ent OF((__GPRO)); int process_local_file_hdr OF((__GPRO)); -int getZip64Data OF((__GPRO__ ZCONST uch *ef_buf, - unsigned ef_len)); -#ifdef UNICODE_SUPPORT - int getUnicodeData OF((__GPRO__ ZCONST uch *ef_buf, - unsigned ef_len)); -#endif unsigned ef_scan_for_izux OF((ZCONST uch *ef_buf, unsigned ef_len, int ef_is_c, ulg dos_mdatetime, - iztimes *z_utim, ulg *z_uidgid)); + iztimes *z_utim, ush *z_uidgid)); #if (defined(RISCOS) || defined(ACORN_FTYPE_NFS)) zvoid *getRISCOSexfield OF((ZCONST uch *ef_buf, unsigned ef_len)); #endif @@ -2277,9 +1879,9 @@ #ifndef WINDLL int zi_opts OF((__GPRO__ int *pargc, char ***pargv)); #endif -void zi_end_central OF((__GPRO)); +int zi_end_central OF((__GPRO)); int zipinfo OF((__GPRO)); -/* static int zi_long OF((__GPRO__ zusz_t *pEndprev)); */ +/* static int zi_long OF((__GPRO__ ulg *pEndprev)); */ /* static int zi_short OF((__GPRO)); */ /* static char *zi_time OF((__GPRO__ ZCONST ulg *datetimez, ZCONST time_t *modtimez, char *d_t_str));*/ @@ -2294,7 +1896,7 @@ int get_time_stamp OF((__GPRO__ time_t *last_modtime, ulg *nmember)); #endif -int ratio OF((zusz_t uc, zusz_t c)); +int ratio OF((ulg uc, ulg c)); void fnprint OF((__GPRO)); #endif /* !SFX */ @@ -2310,7 +1912,7 @@ unsigned readbuf OF((__GPRO__ char *buf, register unsigned len)); int readbyte OF((__GPRO)); int fillinbuf OF((__GPRO)); -int seek_zipf OF((__GPRO__ zoff_t abs_offset)); +int seek_zipf OF((__GPRO__ Z_OFF_T abs_offset)); #ifdef FUNZIP int flush OF((__GPRO__ ulg size)); /* actually funzip.c */ #else @@ -2323,9 +1925,6 @@ int do_string OF((__GPRO__ unsigned int length, int option)); ush makeword OF((ZCONST uch *b)); ulg makelong OF((ZCONST uch *sig)); -zusz_t makeint64 OF((ZCONST uch *sig)); -char *fzofft OF((__GPRO__ zoff_t val, - ZCONST char *pre, ZCONST char *post)); #if (!defined(STR_TO_ISO) || defined(NEED_STR2ISO)) char *str2iso OF((char *dst, ZCONST char *src)); #endif @@ -2347,9 +1946,6 @@ zvoid *memcpy OF((register zvoid *, register ZCONST zvoid *, register unsigned int)); #endif -#ifdef NEED_UZMBCLEN - extent uzmbclen OF((ZCONST unsigned char *ptr)); -#endif #ifdef NEED_UZMBSCHR unsigned char *uzmbschr OF((ZCONST unsigned char *str, unsigned int c)); #endif @@ -2379,9 +1975,6 @@ /* static int TestExtraField OF((__GPRO__ uch *ef, unsigned ef_len)); */ /* static int test_OS2 OF((__GPRO__ uch *eb, unsigned eb_size)); */ /* static int test_NT OF((__GPRO__ uch *eb, unsigned eb_size)); */ -#ifndef SFX - unsigned find_compr_idx OF((unsigned compr_methodnum)); -#endif int memextract OF((__GPRO__ uch *tgt, ulg tgtsize, ZCONST uch *src, ulg srcsize)); int memflush OF((__GPRO__ ZCONST uch *rawbuf, ulg size)); @@ -2390,8 +1983,7 @@ unsigned size, unsigned *retlen, ZCONST uch *init, unsigned needlen)); #endif -char *fnfilter OF((ZCONST char *raw, uch *space, - extent size)); +char *fnfilter OF((ZCONST char *raw, uch *space)); /*--------------------------------------------------------------------------- Decompression functions: @@ -2422,10 +2014,6 @@ /* static void partial_clear OF((__GPRO)); * unshrink.c */ #endif /* !LZW_CLEAN */ #endif /* !SFX && !FUNZIP */ -#ifdef USE_BZIP2 - int UZbunzip2 OF((__GPRO)); /* extract.c */ - void bz_internal_error OF((int bzerrcode)); /* ubz2err.c */ -#endif /*--------------------------------------------------------------------------- Internal API functions (only included in DLL versions): @@ -2455,11 +2043,7 @@ MSDOS-only functions: ---------------------------------------------------------------------------*/ -#ifdef MSDOS -#if (!defined(FUNZIP) && !defined(SFX) && !defined(WINDLL)) - void check_for_windows OF((ZCONST char *app)); /* msdos.c */ -#endif -#if (defined(__GO32__) || defined(__EMX__)) +#if (defined(MSDOS) && (defined(__GO32__) || defined(__EMX__))) unsigned _dos_getcountryinfo(void *); /* msdos.c */ #if (!defined(__DJGPP__) || (__DJGPP__ < 2)) unsigned _dos_setftime(int, unsigned, unsigned); /* msdos.c */ @@ -2468,7 +2052,6 @@ void _dos_getdrive(unsigned *); /* msdos.c */ unsigned _dos_close(int); /* msdos.c */ #endif /* !__DJGPP__ || (__DJGPP__ < 2) */ -#endif /* __GO32__ || __EMX__ */ #endif /*--------------------------------------------------------------------------- @@ -2536,7 +2119,6 @@ /* int open_outfile OF((__GPRO)); * (see fileio.c) vms.c */ /* int flush OF((__GPRO__ uch *rawbuf, unsigned size, int final_flag)); * (see fileio.c) vms.c */ - char *vms_msg_text OF((void)); /* vms.c */ #ifdef RETURN_CODES void return_VMS OF((__GPRO__ int zip_error)); /* vms.c */ #else @@ -2562,7 +2144,7 @@ #endif #ifdef W32_STAT_BANDAID int zstat_win32 OF((__W32STAT_GLOBALS__ - const char *path, z_stat *buf)); /* win32.c */ + const char *path, struct stat *buf)); /* win32.c */ #endif #endif @@ -2581,8 +2163,13 @@ int ic __WDLPRO)); /* match.c */ int iswild OF((ZCONST char *p)); /* match.c */ -/* declarations of public CRC-32 functions have been moved into crc32.h - (free_crc_table(), get_crc_table(), crc32()) crc32.c */ +#ifdef DYNALLOC_CRCTAB + void free_crc_table OF((void)); /* crctab.c */ +#endif +#ifndef USE_ZLIB + ZCONST ulg near *get_crc_table OF((void)); /* funzip.c, crctab.c */ + ulg crc32 OF((ulg crc, ZCONST uch *buf, extent len)); +#endif /* !USE_ZLIB */ /* assembler source or crc32.c */ int dateformat OF((void)); /* local */ char dateseparator OF((void)); /* local */ @@ -2601,7 +2188,7 @@ # endif #endif /* MORE && (ATH_BEO_UNX || QDOS || VMS) */ #ifdef OS2_W32 - int SetFileSize OF((FILE *file, zusz_t filesize)); /* local */ + int SetFileSize OF((FILE *file, ulg filesize)); /* local */ #endif #ifndef MTS /* macro in MTS */ void close_outfile OF((__GPRO)); /* local */ @@ -2621,9 +2208,6 @@ int stamp_file OF((ZCONST char *fname, time_t modtime)); /* local */ # endif #endif -#ifdef NEED_ISO_OEM_INIT - void prepare_ISO_OEM_translat OF((__GPRO)); /* local */ -#endif #if (defined(MALLOC_WORK) && defined(MY_ZCALLOC)) zvoid far *zcalloc OF((unsigned int, unsigned int)); zvoid zcfree OF((zvoid far *)); @@ -2684,10 +2268,7 @@ * standard C functions from . */ # define read(fd,buf,n) fread((buf),1,(n),(FILE *)(fd)) -# ifdef zlseek -# undef zlseek -# endif -# define zlseek(fd,o,w) zfseeko((FILE *)(fd),(o),(w)) +# define lseek(fd,o,w) fseek((FILE *)(fd),(o),(w)) # define close(fd) fclose((FILE *)(fd)) #endif /* USE_STRM_INPUT */ @@ -2695,13 +2276,13 @@ * UnZip. Otherwise, to get the same behaviour as for (*G.message)(), the * Info() definition for "FUNZIP" would have to be corrected: * #define Info(buf,flag,sprf_arg) \ - * (fputs((char *)(sprintf sprf_arg, (buf)), \ - * (flag)&1? stderr : stdout) < 0) + * (fprintf((flag)&1? stderr : stdout, \ + * (char *)(sprintf sprf_arg, (buf))) == EOF) */ #ifndef Info /* may already have been defined for redirection */ # ifdef FUNZIP # define Info(buf,flag,sprf_arg) \ - fputs((char *)(sprintf sprf_arg, (buf)), (flag)&1? stderr : stdout) + fprintf((flag)&1? stderr : stdout, (char *)(sprintf sprf_arg, (buf))) # else # ifdef INT_SPRINTF /* optimized version for "int sprintf()" flavour */ # define Info(buf,flag,sprf_arg) \ @@ -2714,22 +2295,14 @@ # endif #endif /* !Info */ -/* This wrapper macro around fzofft() is just defined to "hide" the - * argument needed to reference the global storage buffers. - */ -#define FmZofft(val, pre, post) fzofft(__G__ val, pre, post) - /* The following macro wrappers around the fnfilter function are used many * times to prepare archive entry names or name components for displaying * listings and (warning/error) messages. They use sections in the upper half * of 'slide' as buffer, since their output is normally fed through the * Info() macro with 'slide' (the start of this area) as message buffer. */ -#define FnFilter1(fname) \ - fnfilter((fname), slide + (extent)(WSIZE>>1), (extent)(WSIZE>>2)) -#define FnFilter2(fname) \ - fnfilter((fname), slide + (extent)((WSIZE>>1) + (WSIZE>>2)),\ - (extent)(WSIZE>>2)) +#define FnFilter1(fname) fnfilter((fname), slide + (WSIZE>>1)) +#define FnFilter2(fname) fnfilter((fname), slide + ((WSIZE>>1) + (WSIZE>>2))) #ifndef FUNZIP /* used only in inflate.c */ # define MESSAGE(str,len,flag) (*G.message)((zvoid *)&G,(str),(len),(flag)) @@ -2741,13 +2314,6 @@ # define CRCVAL_INITIAL 0L #endif -#ifdef SYMLINKS - /* This macro defines the Zip "made by" hosts that are considered - to support storing symbolic link entries. */ -# define SYMLINK_HOST(hn) ((hn) == UNIX_ || (hn) == ATARI_ || \ - (hn) == ATHEOS_ || (hn) == BEOS_ || (hn) == VMS_) -#endif - #ifndef TEST_NTSD /* "NTSD valid?" checking function */ # define TEST_NTSD NULL /* ... is not available */ #endif @@ -2898,7 +2464,7 @@ # ifndef IZ_ISO2OEM_ARRAY # define IZ_ISO2OEM_ARRAY # endif -# define _ISO_INTERN(str1) if (iso2oem) {register uch *p;\ +# define _ISO_INTERN(str1) {register uch *p;\ for (p=(uch *)(str1); *p; p++)\ *p = native((*p & 0x80) ? iso2oem[*p & 0x7f] : *p);} # else @@ -2913,7 +2479,7 @@ # ifndef IZ_OEM2ISO_ARRAY # define IZ_OEM2ISO_ARRAY # endif -# define _OEM_INTERN(str1) if (oem2iso) {register uch *p;\ +# define _OEM_INTERN(str1) {register uch *p;\ for (p=(uch *)(str1); *p; p++)\ *p = native((*p & 0x80) ? oem2iso[*p & 0x7f] : *p);} # endif @@ -2940,8 +2506,7 @@ #if (!defined(INTERN_TO_ISO) && !defined(ASCII2ISO)) # ifdef CRTL_CP_IS_OEM /* know: "ASCII" is "OEM" */ -# define ASCII2ISO(c) \ - ((((c) & 0x80) && oem2iso) ? oem2iso[(c) & 0x7f] : (c)) +# define ASCII2ISO(c) (((c) & 0x80) ? oem2iso[(c) & 0x7f] : (c)) # if (defined(NEED_STR2ISO) && !defined(CRYP_USES_OEM2ISO)) # define CRYP_USES_OEM2ISO # endif @@ -2957,8 +2522,7 @@ # define ASCII2OEM(c) (c) # else /* assume: "ASCII" is "ISO-ANSI" */ -# define ASCII2OEM(c) \ - ((((c) & 0x80) && iso2oem) ? iso2oem[(c) & 0x7f] : (c)) +# define ASCII2OEM(c) (((c) & 0x80) ? iso2oem[(c) & 0x7f] : (c)) # if (defined(NEED_STR2OEM) && !defined(CRYP_USES_ISO2OEM)) # define CRYP_USES_ISO2OEM # endif @@ -3008,7 +2572,7 @@ !(((islochdr) || (isuxatt)) && \ ((hostver) == 25 || (hostver) == 26 || (hostver) == 40))) || \ (hostnum) == FS_HPFS_ || \ - ((hostnum) == FS_NTFS_ && (hostver) == 50)) { \ + ((hostnum) == FS_NTFS_/* && (hostver) == 50*/)) { \ _OEM_INTERN((string)); \ } else { \ _ISO_INTERN((string)); \ @@ -3028,12 +2592,10 @@ extern ZCONST uch ebcdic[]; #endif #ifdef IZ_ISO2OEM_ARRAY - extern ZCONST uch Far *iso2oem; - extern ZCONST uch Far iso2oem_850[]; + extern ZCONST uch Far iso2oem[]; #endif #ifdef IZ_OEM2ISO_ARRAY - extern ZCONST uch Far *oem2iso; - extern ZCONST uch Far oem2iso_850[]; + extern ZCONST uch Far oem2iso[]; #endif extern ZCONST char Far VersionDate[]; @@ -3061,63 +2623,5 @@ extern int errno; #endif -/*--------------------------------------------------------------------- - Unicode Support - 28 August 2005 - ---------------------------------------------------------------------*/ -#if (defined(UNICODE_SUPPORT) && defined(UNICODE_WCHAR)) - - /* Default character when a zwchar too big for wchar_t */ -# define zwchar_to_wchar_t_default_char '_' - - /* Default character string when wchar_t does not convert to mb */ -# define wide_to_mb_default_string "_" - - /* wide character type */ - typedef unsigned long zwchar; - - /* UTF-8 related conversion functions, currently found in process.c */ - -# if 0 /* currently unused */ - /* check if string is all ASCII */ - int is_ascii_string OF((ZCONST char *mbstring)); -# endif /* unused */ - - /* convert UTF-8 string to multi-byte string */ - char *utf8_to_local_string OF((ZCONST char *utf8_string, int escape_all)); - - /* convert UTF-8 string to wide string */ - zwchar *utf8_to_wide_string OF((ZCONST char *utf8_string)); - - /* convert wide string to multi-byte string */ - char *wide_to_local_string OF((ZCONST zwchar *wide_string, int escape_all)); - -# if 0 /* currently unused */ - /* convert local string to multi-byte display string */ - char *local_to_display_string OF((ZCONST char *local_string)); -# endif /* unused */ - - /* convert wide character to escape string */ - char *wide_to_escape_string OF((unsigned long)); - -# define utf8_to_escaped_string(utf8_string) \ - utf8_to_local_string(utf8_string, TRUE) - -# if 0 /* currently unused */ - /* convert escape string to wide character */ - unsigned long escape_string_to_wide OF((ZCONST char *escape_string)); - - /* convert local to UTF-8 */ - char *local_to_utf8_string OF ((ZCONST char *local_string)); - - /* convert local to wide string */ - zwchar *local_to_wide_string OF ((ZCONST char *local_string)); - - /* convert wide string to UTF-8 */ - char *wide_to_utf8_string OF((ZCONST zwchar *wide_string)); -# endif /* unused */ - -#endif /* UNICODE_SUPPORT && UNICODE_WCHAR */ - #endif /* !__unzpriv_h */ diff -Nru unzip-6.0/unzvers.h unzip-6.0/unzvers.h --- unzip-6.0/unzvers.h 2009-04-19 22:39:36.000000000 +0000 +++ unzip-6.0/unzvers.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -18,23 +18,23 @@ #endif #ifdef BETA -# define UZ_BETALEVEL "h03 BETA" -# define UZ_VERSION_DATE "17 Apr 09" /* internal beta version */ +# define UZ_BETALEVEL "j BETA" +# define UZ_VERSION_DATE "27 Feb 05" /* internal beta version */ #else # define UZ_BETALEVEL "" -# define UZ_VERSION_DATE "20 April 2009" /* official release version */ +# define UZ_VERSION_DATE "28 February 2005" /* official release version */ # define RELEASE #endif -#define UZ_MAJORVER 6 /* UnZip */ -#define UZ_MINORVER 0 +#define UZ_MAJORVER 5 /* UnZip */ +#define UZ_MINORVER 5 -#define ZI_MAJORVER 3 /* ZipInfo */ -#define ZI_MINORVER 0 +#define ZI_MAJORVER 2 /* ZipInfo */ +#define ZI_MINORVER 4 -#define UZ_PATCHLEVEL 0 +#define UZ_PATCHLEVEL 2 -#define UZ_VER_STRING "6.0" /* keep in sync with Version numbers! */ +#define UZ_VER_STRING "5.52" /* keep in sync with Version numbers! */ #ifndef IZ_COMPANY_NAME /* might be already defined... */ # define IZ_COMPANY_NAME "Info-ZIP" @@ -55,35 +55,4 @@ #define UNZ_DLL_VERSION UZ_VER_STRING -/* The following version constants specify the UnZip version that introduced - * the most recent incompatible change (means: change that breaks backward - * compatibility) of a DLL/Library binary API definition. - * - * Currently, UnZip supports three distinct DLL/Library APIs, which each - * carry their own "compatibility level": - * a) The "generic" (console-mode oriented) API has been used on UNIX, - * for example. This API provides a "callable" interface similar to the - * interactive command line of the normal program executables. - * b) The OS/2-only API provides (additional) functions specially tailored - * for interfacing with the REXX shell. - * c) The Win32 DLL API with a pure binary interface which can be used to - * build GUI mode as well as Console mode applications. - * - * Whenever a change that breaks backward compatibility gets applied to - * any of the DLL/Library APIs, the corresponding compatibility level should - * be synchronized with the current UnZip version numbers. - */ -/* generic DLL API minimum compatible version*/ -#define UZ_GENAPI_COMP_MAJOR 6 -#define UZ_GENAPI_COMP_MINOR 0 -#define UZ_GENAPI_COMP_REVIS 0 -/* os2dll API minimum compatible version*/ -#define UZ_OS2API_COMP_MAJOR 6 -#define UZ_OS2API_COMP_MINOR 0 -#define UZ_OS2API_COMP_REVIS 0 -/* windll API minimum compatible version*/ -#define UZ_WINAPI_COMP_MAJOR 6 -#define UZ_WINAPI_COMP_MINOR 0 -#define UZ_WINAPI_COMP_REVIS 0 - #endif /* !__unzvers_h */ diff -Nru unzip-6.0/vms/00binary.vms unzip-6.0/vms/00binary.vms --- unzip-6.0/vms/00binary.vms 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/vms/00binary.vms 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,116 @@ +First information about the binary distribution of VMS UnZip 5.4 +---------------------------------------------------------------- +This archive comes in different variations: + + "unz540x-vms--{obj|exe}.exe", + and + "unz540x-vms--obj.bck", + + where is "axp", "vax-decc", or "vax-vaxc", depending on + the environment used for creating the binaries. + + ...-obj.exe denotes object library distributions that require + a link step on the local machine. + + ...-exe.exe denotes "ready-to-run" executable distributions, that do + not require additional work. The caveat of these executable distribution + is that they do not run on VMS versions that are older than the system + used for building the executables (typical error message: "shareable + library mismatch"). + + ...-obj.bck are uncompressed VMS backup saveset distributions of the + object libraries. They are much larger than the self-extracting Zip + archives and are only supplied for people with (old) versions of VMS + where the supplied SFX archives do not work. Therefore, if you already + have an old version of UnZip for VMS (5.0p1, better: 5.2), the better + choice is to fetch the Zip SFX archive and extract it manually, using + the older VMS UnZip program. + Note that backup savesets are 32256-bytes-fixed-length-record files; + when tranfered via binary FTP, the resulting file's record format is + usually 512-bytes-fixed-length. Before extracting them with BACKUP, the + record size of the saveset has to be restored to 32256 bytes (best done + with the public domain "FILE" utility, available from DECUS; or found on + ftp.wku.edu.). The contents of these saveset are identically to the + corresponding ...-obj.exe archives. + +Contents of the "vms" executables self extracting archives +for UnZip 5.4: + +a) common files (documentation etc.): + 00binary.vms this file + readme.vms general VMS info about using UnZip and zipfiles + readme what UnZip is; general information + license Info-ZIP copyright and distribution policy + where pointer to Zip/UnZip support archives + makesfx.com command file to create self-extracting archives + unzip.txt UnZip manual page, human-readable format + unzipsfx.txt UnZipSFX manual page, human-readable format + zipinfo.txt ZipInfo manual page, human-readable format + 3rdparty.bug known bugs in PK[UN]ZIP, WinZip, etc. + unzip.hlp UnZip help module, for default command interface + unzip_cli.hlp UnZip help module, for VMSCLI command interface + unzipsfx.hlp UnZipSFX pre-formatted help page + +b) object library distributions: + link_unz.com command procedure for the linking step + vms/unzip.opt auxiliary files required for linking step + vms/unzipsfx.opt ... + + unzip._olb object libraries for UnZip and UnZipSFX + unzipsfx._olb (both command interfaces) + + unzipcli._olb additional object libraries for UnZip and + unzsfxcli._olb UnZipSFX, VMSCLI (DCL like) interface + +c) executable distributions: + unzip.exe UnZip executable, default command interface + unzipsfx.exe UnZipSFX executable, default command interace + unzip_cli.exe UnZip executable, VMSCLI command interface + + (To save space, unzipsfx_cli.exe has been omitted from the executable + distributions. The command interface of the SFX stubs is of minor + importance, anyway, since it cannot be used without first defining a + "foreign command" to run the SFX archive. In most cases, it is much + easier to use "$run .exe" at the command prompt.) + + The binary files "*.<...>_olb" and "*.exe" have been stored in the Zip + archives with VMS attributes saved! If you extract them using a non-VMS + port of UnZip, you may get unusable files. + + +If you decided to fetch the object library distribution, you have to +link the executables on your local site. This requires runtime support +for the C runtime library to be installed, which may not be present +on older VAX VMS systems (prior to VMS 6). +To create the executables, just invoke the "link_unz.com" command procedure. +This will generate all executables (both unzip with UNIX-style command syntax +and with VMSCLI command interface), but note that the executable's +extension is "._exe"! +In case your system is a VAX and your current working directory carries +both the DEC C and the VAX C object distributions, you have to specify +either "VAXC" or "DECC" to tell link_unz.com which binaries you want +to build. + +Additionally, link_unz.com defines foreign commands for the newly linked +executables, so you can test them without any further work. +In order to use the default (UNIX-like) command interface, you can +proceed straight ahead after unpacking the distribution. +If you rather prefer to use the VMSCLI interface, you have to specify +the option "VMSCLI" (or just "CLI") to the command starting link_unz.com. + +The executables (object libraries) in this archive have been compiled +with the following options enabled: + * [decription support] + +The environment used for compilation was: + +a) On Alpha AXP : OpenVMS(AXP) 6.2; DEC C V 5.6-003 +b1) On VAX : OpenVMS(VAX) 6.1; DEC C V 4.0 +b2) alternatively VAX C V 3.2 + +One final note: +The binary files of the distribution have been archived with "saving all VMS +attributes" enabled. Please do not repack the binary part of the archives on +a non-VMS system, to prevent corruption of the files. + +04 December 1997, Christian Spieler diff -Nru unzip-6.0/vms/cmdline.c unzip-6.0/vms/cmdline.c --- unzip-6.0/vms/cmdline.c 2008-09-13 18:13:18.000000000 +0000 +++ unzip-6.0/vms/cmdline.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,22 +1,13 @@ /* - Copyright (c) 1990-2008 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2007-Mar-04 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html */ - -/* 2004-12-13 SMS. - * Disabled the module name macro to accommodate old GNU C which didn't - * obey the directive, and thus confused MMS/MMK where the object - * library dependencies need to have the correct module name. - */ -#if 0 #define module_name VMS_UNZIP_CMDLINE -#define module_ident "02-013" -#endif /* 0 */ - +#define module_ident "02-009" /* ** ** Facility: UNZIP @@ -33,15 +24,6 @@ ** ** Modified by: ** -** 02-013 S. Schweda, C. Spieler 29-Dec-2007 03:34 -** Extended /RESTORE qualifier to support timestamp restoration -** options. -** 02-012 Steven Schweda 07-Jul-2006 19:04 -** Added /TEXT=STMLF qualifier option. -** 02-011 Christian Spieler 21-Apr-2005 01:23 -** Added /FULL=DIAGNOSTICS option modifier. -** 02-010 Steven Schweda 14-FEB-2005 20:04 -** Added /DOT_VERSION (-Y) and /ODS2 (-2) qualifiers. ** 02-009 Steven Schweda 28-JAN-2005 16:16 ** Added /TIMESTAMP (-T) qualifier. ** 02-008 Christian Spieler 08-DEC-2001 23:44 @@ -82,29 +64,12 @@ ** */ -/* Stand-alone test procedure: - * - * cc /define = TEST=1 [.vms]cmdline.c /include = [] /object = [.vms] - * set command /object = [.vms]unz_cli.obj [.vms]unz_cli.cld - * link /executable = [] [.vms]cmdline.obj, [.vms]unz_cli.obj - * EXEC*UTE == "$SYS$DISK:[]'" - * exec cmdline [ /qualifiers ...] [parameters ...] - */ - - -/* 2004-12-13 SMS. - * Disabled the module name macro to accommodate old GNU C which didn't - * obey the directive, and thus confused MMS/MMK where the object - * library dependencies need to have the correct module name. - */ -#if 0 #if defined(__DECC) || defined(__GNUC__) #pragma module module_name module_ident #else #module module_name module_ident #endif -#endif /* 0 */ #define UNZIP_INTERNAL #include "unzip.h" @@ -112,17 +77,6 @@ # include "unzvers.h" /* for VMSCLI_usage() */ #endif /* !TEST */ -/* Workaround for broken header files of older DECC distributions - * that are incompatible with the /NAMES=AS_IS qualifier. */ -/* - lib$routines.h definitions: */ -#define lib$establish LIB$ESTABLISH -#define lib$get_foreign LIB$GET_FOREIGN -#define lib$get_input LIB$GET_INPUT -#define lib$sig_to_ret LIB$SIG_TO_RET -/* - str$routines.h definitions: */ -#define str$concat STR$CONCAT -#define str$find_first_substring STR$FIND_FIRST_SUBSTRING - #include #include #include @@ -172,7 +126,6 @@ $DESCRIPTOR(cli_text_auto, "TEXT.AUTO"); /* -a */ $DESCRIPTOR(cli_text_all, "TEXT.ALL"); /* -aa */ $DESCRIPTOR(cli_text_none, "TEXT.NONE"); /* ---a */ -$DESCRIPTOR(cli_text_stmlf, "TEXT.STMLF"); /* -S */ $DESCRIPTOR(cli_binary, "BINARY"); /* -b[b] */ $DESCRIPTOR(cli_binary_auto, "BINARY.AUTO"); /* -b */ $DESCRIPTOR(cli_binary_all, "BINARY.ALL"); /* -bb */ @@ -187,11 +140,6 @@ $DESCRIPTOR(cli_list, "LIST"); /* -l */ $DESCRIPTOR(cli_brief, "BRIEF"); /* -l */ $DESCRIPTOR(cli_full, "FULL"); /* -v */ -$DESCRIPTOR(cli_full_diags, "FULL.DIAGNOSTICS"); /* -vv */ -$DESCRIPTOR(cli_existing, "EXISTING"); /* -o, -oo, -n */ -$DESCRIPTOR(cli_exist_newver, "EXISTING.NEW_VERSION"); /* -o */ -$DESCRIPTOR(cli_exist_over, "EXISTING.OVERWRITE"); /* -oo */ -$DESCRIPTOR(cli_exist_noext, "EXISTING.NOEXTRACT"); /* -n */ $DESCRIPTOR(cli_overwrite, "OVERWRITE"); /* -o, -n */ $DESCRIPTOR(cli_quiet, "QUIET"); /* -q */ $DESCRIPTOR(cli_super_quiet, "QUIET.SUPER"); /* -qq */ @@ -203,14 +151,8 @@ $DESCRIPTOR(cli_update, "UPDATE"); /* -u */ $DESCRIPTOR(cli_version, "VERSION"); /* -V */ $DESCRIPTOR(cli_restore, "RESTORE"); /* -X */ -$DESCRIPTOR(cli_restore_own, "RESTORE.OWNER_PROT"); /* -X */ -$DESCRIPTOR(cli_restore_date, "RESTORE.DATE"); /* -DD */ -$DESCRIPTOR(cli_restore_date_all, "RESTORE.DATE.ALL"); /* --D */ -$DESCRIPTOR(cli_restore_date_files, "RESTORE.DATE.FILES"); /* -D */ -$DESCRIPTOR(cli_dot_version, "DOT_VERSION"); /* -Y */ $DESCRIPTOR(cli_comment, "COMMENT"); /* -z */ $DESCRIPTOR(cli_exclude, "EXCLUDE"); /* -x */ -$DESCRIPTOR(cli_ods2, "ODS2"); /* -2 */ $DESCRIPTOR(cli_traverse, "TRAVERSE_DIRS"); /* -: */ $DESCRIPTOR(cli_information, "ZIPINFO"); /* -Z */ @@ -233,9 +175,6 @@ static int show_VMSCLI_usage; -#ifndef vms_unzip_cld -# define vms_unzip_cld VMS_UNZIP_CLD -#endif #if defined(__DECC) || defined(__GNUC__) extern void *vms_unzip_cld; #else @@ -244,15 +183,6 @@ /* extern unsigned long LIB$GET_INPUT(void), LIB$SIG_TO_RET(void); */ -#ifndef cli$dcl_parse -# define cli$dcl_parse CLI$DCL_PARSE -#endif -#ifndef cli$present -# define cli$present CLI$PRESENT -#endif -#ifndef cli$get_value -# define cli$get_value CLI$GET_VALUE -#endif extern unsigned long cli$dcl_parse (); extern unsigned long cli$present (); extern unsigned long cli$get_value (); @@ -310,7 +240,6 @@ unsigned long cmdl_len; /* used size of buffer */ char *ptr; int x, len, zipinfo, exclude_list; - int restore_date; int new_argc; char **new_argv; @@ -404,294 +333,216 @@ else { #if 0 - /* - ** Extract files? - */ - status = cli$present(&cli_extract); - if (status == CLI$_NEGATED) - *ptr++ = '-'; - if (status != CLI$_ABSENT) - *ptr++ = 'x'; + /* + ** Extract files? + */ + status = cli$present(&cli_extract); + if (status == CLI$_NEGATED) + *ptr++ = '-'; + if (status != CLI$_ABSENT) + *ptr++ = 'x'; #endif - /* - ** Write binary files in VMS binary (fixed-length, 512-byte records, - ** record attributes: none) format - ** (auto-convert, or force to convert all files) - */ - status = cli$present(&cli_binary); - if (status != CLI$_ABSENT) { - *ptr++ = '-'; - *ptr++ = '-'; + /* + ** Write binary files in VMS binary (fixed-length, 512-byte records, + ** record attributes: none) format + ** (auto-convert, or force to convert all files) + */ + status = cli$present(&cli_binary); + if (status != CLI$_ABSENT) { + *ptr++ = '-'; + *ptr++ = '-'; + *ptr++ = 'b'; + if ((status & 1) && + !((status = cli$present(&cli_binary_none)) & 1)) { *ptr++ = 'b'; - if ((status & 1) && - !((status = cli$present(&cli_binary_none)) & 1)) { + if ((status = cli$present(&cli_binary_all)) & 1) *ptr++ = 'b'; - if ((status = cli$present(&cli_binary_all)) & 1) - *ptr++ = 'b'; - } } + } - /* - ** Convert files as text (CR LF -> LF, etc.) - ** (auto-convert, or force to convert all files) - */ - status = cli$present(&cli_text); - if (status != CLI$_ABSENT) { - *ptr++ = '-'; - *ptr++ = '-'; + /* + ** Convert files as text (CR LF -> LF, etc.) + ** (auto-convert, or force to convert all files) + */ + status = cli$present(&cli_text); + if (status != CLI$_ABSENT) { + *ptr++ = '-'; + *ptr++ = '-'; + *ptr++ = 'a'; + if ((status & 1) && + !((status = cli$present(&cli_text_none)) & 1)) { *ptr++ = 'a'; - if ((status & 1) && - !((status = cli$present(&cli_text_none)) & 1)) { + if ((status = cli$present(&cli_text_all)) & 1) *ptr++ = 'a'; - if ((status = cli$present(&cli_text_all)) & 1) - *ptr++ = 'a'; - if ((status = cli$present(&cli_text_stmlf)) & 1) - *ptr++ = 'S'; - } - } - - /* - ** Extract files to screen? - */ - status = cli$present(&cli_screen); - if (status == CLI$_NEGATED) - *ptr++ = '-'; - if (status != CLI$_ABSENT) - *ptr++ = 'c'; - - /* - ** Re-create directory structure? (default) - */ - status = cli$present(&cli_directory); - if (status == CLI$_PRESENT) { - status = cli$get_value(&cli_directory, &output_directory); } + } - /* - ** Restore directory date-times. - */ - restore_date = 0; - status = cli$present(&cli_restore_date); - if (status != CLI$_ABSENT) { - /* Emit "----D" to reset the timestamp restore state "D_flag" - ** consistently to 0 (independent of optional environment - ** option settings). - */ - *ptr++ = '-'; - *ptr++ = '-'; - *ptr++ = '-'; - *ptr++ = 'D'; - if (status == CLI$_NEGATED) { - /* /RESTORE=NODATE */ - restore_date = 2; - } else { - status = cli$present(&cli_restore_date_all); - if (status == CLI$_PRESENT) { - /* /RESTORE=(DATE=ALL) */ - restore_date = 0; - } else { - /* /RESTORE=(DATE=FILES) (default) */ - restore_date = 1; - } - } - /* Emit the required number of (positive) "D" characters. */ - while (restore_date > 0) { - *ptr++ = 'D'; - restore_date--; - } - } + /* + ** Extract files to screen? + */ + status = cli$present(&cli_screen); + if (status == CLI$_NEGATED) + *ptr++ = '-'; + if (status != CLI$_ABSENT) + *ptr++ = 'c'; - /* - ** Freshen existing files, create none - */ - status = cli$present(&cli_freshen); - if (status == CLI$_NEGATED) - *ptr++ = '-'; - if (status != CLI$_ABSENT) - *ptr++ = 'f'; + /* + ** Re-create directory structure? (default) + */ + status = cli$present(&cli_directory); + if (status == CLI$_PRESENT) { + status = cli$get_value(&cli_directory, &output_directory); + } - /* - ** Show the help. - */ - status = cli$present(&cli_help); - if (status & 1) - *ptr++ = 'h'; + /* + ** Freshen existing files, create none + */ + status = cli$present(&cli_freshen); + if (status == CLI$_NEGATED) + *ptr++ = '-'; + if (status != CLI$_ABSENT) + *ptr++ = 'f'; - /* - ** Junk stored directory names on unzip - */ - status = cli$present(&cli_junk); - if (status == CLI$_NEGATED) - *ptr++ = '-'; - if (status != CLI$_ABSENT) - *ptr++ = 'j'; + /* + ** Show the help. + */ + status = cli$present(&cli_help); + if (status & 1) + *ptr++ = 'h'; - /* - ** List contents (/BRIEF (default) or /FULL) - */ - status = cli$present(&cli_list); - if (status & 1) { - if (cli$present(&cli_full) & 1) { - *ptr++ = 'v'; - if (cli$present(&cli_full_diags) & 1) - *ptr++ = 'v'; - } else - *ptr++ = 'l'; - } + /* + ** Junk stored directory names on unzip + */ + status = cli$present(&cli_junk); + if (status == CLI$_NEGATED) + *ptr++ = '-'; + if (status != CLI$_ABSENT) + *ptr++ = 'j'; - /* - ** Existing files: new version, overwrite, no extract? - */ - status = cli$present(&cli_exist_newver); - if (status == CLI$_PRESENT) { - *ptr++ = 'o'; - } - status = cli$present(&cli_exist_over); - if (status == CLI$_PRESENT) { - *ptr++ = 'o'; - *ptr++ = 'o'; - } - status = cli$present(&cli_exist_noext); - if (status == CLI$_PRESENT) { - *ptr++ = 'n'; - } + /* + ** List contents (/BRIEF or /FULL (default)) + */ + status = cli$present(&cli_list); + if (status & 1) { + if (cli$present(&cli_full) & 1) + *ptr++ = 'v'; + else + *ptr++ = 'l'; + } - /* - ** Overwrite files (deprecated) ? - */ - status = cli$present(&cli_overwrite); - if (status == CLI$_NEGATED) - *ptr++ = 'n'; - else if (status != CLI$_ABSENT) - *ptr++ = 'o'; + /* + ** Overwrite files? + */ + status = cli$present(&cli_overwrite); + if (status == CLI$_NEGATED) + *ptr++ = 'n'; + else if (status != CLI$_ABSENT) + *ptr++ = 'o'; - /* - ** Decryption password from command line? - */ - status = cli$present(&cli_password); - if (status == CLI$_PRESENT) { - status = cli$get_value(&cli_password, &password_arg); - } + /* + ** Decryption password from command line? + */ + status = cli$present(&cli_password); + if (status == CLI$_PRESENT) { + status = cli$get_value(&cli_password, &password_arg); + } - /* - ** Pipe files to SYS$OUTPUT with no informationals? - */ - status = cli$present(&cli_pipe); - if (status != CLI$_ABSENT) - *ptr++ = 'p'; + /* + ** Pipe files to SYS$OUTPUT with no informationals? + */ + status = cli$present(&cli_pipe); + if (status != CLI$_ABSENT) + *ptr++ = 'p'; - /* - ** Quiet - */ - status = cli$present(&cli_quiet); - if (status & 1) { + /* + ** Quiet + */ + status = cli$present(&cli_quiet); + if (status & 1) { + *ptr++ = 'q'; + if ((status = cli$present(&cli_super_quiet)) & 1) *ptr++ = 'q'; - if ((status = cli$present(&cli_super_quiet)) & 1) - *ptr++ = 'q'; - } - - /* - ** Test archive integrity - */ - status = cli$present(&cli_test); - if (status == CLI$_NEGATED) - *ptr++ = '-'; - if (status != CLI$_ABSENT) - *ptr++ = 't'; - - /* - ** Set archive timestamp according to its newest file. - */ - status = cli$present(&cli_timestamp); - if (status & 1) - *ptr++ = 'T'; + } - /* - ** Extract "foo.ext.###" as "foo.ext;###" (treat .### as version number) - */ - status = cli$present(&cli_dot_version); - if (status == CLI$_NEGATED) - *ptr++ = '-'; - if (status != CLI$_ABSENT) - *ptr++ = 'Y'; + /* + ** Test archive integrity + */ + status = cli$present(&cli_test); + if (status == CLI$_NEGATED) + *ptr++ = '-'; + if (status != CLI$_ABSENT) + *ptr++ = 't'; - /* - ** Force conversion of extracted file names to old ODS2 conventions - */ - status = cli$present(&cli_ods2); - if (status == CLI$_NEGATED) - *ptr++ = '-'; - if (status != CLI$_ABSENT) - *ptr++ = '2'; + /* + ** Set archive timestamp according to its newest file. + */ + status = cli$present(&cli_timestamp); + if (status & 1) + *ptr++ = 'T'; - /* - ** Traverse directories (don't skip "../" path components) - */ - status = cli$present(&cli_traverse); - if (status == CLI$_NEGATED) - *ptr++ = '-'; - if (status != CLI$_ABSENT) - *ptr++ = ':'; + /* + ** Traverse directories (don't skip "../" path components) + */ + status = cli$present(&cli_traverse); + if (status == CLI$_NEGATED) + *ptr++ = '-'; + if (status != CLI$_ABSENT) + *ptr++ = ':'; - /* - ** Make (some) names lowercase - */ - status = cli$present(&cli_lowercase); - if (status == CLI$_NEGATED) - *ptr++ = '-'; - if (status != CLI$_ABSENT) - *ptr++ = 'L'; + /* + ** Make (some) names lowercase + */ + status = cli$present(&cli_lowercase); + if (status == CLI$_NEGATED) + *ptr++ = '-'; + if (status != CLI$_ABSENT) + *ptr++ = 'L'; - /* - ** Uppercase (don't convert to lower) - */ - status = cli$present(&cli_uppercase); - if (status == CLI$_NEGATED) - *ptr++ = '-'; - if (status != CLI$_ABSENT) - *ptr++ = 'U'; + /* + ** Uppercase (don't convert to lower) + */ + status = cli$present(&cli_uppercase); + if (status == CLI$_NEGATED) + *ptr++ = '-'; + if (status != CLI$_ABSENT) + *ptr++ = 'U'; - /* - ** Update (extract only new and newer files) - */ - status = cli$present(&cli_update); - if (status == CLI$_NEGATED) - *ptr++ = '-'; - if (status != CLI$_ABSENT) - *ptr++ = 'u'; + /* + ** Update (extract only new and newer files) + */ + status = cli$present(&cli_update); + if (status == CLI$_NEGATED) + *ptr++ = '-'; + if (status != CLI$_ABSENT) + *ptr++ = 'u'; - /* - ** Version (retain VMS/DEC-20 file versions) - */ - status = cli$present(&cli_version); - if (status == CLI$_NEGATED) - *ptr++ = '-'; - if (status != CLI$_ABSENT) - *ptr++ = 'V'; + /* + ** Version (retain VMS/DEC-20 file versions) + */ + status = cli$present(&cli_version); + if (status == CLI$_NEGATED) + *ptr++ = '-'; + if (status != CLI$_ABSENT) + *ptr++ = 'V'; - /* - ** Restore owner/protection info - */ - status = cli$present(&cli_restore_own); - if (status != CLI$_ABSENT) { - if (status == CLI$_NEGATED) { - *ptr++ = '-'; - } else if ((status = cli$present(&cli_restore)) - == CLI$_NEGATED) { - *ptr++ = '-'; - } - *ptr++ = 'X'; - } + /* + ** Restore owner/protection info + */ + status = cli$present(&cli_restore); + if (status == CLI$_NEGATED) + *ptr++ = '-'; + if (status != CLI$_ABSENT) + *ptr++ = 'X'; - /* - ** Display only the archive comment - */ - status = cli$present(&cli_comment); - if (status == CLI$_NEGATED) - *ptr++ = '-'; - if (status != CLI$_ABSENT) - *ptr++ = 'z'; + /* + ** Display only the archive comment + */ + status = cli$present(&cli_comment); + if (status == CLI$_NEGATED) + *ptr++ = '-'; + if (status != CLI$_ABSENT) + *ptr++ = 'z'; } /* ZipInfo check way up there.... */ @@ -1002,7 +853,7 @@ Valid main options are /TEST, /FRESHEN, /UPDATE, /PIPE, /SCREEN, /COMMENT%s.\n", SFXOPT_EXDIR)); Info(slide, flag, ((char *)slide, "\ -Modifying options are /TEXT, /BINARY, /JUNK, /EXISTING, /QUIET,\n\ +Modifying options are /TEXT, /BINARY, /JUNK, /[NO]OVERWRITE, /QUIET,\n\ /CASE_INSENSITIVE, /LOWERCASE, %s/VERSION, /RESTORE.\n", SFXOPT1)); #ifdef BETA @@ -1104,23 +955,17 @@ /[NO]COMMENT, /DIRECTORY=directory-spec, /EXCLUDE=(file-spec1,etc.)\n\n\ Modifiers include:\n\ /BRIEF, /FULL, /[NO]TEXT[=NONE|AUTO|ALL], /[NO]BINARY[=NONE|AUTO|ALL],\n\ - /EXISTING={NEW_VERSION|OVERWRITE|NOEXTRACT}, /[NO]JUNK, /QUIET,\n\ - /QUIET[=SUPER], /[NO]PAGE, /[NO]CASE_INSENSITIVE, /[NO]LOWERCASE,\n\ - /[NO]VERSION, /RESTORE[=([NO]OWNER_PROT[,NODATE|DATE={ALL|FILES}])]\n\n")); + /[NO]OVERWRITE, /[NO]JUNK, /QUIET, /QUIET[=SUPER], /[NO]PAGE,\n\ + /[NO]CASE_INSENSITIVE, /[NO]LOWERCASE, /[NO]VERSION, /[NO]RESTORE\n\n")); Info(slide, flag, ((char *)slide, "\ -Examples (see unzip.txt or \"HELP UNZIP\" for more info):\n\ - unzip edit1 /EXCL=joe.jou /CASE_INSENSITIVE => Extract all files except\ -\n\ - joe.jou (or JOE.JOU, or any combination of case) from zipfile edit1.zip.\ -\n \ - unzip zip201 \"Makefile.VMS\" vms/*.[ch] => extract VMS Makefile and\ -\n\ - *.c and *.h files; must quote uppercase names if /CASE_INSENS not used.\ -\n\ - unzip foo /DIR=tmp:[.test] /JUNK /TEXT /EXIS=NEW => extract all files to\ -\n\ - tmp. dir., flatten hierarchy, auto-conv. text files, create new versions.\ +Examples (see unzip.txt or \"HELP UNZIP\" for more info):\n \ +unzip edit1 /EXCL=joe.jou /CASE_INSENSITIVE => extract all files except\n \ + joe.jou (or JOE.JOU, or any combination of case) from zipfile edit1.zip\n \ +unzip zip201 \"Makefile.VMS\" vms/*.[ch] => extract VMS Makefile and\n\ + *.c and *.h files; must quote uppercase names if /CASE_INSENS not used\n\ + unzip foo /DIR=tmp:[.test] /JUNK /TEXT /OVER => extract all files to temp.\ +\n directory without paths, auto-converting text files and overwriting\ \n")); } /* end if (zipinfo_mode) */ diff -Nru unzip-6.0/vms/Contents unzip-6.0/vms/Contents --- unzip-6.0/vms/Contents 2008-07-29 22:31:34.000000000 +0000 +++ unzip-6.0/vms/Contents 2010-05-14 07:26:14.000000000 +0000 @@ -1,10 +1,7 @@ -Contents of the "vms" sub-archive for UnZip 6.00 and later: +Contents of the "vms" sub-archive for UnZip 5.3 and later: Contents this file - INSTALL.VMS VMS-specific build and install instructions - NOTES.TXT description of new features in VMS Zip 3.0 and UnZip 6.0 README general VMS info about using UnZip and zipfiles - UNZIP_MSG.MSG messages source for VMS built-in error message facility unzip_def.rnh UnZip default help page, RUNOFF format unzip_cli.help UnZip VMSCLI help page, TPU format unzipsfx.hlp UnZipSFX pre-formatted help page @@ -13,24 +10,13 @@ unz_cli.cld more VMS-command-line stuff (if VMSCLI defined) vms.c VMS file manipulation code vms.h VMS header file for UnZip - vmscfg.h VMS-specific configuration settings vmsdefs.h VMS system declarations (missing C compiler support) - build_unzip.com command file to build or (re-)link UnZip + make_unz.com command file to make UnZip with GNU or DEC C on VAX or AXP + link_unz.com command file to (re)link UnZip and UnZipSFX descrip.mms MMK/MMS makefile for UnZip/ZipInfo and UnZipSFX - descrip_deps.mms MMK/MMS include file providing source dependencies - descrip_mkdeps.mms MMK/MMS makefile for regenerating descrip_deps.mms - descrip_src.mms MMK/MMS include file, provides environment setup - collect_deps.com command file used in source dependencies creation - mod_deps.com command file used in source dependencies creation unzip.opt options file used for linking unzip unzipsfx.opt options file used for linking unzipsfx makesfx.com command file to create self-extracting archives - unixio_gcc.h unixio.h system header replacement for gcc - unixlib_gcc.h unixlib.h system header replacement for gcc - bzlib.h VMS wrapper header file for the bzip2 library definitions - find_bzip2_lib.com command procedure to set up environment for bzip2 support - infback9.h VMS wrapper header file for zlib inflate64 definitions - zlib.h VMS wrapper header file for zlib library definitions MAKE/VMS is no longer supported since MMK (MMS clone by Matt Madison/MadGoat Enterprises, compatible with descrip.mms) is both free and becoming quite @@ -38,5 +24,6 @@ by mailserver at lists.wku.edu. Check VMS newsgroups for announcements and exact location. -Detailed compilation and installation instructions can be found in the -INSTALL.VMS file in this directory. +The MAKE_UNZ.COM command file accepts compilation options in a LOCAL_UNZIP +symbol or logical; the format is "VMSCLI,RETURN_CODES" (for example). +DESCRIP.MMS must be edited in order to use special options. diff -Nru unzip-6.0/vms/descrip.mms unzip-6.0/vms/descrip.mms --- unzip-6.0/vms/descrip.mms 2009-02-28 23:42:00.000000000 +0000 +++ unzip-6.0/vms/descrip.mms 2010-05-14 07:26:14.000000000 +0000 @@ -1,397 +1,401 @@ -# 1 March 2009. SMS. -# -# UnZip 6.0 for VMS - MMS (or MMK) Description File. -# -# Usage: -# -# MMS /DESCRIP = [.VMS]DESCRIP.MMS [/MACRO = ()] [target] -# -# Note that this description file must be used from the main -# distribution directory, not from the [.VMS] subdirectory. -# -# Optional macros: -# -# USEBZ2=1 Build with optional BZIP2 support. This macro -# is a shortcut for IZ_BZIP2=SYS$DISK:[.BZIP2]. -# Additionally, it forces invokation of the UnZip-supplied -# bzip2 make script provided in [.bzip2]descrbz2.mms. -# This results in a "single-command" build of UnZip with -# bzip2 support directly from the sources. -# -# IZ_BZIP2=dev:[dir] Build with optional BZIP2 support. The value -# of the MMS macro, ("dev:[dir]", or a suitable -# logical name) tells where to find "bzlib.h". The -# BZIP2 object library (LIBBZ2_NS.OLB) is expected to -# be in a "[.dest]" directory under that one -# ("dev:[dir.ALPHAL]", for example), or in that -# directory itself. -# By default, the SFX programs are built without BZIP2 -# support. Add "BZIP2_SFX=1" to the LOCAL_UNZIP C -# macros to enable it. (See LOCAL_UNZIP, below.) -# -# IZ_ZLIB=dev:[dir] Use ZLIB compression library instead of internal -# compression routines. The value of the MMS -# macro ("dev:[dir]", or a suitable logical name) -# tells where to find "zlib.h". The ZLIB object -# library (LIBZ.OLB) is expected to be in a -# "[.dest]" directory under that one -# ("dev:[dir.ALPHAL]", for example), or in that -# directory itself. -# -# CCOPTS=xxx Compile with CC options xxx. For example: -# CCOPTS=/ARCH=HOST -# -# DBG=1 Compile with /DEBUG /NOOPTIMIZE. -# Link with /DEBUG /TRACEBACK. -# (Default is /NOTRACEBACK.) -# -# LARGE=1 Enable large-file (>2GB) support. Non-VAX only. -# -# LINKOPTS=xxx Link with LINK options xxx. For example: -# LINKOPTS=/NOINFO -# -# LIST=1 Compile with /LIST /SHOW = (ALL, NOMESSAGES). -# Link with /MAP /CROSS_REFERENCE /FULL. -# -# NOSHARE=1 Link /NOSYSSHR (not using shareable images). -# NOSHARE=OLDVAX Link /NOSYSSHR on VAX for: -# DEC C with VMS before V7.3. -# VAX C without DEC C RTL (DEC C not installed). -# -# "LOCAL_UNZIP= c_macro_1=value1 [, c_macro_2=value2 [...]]" -# Compile with these additional C macros defined. -# -# VAX-specific optional macros: -# -# VAXC=1 Use the VAX C compiler, assuming "CC" runs it. -# (That is, DEC C is not installed, or else DEC C is -# installed, but VAX C is the default.) -# -# FORCE_VAXC=1 Use the VAX C compiler, assuming "CC /VAXC" runs it. -# (That is, DEC C is installed, and it is the -# default, but you want VAX C anyway, you fool.) -# -# GNUC=1 Use the GNU C compiler. (Seriously under-tested.) -# -# -# The default target, ALL, builds the selected product executables and -# help files. -# -# Other targets: -# -# CLEAN deletes architecture-specific files, but leaves any -# individual source dependency files and the help files. -# -# CLEAN_ALL deletes all generated files, except the main (collected) -# source dependency file. -# -# CLEAN_EXE deletes only the architecture-specific executables. -# Handy if all you wish to do is re-link the executables. -# -# Example commands: -# -# To build the conventional small-file product using the DEC/Compaq/HP C -# compiler (Note: DESCRIP.MMS is the default description file name.): -# -# MMS /DESCRIP = [.VMS] -# -# To get the large-file executables (on a non-VAX system): -# -# MMS /DESCRIP = [.VMS] /MACRO = (LARGE=1) -# -# To delete the architecture-specific generated files for this system -# type: -# -# MMS /DESCRIP = [.VMS] /MACRO = (LARGE=1) CLEAN ! Large-file. -# or -# MMS /DESCRIP = [.VMS] CLEAN ! Small-file. -# -# To build a complete small-file product for debug with compiler -# listings and link maps: -# -# MMS /DESCRIP = [.VMS] CLEAN -# MMS /DESCRIP = [.VMS] /MACRO = (DBG=1, LIST=1) -# -######################################################################## - -# Include primary product description file. - -INCL_DESCRIP_SRC = 1 -.INCLUDE [.VMS]DESCRIP_SRC.MMS - -# Object library names. - -LIB_UNZIP = SYS$DISK:[.$(DEST)]UNZIP.OLB -LIB_UNZIP_CLI = SYS$DISK:[.$(DEST)]UNZIPCLI.OLB -LIB_UNZIPSFX = SYS$DISK:[.$(DEST)]UNZIPSFX.OLB -LIB_UNZIPSFX_CLI = SYS$DISK:[.$(DEST)]UNZSFXCLI.OLB - -# Help file names. - -UNZIP_HELP = UNZIP.HLP UNZIP_CLI.HLP - -# Message file names. - -UNZIP_MSG_MSG = [.VMS]UNZIP_MSG.MSG -UNZIP_MSG_EXE = [.$(DEST)]UNZIP_MSG.EXE -UNZIP_MSG_OBJ = [.$(DEST)]UNZIP_MSG.OBJ - - -# TARGETS. - -# Default target, ALL. Build All executables, -# and help files. - -ALL : $(UNZIP) $(UNZIP_CLI) $(UNZIPSFX) $(UNZIPSFX_CLI) $(UNZIP_HELP) \ - $(UNZIP_MSG_EXE) - @ write sys$output "Done." - -# CLEAN target. Delete the [.$(DEST)] directory and everything in it. - -CLEAN : - if (f$search( "[.$(DEST)]*.*") .nes. "") then - - delete [.$(DEST)]*.*;* - if (f$search( "$(DEST).dir") .nes. "") then - - set protection = w:d $(DEST).dir;* - if (f$search( "$(DEST).dir") .nes. "") then - - delete $(DEST).dir;* - -# CLEAN_ALL target. Delete: -# The [.$(DEST)] directories and everything in them. -# All help-related derived files, -# All individual C dependency files. -# Also mention: -# Comprehensive dependency file. -# -CLEAN_ALL : - if (f$search( "[.ALPHA*]*.*") .nes. "") then - - delete [.ALPHA*]*.*;* - if (f$search( "ALPHA*.dir", 1) .nes. "") then - - set protection = w:d ALPHA*.dir;* - if (f$search( "ALPHA*.dir", 2) .nes. "") then - - delete ALPHA*.dir;* - if (f$search( "[.IA64*]*.*") .nes. "") then - - delete [.IA64*]*.*;* - if (f$search( "IA64*.dir", 1) .nes. "") then - - set protection = w:d IA64*.dir;* - if (f$search( "IA64*.dir", 2) .nes. "") then - - delete IA64*.dir;* - if (f$search( "[.VAX*]*.*") .nes. "") then - - delete [.VAX*]*.*;* - if (f$search( "VAX*.dir", 1) .nes. "") then - - set protection = w:d VAX*.dir;* - if (f$search( "VAX*.dir", 2) .nes. "") then - - delete VAX*.dir;* - if (f$search( "[.VMS]UNZIP_CLI.RNH") .nes. "") then - - delete [.VMS]UNZIP_CLI.RNH;* - if (f$search( "UNZIP_CLI.HLP") .nes. "") then - - delete UNZIP_CLI.HLP;* - if (f$search( "UNZIP.HLP") .nes. "") then - - delete UNZIP.HLP;* - if (f$search( "*.MMSD") .nes. "") then - - delete *.MMSD;* - if (f$search( "[.VMS]*.MMSD") .nes. "") then - - delete [.VMS]*.MMSD;* - @ write sys$output "" - @ write sys$output "Note: This procedure will not" - @ write sys$output " DELETE [.VMS]DESCRIP_DEPS.MMS;*" - @ write sys$output - - "You may choose to, but a recent version of MMS (V3.5 or newer?) is" - @ write sys$output - - "needed to regenerate it. (It may also be recovered from the original" - @ write sys$output - - "distribution kit.) See [.VMS]DESCRIP_MKDEPS.MMS for instructions on" - @ write sys$output - - "generating [.VMS]DESCRIP_DEPS.MMS." - @ write sys$output "" - -# CLEAN_EXE target. Delete the executables in [.$(DEST)]. - -CLEAN_EXE : - if (f$search( "[.$(DEST)]*.EXE") .nes. "") then - - delete [.$(DEST)]*.EXE;* - - -# Object library module dependencies. - -$(LIB_UNZIP) : $(LIB_UNZIP)($(MODS_OBJS_LIB_UNZIP)) - @ write sys$output "$(MMS$TARGET) updated." - -$(LIB_UNZIP_CLI) : $(LIB_UNZIP_CLI)($(MODS_OBJS_LIB_UNZIP_CLI)) - @ write sys$output "$(MMS$TARGET) updated." - -$(LIB_UNZIPSFX) : $(LIB_UNZIPSFX)($(MODS_OBJS_LIB_UNZIPSFX)) - @ write sys$output "$(MMS$TARGET) updated." - -$(LIB_UNZIPSFX_CLI) : $(LIB_UNZIPSFX_CLI)($(MODS_OBJS_LIB_UNZIPSFX_CLI)) - @ write sys$output "$(MMS$TARGET) updated." - - -# Module ID options files. - -OPT_ID = SYS$DISK:[.VMS]UNZIP.OPT -OPT_ID_SFX = SYS$DISK:[.VMS]UNZIPSFX.OPT - -# Default C compile rule. - -.C.OBJ : - $(CC) $(CFLAGS) $(CDEFS_UNX) $(MMS$SOURCE) - - -# Normal sources in [.VMS]. - -[.$(DEST)]VMS.OBJ : [.VMS]VMS.C - -# Command-line interface files. - -[.$(DEST)]CMDLINE.OBJ : [.VMS]CMDLINE.C - $(CC) $(CFLAGS) $(CDEFS_CLI) $(MMS$SOURCE) - -[.$(DEST)]UNZIPCLI.OBJ : UNZIP.C - $(CC) $(CFLAGS) $(CDEFS_CLI) $(MMS$SOURCE) - -[.$(DEST)]UNZ_CLI.OBJ : [.VMS]UNZ_CLI.CLD - -# SFX variant sources. - -[.$(DEST)]CRC32_.OBJ : CRC32.C - $(CC) $(CFLAGS) $(CDEFS_SFX) $(MMS$SOURCE) - -[.$(DEST)]CRYPT_.OBJ : CRYPT.C - $(CC) $(CFLAGS) $(CDEFS_SFX) $(MMS$SOURCE) - -[.$(DEST)]EXTRACT_.OBJ : EXTRACT.C - $(CC) $(CFLAGS) $(CDEFS_SFX) $(MMS$SOURCE) - -[.$(DEST)]FILEIO_.OBJ : FILEIO.C - $(CC) $(CFLAGS) $(CDEFS_SFX) $(MMS$SOURCE) - -[.$(DEST)]GLOBALS_.OBJ : GLOBALS.C - $(CC) $(CFLAGS) $(CDEFS_SFX) $(MMS$SOURCE) - -[.$(DEST)]INFLATE_.OBJ : INFLATE.C - $(CC) $(CFLAGS) $(CDEFS_SFX) $(MMS$SOURCE) - -[.$(DEST)]MATCH_.OBJ : MATCH.C - $(CC) $(CFLAGS) $(CDEFS_SFX) $(MMS$SOURCE) - -[.$(DEST)]PROCESS_.OBJ : PROCESS.C - $(CC) $(CFLAGS) $(CDEFS_SFX) $(MMS$SOURCE) - -[.$(DEST)]TTYIO_.OBJ : TTYIO.C - $(CC) $(CFLAGS) $(CDEFS_SFX) $(MMS$SOURCE) - -[.$(DEST)]UBZ2ERR_.OBJ : UBZ2ERR.C - $(CC) $(CFLAGS) $(CDEFS_SFX) $(MMS$SOURCE) - -[.$(DEST)]VMS_.OBJ : [.VMS]VMS.C - $(CC) $(CFLAGS) $(CDEFS_SFX) $(MMS$SOURCE) - -[.$(DEST)]UNZIPSFX.OBJ : UNZIP.C - $(CC) $(CFLAGS) $(CDEFS_SFX) $(MMS$SOURCE) - -# SFX CLI variant sources. - -[.$(DEST)]CMDLINE_.OBJ : [.VMS]CMDLINE.C - $(CC) $(CFLAGS) $(CDEFS_SFX_CLI) $(MMS$SOURCE) - -[.$(DEST)]UNZSFXCLI.OBJ : UNZIP.C - $(CC) $(CFLAGS) $(CDEFS_SFX_CLI) $(MMS$SOURCE) - -# VAX C LINK options file. - -.IFDEF OPT_FILE -$(OPT_FILE) : - open /write opt_file_ln $(OPT_FILE) - write opt_file_ln "SYS$SHARE:VAXCRTL.EXE /SHARE" - close opt_file_ln -.ENDIF - -# Local BZIP2 object library. - -$(LIB_BZ2_LOCAL) : - $(MMS) $(MMSQUALIFIERS) /DESCR=$(IZ_BZIP2)descrbz2.mms'macro' - - /MACRO = (SRCDIR=$(IZ_BZIP2), DSTDIR=$(BZ2DIR_BIN), - - DEST=$(IZ_BZIP2)$(DESTM)) $(MMSTARGETS) - -# Normal UnZip executable. - -$(UNZIP) : [.$(DEST)]UNZIP.OBJ \ - $(LIB_UNZIP) $(LIB_BZ2_DEP) $(OPT_FILE) $(OPT_ID) - $(LINK) $(LINKFLAGS) $(MMS$SOURCE), - - $(LIB_UNZIP) /library, - - $(LIB_BZIP2_OPTS) - - $(LIB_UNZIP) /library, - - $(LIB_ZLIB_OPTS) - - $(LFLAGS_ARCH) - - $(OPT_ID) /options - - $(NOSHARE_OPTS) - -# CLI UnZip executable. - -$(UNZIP_CLI) : [.$(DEST)]UNZIPCLI.OBJ \ - $(LIB_UNZIP_CLI) $(LIB_BZ2_DEP) $(OPT_FILE) $(OPT_ID) - $(LINK) $(LINKFLAGS) $(MMS$SOURCE), - - $(LIB_UNZIP_CLI) /library, - - $(LIB_UNZIP) /library, - - $(LIB_BZIP2_OPTS) - - $(LIB_UNZIP) /library, - - $(LIB_ZLIB_OPTS) - - $(LFLAGS_ARCH) - - $(OPT_ID) /options - - $(NOSHARE_OPTS) - -# SFX UnZip executable. - -$(UNZIPSFX) : [.$(DEST)]UNZIPSFX.OBJ \ - $(LIB_UNZIPSFX) $(LIB_BZ2_DEP) $(OPT_FILE) $(OPT_ID_SFX) - $(LINK) $(LINKFLAGS) $(MMS$SOURCE), - - $(LIB_UNZIPSFX) /library, - - $(LIB_BZIP2_OPTS) - - $(LIB_UNZIPSFX) /library, - - $(LIB_ZLIB_OPTS) - - $(LFLAGS_ARCH) - - $(OPT_ID_SFX) /options - - $(NOSHARE_OPTS) - -# SFX CLI UnZip executable. - -$(UNZIPSFX_CLI) : [.$(DEST)]UNZSFXCLI.OBJ \ - $(LIB_UNZIPSFX_CLI) $(LIB_UNZIPSFX) $(LIB_BZ2_DEP) \ - $(OPT_FILE) $(OPT_ID_SFX) - $(LINK) $(LINKFLAGS) $(MMS$SOURCE), - - $(LIB_UNZIPSFX_CLI) /library, - - $(LIB_UNZIPSFX) /library, - - $(LIB_BZIP2_OPTS) - - $(LIB_UNZIPSFX) /library, - - $(LIB_ZLIB_OPTS) - - $(LFLAGS_ARCH) - - $(OPT_ID_SFX) /options - - $(NOSHARE_OPTS) - - -# Help files. - -UNZIP.HLP : [.VMS]UNZIP_DEF.RNH - runoff /output = $(MMS$TARGET) $(MMS$SOURCE) - -UNZIP_CLI.HLP : [.VMS]UNZIP_CLI.HELP [.VMS]CVTHELP.TPU - edit /tpu /nosection /nodisplay /command = [.VMS]CVTHELP.TPU - - $(MMS$SOURCE) - rename UNZIP_CLI.RNH [.VMS] - purge /nolog /keep = 1 [.VMS]UNZIP_CLI.RNH - runoff /output = $(MMS$TARGET) [.VMS]UNZIP_CLI.RNH - -# Message file. - -$(UNZIP_MSG_EXE) : $(UNZIP_MSG_OBJ) - link /shareable = $(MMS$TARGET) $(UNZIP_MSG_OBJ) +!========================================================================== +! MMS description file for UnZip/UnZipSFX 5.5 or later 23 Mar 01 +!========================================================================== +! +! To build UnZip that uses shared libraries, edit the USER CUSTOMIZATION +! lines below to taste, then do +! mms +! or +! mmk +! if you use Matt's Make (free MMS-compatible make utility). +! +! (One-time users will find it easier to use the MAKE_UNZ.COM command file, +! which generates both UnZip and UnZipSFX. Just type "@[.VMS]MAKE_UNZ", or +! "@[.VMS]MAKE_UNZ GCC" if you want to use GNU C.) + +! To build the default target +! "all executables (linked against shareable images), and help file", +! you can simply type "mmk" or "mms". +! (You have to copy the description file to your working directory for MMS, +! with MMK you can alternatively use the /DESCR=[.VMS] qualifier. +! +! In all other cases where you want to explicitely specify a makefile target, +! you have to specify your compiling environment, too. These are: +! +! $ MMS/MACRO=(__ALPHA__=1) ! Alpha AXP, (DEC C) +! $ MMS/MACRO=(__DECC__=1) ! VAX, using DEC C +! $ MMS/MACRO=(__FORCE_VAXC__=1) ! VAX, prefering VAXC over DECC +! $ MMS/MACRO=(__VAXC__=1) ! VAX, where VAXC is default +! $ MMS/MACRO=(__GNUC__=1) ! VAX, using GNU C +! + +! To build UnZip without shared libraries, +! mms noshare + +! To delete all .OBJ, .OLB, .EXE and .HLP files, +! mms clean + +DO_THE_BUILD : + @ decc = f$search("SYS$SYSTEM:DECC$COMPILER.EXE").nes."" + @ axp = f$getsyi("HW_MODEL").ge.1024 + @ macro = "/MACRO=(" + @ if decc then macro = macro + "__DECC__=1," + @ if axp then macro = macro + "__ALPHA__=1," + @ if .not.(axp.or.decc) then macro = macro + "__VAXC__=1," + @ macro = f$extract(0,f$length(macro)-1,macro)+ ")" + $(MMS)$(MMSQUALIFIERS)'macro' default + +.IFDEF __ALPHA__ +E = .AXP_EXE +O = .AXP_OBJ +A = .AXP_OLB +.ELSE +.IFDEF __DECC__ +E = .VAX_DECC_EXE +O = .VAX_DECC_OBJ +A = .VAX_DECC_OLB +.ENDIF +.IFDEF __FORCE_VAXC__ +__VAXC__ = 1 +.ENDIF +.IFDEF __VAXC__ +E = .VAX_VAXC_EXE +O = .VAX_VAXC_OBJ +A = .VAX_VAXC_OLB +.ENDIF +.IFDEF __GNUC__ +E = .VAX_GNUC_EXE +O = .VAX_GNUC_OBJ +A = .VAX_GNUC_OLB +.ENDIF +.ENDIF +.IFDEF O +.ELSE +!If EXE and OBJ extensions aren't defined, define them +E = .EXE +O = .OBJ +A = .OLB +.ENDIF + +!The following preprocessor macros are set to enable the VMS CLI$ interface: +CLI_DEFS = VMSCLI, -$(UNZIP_MSG_OBJ) : $(UNZIP_MSG_MSG) - message /object = $(MMS$TARGET) /nosymbols $(UNZIP_MSG_MSG) +!!!!!!!!!!!!!!!!!!!!!!!!!!! USER CUSTOMIZATION !!!!!!!!!!!!!!!!!!!!!!!!!!!! +! add RETURN_CODES, and/or any other optional preprocessor flags (macros) +! except VMSCLI to the following line for a custom version (do not forget +! a trailing comma!!): +COMMON_DEFS = +! +! WARNING: Do not use VMSCLI here!! The creation of an UnZip executable +! utilizing the VMS CLI$ command interface is handled differently. +!!!!!!!!!!!!!!!!!!!!!!!! END OF USER CUSTOMIZATION !!!!!!!!!!!!!!!!!!!!!!!! + +.IFDEF __GNUC__ +CC = gcc +LIBS = ,GNU_CC:[000000]GCCLIB.OLB/LIB +.ELSE +CC = cc +LIBS = +.ENDIF + +CFLAGS = /NOLIST/INCL=(SYS$DISK:[]) -# Include generated source dependencies. +OPTFILE = sys$disk:[.vms]vaxcshr.opt -INCL_DESCRIP_DEPS = 1 -.INCLUDE [.VMS]DESCRIP_DEPS.MMS +.IFDEF __ALPHA__ +CC_OPTIONS = /STANDARD=RELAX/PREFIX=ALL/ANSI +CC_DEFS = MODERN, +OPTFILE_LIST = +OPTIONS = $(LIBS) +NOSHARE_OPTS = $(LIBS)/NOSYSSHR +.ELSE +.IFDEF __DECC__ +CC_OPTIONS = /DECC/STANDARD=VAXC/PREFIX=ALL +CC_DEFS = MODERN, +OPTFILE_LIST = +OPTIONS = $(LIBS) +NOSHARE_OPTS = $(LIBS),SYS$LIBRARY:DECCRTL.OLB/LIB/INCL=(CMA$TIS)/NOSYSSHR +.ELSE +.IFDEF __FORCE_VAXC__ !Select VAXC on systems where DEC C exists +CC_OPTIONS = /VAXC +.ELSE !No flag allowed/needed on a pure VAXC system +CC_OPTIONS = +.ENDIF +CC_DEFS = +OPTFILE_LIST = ,$(OPTFILE) +OPTIONS = $(LIBS),$(OPTFILE)/OPTIONS +NOSHARE_OPTS = $(LIBS),SYS$LIBRARY:VAXCRTL.OLB/LIB/NOSYSSHR +.ENDIF +.ENDIF + +.IFDEF __DEBUG__ +CDEB = /DEBUG/NOOPTIMIZE +LDEB = /DEBUG +.ELSE +CDEB = +LDEB = /NOTRACE +.ENDIF +CFLAGS_ALL = $(CC_OPTIONS) $(CFLAGS) $(CDEB) - + /def=($(CC_DEFS) $(COMMON_DEFS) VMS) +CFLAGS_SFX = $(CC_OPTIONS) $(CFLAGS) $(CDEB) - + /def=($(CC_DEFS) $(COMMON_DEFS) SFX, VMS) +CFLAGS_CLI = $(CC_OPTIONS) $(CFLAGS) $(CDEB) - + /def=($(CC_DEFS) $(COMMON_DEFS) $(CLI_DEFS) VMS) +CFLAGS_SXC = $(CC_OPTIONS) $(CFLAGS) $(CDEB) - + /def=($(CC_DEFS) $(COMMON_DEFS) $(CLI_DEFS) SFX, VMS) + +LINKFLAGS = $(LDEB) + + +OBJM = unzip$(O), unzcli$(O), unzipsfx$(O), unzsxcli$(O) +COMMON_OBJS1 = crc32$(O),crctab$(O),crypt$(O),envargs$(O),- + explode$(O),extract$(O),fileio$(O),globals$(O) +COMMON_OBJS2 = inflate$(O),list$(O),match$(O),process$(O),ttyio$(O),- + unreduce$(O),unshrink$(O),zipinfo$(O),- + vms$(O) +OBJUNZLIB = $(COMMON_OBJS1),$(COMMON_OBJS2) + +COMMON_OBJX1 = CRC32=crc32_$(O),CRCTAB=crctab_$(O),CRYPT=crypt_$(O),- + EXTRACT=extract_$(O),- + FILEIO=fileio_$(O),GLOBALS=globals_$(O) +COMMON_OBJX2 = INFLATE=inflate_$(O),MATCH=match_$(O),- + PROCESS=process_$(O),- + TTYIO=ttyio_$(O),- + VMS=vms_$(O) +OBJSFXLIB = $(COMMON_OBJX1),$(COMMON_OBJX2) + +UNZX_UNX = unzip +UNZX_CLI = unzip_cli +UNZSFX_DEF = unzipsfx +UNZSFX_CLI = unzipsfx_cli + +OBJS = unzip$(O), $(OBJUNZLIB) +OBJX = UNZIP=unzipsfx$(O), $(OBJSFXLIB) +OBJSCLI = UNZIP=unzipcli$(O), - + VMS_UNZIP_CLD=unz_cli$(O),- + VMS_UNZIP_CMDLINE=cmdline$(O) +OBJXCLI = UNZIP=unzsxcli$(O),- + VMS_UNZIP_CLD=unz_cli$(O),- + VMS_UNZIP_CMDLINE=cmdline_$(O) +UNZHELP_UNX_RNH = [.vms]unzip_def.rnh +UNZHELP_CLI_RNH = [.vms]unzip_cli.rnh + +OLBUNZ = unzip$(A) +OLBCLI = unzipcli$(A) +OLBSFX = unzipsfx$(A) +OLBSXC = unzsxcli$(A) + +UNZIP_H = unzip.h unzpriv.h globals.h + +UNZIPS = $(UNZX_UNX)$(E), $(UNZX_CLI)$(E), $(UNZSFX_DEF)$(E), $(UNZSFX_CLI)$(E) +UNZIPS_NOSHARE = $(UNZX_UNX)_noshare$(E), $(UNZSFX_DEF)_noshare$(E) +UNZIPHELPS = $(UNZX_UNX).hlp, $(UNZX_CLI).hlp + +!!!!!!!!!!!!!!!!!!! override default rules: !!!!!!!!!!!!!!!!!!! +.suffixes : +.suffixes : .ANL $(E) $(A) .MLB .HLB .TLB .FLB $(O) - + .FORM .BLI .B32 .C .COB - + .FOR .BAS .B16 .PLI .PEN .PAS .MAC .MAR .M64 .CLD .MSG .COR .DBL - + .RPG .SCN .IFDL .RBA .RC .RCO .RFO .RPA .SC .SCO .SFO .SPA .SPL - + .SQLADA .SQLMOD .RGK .RGC .MEM .RNO .HLP .RNH .L32 .REQ .R32 - + .L16 .R16 .TXT .H .FRM .MMS .DDL .COM .DAT .OPT .CDO .SDML .ADF - + .GDF .LDF .MDF .RDF .TDF + +$(O)$(E) : + $(LINK) $(LINKFLAGS) /EXE=$(MMS$TARGET) $(MMS$SOURCE) + +$(O)$(A) : + If "''F$Search("$(MMS$TARGET)")'" .EQS. "" Then $(LIBR)/Create $(MMS$TARGET) + $(LIBR)$(LIBRFLAGS) $(MMS$TARGET) $(MMS$SOURCE) + +.CLD$(O) : + SET COMMAND /OBJECT=$(MMS$TARGET) $(CLDFLAGS) $(MMS$SOURCE) + +.c$(O) : + $(CC) $(CFLAGS_ALL) /OBJ=$(MMS$TARGET) $(MMS$SOURCE) + +.RNH.HLP : + runoff /out=$@ $< + +!!!!!!!!!!!!!!!!!! here starts the unzip specific part !!!!!!!!!!! + +default : $(UNZIPS), $(UNZIPHELPS) + @ ! Do nothing. + +noshare : $(UNZIPS_NOSHARE), $(UNZIPHELPS) + @ ! Do nothing. + +$(UNZX_UNX)$(E) : $(OLBUNZ)($(OBJS))$(OPTFILE_LIST) + $(LINK)$(LINKFLAGS) /EXE=$(MMS$TARGET) - + $(OLBUNZ)/INCLUDE=UNZIP/LIBRARY$(OPTIONS), - + sys$disk:[.vms]unzip.opt/OPT + +$(UNZX_CLI)$(E) : $(OLBCLI)($(OBJSCLI)),$(OLBUNZ)($(OBJUNZLIB))$(OPTFILE_LIST) + $(LINK)$(LINKFLAGS) /EXE=$(MMS$TARGET) - + $(OLBCLI)/INCLUDE=UNZIP/LIBRARY, $(OLBUNZ)/LIBRARY$(OPTIONS), - + sys$disk:[.vms]unzip.opt/OPT + +$(UNZSFX_DEF)$(E) : $(OLBSFX)($(OBJX))$(OPTFILE_LIST) + $(LINK)$(LINKFLAGS) /EXE=$(MMS$TARGET) - + $(OLBSFX)/INCLUDE=UNZIP/LIBRARY$(OPTIONS), - + sys$disk:[.vms]unzipsfx.opt/OPT + +$(UNZSFX_CLI)$(E) : $(OLBSXC)($(OBJXCLI)),$(OLBSFX)($(OBJSFXLIB))$(OPTFILE_LIST) + $(LINK)$(LINKFLAGS) /EXE=$(MMS$TARGET) - + $(OLBSXC)/INCLUDE=UNZIP/LIBRARY, $(OLBSFX)/LIBRARY$(OPTIONS), - + sys$disk:[.vms]unzipsfx.opt/OPT + +$(UNZX_UNX)_noshare$(E) : $(OLBUNZ)($(OBJS)) + $(LINK)$(LINKFLAGS) /EXE=$(MMS$TARGET) - + $(OLBUNZ)/INCLUDE=UNZIP/LIBRARY$(NOSHARE_OPTS), - + sys$disk:[.vms]unzip.opt/OPT + +$(UNZSFX_DEF)_noshare$(E) : $(OLBSFX)($(OBJX)) + $(LINK)$(LINKFLAGS) /EXE=$(MMS$TARGET) - + $(OLBSFX)/INCLUDE=UNZIP/LIBRARY$(NOSHARE_OPTS), - + sys$disk:[.vms]unzipsfx.opt/OPT + +$(OPTFILE) : + @ open/write tmp $(MMS$TARGET) + @ write tmp "SYS$SHARE:VAXCRTL.EXE/SHARE" + @ close tmp + +$(UNZHELP_CLI_RNH) : [.vms]unzip_cli.help + @ set default [.vms] + edit/tpu/nosection/nodisplay/command=cvthelp.tpu unzip_cli.help + @ set default [-] + +$(UNZX_UNX).hlp : $(UNZHELP_UNX_RNH) + runoff /out=$@ $< + +$(UNZX_CLI).hlp : $(UNZHELP_CLI_RNH) + +clean.com : + @ open/write tmp $(MMS$TARGET) + @ write tmp "$!" + @ write tmp "$! Clean.com -- procedure to delete files. It always returns success" + @ write tmp "$! status despite any error or warnings. Also it extracts" + @ write tmp "$! filename from MMS ""module=file"" format." + @ write tmp "$!" + @ write tmp "$ on control_y then goto ctly" + @ write tmp "$ if p1.eqs."""" then exit 1" + @ write tmp "$ i = -1" + @ write tmp "$scan_list:" + @ write tmp "$ i = i+1" + @ write tmp "$ item = f$elem(i,"","",p1)" + @ write tmp "$ if item.eqs."""" then goto scan_list" + @ write tmp "$ if item.eqs."","" then goto done ! End of list" + @ write tmp "$ item = f$edit(item,""trim"") ! Clean of blanks" + @ write tmp "$ wild = f$elem(1,""="",item)" + @ write tmp "$ show sym wild" + @ write tmp "$ if wild.eqs.""="" then wild = f$elem(0,""="",item)" + @ write tmp "$ vers = f$parse(wild,,,""version"",""syntax_only"")" + @ write tmp "$ if vers.eqs."";"" then wild = wild - "";"" + "";*""" + @ write tmp "$scan:" + @ write tmp "$ f = f$search(wild)" + @ write tmp "$ if f.eqs."""" then goto scan_list" + @ write tmp "$ on error then goto err" + @ write tmp "$ on warning then goto warn" + @ write tmp "$ delete/log 'f'" + @ write tmp "$warn:" + @ write tmp "$err:" + @ write tmp "$ goto scan" + @ write tmp "$done:" + @ write tmp "$ctly:" + @ write tmp "$ exit 1" + @ close tmp + +clean : clean.com + ! delete *$(O);*, *$(A);*, unzip$(exe);*, unzipsfx$(exe);*, - + ! unzip.hlp;*, [.vms]unzip.rnh;* + @clean "$(OBJM)" + @clean "$(COMMON_OBJS1)" + @clean "$(COMMON_OBJS2)" + @clean "$(OBJSCLI)" + @clean "$(COMMON_OBJX1)" + @clean "$(COMMON_OBJX2)" + @clean "$(OBJXCLI)" + @clean "$(OPTFILE)" + @clean "$(OLBUNZ),$(OLBCLI),$(OLBSFX),$(OLBSXC)" + @clean "$(UNZIPS)" + @clean "$(UNZIPS_NOSHARE)" + @clean "$(UNZHELP_CLI_RNH)" + @clean "$(UNZIPHELPS)" + - delete/noconfirm/nolog clean.com;* + +crc32$(O) : crc32.c $(UNZIP_H) zip.h +crctab$(O) : crctab.c $(UNZIP_H) zip.h +crypt$(O) : crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h +envargs$(O) : envargs.c $(UNZIP_H) +explode$(O) : explode.c $(UNZIP_H) +extract$(O) : extract.c $(UNZIP_H) crypt.h +fileio$(O) : fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h +globals$(O) : globals.c $(UNZIP_H) +inflate$(O) : inflate.c inflate.h $(UNZIP_H) +list$(O) : list.c $(UNZIP_H) +match$(O) : match.c $(UNZIP_H) +process$(O) : process.c $(UNZIP_H) +ttyio$(O) : ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +unreduce$(O) : unreduce.c $(UNZIP_H) +unshrink$(O) : unshrink.c $(UNZIP_H) +unzip$(O) : unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h +zipinfo$(O) : zipinfo.c $(UNZIP_H) + +unzipcli$(O) : unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h + $(CC) $(CFLAGS_CLI) /OBJ=$(MMS$TARGET) $(MMS$SOURCE) + +cmdline$(O) : [.vms]cmdline.c $(UNZIP_H) unzvers.h + $(CC) $(CFLAGS_CLI) /OBJ=$(MMS$TARGET) $(MMS$SOURCE) + +unz_cli$(O) : [.vms]unz_cli.cld + + +cmdline_$(O) : [.vms]cmdline.c $(UNZIP_H) unzvers.h + $(CC) $(CFLAGS_SXC) /OBJ=$(MMS$TARGET) [.vms]cmdline.c + +crc32_$(O) : crc32.c $(UNZIP_H) zip.h + $(CC) $(CFLAGS_SFX) /OBJ=$(MMS$TARGET) crc32.c + +crctab_$(O) : crctab.c $(UNZIP_H) zip.h + $(CC) $(CFLAGS_SFX) /OBJ=$(MMS$TARGET) crctab.c + +crypt_$(O) : crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h + $(CC) $(CFLAGS_SFX) /OBJ=$(MMS$TARGET) crypt.c + +extract_$(O) : extract.c $(UNZIP_H) crypt.h + $(CC) $(CFLAGS_SFX) /OBJ=$(MMS$TARGET) extract.c + +fileio_$(O) : fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h + $(CC) $(CFLAGS_SFX) /OBJ=$(MMS$TARGET) fileio.c + +globals_$(O) : globals.c $(UNZIP_H) + $(CC) $(CFLAGS_SFX) /OBJ=$(MMS$TARGET) globals.c + +inflate_$(O) : inflate.c inflate.h $(UNZIP_H) + $(CC) $(CFLAGS_SFX) /OBJ=$(MMS$TARGET) inflate.c + +match_$(O) : match.c $(UNZIP_H) + $(CC) $(CFLAGS_SFX) /OBJ=$(MMS$TARGET) match.c + +process_$(O) : process.c $(UNZIP_H) + $(CC) $(CFLAGS_SFX) /OBJ=$(MMS$TARGET) process.c + +ttyio_$(O) : ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h + $(CC) $(CFLAGS_SFX) /OBJ=$(MMS$TARGET) ttyio.c + +unzipsfx$(O) : unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h + $(CC) $(CFLAGS_SFX) /OBJ=$(MMS$TARGET) unzip.c + +unzsxcli$(O) : unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h + $(CC) $(CFLAGS_SXC) /OBJ=$(MMS$TARGET) unzip.c + +vms$(O) : [.vms]vms.c [.vms]vms.h [.vms]vmsdefs.h $(UNZIP_H) +! @ x = "" +! @ if f$search("SYS$LIBRARY:SYS$LIB_C.TLB").nes."" then x = "+SYS$LIBRARY:SYS$LIB_C.TLB/LIBRARY" + $(CC) $(CFLAGS_ALL) /OBJ=$(MMS$TARGET) [.vms]vms.c + +vms_$(O) : [.vms]vms.c [.vms]vms.h [.vms]vmsdefs.h $(UNZIP_H) +! @ x = "" +! @ if f$search("SYS$LIBRARY:SYS$LIB_C.TLB").nes."" then x = "+SYS$LIBRARY:SYS$LIB_C.TLB/LIBRARY" + $(CC) $(CFLAGS_SFX) /OBJ=$(MMS$TARGET) [.vms]vms.c diff -Nru unzip-6.0/vms/link_unz.com unzip-6.0/vms/link_unz.com --- unzip-6.0/vms/link_unz.com 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/vms/link_unz.com 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,200 @@ +$ ! LINK_UNZ.COM +$ ! +$ ! Command procedure to (re)link the VMS versions of +$ ! UnZip/ZipInfo and UnZipSFX +$ ! +$ ! last updated: 13 February 2001 +$ ! +$ ! Command args: +$ ! - select compiler environment: "VAXC", "DECC", "GNUC" +$ ! - select installation of CLI interface version of unzip: +$ ! "VMSCLI" or "CLI" +$ ! - force installation of UNIX interface version of unzip +$ ! (override LOCAL_UNZIP environment): "NOVMSCLI" or "NOCLI" +$ ! +$ ! +$ on error then goto error +$ on control_y then goto error +$ OLD_VERIFY = f$verify(0) +$! +$ say := write sys$output +$!##################### Read settings from environment ######################## +$! +$ if f$type(LOCAL_UNZIP).eqs."" +$ then +$ local_unzip = "" +$ else ! Trim blanks and append comma if missing +$ local_unzip = f$edit(local_unzip, "TRIM") +$ if f$extract(f$length(local_unzip)-1, 1, local_unzip).nes."," then - + local_unzip = local_unzip + "," +$ endif +$! Check for the presence of "VMSCLI" in local_unzip. If yes, we will define +$! the foreign command for "unzip" to use the executable containing the +$! CLI interface. +$ pos_cli = f$locate("VMSCLI",local_unzip) +$ len_local_unzip = f$length(local_unzip) +$ if pos_cli.ne.len_local_unzip +$ then +$ CLI_IS_DEFAULT = 1 +$ ! Remove "VMSCLI" macro from local_unzip. The UnZip executable including +$ ! the CLI interface is now created unconditionally. +$ local_unzip = f$extract(0, pos_cli, local_unzip) + - +$ f$extract(pos_cli+7, len_local_unzip-(pos_cli+7), local_unzip) +$ else +$ CLI_IS_DEFAULT = 0 +$ endif +$ delete/symbol/local pos_cli +$ delete/symbol/local len_local_unzip +$!##################### Customizing section ############################# +$! +$ unzx_unx = "unzip" +$ unzx_cli = "unzip_cli" +$ unzsfx_unx = "unzipsfx" +$ unzsfx_cli = "unzipsfx_cli" +$! +$ MAY_USE_DECC = 1 +$ MAY_USE_GNUC = 0 +$! +$! Process command line parameters requesting optional features: +$ arg_cnt = 1 +$ argloop: +$ current_arg_name = "P''arg_cnt'" +$ curr_arg = f$edit('current_arg_name',"UPCASE") +$ IF curr_arg .eqs. "" THEN GOTO argloop_out +$ IF curr_arg .eqs. "VAXC" +$ THEN MAY_USE_DECC = 0 +$ MAY_USE_GNUC = 0 +$ ENDIF +$ IF curr_arg .eqs. "DECC" +$ THEN MAY_USE_DECC = 1 +$ MAY_USE_GNUC = 0 +$ ENDIF +$ IF curr_arg .eqs. "GNUC" +$ THEN MAY_USE_DECC = 0 +$ MAY_USE_GNUC = 1 +$ ENDIF +$ IF (curr_arg .eqs. "VMSCLI") .or. (curr_arg .eqs. "CLI") +$ THEN +$ CLI_IS_DEFAULT = 1 +$ ENDIF +$ IF (curr_arg .eqs. "NOVMSCLI") .or. (curr_arg .eqs. "NOCLI") +$ THEN +$ CLI_IS_DEFAULT = 0 +$ ENDIF +$ arg_cnt = arg_cnt + 1 +$ GOTO argloop +$ argloop_out: +$! +$ if CLI_IS_DEFAULT +$ then +$ UNZEXEC = unzx_cli +$ else +$ UNZEXEC = unzx_unx +$ endif +$! +$!####################################################################### +$! +$ ! Find out current disk, directory, compiler and options +$ ! +$ my_name = f$env("procedure") +$ workdir = f$env("default") +$ here = f$parse(workdir,,,"device") + f$parse(workdir,,,"directory") +$ axp = f$getsyi("HW_MODEL").ge.1024 +$ if axp +$ then +$ ! Alpha AXP +$ ARCH_NAME == "Alpha" +$ ARCH_PREF = "AXP_" +$ HAVE_DECC_VAX = 0 +$ USE_DECC_VAX = 0 +$ IF (f$search("SYS$DISK:[]UNZIP.''ARCH_PREF'OLB").eqs."") +$ THEN +$ say "Cannot find any AXP object library for UnZip." +$ say " You must keep all binary files of the object distribution" +$ say " in the current directory !" +$ goto error +$ ENDIF +$ if MAY_USE_GNUC +$ then say "GNU C has not yet been ported to OpenVMS AXP." +$ say "You must use DEC C to build UnZip." +$ goto error +$ endif +$ ARCH_CC_P = ARCH_PREF +$ opts = "" +$ say "Linking on AXP using DEC C" +$ else +$ ! VAX +$ ARCH_NAME == "VAX" +$ ARCH_PREF = "VAX_" +$ ! check which object libraries are present: +$ HAVE_DECC_VAX = - + (f$search("SYS$DISK:[]UNZIP.''ARCH_PREF'DECC_OLB").nes."") +$ HAVE_VAXC_VAX = - + (f$search("SYS$DISK:[]UNZIP.''ARCH_PREF'VAXC_OLB").nes."") +$ HAVE_GNUC_VAX = - + (f$search("SYS$DISK:[]UNZIP.''ARCH_PREF'GNUC_OLB").nes."") +$ IF .not.HAVE_DECC_VAX .and. .not.HAVE_VAXC_VAX .and. .not.HAVE_GNUC_VAX +$ THEN +$ say "Cannot find any VAX object library for UnZip." +$ say " You must keep all binary files of the object distribution" +$ say " in the current directory !" +$ goto error +$ ENDIF +$ IF HAVE_DECC_VAX .AND. MAY_USE_DECC +$ THEN +$ ! We use DECC: +$ USE_DECC_VAX = 1 +$ ARCH_CC_P = "''ARCH_PREF'DECC_" +$ opts = "" +$ say "Linking on VAX using DEC C" +$ ELSE +$ ! We use VAXC (or GNU C): +$ USE_DECC_VAX = 0 +$ opts = ",SYS$DISK:[.VMS]VAXCSHR.OPT/OPTIONS" +$ if HAVE_GNUC_VAX .and. (.not.HAVE_VAXC_VAX .or. MAY_USE_GNUC) +$ then +$ ARCH_CC_P = "''ARCH_PREF'GNUC_" +$ opts = ",GNU_CC:[000000]GCCLIB.OLB/LIB ''opts'" +$ say "Linking on VAX using GNU C" +$ else +$ ARCH_CC_P = "''ARCH_PREF'VAXC_" +$ say "Linking on VAX using VAX C" +$ endif +$ ENDIF +$ endif +$ LFLAGS = "/notrace" +$ if (opts .nes. "") .and. (f$search("[.vms]vaxcshr.opt") .eqs. "") +$ then create [.vms]vaxcshr.opt +$ open/append tmp [.vms]vaxcshr.opt +$ write tmp "SYS$SHARE:VAXCRTL.EXE/SHARE" +$ close tmp +$ endif +$ tmp = f$verify(1) ! Turn echo on to see what's happening +$ ! +$ link'LFLAGS'/exe='unzx_unx'.'ARCH_CC_P'exe - + unzip.'ARCH_CC_P'olb;/incl=(unzip)/lib - + 'opts', [.VMS]unzip.opt/opt +$ ! +$ link'LFLAGS'/exe='unzx_cli'.'ARCH_CC_P'exe - + unzipcli.'ARCH_CC_P'olb;/incl=(unzip)/lib, - + unzip.'ARCH_CC_P'olb;/lib - + 'opts', [.VMS]unzip.opt/opt +$ ! +$ link'LFLAGS'/exe='unzsfx_unx'.'ARCH_CC_P'exe - + unzipsfx.'ARCH_CC_P'olb;/lib/incl=unzip - + 'opts', [.VMS]unzipsfx.opt/opt +$ ! +$ link'LFLAGS'/exe='unzsfx_cli'.'ARCH_CC_P'exe - + unzsxcli.'ARCH_CC_P'olb;/lib/incl=unzip, - + unzipsfx.'ARCH_CC_P'olb;/lib - + 'opts', [.VMS]unzipsfx.opt/opt +$ ! +$ ! Next line: put similar lines (full pathname for unzip.'ARCH_CC_P'exe) in +$ ! login.com. Remember to include the leading "$" before disk name. +$ ! +$ unzip == "$''here'''UNZEXEC'.''ARCH_CC_P'exe" +$ zipinfo == "$''here'''UNZEXEC'.''ARCH_CC_P'exe ""-Z""" +$ ! +$error: +$ tmp = f$verify(OLD_VERIFY) +$ exit diff -Nru unzip-6.0/vms/make_unz.com unzip-6.0/vms/make_unz.com --- unzip-6.0/vms/make_unz.com 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/vms/make_unz.com 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,316 @@ +$ ! MAKE_UNZ.COM +$ ! +$ ! "Makefile" for VMS versions of UnZip/ZipInfo and UnZipSFX +$ ! +$ ! last revised: 13 February 2001 +$ ! +$ ! Command args: +$ ! - select compiler environment: "VAXC", "DECC", "GNUC" +$ ! - select installation of CLI interface version of unzip: +$ ! "VMSCLI" or "CLI" +$ ! - force installation of UNIX interface version of unzip +$ ! (override LOCAL_UNZIP environment): "NOVMSCLI" or "NOCLI" +$ ! +$ ! To define additional options, define the global symbol +$ ! LOCAL_UNZIP prior to executing MAKE_UNZ.COM, e.g.: +$ ! +$ ! $ LOCAL_UNZIP == "RETURN_CODES," +$ ! $ @MAKE_UNZ +$ ! +$ ! The trailing "," may be omitted. Valid VMS-specific options +$ ! include VMSWILD and RETURN_CODES; see the INSTALL file +$ ! for other options (e.g., CHECK_VERSIONS). +$ ! NOTE: This command procedure does always generate both the +$ ! "default" UnZip containing the UNIX style command interface +$ ! and the "VMSCLI" UnZip containing the CLI compatible command +$ ! interface. There is no need to add "VMSCLI" to the LOCAL_UNZIP +$ ! symbol. (The only effect of "VMSCLI" is now the selection of the +$ ! CLI style UnZip executable in the foreign command definition.) +$ ! +$ ! +$ on error then goto error +$ on control_y then goto error +$ OLD_VERIFY = f$verify(0) +$! +$ edit := edit ! override customized edit commands +$ say := write sys$output +$!##################### Read settings from environment ######################## +$! +$ if f$type(LOCAL_UNZIP).eqs."" +$ then +$ local_unzip = "" +$ else ! Trim blanks and append comma if missing +$ local_unzip = f$edit(local_unzip, "TRIM") +$ if f$extract(f$length(local_unzip)-1, 1, local_unzip).nes."," then - + local_unzip = local_unzip + "," +$ endif +$! Check for the presence of "VMSCLI" in local_unzip. If yes, we will define +$! the foreign command for "unzip" to use the executable containing the +$! CLI interface. +$ pos_cli = f$locate("VMSCLI",local_unzip) +$ len_local_unzip = f$length(local_unzip) +$ if pos_cli.ne.len_local_unzip +$ then +$ CLI_IS_DEFAULT = 1 +$ ! Remove "VMSCLI" macro from local_unzip. The UnZip executable including +$ ! the CLI interface is now created unconditionally. +$ local_unzip = f$extract(0, pos_cli, local_unzip) + - +$ f$extract(pos_cli+7, len_local_unzip-(pos_cli+7), local_unzip) +$ else +$ CLI_IS_DEFAULT = 0 +$ endif +$ delete/symbol/local pos_cli +$ delete/symbol/local len_local_unzip +$!##################### Customizing section ############################# +$! +$ unzx_unx = "unzip" +$ unzx_cli = "unzip_cli" +$ unzsfx_unx = "unzipsfx" +$ unzsfx_cli = "unzipsfx_cli" +$! +$ MAY_USE_DECC = 1 +$ MAY_USE_GNUC = 0 +$! +$! Process command line parameters requesting optional features: +$ arg_cnt = 1 +$ argloop: +$ current_arg_name = "P''arg_cnt'" +$ curr_arg = f$edit('current_arg_name',"UPCASE") +$ IF curr_arg .eqs. "" THEN GOTO argloop_out +$ IF curr_arg .eqs. "VAXC" +$ THEN MAY_USE_DECC = 0 +$ MAY_USE_GNUC = 0 +$ ENDIF +$ IF curr_arg .eqs. "DECC" +$ THEN MAY_USE_DECC = 1 +$ MAY_USE_GNUC = 0 +$ ENDIF +$ IF curr_arg .eqs. "GNUC" +$ THEN MAY_USE_DECC = 0 +$ MAY_USE_GNUC = 1 +$ ENDIF +$ IF (curr_arg .eqs. "VMSCLI") .or. (curr_arg .eqs. "CLI") +$ THEN +$ CLI_IS_DEFAULT = 1 +$ ENDIF +$ IF (curr_arg .eqs. "NOVMSCLI") .or. (curr_arg .eqs. "NOCLI") +$ THEN +$ CLI_IS_DEFAULT = 0 +$ ENDIF +$ arg_cnt = arg_cnt + 1 +$ GOTO argloop +$ argloop_out: +$! +$ if CLI_IS_DEFAULT +$ then +$ UNZEXEC = unzx_cli +$ else +$ UNZEXEC = unzx_unx +$ endif +$! +$!####################################################################### +$! +$ ! Find out current disk, directory, compiler and options +$ ! +$ my_name = f$env("procedure") +$ workdir = f$env("default") +$ here = f$parse(workdir,,,"device") + f$parse(workdir,,,"directory") +$ axp = f$getsyi("HW_MODEL").ge.1024 +$ if axp +$ then +$ ! Alpha AXP +$ ARCH_NAME == "Alpha" +$ ARCH_PREF = "AXP_" +$ HAVE_DECC_VAX = 0 +$ USE_DECC_VAX = 0 +$ if MAY_USE_GNUC +$ then say "GNU C has not yet been ported to OpenVMS AXP." +$ say "You must use DEC C to build UnZip." +$ goto error +$ endif +$ ARCH_CC_P = ARCH_PREF +$ cc = "cc/standard=relax/prefix=all/ansi" +$ defs = "''local_unzip'MODERN" +$ opts = "" +$ say "Compiling on AXP using DEC C" +$ else +$ ! VAX +$ ARCH_NAME == "VAX" +$ ARCH_PREF = "VAX_" +$ HAVE_DECC_VAX = (f$search("SYS$SYSTEM:DECC$COMPILER.EXE").nes."") +$ HAVE_VAXC_VAX = (f$search("SYS$SYSTEM:VAXC.EXE").nes."") +$ MAY_HAVE_GNUC = (f$trnlnm("GNU_CC").nes."") +$ IF HAVE_DECC_VAX .AND. MAY_USE_DECC +$ THEN +$ ! We use DECC: +$ USE_DECC_VAX = 1 +$ ARCH_CC_P = "''ARCH_PREF'DECC_" +$ cc = "cc/decc/standard=vaxc/prefix=all" +$ defs = "''local_unzip'MODERN" +$ opts = "" +$ say "Compiling on VAX using DEC C" +$ ELSE +$ ! We use VAXC (or GNU C): +$ USE_DECC_VAX = 0 +$ defs = "''local_unzip'VMS" +$ opts = ",SYS$DISK:[.VMS]VAXCSHR.OPT/OPTIONS" +$ if (.not.HAVE_VAXC_VAX .and. MAY_HAVE_GNUC) .or. (MAY_USE_GNUC) +$ then +$ ARCH_CC_P = "''ARCH_PREF'GNUC_" +$ cc = "gcc" +$ opts = ",GNU_CC:[000000]GCCLIB.OLB/LIB ''opts'" +$ say "Compiling on VAX using GNU C" +$ else +$ ARCH_CC_P = "''ARCH_PREF'VAXC_" +$ if HAVE_DECC_VAX +$ then +$ cc = "cc/vaxc" +$ else +$ cc = "cc" +$ endif +$ say "Compiling on VAX using VAX C" +$ endif +$ ENDIF +$ endif +$ DEF_UNX = "/define=(''defs')" +$ DEF_CLI = "/define=(''defs',VMSCLI)" +$ DEF_SXUNX = "/define=(''defs',SFX)" +$ DEF_SXCLI = "/define=(''defs',VMSCLI,SFX)" +$ LFLAGS = "/notrace" +$ if (opts .nes. "") .and. (f$search("[.vms]vaxcshr.opt") .eqs. "") +$ then create [.vms]vaxcshr.opt +$ open/append tmp [.vms]vaxcshr.opt +$ write tmp "SYS$SHARE:VAXCRTL.EXE/SHARE" +$ close tmp +$ endif +$ ! +$ ! Currently, the following section is not needed, as vms.c does no longer +$ ! include any of the headers from SYS$LIB_C.TLB. +$ ! The commented section is solely maintained for reference. +$ ! In case system headers from SYS$LIB_C.TLB are needed again, +$ ! just append "'x'" to the respective source file specification. +$! x = f$search("SYS$LIBRARY:SYS$LIB_C.TLB") +$! if x .nes. "" then x = "+" + x +$ ! +$ tmp = f$verify(1) ! Turn echo on to see what's happening +$ ! +$ !------------------------------- UnZip section ------------------------------ +$ ! +$ runoff/out=unzip.hlp [.vms]unzip_def.rnh +$ ! +$ cc/NOLIST'DEF_UNX' /OBJ=unzip.'ARCH_CC_P'obj unzip.c +$ cc/NOLIST'DEF_UNX' /OBJ=crc32.'ARCH_CC_P'obj crc32.c +$ cc/NOLIST'DEF_UNX' /OBJ=crctab.'ARCH_CC_P'obj crctab.c +$ cc/NOLIST'DEF_UNX' /OBJ=crypt.'ARCH_CC_P'obj crypt.c +$ cc/NOLIST'DEF_UNX' /OBJ=envargs.'ARCH_CC_P'obj envargs.c +$ cc/NOLIST'DEF_UNX' /OBJ=explode.'ARCH_CC_P'obj explode.c +$ cc/NOLIST'DEF_UNX' /OBJ=extract.'ARCH_CC_P'obj extract.c +$ cc/NOLIST'DEF_UNX' /OBJ=fileio.'ARCH_CC_P'obj fileio.c +$ cc/NOLIST'DEF_UNX' /OBJ=globals.'ARCH_CC_P'obj globals.c +$ cc/NOLIST'DEF_UNX' /OBJ=inflate.'ARCH_CC_P'obj inflate.c +$ cc/NOLIST'DEF_UNX' /OBJ=list.'ARCH_CC_P'obj list.c +$ cc/NOLIST'DEF_UNX' /OBJ=match.'ARCH_CC_P'obj match.c +$ cc/NOLIST'DEF_UNX' /OBJ=process.'ARCH_CC_P'obj process.c +$ cc/NOLIST'DEF_UNX' /OBJ=ttyio.'ARCH_CC_P'obj ttyio.c +$ cc/NOLIST'DEF_UNX' /OBJ=unreduce.'ARCH_CC_P'obj unreduce.c +$ cc/NOLIST'DEF_UNX' /OBJ=unshrink.'ARCH_CC_P'obj unshrink.c +$ cc/NOLIST'DEF_UNX' /OBJ=zipinfo.'ARCH_CC_P'obj zipinfo.c +$ cc/INCLUDE=SYS$DISK:[]'DEF_UNX' /OBJ=vms.'ARCH_CC_P'obj; [.vms]vms.c +$ ! +$ if f$search("unzip.''ARCH_CC_P'olb") .eqs. "" then - + lib/obj/create unzip.'ARCH_CC_P'olb +$ lib/obj/replace unzip.'ARCH_CC_P'olb - + unzip.'ARCH_CC_P'obj;, crc32.'ARCH_CC_P'obj;, - + crctab.'ARCH_CC_P'obj;, crypt.'ARCH_CC_P'obj;, - + envargs.'ARCH_CC_P'obj;, explode.'ARCH_CC_P'obj;, - + extract.'ARCH_CC_P'obj;, fileio.'ARCH_CC_P'obj;, - + globals.'ARCH_CC_P'obj;, inflate.'ARCH_CC_P'obj;, - + list.'ARCH_CC_P'obj;, match.'ARCH_CC_P'obj;, - + process.'ARCH_CC_P'obj;, ttyio.'ARCH_CC_P'obj;, - + unreduce.'ARCH_CC_P'obj;, unshrink.'ARCH_CC_P'obj;, - + zipinfo.'ARCH_CC_P'obj;, vms.'ARCH_CC_P'obj; +$ ! +$ link'LFLAGS'/exe='unzx_unx'.'ARCH_CC_P'exe - + unzip.'ARCH_CC_P'olb;/incl=(unzip)/lib - + 'opts', [.VMS]unzip.opt/opt +$ ! +$ !----------------------- UnZip (CLI interface) section ---------------------- +$ ! +$ set default [.vms] +$ edit/tpu/nosection/nodisplay/command=cvthelp.tpu unzip_cli.help +$ set default [-] +$ runoff/out=unzip_cli.hlp [.vms]unzip_cli.rnh +$ ! +$ cc/NOLIST'DEF_CLI' /OBJ=unzipcli.'ARCH_CC_P'obj unzip.c +$ cc/INCLUDE=SYS$DISK:[]'DEF_CLI' /OBJ=cmdline.'ARCH_CC_P'obj; - + [.vms]cmdline.c +$ set command/obj=unz_cli.'ARCH_CC_P'obj [.vms]unz_cli.cld +$ ! +$ if f$search("unzipcli.''ARCH_CC_P'olb") .eqs. "" then - + lib/obj/create unzipcli.'ARCH_CC_P'olb +$ lib/obj/replace unzipcli.'ARCH_CC_P'olb - + unzipcli.'ARCH_CC_P'obj;, - + cmdline.'ARCH_CC_P'obj;, unz_cli.'ARCH_CC_P'obj; +$ ! +$ link'LFLAGS'/exe='unzx_cli'.'ARCH_CC_P'exe - + unzipcli.'ARCH_CC_P'olb;/incl=(unzip)/lib, - + unzip.'ARCH_CC_P'olb;/lib - + 'opts', [.VMS]unzip.opt/opt +$ ! +$ !-------------------------- UnZipSFX section -------------------------------- +$ ! +$ cc/NOLIST'DEF_SXUNX' /OBJ=unzipsfx.'ARCH_CC_P'obj unzip.c +$ cc/NOLIST'DEF_SXUNX' /OBJ=crc32_.'ARCH_CC_P'obj crc32.c +$ cc/NOLIST'DEF_SXUNX' /OBJ=crctab_.'ARCH_CC_P'obj crctab.c +$ cc/NOLIST'DEF_SXUNX' /OBJ=crypt_.'ARCH_CC_P'obj crypt.c +$ cc/NOLIST'DEF_SXUNX' /OBJ=extract_.'ARCH_CC_P'obj extract.c +$ cc/NOLIST'DEF_SXUNX' /OBJ=fileio_.'ARCH_CC_P'obj fileio.c +$ cc/NOLIST'DEF_SXUNX' /OBJ=globals_.'ARCH_CC_P'obj globals.c +$ cc/NOLIST'DEF_SXUNX' /OBJ=inflate_.'ARCH_CC_P'obj inflate.c +$ cc/NOLIST'DEF_SXUNX' /OBJ=match_.'ARCH_CC_P'obj match.c +$ cc/NOLIST'DEF_SXUNX' /OBJ=process_.'ARCH_CC_P'obj process.c +$ cc/NOLIST'DEF_SXUNX' /OBJ=ttyio_.'ARCH_CC_P'obj ttyio.c +$ cc/NOLIST'DEF_SXUNX'/INCLUDE=SYS$DISK:[] /OBJ=vms_.'ARCH_CC_P'obj; - + [.vms]vms.c +$ if f$search("unzipsfx.''ARCH_CC_P'olb") .eqs. "" then - + lib/obj/create unzipsfx.'ARCH_CC_P'olb +$ lib/obj/replace unzipsfx.'ARCH_CC_P'olb - + unzipsfx.'ARCH_CC_P'obj, crc32_.'ARCH_CC_P'obj, - + crctab_.'ARCH_CC_P'obj, crypt_.'ARCH_CC_P'obj, - + extract_.'ARCH_CC_P'obj, fileio_.'ARCH_CC_P'obj, - + globals_.'ARCH_CC_P'obj, inflate_.'ARCH_CC_P'obj, - + match_.'ARCH_CC_P'obj, process_.'ARCH_CC_P'obj, - + ttyio_.'ARCH_CC_P'obj, vms_.'ARCH_CC_P'obj +$ ! +$ link'LFLAGS'/exe='unzsfx_unx'.'ARCH_CC_P'exe - + unzipsfx.'ARCH_CC_P'olb;/lib/incl=unzip - + 'opts', [.VMS]unzipsfx.opt/opt +$ ! +$ !--------------------- UnZipSFX (CLI interface) section --------------------- +$ ! +$ cc/NOLIST'DEF_SXCLI' /OBJ=unzsxcli.'ARCH_CC_P'obj unzip.c +$ cc/NOLIST/INCLUDE=SYS$DISK:[]'DEF_SXCLI' /OBJ=cmdline_.'ARCH_CC_P'obj; - + [.vms]cmdline.c +$ if f$search("unzsxcli.''ARCH_CC_P'olb") .eqs. "" then - + lib/obj/create unzsxcli.'ARCH_CC_P'olb +$ lib/obj/replace unzsxcli.'ARCH_CC_P'olb - + unzsxcli.'ARCH_CC_P'obj;, - + cmdline_.'ARCH_CC_P'obj;, unz_cli.'ARCH_CC_P'obj; +$ ! +$ link'LFLAGS'/exe='unzsfx_cli'.'ARCH_CC_P'exe - + unzsxcli.'ARCH_CC_P'olb;/lib/incl=unzip, - + unzipsfx.'ARCH_CC_P'olb;/lib - + 'opts', [.VMS]unzipsfx.opt/opt +$ ! +$ !----------------------------- Symbols section ------------------------------ +$ ! +$ ! Next line: put similar lines (full pathname for unzip.'ARCH_CC_P'exe) in +$ ! login.com. Remember to include the leading "$" before disk name. +$ ! +$ unzip == "$''here'''UNZEXEC'.''ARCH_CC_P'exe" +$ zipinfo == "$''here'''UNZEXEC'.''ARCH_CC_P'exe ""-Z""" +$ ! +$error: +$ if here .nes. "" then set default 'here' +$ tmp = f$verify(OLD_VERIFY) +$ exit diff -Nru unzip-6.0/vms/unz_cli.cld unzip-6.0/vms/unz_cli.cld --- unzip-6.0/vms/unz_cli.cld 2008-09-13 18:16:18.000000000 +0000 +++ unzip-6.0/vms/unz_cli.cld 2010-05-14 07:26:14.000000000 +0000 @@ -1,11 +1,11 @@ Module VMS_UNZIP_CLD - Ident "03-003" + Ident "02-009" Define Verb UNZIP Parameter P1, Label=ZIPFILE, Prompt="Zip file" Parameter P2, Label=INFILE, VALUE(LIST), Prompt="Files to UnZip" - Qualifier BINARY, VALUE(TYPE=CONVBIN_KEYWORDS), Negatable - Qualifier TEXT, VALUE(TYPE=CONVTXT_KEYWORDS, LIST), Negatable + Qualifier BINARY, VALUE(TYPE=CONVERT_KEYWORDS), Negatable + Qualifier TEXT, VALUE(TYPE=CONVERT_KEYWORDS), Negatable Qualifier SCREEN, Negatable Qualifier DIRECTORY, VALUE(REQUIRED,TYPE=$FILE), Nonnegatable Qualifier FRESHEN, Negatable @@ -13,9 +13,7 @@ Qualifier JUNK, Negatable Qualifier LIST, Nonnegatable Qualifier BRIEF, Nonnegatable, Default - Qualifier FULL, VALUE(TYPE=FULL_MODIFIER), Nonnegatable - Qualifier EXISTING, VALUE(REQUIRED, TYPE=EXISTING_KEYWORDS), - Nonnegatable + Qualifier FULL, Nonnegatable Qualifier OVERWRITE, Negatable Qualifier QUIET, VALUE(TYPE=QUIET_MODIFIER), Nonnegatable Qualifier TEST, Negatable @@ -26,65 +24,29 @@ Qualifier UPPERCASE, Negatable Qualifier UPDATE, Negatable Qualifier VERSION, Negatable - Qualifier RESTORE, VALUE(TYPE=RESTORE_KEYWORDS, LIST), Negatable + Qualifier VERBOSE, Nonnegatable + Qualifier RESTORE, Negatable Qualifier COMMENT, Negatable Qualifier EXCLUDE, VALUE(LIST), Nonnegatable Qualifier CASE_INSENSITIVE, Negatable Qualifier LOWERCASE, Negatable Qualifier PAGE, Negatable - Qualifier DOT_VERSION, Negatable - Qualifier ODS2, Negatable Qualifier YYZ_UNZIP, NonNegatable, Default Qualifier ZIPINFO, Syntax=INFORMATION, NonNegatable DisAllow BRIEF and FULL DisAllow DIRECTORY and SCREEN DisAllow BINARY and TEXT.ALL DisAllow BINARY.ALL and TEXT - DisAllow (OVERWRITE or (neg OVERWRITE)) and EXISTING - DisAllow (neg RESTORE) and RESTORE.DATE - DisAllow (neg RESTORE) and (neg RESTORE.DATE) - DisAllow (neg RESTORE) and RESTORE.OWNER_PROT - DisAllow (neg RESTORE) and (neg RESTORE.OWNER_PROT) - DisAllow (neg RESTORE.DATE) and RESTORE.DATE.ALL - DisAllow (neg RESTORE.DATE) and RESTORE.DATE.FILES - DisAllow TEXT.ALL and TEXT.AUTO - DisAllow TEXT.AUTO and TEXT.NONE - DisAllow TEXT.NONE and TEXT.ALL - DisAllow TEXT.NONE and TEXT.STMLF - DisAllow (neg TEXT) and TEXT.STMLF DisAllow ZIPINFO and HELP -Define Type CONVBIN_KEYWORDS +Define Type CONVERT_KEYWORDS Keyword AUTO, DEFAULT Keyword ALL - Keyword NONE - -Define Type CONVTXT_KEYWORDS - Keyword AUTO, DEFAULT - Keyword ALL - Keyword NONE - Keyword STMLF - -Define Type EXISTING_KEYWORDS - Keyword NEW_VERSION - Keyword OVERWRITE - Keyword NOEXTRACT - -Define Type RESTORE_KEYWORDS - Keyword DATE, VALUE(TYPE=RESTOREDATE_KEYS, Required), - Negatable - Keyword OWNER_PROT, Default, Negatable - -Define Type RESTOREDATE_KEYS - Keyword FILES, DEFAULT - Keyword ALL + Keyword NONE Define Type QUIET_MODIFIER Keyword SUPER -Define Type FULL_MODIFIER - Keyword DIAGNOSTICS - Define Syntax INFORMATION Parameter P1, Label=ZIPFILE, Prompt="Zip file" Parameter P2, Label=INFILE, VALUE(LIST), Prompt="Files to display" diff -Nru unzip-6.0/vms/unzip_cli.help unzip-6.0/vms/unzip_cli.help --- unzip-6.0/vms/unzip_cli.help 2009-01-18 16:59:44.000000000 +0000 +++ unzip-6.0/vms/unzip_cli.help 2010-05-14 07:26:14.000000000 +0000 @@ -34,8 +34,8 @@ .! Added /[NO]CASE_INSENSITIVE to ZipInfo mode; .! documented the new /PASSWORD="decryption_key" option. .! 02-007 Christian Spieler 22-JUL-1997 22:37 -.! Formatting changes (prevent line wraps); -.! added "Exit_Codes" subtopic (no version number change). +.! Formatting changes (prevent line wraps); added "Exit_Codes" +.! subtopic (no version number change). .! 02-007 Christian Spieler 28-APR-2000 03:22 .! Changed references to plaintext UnZip documentation file .! into UNZIP.TXT (no version number change). @@ -50,17 +50,6 @@ .! Added /TIMESTAMP (-T) qualifier. .! 02-010 Christian Spieler 29-Jan-2005 01:50 .! Completed description of -T qualifier (also for UNIX style). -.! 02-011 Steven Schweda 14-FEB-2005 20:04 -.! Added /DOT_VERSION (-Y) and /ODS2 (-2) qualifiers. -.! 02-012 Steven Schweda 07-JUL-2006 01:30 -.! Added /TEXT = STMLF (-s) qualifier. -.! 02-012 Christian Spieler 04-Mar-2007 14:39 -.! Changed -s qualifier into -S; -.! updated documentation of UnZip's exit codes. -.! 03-002 S. Schweda, C. Spieler 09-Jan-2008 03:35 -.! Added documentation of extended /RESTORE=(...) qualifier. -.! 03-003 S. Schweda, C. Spieler 13-Sep-2008 20:00 -.! Added /EXISTING qualifier. .!
@@ -202,16 +191,6 @@ Specifies the output directory where all the extracted files are to be placed. -/DOT_VERSION - -/DOT_VERSION - -/NODOT_VERSION (default) - -Causes UnZip to treat archived file name endings of ".nnn" (where "nnn" -is a decimal number) as if they were VMS version numbers (";nnn"). (The -default is to treat them as file types.) Example: "a.b.3" -> "a.b;3". - /EXCLUDE /EXCLUDE=(file[,...]) @@ -219,38 +198,7 @@ A comma-separated list of files to exclude when extracting files. If multiple files are specified, the list should be included in parentheses. - -/EXISTING - -/EXISTING = keyword - -Valid keywords (exactly one must be specified) are: - -| NEW_VERSION Create a new version of an existing file. -| OVERWRITE Overwrite the same version of an existing file. -| (But only if the archive member name includes a -| version number.) -| NOEXTRACT Do not extract. An existing file is not affected. - - -When UnZip would extract an archive member, but the destination file -already exists, UnZip will, by default, ask the user what to do. -/EXISTING lets the user specify on the command line what to do in this -situation, eliminating the interactive question(s). - -NOEXTRACT will always stop UnZip from extracting an archive member if -the destination file already exists. - -If an archive member name does not include a VMS version number, or if -UnZip is run with /NOVERSION (the default, causing it to ignore version -numbers), then either NEW_VERSION or OVERWRITE will cause UnZip to -create a new version of the existing file. -If an archive member name does include a VMS version number, and if -UnZip is run with /VERSION, then NEW_VERSION will cause UnZip to create -a new version of the existing file, and OVERWRITE will cause UnZip to -overwrite the existing file which has the version specified by the -archive member name. /FRESHEN @@ -301,34 +249,19 @@ Convert filenames from all-uppercase operating systems to lowercase. This option has no effect under VMS. -/ODS2 - -/ODS2 - -/NOODS2 (default) - -Causes UnZip to convert archived file names to ODS2-compatible file -names (substituting "_" for any invalid characters), regardless of the -type of the destination file system. - -The default is to use ODS5-compatible file names when the destination -file system is ODS5, and to convert the names to ODS2-compatible names -when the destination file system is ODS2. - -Beginning in UnZip 6.0, ODS2-compatible names are explicitly set to -upper case. - /OVERWRITE /OVERWRITE /NOOVERWRITE -See /EXISTING. +The qualifier /OVERWRITE forces overwriting of existing files when extracting. +The negation /NOOVERWRITE results in never overwriting an existing file. +The default action is to prompt for desired action when about to +overwrite an existing file. -/OVERWRITE is equivalent to /EXISTING = NEW_VERSION. - -/NOOVERWRITE is equivalent to /EXISTING = NOEXTRACT. +For VMS, "overwriting" results in the creation of a new version of the file, +unless version numbers are stored in the archive and /VERSION is specified. /PAGE @@ -362,31 +295,11 @@ /RESTORE -/RESTORE[=(KEYWORD, ...)] +/RESTORE + +/NORESTORE -Selects restoration options for some meta-data. -The optional keywords recognized are: - -| OWNER_PROT Restore file owner and ACL protection settings. -| NOOWNER_PROT Do not restore file owner and ACL protection settings. -| NODATE Do not restore any timestamps. -| DATE=ALL Restore timestamps for all extracted entries, files -| and directories. -| DATE=FILES Restore timestamps for extracted files. (default) - - -By default, VMS UnZip restores the original date-time attributes for files, -but not for directories. This agrees with the behavior of VMS BACKUP -(and UnZip versions before 5.52 where the capability to restore directory -timestamps was added). - -For compatibility with UnZip versions before 6.0 (5.53), the following -obsolete short forms are still accepted: - -| Obsolete form: Modern form: -| /RESTORE /RESTORE = OWNER_PROT -| /NORESTORE /RESTORE = NOOWNER_PROT - +Restore file owner and protection settings. /SCREEN @@ -406,7 +319,7 @@ /TEXT -/TEXT[=(KEYWORD, ...)] +/TEXT[=KEYWORD] /NOTEXT (default) @@ -417,8 +330,6 @@ | than "binary") in standard VMS text file format. (default) | ALL Extracts all files in standard VMS text file format. | NONE Same as /NOTEXT. -| STMLF Use Stream_LF record format for text files (instead of the -| default variable-length record format). A similar functionality is available for binary files, see qualifier /BINARY. @@ -473,68 +384,90 @@ VMS on-line help ported from UNZIP.TXT by Hunter Goatley. -Exit_Status +Exit_Codes + +On VMS, UnZip's UNIX style exit values are mapped into proper +VMS status codes: + +| 1 (success) normal exit, +| (0x7fff0000 + 16*UnZip_errnum) -W- warnings +| (0x7fff0002 + 16*UnZip_errnum) -E- normal errors +| (0x7fff0004 + 16*UnZip_errnum) -F- fatal errors + -On VMS, UnZip's UNIX-style exit values are mapped into VMS-style status -codes with facility code 1954 = %x7A2, and with the inhibit-message -(%x10000000) and facility-specific (%x00008000) bits set: - -| %x17A28001 normal exit -| %x17A28000 + 16*UnZip_error_code warnings -| %x17A28002 + 16*UnZip_error_code normal errors -| %x17A28004 + 16*UnZip_error_code fatal errors - - -Note that multiplying the UNIX-style UnZip error code by 16 places it -conveniently in the hexadecimal representation of the VMS exit code, -"__" in %x17A28__s, where "s" is the severity code. For example, a -missing archive might cause UnZip error code 9, which would be -transformed into the VMS exit status %X17A28092. - -The UnZip VMS exit codes include severity values which approximate those -defined by PKWARE, as shown in the following table: - -| VMS UnZip err -| severity code Error description -| ----------+---------+---------------------------------------------- -| Success 0 Normal. No errors or warnings detected. -| Warning 1 One or more warnings were encountered, but -| processing completed successfully anyway. -| This includes archives where one or more -| (but not all) files were skipped because of -| unsupported compress or encrypt methods, or -| bad passwords. -| Error 2 Error in the archive format. Processing may -| have completed successfully anyway. Some -| defects in archives (made by other programs) -| can be repaired transparently. -| Fatal 3 Severe error in the archive format. Process- -| ing probably failed immediately. -| Fatal 4 Memory allocation failed in program initial- -| ization. -| Fatal 5 Memory allocation failed in password pro- -| cessing. -| Fatal 6 Memory allocation failed while decompressing -| to disk. -| Fatal 7 Memory allocation failed while decompressing -| in memory. -| Fatal 8 Memory allocation failed (reserved for -| future use). -| Error 9 Specified archive files were not found. -| Error 10 Invalid command-line options or parameters. -| Error 11 No files matched selection criteria. -| Fatal 50 Disk full. -| Fatal 51 Unexpected end-of-file while reading the -| archive. -| Error 80 User interrupt (Ctrl/C). -| Error 81 No files were processed, because of unsup- -| ported compress or encrypt methods. -| Error 82 No files were processed, because of bad -| password(s). -| Fatal 83 Large-file archive could not be processed by -| this small-file program. +The UnZip error level (or exit code) approximates the exit +codes defined by PKWARE and takes on the following values: + +| VMS UnZip Type of error +| severity errcode +| - 0 normal; no errors or warnings detected. +| +| W 1 one or more warning errors were encountered, +| but processing completed successfully any- +| way. This includes zipfiles where one or +| more files was skipped due to unsupported +| compression method or encryption with an +| unknown password. +| +| E 2 a generic error in the zipfile format was +| detected. Processing may have completed +| successfully anyway; some broken zipfiles +| created by other archivers have simple work- +| arounds. +| +| F 3 a severe error in the zipfile format was +| detected. Processing probably failed imme- +| diately. +| +| F 4 unzip was unable to allocate memory for one +| or more buffers during program initializa- +| tion. +| +| F 5 unzip was unable to allocate memory or +| unable to obtain a tty to read the decryp- +| tion password(s). +| +| F 6 unzip was unable to allocate memory during +| decompression to disk. +| +| F 7 unzip was unable to allocate memory during +| in-memory decompression. +| +| F 8 [currently not used] +| +| E 9 the specified zipfiles were not found. +| +| E 10 invalid options were specified on the com- +| mand line. +| +| E 11 no matching files were found. +| +| F 50 the disk is (or was) full during extraction. +| +| F 51 the end of the ZIP archive was encountered +| prematurely. +| +| E 80 the user aborted unzip prematurely with con- +| trol-C (or similar) +| +| E 81 no files were found due to unsupported com- +| pression methods or unsupported decryption. +| (If even one additional file is successfully +| processed, however, the exit status is 1.) +| +| E 82 no files were found due to bad decryption +| password(s). This is also the exit status +| if no files were found due to a combination +| of unsupported compression and bad pass- +| words. As in the previous case, however, a +| single successful file will result in an +| exit status of 1 instead.) +In addition, there is a compilation option to expand upon this behavior: +An executable compiled with the option RETURN_CODES defined displays +a human-readable explanation of what the error status means. + UNIX_Options @@ -555,30 +488,25 @@ | -z display only the archive comment | |MODIFIERS -| -a extract text files in standard VMS text file format +| -a auto-extract only text files in standard VMS text file format | -aa extract all files as text -| -b auto-extract only binary files in fixed 512-byte record format -| -bb extract all files as binary in fixed 512-byte record format +| -b auto-extract only binary files in VMS fixed 512 bytes records +| -bb extract all files as binary VMS fixed 512 byte record files | -j junk paths (don't recreate archive's directory structure) -| -n never overwrite or make a new version of an existing file -| -o always make a new version (-oo: overwrite orig) existing file +| -n never overwrite existing files; don't prompt +| -o OK to overwrite files without prompting | -q perform operations quietly (-qq => even quieter) | -C match filenames case-insensitively -| -D do not restore any timestamps (--D restore them even for dirs) -| -L convert filenames to lowercase if created under DOS, VMS, etc. -| -M feed screen output through built-in "more" pager -| -P supply decryption password on the cmd line (insecure!) -| -S use Stream_LF record format to extract text files (with -a[a]) +| -L convert filenames to lowercase if created on MSDOS, VMS, etc. +| -P supply decryption password on the command line (insecure!) +| -M page output through built-in "more" function | -V retain (VMS) file version numbers -| -X restore owner/ACL protection info (may require privileges) -| -Y treat ".nnn" suffix as version number ("a.b.3" -> "a.b;3") -| -: allow "../" path components to traverse across top extract dir -| -2 force creation of ODS2-compatible file names +| -X restore owner/protection info (may require privileges) +| -: allow "../" path components that traverse across extract dir root -Note that uppercase options such as -C, -D, -L, -M, -P, -S, -T, -V, -X, -Y, -and -Z must be specified in quotes (unless SET PROC/PARSE=EXTEND is set). -For example: +Note that uppercase options such as -C, -L, -M, -P, -T, -V, -X and -Z +must be specified in quotes. For example: | $ unzip "-VX" -a zipfile diff -Nru unzip-6.0/vms/unzip_def.rnh unzip-6.0/vms/unzip_def.rnh --- unzip-6.0/vms/unzip_def.rnh 2009-01-18 16:56:56.000000000 +0000 +++ unzip-6.0/vms/unzip_def.rnh 2010-05-14 07:26:14.000000000 +0000 @@ -49,11 +49,6 @@ .! Added description for new -: traverse dirs option. .! 02-008 Christian Spieler 29-JAN-2005 01:50 .! Added description for the -T "set archive timestamp" option. -.! 02-009 Christian Spieler 04-MAR-2007 14:37 -.! Added description for the -S "Stream-LF text files" option; -.! updated the documentation of the VMS exit codes. -.! 02-010 S. Schweda, C. Spieler 28-Dec-2007 21:28 -.! Added description for the -D "timestamp restoration" option. .! .noflags .lm4 .rm72 @@ -75,7 +70,7 @@ specify a subset of the archive members. Format: .sk;.lm+1;.literal -UNZIP [-cfhlptTuvxz[ajnoqCDLMSVXY:2]] file[.zip] [list] [-x xlist] [-d out_dir] +UNZIP [-cfhlptTuvxz[ajnoqCLMVX]] file[.zip] [list] [-x xlist] [-d out_dir] .end literal;.lm-1 .!------------------------------------------------------------------------------ .indent -4 @@ -143,32 +138,27 @@ MODIFIERS -a extract text files in standard VMS text file format -aa extract all files as text - -b auto-extract only binary files in fixed 512-byte record format - -bb extract all files as binary in fixed 512-byte record format + -b auto-extract only binary files in VMS fixed 512-byte record format + -bb extract all files as binary in VMS fixed 512-byte record format -j junk paths (don't recreate archive's directory structure) - -n never overwrite or make a new version of an existing file - -o always make a new version (-oo: overwrite orig) existing file + -n never overwrite existing files; don't prompt + -o OK to overwrite files without prompting -q perform operations quietly (-qq => even quieter) -C match filenames case-insensitively - -D do not restore any timestamps (--D restore them even for dirs) -L convert filenames to lowercase if created under DOS, VMS, etc. -M feed screen output through built-in "more" pager - -P supply decryption password on the cmd line (insecure!) - -S use Stream_LF record format to extract text files (with -a[a]) + -P supply decryption password on the command line (insecure!) -V retain (VMS) file version numbers - -X restore owner/ACL protection info (may require privileges) - -Y treat ".nnn" suffix as version number ("a.b.3" -> "a.b;3") - -: allow "../" path components to traverse across top extract dir - -2 force creation of ODS2-compatible file names -.end literal;.sk -Note that uppercase options (-C, -D, -L, -M, -P, -S, -T, -V, -X, -Y, and --Z) must be specified in quotes (unless SET PROC/PARSE=EXTEND is set). -For example: + -X restore owner/protection info (may require privileges) + -: allow "../" path components that traverse across extract dir root +.end literal;.sk +Note that uppercase options (-C, -L, -M, -P, -T, -V and -X) must be +specified in quotes. For example: .sk;.literal unzip "-VX" -a zipfile .end literal;.sk When extracting to SYS$OUTPUT (-c or -p options) redirected to a file, -you may want to override the default text file conversion by specifying +you may want to override the default text file converion by specifying the -b option. A single "-b" option switches to "binary piping" mode for Zip entries marked as non-text, only. To force "binary piping" mode even for Zip file entries marked as text, the "-bb" option should be used. @@ -182,81 +172,93 @@ that -bba (-bb -a) has the same effect as -ba (-b -a), and -aa overrides binary conversion for ALL files. .sk -The conversion option -S is only effective when used together with --a or -aa. When specified, "text" files are written in Stream-LF record -format instead of the VMS default of Variable-Length record format. -(When no conversion options are specified, all non-VMS entries are always -written as Stream-LF files.) -.sk Please note that using the "-P" option is higly insecure, the plaintext password may be seen by others. For this reason (and because of lack of space), the "-P" option is not advertised on UnZip's online help screen. .!------------------------------------------------------------------------------ .indent -4 -2 Exit_Status +2 Exit_Codes .br -On VMS, UnZip's UNIX-style exit values are mapped into VMS-style status -codes with facility code 1954 = %x7A2, and with the inhibit-message -(%x10000000) and facility-specific (%x00008000) bits set: -.sk -.literal - %x17A28001 normal exit - %x17A28000 + 16*UnZip_error_code warnings - %x17A28002 + 16*UnZip_error_code normal errors - %x17A28004 + 16*UnZip_error_code fatal errors -.end literal -.sk -Note that multiplying the UNIX-style UnZip error code by 16 places it -conveniently in the hexadecimal representation of the VMS exit code, -"__" in %x17A28__s, where "s" is the severity code. For example, a -missing archive might cause UnZip error code 9, which would be -transformed into the VMS exit status %X17A28092. -.sk -The UnZip VMS exit codes include severity values which approximate those -defined by PKWARE, as shown in the following table: -.literal +On VMS, UnZip's UNIX style exit values are mapped into proper +VMS status codes: +.sk;.literal + 1 (success) normal exit, + (0x7fff0000 + 16*UnZip_errnum) -W- warnings + (0x7fff0002 + 16*UnZip_errnum) -E- normal errors + (0x7fff0004 + 16*UnZip_errnum) -F- fatal errors +.end literal;.sk +The UnZip error level (or exit code) approximates the exit +codes defined by PKWARE and takes on the following values: +.sk;.literal + VMS UnZip Type of error + severity errcode + - 0 normal; no errors or warnings detected. - VMS UnZip err - severity code Error description - ----------+---------+---------------------------------------------- - Success 0 Normal. No errors or warnings detected. - Warning 1 One or more warnings were encountered, but - processing completed successfully anyway. - This includes archives where one or more - (but not all) files were skipped because of - unsupported compress or encrypt methods, or - bad passwords. - Error 2 Error in the archive format. Processing may - have completed successfully anyway. Some - defects in archives (made by other programs) - can be repaired transparently. - Fatal 3 Severe error in the archive format. Process- - ing probably failed immediately. - Fatal 4 Memory allocation failed in program initial- - ization. - Fatal 5 Memory allocation failed in password pro- - cessing. - Fatal 6 Memory allocation failed while decompressing - to disk. - Fatal 7 Memory allocation failed while decompressing - in memory. - Fatal 8 Memory allocation failed (reserved for - future use). - Error 9 Specified archive files were not found. - Error 10 Invalid command-line options or parameters. - Error 11 No files matched selection criteria. - Fatal 50 Disk full. - Fatal 51 Unexpected end-of-file while reading the - archive. - Error 80 User interrupt (Ctrl/C). - Error 81 No files were processed, because of unsup- - ported compress or encrypt methods. - Error 82 No files were processed, because of bad - password(s). - Fatal 83 Large-file archive could not be processed by - this small-file program. -.end literal + W 1 one or more warning errors were encountered, + but processing completed successfully any- + way. This includes zipfiles where one or + more files was skipped due to unsupported + compression method or encryption with an + unknown password. + + E 2 a generic error in the zipfile format was + detected. Processing may have completed + successfully anyway; some broken zipfiles + created by other archivers have simple work- + arounds. + + F 3 a severe error in the zipfile format was + detected. Processing probably failed imme- + diately. + + F 4 unzip was unable to allocate memory for one + or more buffers during program initializa- + tion. + + F 5 unzip was unable to allocate memory or + unable to obtain a tty to read the decryp- + tion password(s). + + F 6 unzip was unable to allocate memory during + decompression to disk. + + F 7 unzip was unable to allocate memory during + in-memory decompression. + + F 8 [currently not used] + + E 9 the specified zipfiles were not found. + + E 10 invalid options were specified on the com- + mand line. + + E 11 no matching files were found. + + F 50 the disk is (or was) full during extraction. + + F 51 the end of the ZIP archive was encountered + prematurely. + + E 80 the user aborted unzip prematurely with con- + trol-C (or similar) + + E 81 no files were found due to unsupported com- + pression methods or unsupported decryption. + (If even one additional file is successfully + processed, however, the exit status is 1.) + + E 82 no files were found due to bad decryption + password(s). This is also the exit status + if no files were found due to a combination + of unsupported compression and bad pass- + words. As in the previous case, however, a + single successful file will result in an + exit status of 1 instead.) +.end literal;.sk +In addition, there is a compilation option to expand upon this behavior: +An executable compiled with the option RETURN_CODES defined displays +a human-readable explanation of what the error status means. .!------------------------------------------------------------------------------ .indent -4 2 Logical_Names diff -Nru unzip-6.0/vms/unzip.opt unzip-6.0/vms/unzip.opt --- unzip-6.0/vms/unzip.opt 2005-02-26 20:23:20.000000000 +0000 +++ unzip-6.0/vms/unzip.opt 2010-05-14 07:26:14.000000000 +0000 @@ -1 +1 @@ -Ident = "UnZip 6.0" +Ident = "UnZip 5.52" diff -Nru unzip-6.0/vms/unzipsfx.opt unzip-6.0/vms/unzipsfx.opt --- unzip-6.0/vms/unzipsfx.opt 2005-02-26 20:23:30.000000000 +0000 +++ unzip-6.0/vms/unzipsfx.opt 2010-05-14 07:26:14.000000000 +0000 @@ -1 +1 @@ -Ident = "UnZipSFX 6.0" +Ident = "UnZipSFX 5.52" diff -Nru unzip-6.0/vms/vms.c unzip-6.0/vms/vms.c --- unzip-6.0/vms/vms.c 2009-03-01 19:25:00.000000000 +0000 +++ unzip-6.0/vms/vms.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -20,11 +20,8 @@ find_vms_attrs() flush() close_outfile() - defer_dir_attribs() - set_direc_attribs() dos_to_unix_time() (TIMESTAMP only) stamp_file() (TIMESTAMP only) - vms_msg_text() do_wild() mapattr() mapname() @@ -42,7 +39,6 @@ #define UNZIP_INTERNAL #include "unzip.h" -#include "crc32.h" #include "vms.h" #include "vmsdefs.h" @@ -51,20 +47,8 @@ #endif #include -#include -#include -#include - -/* Workaround for broken header files of older DECC distributions - * that are incompatible with the /NAMES=AS_IS qualifier. */ -#define lib$getdvi LIB$GETDVI -#define lib$getsyi LIB$GETSYI -#define lib$sys_getmsg LIB$SYS_GETMSG #include - -#ifndef EEXIST -# include /* For mkdir() status codes */ -#endif +#include /* On VAX, define Goofy VAX Type-Cast to obviate /standard = vaxc. Otherwise, lame system headers on VAX cause compiler warnings. @@ -98,70 +82,29 @@ #define BUFSALLOC (BUFS512 * 2 > BUFSMAXREC ? BUFS512 * 2 : BUFSMAXREC) /* locbuf size */ -/* VMS success or warning status */ -#define OK(s) (((s) & STS$M_SUCCESS) != 0) -#define STRICMP(s1, s2) STRNICMP(s1, s2, 2147483647) - -/* Interactive inquiry response codes for replace(). */ - -#define REPL_NO_EXTRACT 0 -#define REPL_NEW_VERSION 1 -#define REPL_OVERWRITE 2 -#define REPL_ERRLV_WARN 256 -#define REPL_TASKMASK 255 - -/* 2008-09-13 CS. - * Note: In extract.c, there are similar strings "InvalidResponse" and - * "AssumeNone" defined. However, as the UI functionality of the VMS - * "version-aware" query is slightly different from the generic variant, - * these strings are kept separate for now to allow independent - * "fine tuning" without affecting the other variant of the - * "overwrite or ..." user query. - */ -ZCONST char Far InvalidResponse[] = - "error: invalid response [%.1s]\n"; -ZCONST char Far AssumeNo[] = - "\n(EOF or read error, treating as \"[N]o extract (all)\" ...)\n"; - - -#ifdef SET_DIR_ATTRIB -/* Structure for holding directory attribute data for final processing - * after all files are in place. - */ -typedef struct vmsdirattr { - struct vmsdirattr *next; /* link to next in (linked) list */ - char *fn; /* file (directory) name */ - - /* Non-VMS attributes data */ - ulg mod_dos_datetime; /* G.lrec.last_mod_dos_datetime */ - unsigned perms; /* same as min_info.file_attr */ - - unsigned xlen; /* G.lrec.extra_field_length */ - char buf[1]; /* data buffer (extra_field, fn) */ -} vmsdirattr; -#define VmsAtt(d) ((vmsdirattr *)d) /* typecast shortcut */ -#endif /* SET_DIR_ATTRIB */ +#define OK(s) ((s)&1) /* VMS success or warning status */ +#define STRICMP(s1,s2) STRNICMP(s1,s2,2147483647) /* * Local static storage */ -static struct FAB fileblk; /* File Access Block */ -static struct XABDAT dattim; /* date-time XAB */ -static struct XABRDT rdt; /* revision date-time XAB */ -static struct RAB rab; /* Record Access Block */ -static struct NAM_STRUCT nam; /* name block */ +static struct FAB fileblk; +static struct XABDAT dattim; +static struct XABRDT rdt; +static struct RAB rab; +static struct NAM nam; static struct FAB *outfab = NULL; static struct RAB *outrab = NULL; -static struct XABFHC *xabfhc = NULL; /* file header characteristics */ -static struct XABDAT *xabdat = NULL; /* date-time */ -static struct XABRDT *xabrdt = NULL; /* revision date-time */ -static struct XABPRO *xabpro = NULL; /* protection */ -static struct XABKEY *xabkey = NULL; /* key (indexed) */ -static struct XABALL *xaball = NULL; /* allocation */ +static struct XABFHC *xabfhc = NULL; +static struct XABDAT *xabdat = NULL; +static struct XABRDT *xabrdt = NULL; +static struct XABPRO *xabpro = NULL; +static struct XABKEY *xabkey = NULL; +static struct XABALL *xaball = NULL; static struct XAB *first_xab = NULL, *last_xab = NULL; -static int replace_code_all = -1; /* All-file response for replace(). */ +static char query = '\0'; static uch rfm; @@ -179,148 +122,39 @@ static struct bufdsc b1, b2, *curbuf; /* buffer ring for asynchronous I/O */ -static int _flush_blocks(__GPRO__ uch *rawbuf, unsigned size, int final_flag); -static int _flush_stream(__GPRO__ uch *rawbuf, unsigned size, int final_flag); -static int _flush_varlen(__GPRO__ uch *rawbuf, unsigned size, int final_flag); -static int _flush_qio(__GPRO__ uch *rawbuf, unsigned size, int final_flag); -static int _close_rms(__GPRO); -static int _close_qio(__GPRO); +static int _flush_blocks(__GPRO__ uch *rawbuf, unsigned size, int final_flag), + _flush_stream(__GPRO__ uch *rawbuf, unsigned size, int final_flag), + _flush_varlen(__GPRO__ uch *rawbuf, unsigned size, int final_flag), + _flush_qio(__GPRO__ uch *rawbuf, unsigned size, int final_flag), + _close_rms(__GPRO), + _close_qio(__GPRO), #ifdef ASYNCH_QIO -static int WriteQIO(__GPRO__ uch *buf, unsigned len); + WriteQIO(__GPRO__ uch *buf, unsigned len), #endif -static int WriteBuffer(__GPRO__ uch *buf, unsigned len); -static int WriteRecord(__GPRO__ uch *rec, unsigned len); + WriteBuffer(__GPRO__ uch *buf, unsigned len), + WriteRecord(__GPRO__ uch *rec, unsigned len); static int (*_flush_routine)(__GPRO__ uch *rawbuf, unsigned size, - int final_flag); -static int (*_close_routine)(__GPRO); - -#ifdef SYMLINKS -static int _read_link_rms(__GPRO__ int byte_count, char *link_text_buf); -#endif /* SYMLINKS */ + int final_flag), + (*_close_routine)(__GPRO); static void init_buf_ring(void); static void set_default_datetime_XABs(__GPRO); -static int create_default_output(__GPRO); -static int create_rms_output(__GPRO); -static int create_qio_output(__GPRO); +static int create_default_output(__GPRO), + create_rms_output(__GPRO), + create_qio_output(__GPRO); static int replace(__GPRO); -static int replace_rms_newversion(__GPRO); -static int replace_rms_overwrite(__GPRO); -static int find_vms_attrs(__GPRO__ int set_date_time); +static int find_vms_attrs(__GPRO); static void free_up(void); #ifdef CHECK_VERSIONS static int get_vms_version(char *verbuf, int len); #endif /* CHECK_VERSIONS */ -static unsigned find_eol(ZCONST uch *p, unsigned n, unsigned *l); -#ifdef SET_DIR_ATTRIB -static char *vms_path_fixdown(ZCONST char *dir_spec, char *dir_file); -#endif +static unsigned find_eol(uch *p, unsigned n, unsigned *l); #ifdef TIMESTAMP static time_t mkgmtime(struct tm *tm); static void uxtime2vmstime(time_t utimeval, long int binval[2]); #endif /* TIMESTAMP */ -static int vms_msg_fetch(int status); -static void vms_msg(__GPRO__ ZCONST char *string, int status); - - -/* - 2005-02-14 SMS. - Added some ODS5 support: - Use longer name structures in NAML, where available. - Locate special characters mindful of "^" escapes. -*/ - -/* Hex digit table. */ - -char hex_digit[16] = { - '0', '1', '2', '3', '4', '5', '6', '7', - '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' -}; - - -/* Character property table for converting Zip file names to - (simpler) ODS2 or (escaped) ODS5 extended file names. - - ODS2 valid characters: 0-9 A-Z a-z $ - _ - - ODS5 Invalid characters: - C0 control codes (0x00 to 0x1F inclusive) - Asterisk (*) - Question mark (?) - - ODS5 Invalid characters only in VMS V7.2 (which no one runs, right?): - Double quotation marks (") - Backslash (\) - Colon (:) - Left angle bracket (<) - Right angle bracket (>) - Slash (/) - Vertical bar (|) - - Characters escaped by "^": - SP ! " # % & ' ( ) + , . : ; = - @ [ \ ] ^ ` { | } ~ - - Either "^_" or "^ " is accepted as a space. Period (.) is a special - case. Note that un-escaped < and > can also confuse a directory - spec. - - Characters put out as ^xx: - 7F (DEL) - 80-9F (C1 control characters) - A0 (nonbreaking space) - FF (Latin small letter y diaeresis) - - Other cases: - Unicode: "^Uxxxx", where "xxxx" is four hex digits. - - Property table values: - Normal ODS2 1 - Lower-case ODS2 2 - Period 4 - Space 8 - ODS5 simple 16 - ODS5 1-char escape 32 - ODS5 hex-hex escape 64 -*/ - -unsigned char char_prop[256] = { - -/* NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -/* DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -/* SP ! " # $ % & ' ( ) * + , - . / */ - 8, 32, 32, 32, 17, 32, 32, 32, 32, 32, 0, 32, 32, 17, 4, 0, - -/* 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */ - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 32, 32, 32, 32, 32, 32, - -/* @ A B C D E F G H I J K L M N O */ - 32, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - -/* P Q R S T U V W X Y Z [ \ ] ^ _ */ - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 32, 32, 32, 32, 17, - -/* ` a b c d e f g h i j k l m n o */ - 32, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - -/* p q r s t u v w x y z { | } ~ DEL */ - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 32, 32, 32, 32, 64, - - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 64 -}; - +static void vms_msg(__GPRO__ char *string, int status); /* 2004-11-23 SMS. * @@ -334,7 +168,7 @@ * rab$b_mbf multi-buffer count (used with rah and wbh). */ -#define DIAG_FLAG (uO.vflag >= 3) +#define DIAG_FLAG (uO.vflag >= 2) /* Default RMS parameter values. * The default extend quantity (deq) should not matter much here, as the @@ -412,7 +246,7 @@ /* Get process RMS_DEFAULT values. */ sts = sys$getjpiw(0, 0, 0, &jpi_itm_lst, 0, 0, 0); - if ((sts & STS$M_SEVERITY) != STS$K_SUCCESS) + if ((sts& STS$M_SEVERITY) != STS$M_SUCCESS) { /* Failed. Don't try again. */ rms_defaults_known = -1; @@ -470,33 +304,17 @@ __GDEF { int rtype; - int sts; struct FAB fab; -#ifdef NAML$C_MAXRSS - struct NAML nam; -#endif - - fab = cc$rms_fab; /* Initialize FAB. */ -#ifdef NAML$C_MAXRSS + fab = cc$rms_fab; + fab.fab$l_fna = G.zipfn; + fab.fab$b_fns = strlen(G.zipfn); - nam = cc$rms_naml; /* Initialize NAML. */ - fab.fab$l_naml = &nam; /* Point FAB to NAML. */ - - fab.fab$l_dna = (char *) -1; /* Using NAML for default name. */ - fab.fab$l_fna = (char *) -1; /* Using NAML for file name. */ - -#endif /* NAML$C_MAXRSS */ - - FAB_OR_NAML(fab, nam).FAB_OR_NAML_FNA = G.zipfn; - FAB_OR_NAML(fab, nam).FAB_OR_NAML_FNS = strlen(G.zipfn); - - if (ERR(sts = sys$open(&fab))) + if ((sys$open(&fab) & 1) == 0) { Info(slide, 1, ((char *)slide, "\n\ - error: cannot open zipfile [ %s ].\n", + error: cannot open zipfile [ %s ] (access denied?).\n\n", FnFilter1(G.zipfn))); - vms_msg(__G__ " sys$open() error: ", sts); return PK_ERR; } rtype = fab.fab$b_rfm; @@ -554,13 +372,7 @@ * (simplified, for complete expression see create_default_output() code) */ -/* The VMS version of open_outfile() supports special return codes: - * OPENOUT_OK a file has been opened normally - * OPENOUT_FAILED the file open process failed - * OPENOUT_SKIPOK file open skipped at user request, err level OK - * OPENOUT_SKIPWARN file open skipped at user request, err level WARN - */ -int open_outfile(__G) +int open_outfile(__G) /* return 1 (PK_WARN) if fail */ __GDEF { /* Get process RMS_DEFAULT values, if not already done. */ @@ -569,7 +381,7 @@ get_rms_defaults(); } - switch (find_vms_attrs(__G__ (uO.D_flag <= 1))) + switch (find_vms_attrs(__G)) { case VAT_NONE: default: @@ -658,110 +470,77 @@ dattim = cc$rms_xabdat; /* fill XABs with default values */ rdt = cc$rms_xabrdt; - sprintf(timbuf, "%02u-%3s-%04u %02u:%02u:%02u.00", - dy, month[mo], yr, hh, mm, ss); + sprintf(timbuf, "%02u-%3s-%04u %02u:%02u:%02u.00", dy, month[mo], + yr, hh, mm, ss); sys$bintim(&date_str, &dattim.xab$q_cdt); memcpy(&rdt.xab$q_rdt, &dattim.xab$q_cdt, sizeof(rdt.xab$q_rdt)); } -/* The following return codes are supported: - * OPENOUT_OK a file has been opened normally - * OPENOUT_FAILED the file open process failed - * OPENOUT_SKIPOK file open skipped at user request, err level OK - * OPENOUT_SKIPWARN file open skipped at user request, err level WARN - */ -static int create_default_output(__GPRO) +static int create_default_output(__GPRO) /* return 1 (PK_WARN) if fail */ { int ierr; int text_output, bin_fixed; - /* Extract the file in text format (Variable_length by default, - * Stream_LF with "-S" (/TEXT = STMLF), when - * a) explicitly requested by the user (through the -a option), - * and it is not a symbolic link, - * or - * b) piping to SYS$OUTPUT, unless "binary" piping was requested - * by the user (through the -b option). + /* extract the file in text (variable-length) format, when + * a) explicitely requested by the user (through the -a option) + * or + * b) piping to SYS$OUTPUT, unless "binary" piping was requested + * by the user (through the -b option) */ - text_output = (G.pInfo->textmode -#ifdef SYMLINKS - && !G.symlnk -#endif - ) || + text_output = G.pInfo->textmode || (uO.cflag && (!uO.bflag || (!(uO.bflag - 1) && G.pInfo->textfile))); - /* Use fixed length 512 byte record format for disk file when - * a) explicitly requested by the user (-b option), - * and - * b) it is not a symbolic link, - * and - * c) it is not extracted in text mode. + /* use fixed length 512 byte record format for disk file when + * a) explicitly requested by the user (-b option) + * and + * b) entry is not extracted in text mode */ bin_fixed = !text_output && -#ifdef SYMLINKS - !G.symlnk && -#endif (uO.bflag != 0) && ((uO.bflag != 1) || !G.pInfo->textfile); rfm = FAB$C_STMLF; /* Default, stream-LF format from VMS or UNIX */ if (!uO.cflag) /* Redirect output */ { - rab = cc$rms_rab; /* Initialize RAB. */ - fileblk = cc$rms_fab; /* Initialize FAB. */ + rab = cc$rms_rab; /* fill RAB with default values */ + fileblk = cc$rms_fab; /* fill FAB with default values */ - fileblk.fab$l_xab = NULL; /* No XABs. */ - rab.rab$l_fab = &fileblk; /* Point RAB to FAB. */ + outfab = &fileblk; + outfab->fab$l_xab = NULL; - outfab = &fileblk; /* Set pointers used elsewhere. */ outrab = &rab; + rab.rab$l_fab = outfab; - if (text_output && (!uO.S_flag)) + if (text_output) { /* Default format for output `real' text file */ - fileblk.fab$b_rfm = FAB$C_VAR; /* variable length records */ - fileblk.fab$b_rat = FAB$M_CR; /* implied (CR) carriage ctrl */ + + outfab->fab$b_rfm = FAB$C_VAR; /* variable length records */ + outfab->fab$b_rat = FAB$M_CR; /* implied (CR) carriage ctrl */ } else if (bin_fixed) { /* Default format for output `real' binary file */ - fileblk.fab$b_rfm = FAB$C_FIX; /* fixed length records */ - fileblk.fab$w_mrs = 512; /* record size 512 bytes */ - fileblk.fab$b_rat = 0; /* no carriage ctrl */ + + outfab->fab$b_rfm = FAB$C_FIX; /* fixed length record format */ + outfab->fab$w_mrs = 512; /* record size 512 bytes */ + outfab->fab$b_rat = 0; /* no carriage ctrl */ } else { /* Default format for output misc (bin or text) file */ - fileblk.fab$b_rfm = FAB$C_STMLF; /* stream-LF record format */ - fileblk.fab$b_rat = FAB$M_CR; /* implied (CR) carriage ctrl */ - } - -#ifdef NAML$C_MAXRSS - - nam = CC_RMS_NAM; /* Initialize NAML. */ - fileblk.FAB_NAM = &nam; /* Point FAB to NAML. */ - fileblk.fab$l_dna = (char *) -1; /* Using NAML for default name. */ - fileblk.fab$l_fna = (char *) -1; /* Using NAML for file name. */ - -#endif /* NAML$C_MAXRSS */ + outfab->fab$b_rfm = FAB$C_STMLF; /* stream-LF record format */ + outfab->fab$b_rat = FAB$M_CR; /* implied (CR) carriage ctrl */ + } - FAB_OR_NAML(fileblk, nam).FAB_OR_NAML_FNA = G.filename; - FAB_OR_NAML(fileblk, nam).FAB_OR_NAML_FNS = strlen(G.filename); + outfab->fab$l_fna = G.filename; + outfab->fab$b_fns = strlen(outfab->fab$l_fna); - /* Prepare date-time XABs, unless user requests not to. */ - if (uO.D_flag <= 1) { - set_default_datetime_XABs(__G); - dattim.xab$l_nxt = fileblk.fab$l_xab; - fileblk.fab$l_xab = (void *) &dattim; - } + set_default_datetime_XABs(__G); + dattim.xab$l_nxt = outfab->fab$l_xab; + outfab->fab$l_xab = (void *) &dattim; -/* 2005-02-14 SMS. What does this mean? ----vvvvvvvvvvvvvvvvvvvvvvvvvvv */ - fileblk.fab$w_ifi = 0; /* Clear IFI. It may be nonzero after ZIP */ - fileblk.fab$b_fac = FAB$M_BRO | FAB$M_PUT; /* {block|record} output */ -#ifdef SYMLINKS - if (G.symlnk) - /* Symlink file is read back to retrieve the link text. */ - fileblk.fab$b_fac |= FAB$M_GET; -#endif + outfab->fab$w_ifi = 0; /* Clear IFI. It may be nonzero after ZIP */ + outfab->fab$b_fac = FAB$M_BRO | FAB$M_PUT; /* {block|record} output */ /* 2004-11-23 SMS. * If RMS_DEFAULT values have been determined, and have not been @@ -781,19 +560,19 @@ if (rms_defaults_known > 0) { /* Set the FAB/RAB parameters accordingly. */ - fileblk.fab$w_deq = rms_ext_active; - rab.rab$b_mbc = rms_mbc_active; - rab.rab$b_mbf = rms_mbf_active; + outfab-> fab$w_deq = rms_ext_active; + outrab-> rab$b_mbc = rms_mbc_active; + outrab-> rab$b_mbf = rms_mbf_active; #ifdef OLD_FABDEF /* Truncate at EOF on close, as we may over-extend. */ - fileblk.fab$l_fop |= FAB$M_TEF ; + outfab-> fab$l_fop |= FAB$M_TEF ; /* If using multiple buffers, enable write-behind. */ if (rms_mbf_active > 1) { - rab.rab$l_rop |= RAB$M_WBH; + outrab-> rab$l_rop |= RAB$M_WBH; } } @@ -803,18 +582,18 @@ * enabled, allocating space for a large file may lock the * disk for a long time (minutes). */ - fileblk.fab$l_alq = (unsigned) (G.lrec.ucsize+ 511)/ 512; - fileblk.fab$l_fop |= FAB$M_SQO; + outfab-> fab$l_alq = (unsigned) (G.lrec.ucsize+ 511)/ 512; + outfab-> fab$l_fop |= FAB$M_SQO; #else /* !OLD_FABDEF */ /* Truncate at EOF on close, as we may over-extend. */ - fileblk.fab$v_tef = 1; + outfab-> fab$v_tef = 1; /* If using multiple buffers, enable write-behind. */ if (rms_mbf_active > 1) { - rab.rab$v_wbh = 1; + outrab-> rab$v_wbh = 1; } } @@ -824,46 +603,27 @@ * enabled, allocating space for a large file may lock the * disk for a long time (minutes). */ - fileblk.fab$l_alq = (unsigned) (G.lrec.ucsize+ 511)/ 512; - fileblk.fab$v_sqo = 1; + outfab-> fab$l_alq = (unsigned) (G.lrec.ucsize+ 511)/ 512; + outfab-> fab$v_sqo = 1; #endif /* ?OLD_FABDEF */ ierr = sys$create(outfab); if (ierr == RMS$_FEX) - { - /* File exists. - * Consider command-line options, or ask the user what to do. - */ ierr = replace(__G); - switch (ierr & REPL_TASKMASK) - { - case REPL_NO_EXTRACT: /* No extract. */ - free_up(); - return ((ierr & REPL_ERRLV_WARN) - ? OPENOUT_SKIPWARN : OPENOUT_SKIPOK); - case REPL_NEW_VERSION: /* Create a new version. */ - ierr = replace_rms_newversion(__G); - break; - case REPL_OVERWRITE: /* Overwrite the existing file. */ - ierr = replace_rms_overwrite(__G); - break; - } - } + + if (ierr == 0) /* Canceled */ + return (free_up(), PK_WARN); if (ERR(ierr)) { - char buf[NAM_MAXRSS + 128]; /* Name length + message length. */ + char buf[256]; - sprintf(buf, "[ Cannot create ($create) output file %s ]\n", - G.filename); + sprintf(buf, "[ Cannot create output file %s ]\n", G.filename); vms_msg(__G__ buf, ierr); - if (fileblk.fab$l_stv != 0) - { - vms_msg(__G__ "", fileblk.fab$l_stv); - } + vms_msg(__G__ "", outfab->fab$l_stv); free_up(); - return OPENOUT_FAILED; + return PK_WARN; } if (!text_output) @@ -872,20 +632,16 @@ } rab.rab$b_rac = RAB$C_SEQ; - if ((ierr = sys$connect(&rab)) != RMS$_NORMAL) + if ((ierr = sys$connect(outrab)) != RMS$_NORMAL) { #ifdef DEBUG vms_msg(__G__ "create_default_output: sys$connect failed.\n", ierr); - if (fileblk.fab$l_stv != 0) - { - vms_msg(__G__ "", fileblk.fab$l_stv); - } + vms_msg(__G__ "", outfab->fab$l_stv); #endif Info(slide, 1, ((char *)slide, - "Cannot create ($connect) output file: %s\n", - FnFilter1(G.filename))); + "Can't create output file: %s\n", FnFilter1(G.filename))); free_up(); - return OPENOUT_FAILED; + return PK_WARN; } } /* end if (!uO.cflag) */ @@ -893,18 +649,12 @@ _flush_routine = text_output ? got_eol=0,_flush_stream : _flush_blocks; _close_routine = _close_rms; - return OPENOUT_OK; + return PK_COOL; } -/* The following return codes are supported: - * OPENOUT_OK a file has been opened normally - * OPENOUT_FAILED the file open process failed - * OPENOUT_SKIPOK file open skipped at user request, err level OK - * OPENOUT_SKIPWARN file open skipped at user request, err level WARN - */ -static int create_rms_output(__GPRO) +static int create_rms_output(__GPRO) /* return 1 (PK_WARN) if fail */ { int ierr; int text_output; @@ -919,7 +669,7 @@ rfm = outfab->fab$b_rfm; /* Use record format from VMS extra field */ - if (uO.cflag) /* SYS$OUTPUT */ + if (uO.cflag) { if (text_output && !PRINTABLE_FORMAT(rfm)) { @@ -927,63 +677,33 @@ "[ File %s has illegal record format to put to screen ]\n", FnFilter1(G.filename))); free_up(); - return OPENOUT_FAILED; + return PK_WARN; } } - else /* File output */ + else /* Redirect output */ { - rab = cc$rms_rab; /* Initialize RAB. */ + rab = cc$rms_rab; /* fill RAB with default values */ /* The output FAB has already been initialized with the values - * found in the Zip file's "VMS attributes" extra field. - */ - -#ifdef NAML$C_MAXRSS - - nam = CC_RMS_NAM; /* Initialize NAML. */ - outfab->FAB_NAM = &nam; /* Point FAB to NAML. */ + * found in the Zip file's "VMS attributes" extra field */ - outfab->fab$l_dna = (char *) -1; /* Using NAML for default name. */ - outfab->fab$l_fna = (char *) -1; /* Using NAML for file name. */ + outfab->fab$l_fna = G.filename; + outfab->fab$b_fns = strlen(outfab->fab$l_fna); -#endif /* NAML$C_MAXRSS */ - - FAB_OR_NAML(*outfab, nam).FAB_OR_NAML_FNA = G.filename; - FAB_OR_NAML(*outfab, nam).FAB_OR_NAML_FNS = strlen(G.filename); + /* If no XAB date/time, use attributes from non-VMS fields. */ + if (!(xabdat && xabrdt)) + { + set_default_datetime_XABs(__G); - /* Prepare date-time XABs, unless user requests not to. */ - if (uO.D_flag <= 1) { - /* If no XAB date/time, use attributes from non-VMS fields. */ - if (!(xabdat && xabrdt)) + if (xabdat == NULL) { - set_default_datetime_XABs(__G); - - if (xabdat == NULL) - { - dattim.xab$l_nxt = outfab->fab$l_xab; - outfab->fab$l_xab = (void *) &dattim; - } + dattim.xab$l_nxt = outfab->fab$l_xab; + outfab->fab$l_xab = (void *) &dattim; } } -/* 2005-02-14 SMS. What does this mean? ----vvvvvvvvvvvvvvvvvvvvvvvvvvv */ + outfab->fab$w_ifi = 0; /* Clear IFI. It may be nonzero after ZIP */ outfab->fab$b_fac = FAB$M_BIO | FAB$M_PUT; /* block-mode output */ -#ifdef SYMLINKS - /* 2007-02-28 SMS. - * VMS/RMS symlink properties will be restored naturally when - * the link file is recreated this way, so there's no need to do - * the deferred symlink post-processing step for this file. - * Therefore, clear the pInfo->symlink flag here, and the symlink - * "close file" processor will only display the link text. - */ - if (G.symlnk) { - G.pInfo->symlink = 0; - if (QCOND2) { - /* Symlink file is read back to display the link text. */ - outfab->fab$b_fac |= FAB$M_GET; - } - } -#endif /* SYMLINKS */ /* 2004-11-23 SMS. * Set the "sequential access only" flag, as otherwise, on a @@ -998,39 +718,20 @@ ierr = sys$create(outfab); if (ierr == RMS$_FEX) - { - /* File exists. - * Consider command-line options, or ask the user what to do. - */ ierr = replace(__G); - switch (ierr & REPL_TASKMASK) - { - case REPL_NO_EXTRACT: /* No extract. */ - free_up(); - return ((ierr & REPL_ERRLV_WARN) - ? OPENOUT_SKIPWARN : OPENOUT_SKIPOK); - case REPL_NEW_VERSION: /* Create a new version. */ - ierr = replace_rms_newversion(__G); - break; - case REPL_OVERWRITE: /* Overwrite the existing file. */ - ierr = replace_rms_overwrite(__G); - break; - } - } + + if (ierr == 0) /* Canceled */ + return (free_up(), PK_WARN); if (ERR(ierr)) { - char buf[NAM_MAXRSS + 128]; /* Name length + message length. */ + char buf[256]; - sprintf(buf, "[ Cannot create ($create) output file %s ]\n", - G.filename); + sprintf(buf, "[ Cannot create output file %s ]\n", G.filename); vms_msg(__G__ buf, ierr); - if (outfab->fab$l_stv != 0) - { - vms_msg(__G__ "", outfab->fab$l_stv); - } + vms_msg(__G__ "", outfab->fab$l_stv); free_up(); - return OPENOUT_FAILED; + return PK_WARN; } if (outfab->fab$b_org & (FAB$C_REL | FAB$C_IDX)) { @@ -1038,16 +739,13 @@ ierr = sys$extend(outfab); if (ERR(ierr)) { - char buf[NAM_MAXRSS + 128]; /* Name length + msg length. */ + char buf[256]; sprintf(buf, "[ Cannot allocate space for %s ]\n", G.filename); vms_msg(__G__ buf, ierr); - if (outfab->fab$l_stv != 0) - { - vms_msg(__G__ "", outfab->fab$l_stv); - } + vms_msg(__G__ "", outfab->fab$l_stv); free_up(); - return OPENOUT_FAILED; + return PK_WARN; } } @@ -1062,16 +760,12 @@ { #ifdef DEBUG vms_msg(__G__ "create_rms_output: sys$connect failed.\n", ierr); - if (outfab->fab$l_stv != 0) - { - vms_msg(__G__ "", outfab->fab$l_stv); - } + vms_msg(__G__ "", outfab->fab$l_stv); #endif Info(slide, 1, ((char *)slide, - "Cannot create ($connect) output file: %s\n", - FnFilter1(G.filename))); + "Can't create output file: %s\n", FnFilter1(G.filename))); free_up(); - return OPENOUT_FAILED; + return PK_WARN; } } /* end if (!uO.cflag) */ @@ -1096,7 +790,7 @@ else _flush_routine = _flush_blocks; _close_routine = _close_rms; - return OPENOUT_OK; + return PK_COOL; } @@ -1105,28 +799,26 @@ static int pka_io_pending; static unsigned pka_vbn; -/* IOSB for QIO[W] read and write operations. */ #if defined(__DECC) || defined(__DECCXX) #pragma __member_alignment __save #pragma __nomember_alignment #endif /* __DECC || __DECCXX */ static struct { - unsigned short status; - unsigned int count; /* Unaligned ! */ - unsigned short dummy; -} pka_io_iosb; + short status; + long count; + short dummy; +} pka_io_sb; #if defined(__DECC) || defined(__DECCXX) #pragma __member_alignment __restore #endif /* __DECC || __DECCXX */ -/* IOSB for QIO[W] miscellaneous ACP operations. */ static struct { - unsigned short status; - unsigned short dummy; - unsigned int count; -} pka_acp_iosb; + short status; + short dummy; + void *addr; +} pka_acp_sb; static struct fibdef pka_fib; static struct atrdef pka_atr[VMS_MAX_ATRCNT]; @@ -1134,29 +826,17 @@ static ulg pka_uchar; static struct fatdef pka_rattr; -/* Directory attribute storage, descriptor (list). */ -static struct atrdef pka_recattr[2] = - { { sizeof(pka_rattr), ATR$C_RECATTR, GVTC &pka_rattr}, /* RECATTR. */ - { 0, 0, 0 } /* List terminator. */ - }; - static struct dsc$descriptor pka_fibdsc = { sizeof(pka_fib), DSC$K_DTYPE_Z, DSC$K_CLASS_S, (void *) &pka_fib }; static struct dsc$descriptor_s pka_devdsc = -{ 0, DSC$K_DTYPE_T, DSC$K_CLASS_S, &nam.NAM_DVI[1] }; +{ 0, DSC$K_DTYPE_T, DSC$K_CLASS_S, &nam.nam$t_dvi[1] }; static struct dsc$descriptor_s pka_fnam = { 0, DSC$K_DTYPE_T, DSC$K_CLASS_S, NULL }; -/* Expanded and resultant name storage. */ -static char exp_nam[NAM_MAXRSS]; -static char res_nam[NAM_MAXRSS]; - -/* Special ODS5-QIO-compatible name storage. */ -#ifdef NAML$C_MAXRSS -static char sys_nam[NAML$C_MAXRSS]; /* Probably need less here. */ -#endif /* NAML$C_MAXRSS */ +static char exp_nam[NAM$C_MAXRSS]; +static char res_nam[NAM$C_MAXRSS]; #define PK_PRINTABLE_RECTYP(x) ( (x) == FAT$C_VARIABLE \ || (x) == FAT$C_STREAMLF \ @@ -1164,13 +844,7 @@ || (x) == FAT$C_STREAM ) -/* The following return codes are supported: - * OPENOUT_OK a file has been opened normally - * OPENOUT_FAILED the file open process failed - * OPENOUT_SKIPOK file open skipped at user request, err level OK - * OPENOUT_SKIPWARN file open skipped at user request, err level WARN - */ -static int create_qio_output(__GPRO) +static int create_qio_output(__GPRO) /* return 1 (PK_WARN) if fail */ { int status; int i; @@ -1196,7 +870,7 @@ Info(slide, 1, ((char *)slide, "[ File %s has illegal record format to put to screen ]\n", FnFilter1(G.filename))); - return OPENOUT_FAILED; + return PK_WARN; } } else @@ -1224,98 +898,41 @@ } else /* !(uO.cflag) : redirect output */ { - fileblk = cc$rms_fab; /* Initialize FAB. */ - nam = CC_RMS_NAM; /* Initialize NAM[L]. */ - fileblk.FAB_NAM = &nam; /* Point FAB to NAM[L]. */ - -#ifdef NAML$C_MAXRSS - - fileblk.fab$l_dna = (char *) -1; /* Using NAML for default name. */ - fileblk.fab$l_fna = (char *) -1; /* Using NAML for file name. */ - - /* Special ODS5-QIO-compatible name storage. */ - nam.naml$l_filesys_name = sys_nam; - nam.naml$l_filesys_name_alloc = sizeof(sys_nam); - -#endif /* NAML$C_MAXRSS */ - - /* VMS-format file name, derived from archive. */ - FAB_OR_NAML(fileblk, nam).FAB_OR_NAML_FNA = G.filename; - FAB_OR_NAML(fileblk, nam).FAB_OR_NAML_FNS = strlen(G.filename); - - /* Expanded and resultant name storage. */ - nam.NAM_ESA = exp_nam; - nam.NAM_ESS = sizeof(exp_nam); - nam.NAM_RSA = res_nam; - nam.NAM_RSS = sizeof(res_nam); + + fileblk = cc$rms_fab; + fileblk.fab$l_fna = G.filename; + fileblk.fab$b_fns = strlen(G.filename); + + nam = cc$rms_nam; + fileblk.fab$l_nam = &nam; + nam.nam$l_esa = exp_nam; + nam.nam$b_ess = sizeof(exp_nam); + nam.nam$l_rsa = res_nam; + nam.nam$b_rss = sizeof(res_nam); if ( ERR(status = sys$parse(&fileblk)) ) { vms_msg(__G__ "create_qio_output: sys$parse failed.\n", status); - return OPENOUT_FAILED; + return PK_WARN; } - pka_devdsc.dsc$w_length = (unsigned short)nam.NAM_DVI[0]; + pka_devdsc.dsc$w_length = (unsigned short)nam.nam$t_dvi[0]; - if ( ERR(status = sys$assign(&pka_devdsc, &pka_devchn, 0, 0)) ) + if ( ERR(status = sys$assign(&pka_devdsc,&pka_devchn,0,0)) ) { vms_msg(__G__ "create_qio_output: sys$assign failed.\n", status); - return OPENOUT_FAILED; + return PK_WARN; } -#ifdef NAML$C_MAXRSS - - /* Enable fancy name characters. Note that "fancy" here does - not include Unicode, for which there's no support elsewhere. - */ - pka_fib.fib$v_names_8bit = 1; - pka_fib.fib$b_name_format_in = FIB$C_ISL1; - - /* ODS5 Extended names used as input to QIO have peculiar - encoding (perhaps to minimize storage?), so the special - filesys_name result (typically containing fewer carets) must - be used here. - */ - pka_fnam.dsc$a_pointer = nam.naml$l_filesys_name; - pka_fnam.dsc$w_length = nam.naml$l_filesys_name_size; - -#else /* !NAML$C_MAXRSS */ - - /* Extract only the name.type;version. - 2005-02-14 SMS. - Note: In old code, the version in the name here was retained - only if -V (uO.V_flag, so that there might be an explicit - version number in the archive (or perhaps not)), but the - version should already have been stripped before this in - adj_file_name_odsX(), and sys$parse() here should always - return a good version number which may be used as-is. If - not, here's where to fix the (new) problem. Note that the - ODS5-compatible code uses the whole thing in filesys_name, - too, and that's critical for proper interpretation of funny - names. (Omitting the ";" can cause trouble, so it should - certainly be kept, even if the version digits are removed - here.) - */ - - pka_fnam.dsc$a_pointer = nam.NAM_L_NAME; - pka_fnam.dsc$w_length = - nam.NAM_B_NAME + nam.NAM_B_TYPE + nam.NAM_B_VER; - -#if 0 - pka_fnam.dsc$w_length = nam.NAM_B_NAME + nam.NAM_B_TYPE; + pka_fnam.dsc$a_pointer = nam.nam$l_name; + pka_fnam.dsc$w_length = nam.nam$b_name + nam.nam$b_type; if ( uO.V_flag /* keep versions */ ) - pka_fnam.dsc$w_length += nam.NAM_B_VER; -#endif /* 0 */ + pka_fnam.dsc$w_length += nam.nam$b_ver; -#endif /* ?NAML$C_MAXRSS */ - - /* Move the directory ID from the NAM[L] to the FIB. - Clear the FID in the FIB, as we're using the name. - */ - for (i = 0; i < 3; i++) + for (i=0;i<3;i++) { - pka_fib.FIB$W_DID[i] = nam.NAM_DID[i]; - pka_fib.FIB$W_FID[i] = 0; + pka_fib.FIB$W_DID[i]=nam.nam$w_did[i]; + pka_fib.FIB$W_FID[i]=0; } /* 2004-11-23 SMS. @@ -1338,92 +955,18 @@ pka_fib.fib$l_exsz = SWAPW(pka_rattr.fat$l_hiblk); - status = sys$qiow(0, /* event flag */ - pka_devchn, /* channel */ - IO$_CREATE|IO$M_CREATE|IO$M_ACCESS, /* funct */ - &pka_acp_iosb, /* IOSB */ - 0, /* AST address */ - 0, /* AST parameter */ - &pka_fibdsc, /* P1 = File Info Block */ - &pka_fnam, /* P2 = File name (descr) */ - 0, /* P3 (= Resulting name len) */ - 0, /* P4 (= Resulting name descr) */ - pka_atr, /* P5 = Attribute descr */ - 0); /* P6 (not used) */ + status = sys$qiow(0, pka_devchn, IO$_CREATE|IO$M_CREATE|IO$M_ACCESS, + &pka_acp_sb, 0, 0, + &pka_fibdsc, &pka_fnam, 0, 0, &pka_atr, 0); if ( !ERR(status) ) - status = pka_acp_iosb.status; - - if ( status == SS$_DUPFILENAME ) - { - /* File exists. Prepare to ask user what to do. */ - - /* Arrange to store the resultant file spec (with new - * version?) where the message code will find it. - */ - short res_nam_len; - struct dsc$descriptor_s res_nam_dscr = - { 0, DSC$K_DTYPE_T, DSC$K_CLASS_S, NULL }; - - res_nam_dscr.dsc$a_pointer = G.filename; - res_nam_dscr.dsc$w_length = sizeof(G.filename); - - /* File exists. - * Consider command-line options, or ask the user what to do. - */ - status = replace(__G); - switch (status & REPL_TASKMASK) - { - case REPL_NO_EXTRACT: /* No extract. */ - free_up(); - return ((status & REPL_ERRLV_WARN) - ? OPENOUT_SKIPWARN : OPENOUT_SKIPOK); - case REPL_NEW_VERSION: /* Create a new version. */ - pka_fib.FIB$W_NMCTL |= FIB$M_NEWVER; - break; - case REPL_OVERWRITE: /* Overwrite the existing file. */ - pka_fib.FIB$W_NMCTL |= FIB$M_SUPERSEDE; - break; - } - - /* Retry file creation with new (user-specified) policy. */ - status = sys$qiow(0, /* event flag */ - pka_devchn, /* channel */ - IO$_CREATE|IO$M_CREATE|IO$M_ACCESS, /* funct */ - &pka_acp_iosb, /* IOSB */ - 0, /* AST address */ - 0, /* AST parameter */ - &pka_fibdsc, /* P1 = File Info Block */ - &pka_fnam, /* P2 = File name (descr) */ - &res_nam_len, /* P3 = Resulting name len */ - &res_nam_dscr, /* P4 = Resulting name descr */ - pka_atr, /* P5 = Attribute descr */ - 0); /* P6 (not used) */ - - if ( !ERR(status) ) - status = pka_acp_iosb.status; - - if (res_nam_len > 0) - { - /* NUL-terminate the resulting file spec. */ - G.filename[res_nam_len] = '\0'; - } - - /* Clear any user-specified version policy flags - * (for the next file to be processed). - */ - pka_fib.FIB$W_NMCTL &= (~(FIB$M_NEWVER| FIB$M_SUPERSEDE)); - } + status = pka_acp_sb.status; if ( ERR(status) ) { - char buf[NAM_MAXRSS + 128]; /* Name length + message length. */ - - sprintf(buf, "[ Cannot create (QIO) output file %s ]\n", - G.filename); - vms_msg(__G__ buf, status); + vms_msg(__G__ "[ Create file QIO failed. ]\n", status); sys$dassgn(pka_devchn); - return OPENOUT_FAILED; + return PK_WARN; } #ifdef ASYNCH_QIO @@ -1437,210 +980,81 @@ _flush_routine = _flush_qio; _close_routine = _close_qio; } /* end if (!uO.cflag) */ - return OPENOUT_OK; -} - - -/* 2008-07-23 SMS. - * Segregated user query function from file re-open functions/code. - * - * There was no code in create_qio_output() to deal with an - * SS$_DUPFILENAME condition, leading to ugly run-time failures, and its - * requirements differ from those of the RMS (non-QIO) functions, - * create_default_output() and create_rms_output(). - * - * Whether it makes sense to have a second layer of VMS-specific - * querying after the generic UnZip query in extract.c: - * extract_or_test_entrylist() is another question, but changing that - * looks more scary than just getting the VMS-specific stuff to work - * right (better?). - */ - -/* "File exists" handler(s). Ask user about further action. */ - -/* RMS create new version. */ -static int replace_rms_newversion(__GPRO) -{ - int ierr; - struct NAM_STRUCT nam; - - nam = CC_RMS_NAM; /* Initialize local NAM[L] block. */ - outfab->FAB_NAM = &nam; /* Point FAB to local NAM[L]. */ - - /* Arrange to store the resultant file spec (with new version), so - * that we can extract the actual file version from it, for later - * use in the "extracting:/inflating:/..." message (G.filename). - */ - nam.NAM_RSA = res_nam; - nam.NAM_RSS = sizeof(res_nam); - -#ifdef NAML$C_MAXRSS - - outfab->fab$l_dna = (char *) -1; /* Using NAML for default name. */ - outfab->fab$l_fna = (char *) -1; /* Using NAML for file name. */ - -#endif /* NAML$C_MAXRSS */ - - FAB_OR_NAML(*outfab, nam).FAB_OR_NAML_FNA = G.filename; - FAB_OR_NAML(*outfab, nam).FAB_OR_NAML_FNS = strlen(G.filename); - - /* Maximize version number. */ - outfab->fab$l_fop |= FAB$M_MXV; - - /* Create the new-version file. */ - ierr = sys$create(outfab); - - if (nam.NAM_RSL > 0) - { - /* File spec version pointers. - * Versions must exist, so a simple right-to-left search for ";" - * should work, even on ODS5 extended file specs. - */ - char *semi_col_orig; - char *semi_col_res; - - /* NUL-terminate the (complete) resultant file spec. */ - res_nam[nam.NAM_RSL] = '\0'; - - /* Find the versions (";") in the original and resultant file specs. */ - semi_col_orig = strrchr(G.filename, ';'); - semi_col_res = strrchr(res_nam, ';'); - - if ((semi_col_orig != NULL) && (semi_col_res != NULL)) - { - /* Transfer the resultant version to the original file spec. */ - strcpy((semi_col_orig + 1), (semi_col_res + 1)); - } - } - return ierr; + return PK_COOL; } -/* RMS overwrite original version. */ -static int replace_rms_overwrite(__GPRO) -{ - /* Supersede existing file. */ - outfab->fab$l_fop |= FAB$M_SUP; - /* Create (overwrite) the original-version file. */ - return sys$create(outfab); -} - -/* Main query function to ask user how to handle an existing file - * (unless command-line options already specify what to do). - */ static int replace(__GPRO) -{ +{ /* + * File exists. Inquire user about further action. + */ char answ[10]; - int replace_code; + struct NAM nam; + int ierr; - if (replace_code_all >= 0) - { - /* Use the previous all-file response. */ - replace_code = replace_code_all; - } - else if (uO.overwrite_none) - { - /* "-n". Do not extract this (or any) file. */ - replace_code = replace_code_all = REPL_NO_EXTRACT; - } - else if (uO.overwrite_all == 1) - { - /* "-o". Create a new version of this (or any) file. */ - replace_code = replace_code_all = REPL_NEW_VERSION; - } - else if (uO.overwrite_all > 1) - { - /* "-oo". Overwrite (supersede) this (or any) existing file. */ - replace_code = replace_code_all = REPL_OVERWRITE; - } - else + if (query == '\0') { - replace_code = -1; do { - /* Request, accept, and decode a response. */ Info(slide, 0x81, ((char *)slide, - "%s exists: new [v]ersion, [o]verwrite, or [n]o extract?\n\ - (Uppercase response [V,O,N] => Do same for all files): ", - FnFilter1(G.filename))); + "%s exists: [o]verwrite, new [v]ersion or [n]o extract?\n\ + (uppercase response [O,V,N] = do same for all files): ", + FnFilter1(G.filename))); fflush(stderr); + } while (fgets(answ, 9, stderr) == NULL && !isalpha(answ[0]) + && tolower(answ[0]) != 'o' + && tolower(answ[0]) != 'v' + && tolower(answ[0]) != 'n'); - if (fgets(answ, sizeof(answ), stdin) == (char *)NULL) - { - Info(slide, 1, ((char *)slide, AssumeNo)); - /* Handle the NULL answer as "N", - * do not extract any existing files. */ - replace_code_all = REPL_NO_EXTRACT; - /* Set a warning indicator. */ - replace_code = REPL_NO_EXTRACT | REPL_ERRLV_WARN; - /* We are finished, break out of the query loop. */ - break; - } + if (isupper(answ[0])) + query = answ[0] = tolower(answ[0]); + } + else + answ[0] = query; - /* Strip off a trailing newline, to avoid corrupt - * complaints when displaying the answer. - */ - if (answ[strlen(answ) - 1] == '\n') - answ[strlen(answ) - 1] = '\0'; + switch (answ[0]) + { + case 'n': + ierr = 0; + break; + case 'v': + nam = cc$rms_nam; + nam.nam$l_rsa = G.filename; + nam.nam$b_rss = FILNAMSIZ - 1; - /* Extra newline to avoid having the extracting:/inflating:/...: - * message overwritten by the next query. - */ - Info(slide, 1, ((char *)slide, "\n")); + outfab->fab$l_fop |= FAB$M_MXV; + outfab->fab$l_nam = &nam; - /* Interpret response. Store upper-case answer for future use. */ - switch (answ[0]) + ierr = sys$create(outfab); + if (!ERR(ierr)) { - case 'N': - replace_code_all = REPL_NO_EXTRACT; - case 'n': - /* Do not extract this file. */ - replace_code = REPL_NO_EXTRACT; - break; - case 'O': - replace_code_all = REPL_OVERWRITE; - case 'o': - /* Overwrite (supersede) this existing file. */ - replace_code = REPL_OVERWRITE; - break; - case 'V': - replace_code_all = REPL_NEW_VERSION; - case 'v': - /* Create a new version of this file. */ - replace_code = REPL_NEW_VERSION; - break; - default: - /* Invalid response. Try again. */ - Info(slide, 1, ((char *)slide, InvalidResponse, answ)); + outfab->fab$l_nam = NULL; + G.filename[outfab->fab$b_fns = nam.nam$b_rsl] = '\0'; } - } while (replace_code < 0); + break; + case 'o': + outfab->fab$l_fop |= FAB$M_SUP; + ierr = sys$create(outfab); + break; } - return replace_code; + return ierr; } #define W(p) (*(unsigned short*)(p)) #define L(p) (*(unsigned long*)(p)) -#define EQL_L(a, b) ( L(a) == L(b) ) -#define EQL_W(a, b) ( W(a) == W(b) ) +#define EQL_L(a,b) ( L(a) == L(b) ) +#define EQL_W(a,b) ( W(a) == W(b) ) -/* - * Function find_vms_attrs() scans the ZIP entry extra field, if any, - * and looks for VMS attribute records. Various date-time attributes - * are ignored if set_date_time is FALSE (typically for a directory). - * - * For a set of IZ records, a FAB and various XABs are created and - * chained together. - * - * For a PK record, the pka_atr[] attribute descriptor array is - * populated. - * - * The return value is a VAT_* value, according to the type of extra - * field attribute data found. - */ -static int find_vms_attrs(__GPRO__ int set_date_time) +/**************************************************************** + * Function find_vms_attrs scans ZIP entry extra field if any * + * and looks for VMS attribute records. Returns 0 if either no * + * attributes found or no fab given. * + ****************************************************************/ +static int find_vms_attrs(__G) + __GDEF { uch *scan = G.extra_field; struct EB_header *hdr; @@ -1674,7 +1088,7 @@ if (EQL_W(&hdr->tag, IZ_SIGNATURE)) { /* - * Info-ZIP-style extra block decoding. + * Info-ZIP style extra block decoding */ uch *blk; unsigned siz; @@ -1687,32 +1101,28 @@ block_id = (uch *)(&((struct IZ_block *)hdr)->bid); if (EQL_L(block_id, FABSIG)) { - outfab = (struct FAB *)extract_izvms_block(__G__ blk, - siz, NULL, (uch *)&cc$rms_fab, FABL); + outfab = (struct FAB *)extract_izvms_block(__G__ blk, siz, + NULL, (uch *)&cc$rms_fab, FABL); } else if (EQL_L(block_id, XALLSIG)) { - xaball = (struct XABALL *)extract_izvms_block(__G__ blk, - siz, NULL, (uch *)&cc$rms_xaball, XALLL); + xaball = (struct XABALL *)extract_izvms_block(__G__ blk, siz, + NULL, (uch *)&cc$rms_xaball, XALLL); LINK(xaball); } else if (EQL_L(block_id, XKEYSIG)) { - xabkey = (struct XABKEY *)extract_izvms_block(__G__ blk, - siz, NULL, (uch *)&cc$rms_xabkey, XKEYL); + xabkey = (struct XABKEY *)extract_izvms_block(__G__ blk, siz, + NULL, (uch *)&cc$rms_xabkey, XKEYL); LINK(xabkey); } else if (EQL_L(block_id, XFHCSIG)) { - xabfhc = (struct XABFHC *) extract_izvms_block(__G__ blk, - siz, NULL, (uch *)&cc$rms_xabfhc, XFHCL); + xabfhc = (struct XABFHC *) extract_izvms_block(__G__ blk, siz, + NULL, (uch *)&cc$rms_xabfhc, XFHCL); } else if (EQL_L(block_id, XDATSIG)) { - if (set_date_time) { - xabdat = (struct XABDAT *) extract_izvms_block(__G__ blk, - siz, NULL, (uch *)&cc$rms_xabdat, XDATL); - } + xabdat = (struct XABDAT *) extract_izvms_block(__G__ blk, siz, + NULL, (uch *)&cc$rms_xabdat, XDATL); } else if (EQL_L(block_id, XRDTSIG)) { - if (set_date_time) { - xabrdt = (struct XABRDT *) extract_izvms_block(__G__ blk, - siz, NULL, (uch *)&cc$rms_xabrdt, XRDTL); - } + xabrdt = (struct XABRDT *) extract_izvms_block(__G__ blk, siz, + NULL, (uch *)&cc$rms_xabrdt, XRDTL); } else if (EQL_L(block_id, XPROSIG)) { - xabpro = (struct XABPRO *) extract_izvms_block(__G__ blk, - siz, NULL, (uch *)&cc$rms_xabpro, XPROL); + xabpro = (struct XABPRO *) extract_izvms_block(__G__ blk, siz, + NULL, (uch *)&cc$rms_xabpro, XPROL); } else if (EQL_L(block_id, VERSIG)) { #ifdef CHECK_VERSIONS char verbuf[80]; @@ -1748,7 +1158,7 @@ else if (hdr->tag == PK_SIGNATURE) { /* - * PKWARE-style extra block decoding. + * PKWARE-style extra block decoding */ struct PK_header *blk; register byte *scn; @@ -1764,7 +1174,7 @@ if (blk->crc32 != crc32(CRCVAL_INITIAL, scn, (extent)len)) { Info(slide, 1, ((char *)slide, - "[ Warning: CRC error, discarding PKWARE extra field ]\n")); + "[Warning: CRC error, discarding PKWARE extra field]\n")); len = 0; type = VAT_NONE; } @@ -1787,13 +1197,6 @@ case ATR$C_ADDACLENT: skip = !uO.X_flag; break; - case ATR$C_CREDATE: - case ATR$C_REVDATE: - case ATR$C_EXPDATE: - case ATR$C_BAKDATE: - case ATR$C_ASCDATES: - skip = (set_date_time == FALSE); - break; } if ( !skip ) @@ -1814,13 +1217,12 @@ scan += hdr->size + EB_HEADSIZE; } + if ( type == VAT_IZ ) { if (outfab != NULL) - { - /* Do not link XABPRO or XABRDT now. - * Leave them for sys$close() resp. set_direc_attribs(). - */ + { /* Do not link XABPRO,XABRDT now. Leave them for sys$close() */ + outfab->fab$l_xab = NULL; if (xabfhc != NULL) { @@ -1849,7 +1251,7 @@ static void free_up() { /* - * Free up all allocated XABs. + * Free up all allocated xabs */ if (xabdat != NULL) free(xabdat); if (xabpro != NULL) free(xabpro); @@ -1863,7 +1265,6 @@ free(first_xab); first_xab = x; } - /* Free FAB storage, if not the static one. */ if (outfab != NULL && outfab != &fileblk) free(outfab); } @@ -1969,9 +1370,9 @@ int status; if (pka_io_pending) { - status = sys$synch(0, &pka_io_iosb); + status = sys$synch(0, &pka_io_sb); if (!ERR(status)) - status = pka_io_iosb.status; + status = pka_io_sb.status; if (ERR(status)) { vms_msg(__G__ "[ WriteQIO: sys$synch found I/O failure ]\n", @@ -1984,7 +1385,7 @@ * Put content of buffer as a single VB */ status = sys$qio(0, pka_devchn, IO$_WRITEVBLK, - &pka_io_iosb, 0, 0, + &pka_io_sb, 0, 0, buf, len, pka_vbn, 0, 0, 0); if (ERR(status)) @@ -2079,16 +1480,16 @@ loccnt_even = (loccnt+1) & (~1); /* If there is one, clear the extra byte. */ if (loccnt_even > loccnt) - locbuf[loccnt] = '\0'; + locbuf[ loccnt] = '\0'; status = sys$qiow(0, pka_devchn, IO$_WRITEVBLK, - &pka_io_iosb, 0, 0, + &pka_io_sb, 0, 0, locbuf, loccnt_even, pka_vbn, 0, 0, 0); if (!ERR(status)) - status = pka_io_iosb.status; + status = pka_io_sb.status; if (ERR(status)) { vms_msg(__G__ "[ Write QIO failed ]\n", status); @@ -2117,11 +1518,11 @@ if ( loccnt == 512 ) { status = sys$qiow(0, pka_devchn, IO$_WRITEVBLK, - &pka_io_iosb, 0, 0, + &pka_io_sb, 0, 0, locbuf, loccnt, pka_vbn, 0, 0, 0); if (!ERR(status)) - status = pka_io_iosb.status; + status = pka_io_sb.status; if (ERR(status)) { vms_msg(__G__ "[ Write QIO failed ]\n", status); @@ -2143,11 +1544,11 @@ */ put_cnt = (nblk = size>>9)<<9; status = sys$qiow(0, pka_devchn, IO$_WRITEVBLK, - &pka_io_iosb, 0, 0, + &pka_io_sb, 0, 0, out_ptr, put_cnt, pka_vbn, 0, 0, 0); if (!ERR(status)) - status = pka_io_iosb.status; + status = pka_io_sb.status; if (ERR(status)) { vms_msg(__G__ "[ Write QIO failed ]\n", status); @@ -2293,17 +1694,17 @@ /* Record delimiters */ #ifdef undef -#define RECORD_END(c, f) \ +#define RECORD_END(c,f) \ ( ( ORG_DOS || G.pInfo->textmode ) && c==CTRLZ \ || ( f == FAB$C_STMLF && c==LF ) \ || ( f == FAB$C_STMCR || ORG_DOS || G.pInfo->textmode ) && c==CR \ || ( f == FAB$C_STM && (c==CR || c==LF || c==FF || c==VT) ) \ ) #else -# define RECORD_END(c, f) ((c) == LF || (c) == (CR)) +# define RECORD_END(c,f) ((c) == LF || (c) == (CR)) #endif -static unsigned find_eol(p, n, l) +static unsigned find_eol(p,n,l) /* * Find first CR, LF, CR/LF or LF/CR in string 'p' of length 'n'. * Return offset of the sequence found or 'n' if not found. @@ -2311,17 +1712,17 @@ * zero if sequence end not seen, i.e. CR or LF is last char * in the buffer. */ - ZCONST uch *p; + uch *p; unsigned n; unsigned *l; { unsigned off = n; - ZCONST uch *q; + uch *q; *l = 0; - for (q=p ; n > 0 ; --n, ++q) - if ( RECORD_END(*q, rfm) ) + for (q=p ; n > 0 ; --n,++q) + if ( RECORD_END(*q,rfm) ) { off = q-p; break; @@ -2527,10 +1928,7 @@ if (ERR(status)) { vms_msg(__G__ "[ WriteBuffer: sys$wait failed ]\n", status); - if (outrab->rab$l_stv != 0) - { - vms_msg(__G__ "", outrab->rab$l_stv); - } + vms_msg(__G__ "", outrab->rab$l_stv); } /* If odd byte count, then this must be the final record. @@ -2545,10 +1943,7 @@ if (ERR(status = sys$write(outrab))) { vms_msg(__G__ "[ WriteBuffer: sys$write failed ]\n", status); - if (outrab->rab$l_stv != 0) - { - vms_msg(__G__ "", outrab->rab$l_stv); - } + vms_msg(__G__ "", outrab->rab$l_stv); return PK_DISK; } } @@ -2574,10 +1969,7 @@ if (ERR(status = sys$wait(outrab))) { vms_msg(__G__ "[ WriteRecord: sys$wait failed ]\n", status); - if (outrab->rab$l_stv != 0) - { - vms_msg(__G__ "", outrab->rab$l_stv); - } + vms_msg(__G__ "", outrab->rab$l_stv); } outrab->rab$w_rsz = len; outrab->rab$l_rbf = (char *) rec; @@ -2585,10 +1977,7 @@ if (ERR(status = sys$put(outrab))) { vms_msg(__G__ "[ WriteRecord: sys$put failed ]\n", status); - if (outrab->rab$l_stv != 0) - { - vms_msg(__G__ "", outrab->rab$l_stv); - } + vms_msg(__G__ "", outrab->rab$l_stv); return PK_DISK; } } @@ -2597,62 +1986,6 @@ -#ifdef SYMLINKS -/* Read symlink text from a still-open rms file. */ - -static int _read_link_rms(int byte_count, char *link_text_buf) -{ - /* Use RMS to read the link text into the user's buffer. - * Rewind, then read byte count = byte_count. - * NUL-terminate the link text. - * - * $WAIT may be pointless if not async, but $WAIT elsewhere seems - * to be used unconditionally, so what do I know? - */ - int sts; - int bytes_read; - - /* Clear the bytes-read count. */ - bytes_read = 0; - - /* Wait for anything pending. */ - sts = sys$wait(outrab); - { - /* Rewind. */ - sts = sys$rewind(outrab); - if (!ERR(sts)) - { - /* Wait for $REWIND. */ - sts = sys$wait(outrab); - if (!ERR(sts)) - { - /* Read the link text. */ - outrab->rab$w_usz = byte_count; - outrab->rab$l_ubf = link_text_buf; - sts = sys$read(outrab); - if (!ERR(sts)) - { - /* Wait for $READ. */ - sts = sys$wait(outrab); - - if (!ERR(sts)) - /* Set the resultant byte count. */ - bytes_read = outrab->rab$w_rsz; - } - } - } - } - - /* NUL-terminate the link text. */ - link_text_buf[bytes_read] = '\0'; - - return sts; -} - -#endif /* SYMLINKS */ - - - void close_outfile(__G) __GDEF { @@ -2672,135 +2005,8 @@ { int status; struct XABPRO pro; - int retcode = PK_OK; -#ifdef SYMLINKS - -/*---------------------------------------------------------------------- - UNIX description: - If symbolic links are supported, allocate storage for a symlink - control structure, put the uncompressed "data" and other required - info in it, and add the structure to the "deferred symlinks" chain. - Since we know it's a symbolic link to start with, we shouldn't have - to worry about overflowing unsigned ints with unsigned longs. -----------------------------------------------------------------------*/ - - if (G.symlnk) { - extent ucsize = (extent)G.lrec.ucsize; - - /* 2007-03-03 SMS. - * If the symlink is already a symlink (restored with VMS/RMS - * symlink attributes), then read the link text from the file, - * and close the file (using the appropriate methods), and then - * return. - */ - if (G.pInfo->symlink == 0) - { - if (QCOND2) - { - /* Link text storage. */ - char* link_target = malloc(ucsize + 1); - - if (link_target == NULL) - { - Info(slide, 0x201, ((char *)slide, - "warning: cannot show symlink (%s) target, no mem\n", - FnFilter1(G.filename))); - retcode = PK_MEM; - } - else - { - /* Read the link text. */ - status = _read_link_rms(ucsize, link_target); - - if (ERR(status)) - { - Info(slide, 0x201, ((char *)slide, - "warning: error reading symlink text: %s\n", - strerror(EVMSERR, status))); - retcode = PK_DISK; - } - else - { - Info(slide, 0, ((char *)slide, "-> %s ", - FnFilter1(link_target))); - } - - free(link_target); - } - } - } - else - { - extent slnk_entrysize; - slinkentry *slnk_entry; - - /* It's a symlink in need of post-processing. */ - /* Size of the symlink entry is the sum of - * (struct size (includes 1st '\0') + 1 additional trailing '\0'), - * system specific attribute data size (might be 0), - * and the lengths of name and link target. - */ - slnk_entrysize = (sizeof(slinkentry) + 1) + - ucsize + strlen(G.filename); - - if (slnk_entrysize < ucsize) { - Info(slide, 0x201, ((char *)slide, - "warning: symbolic link (%s) failed: mem alloc overflow\n", - FnFilter1(G.filename))); - retcode = PK_ERR; - } - else - { - if ((slnk_entry = (slinkentry *)malloc(slnk_entrysize)) - == NULL) { - Info(slide, 0x201, ((char *)slide, - "warning: symbolic link (%s) failed, no mem\n", - FnFilter1(G.filename))); - retcode = PK_MEM; - } - else - { - slnk_entry->next = NULL; - slnk_entry->targetlen = ucsize; - /* don't set attributes for symlinks */ - slnk_entry->attriblen = 0; - slnk_entry->target = slnk_entry->buf; - slnk_entry->fname = slnk_entry->target + ucsize + 1; - strcpy(slnk_entry->fname, G.filename); - - /* Read the link text using the appropriate method. */ - status = _read_link_rms(ucsize, slnk_entry->target); - - if (ERR(status)) - { - Info(slide, 0x201, ((char *)slide, - "warning: error reading symlink text (rms): %s\n", - strerror(EVMSERR, status))); - free(slnk_entry); - retcode = PK_DISK; - } - else - { - if (QCOND2) - Info(slide, 0, ((char *)slide, "-> %s ", - FnFilter1(slnk_entry->target))); - - /* Add this symlink record to the list of - deferred symlinks. */ - if (G.slink_last != NULL) - G.slink_last->next = slnk_entry; - else - G.slink_head = slnk_entry; - G.slink_last = slnk_entry; - } - } - } - } - } -#endif /* SYMLINKS */ - - /* Link XABRDT, XABDAT, and (optionally) XABPRO. */ + /* Link XABRDT, XABDAT and optionally XABPRO */ if (xabrdt != NULL) { xabrdt->xab$l_nxt = NULL; @@ -2836,10 +2042,7 @@ if (ERR(status)) { vms_msg(__G__ "[ _close_rms: sys$wait failed ]\n", status); - if (outrab->rab$l_stv != 0) - { - vms_msg(__G__ "", outrab->rab$l_stv); - } + vms_msg(__G__ "", outrab->rab$l_stv); } status = sys$close(outfab); @@ -2849,15 +2052,11 @@ vms_msg(__G__ "\r[ Warning: cannot set owner/protection/time attributes ]\n", status); - if (outfab->fab$l_stv != 0) - { - vms_msg(__G__ "", outfab->fab$l_stv); - } - retcode = PK_WARN; + vms_msg(__G__ "", outfab->fab$l_stv); } #endif free_up(); - return retcode; + return PK_COOL; } @@ -2879,9 +2078,9 @@ #ifdef ASYNCH_QIO if (pka_io_pending) { - status = sys$synch(0, &pka_io_iosb); + status = sys$synch(0, &pka_io_sb); if (!ERR(status)) - status = pka_io_iosb.status; + status = pka_io_sb.status; if (ERR(status)) { vms_msg(__G__ "[ _close_qio: sys$synch found I/O failure ]\n", @@ -2891,73 +2090,14 @@ } #endif /* ASYNCH_QIO */ -#ifdef SYMLINKS - if (G.symlnk && QCOND2) - { - /* Read back the symlink target specification for display purpose. */ - extent ucsize = (extent)G.lrec.ucsize; - char *link_target; /* Link text storage. */ - - if ((link_target = malloc(ucsize + 1)) == NULL) - { - Info(slide, 0x201, ((char *)slide, - "warning: cannot show symlink (%s) target, no mem\n", - FnFilter1(G.filename))); - } - else - { - unsigned bytes_read = 0; - - status = sys$qiow(0, /* event flag */ - pka_devchn, /* channel */ - IO$_READVBLK, /* function */ - &pka_io_iosb, /* IOSB */ - 0, /* AST address */ - 0, /* AST parameter */ - link_target, /* P1 = buffer address */ - ucsize, /* P2 = requested byte count */ - 1, /* P3 = VBN (1 = first) */ - 0, /* P4 (not used) */ - 0, /* P5 (not used) */ - 0); /* P6 (not used) */ - - if (!ERR(status)) - /* Final status. */ - status = pka_io_iosb.status; - - /* Set the resultant byte count. */ - if (!ERR(status)) - bytes_read = pka_io_iosb.count; - - /* NUL-terminate the link text. */ - link_target[bytes_read] = '\0'; - - if (ERR(status)) - { - Info(slide, 0x201, ((char *)slide, - "warning: error reading symlink text (qio): %s\n", - strerror(EVMSERR, status))); - } - else - { - Info(slide, 0, ((char *)slide, "-> %s ", - FnFilter1(link_target))); - } - - free(link_target); - - } - } -#endif /* SYMLINKS */ - - status = sys$qiow(0, pka_devchn, IO$_DEACCESS, &pka_acp_iosb, + status = sys$qiow(0, pka_devchn, IO$_DEACCESS, &pka_acp_sb, 0, 0, &pka_fibdsc, 0, 0, 0, - pka_atr, 0); + &pka_atr, 0); sys$dassgn(pka_devchn); if ( !ERR(status) ) - status = pka_acp_iosb.status; + status = pka_acp_sb.status; if ( ERR(status) ) { vms_msg(__G__ "[ Deaccess QIO failed ]\n", status); @@ -2968,482 +2108,6 @@ -#ifdef SET_DIR_ATTRIB - -/* - * 2006-10-04 SMS. - * vms_path_fixdown(). - * - * Convert VMS directory spec to VMS directory file name. That is, - * change "dev:[a.b.c.e]" to "dev:[a.b.c]e.DIR;1". The result (always - * larger than the source) is returned in the user's buffer. - */ - -#define DIR_TYPE_VER ".DIR;1" - -static char *vms_path_fixdown(ZCONST char *dir_spec, char *dir_file) -{ - char dir_close; - char dir_open; - unsigned i; - unsigned dir_spec_len; - - dir_spec_len = strlen(dir_spec); - if (dir_spec_len == 0) return NULL; - i = dir_spec_len - 1; - dir_close = dir_spec[i]; - - /* Identify the directory delimiters (which must exist). */ - if (dir_close == ']') - { - dir_open = '['; - } - else if (dir_close == '>') - { - dir_open = '<'; - } - else - { - return NULL; - } - - /* Find the beginning of the last directory name segment. */ - while ((i > 0) && ((dir_spec[i - 1] == '^') || - ((dir_spec[i] != '.') && (dir_spec[i] != dir_open)))) - { - i--; - } - - /* Form the directory file name from the pieces. */ - if (dir_spec[i] == dir_open) - { - /* Top-level directory. */ - sprintf(dir_file, "%.*s000000%c%.*s%s", - /* "dev:[" "000000" "]" */ - (i + 1), dir_spec, dir_close, - /* "a" ".DIR;1" */ - (dir_spec_len - i - 2), (dir_spec + i + 1), DIR_TYPE_VER); - } - else - { - /* Non-top-level directory. */ - sprintf(dir_file, "%.*s%c%.*s%s", - /* "dev:[a.b.c" "]" */ - i, dir_spec, dir_close, - /* "e" ".DIR;1" */ - (dir_spec_len - i - 2), (dir_spec + i + 1), DIR_TYPE_VER); - } - return dir_file; -} /* end function vms_path_fixdown(). */ - - - -/* Save directory attributes (as the archive's extra field). */ - -/* 2006-12-13 SMS. - * This could probably be made more efficient by analyzing the data - * here, extracting the important data, and saving only what's needed. - * Given the existing code, it seemed simpler to save them all here, and - * deal with what's important in set_direc_attribs(). - */ - -int defer_dir_attribs(__G__ pd) - __GDEF - direntry **pd; -{ - vmsdirattr *d_entry; - unsigned fnlen; - unsigned xlen; - - /* Allocate space to save the file (directory) name, the extra - * block, and all the other data needed by the extra-block data - * scanner functions. If that works, save the data. - */ - fnlen = strlen(G.filename); - xlen = G.lrec.extra_field_length; - d_entry = (vmsdirattr *) malloc(sizeof(vmsdirattr) + fnlen + xlen); - *pd = (direntry *) d_entry; - if (d_entry == (vmsdirattr *) NULL) - { - return PK_MEM; - } - - /* Save extra block length and data. */ - d_entry->xlen = xlen; - memcpy(d_entry->buf, G.extra_field, xlen); - - /* Set pointer to file (directory) name. */ - d_entry->fn = d_entry->buf + xlen; - - /* Save file (directory) name. */ - strcpy(d_entry->fn, G.filename); - /* Strip the closing ']' char, to allow proper sorting. */ - d_entry->fn[fnlen - 1] = '\0'; - - /* Save generic permission data from mapattr(). */ - d_entry->perms = G.pInfo->file_attr; - - /* Save G.lrec.last_mod_dos_datetime. */ - d_entry->mod_dos_datetime = G.lrec.last_mod_dos_datetime; - - return PK_OK; -} /* end function defer_dir_attribs() */ - - - -int set_direc_attribs(__G__ d) - __GDEF - direntry *d; -{ - uch *sav_ef_ptr; - int i; - int status; - int type; - ush attr; - struct XABPRO pro; - char dir_name[NAM_MAXRSS + 1]; - char warnmsg[NAM_MAXRSS + 128]; /* Name length + message length. */ - int retcode = PK_OK; - - /* Re-append the closing ']' character which has been stripped in - * defer_dir_attribs() for compatibility with generic sorting code. - */ - strcat(VmsAtt(d)->fn, "]"); - - /* Convert "[a.b.c]" form into "[a.b]c.DIR;1" */ - vms_path_fixdown(VmsAtt(d)->fn, dir_name); - - /* Dummy up critical global (G) data from the preserved directory - * attribute data. - */ - sav_ef_ptr = G.extra_field; - G.extra_field = (uch *)((VmsAtt(d)->xlen > 0) ? VmsAtt(d)->buf : NULL); - G.lrec.extra_field_length = VmsAtt(d)->xlen; - - /* Extract the VMS file attributes from the preserved attribute - * data, if they exist, and restore the date-time stamps. - */ - type = find_vms_attrs(__G__ (uO.D_flag <= 0)); - - if (outfab == NULL) - { - /* Default and PK schemes need a FAB. (IZ supplies one.) - * In a degenerate case, this could be the first use of fileblk, - * so we assume that we need to initialize it. - */ - fileblk = cc$rms_fab; /* Initialize FAB. */ - outfab = &fileblk; /* Set pointer used elsewhere. */ - } - - /* Arrange FAB-NAM[L] for file (directory) access. */ - if (type != VAT_NONE) - { - if (type == VAT_IZ) - { - /* Make an attribute descriptor list for the VMS creation and - * revision dates (which were stored in the IZ XABs by - * find_vms_attrs()). - */ - pka_idx = 0; - - if (xabrdt != NULL) - { - /* Revision date-time from XABRDT. */ - pka_atr[pka_idx].atr$w_size = 8; - pka_atr[pka_idx].atr$w_type = ATR$C_REVDATE; - pka_atr[pka_idx].atr$l_addr = GVTC &xabrdt->xab$q_rdt; - ++pka_idx; - } - if (xabdat != NULL) - { - /* Trust the XABRDT value for revision date. */ - if (xabrdt == NULL) - { - /* Revision date-time from XABDAT. */ - pka_atr[pka_idx].atr$w_size = 8; - pka_atr[pka_idx].atr$w_type = ATR$C_REVDATE; - pka_atr[pka_idx].atr$l_addr = GVTC &xabdat->xab$q_rdt; - ++pka_idx; - } - /* Creation date-time from XABDAT. */ - pka_atr[pka_idx].atr$w_size = 8; - pka_atr[pka_idx].atr$w_type = ATR$C_CREDATE; - pka_atr[pka_idx].atr$l_addr = GVTC &xabdat->xab$q_cdt; - ++pka_idx; - } - if (xabpro != NULL) - { - if ( uO.X_flag ) { - pka_atr[pka_idx].atr$w_size = 4; - pka_atr[pka_idx].atr$w_type = ATR$C_UIC; - pka_atr[pka_idx].atr$l_addr = GVTC &xabpro->xab$l_uic; - ++pka_idx; - } - attr = xabpro->xab$w_pro; - } - else - { - /* Revoke directory Delete permission for all. */ - attr = VmsAtt(d)->perms - | (((1<< XAB$V_NODEL)<< XAB$V_SYS)| - ((1<< XAB$V_NODEL)<< XAB$V_OWN)| - ((1<< XAB$V_NODEL)<< XAB$V_GRP)| - ((1<< XAB$V_NODEL)<< XAB$V_WLD)); - } - pka_atr[pka_idx].atr$w_size = 2; - pka_atr[pka_idx].atr$w_type = ATR$C_FPRO; - pka_atr[pka_idx].atr$l_addr = GVTC &attr; - ++pka_idx; - } - } - else - { - /* No VMS attribute data were found. Prepare to assemble - * non-VMS attribute data. - */ - pka_idx = 0; - - /* Get the (already converted) non-VMS permissions. */ - attr = VmsAtt(d)->perms; /* Use right-sized prot storage. */ - - /* Revoke directory Delete permission for all. */ - attr |= (((1<< XAB$V_NODEL)<< XAB$V_SYS)| - ((1<< XAB$V_NODEL)<< XAB$V_OWN)| - ((1<< XAB$V_NODEL)<< XAB$V_GRP)| - ((1<< XAB$V_NODEL)<< XAB$V_WLD)); - - pka_atr[pka_idx].atr$w_size = 2; - pka_atr[pka_idx].atr$w_type = ATR$C_FPRO; - pka_atr[pka_idx].atr$l_addr = GVTC &attr; - ++pka_idx; - - /* Restore directory date-time if user requests it (-D). */ - if (uO.D_flag <= 0) - { - /* Set the directory date-time from the non-VMS data. - * Dummy up the DOS-style modification date into global (G) - * data from the preserved directory attribute data. - */ - G.lrec.last_mod_dos_datetime = VmsAtt(d)->mod_dos_datetime; - - /* Extract date-time data from the normal attribute data. */ - set_default_datetime_XABs(__G); - - /* Make an attribute descriptor list for the VMS creation - * and revision dates (which were stored in the XABs by - * set_default_datetime_XABs()). - */ - pka_atr[pka_idx].atr$w_size = 8; - pka_atr[pka_idx].atr$w_type = ATR$C_CREDATE; - pka_atr[pka_idx].atr$l_addr = GVTC &dattim.xab$q_cdt; - ++pka_idx; - pka_atr[pka_idx].atr$w_size = 8; - pka_atr[pka_idx].atr$w_type = ATR$C_REVDATE; - pka_atr[pka_idx].atr$l_addr = GVTC &rdt.xab$q_rdt; - ++pka_idx; - } - - /* Set the directory protection from the non-VMS data. */ - - /* Terminate the attribute descriptor list. */ - pka_atr[pka_idx].atr$w_size = 0; /* End of list */ - pka_atr[pka_idx].atr$w_type = 0; - pka_atr[pka_idx].atr$l_addr = 0; /* NULL when DECC VAX gets fixed. */ - } - - nam = CC_RMS_NAM; /* Initialize NAM[L]. */ - outfab->FAB_NAM = &nam; /* Point FAB to NAM[L]. */ - - /* Point the FAB-NAM[L] to the VMS-format directory file name. */ - -#ifdef NAML$C_MAXRSS - - outfab->fab$l_dna = (char *) -1; /* Using NAML for default name. */ - outfab->fab$l_fna = (char *) -1; /* Using NAML for file name. */ - - /* Special ODS5-QIO-compatible name storage. */ - nam.naml$l_filesys_name = sys_nam; - nam.naml$l_filesys_name_alloc = sizeof(sys_nam); - -#endif /* NAML$C_MAXRSS */ - - FAB_OR_NAML(*outfab, nam).FAB_OR_NAML_FNA = dir_name; - FAB_OR_NAML(*outfab, nam).FAB_OR_NAML_FNS = strlen(dir_name); - - /* Expanded and resultant name storage. */ - nam.NAM_ESA = exp_nam; - nam.NAM_ESS = sizeof(exp_nam); - nam.NAM_RSA = res_nam; - nam.NAM_RSS = sizeof(res_nam); - - status = sys$parse(outfab); - if ( ERR(status) ) - { - sprintf(warnmsg, - "warning: set-dir-attributes failed ($parse) for %s.\n", - dir_name); - vms_msg(__G__ warnmsg, status); - retcode = PK_WARN; - goto cleanup_exit; - } - - /* Set the length in the device name descriptor. */ - pka_devdsc.dsc$w_length = (unsigned short) nam.NAM_DVI[0]; - - /* Open a channel to the disk device. */ - status = sys$assign(&pka_devdsc, &pka_devchn, 0, 0); - if ( ERR(status) ) - { - sprintf(warnmsg, - "warning: set-dir-attributes failed ($assign) for %s.\n", - dir_name); - vms_msg(__G__ warnmsg, status); - retcode = PK_WARN; - goto cleanup_exit; - } - - /* Move the directory ID from the NAM[L] to the FIB. - Clear the FID in the FIB, as we're using the name. - */ - for (i = 0; i < 3; i++) - { - pka_fib.FIB$W_DID[i] = nam.NAM_DID[i]; - pka_fib.FIB$W_FID[i] = 0; - } - -#ifdef NAML$C_MAXRSS - - /* Enable fancy name characters. Note that "fancy" here does - not include Unicode, for which there's no support elsewhere. - */ - pka_fib.fib$v_names_8bit = 1; - pka_fib.fib$b_name_format_in = FIB$C_ISL1; - - /* ODS5 Extended names used as input to QIO have peculiar - encoding (perhaps to minimize storage?), so the special - filesys_name result (typically containing fewer carets) must - be used here. - */ - pka_fnam.dsc$a_pointer = nam.naml$l_filesys_name; - pka_fnam.dsc$w_length = nam.naml$l_filesys_name_size; - -#else /* !NAML$C_MAXRSS */ - - /* ODS2-only: Use the whole name. */ - pka_fnam.dsc$a_pointer = nam.NAM_L_NAME; - pka_fnam.dsc$w_length = nam.NAM_B_NAME + nam.NAM_B_TYPE + nam.NAM_B_VER; - -#endif /* ?NAML$C_MAXRSS */ - - /* 2007-07-13 SMS. - * Our freshly created directory can easily contain fewer files than - * the original archived directory (for example, if not all the - * files in the original directory were included in the archive), so - * its size may differ from that of the archived directory. Thus, - * simply restoring the original RECATTR attributes structure, which - * includes EFBLK (and so on) can cause "SYSTEM-W-BADIRECTORY, bad - * directory file format" complaints. Instead, we overwrite - * selected archived attributes with current attributes, to avoid - * setting obsolete/inappropriate attributes on the newly created - * directory file. - * - * First, see if there is a RECATTR structure about which we need to - * worry. - */ - for (i = 0; pka_atr[i].atr$w_type != 0; i++) - { - if (pka_atr[i].atr$w_type == ATR$C_RECATTR) - { - /* We found a RECATTR structure which (we must assume) needs - * adjustment. Retrieve the RECATTR data for the existing - * (newly created) directory file. - */ - status = sys$qiow(0, /* event flag */ - pka_devchn, /* channel */ - IO$_ACCESS, /* function code */ - &pka_acp_iosb, /* IOSB */ - 0, /* AST address */ - 0, /* AST parameter */ - &pka_fibdsc, /* P1 = File Info Block */ - &pka_fnam, /* P2 = File name */ - 0, /* P3 = Rslt nm len */ - 0, /* P4 = Rslt nm str */ - pka_recattr, /* P5 = Attributes */ - 0); /* P6 (not used) */ - - /* If initial success, then get the final status from the IOSB. */ - if ( !ERR(status) ) - status = pka_acp_iosb.status; - - if ( ERR(status) ) - { - sprintf(warnmsg, - "warning: set-dir-attributes failed ($qiow acc) for %s.\n", - dir_name); - vms_msg(__G__ warnmsg, status); - retcode = PK_WARN; - } - else - { - /* We should have valid RECATTR data. Overwrite the - * critical bits of the archive RECATTR structure with - * the current bits. The book says that an attempt to - * modify HIBLK will be ignored, and FFBYTE should - * always be zero, but safety is cheap. - */ - struct fatdef *ptr_recattr; - - ptr_recattr = (struct fatdef *) pka_atr[i].atr$l_addr; - ptr_recattr->fat$l_hiblk = pka_rattr.fat$l_hiblk; - ptr_recattr->fat$l_efblk = pka_rattr.fat$l_efblk; - ptr_recattr->fat$w_ffbyte = pka_rattr.fat$w_ffbyte; - } - /* There should be only one RECATTR structure in the list, so - * escape from the loop after the first/only one has been - * processed. - */ - break; - } - } - - /* Modify the file (directory) attributes. */ - status = sys$qiow(0, /* event flag */ - pka_devchn, /* channel */ - IO$_MODIFY, /* function code */ - &pka_acp_iosb, /* IOSB */ - 0, /* AST address */ - 0, /* AST parameter */ - &pka_fibdsc, /* P1 = File Info Block */ - &pka_fnam, /* P2 = File name */ - 0, /* P3 = Rslt nm len */ - 0, /* P4 = Rslt nm str */ - pka_atr, /* P5 = Attributes */ - 0); /* P6 (not used) */ - - /* If initial success, then get the final status from the IOSB. */ - if ( !ERR(status) ) - status = pka_acp_iosb.status; - - if ( ERR(status) ) - { - sprintf(warnmsg, - "warning: set-dir-attributes failed ($qiow mod) for %s.\n", - dir_name); - vms_msg(__G__ warnmsg, status); - retcode = PK_WARN; - } - sys$dassgn(pka_devchn); -cleanup_exit: - free_up(); /* Free FAB, XAB storage. */ - free(d); /* Free directory attribute storage. */ - G.extra_field = sav_ef_ptr; /* Restore original pointer. */ - return retcode; -} /* end function set_direc_attribs() */ - -#endif /* SET_DIR_ATTRIB */ - - - #ifdef TIMESTAMP /* Nonzero if `y' is a leap year, else zero. */ @@ -3614,28 +2278,16 @@ {0, 0, 0} }; - fileblk = cc$rms_fab; /* Initialize FAB. */ - nam = CC_RMS_NAM; /* Initialize NAM[L]. */ - fileblk.FAB_NAM = &nam; /* Point FAB to NAM[L]. */ - -#ifdef NAML$C_MAXRSS - - fileblk.fab$l_dna = (char *) -1; /* Using NAML for default name. */ - fileblk.fab$l_fna = (char *) -1; /* Using NAML for file name. */ - - /* Special ODS5-QIO-compatible name storage. */ - nam.naml$l_filesys_name = sys_nam; - nam.naml$l_filesys_name_alloc = sizeof(sys_nam); - -#endif /* NAML$C_MAXRSS */ - - FAB_OR_NAML(fileblk, nam).FAB_OR_NAML_FNA = (char *)fname; - FAB_OR_NAML(fileblk, nam).FAB_OR_NAML_FNS = strlen(fname); - - nam.NAM_ESA = exp_nam; - nam.NAM_ESS = sizeof(exp_nam); - nam.NAM_RSA = res_nam; - nam.NAM_RSS = sizeof(res_nam); + fileblk = cc$rms_fab; + fileblk.fab$l_fna = (char *)fname; + fileblk.fab$b_fns = strlen(fname); + + nam = cc$rms_nam; + fileblk.fab$l_nam = &nam; + nam.nam$l_esa = exp_nam; + nam.nam$b_ess = sizeof(exp_nam); + nam.nam$l_rsa = res_nam; + nam.nam$b_rss = sizeof(res_nam); if ( ERR(status = sys$parse(&fileblk)) ) { @@ -3643,58 +2295,32 @@ return -1; } - pka_devdsc.dsc$w_length = (unsigned short)nam.NAM_DVI[0]; + pka_devdsc.dsc$w_length = (unsigned short)nam.nam$t_dvi[0]; - if ( ERR(status = sys$assign(&pka_devdsc, &pka_devchn, 0, 0)) ) + if ( ERR(status = sys$assign(&pka_devdsc,&pka_devchn,0,0)) ) { vms_msg(__G__ "stamp_file: sys$assign failed.\n", status); return -1; } - /* Load the descriptor with the appropriate name data: */ -#ifdef NAML$C_MAXRSS + pka_fnam.dsc$a_pointer = nam.nam$l_name; + pka_fnam.dsc$w_length = nam.nam$b_name + nam.nam$b_type + nam.nam$b_ver; + + for (i=0;i<3;i++) + { + pka_fib.FIB$W_DID[i]=nam.nam$w_did[i]; + pka_fib.FIB$W_FID[i]=nam.nam$w_fid[i]; + } - /* Enable fancy name characters. Note that "fancy" here does - not include Unicode, for which there's no support elsewhere. - */ - pka_fib.fib$v_names_8bit = 1; - pka_fib.fib$b_name_format_in = FIB$C_ISL1; - - /* ODS5 Extended names used as input to QIO have peculiar - encoding (perhaps to minimize storage?), so the special - filesys_name result (typically containing fewer carets) must - be used here. - */ - pka_fnam.dsc$a_pointer = nam.naml$l_filesys_name; - pka_fnam.dsc$w_length = nam.naml$l_filesys_name_size; - -#else /* !NAML$C_MAXRSS */ - - /* Extract only the name.type;version. */ - pka_fnam.dsc$a_pointer = nam.NAM_L_NAME; - pka_fnam.dsc$w_length = nam.NAM_B_NAME + nam.NAM_B_TYPE + nam.NAM_B_VER; - -#endif /* ?NAML$C_MAXRSS */ - - /* Move the directory ID from the NAM[L] to the FIB. - Clear the FID in the FIB, as we're using the name. - */ - for (i = 0; i < 3; i++) - { - pka_fib.FIB$W_DID[i] = nam.NAM_DID[i]; - pka_fib.FIB$W_FID[i] = 0; - } - - /* Use the IO$_ACCESS function to return info about the file. - This way, the file is not opened, and the expiration and - revision dates are not modified. - */ + /* Use the IO$_ACCESS function to return info about the file */ + /* Note, used this way, the file is not opened, and the expiration */ + /* and revision dates are not modified */ status = sys$qiow(0, pka_devchn, IO$_ACCESS, - &pka_acp_iosb, 0, 0, - &pka_fibdsc, &pka_fnam, 0, 0, Atr, 0); + &pka_acp_sb, 0, 0, + &pka_fibdsc, &pka_fnam, 0, 0, &Atr, 0); if ( !ERR(status) ) - status = pka_acp_iosb.status; + status = pka_acp_sb.status; if ( ERR(status) ) { @@ -3706,16 +2332,12 @@ uxtime2vmstime(modtime, Cdate); memcpy(Rdate, Cdate, sizeof(Cdate)); - /* Note: Part of the FIB was cleared by earlier QIOW, so reset it. */ + /* note, part of the FIB was cleared by earlier QIOW, so reset it */ pka_fib.FIB$L_ACCTL = FIB$M_NORECORD; - - /* Move the directory ID from the NAM[L] to the FIB. - Clear the FID in the FIB, as we're using the name. - */ - for (i = 0; i < 3; i++) + for (i=0;i<3;i++) { - pka_fib.FIB$W_DID[i] = nam.NAM_DID[i]; - pka_fib.FIB$W_FID[i] = 0; + pka_fib.FIB$W_DID[i]=nam.nam$w_did[i]; + pka_fib.FIB$W_FID[i]=nam.nam$w_fid[i]; } /* Use the IO$_MODIFY function to change info about the file */ @@ -3723,11 +2345,11 @@ /* normally cause the expiration and revision dates to be modified. */ /* Using FIB$M_NORECORD prohibits this from happening. */ status = sys$qiow(0, pka_devchn, IO$_MODIFY, - &pka_acp_iosb, 0, 0, - &pka_fibdsc, &pka_fnam, 0, 0, Atr, 0); + &pka_acp_sb, 0, 0, + &pka_fibdsc, &pka_fnam, 0, 0, &Atr, 0); if ( !ERR(status) ) - status = pka_acp_iosb.status; + status = pka_acp_sb.status; if ( ERR(status) ) { @@ -3825,36 +2447,21 @@ -static char vms_msgbuf[256]; /* VMS-specific error message. */ -static $DESCRIPTOR(vms_msgbuf_dscr, vms_msgbuf); - - -char *vms_msg_text(void) +static void vms_msg(__GPRO__ char *string, int status) { - return vms_msgbuf; -} - + static char msgbuf[256]; -static int vms_msg_fetch(int status) -{ + $DESCRIPTOR(msgd, msgbuf); int msglen = 0; - int sts; - sts = lib$sys_getmsg(&status, &msglen, &vms_msgbuf_dscr, 0, 0); - - vms_msgbuf[msglen] = '\0'; - return sts; -} - - -static void vms_msg(__GPRO__ ZCONST char *string, int status) -{ - if (ERR(vms_msg_fetch(status))) + if (ERR(lib$sys_getmsg(&status, &msglen, &msgd, 0, 0))) Info(slide, 1, ((char *)slide, "%s[ VMS status = %d ]\n", string, status)); else - Info(slide, 1, ((char *)slide, - "%s[ %s ]\n", string, vms_msgbuf)); + { + msgbuf[msglen] = '\0'; + Info(slide, 1, ((char *)slide, "%s[ %s ]\n", string, msgbuf)); + } } @@ -3868,103 +2475,70 @@ * cannot find either fred.zip;4 or fred.zip;4.zip. * when it wasn't really looking for "fred.zip;4.zip". */ -/* 2005-08-11 SPC. - * The calling interface for the VMS version of do_wild() differs from all - * other implementations in the way it returns status info. - * There are three return states: - * a) pointer to buffer with non-zero-length string - * - canonical full filespec of existing file (search succeeded). - * b) pointer to buffer with zero-length string - * - initial file search has failed, extended VMS error info is available - * through call to vms_msg_text(). - * c) NULL pointer - * - repeated file search has failed, because - * i) the list of matches for the pattern has been exhausted after at - * least one successful attempt. - * ii) a second attempt for a failed initial pattern (where do_wild() - * has returned a zero-length string) was tried and failed again. - */ + char *do_wild( __G__ wld ) __GDEF ZCONST char *wld; { int status; - static char filenam[NAM_MAXRSS + 1]; - static char efn[NAM_MAXRSS]; - static char last_wild[NAM_MAXRSS + 1]; + static char filenam[256]; + static char efn[256]; + static char last_wild[256]; static struct FAB fab; - static struct NAM_STRUCT nam; - static int first_call = 1; - static ZCONST char deflt[] = "[]*.ZIP"; + static struct NAM nam; + static int first_call=1; + static ZCONST char deflt[] = "[]*.zip"; if ( first_call || strcmp(wld, last_wild) ) { /* (Re)Initialize everything */ strcpy( last_wild, wld ); + first_call = 1; /* New wild spec */ - fab = cc$rms_fab; /* Initialize FAB. */ - nam = CC_RMS_NAM; /* Initialize NAM[L]. */ - fab.FAB_NAM = &nam; /* Point FAB to NAM[L]. */ - -#ifdef NAML$C_MAXRSS - - fab.fab$l_dna = (char *) -1; /* Using NAML for default name. */ - fab.fab$l_fna = (char *) -1; /* Using NAML for file name. */ - -#endif /* NAML$C_MAXRSS */ - - FAB_OR_NAML(fab, nam).FAB_OR_NAML_DNA = (char *) deflt; - FAB_OR_NAML(fab, nam).FAB_OR_NAML_DNS = sizeof(deflt) - 1; - - FAB_OR_NAML(fab, nam).FAB_OR_NAML_FNA = last_wild; - FAB_OR_NAML(fab, nam).FAB_OR_NAML_FNS = strlen(last_wild); + fab = cc$rms_fab; + fab.fab$l_fna = last_wild; + fab.fab$b_fns = strlen(last_wild); + fab.fab$l_dna = (char *) deflt; + fab.fab$b_dns = sizeof(deflt)-1; + fab.fab$l_nam = &nam; + nam = cc$rms_nam; + nam.nam$l_esa = efn; + nam.nam$b_ess = sizeof(efn)-1; + nam.nam$l_rsa = filenam; + nam.nam$b_rss = sizeof(filenam)-1; - nam.NAM_ESA = efn; - nam.NAM_ESS = sizeof(efn)-1; - nam.NAM_RSA = filenam; - nam.NAM_RSS = sizeof(filenam)-1; + if ( !OK(sys$parse(&fab)) ) + return (char *)NULL; /* Initialization failed */ first_call = 0; - /* 2005-08-08 SMS. - * Parse the file spec. If sys$parse() fails, save the VMS - * error message for later use, and return an empty string. + /* 2004-11-23 SMS. + * Don't do this. I see no good reason to lie about the file + * being sought just because it wasn't found. If you find one, + * please explain it here when you change this code back. I'll + * admit that the full file spec from sys$parse() may be ugly, + * but at least it's never misleading. */ - nam.NAM_NOP = NAM_M_SYNCHK; /* Syntax-only analysis. */ - if ( !OK(status = sys$parse(&fab)) ) + status = sys$search(&fab); + if ( !OK(status) ) { - vms_msg_fetch(status); - filenam[0] = '\0'; /* Initialization failed */ +#if 0 + strcpy( filenam, wld ); return filenam; +#endif /* 0 */ } - /* 2005-11-16 SMS. - * If syntax-only parse worked, re-parse normally so that - * sys$search() will work properly. Regardless of parse error, - * leave filenam[] as-was. - */ - nam.NAM_NOP = 0; /* Normal analysis. */ - if ( OK(status = sys$parse(&fab)) ) - { - status = sys$search(&fab); - } - - if ( !OK(status) ) - { - /* Save the VMS error message for later use. */ - vms_msg_fetch(status); - } } else { if ( !OK(sys$search(&fab)) ) { - first_call = 1; /* Reinitialize next time */ + first_call = 1; /* Reinitialize next time */ return (char *)NULL; } } - filenam[nam.NAM_RSL] = '\0'; /* Add the NUL terminator. */ + filenam[nam.nam$b_rsl] = 0; /* Add the NUL terminator. */ return filenam; } /* end function do_wild() */ @@ -3992,9 +2566,13 @@ /* not have that service, undef SETDFPROT. */ /* IM: Maybe it's better to put this to Makefile */ /* and DESCRIP.MMS */ + #ifdef SETDFPROT +# ifndef sys$setdfprot extern int sys$setdfprot(); -#endif +# endif /* !sys$setdfprot */ +#endif /* SETDFPROT */ + int mapattr(__G) __GDEF @@ -4002,7 +2580,8 @@ ulg tmp = G.crec.external_file_attributes; ulg theprot; static ulg defprot = (ulg)-1L, - sysdef, owndef, grpdef, wlddef; /* Default protection fields */ + sysdef,owndef,grpdef,wlddef; /* Default protection fields */ + /* IM: The only field of XABPRO we need to set here is */ /* file protection, so we need not to change type */ @@ -4061,23 +2640,24 @@ case QDOS_: case TANDEM_: { - int r = FALSE; unsigned uxattr = (unsigned)(tmp >> 16); /* drwxrwxrwx */ + int r = FALSE; if (uxattr == 0 && G.extra_field) { /* Some (non-Info-ZIP) implementations of Zip for Unix and - * VMS (and probably others ??) leave 0 in the upper 16-bit - * part of the external_file_attributes field. Instead, they - * store file permission attributes in some e.f. block. - * As a work-around, we search for the presence of one of - * these extra fields and fall back to the MSDOS compatible - * part of external_file_attributes if one of the known - * e.f. types has been detected. - * Later, we might implement extraction of the permission - * bits from the VMS extra field. But for now, the work-around - * should be sufficient to provide "readable" extracted files. - * (For ASI Unix e.f., an experimental remap of the e.f. - * mode value IS already provided!) + VMS (and probably others ??) leave 0 in the upper 16-bit + part of the external_file_attributes field. Instead, + they store file permission attributes in an e.f. block. + As a work-around, we search for the presence of one of + these extra fields and fall back to the MSDOS compatible + part of external_file_attributes if one of the known + e.f. types has been detected. + Later, we might implement extraction of the permission + bits from the VMS extra field. But for now, the + work-around should be sufficient to provide "readable" + extracted files. + (For ASI Unix e.f., an experimental remap of the e.f. + mode value IS already provided!) */ ush ebID; unsigned ebLen; @@ -4111,14 +2691,6 @@ } } if (!r) { -#ifdef SYMLINKS - /* Check if the file is a (POSIX-compatible) symbolic link. - * We restrict symlink support to those "made-by" hosts that - * are known to support symbolic links. - */ - G.pInfo->symlink = S_ISLNK(uxattr) && - SYMLINK_HOST(G.pInfo->hostnum); -#endif theprot = (unix_to_vms[uxattr & 07] << XAB$V_WLD) | (unix_to_vms[(uxattr>>3) & 07] << XAB$V_GRP) | (unix_to_vms[(uxattr>>6) & 07] << XAB$V_OWN); @@ -4157,321 +2729,12 @@ } /* end function mapattr() */ -#define PATH_DEFAULT "SYS$DISK:[]" - -/* dest_struct_level() - - Returns file system structure level for argument, negative on - error. -*/ - -int dest_struct_level(char *path) -{ - int acp_code; - -#ifdef DVI$C_ACP_F11V5 - - /* Should know about ODS5 file system. Do actual check. - (This should be non-VAX with __CRTL_VER >= 70200000.) - */ - - int sts; - - struct FAB fab; - struct NAM_STRUCT nam; - char e_name[NAM_MAXRSS + 1]; - - struct dsc$descriptor_s dev_descr = - { 0, DSC$K_DTYPE_T, DSC$K_CLASS_S, 0 }; - - fab = cc$rms_fab; /* Initialize FAB. */ - nam = CC_RMS_NAM; /* Initialize NAM[L]. */ - fab.FAB_NAM = &nam; /* Point FAB to NAM[L]. */ - -#ifdef NAML$C_MAXRSS - - fab.fab$l_dna = (char *) -1; /* Using NAML for default name. */ - fab.fab$l_fna = (char *) -1; /* Using NAML for file name. */ - -#endif /* NAML$C_MAXRSS */ - - FAB_OR_NAML(fab, nam).FAB_OR_NAML_DNA = PATH_DEFAULT; - FAB_OR_NAML(fab, nam).FAB_OR_NAML_DNS = strlen(PATH_DEFAULT); - - FAB_OR_NAML(fab, nam).FAB_OR_NAML_FNA = path; - FAB_OR_NAML(fab, nam).FAB_OR_NAML_FNS = strlen(path); - - nam.NAM_ESA = e_name; - nam.NAM_ESS = sizeof(e_name) - 1; - - nam.NAM_NOP = NAM_M_SYNCHK; /* Syntax-only analysis. */ - sts = sys$parse(&fab); - - if ((sts & STS$M_SUCCESS) == STS$K_SUCCESS) - { - /* Load resultant device name into device descriptor. */ - dev_descr.dsc$a_pointer = nam.NAM_L_DEV; - dev_descr.dsc$w_length = nam.NAM_B_DEV; - - /* Get filesystem type code. - (Text results for this item code have been unreliable.) - */ - sts = lib$getdvi(&((int) DVI$_ACPTYPE), - 0, - &dev_descr, - &acp_code, - 0, - 0); - - if ((sts & STS$M_SUCCESS) != STS$K_SUCCESS) - { - acp_code = -2; - } - } - else - { - acp_code = -1; - } - -#else /* !DVI$C_ACP_F11V5 */ - -/* Too old for ODS5 file system. Return level 2. */ - - acp_code = DVI$C_ACP_F11V2; - -#endif /* ?DVI$C_ACP_F11V5 */ - - return acp_code; -} - -/* 2005-02-12 SMS. - Note that these name conversion functions do no length checking. - Buffer overflows are possible. -*/ - -static void adj_dir_name_ods2(char *dest, char *src, int src_len) -{ - /* The source string (src) typically extends beyond the directory - segment of interest, hence the confining src_len argument. - */ - unsigned char uchr; - unsigned char prop; - char * src_last; - - for (src_last = src + src_len; src < src_last; src++) - { - prop = char_prop[uchr = *src]; /* Get source char, properties. */ - if ((prop & 2) != 0) /* Up-case lower case. */ - { - uchr -= ('a' - 'A'); /* (Simple-fast is adequate.) */ - } - else if ((prop & 1) == 0) /* Replace invalid char */ - { - uchr = '_'; /* with "_". */ - } - *dest++ = uchr; /* Store good char. */ - } - *dest = '\0'; /* Terminate destination. */ -} - - -static void adj_dir_name_ods5(char *dest, char *src, int src_len) -{ - /* The source string (src) typically extends beyond the directory - segment of interest, hence the confining src_len argument. - */ - unsigned char uchr; - unsigned char prop; - char * src_last; - - for (src_last = src + src_len; src < src_last; src++) - { - prop = char_prop[uchr = *src]; /* Get source char, props. */ - prop = char_prop[uchr]; /* Get source char props. */ - if ((prop & (32+8+4)) != 0) /* Escape 1-char, including */ - { /* SP and dot. */ - *dest++ = '^'; /* Insert caret. */ - if ((prop & 8) != 0) /* Replace SP with "_". */ - { - uchr = '_'; - } - else if (uchr == '?') - { - uchr = '/'; /* Replace "?" with "/". */ - } - } - else if ((prop & 64) != 0) /* Escape hex-hex. */ - { - *dest++ = '^'; /* Insert caret. */ - *dest++ = hex_digit[uchr >> 4]; /* First hex digit. */ - uchr = hex_digit[uchr & 15]; /* Second hex digit. */ - } - else if ((prop & 16) == 0) /* Replace invalid with "_". */ - { - uchr = '_'; - } - *dest++ = uchr; /* Put good (or last) char. */ - } - *dest = '\0'; /* Terminate destination. */ -} - - -static void adj_file_name_ods2(char *dest, char *src) -{ - unsigned char uchr; - unsigned char prop; - char *endp; - char *versionp; - char *last_dot; - - endp = src + strlen(src); /* Pointer to the NUL-terminator of src. */ - /* Starting at the end, find the last non-decimal-digit. */ - versionp = endp; - while ((--versionp >= src) && isdigit(*versionp)); - - /* Left-most non-digit of a valid version is ";" (or perhaps "."). */ - if ((*versionp != ';') && ((uO.Y_flag == 0) || (*versionp != '.'))) - { - /* No valid version. The last dot is the last dot. */ - versionp = endp; - } - else - { /* Some kind of valid version. */ - if (!uO.V_flag) /* Not -V, so cut off version. */ - { - *versionp = '\0'; - } - else if (*versionp == '.') - { - *versionp = ';'; /* Replace version dot with ";". */ - } - } - - /* 2008-11-04 SMS. - * Simplified the scheme here to escape all non-last dots. This - * should work when Zip works correctly (Zip 3.1). - * Note that if no last dot is found, the non-last-dot test below - * will always fail, but that's not a problem. - */ - - /* Find the last dot (if any). */ - last_dot = versionp; - while ((--last_dot >= src) && (*last_dot != '.')); - - /* Critical features having been located, transform the name. */ - while ((uchr = *src++) != '\0') /* Get source character. */ - { - /* Note that "src" has been incremented, affecting "src <=". */ - prop = char_prop[uchr]; /* Get source char properties. */ - if ((prop & 2) != 0) /* Up-case lower case. */ - { - uchr -= ('a' - 'A'); /* (Simple-fast is adequate.) */ - } - else if ((prop & 4) != 0) /* Dot. */ - { - if (src <= last_dot) /* Replace non-last dot */ - { - uchr = '_'; /* with "_". */ - } - } - else if ((prop & 1) == 0) /* Replace SP or invalid char, */ - { - if (src <= versionp) /* if not in version, */ - { - uchr = '_'; /* with "_". */ - } - } - *dest++ = uchr; /* Store good char. */ - } - *dest = '\0'; /* Terminate destination. */ -} - - -static void adj_file_name_ods5(char *dest, char *src) -{ - unsigned char uchr; - unsigned char prop; - char *endp; - char *versionp; - char *last_dot; - - endp = src + strlen(src); /* Pointer to the NUL-terminator of src. */ - /* Starting at the end, find the last non-decimal-digit. */ - versionp = endp; - while ((--versionp >= src) && isdigit(*versionp)); - - /* Left-most non-digit of a valid version is ";" (or perhaps "."). */ - if ((*versionp != ';') && ((uO.Y_flag == 0) || (*versionp != '.'))) - { - /* No valid version. The last dot is the last dot. */ - versionp = endp; - } - else - { /* Some kind of valid version. */ - if (!uO.V_flag) /* Not -V, so cut off version. */ - { - *versionp = '\0'; - } - else if (*versionp == '.') - { - *versionp = ';'; /* Replace version dot with ";". */ - } - } - - /* 2008-11-04 SMS. - * Simplified the scheme here to escape all non-last dots. This - * should work when Zip works correctly (Zip 3.1). - * Note that if no last dot is found, the non-last-dot test below - * will always fail, but that's not a problem. - */ - - /* Find the last dot (if any). */ - last_dot = versionp; - while ((--last_dot >= src) && (*last_dot != '.')); - - /* Critical features having been located, transform the name. */ - while ((uchr = *src++) != '\0') /* Get source character. */ - { - /* Note that "src" has been incremented, affecting "src <=". */ - prop = char_prop[uchr]; /* Get source char props. */ - if ((prop & (32+8)) != 0) /* Escape 1-char, including */ - { /* SP (but not dot). */ - if (src <= versionp) /* No escapes for version. */ - { - *dest++ = '^'; /* Insert caret. */ - if ((prop & 8) != 0) /* Replace SP with "_". */ - { - uchr = '_'; - } - else if (uchr == '?') - { - uchr = '/'; /* Replace "?" with "/". */ - } - } - } - else if ((prop & 4) != 0) /* Dot. */ - { - if (src <= last_dot) /* Escape non-last dot */ - { - *dest++ = '^'; /* Insert caret. */ - } - } - else if ((prop & 64) != 0) /* Escape hex-hex. */ - { - *dest++ = '^'; /* Insert caret. */ - *dest++ = hex_digit[uchr >> 4]; /* First hex digit. */ - uchr = hex_digit[uchr & 15]; /* Second hex digit. */ - } - else if ((prop & 16) == 0) /* Replace invalid with "_". */ - { - uchr = '_'; - } - *dest++ = uchr; /* Put good (or last) char. */ - } - *dest = '\0'; /* Terminate destination. */ -} +#ifndef EEXIST +# include /* For mkdir() status codes */ +#endif +#include /* for filescan */ # define FN_MASK 7 # define USE_DEFAULT (FN_MASK+1) @@ -4487,9 +2750,7 @@ * END - free dynamically allocated space prior to program exit */ -static int created_dir; -static int dest_file_sys_level; -static int ods2_names = -1; +static int created_dir; int mapname(__G__ renamed) /* returns: */ @@ -4503,14 +2764,14 @@ __GDEF int renamed; { - char pathcomp[FILNAMSIZ]; /* Path-component buffer. */ - char *last_slash; /* Last slash in path. */ - char *next_slash; /* Next slash in path. */ - int dir_len; /* Length of a directory segment. */ - - char *cp = (char *)NULL; /* character pointer */ - int killed_ddot = FALSE; /* Set when skipping "../" pathcomp. */ + char pathcomp[FILNAMSIZ]; /* path-component buffer */ + char *pp, *cp=(char *)NULL; /* character pointers */ + char *lastsemi = NULL; /* pointer to last semi-colon in pathcomp */ + char *last_dot = NULL; /* last dot not converted to underscore */ + int dotname = FALSE; /* flag: path component begins with dot */ + int killed_ddot = FALSE; /* is set when skipping "../" pathcomp */ int error = MPN_OK; + register unsigned workch; /* hold the character being tested */ if ( renamed ) { @@ -4531,80 +2792,80 @@ created_dir = FALSE; /* not yet */ - /* If not yet known, determine the destination file system type - (ODS2 or ODS5). (If the user specified a destination, we should - already have this, so use the default destination.) - */ - if (ods2_names < 0) - { - /* If user doesn't force ODS2, set flag according to destination. */ - if (uO.ods2_flag == 0) - { - ods2_names = - (dest_struct_level(PATH_DEFAULT) <= DVI$C_ACP_F11V2); - } - else - { - ods2_names = 1; /* User demands ODS2 names. */ - } - } - /* GRR: for VMS, convert to internal format now or later? or never? */ if (checkdir(__G__ pathcomp, INIT) == 10) - return MPN_NOMEM; /* Initialize path buffer, unless no memory. */ + return MPN_NOMEM; /* initialize path buffer, unless no memory */ - /* Locate and treat directory segments one at a time. - When pointer exceeds last_slash, then directory segments are - done, and only the name (with version?) remains. - */ - - *pathcomp = '\0'; /* Initialize translation buffer. */ - last_slash = strrchr(G.filename, '/'); /* Find last slash. */ - - if (uO.jflag) /* If junking directories, */ - cp = last_slash; /* start at (will be after) the last slash. */ - - if (cp == NULL) /* If no '/', or keeping directories, */ - cp = G.filename; /* start at the front of the pathname. */ - else /* Else, with directories to junk, */ - ++cp; /* start after the last slash. */ - - /* Loop through the directory segments. */ - while (cp < last_slash) - { - next_slash = strchr(cp, '/'); /* Find the next slash. */ - dir_len = next_slash- cp; - - /* Filter out unacceptable directories. */ - if ((dir_len == 2) && (strncmp(cp, "..", 2) == 0)) - { /* Double dot. */ - if (!uO.ddotflag) /* Not allowed. Skip it. */ - { - dir_len = 0; - killed_ddot = TRUE; /* Record skipping double-dot. */ - } - } - else if ((dir_len == 1) && (strncmp(cp, ".", 1) == 0)) - { /* Single dot. No-op. Skip it. */ - dir_len = 0; - } + *pathcomp = '\0'; /* initialize translation buffer */ + pp = pathcomp; /* point to translation buffer */ + if (uO.jflag) /* junking directories */ +/* GRR: watch out for VMS version... */ + cp = (char *)strrchr(G.filename, '/'); + if (cp == NULL) /* no '/' or not junking dirs */ + cp = G.filename; /* point to internal zipfile-member pathname */ + else + ++cp; /* point to start of last component of path */ + +/*--------------------------------------------------------------------------- + Begin main loop through characters in filename. + ---------------------------------------------------------------------------*/ + + while ((workch = (uch)*cp++) != 0) { + + switch (workch) { + case '/': /* can assume -j flag not given */ + *pp = '\0'; + if (((error = checkdir(__G__ pathcomp, APPEND_DIR)) + & MPN_MASK) > MPN_INF_TRUNC) + return error; + pp = pathcomp; /* reset conversion buffer for next piece */ + last_dot = NULL; /* directory names must not contain dots */ + lastsemi = NULL; /* leave directory semi-colons alone */ + break; + + case '.': + if (pp == pathcomp) { /* nothing appended yet... */ + if (*cp == '/') { /* don't bother appending a "./" */ + ++cp; /* component to the path: skip */ + /* to next char after the '/' */ + break; + } else if (*cp == '.' && cp[1] == '/') { /* "../" */ + if (!uO.ddotflag) { /* "../" dir traversal detected */ + cp += 2; /* skip over behind the '/' */ + killed_ddot = TRUE; + } else { + *pp++ = '.'; /* add first dot, unchanged... */ + *pp++ = '.'; /* add second dot, unchanged... */ + ++cp; /* skip second dot */ + } /* next char is the '/' */ + break; + } + } + last_dot = pp; /* point at last dot so far... */ + *pp++ = '_'; /* convert dot to underscore for now */ + break; + + case ';': /* start of VMS version? */ + if (lastsemi) + *lastsemi = '_'; /* convert previous one to underscore */ + lastsemi = pp; + *pp++ = ';'; /* keep for now; remove VMS vers. later */ + break; + + case ':': /* drive names illegal in zipfile, so no ':' allowed */ + case ' ': + *pp++ = '_'; + break; + + default: + if ( isalpha(workch) || isdigit(workch) || + workch=='$' || workch=='-' ) + *pp++ = (char)workch; + else + *pp++ = '_'; /* convert everything else to underscore */ + break; + } /* end switch */ - /* If non-null, acceptable directory, then process it. */ - if (dir_len > 0) - { - if (ods2_names) /* Make directory name ODS2-compliant. */ - { - adj_dir_name_ods2(pathcomp, cp, dir_len); - } - else /* Make directory name ODS5-compliant. */ - { - adj_dir_name_ods5(pathcomp, cp, dir_len); - } - if (((error = checkdir(__G__ pathcomp, APPEND_DIR)) - & MPN_MASK) > MPN_INF_TRUNC) - return error; - } - cp = next_slash+ 1; /* Continue at the next name segment. */ } /* end while loop */ /* Show warning when stripping insecure "parent dir" path components */ @@ -4616,12 +2877,13 @@ error = (error & MPN_MASK) | PK_WARN; } - /* If there is one, adjust the name.type;version segment. */ - if (strlen(cp) == 0) - { - /* Directory only, no file name. Create the directory, as needed. - Report directory creation to user. - */ +/*--------------------------------------------------------------------------- + Report if directory was created (and no file to create: filename ended + in '/'), check name to be sure it exists, and combine path and name be- + fore exiting. + ---------------------------------------------------------------------------*/ + + if (G.filename[strlen(G.filename) - 1] == '/') { checkdir(__G__ "", APPEND_NAME); /* create directory, if not found */ checkdir(__G__ G.filename, GETPATH); if (created_dir) { @@ -4636,14 +2898,27 @@ return (error & ~MPN_MASK) | MPN_INF_SKIP; } - /* Process the file name. */ - if (ods2_names) /* Make file name ODS2-compliant. */ - { - adj_file_name_ods2(pathcomp, cp); + *pp = '\0'; /* done with pathcomp: terminate it */ + + /* if not saving them, remove VMS version numbers (appended ";###") */ + if (lastsemi) { + pp = lastsemi + 1; /* expect all digits after semi-colon */ + while (isdigit((uch)(*pp))) + ++pp; + if (*pp) /* not version number: convert ';' to '_' */ + *lastsemi = '_'; + else if (!uO.V_flag) /* only digits between ';' and end: nuke */ + *lastsemi = '\0'; + /* else only digits and we're saving version number: do nothing */ } - else /* Make file name ODS5-compliant. */ - { - adj_file_name_ods5(pathcomp, cp); + + if (last_dot != NULL) /* one dot is OK: put it back in */ + *last_dot = '.'; + + if (*pathcomp == '\0') { + Info(slide, 1, ((char *)slide, "mapname: conversion of %s failed\n", + FnFilter1(G.filename))); + return (error & ~MPN_MASK) | MPN_ERR_SKIP; } checkdir(__G__ pathcomp, APPEND_NAME); /* returns 1 if truncated: care? */ @@ -4672,166 +2947,111 @@ { int function=fcn & FN_MASK; static char pathbuf[FILNAMSIZ]; - - /* previously created directory (initialized to impossible dir. spec.) */ - static char lastdir[FILNAMSIZ] = "\t"; - - static char *pathptr = pathbuf; /* For debugger */ - static char *devptr, *dirptr; - static int devlen, dirlen; + static char lastdir[FILNAMSIZ]="\t"; /* directory created last time */ + /* initially - impossible dir. spec. */ + static char *pathptr=pathbuf; /* For debugger */ + static char *devptr, *dirptr, *namptr; + static int devlen, dirlen, namlen; static int root_dirlen; static char *end; - static int first_comp, root_has_dir; + static int first_comp,root_has_dir; static int rootlen=0; static char *rootend; static int mkdir_failed=0; int status; - struct FAB fab; - struct NAM_STRUCT nam; - /************ *** ROOT *** ************/ #if (!defined(SFX) || defined(SFX_EXDIR)) - if (function == ROOT) - { /* Assume VMS root spec */ - /* 2006-01-20 SMS. - Changed to use sys$parse() instead of sys$filescan() for analysis - of the user-specified destination directory. Previously, various - values behaved badly, without complaint, e.g. "-d sys$scratch". - */ - char *root_dest; + if (function==ROOT) + { /* Assume VMS root spec */ + char *p = pathcomp; + char *q; + + struct + { + short len; + short code; + char *addr; + } itl [4] = + { + { 0, FSCN$_DEVICE, NULL }, + { 0, FSCN$_ROOT, NULL }, + { 0, FSCN$_DIRECTORY, NULL }, + { 0, 0, NULL } /* End of itemlist */ + }; + int fields = 0; + struct dsc$descriptor pthcmp; - /* If the root path has already been set, return immediately. */ - if (rootlen > 0) + if (rootlen > 0) /* rootpath was already set, nothing to do */ return MPN_OK; - /* Initialization. */ - root_dest = PATH_DEFAULT; /* Default destination for ODSx sensing. */ - root_has_dir = 0; /* Root includes a directory. */ - fab = cc$rms_fab; /* Initialize FAB. */ - nam = CC_RMS_NAM; /* Initialize NAM[L]. */ - fab.FAB_NAM = &nam; /* Point FAB to NAM[L]. */ - -#ifdef NAML$C_MAXRSS - - fab.fab$l_dna = (char *) -1; /* Using NAML for default name. */ - fab.fab$l_fna = (char *) -1; /* Using NAML for file name. */ - -#endif /* NAML$C_MAXRSS */ - - /* Specified file spec. */ - FAB_OR_NAML(fab, nam).FAB_OR_NAML_FNA = pathcomp; - FAB_OR_NAML(fab, nam).FAB_OR_NAML_FNS = strlen(pathcomp); - - /* Default file spec. */ - FAB_OR_NAML(fab, nam).FAB_OR_NAML_DNA = PATH_DEFAULT; - FAB_OR_NAML(fab, nam).FAB_OR_NAML_DNS = strlen(PATH_DEFAULT); - - /* Expanded file spec. */ - nam.NAM_ESA = pathbuf; - nam.NAM_ESS = NAM_MAXRSS; + /* + * Initialize everything + */ + end = devptr = dirptr = rootend = pathbuf; + devlen = dirlen = rootlen = 0; - status = sys$parse(&fab); + pthcmp.dsc$a_pointer = pathcomp; + if ( (pthcmp.dsc$w_length = strlen(pathcomp)) > 255 ) + return MPN_ERR_TOOLONG; - /* OK so far, if OK or if directory not found. */ - if (((status & STS$M_SEVERITY) != STS$K_SUCCESS) && - (status != RMS$_DNF)) - { - /* Invalid destination directory specified. */ - Info(slide, 1, ((char *)slide, - "Invalid destination directory (parse error): %s\n", - FnFilter1(pathcomp))); + status = sys$filescan(&pthcmp, itl, &fields); + if ( !OK(status) ) return MPN_ERR_SKIP; - } - /* Should be only a device:[directory], so name+type+version - should have length 2 (".;"). - */ - if (nam.NAM_B_NAME + nam.NAM_B_TYPE + nam.NAM_B_VER > 2) + if ( fields & FSCN$M_DEVICE ) { - Info(slide, 1, ((char *)slide, - "Invalid destination directory (includes file name): %s\n", - FnFilter1(nam.NAM_ESA))); - return MPN_ERR_SKIP; + strncpy(devptr = end, itl[0].addr, itl[0].len); + dirptr = (end += (devlen = itl[0].len)); } - /* Truncate at name, leaving only "dev:[dir]". */ - *nam.NAM_L_NAME = '\0'; - rootlen = nam.NAM_L_NAME - nam.NAM_ESA; - - /* Remove any trailing dots in directory. */ - if ((nam.NAM_ESA[rootlen-1] == ']') && - (nam.NAM_ESA[rootlen-2] != '^')) + root_has_dir = 0; + + if ( fields & FSCN$M_ROOT ) { + int len; + + strncpy(dirptr = end, itl[1].addr, + len = itl[1].len - 1); /* Cut out trailing ']' */ + end += len; root_has_dir = 1; - rootlen -= 2; - while ((nam.NAM_ESA[rootlen] == '.') && - (nam.NAM_ESA[rootlen-1] != '^')) - { - rootlen--; - } - nam.NAM_ESA[++rootlen] = ']'; - nam.NAM_ESA[++rootlen] = '\0'; } - devlen = nam.NAM_L_DIR - nam.NAM_ESA; - - /* If directory not found, then create it. */ - if (status == RMS$_DNF) + if ( fields & FSCN$M_DIRECTORY ) { - if (status = mkdir(nam.NAM_ESA, 0)) - { - Info(slide, 1, ((char *)slide, - "Can not create destination directory: %s\n", - FnFilter1(nam.NAM_ESA))); - - /* path didn't exist, tried to create, and failed. */ - return MPN_ERR_SKIP; - } - } + char *ptr; + int len; - /* Save the (valid) device:[directory] spec. */ - strcpy(pathbuf, nam.NAM_ESA); - root_dest = pathbuf; - - /* At this point, the true destination is known. If the user - supplied an invalid destination directory, the default - directory will be used. (This may be pointless, but should - be safe.) - */ + len = itl[2].len-1; + ptr = itl[2].addr; - /* If not yet known, determine the destination (root_dest) file - system type (ODS2 or ODS5). - */ - if (ods2_names < 0) - { - /* If user doesn't force ODS2, set flag according to dest. */ - if (uO.ods2_flag == 0) - { - ods2_names = (dest_struct_level(root_dest) <= DVI$C_ACP_F11V2); - } - else + if ( root_has_dir /* i.e. root specified */ ) { - ods2_names = 1; /* User demands ODS2 names. */ + --len; /* Cut out leading dot */ + ++ptr; /* ??? [a.b.c.][.d.e] */ } - } - /* Replace trailing "]" with ".", for later appending. */ - if ((pathbuf[rootlen-1] == ']') || (pathbuf[rootlen-1] == '>')) - { - pathbuf[rootlen-1] = '.'; + strncpy(dirptr=end, ptr, len); /* Replace trailing ']' */ + *(end+=len) = '.'; /* ... with dot */ + ++end; + root_has_dir = 1; } - /* Set various pointers and lengths. */ - devptr = pathbuf; - dirptr = pathbuf + (nam.NAM_L_DIR - nam.NAM_ESA); - rootend = pathbuf + rootlen; - *(end = rootend) = '\0'; - root_dirlen = dirlen = rootlen - devlen; + /* When user specified "[a.b.c.]" or "[qq...]", we have too many + * trailing dots. Let's cut them out. Now we surely have at least + * one trailing dot and "end" points just behind it. */ + + dirlen = end - dirptr; + while ( dirlen > 1 && end[-2] == '.' ) + --dirlen,--end; + first_comp = !root_has_dir; + root_dirlen = end - dirptr; + *(rootend = end) = '\0'; + rootlen = rootend - devptr; return MPN_OK; } #endif /* !SFX || SFX_EXDIR */ @@ -4843,7 +3063,7 @@ if ( function == INIT ) { - if ( strlen(G.filename) + rootlen + 13 > NAM_MAXRSS ) + if ( strlen(G.filename) + rootlen + 13 > 255 ) return MPN_ERR_TOOLONG; if ( rootlen == 0 ) /* No root given, reset everything. */ @@ -4887,7 +3107,7 @@ *end++ = '.'; } - else if ( cmplen + (end-pathptr) > NAM_MAXRSS ) + else if ( cmplen + (end-pathptr) > 255 ) return MPN_ERR_TOOLONG; else @@ -4910,24 +3130,19 @@ if ( fcn & USE_DEFAULT ) { /* Expand renamed filename using collected path, return * at pathcomp */ - fab = cc$rms_fab; /* Initialize FAB. */ - nam = CC_RMS_NAM; /* Initialize NAM[L]. */ - fab.FAB_NAM = &nam; /* Point FAB to NAM[L]. */ - -#ifdef NAML$C_MAXRSS - - fab.fab$l_dna = (char *) -1; /* Using NAML for default name. */ - fab.fab$l_fna = (char *) -1; /* Using NAML for file name. */ - -#endif /* NAML$C_MAXRSS */ + struct FAB fab; + struct NAM nam; - FAB_OR_NAML(fab, nam).FAB_OR_NAML_DNA = pathptr; - FAB_OR_NAML(fab, nam).FAB_OR_NAML_DNS = end - pathptr; - FAB_OR_NAML(fab, nam).FAB_OR_NAML_FNA = G.filename; - FAB_OR_NAML(fab, nam).FAB_OR_NAML_FNS = strlen(G.filename); - - nam.NAM_ESA = pathcomp; /* (Great design. ---v. SMS.) */ - nam.NAM_ESS = NAM_MAXRSS; /* Assume large enough. */ + fab = cc$rms_fab; + fab.fab$l_fna = G.filename; + fab.fab$b_fns = strlen(G.filename); + fab.fab$l_dna = pathptr; + fab.fab$b_dns = end-pathptr; + + fab.fab$l_nam = &nam; + nam = cc$rms_nam; + nam.nam$l_esa = pathcomp; + nam.nam$b_ess = 255; /* Assume large enaugh */ if (!OK(status = sys$parse(&fab)) && status == RMS$_DNF ) /* Directory not found: */ @@ -4936,10 +3151,10 @@ char *dirend; int mkdir_failed; - dirend = (char*)nam.NAM_L_DIR + nam.NAM_B_DIR; + dirend = (char*)nam.nam$l_dir + nam.nam$b_dir; save = *dirend; *dirend = '\0'; - if ( (mkdir_failed = mkdir(nam.NAM_L_DEV, 0)) && + if ( (mkdir_failed = mkdir(nam.nam$l_dev, 0)) && errno == EEXIST ) mkdir_failed = 0; *dirend = save; @@ -4947,7 +3162,7 @@ return 3; created_dir = TRUE; } /* if (sys$parse... */ - pathcomp[nam.NAM_ESL] = '\0'; + pathcomp[nam.nam$b_esl] = '\0'; return MPN_OK; } /* if (USE_DEFAULT) */ else @@ -4962,29 +3177,29 @@ * Don't waste time creating directory that was created * last time. */ - if ( STRICMP(lastdir, pathbuf) ) + if ( STRICMP(lastdir,pathbuf) ) { mkdir_failed = 0; - if ( mkdir(pathbuf, 0) ) + if ( mkdir(pathbuf,0) ) { if ( errno != EEXIST ) mkdir_failed = 1; /* Mine for GETPATH */ } else created_dir = TRUE; - strcpy(lastdir, pathbuf); + strcpy(lastdir,pathbuf); } } else { /* * Target directory unspecified. - * Try to create "SYS$DISK:[]" + * Try to create "sys$disk:[]" */ - if ( strcmp(lastdir, PATH_DEFAULT) ) + if ( strcmp(lastdir,"sys$disk:[]") ) { - strcpy(lastdir, PATH_DEFAULT); + strcpy(lastdir,"sys$disk:[]"); mkdir_failed = 0; - if ( mkdir(lastdir, 0) && errno != EEXIST ) + if ( mkdir(lastdir,0) && errno != EEXIST ) mkdir_failed = 1; /* Mine for GETPATH */ } } @@ -5034,49 +3249,26 @@ iztimes z_utime; struct tm *t; #endif - char *filenam_stat; unsigned short timbuf[7]; unsigned dy, mo, yr, hh, mm, ss, dy2, mo2, yr2, hh2, mm2, ss2; struct FAB fab; struct XABDAT xdat; -#ifdef NAML$C_MAXRSS - struct NAM_STRUCT nam; -#endif - /* 2008-07-12 SMS. - * Special case for "." as a file name, not as the current directory. - * Substitute ".;" to keep stat() from seeing a plain ".". - */ - if (strcmp(filenam, ".") == 0) - filenam_stat = ".;"; - else - filenam_stat = filenam; - if (stat(filenam_stat, &G.statbuf)) + if (stat(filenam, &G.statbuf)) return DOES_NOT_EXIST; - fab = cc$rms_fab; /* Initialize FAB. */ - xdat = cc$rms_xabdat; /* Initialize XAB. */ - -#ifdef NAML$C_MAXRSS - - nam = CC_RMS_NAM; /* Initialize NAM[L]. */ - fab.FAB_NAM = &nam; /* Point FAB to NAM[L]. */ - - fab.fab$l_dna = (char *) -1; /* Using NAML for default name. */ - fab.fab$l_fna = (char *) -1; /* Using NAML for file name. */ - -#endif /* NAML$C_MAXRSS */ - - FAB_OR_NAML(fab, nam).FAB_OR_NAML_FNA = filenam; - FAB_OR_NAML(fab, nam).FAB_OR_NAML_FNS = strlen(filenam); + fab = cc$rms_fab; + xdat = cc$rms_xabdat; fab.fab$l_xab = (char *) &xdat; + fab.fab$l_fna = filenam; + fab.fab$b_fns = strlen(filenam); fab.fab$l_fop = FAB$M_GET | FAB$M_UFO; - if (ERR(sys$open(&fab))) /* open failure: report exists and */ + if ((sys$open(&fab) & 1) == 0) /* open failure: report exists and */ return EXISTS_AND_OLDER; /* older so new copy will be made */ - sys$numtim(&timbuf, &xdat.xab$q_cdt); + sys$numtim(&timbuf,&xdat.xab$q_cdt); fab.fab$l_xab = NULL; sys$dassgn(fab.fab$l_stv); @@ -5236,13 +3428,6 @@ "\n[return-code %d: bad decryption password for all files]\n", err)); break; -#ifdef DO_SAFECHECK_2GB - case IZ_ERRBF: - Info(slide, 1, ((char *)slide, - "\n[return-code %d: big-file archive, small-file program]\n", - err)); - break; -#endif /* DO_SAFECHECK_2GB */ default: Info(slide, 1, ((char *)slide, "\n[return-code %d: unknown return-code (screw-up)]\n", err)); @@ -5251,72 +3436,33 @@ #endif /* RETURN_CODES */ /*--------------------------------------------------------------------------- - * Return an intelligent status/severity level: - * - * 2007-01-29 SMS. - * - * VMS Status Code Summary (See STSDEF.H for details.) - * - * Bits: 31:28 27:16 15:3 2 1 0 - * Field: Control Facility Message Severity - * ----- - * 0 0 0 0 Warning - * 0 0 1 1 Success - * 0 1 0 2 Error - * 0 1 1 3 Information - * 1 0 0 4 Severe (fatal) error - * - * In the Control field, bits 31:29 are reserved. Bit 28 inhibits - * printing the message. In the Facility field, bit 27 means - * customer-defined (not HP-assigned, like us). In the Message field, - * bit 15 means facility-specific (which our messages are). - * - * Note that the C library translates exit(0) to a $STATUS value of 1 - * (i.e., exit is both silent and has a $SEVERITY of "success"). - * - * Previous versions of Info-ZIP programs used a generic ("chosen (by - * experimentation)") Control+Facility code of 0x7FFF, which included - * some reserved control bits, the inhibit-printing bit, and the - * customer-defined bit. - * - * HP has now assigned official Facility names and corresponding - * Facility codes for the Info-ZIP products: - * - * Facility Name Facility Code - * IZ_UNZIP 1954 = 0x7A2 - * IZ_ZIP 1955 = 0x7A3 - * - * Now, unless the CTL_FAC_IZ_UZP macro is defined at build-time, we - * will use the official Facility code. - * - ---------------------------------------------------------------------------*/ + Return an intelligent status/severity level: -/* Official HP-assigned Info-ZIP UnZip Facility code. */ -#define FAC_IZ_UZP 1954 /* 0x7A2 */ + $STATUS $SEVERITY = $STATUS & 7 + 31 .. 16 15 .. 3 2 1 0 + ----- + VMS 0 0 0 0 Warning + FACILITY 0 0 1 1 Success + Number 0 1 0 2 Error + MESSAGE 0 1 1 3 Information + Number 1 0 0 4 Severe (fatal) error + + 0x7FFF0000 was chosen (by experimentation) to be outside the range of + VMS FACILITYs that have dedicated message numbers. Hopefully this will + always result in silent exits--it does on VMS 5.4. Note that the C li- + brary translates exit arguments of zero to a $STATUS value of 1 (i.e., + exit is both silent and has a $SEVERITY of "success"). + ---------------------------------------------------------------------------*/ -#ifndef CTL_FAC_IZ_UZP - /* - * Default is inhibit-printing with the official Facility code. - */ -# define CTL_FAC_IZ_UZP ((0x1 << 12) | FAC_IZ_UZP) -# define MSG_FAC_SPEC 0x8000 /* Facility-specific code. */ -#else /* CTL_FAC_IZ_UZP */ - /* Use the user-supplied Control+Facility code for err or warn. */ -# ifndef MSG_FAC_SPEC /* Old default is not Facility-specific. */ -# define MSG_FAC_SPEC 0x0 /* Facility-specific code. Or 0x8000. */ -# endif /* !MSG_FAC_SPEC */ -#endif /* ?CTL_FAC_IZ_ZIP */ -#define VMS_UZ_FAC_BITS ((CTL_FAC_IZ_UZP << 16) | MSG_FAC_SPEC) - - severity = (err == PK_WARN) ? 0 : /* warn */ - (err == PK_ERR || /* error */ - (err >= PK_NOZIP && err <= PK_FIND) || /* ... */ - (err >= IZ_CTRLC && err <= IZ_BADPWD)) ? 2 : /* ... */ - 4; /* fatal */ - - exit( /* $SEVERITY: */ - (err == PK_COOL) ? SS$_NORMAL : /* success */ - (VMS_UZ_FAC_BITS | (err << 4) | severity) /* warning, error, fatal */ + severity = (err == PK_WARN) ? 1 : /* warn */ + (err == 2 || /* error */ + (err >= 9 && err <= 11) || /* ... */ + (err >= 80 && err <= 82)) ? 2 : /* ... */ + 4; /* fatal */ + + exit( /* $SEVERITY: */ + (err == PK_COOL) ? 1 : /* success */ + (0x7FFF0000 | (err << 4) | severity) /* warning, error, fatal */ ); } /* end function return_VMS() */ @@ -5368,7 +3514,7 @@ /* assign a channel to standard output */ status = sys$assign(&OutDevDesc, &OutDevChan, 0, 0); - if (OK(status)) + if (status & 1) { /* use sys$qiow and the IO$_SENSEMODE function to determine * the current tty status. @@ -5379,7 +3525,7 @@ (void) sys$dassgn(OutDevChan); } - if ( OK(status) && OK(status = iosb[0]) ) { + if ( (status & 1) && ((status = iosb[0]) & 1) ) { if (tt_rows != NULL) *tt_rows = ( (ttmode.ttdef_area.ttdef_bits.pagelength >= 5) ? (int) (ttmode.ttdef_area.ttdef_bits.pagelength) @@ -5401,7 +3547,7 @@ *tt_wrap = FALSE; } - return (OK(status)); + return ((status & 1) != 0); } int screensize(int *tt_rows, int *tt_cols) @@ -5454,13 +3600,13 @@ /* Truncate the version string at the first (trailing) space. */ strncpy(vms_vers, VMS_VERSION, sizeof(vms_vers)); vms_vers[sizeof(vms_vers)-1] = '\0'; - chrp1 = strchr(vms_vers, ' '); + chrp1 = strchr( vms_vers, ' '); if (chrp1 != NULL) *chrp1 = '\0'; /* Determine the major version number. */ ver_maj = 0; - chrp1 = strchr(&vms_vers[1], '.'); + chrp1 = strchr(&vms_vers[ 1], '.'); for (chrp2 = &vms_vers[1]; chrp2 < chrp1; ver_maj = ver_maj * 10 + *(chrp2++) - '0'); @@ -5498,7 +3644,7 @@ # if defined(__alpha) "OpenVMS", (sprintf(buf, " (%s Alpha)", vms_vers), buf), -# elif defined(__ia64) +# elif defined(__IA64) "OpenVMS", (sprintf(buf, " (%s IA64)", vms_vers), buf), # else /* VAX */ @@ -5644,6 +3790,8 @@ /* Preserve command-line case with SET PROCESS/PARSE_STYLE=EXTENDED */ { "DECC$ARGV_PARSE_STYLE", 1 }, +#if 0 /* Possibly useful in the future. */ + /* Preserve case for file names on ODS5 disks. */ { "DECC$EFS_CASE_PRESERVE", 1 }, @@ -5651,6 +3799,8 @@ while preserving VMS-ness of ";version". */ { "DECC$EFS_CHARSET", 1 }, +#endif /* 0 */ + /* List terminator. */ { (char *)NULL, 0 } }; @@ -5692,7 +3842,7 @@ sts = decc$feature_set_value( feat_index, 1, - decc_feat_array[i].value); + decc_feat_array[ i].value); } } else @@ -5719,24 +3869,13 @@ attributes. */ globaldef {"LIB$INITIALIZ"} readonly _align (LONGWORD) - int spare[8] = { 0 }; + int spare[ 8] = { 0 }; globaldef {"LIB$INITIALIZE"} readonly _align (LONGWORD) void (*x_decc_init)() = decc_init; /* Fake reference to ensure loading the LIB$INITIALIZE PSECT. */ #pragma extern_model save -/* The declaration for LIB$INITIALIZE() is missing in the VMS system header - files. Addionally, the lowercase name "lib$initialize" is defined as a - macro, so that this system routine can be reference in code using the - traditional C-style lowercase convention of function names for readability. - (VMS system functions declared in the VMS system headers are defined in a - similar way to allow using lowercase names within the C code, whereas the - "externally" visible names in the created object files are uppercase.) - */ -#ifndef lib$initialize -# define lib$initialize LIB$INITIALIZE -#endif int lib$initialize(void); #pragma extern_model strict_refdef int dmy_lib$initialize = (int)lib$initialize; @@ -5744,7 +3883,7 @@ #pragma standard -#endif /* !defined(__VAX) && (__CRTL_VER >= 70301000) */ +#endif /* !defined( __VAX) && (__CRTL_VER >= 70301000) */ #endif /* __CRTL_VER */ #endif /* __DECC */ diff -Nru unzip-6.0/vms/vms.h unzip-6.0/vms/vms.h --- unzip-6.0/vms/vms.h 2009-01-10 02:36:14.000000000 +0000 +++ unzip-6.0/vms/vms.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2005-Feb-10 or later (the contents of which are also included in zip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -21,31 +21,8 @@ #include #endif #ifndef __STARLET_LOADED -/* Workaround for broken header files of older DECC distributions - * that are incompatible with the /NAMES=AS_IS qualifier. */ -#define sys$assign SYS$ASSIGN -#define sys$bintim SYS$BINTIM -#define sys$close SYS$CLOSE -#define sys$connect SYS$CONNECT -#define sys$create SYS$CREATE -#define sys$dassgn SYS$DASSGN -#define sys$extend SYS$EXTEND -#define sys$getjpiw SYS$GETJPIW -#define sys$numtim SYS$NUMTIM -#define sys$open SYS$OPEN -#define sys$parse SYS$PARSE -#define sys$put SYS$PUT -#define sys$qio SYS$QIO -#define sys$qiow SYS$QIOW -#define sys$read SYS$READ -#define sys$rewind SYS$REWIND -#define sys$search SYS$SEARCH -#define sys$setdfprot SYS$SETDFPROT -#define sys$synch SYS$SYNCH -#define sys$wait SYS$WAIT -#define sys$write SYS$WRITE #include -#endif /* ndef __STARLET_LOADED */ +#endif #ifndef __SYIDEF_LOADED #include #endif @@ -83,103 +60,15 @@ # define FIB$W_FID fib$w_fid # define FIB$L_ACCTL fib$l_acctl # define FIB$W_EXCTL fib$w_exctl -# define FIB$W_NMCTL fib$w_nmctl #else # define FIB$W_DID fib$r_did_overlay.fib$w_did # define FIB$W_FID fib$r_fid_overlay.fib$w_fid # define FIB$L_ACCTL fib$r_acctl_overlay.fib$l_acctl # define FIB$W_EXCTL fib$r_exctl_overlay.fib$w_exctl -# define FIB$W_NMCTL fib$r_nmctl_overlay.fib$w_nmctl #endif #undef variant_union -/* 2005-02-10 SMS. Copied NAM[L] macros here from Zip. */ - -/* Define macros for use with either NAM or NAML. */ - -#ifdef NAML$C_MAXRSS /* NAML is available (ODS5 support...) */ - -# ifndef NAM_MAXRSS /* May have been defined before. */ -# define NAM_MAXRSS NAML$C_MAXRSS -# endif - -# define NAM_STRUCT NAML - -# define FAB_OR_NAML(fab, nam) (nam) -# define FAB_OR_NAML_DNA naml$l_long_defname -# define FAB_OR_NAML_DNS naml$l_long_defname_size -# define FAB_OR_NAML_FNA naml$l_long_filename -# define FAB_OR_NAML_FNS naml$l_long_filename_size - -# define CC_RMS_NAM cc$rms_naml -# define FAB_NAM fab$l_naml - -# define NAM_ESA naml$l_long_expand -# define NAM_ESL naml$l_long_expand_size -# define NAM_ESS naml$l_long_expand_alloc -# define NAM_RSA naml$l_long_result -# define NAM_RSL naml$l_long_result_size -# define NAM_RSS naml$l_long_result_alloc -# define NAM_DID naml$w_did -# define NAM_DVI naml$t_dvi -# define NAM_FID naml$w_fid -# define NAM_FNB naml$l_fnb -# define NAM_NOP naml$b_nop -# define NAM_M_SYNCHK NAML$M_SYNCHK -# define NAM_B_DEV naml$l_long_dev_size -# define NAM_L_DEV naml$l_long_dev -# define NAM_B_DIR naml$l_long_dir_size -# define NAM_L_DIR naml$l_long_dir -# define NAM_B_NAME naml$l_long_name_size -# define NAM_L_NAME naml$l_long_name -# define NAM_B_TYPE naml$l_long_type_size -# define NAM_L_TYPE naml$l_long_type -# define NAM_B_VER naml$l_long_ver_size -# define NAM_L_VER naml$l_long_ver - -#else /* !NAML$C_MAXRSS */ /* NAML is not available. Use NAM. */ - -# ifndef NAM_MAXRSS /* May have been defined before. */ -# define NAM_MAXRSS NAM$C_MAXRSS -# endif - -# define NAM_STRUCT NAM - -# define FAB_OR_NAML(fab, nam) (fab) -# define FAB_OR_NAML_DNA fab$l_dna -# define FAB_OR_NAML_DNS fab$b_dns -# define FAB_OR_NAML_FNA fab$l_fna -# define FAB_OR_NAML_FNS fab$b_fns - -# define CC_RMS_NAM cc$rms_nam -# define FAB_NAM fab$l_nam -# define NAM_ESA nam$l_esa -# define NAM_ESL nam$b_esl -# define NAM_ESS nam$b_ess -# define NAM_RSA nam$l_rsa -# define NAM_RSL nam$b_rsl -# define NAM_RSS nam$b_rss -# define NAM_DID nam$w_did -# define NAM_DVI nam$t_dvi -# define NAM_FID nam$w_fid -# define NAM_FNB nam$l_fnb -# define NAM_NOP nam$b_nop -# define NAM_M_SYNCHK NAM$M_SYNCHK -# define NAM_B_DEV nam$b_dev -# define NAM_L_DEV nam$l_dev -# define NAM_B_DIR nam$b_dir -# define NAM_L_DIR nam$l_dir -# define NAM_B_NAME nam$b_name -# define NAM_L_NAME nam$l_name -# define NAM_B_TYPE nam$b_type -# define NAM_L_TYPE nam$l_type -# define NAM_B_VER nam$b_ver -# define NAM_L_VER nam$l_ver - -#endif /* ?NAML$C_MAXRSS */ - - struct EB_header /* Common header of extra block */ { ush tag; ush size; @@ -301,7 +190,7 @@ * to unaligned fields in the PK_info structure representing the * extra field layout. When compiled for Alpha AXP, this results in * some performance (and code size) penalty. It is not allowed to - * apply structure padding, since this is explicitly forbidden in + * apply structure padding, since this is explicitely forbidden in * the specification (APPNOTE.TXT) for the PK VMS extra field. */ typedef struct PK_info diff -Nru unzip-6.0/WHERE unzip-6.0/WHERE --- unzip-6.0/WHERE 2008-03-29 02:06:04.000000000 +0000 +++ unzip-6.0/WHERE 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ __________________________________________________________________________ - This is the Info-ZIP file ``WHERE,'' last updated on 29 March 2008. + This is the Info-ZIP file ``WHERE,'' last updated on 17 February 2005. __________________________________________________________________________ The latest version of this file can be found online at: @@ -39,37 +39,32 @@ The related zlib package by Info-ZIP's Jean-loup Gailly and Mark Adler is at: - http://www.zlib.net/ + http://www.zlib.org/ Source-code archives for Info-ZIP's portable Zip, UnZip, and related utilities: - zip30.zip Zip 3.0 (deflation, bzip2, ZIP64 large archives, multi- - volume splits; includes zipnote/zipsplit/zipcloak) - zip30.tar.Z ditto, compress'd tar format - - zip232.zip Zip 2.32 (deflation; includes zipnote/zipsplit/zipcloak) - zip232.tar.Z ditto, compress'd tar format + zip231.zip Zip 2.31 (deflation; includes zipnote/zipsplit/zipcloak) + zip231.tar.Z ditto, compress'd tar format zip11.zip Zip 1.1 (shrinking, implosion; compatible w. PKUNZIP 1.1) zip11.tar.Z ditto, compress'd tar format - unzip60.zip UnZip 6.0 (all methods[*]; unzip/funzip/unzipsfx/zipgrep) - unzip60.tar.gz ditto, gzip'd tar format - unzip60.tar.Z ditto, compress'd tar format + unzip552.zip UnZip 5.52 (all methods[*]; unzip/funzip/unzipsfx/zipgrep) + unzip552.tar.gz ditto, gzip'd tar format + unzip552.tar.Z ditto, compress'd tar format - unred60.zip UnZip 6.0 add-on, contains copyrighted unreduce support + unred552.zip UnZip 5.52 add-on, contains copyrighted unreduce support zcrypt29.zip encryption support for Zip 2.3[**] zcrypt10.zip encryption support for Zip 1.1 MacZip106src.zip contains all the GUI stuff and the project files to build the MacZip main-app. To build MacZip successfully, both - the Zip 3.0 and UnZip 6.0 sources are required, too. + the Zip 2.31 and UnZip 5.52 sources are required, too. - wiz601.zip WiZ 6.01, Windows 9x/NT GUI front-end for Info-ZIP's DLLs, - as well as the source code and project files for the DLLs, - and static libraries. + wiz502.zip WiZ 5.02, Windows 9x/NT GUI front-end for Info-ZIP DLLs + wiz502+dlls.zip WiZ 5.02, Windows 9x/NT GUI front-end plus DLL sources [*] Unreducing is disabled by default, but is available as add-on. As of July 2004, Unisys's LZW patent was expired worldwide, and @@ -89,81 +84,81 @@ of these will be immediately available due to lack of access to appropriate systems on the part of Info-ZIP members. - zip###x.zip MSDOS executables and docs - zip###x1.zip OS/2 1.x (16-bit) executables and docs - zip###x2.zip OS/2 2/3/4.x (32-bit) executables and docs - zip###xA.zip Amiga executables and docs - zip###xB.zip BeOS executables and docs - zip###xC.zip VM/CMS executable and docs - zip###xK.zip Tandem NSK executables and docs - zip###xM.xmit MVS classic executable - zip###xM-docs.zip MVS classic port, docs only - zip###dN.zip WinNT/Win9x (Intel) DLL, header files, docs - zip###xN.zip WinNT/Win9x (Intel) executables and docs - zip###xN-axp.zip WinNT (Alpha AXP) executables and docs - zip###xN-mip.zip WinNT (MIPS R4000) executables and docs - zip###xN-ppc.zip WinNT (PowerPC) executables and docs - zip###xO.zip IBM OS/390 Open Edition binaries and docs - zip###xQ.zip SMS/QDOS executables and docs - zip###xR.zip Acorn RISC OS executables and docs - zip###xT.zip Atari TOS executables and docs - zip###-vms-axp-obj.zip + zip231x.zip MSDOS executables and docs + zip231x1.zip OS/2 1.x (16-bit) executables and docs + zip231x2.zip OS/2 2/3/4.x (32-bit) executables and docs + zip231xA.zip Amiga executables and docs + zip231xB.zip BeOS executables and docs + zip231xC.zip VM/CMS executable and docs + zip231xK.zip Tandem NSK executables and docs + zip231xM.xmit MVS classic executable + zip231xM-docs.zip MVS classic port, docs only + zip231dN.zip WinNT/Win9x (Intel) DLL, header files, docs + zip231xN.zip WinNT/Win9x (Intel) executables and docs + zip231xN-axp.zip WinNT (Alpha AXP) executables and docs + zip231xN-mip.zip WinNT (MIPS R4000) executables and docs + zip231xN-ppc.zip WinNT (PowerPC) executables and docs + zip231xO.zip IBM OS/390 Open Edition binaries and docs + zip231xQ.zip SMS/QDOS executables and docs + zip231xR.zip Acorn RISC OS executables and docs + zip231xT.zip Atari TOS executables and docs + zip231-vms-axp-obj.zip VMS (Alpha AXP) object libs, link procedure and docs - zip###-vms-axp-exe.zip + zip231-vms-axp-exe.zip VMS (Alpha AXP) executables for VMS 6.1 or later and docs - zip###-vms-vax-decc-obj.zip + zip231-vms-vax-decc-obj.zip VMS (VAX) object libs (new DEC C), link procedure and docs - zip###-vms-vax-decc-exe.zip + zip231-vms-vax-decc-exe.zip VMS (VAX) executables (DEC C) for VMS 6.1 or later; docs - zip###-vms-vax-vaxc-obj.zip + zip231-vms-vax-vaxc-obj.zip VMS (VAX) object libs (old VAX C), link procedure and docs - zip###x.hqx Macintosh BinHex'd executables and docs + zip231x.hqx Macintosh BinHex'd executables and docs - unz###x.exe MSDOS self-extracting executable (16-bit unzip, ..., docs) - unz###x3.exe MSDOS self-extracting executable (16-, 32-bit unzip, docs) - unz###x1.exe OS/2 1.x (16-bit) self-extracting executables and docs - unz###x2.exe OS/2 2/3/4.x (32-bit) self-extracting executables and docs - unz###d2.zip OS/2 2/3/4.x (32-bit) DLL, header file, demo exe and docs - unz###xA.ami Amiga self-extracting executables and docs - unz###xA.lha Amiga executables and docs, LHa archive - unz###xB.sfx BeOS self-extracting executables and docs - unz###xB.tar.gz BeOS executables and docs, gzip'd tar archive - unz###xC.mod VM/CMS executable module in "packed" format - unz###xC-docs.zip VM/CMS docs, only - unz###xF.zip FlexOS executable and docs - unz###xK.zip Tandem NSK executable and docs - unz###xM.xmit MVS classic executable - unz###xM-docs.zip MVS classic port, docs only - unz###dN.zip NT4/W2K/XP/2K3/W9x (32-bit Intel) DLL, header files, docs - unz###xN.exe NT/2K/XP/2K3/W9x self-extracting i386 executables and docs - unz###xN-axp.exe WinNT (Alpha AXP) self-extracting executables and docs - unz###xN-mip.exe WinNT (MIPS R4000) self-extracting executables and docs - unz###xN-ppc.exe WinNT (PowerPC) self-extracting executables and docs - unz###xQ.sfx SMS/QDOS self-extracting executables and docs - unz###xO.tar.Z IBM OS/390 Open edition (Unix-like), exes and docs - unz###xR.exe Acorn RISC OS self-extracting executables and docs - unz###xR.spk Acorn RISC OS Spark'd executables and docs - unz###xT.tos Atari TOS self-extracting executables and docs - unz###x-vms-axp-obj.bck VMS backup saveset, + unz552x.exe MSDOS self-extracting executable (16-bit unzip, ..., docs) + unz552x3.exe MSDOS self-extracting executable (16-, 32-bit unzip, docs) + unz552x1.exe OS/2 1.x (16-bit) self-extracting executables and docs + unz552x2.exe OS/2 2/3/4.x (32-bit) self-extracting executables and docs + unz552d2.zip OS/2 2/3/4.x (32-bit) DLL, header file, demo exe and docs + unz552xA.ami Amiga self-extracting executables and docs + unz552xA.lha Amiga executables and docs, LHa archive + unz552xB.sfx BeOS self-extracting executables and docs + unz552xB.tar.gz BeOS executables and docs, gzip'd tar archive + unz552xC.mod VM/CMS executable module in "packed" format + unz552xC-docs.zip VM/CMS docs, only + unz552xF.zip FlexOS executable and docs + unz552xK.zip Tandem NSK executable and docs + unz552xM.xmit MVS classic executable + unz552xM-docs.zip MVS classic port, docs only + unz552dN.zip NT4/W2K/XP/2K3/W9x (32-bit Intel) DLL, header files, docs + unz552xN.exe NT/2K/XP/2K3/W9x self-extracting i386 executables and docs + unz552xN-axp.exe WinNT (Alpha AXP) self-extracting executables and docs + unz552xN-mip.exe WinNT (MIPS R4000) self-extracting executables and docs + unz552xN-ppc.exe WinNT (PowerPC) self-extracting executables and docs + unz552xQ.sfx SMS/QDOS self-extracting executables and docs + unz552xO.tar.Z IBM OS/390 Open edition (Unix-like), exes and docs + unz552xR.exe Acorn RISC OS self-extracting executables and docs + unz552xR.spk Acorn RISC OS Spark'd executables and docs + unz552xT.tos Atari TOS self-extracting executables and docs + unz552x-vms-axp-obj.bck VMS backup saveset, contains UnZip (Alpha) obj libs, link procedure, docs - unz###x-vms-axp-obj.exe VMS (Alpha AXP) SFX archive (statically linked), + unz552x-vms-axp-obj.exe VMS (Alpha AXP) SFX archive (statically linked), contains UnZip (Alpha) obj libs, link procedure, docs - unz###x-vms-axp-exe.exe VMS (Alpha AXP) SFX archive (dynamically linked), + unz552x-vms-axp-exe.exe VMS (Alpha AXP) SFX archive (dynamically linked), contains UnZip (Alpha AXP, DEC C) executables and docs, smaller than object archive, but requires VMS 6.1 - unz###x-vms-vax-decc-obj.bck VMS backup saveset, + unz552x-vms-vax-decc-obj.bck VMS backup saveset, contains UnZip (new DEC C) obj libs, link procedure, docs - unz###x-vms-vax-decc-obj.exe VMS (VAX) SFX archive (statically linked), + unz552x-vms-vax-decc-obj.exe VMS (VAX) SFX archive (statically linked), contains UnZip (new DEC C) obj libs, link procedure, docs - unz###x-vms-vax-decc-exe.exe VMS (VAX) SFX archive (dynamically linked), + unz552x-vms-vax-decc-exe.exe VMS (VAX) SFX archive (dynamically linked), contains UnZip (new DEC C) executables and docs, smaller than object archive, but requires VMS 6.1 - unz###x-vms-vax-vaxc-obj.bck VMS backup saveset, + unz552x-vms-vax-vaxc-obj.bck VMS backup saveset, contains UnZip (old VAX C) obj libs, link procedure, docs - unz###x-vms-vax-vaxc-obj.exe VMS (VAX) SFX archive (statically linked), + unz552x-vms-vax-vaxc-obj.exe VMS (VAX) SFX archive (statically linked), contains UnZip (old VAX C) obj libs, link procedure, docs - unz###x.hqx Macintosh BinHex'd executables and docs for unzip - (unz###x.tar.{Z,gz} Unix exes/docs for Solaris 2.x, SCO Unix, Linux, etc., + unz552x.hqx Macintosh BinHex'd executables and docs for unzip + (unz552x.tar.{Z,gz} Unix exes/docs for Solaris 2.x, SCO Unix, Linux, etc., depending on directory/location; generally only provided in cases where the OS does *not* ship with a bundled C compiler) @@ -173,7 +168,7 @@ MacZip106c.hqx Macintosh combined Zip&UnZip application with GUI, executables and docs (with encryption) - wiz###xN.exe WiZ #.## 32-bit (Win9x/NT/2K/XP/2K3) app+docs (self-extr.) + wiz502xN.exe WiZ 5.02 32-bit (Win9x/NT/2K/XP/2K3) app+docs (self-extr.) UnzpHist.zip complete changes-history of UnZip and its precursors ZipHist.zip complete changes-history of Zip @@ -182,10 +177,7 @@ NOTE: Look for the Info-ZIP file names given above (not PKWARE or third- party stuff) in the following locations. Some sites like to use slightly - different names, such as zip-#.##.tar.gz instead of zip###.tar.Z. - - http://sourceforge.net/project/showfiles.php?group_id=118012 - [THE INFO-ZIP SOURCES HOME SITE] + different names, such as zip-2.31.tar.gz instead of zip231.tar.Z. ftp://ftp.info-zip.org/pub/infozip/ [THE INFO-ZIP HOME SITE] ftp://sunsite.doc.ic.ac.uk/packages/zip/ [MIRRORS THE INFO-ZIP HOME SITE] diff -Nru unzip-6.0/win32/Contents unzip-6.0/win32/Contents --- unzip-6.0/win32/Contents 2008-07-20 12:18:22.000000000 +0000 +++ unzip-6.0/win32/Contents 2010-05-14 07:26:14.000000000 +0000 @@ -1,4 +1,4 @@ -Contents of the "win32" sub-archive for UnZip 6.0 and later: +Contents of the "win32" sub-archive for UnZip 5.52 and later: Contents this file Makefile makefile for UnZip using MS Visual C++ @@ -16,22 +16,11 @@ rsxntwin.h supplement header for RSXNT, fills holes in their w32cfg.h Win32-specific configuration, included by unzpriv.h win32.c Win32-specific support routines - win32i64.c - winapp.rc resource file for regular console-mode UnZip application vc6/ directory containing Visual C++ 6.0 project files funzip.dsp MSVC++ 6.0 project file for fUnZip command-line tool unzip.dsp MSVC++ 6.0 project file for UnZip command-line main program unzipsfx.dsp MSVC++ 6.0 project file for UnZipSFX console mode stub - unzipbz2.dsp MSVC++ 6.0 project file for UnZip with bzip2 support - bz2lib.dsp MSVC++ 6.0 project file for bz2lib (de)compression library unzip.dsw MSVC++ 6.0 workspace file for all UnZip command line tools - vc8/ directory containing Visual C++ 2005 (8.0) project files - funzip.vcproj MSVC++ 8.0 project file for fUnZip command-line tool - unzip.vcproj MSVC++ 8.0 project file for UnZip command-line main program - unzipsfx.vcproj MSVC++ 8.0 project file for UnZipSFX console mode stub - unzipbz2.vcproj MSVC++ 8.0 project file for UnZip with bzip2 support - bz2lib.vcproj MSVC++ 8.0 project file for bz2lib (de)compression library - unzip.sln MSVC++ 8.0 workspace file for all UnZip command line tools crc_i386.c has been tested with MSVC and can be selected through the MSVC makefile. It is provided for those who may have MSVC but no assembler. diff -Nru unzip-6.0/win32/crc_i386.asm unzip-6.0/win32/crc_i386.asm --- unzip-6.0/win32/crc_i386.asm 2007-01-07 04:18:54.000000000 +0000 +++ unzip-6.0/win32/crc_i386.asm 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ ;=========================================================================== -; Copyright (c) 1990-2007 Info-ZIP. All rights reserved. +; Copyright (c) 1990-2005 Info-ZIP. All rights reserved. ; ; See the accompanying file LICENSE, version 2000-Apr-09 or later ; (the contents of which are also included in zip.h) for terms of use. @@ -7,7 +7,7 @@ ; also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html ;=========================================================================== ; crc_i386.asm, optimized CRC calculation function for Zip and UnZip, -; created by Paul Kienitz and Christian Spieler. Last revised 07 Jan 2007. +; created by Paul Kienitz and Christian Spieler. Last revised 16 Jan 2005. ; ; Revised 06-Oct-96, Scott Field (sfield@microsoft.com) ; fixed to assemble with masm by not using .model directive which makes @@ -47,16 +47,6 @@ ; Enabled the 686 build by default, because there are hardly any pre-686 CPUs ; in serious use nowadays. (See the 12-Oct-97 note above.) ; -; Revised 03-Jan-2006, Chr. Spieler -; Enlarged unrolling loops to "do 16 bytes per turn"; optimized access to -; data buffer in loop body (adjust pointer only once in loop body and use -; offsets to access each item); added additional support for the "unfolded -; tables" optimization variant (enabled by IZ_CRCOPTIM_UNFOLDTBL). -; -; Revised 07-Jan-2007, Chr. Spieler -; Recognize additional conditional flag CRC_TABLE_ONLY that prevents -; compilation of the crc32() function. -; ; FLAT memory model assumed. ; ; Loop unrolling can be disabled by defining the macro NO_UNROLLED_LOOPS. @@ -64,11 +54,9 @@ ; ;============================================================================== ; -; Do NOT assemble this source if external crc32 routine from zlib gets used, -; or only the precomputed CRC_32_Table is needed. +; Do NOT assemble this source if external crc32 routine from zlib gets used. ; IFNDEF USE_ZLIB - IFNDEF CRC_TABLE_ONLY ; .386p name crc_i386 @@ -134,82 +122,25 @@ ENDM ELSE ; __686 : optimize for Pentium Pro, Pentium II and compatible CPUs Do_CRC MACRO - movzx ebx,al ; tmp = c & 0xFF - shr eax,8 ; c = (c >> 8) - xor eax,[edi+ebx*4] ; ^ table[tmp] + movzx ebx,al ; tmp = c & 0xFF + shr eax,8 ; c = (c >> 8) + xor eax,[edi+ebx*4] ; ^ table[tmp] ENDM ENDIF ; ?__686 Do_CRC_byte MACRO - xor al, byte ptr [esi] ; c ^= *buf - inc esi ; buf++ - Do_CRC ; c = (c >> 8) ^ table[c & 0xFF] - ENDM -Do_CRC_byteof MACRO ofs - xor al, byte ptr [esi+ofs] ; c ^= *(buf+ofs) - Do_CRC ; c = (c >> 8) ^ table[c & 0xFF] + xor al, byte ptr [esi] ; c ^= *buf + inc esi ; buf++ + Do_CRC ; c = (c >> 8) ^ table[c & 0xFF] ENDM IFNDEF NO_32_BIT_LOADS - IFDEF IZ_CRCOPTIM_UNFOLDTBL - ; the edx register is needed in crc calculation - SavLen EQU Arg3 - -UpdCRC_dword MACRO - movzx ebx,al ; tmp = c & 0xFF - mov edx,[edi+ebx*4+3072] ; table[256*3+tmp] - movzx ebx,ah ; tmp = (c>>8) & 0xFF - shr eax,16 ; - xor edx,[edi+ebx*4+2048] ; ^ table[256*2+tmp] - movzx ebx,al ; tmp = (c>>16) & 0xFF - shr eax,8 ; tmp = (c>>24) - xor edx,[edi+ebx*4+1024] ; ^ table[256*1+tmp] - mov eax,[edi+eax*4] ; ^ table[256*0+tmp] - xor eax,edx ; .. - ENDM -UpdCRC_dword_sh MACRO dwPtrIncr - movzx ebx,al ; tmp = c & 0xFF - mov edx,[edi+ebx*4+3072] ; table[256*3+tmp] - movzx ebx,ah ; tmp = (c>>8) & 0xFF - xor edx,[edi+ebx*4+2048] ; ^ table[256*2+tmp] - shr eax,16 ; - movzx ebx,al ; tmp = (c>>16) & 0xFF - add esi, 4*dwPtrIncr ; ((ulg *)buf) += dwPtrIncr - shr eax,8 ; tmp = (c>>24) - xor edx,[edi+ebx*4+1024] ; ^ table[256*1+tmp] - mov eax,[edi+eax*4] ; ^ table[256*0+tmp] - xor eax,edx ; .. - ENDM - ELSE ; IZ_CRCOPTIM_UNFOLDTBL - ; the edx register is not needed anywhere else - SavLen EQU edx - -UpdCRC_dword MACRO - Do_CRC - Do_CRC - Do_CRC - Do_CRC - ENDM -UpdCRC_dword_sh MACRO dwPtrIncr +Do_CRC_dword MACRO + xor eax, dword ptr [esi] ; c ^= *(ulg *)buf + add esi, 4 ; ((ulg *)buf)++ Do_CRC Do_CRC - add esi, 4*dwPtrIncr ; ((ulg *)buf) += dwPtrIncr Do_CRC Do_CRC ENDM - ENDIF ; ?IZ_CRCOPTIM_UNFOLDTBL -Do_CRC_dword MACRO - xor eax, dword ptr [esi] ; c ^= *(ulg *)buf - UpdCRC_dword_sh 1 ; ... ((ulg *)buf)++ - ENDM -Do_CRC_4dword MACRO - xor eax, dword ptr [esi] ; c ^= *(ulg *)buf - UpdCRC_dword - xor eax, dword ptr [esi+4] ; c ^= *((ulg *)buf+1) - UpdCRC_dword - xor eax, dword ptr [esi+8] ; c ^= *((ulg *)buf+2) - UpdCRC_dword - xor eax, dword ptr [esi+12] ; c ^= *((ulg *)buf]+3 - UpdCRC_dword_sh 4 ; ... ((ulg *)buf)+=4 - ENDM ENDIF ; !NO_32_BIT_LOADS IFNDEF NO_ALIGN @@ -228,90 +159,71 @@ push edx push ecx - mov esi,Arg2 ; 2nd arg: uch *buf - sub eax,eax ;> if (!buf) - test esi,esi ;> return 0; - jz fine ;> else { + mov esi,Arg2 ; 2nd arg: uch *buf + sub eax,eax ;> if (!buf) + test esi,esi ;> return 0; + jz fine ;> else { call _get_crc_table mov edi,eax - mov eax,Arg1 ; 1st arg: ulg crc + mov eax,Arg1 ; 1st arg: ulg crc IFNDEF __686 - sub ebx,ebx ; ebx=0; make bl usable as a dword + sub ebx,ebx ; ebx=0; make bl usable as a dword ENDIF - mov ecx,Arg3 ; 3rd arg: extent len - not eax ;> c = ~crc; + mov ecx,Arg3 ; 3rd arg: extent len + not eax ;> c = ~crc; test ecx,ecx IFNDEF NO_UNROLLED_LOOPS jz bail IFNDEF NO_32_BIT_LOADS align_loop: - test esi,3 ; align buf pointer on next - jz SHORT aligned_now ; dword boundary + test esi,3 ; align buf pointer on next + jz SHORT aligned_now ; dword boundary Do_CRC_byte dec ecx jnz align_loop aligned_now: ENDIF ; !NO_32_BIT_LOADS - mov SavLen,ecx ; save current len for later - shr ecx,4 ; ecx = len / 16 - jz No_Sixteens + mov edx,ecx ; save len in edx + shr ecx,3 ; ecx = len / 8 + jz SHORT No_Eights IFNDEF NO_ALIGN ; align loop head at start of 486 internal cache line !! align 16 ENDIF -Next_Sixteen: +Next_Eight: IFNDEF NO_32_BIT_LOADS - Do_CRC_4dword + Do_CRC_dword + Do_CRC_dword ELSE ; NO_32_BIT_LOADS - Do_CRC_byteof 0 - Do_CRC_byteof 1 - Do_CRC_byteof 2 - Do_CRC_byteof 3 - Do_CRC_byteof 4 - Do_CRC_byteof 5 - Do_CRC_byteof 6 - Do_CRC_byteof 7 - Do_CRC_byteof 8 - Do_CRC_byteof 9 - Do_CRC_byteof 10 - Do_CRC_byteof 11 - Do_CRC_byteof 12 - Do_CRC_byteof 13 - Do_CRC_byteof 14 - Do_CRC_byteof 15 - add esi, 16 ; buf += 16 + Do_CRC_byte + Do_CRC_byte + Do_CRC_byte + Do_CRC_byte + Do_CRC_byte + Do_CRC_byte + Do_CRC_byte + Do_CRC_byte ENDIF ; ?NO_32_BIT_LOADS dec ecx - jnz Next_Sixteen -No_Sixteens: - mov ecx,SavLen - and ecx,00000000FH ; ecx = len % 16 - IFNDEF NO_32_BIT_LOADS - shr ecx,2 ; ecx = len / 4 - jz SHORT No_Fours -Next_Four: - Do_CRC_dword - dec ecx - jnz Next_Four -No_Fours: - mov ecx,SavLen - and ecx,000000003H ; ecx = len % 4 - ENDIF ; !NO_32_BIT_LOADS + jnz Next_Eight +No_Eights: + mov ecx,edx + and ecx,000000007H ; ecx = len % 8 ENDIF ; !NO_UNROLLED_LOOPS - jz SHORT bail ;> if (len) + jz SHORT bail ;> if (len) IFNDEF NO_ALIGN ; align loop head at start of 486 internal cache line !! align 16 ENDIF -loupe: ;> do { - Do_CRC_byte ; c = CRC32(c,*buf++,crctab); - dec ecx ;> } while (--len); +loupe: ;> do { + Do_CRC_byte ; c = CRC32(c, *buf++); + dec ecx ;> } while (--len); jnz loupe -bail: ;> } - not eax ;> return ~c; +bail: ;> } + not eax ;> return ~c; fine: pop ecx pop edx @@ -324,7 +236,6 @@ _TEXT ends ; - ENDIF ; !CRC_TABLE_ONLY ENDIF ; !USE_ZLIB ; end diff -Nru unzip-6.0/win32/crc_i386.c unzip-6.0/win32/crc_i386.c --- unzip-6.0/win32/crc_i386.c 2007-01-07 04:18:46.000000000 +0000 +++ unzip-6.0/win32/crc_i386.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in zip.h) for terms of use. @@ -8,7 +8,7 @@ */ /* crc_i386.c -- Microsoft 32-bit C/C++ adaptation of crc_i386.asm * Created by Rodney Brown from crc_i386.asm, modified by Chr. Spieler. - * Last revised: 07-Jan-2007 + * Last revised: 16-Jan-2005 * * Original coded (in crc_i386.asm) and put into the public domain * by Paul Kienitz and Christian Spieler. @@ -57,16 +57,6 @@ * Also enabled the 686 build by default, because there are hardly any * pre-686 CPUs in serious use nowadays. (See the 12-Oct-97 note above.) * - * Revised 03-Jan-2006, Chr. Spieler - * Enlarged unrolling loops to "do 16 bytes per turn"; optimized access to - * data buffer in loop body (adjust pointer only once in loop body and use - * offsets to access each item); added additional support for the "unfolded - * tables" optimization variant (enabled by IZ_CRCOPTIM_UNFOLDTBL). - * - * Revised 07-Jan-2007, Chr. Spieler - * Recognize additional conditional flag CRC_TABLE_ONLY that prevents - * compilation of the crc32() function. - * * FLAT memory model assumed. * * Loop unrolling can be disabled by defining the macro NO_UNROLLED_LOOPS. @@ -75,9 +65,8 @@ */ #include "../zip.h" -#include "../crc32.h" -#if defined(ASM_CRC) && !defined(USE_ZLIB) && !defined(CRC_TABLE_ONLY) +#if defined(ASM_CRC) && !defined(USE_ZLIB) #if !defined(PRE_686) && !defined(__686) # define __686 @@ -131,64 +120,14 @@ __asm { inc esi }; \ Do_CRC; } -#define Do_CRC_byteof(ofs) { \ - __asm { xor al, byte ptr [esi+(ofs)] }; \ - Do_CRC; } - #ifndef NO_32_BIT_LOADS -#ifdef IZ_CRCOPTIM_UNFOLDTBL -# define SavLen len /* the edx register is needed elsewhere */ -# define UpdCRC_dword { \ - __asm { movzx ebx,al }; \ - __asm { mov edx,[edi+ebx*4+3072] }; \ - __asm { movzx ebx,ah }; \ - __asm { shr eax,16 }; \ - __asm { xor edx,[edi+ebx*4+2048] }; \ - __asm { movzx ebx,al }; \ - __asm { shr eax,8 }; \ - __asm { xor edx,[edi+ebx*4+1024] }; \ - __asm { mov eax,[edi+eax*4] }; \ - __asm { xor eax,edx }; } -# define UpdCRC_dword_sh(dwPtrIncr) { \ - __asm { movzx ebx,al }; \ - __asm { mov edx,[edi+ebx*4+3072] }; \ - __asm { movzx ebx,ah }; \ - __asm { xor edx,[edi+ebx*4+2048] }; \ - __asm { shr eax,16 }; \ - __asm { movzx ebx,al }; \ - __asm { add esi, 4*dwPtrIncr }; \ - __asm { shr eax,8 }; \ - __asm { xor edx,[edi+ebx*4+1024] }; \ - __asm { mov eax,[edi+eax*4] }; \ - __asm { xor eax,edx }; } -#else /* !IZ_CRCOPTIM_UNFOLDTBL */ -# define SavLen edx /* the edx register is free for use here */ -# define UpdCRC_dword { \ - Do_CRC; \ - Do_CRC; \ - Do_CRC; \ - Do_CRC; } -# define UpdCRC_dword_sh(dwPtrIncr) { \ - Do_CRC; \ - Do_CRC; \ - __asm { add esi, 4*(dwPtrIncr) }; \ - Do_CRC; \ - Do_CRC; } -#endif /* ?IZ_CRCOPTIM_UNFOLDTBL */ - #define Do_CRC_dword { \ __asm { xor eax, dword ptr [esi] }; \ - UpdCRC_dword_sh(1); } - -#define Do_CRC_4dword { \ - __asm { xor eax, dword ptr [esi] }; \ - UpdCRC_dword; \ - __asm { xor eax, dword ptr [esi+4] }; \ - UpdCRC_dword; \ - __asm { xor eax, dword ptr [esi+8] }; \ - UpdCRC_dword; \ - __asm { xor eax, dword ptr [esi+12] }; \ - UpdCRC_dword_sh(4); } + __asm { add esi, 4 }; \ + Do_CRC; \ + Do_CRC; \ + Do_CRC; \ + Do_CRC; } #endif /* !NO_32_BIT_LOADS */ /* ========================================================================= */ @@ -232,66 +171,46 @@ jnz align_loop aligned_now: # endif /* !NO_32_BIT_LOADS */ - mov SavLen,ecx ;/* save current len for later */ - shr ecx,4 ;/* ecx = len / 16 */ - jz No_Sixteens + mov edx,ecx ;/* save len in edx */ + shr ecx,3 ;/* ecx = len / 8 */ + jz No_Eights ; align loop head at start of 486 internal cache line !! align 16 -Next_Sixteen: +Next_Eight: } # ifndef NO_32_BIT_LOADS - Do_CRC_4dword ; + Do_CRC_dword ; + Do_CRC_dword ; # else /* NO_32_BIT_LOADS */ - Do_CRC_byteof(0) ; - Do_CRC_byteof(1) ; - Do_CRC_byteof(2) ; - Do_CRC_byteof(3) ; - Do_CRC_byteof(4) ; - Do_CRC_byteof(5) ; - Do_CRC_byteof(6) ; - Do_CRC_byteof(7) ; - Do_CRC_byteof(8) ; - Do_CRC_byteof(9) ; - Do_CRC_byteof(10) ; - Do_CRC_byteof(11) ; - Do_CRC_byteof(12) ; - Do_CRC_byteof(13) ; - Do_CRC_byteof(14) ; - Do_CRC_byteof(15) ; - __asm { add esi,16 }; + Do_CRC_byte ; + Do_CRC_byte ; + Do_CRC_byte ; + Do_CRC_byte ; + Do_CRC_byte ; + Do_CRC_byte ; + Do_CRC_byte ; + Do_CRC_byte ; # endif /* ?NO_32_BIT_LOADS */ __asm { dec ecx - jnz Next_Sixteen -No_Sixteens: - mov ecx,SavLen - and ecx,00000000FH ;/* ecx = len % 16 */ -# ifndef NO_32_BIT_LOADS - shr ecx,2 - jz No_Fours -Next_Four: - } - Do_CRC_dword ; - __asm { - dec ecx - jnz Next_Four -No_Fours: - mov ecx,SavLen - and ecx,000000003H ;/* ecx = len % 4 */ -# endif /* !NO_32_BIT_LOADS */ + jnz Next_Eight +No_Eights: + mov ecx,edx + and ecx,000000007H ;/* ecx = len % 8 */ + #endif /* !NO_UNROLLED_LOOPS */ - jz bail ;/*> if (len) */ + jz bail ;/*> if (len) */ ; align loop head at start of 486 internal cache line !! align 16 -loupe: ;/*> do { */ +loupe: ;/*> do { */ } - Do_CRC_byte ;/* c = CRC32(c,*buf++,crctab);*/ + Do_CRC_byte ;/* c = CRC32(c, *buf++); */ __asm { - dec ecx ;/*> } while (--len); */ + dec ecx ;/*> } while (--len); */ jnz loupe -bail: ;/*> } */ - not eax ;/*> return ~c; */ +bail: ;/*> } */ + not eax ;/*> return ~c; */ fine: pop ecx pop edx @@ -307,4 +226,4 @@ # pragma warning( default : 4035 ) #endif #endif -#endif /* ASM_CRC && !USE_ZLIB && !CRC_TABLE_ONLY */ +#endif /* ASM_CRC && !USE_ZLIB */ diff -Nru unzip-6.0/win32/crc_lcc.asm unzip-6.0/win32/crc_lcc.asm --- unzip-6.0/win32/crc_lcc.asm 2006-01-03 13:35:16.000000000 +0000 +++ unzip-6.0/win32/crc_lcc.asm 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ ;=========================================================================== -; Copyright (c) 1990-2006 Info-ZIP. All rights reserved. +; Copyright (c) 1990-2000 Info-ZIP. All rights reserved. ; ; See the accompanying file LICENSE, version 2000-Apr-09 or later ; (the contents of which are also included in zip.h) for terms of use. @@ -7,7 +7,7 @@ ; also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html ;=========================================================================== ; crc_lcc.asm, optimized CRC calculation function for Zip and UnZip, -; created by Paul Kienitz and Christian Spieler. Last revised 02 Jan 2006. +; created by Paul Kienitz and Christian Spieler. Last revised 24 Dec 98. ; ; The code in this file has been copied verbatim from crc_i386.{asm|S}; ; only the assembler syntax and metacommands have been adapted to @@ -59,10 +59,11 @@ jnz _$5 _$6: movl %ecx,%edx - shrl $4,%ecx + shrl $3,%ecx jz _$8 _$7: xorl (%esi),%eax + addl $4,%esi movzbl %al,%ebx shrl $8,%eax xorl (%edi,%ebx,4),%eax @@ -75,40 +76,14 @@ movzbl %al,%ebx shrl $8,%eax xorl (%edi,%ebx,4),%eax - xorl 4(%esi),%eax - movzbl %al,%ebx - shrl $8,%eax - xorl (%edi,%ebx,4),%eax - movzbl %al,%ebx - shrl $8,%eax - xorl (%edi,%ebx,4),%eax - movzbl %al,%ebx - shrl $8,%eax - xorl (%edi,%ebx,4),%eax - movzbl %al,%ebx - shrl $8,%eax - xorl (%edi,%ebx,4),%eax - xorl 8(%esi),%eax - movzbl %al,%ebx - shrl $8,%eax - xorl (%edi,%ebx,4),%eax - movzbl %al,%ebx - shrl $8,%eax - xorl (%edi,%ebx,4),%eax - movzbl %al,%ebx - shrl $8,%eax - xorl (%edi,%ebx,4),%eax - movzbl %al,%ebx - shrl $8,%eax - xorl (%edi,%ebx,4),%eax - xorl 12(%esi),%eax + xorl (%esi),%eax + addl $4,%esi movzbl %al,%ebx shrl $8,%eax xorl (%edi,%ebx,4),%eax movzbl %al,%ebx shrl $8,%eax xorl (%edi,%ebx,4),%eax - addl $16,%esi movzbl %al,%ebx shrl $8,%eax xorl (%edi,%ebx,4),%eax @@ -119,38 +94,16 @@ jnz _$7 _$8: movl %edx,%ecx - andl $0x0f,%ecx - shrl $2,%ecx - jz _$10 -_$9: - xorl (%esi),%eax - movzbl %al,%ebx - shrl $8,%eax - xorl (%edi,%ebx,4),%eax - movzbl %al,%ebx - shrl $8,%eax - xorl (%edi,%ebx,4),%eax - addl $4,%esi - movzbl %al,%ebx - shrl $8,%eax - xorl (%edi,%ebx,4),%eax - movzbl %al,%ebx - shrl $8,%eax - xorl (%edi,%ebx,4),%eax - decl %ecx - jnz _$9 -_$10: - movl %edx,%ecx - andl $0x03,%ecx + andl $7,%ecx jz _$4 -_$11: +_$9: xorb (%esi),%al incl %esi movzbl %al,%ebx shrl $8,%eax xorl (%edi,%ebx,4),%eax decl %ecx - jnz _$11 + jnz _$9 _$4: xorl $0xffffffff,%eax _$3: diff -Nru unzip-6.0/win32/Makefile unzip-6.0/win32/Makefile --- unzip-6.0/win32/Makefile 2009-01-06 22:24:32.000000000 +0000 +++ unzip-6.0/win32/Makefile 2010-05-14 07:26:14.000000000 +0000 @@ -1,46 +1,14 @@ -# NMAKE Makefile for Windows NT/2K/XP/... and Windows 95/98/Me +# NMAKE Makefile for Windows NT/Windows 95 # D. Feinleib 7/92 # H. Gessau 9/93 # J. Lee 8/95 (johnnyl@microsoft.com) # C. Spieler 03/99 # -# Last revised: 06 Jan 2009 +# Last revised: 20 Feb 2005 # # Tested with VC++ 2.0 for NT for MIPS and Alpha, Visual C++ 2.2 for Intel CPUs -# Revision tested with VC++ 5.0, 6.0, 8.0 and 9.0 for Intel CPUs +# Revision tested with VC++ 5.0 and 6.0 for Intel CPUs # -# Option switches -# (specify OPTFLAG as "OPTFLAG={1|0}" on the nmake command line) -# USEBZ2DLL=1 : bzip2 support, link against externally supplied dll -# USEBZ2STAT=1 : bzip2 support by static library created during build -# USEBZ2=1 : alias for USEBZ2STAT=1 -# -# USEZLIBDLL=1 : replace built-in inflate by external zlib dll -# USEZLIBSTAT=1 : replace built-in inflate by external zlib static lib -# USEZLIB=1 : alias for USEZLIBSTAT=1 -# -# USE_DLLRUNTIME : link executables against C runtime dll -# (default: executables are linked against static lib) -# USEBZ2DLL or USEZLIBDLL imply USE_DLLRUNTIME ! -# DLLSTANDALONE : unzip32.dll is linked against static MT runtime lib -# (default: unzip32.dll linked against C runtime dll) -# -# USE_UTF8 : =0 no unicode names support -# =1 force recognition of UTF8 extra fields and -# "UTF8 name" attrib (default) -# -# USEASM : use assembler code for crc32 function (default) -# NOASM : use C implementation for crc32 function -# USEMASM : use MS macro assembler (MASM) to assemble crc32 code -# USEML : use MS macro assembler (ML driver) to create crc32 -# (default: use C inline assembler code for crc32) -# -# NOCRC_OPT=1 : disable "unfolding CRC tables" optimization -# -# USEIZTIMEZONE : =0 (default) timezone setup by built-in C RTL -# =1 apply InfoZip replacement code for timezone setup -# (recognizes extended syntax when timezone setup -# is overridden by environment variable) # Nmake macros for building Win32 applications # To build with debug info use 'nmake debug=1' @@ -56,69 +24,11 @@ !endif !endif -# Options to decide whether using zlib as decompression library. -# Specify USEZLIBDLL or USEZLIBSTAT to replace UnZip's built-in inflation code -# by the inflate service of the zlib library. -# (The option USEZLIB is currently set as a synonym for USEZLIBSTAT.) -!if defined(USEZLIBSTAT) || defined(USEZLIBDLL) -USEZLIB=1 -!endif - !ifdef USEZLIB -!if defined(USEZLIBSTAT) && defined(USEZLIBDLL) -!ERROR Conflicting options USEZLIBSTAT and USEZLIBDLL requested! -!endif -# Set static zlib linkage as default in case nothing is specified. -!if !defined(USEZLIBSTAT) && !defined(USEZLIBDLL) -USEZLIBSTAT=1 -!endif +!undef DLLSTANDALONE !undef USEASM APPLY_ASMCRC=0 -NOCRC_OPT=1 -ZLIBLIB=zlib.lib -ZLIBLIBDLL=zdll.lib -!else # !USEZLIB -ZLIBLIB= -ZLIBLIBDLL= -!endif # ?USEZLIB - - -# Options to include optional support for bzip2 decompression -!if defined(USEBZ2STAT) || defined(USEBZ2DLL) -USEBZ2=1 -!endif - -IZ_BZIP2 = bzip2 -# Subfolder containing bz2 objects/lib for UnZip program target(s). -OBEXE = obexe -# Subfolder containing bz2 objects/lib for UnZip DLL target(s). -OBDLL = obdll -!ifdef USEBZ2 -!if defined(USEBZ2STAT) && defined(USEBZ2DLL) -!ERROR Conflicting options USEBZ2STAT and USEBZ2DLL requested! -!endif -INC_BZ2LIB=-I$(IZ_BZIP2) -# Set static bzip2 linkage as default in case nothing is specified. -!if !defined(USEBZ2STAT) && !defined(USEBZ2DLL) -USEBZ2STAT=1 -!endif -!IFNDEF debug -!ifdef USEBZ2STAT -BZIPLIBEXE=$(IZ_BZIP2)/$(OBEXE)/bz2.lib -BZIPLIBDLL=$(IZ_BZIP2)/$(OBDLL)/bz2.lib -!else -BZIPLIBEXE=bz2.lib -BZIPLIBDLL=bz2.lib !endif -!ELSE -BZIPLIBEXE=bz2d.lib -BZIPLIBDLL=bz2d.lib -!ENDIF -!else # !USEBZ2 -INC_BZ2LIB= -BZIPLIBEXE= -BZIPLIBDLL= -!endif # ?USEBZ2 !ifndef APPLY_ASMCRC #default ASM CRC code (inline asm in C source) for now... @@ -130,11 +40,6 @@ USE_IZTIMEZONE=0 !endif -!ifndef USE_UTF8 -#default for now: include support for UTF8 paths -USE_UTF8=1 -!endif - !IF "$(CPU)" == "" && "$(PROCESSOR_ARCHITECTURE)" == "x86" CPU = i386 !ENDIF @@ -151,43 +56,45 @@ CPU = i386 !ENDIF +!include + # special subdirectory for the static library binaries, to separate them # from other binaries (including dll import library file) OBDIR = ow32lib OB = $(OBDIR)/ # object files -OBJU1 = unzip.obj crc32.obj $(CRCA_O) crypt.obj envargs.obj explode.obj +OBJU1 = unzip.obj $(CRC32).obj crctab.obj crypt.obj envargs.obj explode.obj OBJU2 = extract.obj fileio.obj globals.obj inflate.obj list.obj match.obj -OBJU3 = process.obj ttyio.obj ubz2err.obj unreduce.obj unshrink.obj zipinfo.obj -OBJUS = win32.obj win32i64.obj nt.obj $(TIMEZONE_OBJU) +OBJU3 = process.obj ttyio.obj unreduce.obj unshrink.obj zipinfo.obj +OBJUS = win32.obj nt.obj $(TIMEZONE_OBJU) OBJU = $(OBJU1) $(OBJU2) $(OBJU3) $(OBJUS) -OBJX1 = unzipsfx.obj crc32_.obj $(CRCA_OX) crypt_.obj +OBJX1 = unzipsfx.obj $(CRC32X).obj crctab_.obj crypt_.obj OBJX2 = extract_.obj fileio_.obj globals_.obj inflate_.obj -OBJX3 = match_.obj process_.obj ttyio_.obj ubz2err_.obj -OBJXS = win32_.obj win32i64_.obj nt_.obj $(TIMEZONE_OBJX) +OBJX3 = match_.obj process_.obj ttyio_.obj +OBJXS = win32_.obj nt_.obj $(TIMEZONE_OBJX) OBJX = $(OBJX1) $(OBJX2) $(OBJX3) $(OBJXS) -OBJF1 = funzip.obj crc32f.obj $(CRCA_OF) cryptf.obj globalsf.obj +OBJF1 = funzip.obj $(CRC32F).obj cryptf.obj globalsf.obj OBJF2 = inflatef.obj ttyiof.obj -OBJFS = win32f.obj win32i64f.obj +OBJFS = win32f.obj OBJF = $(OBJF1) $(OBJF2) $(OBJFS) -OBJD1 = api.obj crc32l.obj $(CRCA_OL) cryptl.obj explodel.obj +OBJD1 = api.obj $(CRC32L).obj crctabl.obj cryptl.obj explodel.obj OBJD2 = extractl.obj fileiol.obj globalsl.obj inflatel.obj OBJD3 = listl.obj matchl.obj processl.obj -OBJD4 = ubz2errl.obj unreducl.obj unshrnkl.obj zipinfol.obj -OBJDS = win32l.obj win32i64l.obj ntl.obj windll.obj $(TIMEZONE_OBJD) +OBJD4 = unreducl.obj unshrnkl.obj zipinfol.obj +OBJDS = win32l.obj ntl.obj windll.obj $(TIMEZONE_OBJD) OBJD = $(OBJD1) $(OBJD2) $(OBJD3) $(OBJD4) $(OBJDS) -OBLX1 = apig.obj crc32g.obj $(CRCA_OG) cryptg.obj +OBLX1 = apig.obj $(CRC32G).obj crctabg.obj cryptg.obj OBLX2 = extractg.obj fileiog.obj globalsg.obj inflateg.obj OBLX3 = matchg.obj processg.obj -OBLXS = win32g.obj win32i64g.obj ntg.obj windllg.obj $(TIMEZONE_OBLX) +OBLXS = win32g.obj ntg.obj windllg.obj $(TIMEZONE_OBLX) OBLX = $(OBLX1) $(OBLX2) $(OBLX3) $(OBLXS) OBGX = sfxwiz.obj -OBJB1 = $(OB)apib.obj $(OB)crc32b.obj $(CRCA_OB) $(OB)cryptb.obj +OBJB1 = $(OB)apib.obj $(OB)$(CRC32B).obj $(OB)crctabb.obj $(OB)cryptb.obj OBJB2 = $(OB)explodeb.obj $(OB)extractb.obj $(OB)fileiob.obj $(OB)globalsb.obj OBJB3 = $(OB)inflateb.obj $(OB)listb.obj $(OB)matchb.obj $(OB)processb.obj -OBJB4 = $(OB)ubz2errb.obj $(OB)unreducb.obj $(OB)unshrnkb.obj $(OB)zipinfob.obj -OBJBS = $(OB)win32b.obj $(OB)win32i64b.obj $(OB)ntb.obj $(OB)windllb.obj $(TIMEZONE_OBJB) +OBJB4 = $(OB)unreducb.obj $(OB)unshrnkb.obj $(OB)zipinfob.obj +OBJBS = $(OB)win32b.obj $(OB)ntb.obj $(OB)windllb.obj $(TIMEZONE_OBJB) OBJB = $(OBJB1) $(OBJB2) $(OBJB3) $(OBJB4) $(OBJBS) UNZIP_H = unzip.h unzpriv.h globals.h win32/w32cfg.h @@ -205,40 +112,27 @@ LOCAL_UNZIP = -DW32_USE_IZ_TIMEZONE $(LOCAL_UNZIP) !endif -!if $(USE_UTF8) != 0 -LOCAL_UNZIP = -DUNICODE_SUPPORT $(LOCAL_UNZIP) -!else -LOCAL_UNZIP = -DNO_UNICODE_SUPPORT $(LOCAL_UNZIP) -!endif - -!ifndef NOCRC_OPT -LOCAL_UNZIP = -DIZ_CRCOPTIM_UNFOLDTBL $(LOCAL_UNZIP) -!endif - !ifdef USEZLIB LOCAL_UNZIP = -DUSE_ZLIB $(LOCAL_UNZIP) !endif -!ifdef USEBZ2 -LOCAL_UNZIP = -DUSE_BZIP2 $(LOCAL_UNZIP) -!endif #CF_LOC = -nologo -J -D_MBCS $(CFVARS_ASM) -DREENTRANT CF_LOC = -nologo -J -D_MBCS $(CFVARS_ASM) $(LOCAL_UNZIP) !if $(APPLY_ASMCRC) != 0 -CRCA_O = crc_i386.obj -CRCA_OX = $(CRCA_O) -CRCA_OF = $(CRCA_O) -CRCA_OL = crci386l.obj -CRCA_OG = crci386g.obj -CRCA_OB = $(OB)crci386b.obj -!else -CRCA_O = -CRCA_OX = -CRCA_OF = -CRCA_OL = -CRCA_OG = -CRCA_OB = +CRC32 = crc_i386 +CRC32X = $(CRC32) +CRC32F = $(CRC32) +CRC32L = crci386l +CRC32G = crci386g +CRC32B = crci386b +!else +CRC32 = crc32 +CRC32X = crc32_ +CRC32F = $(CRC32) +CRC32L = crc32l +CRC32G = crc32g +CRC32B = crc32b !endif !if $(USE_IZTIMEZONE) != 0 @@ -255,162 +149,62 @@ TIMEZONE_OBJB = !endif -# binary declarations common to all platforms -cc = cl -rc = rc -link = link -implib = lib -hc = hcrtf -xn - -# declarations common to all compiler options -cflags = -c -W3 -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -!IF "$(CPU)" == "i386" -cflags = $(cflags) -D_X86_=1 -!ELSE -!IF "$(CPU)" == "ALPHA" -cflags = $(cflags) -D_ALPHA_=1 -!ENDIF -!ENDIF - -# for Windows applications that use the C Run-Time libraries -cvars = -DWIN32 -D_WIN32 -cvarsmt = $(cvars) -MT -cvarsdll = $(cvars) -MD - -## The CRT library, depending on Compiler version and target configuration. -## This Makefile version has been changed to rely on the 'default library' -## notations in the compiled object files, to work around differences between -## MS Visual C++ releases concerning libraries support. -#libc = libc.lib oldnames.lib -#libcmt = libcmt.lib oldnames.lib -#libcdll = msvcrt.lib oldnames.lib - -# optional profiling and tuning libraries -!IFDEF PROFILE -optlibs = cap.lib -!ELSE -!IFDEF TUNE -optlibs = wst.lib -!ELSE -optlibs = -!ENDIF -!ENDIF - # USER32.LIB is needed for OemToChar and related routines -baselibs = kernel32.lib $(optlibs) advapi32.lib user32.lib -winlibs = $(baselibs) gdi32.lib comdlg32.lib winspool.lib -conlibs = $(baselibs) -conlibsmt = $(baselibs) -conlibsdll = $(baselibs) -guilibs = $(winlibs) -guilibsdll = $(winlibs) +conlibs=$(conlibs) user32.lib +conlibsmt=$(conlibsmt) user32.lib +conlibsdll=$(conlibsdll) user32.lib # Some optimization (if not debugging) !IFDEF NODEBUG cdebug = -O2 cdbgsz = -O1 !ELSE -!IFDEF PROFILE -cdebug = -Gh -Zd -Ox -!ELSE -!IFDEF TUNE -cdebug = -Gh -Zd -Ox -!ELSE -cdebug = -Z7 -Od -!ENDIF -!ENDIF cdbgsz = $(cdebug) !ENDIF -# declarations common to all linker options -lflags = /INCREMENTAL:NO /PDB:NONE /NOLOGO - -# for Windows applications that use the C Run-Time libraries -conlflags = $(lflags) /subsystem:console -guilflags = $(lflags) /subsystem:windows -dlllflags = $(lflags) /DLL - -# ------------------------------------------------------------------------- -# Target Module Dependent Link Debug Flags - must be specified after $(link) -# -# These switches allow the inclusion of the necessary symbolic information -# for source level debugging with WinDebug, profiling and/or performance -# tuning. -# -# Note: Debug switches are on by default. -# ------------------------------------------------------------------------- -!IFDEF NODEBUG -ldebug = /RELEASE -!ELSE -!IFDEF PROFILE -ldebug = -debug:mapped,partial -debugtype:coff -!ELSE -!IFDEF TUNE -ldebug = -debug:mapped,partial -debugtype:coff -!ELSE -ldebug = -debug:full -debugtype:cv -!ENDIF -!ENDIF -!ENDIF - !ifdef PROFILEINFO ldebug = $(ldebug) /PROFILE !endif -!ifdef SYM -ldebug = $(ldebug) /DEBUG:FULL /DEBUGTYPE:CV -cdebug = $(cdebug) -Zi -cdbgsz = $(cdbgsz) -Zi -!endif - -# When using zlib and/or bzip2 external decompression code DLLs, we want -# to link against the dll version of the C runtime library. -!IF defined(USEZLIBDLL) || defined(USEBZ2DLL) || defined(USE_DLLRUNTIME) -LINK_CRTDLL=1 -!UNDEF DLLSTANDALONE -!ELSE -LINK_CRTDLL=0 -!ENDIF - -!IF $(LINK_CRTDLL) == 1 -# Using zlib DLL as decompression core (and/or bzip2 decompression dll) -# implies linking all executables against the DLL version of the C RTL. +!IFDEF USEZLIB +# Using zlib as decompression core implies linking all executables +# against the DLL version of the C runtime library. cvars_iz = $(cvarsdll) $(CF_LOC) cvars_izdll = $(cvarsdll) $(CF_LOC) -conlibs_iz = $(conlibsdll) $(ZLIBLIBDLL) $(BZIPLIBEXE) -conlibs_izdll = $(conlibsdll) $(ZLIBLIBDLL) $(BZIPLIBDLL) -guilibs_iz = $(guilibsdll) $(ZLIBLIBDLL) $(BZIPLIBEXE) -!ELSE -# With the default setup (using Info-ZIP's own inflate code and/or static -# external decompression code), the executables are linked against the -# single-thread static C-RTL library to get self-contained programs. +conlibs_iz = $(conlibsdll) zlib.lib +conlibs_izdll = $(conlibsdll) zdll.lib +guilibs_iz = $(guilibsdll) zlib.lib +!ELSE +# With the default setup (using Info-ZIP's own inflate code), the +# executables are linked against the single-thread static C-RTL library to +# get self-contained programs. cvars_iz = $(cvars) $(CF_LOC) -conlibs_iz = $(conlibs) $(ZLIBLIB) $(BZIPLIBEXE) -guilibs_iz = $(guilibs) $(ZLIBLIB) $(BZIPLIBEXE) +conlibs_iz = $(conlibs) +guilibs_iz = $(guilibs) !IFDEF DLLSTANDALONE # The standalone variant of unzip32.dll is linked against the # multithread-safe static C runtime library. cvars_izdll = $(cvarsmt) $(CF_LOC) -conlibs_izdll = $(conlibsmt) $(ZLIBLIB) $(BZIPLIBDLL) +conlibs_izdll = $(conlibsmt) !ELSE # The (normal) variant of unzip32.dll is linked against the import library # of the multithread-safe C runtime dll. # -> smaller dll size; efficient use of shared resources, # but requires the C RTL DLL msvcrt.dll to be installed at runtime cvars_izdll = $(cvarsdll) $(CF_LOC) -conlibs_izdll = $(conlibsdll) $(ZLIBLIBDLL) $(BZIPLIBDLL) +conlibs_izdll = $(conlibsdll) !ENDIF -!ENDIF # ?(LINK_CRTDLL == 1) -CFLAGS_UN = $(cdebug) $(cflags) $(INC_BZ2LIB) $(cvars_iz) -CFLAGS_SX = $(cdbgsz) $(cflags) $(INC_BZ2LIB) $(cvars_iz) -DSFX +!ENDIF # !USEZLIB + +CFLAGS_UN = $(cdebug) $(cflags) $(cvars_iz) +CFLAGS_SX = $(cdbgsz) $(cflags) $(cvars_iz) -DSFX CFLAGS_FU = $(cdebug) $(cflags) $(cvars_iz) -DFUNZIP -CFLAGS_DL = $(cdebug) $(cflags) $(INC_BZ2LIB) $(cvars_izdll) -DWINDLL -DDLL -CFLAGS_DX = $(cdebug) $(cflags) $(INC_BZ2LIB) $(cvars_izdll) -CFLAGS_SL = $(cdbgsz) $(cflags) $(INC_BZ2LIB) $(cvars_iz) -DWINDLL -DDLL -DUNZIPLIB -DSFX +CFLAGS_DL = $(cdebug) $(cflags) $(cvars_izdll) -DWINDLL -DDLL +CFLAGS_SL = $(cdbgsz) $(cflags) $(cvars_iz) -DWINDLL -DDLL -DUNZIPLIB -DSFX CFLAGS_GX = $(cdbgsz) $(cflags) $(cvars_iz) -DSFX -CFLAGS_LB = $(cdebug) $(cflags) $(INC_BZ2LIB) $(cvars_iz) -DWINDLL -DDLL -DUNZIPLIB +CFLAGS_LB = $(cdebug) $(cflags) $(cvars_iz) -DWINDLL -DDLL -DUNZIPLIB # You may define VC6LINK if your linker recognizes "-opt:nowin98" alignment # qualifier. (VC6 or newer). This option reduces the executable size of the @@ -422,11 +216,11 @@ # How to compile sources .c.obj: - $(cc) $(CFLAGS_UN) -Fo$@ $< + $(cc) $(CFLAGS_UN) -o $@ $< # How to link .obj.exe: - $(link) $(ldebug) $(conlflags) $(conlibs_iz) $** -out:$@ + $(link) $(ldebug) $(conflags) $(conlibs_iz) $** -out:$@ # Default target is all command-line executables @@ -438,49 +232,38 @@ all: unzips guisfx dll dllsample lib -unzip.exe: $(OBJU) $(BZIPLIBEXE) winapp.res - $(link) $(ldebug) $(conlflags) $(conlibs_iz) $** -out:$@ -unzipsfx.exe: $(OBJX) $(BZIPLIBEXE) - $(link) $(ldebug) $(conlflags) $(conlibs_iz) $** $(LINKOPT_SIZE) -out:$@ +unzip.exe: $(OBJU) +unzipsfx.exe: $(OBJX) + $(link) $(ldebug) $(conflags) $(conlibs_iz) $** $(LINKOPT_SIZE) -out:$@ funzip.exe: $(OBJF) -unzip32.dll: $(OBJD) $(BZIPLIBDLL) windll.res $(WINDLL_DEF) +unzip32.dll: $(OBJD) windll.res $(WINDLL_DEF) $(link) $(ldebug) $(dlllflags) $(conlibs_izdll) -def:$(WINDLL_DEF) \ - $(OBJD) $(BZIPLIBDLL) windll.res -out:$@ + $(OBJD) windll.res -out:$@ unzsfx32.lib: $(OBLX) $(link) -lib $** -out:$@ -SFXWiz32.exe: $(OBGX) sfxwiz.res unzsfx32.lib $(BZIPLIBEXE) +SFXWiz32.exe: $(OBGX) sfxwiz.res unzsfx32.lib $(link) $(ldebug) $(guilflags) $(guilibs_iz) \ $(OBGX) sfxwiz.res unzsfx32.lib $(LINKOPT_SIZE) -out:$@ uzexampl.exe: uzexampl.obj - $(link) $(ldebug) $(conlflags) $(conlibs) version.lib $** -out:$@ + $(link) $(ldebug) $(conflags) $(conlibs) version.lib $** -out:$@ $(OB)unzip32.lib: $(OBJB) $(link) -lib $** -out:$@ -$(IZ_BZIP2)/$(OBEXE)/bz2.lib: - $(MAKE) -f $(IZ_BZIP2)/makbz2iz.msc \ - CFLSYS="$(cdebug) $(cflags) $(cvars_iz)" \ - BZROOTDIR=$(IZ_BZIP2) BZOBDIR=$(IZ_BZIP2)\$(OBEXE) - -$(IZ_BZIP2)/$(OBDLL)/bz2.lib: - $(MAKE) -f $(IZ_BZIP2)/makbz2iz.msc \ - CFLSYS="$(cdebug) $(cflags) $(cvars_izdll)" \ - BZROOTDIR=$(IZ_BZIP2) BZOBDIR=$(IZ_BZIP2)\$(OBDLL) - -crc32.obj: crc32.c $(UNZIP_H) zip.h crc32.h -crypt.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crc32.obj: crc32.c $(UNZIP_H) zip.h +crctab.obj: crctab.c $(UNZIP_H) zip.h +crypt.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h envargs.obj: envargs.c $(UNZIP_H) explode.obj: explode.c $(UNZIP_H) -extract.obj: extract.c $(UNZIP_H) crc32.h crypt.h -fileio.obj: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h -funzip.obj: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +extract.obj: extract.c $(UNZIP_H) crypt.h +fileio.obj: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h +funzip.obj: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h globals.obj: globals.c $(UNZIP_H) inflate.obj: inflate.c inflate.h $(UNZIP_H) list.obj: list.c $(UNZIP_H) match.obj: match.c $(UNZIP_H) -process.obj: process.c $(UNZIP_H) crc32.h +process.obj: process.c $(UNZIP_H) timezone.obj: timezone.c $(UNZIP_H) zip.h timezone.h ttyio.obj: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err.obj: ubz2err.c $(UNZIP_H) unreduce.obj: unreduce.c $(UNZIP_H) unshrink.obj: unshrink.c $(UNZIP_H) unzip.obj: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h @@ -489,9 +272,6 @@ win32.obj: win32/win32.c $(UNZIP_H) win32/nt.h $(cc) $(CFLAGS_UN) -I. win32/win32.c -Fo$@ -win32i64.obj: win32/win32i64.c $(UNZIP_H) - $(cc) $(CFLAGS_UN) -I. win32/win32i64.c -Fo$@ - nt.obj: win32/nt.c $(UNZIP_H) win32/nt.h $(cc) $(CFLAGS_UN) -I. win32/nt.c -Fo$@ @@ -508,71 +288,80 @@ !endif !endif -# UnZipSFX compilation section -crc32_.obj: crc32.c $(UNZIP_H) zip.h crc32.h +win32_.obj: win32/win32.c $(UNZIP_H) win32/nt.h # unzipsfx only + $(cc) $(CFLAGS_SX) -I. win32/win32.c -Fo$@ + +win32f.obj: win32/win32.c $(UNZIP_H) win32/nt.h # funzip only + $(cc) $(CFLAGS_FU) -I. win32/win32.c -Fo$@ + +nt_.obj: win32/nt.c $(UNZIP_H) win32/nt.h # unzipsfx only + $(cc) $(CFLAGS_SX) -I. win32/nt.c -Fo$@ + +crc32_.obj: crc32.c $(UNZIP_H) zip.h # unzipsfx only $(cc) $(CFLAGS_SX) crc32.c -Fo$@ -crypt_.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h + +crc32f.obj: crc32.c $(UNZIP_H) zip.h # funzip only + $(cc) $(CFLAGS_FU) crc32.c -Fo$@ + +crctab_.obj: crctab.c $(UNZIP_H) zip.h # unzipsfx only + $(cc) $(CFLAGS_SX) crctab.c -Fo$@ + +crypt_.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only $(cc) $(CFLAGS_SX) crypt.c -Fo$@ -extract_.obj: extract.c $(UNZIP_H) crc32.h crypt.h + +cryptf.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only + $(cc) $(CFLAGS_FU) crypt.c -Fo$@ + +extract_.obj: extract.c $(UNZIP_H) crypt.h # unzipsfx only $(cc) $(CFLAGS_SX) extract.c -Fo$@ -fileio_.obj: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h + +fileio_.obj: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h # unzipsfx only $(cc) $(CFLAGS_SX) fileio.c -Fo$@ -globals_.obj: globals.c $(UNZIP_H) + +globals_.obj: globals.c $(UNZIP_H) # unzipsfx only $(cc) $(CFLAGS_SX) globals.c -Fo$@ -inflate_.obj: inflate.c inflate.h $(UNZIP_H) crypt.h + +globalsf.obj: globals.c $(UNZIP_H) # funzip only + $(cc) $(CFLAGS_FU) globals.c -Fo$@ + +inflate_.obj: inflate.c inflate.h $(UNZIP_H) crypt.h # unzipsfx only $(cc) $(CFLAGS_SX) inflate.c -Fo$@ -match_.obj: match.c $(UNZIP_H) + +inflatef.obj: inflate.c inflate.h $(UNZIP_H) crypt.h # funzip only + $(cc) $(CFLAGS_FU) inflate.c -Fo$@ + +match_.obj: match.c $(UNZIP_H) # unzipsfx only $(cc) $(CFLAGS_SX) match.c -Fo$@ -process_.obj: process.c $(UNZIP_H) crc32.h - $(cc) $(CFLAGS_SX) process.c -Fo$@ -timezon_.obj: timezone.c $(UNZIP_H) zip.h timezone.h - $(cc) $(CFLAGS_SX) timezone.c -Fo$@ -ttyio_.obj: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h - $(cc) $(CFLAGS_SX) ttyio.c -Fo$@ -ubz2err_.obj: ubz2err.c $(UNZIP_H) - $(cc) $(CFLAGS_SX) ubz2err.c -Fo$@ -unzipsfx.obj: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h - $(cc) $(CFLAGS_SX) unzip.c -Fo$@ -win32_.obj: win32/win32.c $(UNZIP_H) win32/nt.h - $(cc) $(CFLAGS_SX) -I. win32/win32.c -Fo$@ +process_.obj: process.c $(UNZIP_H) # unzipsfx only + $(cc) $(CFLAGS_SX) process.c -Fo$@ -win32i64_.obj: win32/win32i64.c $(UNZIP_H) - $(cc) $(CFLAGS_SX) -I. win32/win32i64.c -Fo$@ +timezon_.obj: timezone.c $(UNZIP_H) zip.h timezone.h # unzipsfx only + $(cc) $(CFLAGS_SX) timezone.c -Fo$@ -nt_.obj: win32/nt.c $(UNZIP_H) win32/nt.h - $(cc) $(CFLAGS_SX) -I. win32/nt.c -Fo$@ +ttyio_.obj: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only + $(cc) $(CFLAGS_SX) ttyio.c -Fo$@ -# fUnZip compilation section -crc32f.obj: crc32.c $(UNZIP_H) zip.h crc32.h - $(cc) $(CFLAGS_FU) crc32.c -Fo$@ -cryptf.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h - $(cc) $(CFLAGS_FU) crypt.c -Fo$@ -globalsf.obj: globals.c $(UNZIP_H) - $(cc) $(CFLAGS_FU) globals.c -Fo$@ -inflatef.obj: inflate.c inflate.h $(UNZIP_H) crypt.h - $(cc) $(CFLAGS_FU) inflate.c -Fo$@ -ttyiof.obj: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +ttyiof.obj: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only $(cc) $(CFLAGS_FU) ttyio.c -Fo$@ -win32f.obj: win32/win32.c $(UNZIP_H) win32/nt.h - $(cc) $(CFLAGS_FU) -I. win32/win32.c -Fo$@ - -win32i64f.obj: win32/win32i64.c $(UNZIP_H) - $(cc) $(CFLAGS_FU) -I. win32/win32i64.c -Fo$@ +unzipsfx.obj: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h # unzipsfx only + $(cc) $(CFLAGS_SX) unzip.c -Fo$@ # DLL compilation section api.obj: api.c $(UNZIP_H) $(WINDLL_H) unzvers.h $(cc) $(CFLAGS_DL) api.c -Fo$@ -crc32l.obj: crc32.c $(UNZIP_H) zip.h crc32.h +crc32l.obj: crc32.c $(UNZIP_H) zip.h $(cc) $(CFLAGS_DL) crc32.c -Fo$@ -cryptl.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crctabl.obj: crctab.c $(UNZIP_H) zip.h + $(cc) $(CFLAGS_DL) crctab.c -Fo$@ +cryptl.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(cc) $(CFLAGS_DL) crypt.c -Fo$@ explodel.obj: explode.c $(UNZIP_H) $(cc) $(CFLAGS_DL) explode.c -Fo$@ -extractl.obj: extract.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h +extractl.obj: extract.c $(UNZIP_H) $(WINDLL_H) crypt.h $(cc) $(CFLAGS_DL) extract.c -Fo$@ -fileiol.obj: fileio.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h ttyio.h ebcdic.h +fileiol.obj: fileio.c $(UNZIP_H) $(WINDLL_H) crypt.h ttyio.h ebcdic.h $(cc) $(CFLAGS_DL) fileio.c -Fo$@ globalsl.obj: globals.c $(UNZIP_H) $(cc) $(CFLAGS_DL) globals.c -Fo$@ @@ -582,12 +371,10 @@ $(cc) $(CFLAGS_DL) list.c -Fo$@ matchl.obj: match.c $(UNZIP_H) $(cc) $(CFLAGS_DL) match.c -Fo$@ -processl.obj: process.c $(UNZIP_H) $(WINDLL_H) crc32.h +processl.obj: process.c $(UNZIP_H) $(WINDLL_H) $(cc) $(CFLAGS_DL) process.c -Fo$@ timezonl.obj: timezone.c $(UNZIP_H) zip.h timezone.h $(cc) $(CFLAGS_DL) timezone.c -Fo$@ -ubz2errl.obj: ubz2err.c $(UNZIP_H) - $(cc) $(CFLAGS_DL) ubz2err.c -Fo$@ unreducl.obj: unreduce.c $(UNZIP_H) $(cc) $(CFLAGS_DL) unreduce.c -Fo$@ unshrnkl.obj: unshrink.c $(UNZIP_H) @@ -598,9 +385,6 @@ win32l.obj: win32/win32.c $(UNZIP_H) win32/nt.h $(cc) $(CFLAGS_DL) -I. win32/win32.c -Fo$@ -win32i64l.obj: win32/win32i64.c $(UNZIP_H) - $(cc) $(CFLAGS_DL) -I. win32/win32i64.c -Fo$@ - ntl.obj: win32/nt.c $(UNZIP_H) win32/nt.h $(cc) $(CFLAGS_DL) -I. win32/nt.c -Fo$@ @@ -620,25 +404,24 @@ !endif !endif -winapp.res: win32/winapp.rc unzvers.h - $(rc) /l 0x409 /fo$@ /i win32 /d WIN32 win32/winapp.rc - windll.res: windll/windll.rc unzvers.h $(rc) /l 0x409 /fo$@ /i windll /d WIN32 windll/windll.rc uzexampl.obj: windll/uzexampl.c windll/uzexampl.h - $(cc) $(CFLAGS_DX) -I. windll/uzexampl.c -Fo$@ + $(cc) $(CFLAGS_UN) -I. windll/uzexampl.c -Fo$@ # SFX Lib compilation section apig.obj: api.c $(UNZIP_H) $(WINDLL_H) unzvers.h $(cc) $(CFLAGS_SL) api.c -Fo$@ -crc32g.obj: crc32.c $(UNZIP_H) zip.h crc32.h +crc32g.obj: crc32.c $(UNZIP_H) zip.h $(cc) $(CFLAGS_SL) crc32.c -Fo$@ -cryptg.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crctabg.obj: crctab.c $(UNZIP_H) zip.h + $(cc) $(CFLAGS_SL) crctab.c -Fo$@ +cryptg.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(cc) $(CFLAGS_SL) crypt.c -Fo$@ -extractg.obj: extract.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h +extractg.obj: extract.c $(UNZIP_H) $(WINDLL_H) crypt.h $(cc) $(CFLAGS_SL) extract.c -Fo$@ -fileiog.obj: fileio.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h ttyio.h ebcdic.h +fileiog.obj: fileio.c $(UNZIP_H) $(WINDLL_H) crypt.h ttyio.h ebcdic.h $(cc) $(CFLAGS_SL) fileio.c -Fo$@ globalsg.obj: globals.c $(UNZIP_H) $(cc) $(CFLAGS_SL) globals.c -Fo$@ @@ -646,19 +429,14 @@ $(cc) $(CFLAGS_SL) inflate.c -Fo$@ matchg.obj: match.c $(UNZIP_H) $(cc) $(CFLAGS_SL) match.c -Fo$@ -processg.obj: process.c $(UNZIP_H) $(WINDLL_H) crc32.h +processg.obj: process.c $(UNZIP_H) $(WINDLL_H) $(cc) $(CFLAGS_SL) process.c -Fo$@ timezong.obj: timezone.c $(UNZIP_H) zip.h timezone.h $(cc) $(CFLAGS_SL) timezone.c -Fo$@ -ubz2errg.obj: ubz2err.c $(UNZIP_H) - $(cc) $(CFLAGS_SL) ubz2err.c -Fo$@ win32g.obj: win32/win32.c $(UNZIP_H) win32/nt.h $(cc) $(CFLAGS_SL) -I. win32/win32.c -Fo$@ -win32i64g.obj: win32/win32i64.c $(UNZIP_H) - $(cc) $(CFLAGS_SL) -I. win32/win32i64.c -Fo$@ - ntg.obj: win32/nt.c $(UNZIP_H) win32/nt.h $(cc) $(CFLAGS_SL) -I. win32/nt.c -Fo$@ @@ -687,15 +465,17 @@ # static LIB compilation section $(OB)apib.obj: api.c $(UNZIP_H) $(WINDLL_H) unzvers.h $(cc) $(CFLAGS_LB) api.c -Fo$@ -$(OB)crc32b.obj: crc32.c $(UNZIP_H) zip.h crc32.h +$(OB)crc32b.obj: crc32.c $(UNZIP_H) zip.h $(cc) $(CFLAGS_LB) crc32.c -Fo$@ -$(OB)cryptb.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +$(OB)crctabb.obj: crctab.c $(UNZIP_H) zip.h + $(cc) $(CFLAGS_LB) crctab.c -Fo$@ +$(OB)cryptb.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(cc) $(CFLAGS_LB) crypt.c -Fo$@ $(OB)explodeb.obj: explode.c $(UNZIP_H) $(cc) $(CFLAGS_LB) explode.c -Fo$@ -$(OB)extractb.obj: extract.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h +$(OB)extractb.obj: extract.c $(UNZIP_H) $(WINDLL_H) crypt.h $(cc) $(CFLAGS_LB) extract.c -Fo$@ -$(OB)fileiob.obj: fileio.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h ttyio.h ebcdic.h +$(OB)fileiob.obj: fileio.c $(UNZIP_H) $(WINDLL_H) crypt.h ttyio.h ebcdic.h $(cc) $(CFLAGS_LB) fileio.c -Fo$@ $(OB)globalsb.obj: globals.c $(UNZIP_H) $(cc) $(CFLAGS_LB) globals.c -Fo$@ @@ -705,12 +485,10 @@ $(cc) $(CFLAGS_LB) list.c -Fo$@ $(OB)matchb.obj: match.c $(UNZIP_H) $(cc) $(CFLAGS_LB) match.c -Fo$@ -$(OB)processb.obj: process.c $(UNZIP_H) $(WINDLL_H) crc32.h +$(OB)processb.obj: process.c $(UNZIP_H) $(WINDLL_H) $(cc) $(CFLAGS_LB) process.c -Fo$@ $(OB)timezonb.obj: timezone.c $(UNZIP_H) zip.h timezone.h $(cc) $(CFLAGS_LB) timezone.c -Fo$@ -$(OB)ubz2errb.obj: ubz2err.c $(UNZIP_H) - $(cc) $(CFLAGS_LB) ubz2err.c -Fo$@ $(OB)unreducb.obj: unreduce.c $(UNZIP_H) $(cc) $(CFLAGS_LB) unreduce.c -Fo$@ $(OB)unshrnkb.obj: unshrink.c $(UNZIP_H) @@ -721,9 +499,6 @@ $(OB)win32b.obj: win32/win32.c $(UNZIP_H) win32/nt.h $(cc) $(CFLAGS_LB) -I. win32/win32.c -Fo$@ -$(OB)win32i64b.obj: win32/win32i64.c $(UNZIP_H) - $(cc) $(CFLAGS_LB) -I. win32/win32i64.c -Fo$@ - $(OB)ntb.obj: win32/nt.c $(UNZIP_H) win32/nt.h $(cc) $(CFLAGS_LB) -I. win32/nt.c -Fo$@ @@ -746,33 +521,19 @@ $(OBDIR): -mkdir $@ -clean: clean_bz2exe_lib clean_bz2dll_lib +clean: -del *.obj - -del winapp.res -del unzip.exe - -del unzip.pdb -del funzip.exe - -del funzip.pdb -del unzipsfx.exe - -del unzipsfx.pdb - -del vc60.pdb -del sfxwiz.res -del SFXWiz32.exe -del windll.res -del unzip32.dll -del unzip32.lib -del unzip32.exp - -del unzip32.dll.manifest -del uzexampl.exe -del unzsfx32.lib -del $(OBDIR)\*.obj -del $(OBDIR)\unzip32.lib -rmdir $(OBDIR) - -clean_bz2exe_lib: - -$(MAKE) -f $(IZ_BZIP2)/makbz2iz.msc \ - BZROOTDIR=$(IZ_BZIP2) BZOBDIR=$(IZ_BZIP2)\$(OBEXE) clean - -clean_bz2dll_lib: - -$(MAKE) -f $(IZ_BZIP2)/makbz2iz.msc \ - BZROOTDIR=$(IZ_BZIP2) BZOBDIR=$(IZ_BZIP2)\$(OBDLL) clean diff -Nru unzip-6.0/win32/Makefile.bc unzip-6.0/win32/Makefile.bc --- unzip-6.0/win32/Makefile.bc 2008-09-07 21:53:48.000000000 +0000 +++ unzip-6.0/win32/Makefile.bc 2010-05-14 07:26:14.000000000 +0000 @@ -1,10 +1,10 @@ -# Makefile for UnZip(SFX) and fUnZip for Borland C++ for Windows 9x/NT -# Version: 6.0 and later +# Makefile for UnZip(SFX) and fUnZip for Borland C++ for Windows 95/NT +# Version: 5.5 and later # Alvin Koh, Jim Knoble, Christian Spieler, E-Yen Tan, Cosmin Truta, etc. # # Tested with Borland C++ 5.5 (may work with older C++Builder 3.0, too) # -# Last revised: 07 Sep 2008 (Christian Spieler) +# Last revised: 20 Feb 2005 (Christian Spieler) # # @@ -142,35 +142,35 @@ OB = $(OBDIR)/ # object files -OBJU1 = unzip.obj $(CRC32).obj crypt.obj envargs.obj explode.obj +OBJU1 = unzip.obj $(CRC32).obj crctab.obj crypt.obj envargs.obj explode.obj OBJU2 = extract.obj fileio.obj globals.obj inflate.obj list.obj match.obj -OBJU3 = process.obj ttyio.obj ubz2err.obj unreduce.obj unshrink.obj zipinfo.obj -OBJUS = win32.obj win32i64.obj nt.obj $(TIMEZONE_OBJU) +OBJU3 = process.obj ttyio.obj unreduce.obj unshrink.obj zipinfo.obj +OBJUS = win32.obj nt.obj $(TIMEZONE_OBJU) OBJU = $(OBJU1) $(OBJU2) $(OBJU3) $(OBJUS) OBJF = funzip.obj $(CRC32F).obj cryptf.obj globalsf.obj inflatef.obj \ - ttyiof.obj win32f.obj win32i64f.obj -OBJX1 = unzipsfx.obj $(CRC32X).obj cryptx.obj + ttyiof.obj win32f.obj +OBJX1 = unzipsfx.obj $(CRC32X).obj crctabx.obj cryptx.obj OBJX2 = extractx.obj fileiox.obj globalsx.obj inflatex.obj matchx.obj -OBJX3 = processx.obj ttyiox.obj ubz2errx.obj -OBJXS = win32x.obj win32i64x.obj ntx.obj $(TIMEZONE_OBJX) +OBJX3 = processx.obj ttyiox.obj +OBJXS = win32x.obj ntx.obj $(TIMEZONE_OBJX) OBJX = $(OBJX1) $(OBJX2) $(OBJX3) $(OBJXS) -OBJD1 = api.obj $(CRC32L).obj cryptl.obj explodel.obj +OBJD1 = api.obj $(CRC32L).obj crctabl.obj cryptl.obj explodel.obj OBJD2 = extractl.obj fileiol.obj globalsl.obj inflatel.obj listl.obj matchl.obj -OBJD3 = processl.obj ubz2errl.obj unreducl.obj unshrnkl.obj zipinfol.obj -OBJDS = win32l.obj win32i64l.obj ntl.obj windll.obj $(ASMOBJS) $(TIMEZONE_OBJD) +OBJD3 = processl.obj unreducl.obj unshrnkl.obj zipinfol.obj +OBJDS = win32l.obj ntl.obj windll.obj $(ASMOBJS) $(TIMEZONE_OBJD) OBJD = $(OBJD1) $(OBJD2) $(OBJD3) $(OBJDS) -OBLX1 = apig.obj $(CRC32G).obj cryptg.obj +OBLX1 = apig.obj $(CRC32G).obj crctabg.obj cryptg.obj OBLX2 = extractg.obj fileiog.obj globalsg.obj inflateg.obj -OBLX3 = matchg.obj processg.obj ubz2errg.obj -OBLXS = win32g.obj win32i64g.obj ntg.obj windllg.obj $(TIMEZONE_OBLX) +OBLX3 = matchg.obj processg.obj +OBLXS = win32g.obj ntg.obj windllg.obj $(TIMEZONE_OBLX) OBLX = $(OBLX1) $(OBLX2) $(OBLX3) $(OBLXS) OBGX = sfxwiz.obj OBJLIB = $(OB)windllb.obj $(OB)apib.obj -OBJB1 = $(CRC32B).obj $(OB)cryptb.obj +OBJB1 = $(CRC32B).obj $(OB)crctabb.obj $(OB)cryptb.obj OBJB2 = $(OB)explodeb.obj $(OB)extractb.obj $(OB)fileiob.obj $(OB)globalsb.obj OBJB3 = $(OB)inflateb.obj $(OB)listb.obj $(OB)matchb.obj $(OB)processb.obj -OBJB4 = $(OB)ubz2errb.obj $(OB)unreducb.obj $(OB)unshrnkb.obj $(OB)zipinfob.obj -OBJBS = $(OB)win32b.obj $(OB)win32i64b.obj $(OB)ntb.obj $(TIMEZONE_OBJB) +OBJB4 = $(OB)unreducb.obj $(OB)unshrnkb.obj $(OB)zipinfob.obj +OBJBS = $(OB)win32b.obj $(OB)ntb.obj $(TIMEZONE_OBJB) OBJB = $(OBJLIB) $(OBJB1) $(OBJB2) $(OBJB3) $(OBJB4) $(OBJBS) UNZIP_H = unzip.h unzpriv.h globals.h win32/w32cfg.h @@ -196,7 +196,7 @@ lib: $(OBDIR) $(OB)unzip32.lib all: unzips dll dllsample guisfx lib -unzip.exe: $(OBJU) winapp.res +unzip.exe: $(OBJU) $(CC) $(LDFLAGS) -e$@ @&&| $(OBJU) | @@ -244,37 +244,27 @@ clean: rem Ignore any errors in the following... -del *.obj - -del winapp.res -del unzip.exe -del funzip.exe -del unzipsfx.exe - -del windll.res - -del unzip32.dll - -del uzexampl.exe - -del sfxwiz.res - -del unzsfx32.lib - -del SFXWiz32.exe - -del $(OB:/=\)*.obj - -del $(OB:/=\)unzip32.lib -del *.tds - -del $(OB:/=\)*.tds # individual file dependencies -crc32.obj: crc32.c $(UNZIP_H) zip.h crc32.h -crypt.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crc32.obj: crc32.c $(UNZIP_H) zip.h +crctab.obj: crctab.c $(UNZIP_H) zip.h +crypt.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h envargs.obj: envargs.c $(UNZIP_H) explode.obj: explode.c $(UNZIP_H) -extract.obj: extract.c $(UNZIP_H) crc32.h crypt.h -fileio.obj: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +extract.obj: extract.c $(UNZIP_H) crypt.h +fileio.obj: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h globals.obj: globals.c $(UNZIP_H) inflate.obj: inflate.c inflate.h $(UNZIP_H) list.obj: list.c $(UNZIP_H) match.obj: match.c $(UNZIP_H) -process.obj: process.c $(UNZIP_H) crc32.h +process.obj: process.c $(UNZIP_H) timezone.obj: timezone.c $(UNZIP_H) zip.h timezone.h ttyio.obj: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err.obj: ubz2err.c $(UNZIP_H) unreduce.obj: unreduce.c $(UNZIP_H) unshrink.obj: unshrink.c $(UNZIP_H) unzip.obj: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h @@ -296,19 +286,16 @@ win32.obj: win32/win32.c $(UNZIP_H) win32/nt.h $(CC) -c $(UNFLAGS) win32/win32.c -win32i64.obj: win32/win32i64.c $(UNZIP_H) - $(CC) -c $(UNFLAGS) win32/win32i64.c - nt.obj: win32/nt.c $(UNZIP_H) win32/nt.h $(CC) -c $(UNFLAGS) win32/nt.c -funzip.obj: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +funzip.obj: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h $(CC) -c $(FUFLAGS) -o$@ funzip.c -crc32f.obj: crc32.c $(UNZIP_H) zip.h crc32.h +crc32f.obj: crc32.c $(UNZIP_H) zip.h $(CC) -c $(FUFLAGS) -o$@ crc32.c -cryptf.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +cryptf.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(FUFLAGS) -o$@ crypt.c globalsf.obj: globals.c $(UNZIP_H) @@ -323,22 +310,22 @@ win32f.obj: win32/win32.c $(UNZIP_H) win32/nt.h $(CC) -c $(FUFLAGS) -o$@ win32/win32.c -win32i64f.obj: win32/win32i64.c $(UNZIP_H) - $(CC) -c $(FUFLAGS) -o$@ win32/win32i64.c - unzipsfx.obj: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h $(CC) -c $(SXFLAGS) -o$@ unzip.c -crc32x.obj: crc32.c $(UNZIP_H) zip.h crc32.h +crc32x.obj: crc32.c $(UNZIP_H) zip.h $(CC) -c $(SXFLAGS) -o$@ crc32.c -cryptx.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crctabx.obj: crctab.c $(UNZIP_H) zip.h + $(CC) -c $(SXFLAGS) -o$@ crctab.c + +cryptx.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(SXFLAGS) -o$@ crypt.c -extractx.obj: extract.c $(UNZIP_H) crc32.h crypt.h +extractx.obj: extract.c $(UNZIP_H) crypt.h $(CC) -c $(SXFLAGS) -o$@ extract.c -fileiox.obj: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +fileiox.obj: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h $(CC) -c $(SXFLAGS) -o$@ fileio.c globalsx.obj: globals.c $(UNZIP_H) @@ -350,7 +337,7 @@ matchx.obj: match.c $(UNZIP_H) $(CC) -c $(SXFLAGS) -o$@ match.c -processx.obj: process.c $(UNZIP_H) crc32.h +processx.obj: process.c $(UNZIP_H) $(CC) -c $(SXFLAGS) -o$@ process.c timezonx.obj: timezone.c $(UNZIP_H) zip.h timezone.h @@ -359,41 +346,35 @@ ttyiox.obj: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(SXFLAGS) -o$@ ttyio.c -ubz2errx.obj: ubz2err.c $(UNZIP_H) - $(CC) -c $(SXFLAGS) -o$@ ubz2err.c - win32x.obj: win32/win32.c $(UNZIP_H) win32/nt.h $(CC) -c $(SXFLAGS) -o$@ win32/win32.c -win32i64x.obj: win32/win32i64.c $(UNZIP_H) - $(CC) -c $(SXFLAGS) -o$@ win32/win32i64.c - ntx.obj: win32/nt.c $(UNZIP_H) win32/nt.h $(CC) -c $(SXFLAGS) -o$@ win32/nt.c uzexampl.obj: windll/uzexampl.c windll/uzexampl.h $(CC) -c $(UNFLAGS) -I./windll -o$@ windll/uzexampl.c -winapp.res: win32/winapp.rc unzvers.h - $(RC) /l 0x409 /fo$@ /i win32 /d WIN32 win32/winapp.rc - # DLL compilation section api.obj: api.c $(UNZIP_H) $(WINDLL_H) unzvers.h $(CC) -c $(DLFLAGS) -o$@ api.c -crc32l.obj: crc32.c $(UNZIP_H) zip.h crc32.h +crc32l.obj: crc32.c $(UNZIP_H) zip.h $(CC) -c $(DLFLAGS) -o$@ crc32.c -cryptl.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crctabl.obj: crctab.c $(UNZIP_H) zip.h + $(CC) -c $(DLFLAGS) -o$@ crctab.c + +cryptl.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(DLFLAGS) -o$@ crypt.c explodel.obj: explode.c $(UNZIP_H) $(CC) -c $(DLFLAGS) -o$@ explode.c -extractl.obj: extract.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h +extractl.obj: extract.c $(UNZIP_H) $(WINDLL_H) crypt.h $(CC) -c $(DLFLAGS) -o$@ extract.c -fileiol.obj: fileio.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h ttyio.h ebcdic.h +fileiol.obj: fileio.c $(UNZIP_H) $(WINDLL_H) crypt.h ttyio.h ebcdic.h $(CC) -c $(DLFLAGS) -o$@ fileio.c globalsl.obj: globals.c $(UNZIP_H) @@ -408,15 +389,12 @@ matchl.obj: match.c $(UNZIP_H) $(CC) -c $(DLFLAGS) -o$@ match.c -processl.obj: process.c $(UNZIP_H) $(WINDLL_H) crc32.h +processl.obj: process.c $(UNZIP_H) $(WINDLL_H) $(CC) -c $(DLFLAGS) -o$@ process.c timezonl.obj: timezone.c $(UNZIP_H) zip.h timezone.h $(CC) -c $(DLFLAGS) -o$@ timezone.c -ubz2errl.obj: ubz2err.c $(UNZIP_H) - $(CC) -c $(DLFLAGS) -o$@ ubz2err.c - unreducl.obj: unreduce.c $(UNZIP_H) $(CC) -c $(DLFLAGS) -o$@ unreduce.c @@ -429,9 +407,6 @@ win32l.obj: win32/win32.c $(UNZIP_H) win32/nt.h $(CC) -c $(DLFLAGS) -o$@ win32/win32.c -win32i64l.obj: win32/win32i64.c $(UNZIP_H) - $(CC) -c $(DLFLAGS) -o$@ win32/win32i64.c - ntl.obj: win32/nt.c $(UNZIP_H) win32/nt.h $(CC) -c $(DLFLAGS) -o$@ win32/nt.c @@ -445,19 +420,22 @@ apig.obj: api.c $(UNZIP_H) $(WINDLL_H) unzvers.h $(CC) -c $(SLFLAGS) -o$@ api.c -crc32g.obj: crc32.c $(UNZIP_H) zip.h crc32.h +crc32g.obj: crc32.c $(UNZIP_H) zip.h $(CC) -c $(SLFLAGS) -o$@ crc32.c -cryptg.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crctabg.obj: crctab.c $(UNZIP_H) zip.h + $(CC) -c $(SLFLAGS) -o$@ crctab.c + +cryptg.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(SLFLAGS) -o$@ crypt.c explodeg.obj: explode.c $(UNZIP_H) $(CC) -c $(SLFLAGS) -o$@ explode.c -extractg.obj: extract.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h +extractg.obj: extract.c $(UNZIP_H) $(WINDLL_H) crypt.h $(CC) -c $(SLFLAGS) -o$@ extract.c -fileiog.obj: fileio.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h ttyio.h ebcdic.h +fileiog.obj: fileio.c $(UNZIP_H) $(WINDLL_H) crypt.h ttyio.h ebcdic.h $(CC) -c $(SLFLAGS) -o$@ fileio.c globalsg.obj: globals.c $(UNZIP_H) @@ -469,21 +447,15 @@ matchg.obj: match.c $(UNZIP_H) $(CC) -c $(SLFLAGS) -o$@ match.c -processg.obj: process.c $(UNZIP_H) $(WINDLL_H) crc32.h +processg.obj: process.c $(UNZIP_H) $(WINDLL_H) $(CC) -c $(SLFLAGS) -o$@ process.c timezong.obj: timezone.c $(UNZIP_H) zip.h timezone.h $(CC) -c $(SLFLAGS) -o$@ timezone.c -ubz2errg.obj: ubz2err.c $(UNZIP_H) - $(CC) -c $(SLFLAGS) -o$@ ubz2err.c - win32g.obj: win32/win32.c $(UNZIP_H) win32/nt.h $(CC) -c $(SLFLAGS) -o$@ win32/win32.c -win32i64g.obj: win32/win32i64.c $(UNZIP_H) - $(CC) -c $(SLFLAGS) -o$@ win32/win32i64.c - ntg.obj: win32/nt.c $(UNZIP_H) win32/nt.h $(CC) -c $(SLFLAGS) -o$@ win32/nt.c @@ -500,19 +472,22 @@ $(OB)apib.obj: api.c $(UNZIP_H) $(WINDLL_H) unzvers.h $(CC) -c $(LBFLAGS) -o$@ api.c -$(OB)crc32b.obj: crc32.c $(UNZIP_H) zip.h crc32.h +$(OB)crc32b.obj: crc32.c $(UNZIP_H) zip.h $(CC) -c $(LBFLAGS) -o$@ crc32.c -$(OB)cryptb.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +$(OB)crctabb.obj: crctab.c $(UNZIP_H) zip.h + $(CC) -c $(LBFLAGS) -o$@ crctab.c + +$(OB)cryptb.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(LBFLAGS) -o$@ crypt.c $(OB)explodeb.obj: explode.c $(UNZIP_H) $(CC) -c $(LBFLAGS) -o$@ explode.c -$(OB)extractb.obj: extract.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h +$(OB)extractb.obj: extract.c $(UNZIP_H) $(WINDLL_H) crypt.h $(CC) -c $(LBFLAGS) -o$@ extract.c -$(OB)fileiob.obj: fileio.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h ttyio.h ebcdic.h +$(OB)fileiob.obj: fileio.c $(UNZIP_H) $(WINDLL_H) crypt.h ttyio.h ebcdic.h $(CC) -c $(LBFLAGS) -o$@ fileio.c $(OB)globalsb.obj: globals.c $(UNZIP_H) @@ -527,15 +502,12 @@ $(OB)matchb.obj: match.c $(UNZIP_H) $(CC) -c $(LBFLAGS) -o$@ match.c -$(OB)processb.obj: process.c $(UNZIP_H) $(WINDLL_H) crc32.h +$(OB)processb.obj: process.c $(UNZIP_H) $(WINDLL_H) $(CC) -c $(LBFLAGS) -o$@ process.c $(OB)timezonb.obj: timezone.c $(UNZIP_H) zip.h timezone.h $(CC) -c $(LBFLAGS) -o$@ timezone.c -$(OB)ubz2errb.obj: ubz2err.c $(UNZIP_H) - $(CC) -c $(LBFLAGS) -o$@ ubz2err.c - $(OB)unreducb.obj: unreduce.c $(UNZIP_H) $(CC) -c $(LBFLAGS) -o$@ unreduce.c @@ -548,9 +520,6 @@ $(OB)win32b.obj: win32/win32.c $(UNZIP_H) win32/nt.h $(CC) -c $(LBFLAGS) -o$@ win32/win32.c -$(OB)win32i64b.obj: win32/win32i64.c $(UNZIP_H) - $(CC) -c $(LBFLAGS) -o$@ win32/win32i64.c - $(OB)ntb.obj: win32/nt.c $(UNZIP_H) win32/nt.h $(CC) -c $(LBFLAGS) -o$@ win32/nt.c diff -Nru unzip-6.0/win32/Makefile.dj unzip-6.0/win32/Makefile.dj --- unzip-6.0/win32/Makefile.dj 2006-12-25 18:24:44.000000000 +0000 +++ unzip-6.0/win32/Makefile.dj 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ # Makefile for UnZip, fUnZip and UnZipSFX -# for rsxntdj 1.6beta2 (with djgpp v2.3) under Windows 9x and Windows NT. -# By E-Yen Tan. Last updated 25th December 2006. +# for rsxntdj 1.6beta2 (with djgpp v2.3) under Windows 95 and Windows NT. +# By E-Yen Tan. Last updated 20th January 2002. CC = gcc -Zwin32 CFLAGS = -O2 -Wall -I. -DWIN32 -DASM_CRC $(LOCAL_UNZIP) @@ -14,15 +14,14 @@ ADVAPI32LIB = lib$(ADVAPI32).a L_ADVAPI32 = -l$(ADVAPI32) -OBJU1 = unzip.o crc_gcc.o crc32.o crypt.o envargs.o explode.o extract.o +OBJU1 = unzip.o crc_gcc.o crctab.o crypt.o envargs.o explode.o extract.o OBJU2 = fileio.o globals.o inflate.o list.o match.o process.o ttyio.o -OBJU3 = ubz2err.o unreduce.o unshrink.o zipinfo.o win32.o nt.o +OBJU3 = unreduce.o unshrink.o zipinfo.o win32.o nt.o OBJU = $(OBJU1) $(OBJU2) $(OBJU3) -OBJX1 = unzipsf_.o crc_gcc.o crc32_.o crypt_.o extract_.o fileio_.o globals_.o -OBJX2 = inflate_.o match_.o process_.o ttyio_.o ubz2err_.o win32_.o nt_.o +OBJX1 = unzipsf_.o crc_gcc.o crctab_.o crypt_.o extract_.o fileio_.o +OBJX2 = globals_.o inflate_.o match_.o process_.o ttyio_.o win32_.o nt_.o OBJX = $(OBJX1) $(OBJX2) -OBJF = funzip.o crc_gcc.o crc32f.o cryptf.o inflatef.o globalsf.o ttyiof.o \ - win32f.o +OBJF = funzip.o crc_gcc.o cryptf.o inflatef.o globalsf.o ttyiof.o win32f.o UNZIP_H = unzip.h unzpriv.h globals.h win32/w32cfg.h @@ -53,7 +52,7 @@ $(ADVAPI32LIB): makelib "$(windir)/system/advapi32.dll" -o ./$@ -crc32.o: crc32.c $(UNZIP_H) crc32.h +crctab.o: crctab.c $(UNZIP_H) zip.h envargs.o: envargs.c $(UNZIP_H) explode.o: explode.c $(UNZIP_H) extract.o: extract.c $(UNZIP_H) crypt.h @@ -64,13 +63,12 @@ match.o: match.c $(UNZIP_H) process.o: process.c $(UNZIP_H) ttyio.o: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err.o: ubz2err.c $(UNZIP_H) unreduce.o: unreduce.c $(UNZIP_H) unshrink.o: unshrink.c $(UNZIP_H) unzip.o: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h zipinfo.o: zipinfo.c $(UNZIP_H) -funzip.o: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +funzip.o: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h $(CC) -c $(CFLAGS) -o$@ funzip.c uzexampl$(OBJ): windll/uzexampl.c windll/uzexampl.h @@ -94,13 +92,13 @@ crc_gcc.o: crc_i386.S $(AS) $(ASFLAGS) -x assembler-with-cpp -c -o $@ crc_i386.S -crypt.o: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crypt.o: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(CFLAGS) -o$@ crypt.c -cryptf.o: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +cryptf.o: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(CFLAGS) -DFUNZIP -o$@ crypt.c -crc32f.o: crc32.c $(UNZIP_H) zip.h crc32.h +crc32f.o: crc32.c $(UNZIP_H) zip.h $(CC) -c $(CFLAGS) -DFUNZIP -o$@ crc32.c globalsf.o: globals.c $(UNZIP_H) @@ -112,10 +110,10 @@ ttyiof.o: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(CFLAGS) -DFUNZIP -o$@ ttyio.c -crc32_.o: crc32.c $(UNZIP_H) crc32.h - $(CC) -c $(CFLAGS) -DSFX -o$@ crc32.c +crctab_.o: crctab.c $(UNZIP_H) zip.h + $(CC) -c $(CFLAGS) -DSFX -o$@ crctab.c -crypt_.o: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crypt_.o: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(CFLAGS) -DSFX -o$@ crypt.c extract_.o: extract.c $(UNZIP_H) crypt.h @@ -139,8 +137,5 @@ ttyio_.o: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(CFLAGS) -DSFX -o$@ ttyio.c -ubz2err_.o: ubz2err.c $(UNZIP_H) - $(CC) -c $(CFLAGS) -DSFX -o$@ ubz2err.c - unzipsf_.o: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h $(CC) -c $(CFLAGS) -DSFX -o$@ unzip.c diff -Nru unzip-6.0/win32/Makefile.emx unzip-6.0/win32/Makefile.emx --- unzip-6.0/win32/Makefile.emx 2006-12-25 19:00:10.000000000 +0000 +++ unzip-6.0/win32/Makefile.emx 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ # Makefile for UnZip, fUnZip and UnZipSFX # for emx 0.9d + rsxnt 1.42 / gcc under WIN32. Derived from makefile.os2 -# By E-Yen Tan and Christian Spieler. Last updated 25 December 2006. +# By E-Yen Tan and Christian Spieler. Last updated 10 February 2001. # # This makefile should work fine with GNU make and hopefully some others. # Tested with Spieler's special GNU make 3.74 gnuish 16-bit version. @@ -34,9 +34,13 @@ OBJ=.o #ifdef NOASM -#CRCA_O= +#CRC32=crc32 +#CRC32F=crc32f +#CRC32X=crc32_ #else -CRCA_O=crc_gcc +CRC32=crc_gcc +CRC32F=crc_gcc +CRC32X=crc_gcc #endif OBJUS=win32$(OBJ) nt$(OBJ) OBJXS=win32_$(OBJ) nt_$(OBJ) @@ -48,16 +52,16 @@ DIRSEP = / AS_DIRSEP = / -OBJU1 = unzip$(OBJ) crc32$(OBJ) $(CRCA_O) crypt$(OBJ) envargs$(OBJ) +OBJU1 = unzip$(OBJ) $(CRC32)$(OBJ) crctab$(OBJ) crypt$(OBJ) envargs$(OBJ) OBJU2 = explode$(OBJ) extract$(OBJ) fileio$(OBJ) globals$(OBJ) OBJU3 = inflate$(OBJ) list$(OBJ) match$(OBJ) process$(OBJ) ttyio$(OBJ) -OBJU4 = ubz2err$(OBJ) unreduce$(OBJ) unshrink$(OBJ) zipinfo$(OBJ) +OBJU4 = unreduce$(OBJ) unshrink$(OBJ) zipinfo$(OBJ) OBJU = $(OBJU1) $(OBJU2) $(OBJU3) $(OBJU4) $(OBJUS) -OBJX1 = unzipsf_$(OBJ) crc32_$(OBJ) $(CRCA_O) crypt_$(OBJ) +OBJX1 = unzipsf_$(OBJ) $(CRC32X)$(OBJ) crctab_$(OBJ) crypt_$(OBJ) OBJX2 = extract_$(OBJ) fileio_$(OBJ) globals_$(OBJ) inflate_$(OBJ) -OBJX3 = match_$(OBJ) process_$(OBJ) ttyio_$(OBJ) ubz2err_$(OBJ) +OBJX3 = match_$(OBJ) process_$(OBJ) ttyio_$(OBJ) OBJX = $(OBJX1) $(OBJX2) $(OBJX3) $(OBJXS) -OBJF = funzip$(OBJ) crc32f$(OBJ) $(CRCA_O) cryptf$(OBJ) inflatef$(OBJ) \ +OBJF = funzip$(OBJ) $(CRC32F)$(OBJ) cryptf$(OBJ) inflatef$(OBJ) \ globalsf$(OBJ) ttyiof$(OBJ) $(OBJFS) UNZIP_H = unzip.h unzpriv.h globals.h $(OSDEP_H) @@ -109,25 +113,25 @@ # dependencies apihelp$(OBJ): apihelp.c $(UNZIP_H) unzvers.h -crc32$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h +crc32$(OBJ): crc32.c $(UNZIP_H) zip.h +crctab$(OBJ): crctab.c $(UNZIP_H) zip.h envargs$(OBJ): envargs.c $(UNZIP_H) explode$(OBJ): explode.c $(UNZIP_H) -extract$(OBJ): extract.c $(UNZIP_H) crc32.h crypt.h -fileio$(OBJ): fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +extract$(OBJ): extract.c $(UNZIP_H) crypt.h +fileio$(OBJ): fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h globals$(OBJ): globals.c $(UNZIP_H) inflate$(OBJ): inflate.c $(UNZIP_H) list$(OBJ): list.c $(UNZIP_H) match$(OBJ): match.c $(UNZIP_H) -process$(OBJ): process.c $(UNZIP_H) crc32.h +process$(OBJ): process.c $(UNZIP_H) ttyio$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err$(OBJ): ubz2err.c $(UNZIP_H) unreduce$(OBJ): unreduce.c $(UNZIP_H) unshrink$(OBJ): unshrink.c $(UNZIP_H) unzip$(OBJ): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h api$(OBJ): api.c $(UNZIP_H) unzvers.h zipinfo$(OBJ): zipinfo.c $(UNZIP_H) -funzip$(OBJ): funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h # funzip only +funzip$(OBJ): funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h # funzip only $(CC) -c $(CFLAGS) $(OUT)$@ funzip.c unzipstb$(OBJ): unzipstb.c # DLL version @@ -175,55 +179,53 @@ crc_gcc$(OBJ): crc_i386.S # 32bit, GNU AS $(AS) $(ASFLAGS) -x assembler-with-cpp -c -o $@ crc_i386.S -crypt$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crypt$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(CFLAGS) $(DLLFLAG) $(OUT)$@ crypt.c -# funzip compilation section -cryptf$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +cryptf$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only $(CC) -c $(CFLAGSF) $(OUT)$@ crypt.c -crc32f$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h +crc32f$(OBJ): crc32.c $(UNZIP_H) zip.h # funzip only $(CC) -c $(CFLAGSF) $(OUT)$@ crc32.c -globalsf$(OBJ): globals.c $(UNZIP_H) +globalsf$(OBJ): globals.c $(UNZIP_H) # funzip only $(CC) -c $(CFLAGSF) $(OUT)$@ globals.c -inflatef$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h +inflatef$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h # funzip only $(CC) -c $(CFLAGSF) $(OUT)$@ inflate.c -ttyiof$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +ttyiof$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only $(CC) -c $(CFLAGSF) $(OUT)$@ ttyio.c -# unzipsfx compilation section -crc32_$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h +crc32_$(OBJ): crc32.c $(UNZIP_H) zip.h # unzipsfx only $(CC) -c $(CFLAGSX) $(OUT)$@ crc32.c -crypt_$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crctab_$(OBJ): crctab.c $(UNZIP_H) zip.h # unzipsfx only + $(CC) -c $(CFLAGSX) $(OUT)$@ crctab.c + +crypt_$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only $(CC) -c $(CFLAGSX) $(OUT)$@ crypt.c -extract_$(OBJ): extract.c $(UNZIP_H) crc32.h crypt.h +extract_$(OBJ): extract.c $(UNZIP_H) crypt.h # unzipsfx only $(CC) -c $(CFLAGSX) $(OUT)$@ extract.c -fileio_$(OBJ): fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +fileio_$(OBJ): fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h # unzipsfx only $(CC) -c $(CFLAGSX) $(OUT)$@ fileio.c -globals_$(OBJ): globals.c $(UNZIP_H) +globals_$(OBJ): globals.c $(UNZIP_H) # unzipsfx only $(CC) -c $(CFLAGSX) $(OUT)$@ globals.c -inflate_$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h +inflate_$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h # unzipsfx only $(CC) -c $(CFLAGSX) $(OUT)$@ inflate.c -match_$(OBJ): match.c $(UNZIP_H) +match_$(OBJ): match.c $(UNZIP_H) # unzipsfx only $(CC) -c $(CFLAGSX) $(OUT)$@ match.c -process_$(OBJ): process.c $(UNZIP_H) crc32.h +process_$(OBJ): process.c $(UNZIP_H) # unzipsfx only $(CC) -c $(CFLAGSX) $(OUT)$@ process.c -ttyio_$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h +ttyio_$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only $(CC) -c $(CFLAGSX) $(OUT)$@ ttyio.c -ubz2err_$(OBJ): ubz2err.c $(UNZIP_H) - $(CC) -c $(CFLAGSX) $(OUT)$@ ubz2err.c - -unzipsf_$(OBJ): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h +unzipsf_$(OBJ): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h # unzipsfx only $(CC) -c $(CFLAGSX) $(OUT)$@ unzip.c diff -Nru unzip-6.0/win32/Makefile.gcc unzip-6.0/win32/Makefile.gcc --- unzip-6.0/win32/Makefile.gcc 2008-08-09 16:03:30.000000000 +0000 +++ unzip-6.0/win32/Makefile.gcc 2010-05-14 07:26:14.000000000 +0000 @@ -2,21 +2,10 @@ # Currently supported implementations: Cygnus/Win32 and MinGW32. # # First version: Cosmin Truta, Dec 1997. -# Last revision: Christian Spieler, 09-Aug-2008. +# Last revision: Christian Spieler, 20-Feb-2005. # # To use, do "make -f win32/makefile.gcc". -# configuration switches supported: -# NOASM=1 disable assembler crc32 code, the generic C source code -# is used instead. -# NOCRC_OPT=1 disable "unfolding CRC tables" optimization. -# OPT_P6=1 add "modern gcc" tuning option for PentiumPro family CPU. -# USEBZ2=1 activate integrated compilation of bzip2 compression support, -# this requires the bzip2 sources present in the bzip2 subfolder. -# USEZLIB=1 replace internal deflate code by externally provided zlib. -# USE_POSIX=1 build posix-style binaries targeted for the CygWin unix -# emulation environment. - ### Optional section @@ -28,56 +17,20 @@ APPLY_ASMCRC=1 endif -# The external zlib library supplies its own crc32 implementation... -ifdef USEZLIB -APPLY_ASMCRC=0 -endif - # default is ASM CRC code (from .S source) for now... ifndef APPLY_ASMCRC APPLY_ASMCRC=1 endif -# optional inclusion of bzip2 decompression -IZ_BZIP2 = bzip2 -ifdef USEBZ2 -INC_BZ2LIB = -I$(IZ_BZIP2) -LOCFLAGS = $(INC_BZ2LIB) -DUSE_BZIP2 -LD_BZ2LIB = -L$(IZ_BZIP2) -lbz2 -LIBBZIP2 = $(IZ_BZIP2)/libbz2.a -else -INC_BZ2LIB = -LOCFLAGS = -LD_BZ2LIB = -LIBBZIP2 = -endif -LIBBZIP2X = $(LIBBZIP2) - -ifndef USEZLIB - -# Apply the "CRC unfolding tables" optimization unless explicitly disabled. -# (This optimization might have negative effects on old CPU designs with a -# small first-level data cache.) -ifndef NOCRC_OPT -LOCFLAGS += -DIZ_CRCOPTIM_UNFOLDTBL -endif - # Optional nonstandard preprocessor flags (as -DUSE_ZLIB or -DUSE_SMITH_CODE) # should be added to the environment via "set LOCAL_UNZIP=-DFOO" or added # to the declaration of LOCFLAGS here: ifneq ($(APPLY_ASMCRC),0) -LOCFLAGS += -DASM_CRC +LOCFLAGS = -DASM_CRC $(LOCAL_UNZIP) +else +LOCFLAGS = $(LOCAL_UNZIP) endif -else # ifndef USEZLIB - -LOCFLAGS += -DUSE_ZLIB - -endif # ifndef USEZLIB ... else ... - -# Finally, append additional externally supplied options. -LOCFLAGS += $(LOCAL_UNZIP) - # Some gcc distributions for Win32 (e.g. CygWin) try to emulate a POSIX- # compatible (Unix-style) environment. This Makefile defaults to a # "native Win32" build. To build POSIX-mode binaries, it is recommended @@ -141,17 +94,13 @@ CC_OUT_OPT = -o # Other specific options -CC_SPECIFIC_OPT = -c $(CC_ENVIR_OPT) +CC_SPECIFIC_OPT = -c -DASM_CRC $(CC_ENVIR_OPT) AS_SPECIFIC_OPT = -c LD_SPECIFIC_OPT = -o $@ # Libraries for the debug & release version -# (GCC 2.95 and newer does not require the system library specifications) -ifdef USEZLIB -LD_RELEASE_LIBS = -L. -lz -luser32 -ladvapi32 -else +# (GCC 2.95 and newer does not require the following library specifications) LD_RELEASE_LIBS = -luser32 -ladvapi32 -endif LD_DEBUG_LIBS = $(LD_RELEASE_LIBS) @@ -162,7 +111,6 @@ EXE = .exe .SUFFIXES: .c .S $(OBJ) $(EXE) -.PHONY: FORCE # Commands RM = rm -f @@ -204,45 +152,41 @@ GUILDFLAG=-mwindows # Object files -ifneq ($(APPLY_ASMCRC),0) OBJA = crc_i386$(OBJ) -else -OBJA = -endif -OBJU1 = unzip$(OBJ) crc32$(OBJ) crypt$(OBJ) envargs$(OBJ) +OBJU1 = unzip$(OBJ) crc32$(OBJ) crctab$(OBJ) crypt$(OBJ) envargs$(OBJ) OBJU2 = explode$(OBJ) extract$(OBJ) fileio$(OBJ) globals$(OBJ) inflate$(OBJ) -OBJU3 = list$(OBJ) match$(OBJ) process$(OBJ) ttyio$(OBJ) ubz2err$(OBJ) -OBJU4 = unreduce$(OBJ) unshrink$(OBJ) zipinfo$(OBJ) -OBJUS = win32$(OBJ) win32i64$(OBJ) nt$(OBJ) winapprc$(OBJ) +OBJU3 = list$(OBJ) match$(OBJ) process$(OBJ) ttyio$(OBJ) unreduce$(OBJ) +OBJU4 = unshrink$(OBJ) zipinfo$(OBJ) +OBJUS = win32$(OBJ) nt$(OBJ) OBJU = $(OBJU1) $(OBJU2) $(OBJU3) $(OBJU4) $(OBJA) $(OBJUS) -OBJX1 = unzipsfx$(OBJ) crc32x$(OBJ) cryptx$(OBJ) extractx$(OBJ) +OBJX1 = unzipsfx$(OBJ) crc32x$(OBJ) crctabx$(OBJ) cryptx$(OBJ) extractx$(OBJ) OBJX2 = fileiox$(OBJ) globalsx$(OBJ) inflatex$(OBJ) matchx$(OBJ) processx$(OBJ) -OBJX3 = ttyiox$(OBJ) ubz2errx$(OBJ) -OBJXS = win32x$(OBJ) win32i64x$(OBJ) ntx$(OBJ) +OBJX3 = ttyiox$(OBJ) +OBJXS = win32x$(OBJ) ntx$(OBJ) OBJX = $(OBJX1) $(OBJX2) $(OBJX3) $(OBJA) $(OBJXS) OBJF1 = funzip$(OBJ) crc32$(OBJ) cryptf$(OBJ) globalsf$(OBJ) inflatef$(OBJ) OBJF2 = ttyiof$(OBJ) -OBJFS = win32f$(OBJ) win32i64f$(OBJ) +OBJFS = win32f$(OBJ) OBJF = $(OBJF1) $(OBJF2) $(OBJA) $(OBJFS) OBJDLL = windll$(OBJ) windllrc$(OBJ) api$(OBJ) -OBJD1 = crc32l$(OBJ) cryptl$(OBJ) +OBJD1 = crc32l$(OBJ) crctabl$(OBJ) cryptl$(OBJ) OBJD2 = explodel$(OBJ) extractl$(OBJ) fileiol$(OBJ) globalsl$(OBJ) -OBJD3 = inflatel$(OBJ) listl$(OBJ) matchl$(OBJ) processl$(OBJ) ubz2errl$(OBJ) +OBJD3 = inflatel$(OBJ) listl$(OBJ) matchl$(OBJ) processl$(OBJ) OBJD4 = unreducl$(OBJ) unshrnkl$(OBJ) zipinfol$(OBJ) -OBJDS = win32l$(OBJ) win32i64l$(OBJ) ntl$(OBJ) +OBJDS = win32l$(OBJ) ntl$(OBJ) OBJD = $(OBJDLL) $(OBJD1) $(OBJD2) $(OBJD3) $(OBJD4) $(OBJA) $(OBJDS) -OBLX1 = apig$(OBJ) crc32g$(OBJ) cryptg$(OBJ) +OBLX1 = apig$(OBJ) crc32g$(OBJ) crctabg$(OBJ) cryptg$(OBJ) OBLX2 = extractg$(OBJ) fileiog$(OBJ) globalsg$(OBJ) inflateg$(OBJ) -OBLX3 = matchg$(OBJ) processg$(OBJ) ubz2errg$(OBJ) -OBLXS = win32g$(OBJ) win32i64g$(OBJ) ntg$(OBJ) windllg$(OBJ) +OBLX3 = matchg$(OBJ) processg$(OBJ) +OBLXS = win32g$(OBJ) ntg$(OBJ) windllg$(OBJ) OBLX = $(OBLX1) $(OBLX2) $(OBLX3) $(OBJA) $(OBLXS) OBGX = sfxwiz$(OBJ) sfxwizrc$(OBJ) OBJLIB = windllb$(OBJ) apib$(OBJ) -OBJB1 = crc32b$(OBJ) cryptb$(OBJ) +OBJB1 = crc32b$(OBJ) crctabb$(OBJ) cryptb$(OBJ) OBJB2 = explodeb$(OBJ) extractb$(OBJ) fileiob$(OBJ) globalsb$(OBJ) -OBJB3 = inflateb$(OBJ) listb$(OBJ) matchb$(OBJ) processb$(OBJ) ubz2errb$(OBJ) +OBJB3 = inflateb$(OBJ) listb$(OBJ) matchb$(OBJ) processb$(OBJ) OBJB4 = unreducb$(OBJ) unshrnkb$(OBJ) zipinfob$(OBJ) -OBJBS = win32b$(OBJ) win32i64b$(OBJ) ntb$(OBJ) +OBJBS = win32b$(OBJ) ntb$(OBJ) OBJB = $(OBJLIB) $(OBJB1) $(OBJB2) $(OBJB3) $(OBJB4) $(OBJA) $(OBJBS) UNZIP_H = unzip.h unzpriv.h globals.h win32/w32cfg.h @@ -259,22 +203,22 @@ lib: libunzip32.a all: unzips dll dllsample guisfx lib -unzip$(EXE): $(OBJU) $(LIBBZIP2) - $(LD) $(LDFLAGS) $(LDVER) $(OBJU) $(LD_BZ2LIB) $(LDLIBS) +unzip$(EXE): $(OBJU) + $(LD) $(LDFLAGS) $(LDVER) $(OBJU) $(LDLIBS) -unzipsfx$(EXE): $(OBJX) $(LIBBZIP2X) +unzipsfx$(EXE): $(OBJX) $(LD) $(LDFLAGS) $(LDVER) $(OBJX) $(LDLIBS) funzip$(EXE): $(OBJF) $(LD) $(LDFLAGS) $(LDVER) $(OBJF) $(LDLIBS) -unzip32.dll: $(DLLDEF) $(OBJD) $(LIBBZIP2) - dllwrap --driver-name $(CC) --def $(DLLDEF) $(LDFLAGS) $(LDVER) $(OBJD) $(LD_BZ2LIB) $(LDLIBS) +unzip32.dll: $(DLLDEF) $(OBJD) + dllwrap --driver-name $(CC) --def $(DLLDEF) $(LDFLAGS) $(LDVER) $(OBJD) $(LDLIBS) libunzsfx32.a: $(OBLX) $(AR) -rus $@ $(OBLX) -SFXWiz32$(EXE): $(OBGX) libunzsfx32.a $(LIBBZIP2X) +SFXWiz32$(EXE): $(OBGX) libunzsfx32.a $(LD) $(GUILDFLAG) $(LDFLAGS) $(LDVER) $(OBGX) -L. -lunzsfx32 $(LDLIBS) uzexampl$(EXE): uzexampl$(OBJ) @@ -284,11 +228,6 @@ $(AR) -rus $@ $(OBJB) -# create/update the library for the optional bzip2 support: -$(IZ_BZIP2)/libbz2.a: FORCE - $(subst /,\,$(MAKE)) -C $(IZ_BZIP2) -f Makebz2.iz CC="$(CC)" RM="$(RM)" -FORCE: - # How to compile sources .c$(OBJ): $(CC) $(CFLAGS) $(CVER) $(GENFLAGS) $< @@ -296,20 +235,20 @@ $(AS) $(ASFLAGS) $(ASVER) $(GENFLAGS) $< # Dependencies -crc32$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h -crypt$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crc32$(OBJ): crc32.c $(UNZIP_H) zip.h +crctab$(OBJ): crctab.c $(UNZIP_H) zip.h +crypt$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h envargs$(OBJ): envargs.c $(UNZIP_H) explode$(OBJ): explode.c $(UNZIP_H) -extract$(OBJ): extract.c $(UNZIP_H) crc32.h crypt.h -fileio$(OBJ): fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h -funzip$(OBJ): funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +extract$(OBJ): extract.c $(UNZIP_H) crypt.h +fileio$(OBJ): fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h +funzip$(OBJ): funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h globals$(OBJ): globals.c $(UNZIP_H) inflate$(OBJ): inflate.c inflate.h $(UNZIP_H) list$(OBJ): list.c $(UNZIP_H) match$(OBJ): match.c $(UNZIP_H) -process$(OBJ): process.c $(UNZIP_H) crc32.h +process$(OBJ): process.c $(UNZIP_H) ttyio$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err$(OBJ): ubz2err.c $(UNZIP_H) unreduce$(OBJ): unreduce.c $(UNZIP_H) unshrink$(OBJ): unshrink.c $(UNZIP_H) unzip$(OBJ): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h @@ -317,254 +256,230 @@ crc_i386$(OBJ): crc_i386.S win32$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h - $(CC) $(CFLAGS) $(CVER) $(GENFLAGS) -I. $< - -win32i64$(OBJ): win32/win32i64.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENFLAGS) -I. $< + $(CC) $(CFLAGS) $(CVER) $(GENFLAGS) -I. win32/win32.c nt$(OBJ): win32/nt.c $(UNZIP_H) win32/nt.h - $(CC) $(CFLAGS) $(CVER) $(GENFLAGS) -I. $< + $(CC) $(CFLAGS) $(CVER) $(GENFLAGS) -I. win32/nt.c -winapprc$(OBJ): win32/winapp.rc unzvers.h - - $(RC) -o $@ $< +win32x$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h # unzipsfx only + $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) -I. win32/win32.c -# UnZipSFX compilation section -crc32x$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h - $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) $< +ntx$(OBJ): win32/nt.c $(UNZIP_H) win32/nt.h # unzipsfx only + $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) -I. win32/nt.c -cryptx$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h - $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) $< +win32f$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h # funzip only + $(CC) $(CFLAGS) $(CVER) $(FFLAGS) -I. win32/win32.c -extractx$(OBJ): extract.c $(UNZIP_H) crc32.h crypt.h - $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) $< +crc32x$(OBJ): crc32.c $(UNZIP_H) zip.h # unzipsfx only + $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) crc32.c -fileiox$(OBJ): fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h - $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) $< +crctabx$(OBJ): crctab.c $(UNZIP_H) zip.h # unzipsfx only + $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) crctab.c -globalsx$(OBJ): globals.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) $< +cryptx$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only + $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) crypt.c -inflatex$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h - $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) $< +cryptf$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only + $(CC) $(CFLAGS) $(CVER) $(FFLAGS) crypt.c -matchx$(OBJ): match.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) $< +extractx$(OBJ): extract.c $(UNZIP_H) crypt.h # unzipsfx only + $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) extract.c -processx$(OBJ): process.c $(UNZIP_H) crc32.h - $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) $< +fileiox$(OBJ): fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h # unzipsfx only + $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) fileio.c -ttyiox$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h - $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) $< +globalsx$(OBJ): globals.c $(UNZIP_H) # unzipsfx only + $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) globals.c -ubz2errx$(OBJ): ubz2err.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) $< +globalsf$(OBJ): globals.c $(UNZIP_H) # funzip only + $(CC) $(CFLAGS) $(CVER) $(FFLAGS) globals.c -unzipsfx$(OBJ): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h - $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) $< +inflatex$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h # unzipsfx only + $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) inflate.c -win32x$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h - $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) -I. $< +inflatef$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h # funzip only + $(CC) $(CFLAGS) $(CVER) $(FFLAGS) inflate.c -win32i64x$(OBJ): win32/win32i64.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) -I. $< +matchx$(OBJ): match.c $(UNZIP_H) # unzipsfx only + $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) match.c -ntx$(OBJ): win32/nt.c $(UNZIP_H) win32/nt.h - $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) -I. $< +processx$(OBJ): process.c $(UNZIP_H) # unzipsfx only + $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) process.c -# fUnZip compilation section -cryptf$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h - $(CC) $(CFLAGS) $(CVER) $(FFLAGS) $< +ttyiox$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # unzipsfx only + $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) ttyio.c -globalsf$(OBJ): globals.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(FFLAGS) $< +ttyiof$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h # funzip only + $(CC) $(CFLAGS) $(CVER) $(FFLAGS) ttyio.c -inflatef$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h - $(CC) $(CFLAGS) $(CVER) $(FFLAGS) $< +unzipsfx$(OBJ): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h # unzipsfx only + $(CC) $(CFLAGS) $(CVER) $(SFXFLAGS) unzip.c -ttyiof$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h - $(CC) $(CFLAGS) $(CVER) $(FFLAGS) $< - -win32f$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h - $(CC) $(CFLAGS) $(CVER) $(FFLAGS) -I. $< - -win32i64f$(OBJ): win32/win32i64.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(FFLAGS) -I. $< - -# WINDLL sample -uzexampl$(OBJ): windll/uzexampl.c windll/uzexampl.h - $(CC) $(CFLAGS) $(CVER) $(GENFLAGS) -I. $< +uzexampl$(OBJ): windll/uzexampl.c windll/uzexampl.h # WINDLL sample + $(CC) $(CFLAGS) $(CVER) $(GENFLAGS) -I. windll/uzexampl.c # DLL compilation section api$(OBJ): api.c $(UNZIP_H) $(WINDLL_H) unzvers.h - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) api.c + +crc32l$(OBJ): crc32.c $(UNZIP_H) zip.h + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) crc32.c -crc32l$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) $< +crctabl$(OBJ): crctab.c $(UNZIP_H) zip.h + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) crctab.c -cryptl$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) $< +cryptl$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) crypt.c explodel$(OBJ): explode.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) explode.c -extractl$(OBJ): extract.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) $< +extractl$(OBJ): extract.c $(UNZIP_H) $(WINDLL_H) crypt.h + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) extract.c -fileiol$(OBJ): fileio.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h ttyio.h ebcdic.h - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) $< +fileiol$(OBJ): fileio.c $(UNZIP_H) $(WINDLL_H) crypt.h ttyio.h ebcdic.h + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) fileio.c globalsl$(OBJ): globals.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) globals.c inflatel$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) inflate.c listl$(OBJ): list.c $(UNZIP_H) $(WINDLL_H) - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) list.c matchl$(OBJ): match.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) match.c -processl$(OBJ): process.c $(UNZIP_H) $(WINDLL_H) crc32.h - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) $< - -ubz2errl$(OBJ): ubz2err.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) $< +processl$(OBJ): process.c $(UNZIP_H) $(WINDLL_H) + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) process.c unreducl$(OBJ): unreduce.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) unreduce.c unshrnkl$(OBJ): unshrink.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) unshrink.c zipinfol$(OBJ): zipinfo.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) zipinfo.c win32l$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) -I. $< - -win32i64l$(OBJ): win32/win32i64.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) -I. $< + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) -I. win32/win32.c ntl$(OBJ): win32/nt.c $(UNZIP_H) win32/nt.h - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) -I. $< + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) -I. win32/nt.c windll$(OBJ): windll/windll.c $(UNZIP_H) $(WINDLL_H) crypt.h unzvers.h consts.h - $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) -I. $< + $(CC) $(CFLAGS) $(CVER) $(GENDLLFL) -I. windll/windll.c windllrc$(OBJ): windll/windll.rc unzvers.h - - $(RC) -o $@ $< + - $(RC) -o $@ windll/windll.rc # SFX Lib compilation section apig$(OBJ): api.c $(UNZIP_H) $(WINDLL_H) unzvers.h - $(CC) $(CFLAGS) $(CVER) $(GENGUILB) $< + $(CC) $(CFLAGS) $(CVER) $(GENGUILB) api.c -crc32g$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h - $(CC) $(CFLAGS) $(CVER) $(GENGUILB) $< +crc32g$(OBJ): crc32.c $(UNZIP_H) zip.h + $(CC) $(CFLAGS) $(CVER) $(GENGUILB) crc32.c -cryptg$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h - $(CC) $(CFLAGS) $(CVER) $(GENGUILB) $< +crctabg$(OBJ): crctab.c $(UNZIP_H) zip.h + $(CC) $(CFLAGS) $(CVER) $(GENGUILB) crctab.c -extractg$(OBJ): extract.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h - $(CC) $(CFLAGS) $(CVER) $(GENGUILB) $< +cryptg$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h + $(CC) $(CFLAGS) $(CVER) $(GENGUILB) crypt.c -fileiog$(OBJ): fileio.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h ttyio.h ebcdic.h - $(CC) $(CFLAGS) $(CVER) $(GENGUILB) $< +extractg$(OBJ): extract.c $(UNZIP_H) $(WINDLL_H) crypt.h + $(CC) $(CFLAGS) $(CVER) $(GENGUILB) extract.c + +fileiog$(OBJ): fileio.c $(UNZIP_H) $(WINDLL_H) crypt.h ttyio.h ebcdic.h + $(CC) $(CFLAGS) $(CVER) $(GENGUILB) fileio.c globalsg$(OBJ): globals.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENGUILB) $< + $(CC) $(CFLAGS) $(CVER) $(GENGUILB) globals.c inflateg$(OBJ): inflate.c inflate.h $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENGUILB) $< + $(CC) $(CFLAGS) $(CVER) $(GENGUILB) inflate.c matchg$(OBJ): match.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENGUILB) $< - -processg$(OBJ): process.c $(UNZIP_H) $(WINDLL_H) crc32.h - $(CC) $(CFLAGS) $(CVER) $(GENGUILB) $< + $(CC) $(CFLAGS) $(CVER) $(GENGUILB) match.c -ubz2errg$(OBJ): ubz2err.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENGUILB) $< +processg$(OBJ): process.c $(UNZIP_H) $(WINDLL_H) + $(CC) $(CFLAGS) $(CVER) $(GENGUILB) process.c win32g$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h - $(CC) $(CFLAGS) $(CVER) $(GENGUILB) -I. $< - -win32i64g$(OBJ): win32/win32i64.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENGUILB) -I. $< + $(CC) $(CFLAGS) $(CVER) $(GENGUILB) -I. win32/win32.c ntg$(OBJ): win32/nt.c $(UNZIP_H) win32/nt.h - $(CC) $(CFLAGS) $(CVER) $(GENGUILB) -I. $< + $(CC) $(CFLAGS) $(CVER) $(GENGUILB) -I. win32/nt.c windllg$(OBJ): windll/windll.c $(UNZIP_H) $(WINDLL_H) crypt.h unzvers.h consts.h - $(CC) $(CFLAGS) $(CVER) $(GENGUILB) -I. $< + $(CC) $(CFLAGS) $(CVER) $(GENGUILB) windll/windll.c sfxwiz$(OBJ): windll/guisfx/sfxwiz.c windll/guisfx/dialog.h $(WINDLL_IMP_H) - $(CC) $(CFLAGS) $(CVER) $(GENGUISX) -I. $< + $(CC) $(CFLAGS) $(CVER) $(GENGUISX) -I. windll/guisfx/sfxwiz.c sfxwizrc$(OBJ): windll/guisfx/sfxwiz.rc - - $(RC) --include-dir windll/guisfx --define WIN32 -o$@ $< + - $(RC) --include-dir windll/guisfx --define WIN32 -o$@ \ + windll/guisfx/sfxwiz.rc # Static LIB compilation section apib$(OBJ): api.c $(UNZIP_H) $(WINDLL_H) unzvers.h - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) api.c + +crc32b$(OBJ): crc32.c $(UNZIP_H) zip.h + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) crc32.c -crc32b$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) $< +crctabb$(OBJ): crctab.c $(UNZIP_H) zip.h + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) crctab.c -cryptb$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) $< +cryptb$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) crypt.c explodeb$(OBJ): explode.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) explode.c -extractb$(OBJ): extract.c $(UNZIP_H) crc32.h crypt.h - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) $< +extractb$(OBJ): extract.c $(UNZIP_H) crypt.h + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) extract.c -fileiob$(OBJ): fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) $< +fileiob$(OBJ): fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) fileio.c globalsb$(OBJ): globals.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) globals.c inflateb$(OBJ): inflate.c inflate.h $(UNZIP_H) crypt.h - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) inflate.c listb$(OBJ): list.c $(UNZIP_H) $(WINDLL_H) - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) list.c matchb$(OBJ): match.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) match.c -processb$(OBJ): process.c $(UNZIP_H) crc32.h - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) $< - -ubz2errb$(OBJ): ubz2err.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) $< +processb$(OBJ): process.c $(UNZIP_H) + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) process.c unreducb$(OBJ): unreduce.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) unreduce.c unshrnkb$(OBJ): unshrink.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) unshrink.c zipinfob$(OBJ): zipinfo.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) $< + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) zipinfo.c win32b$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) -I. $< - -win32i64b$(OBJ): win32/win32i64.c $(UNZIP_H) - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) -I. $< + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) -I. win32/win32.c ntb$(OBJ): win32/nt.c $(UNZIP_H) win32/nt.h - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) -I. $< + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) -I. win32/nt.c windllb$(OBJ): windll/windll.c $(UNZIP_H) $(WINDLL_H) crypt.h unzvers.h consts.h - $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) -I. $< + $(CC) $(CFLAGS) $(CVER) $(GENLIBFL) -I. windll/windll.c clean: - -$(subst /,\,$(MAKE)) -C $(IZ_BZIP2) -f Makebz2.iz RM="$(RM)" clean - -$(RM) *$(OBJ) - -$(RM) unzip$(EXE) funzip$(EXE) unzipsfx$(EXE) - -$(RM) unzip32.dll uzexampl$(EXE) SFXWiz32$(EXE) - -$(RM) libunzip32.a libunzsfx32.a + $(RM) *$(OBJ) + $(RM) unzip$(EXE) funzip$(EXE) unzipsfx$(EXE) + $(RM) unzip32.dll uzexampl$(EXE) SFXWiz32$(EXE) + $(RM) libunzip32.a libunzsfx32.a diff -Nru unzip-6.0/win32/Makefile.lcc unzip-6.0/win32/Makefile.lcc --- unzip-6.0/win32/Makefile.lcc 2008-07-20 12:33:44.000000000 +0000 +++ unzip-6.0/win32/Makefile.lcc 2010-05-14 07:26:14.000000000 +0000 @@ -1,6 +1,6 @@ # Makefile for UnZip, fUnZip and UnZipSFX using LCC-Win32. # By E-Yen Tan (3 June 1998). -# Last updated 20 Jul 2008 (Christian Spieler). +# Last updated 30 May 2004 (Christian Spieler). # # This version includes rules to build the 32-bit windll DLL. @@ -33,18 +33,18 @@ # Options to select optimized assembler code for CRC32 calculation. #ifdef NOASM #ASMFLG= -#CRCA_O= -#CRCA_OF= -#CRCA_OL= -#CRCA_OG= -#CRCA_OX= +#CRC32=crc32 +#CRC32F=crc32f +#CRC32L=crc32l +#CRC32G=crc32g +#CRC32X=crc32_ #else ASMFLG=-DASM_CRC -CRCA_O=crc_lcc$(OBJ) -CRCA_OF=$(CRCA_O) -CRCA_OL=$(CRCA_O) -CRCA_OG=$(CRCA_O) -CRCA_OX=$(CRCA_O) +CRC32=crc_lcc +CRC32F=crc_lcc +CRC32L=crc_lcc +CRC32G=crc_lcc +CRC32X=crc_lcc #endif CFLAGS = $(CCFLAGS) $(LOC) @@ -58,37 +58,37 @@ # The system specific files are defined here: -OBJUS=win32$(OBJ) win32i64$(OBJ) nt$(OBJ) -OBJXS=win32_$(OBJ) win32i64_$(OBJ) nt_$(OBJ) -OBJFS=win32f$(OBJ) win32i64f$(OBJ) -OBJDS=win32l$(OBJ) win32i64l$(OBJ) ntl$(OBJ) -OBLXS=win32g$(OBJ) win32i64g$(OBJ) ntg$(OBJ) windllg$(OBJ) +OBJUS=win32$(OBJ) nt$(OBJ) +OBJXS=win32_$(OBJ) nt_$(OBJ) +OBJFS=win32f$(OBJ) +OBJDS=win32l$(OBJ) ntl$(OBJ) +OBLXS=win32g$(OBJ) ntg$(OBJ) windllg$(OBJ) OSDEP_H=win32/w32cfg.h WINDLL_H=windll/windll.h windll/structs.h windll/decs.h DLLDEF=.\windll\windll_lc.def # lcclink requires backslashes as dir-sep!! WINDLL_IMP_H = windll/decs.h windll/structs.h -OBJU1 = unzip$(OBJ) crc32$(OBJ) $(CRCA_O) crypt$(OBJ) envargs$(OBJ) +OBJU1 = unzip$(OBJ) $(CRC32)$(OBJ) crctab$(OBJ) crypt$(OBJ) envargs$(OBJ) OBJU2 = explode$(OBJ) extract$(OBJ) fileio$(OBJ) globals$(OBJ) OBJU3 = inflate$(OBJ) list$(OBJ) match$(OBJ) process$(OBJ) ttyio$(OBJ) -OBJU4 = ubz2err$(OBJ) unreduce$(OBJ) unshrink$(OBJ) zipinfo$(OBJ) +OBJU4 = unreduce$(OBJ) unshrink$(OBJ) zipinfo$(OBJ) OBJU = $(OBJU1) $(OBJU2) $(OBJU3) $(OBJU4) $(OBJUS) -OBJX1 = unzipsf_$(OBJ) crc32_$(OBJ) $(CRCA_OX) crypt_$(OBJ) +OBJX1 = unzipsf_$(OBJ) $(CRC32X)$(OBJ) crctab_$(OBJ) crypt_$(OBJ) OBJX2 = extract_$(OBJ) fileio_$(OBJ) globals_$(OBJ) inflate_$(OBJ) -OBJX3 = match_$(OBJ) process_$(OBJ) ttyio_$(OBJ) ubz2err_$(OBJ) +OBJX3 = match_$(OBJ) process_$(OBJ) ttyio_$(OBJ) OBJX = $(OBJX1) $(OBJX2) $(OBJX3) $(OBJXS) -OBJF = funzip$(OBJ) crc32f$(OBJ) $(CRCA_OF) cryptf$(OBJ) inflatef$(OBJ) \ +OBJF = funzip$(OBJ) $(CRC32F)$(OBJ) cryptf$(OBJ) inflatef$(OBJ) \ globalsf$(OBJ) ttyiof$(OBJ) $(OBJFS) OBJDLL = windll$(OBJ) windll32.res api$(OBJ) -OBJD1 = crc32l$(OBJ) $(CRCA_OL) cryptl$(OBJ) +OBJD1 = $(CRC32L)$(OBJ) crctabl$(OBJ) cryptl$(OBJ) OBJD2 = explodel$(OBJ) extractl$(OBJ) fileiol$(OBJ) globalsl$(OBJ) OBJD3 = inflatel$(OBJ) listl$(OBJ) matchl$(OBJ) processl$(OBJ) -OBJD4 = ubz2errl$(OBJ) unreducl$(OBJ) unshrnkl$(OBJ) zipinfol$(OBJ) +OBJD4 = unreducl$(OBJ) unshrnkl$(OBJ) zipinfol$(OBJ) OBJD = $(OBJDLL) $(OBJD1) $(OBJD2) $(OBJD3) $(OBJD4) $(OBJDS) -OBLX1 = apig$(OBJ) crc32g$(OBJ) $(CRCA_OG) cryptg$(OBJ) +OBLX1 = apig$(OBJ) $(CRC32G)$(OBJ) crctabg$(OBJ) cryptg$(OBJ) OBLX2 = extractg$(OBJ) fileiog$(OBJ) globalsg$(OBJ) inflateg$(OBJ) -OBLX3 = matchg$(OBJ) processg$(OBJ) ubz2errg$(OBJ) +OBLX3 = matchg$(OBJ) processg$(OBJ) OBLX = $(OBLX1) $(OBLX2) $(OBLX3) $(OBLXS) OBGX = sfxwiz$(OBJ) @@ -112,8 +112,8 @@ guisfx: SFXWiz32.exe all: unzips dll dllsample guisfx -unzip.exe: $(OBJU) winapp.res - $(LD) $(LDFLAGS)$@ $(DEF) $(OBJU) winapp.res $(LDFLAGS2) +unzip.exe: $(OBJU) + $(LD) $(LDFLAGS)$@ $(DEF) $(OBJU) $(LDFLAGS2) funzip.exe: $(OBJF) $(LD) $(LDFLAGS)$@ $(DEF) $(OBJF) $(LDFLAGS2) @@ -138,24 +138,24 @@ api$(OBJ): api.c $(UNZIP_H) unzvers.h apihelp$(OBJ): apihelp.c $(UNZIP_H) unzvers.h -crc32$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h +crc32$(OBJ): crc32.c $(UNZIP_H) zip.h +crctab$(OBJ): crctab.c $(UNZIP_H) zip.h envargs$(OBJ): envargs.c $(UNZIP_H) explode$(OBJ): explode.c $(UNZIP_H) -extract$(OBJ): extract.c $(UNZIP_H) crc32.h crypt.h -fileio$(OBJ): fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +extract$(OBJ): extract.c $(UNZIP_H) crypt.h +fileio$(OBJ): fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h globals$(OBJ): globals.c $(UNZIP_H) inflate$(OBJ): inflate.c $(UNZIP_H) list$(OBJ): list.c $(UNZIP_H) match$(OBJ): match.c $(UNZIP_H) -process$(OBJ): process.c $(UNZIP_H) crc32.h +process$(OBJ): process.c $(UNZIP_H) ttyio$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -ubz2err$(OBJ): ubz2err.c $(UNZIP_H) unreduce$(OBJ): unreduce.c $(UNZIP_H) unshrink$(OBJ): unshrink.c $(UNZIP_H) unzip$(OBJ): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h zipinfo$(OBJ): zipinfo.c $(UNZIP_H) -funzip$(OBJ): funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +funzip$(OBJ): funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h $(CC) -c $(CFLAGS) $(OUT)$@ funzip.c uzexampl$(OBJ): windll/uzexampl.c windll/uzexampl.h @@ -164,9 +164,6 @@ win32$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h unzvers.h $(CC) -c $(CFLAGS_UN) -Iwin32 $(OUT)$@ win32/win32.c -win32i64$(OBJ): win32/win32i64.c $(UNZIP_H) - $(CC) -c $(CFLAGS_UN) -Iwin32 $(OUT)$@ win32/win32i64.c - nt$(OBJ): win32/nt.c $(UNZIP_H) win32/nt.h $(CC) -c $(CFLAGS_UN) -Iwin32 $(OUT)$@ win32/nt.c @@ -176,13 +173,10 @@ crypt$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(CFLAGS_UN) $(OUT)$@ crypt.c -winapp.res: win32/winapp.rc unzvers.h - - lrc -v -r -I./win32 -DWIN32 -o$@ win32/winapp.rc - -crc32f$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h +crc32f$(OBJ): crc32.c $(UNZIP_H) zip.h $(CC) -c $(CFLAGS_FU) $(OUT)$@ crc32.c -cryptf$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +cryptf$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(CFLAGS_FU) $(OUT)$@ crypt.c globalsf$(OBJ): globals.c $(UNZIP_H) @@ -197,19 +191,19 @@ win32f$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h $(CC) -c $(CFLAGS_FU) -Iwin32 $(OUT)$@ win32/win32.c -win32i64f$(OBJ): win32/win32i64.c $(UNZIP_H) - $(CC) -c $(CFLAGS_FU) -Iwin32 $(OUT)$@ win32/win32i64.c - -crc32_$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h +crc32_$(OBJ): crc32.c $(UNZIP_H) zip.h $(CC) -c $(CFLAGS_SX) $(OUT)$@ crc32.c -crypt_$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crctab_$(OBJ): crctab.c $(UNZIP_H) zip.h + $(CC) -c $(CFLAGS_SX) $(OUT)$@ crctab.c + +crypt_$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(CFLAGS_SX) $(OUT)$@ crypt.c -extract_$(OBJ): extract.c $(UNZIP_H) crc32.h crypt.h +extract_$(OBJ): extract.c $(UNZIP_H) crypt.h $(CC) -c $(CFLAGS_SX) $(OUT)$@ extract.c -fileio_$(OBJ): fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +fileio_$(OBJ): fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h $(CC) -c $(CFLAGS_SX) $(OUT)$@ fileio.c globals_$(OBJ): globals.c $(UNZIP_H) @@ -221,24 +215,18 @@ match_$(OBJ): match.c $(UNZIP_H) $(CC) -c $(CFLAGS_SX) $(OUT)$@ match.c -process_$(OBJ): process.c $(UNZIP_H) crc32.h +process_$(OBJ): process.c $(UNZIP_H) $(CC) -c $(CFLAGS_SX) $(OUT)$@ process.c ttyio_$(OBJ): ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(CFLAGS_SX) $(OUT)$@ ttyio.c -ubz2err_$(OBJ): ubz2err.c $(UNZIP_H) - $(CC) -c $(CFLAGS_SX) $(OUT)$@ ubz2err.c - unzipsf_$(OBJ): unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h $(CC) -c $(CFLAGS_SX) $(OUT)$@ unzip.c win32_$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h $(CC) -c $(CFLAGS_SX) -Iwin32 $(OUT)$@ win32/win32.c -win32i64_$(OBJ): win32/win32i64.c $(UNZIP_H) - $(CC) -c $(CFLAGS_SX) -Iwin32 $(OUT)$@ win32/win32i64.c - nt_$(OBJ): win32/nt.c $(UNZIP_H) win32/nt.h $(CC) -c $(CFLAGS_SX) -Iwin32 $(OUT)$@ win32/nt.c @@ -246,19 +234,22 @@ api$(OBJ): api.c $(UNZIP_H) $(WINDLL_H) unzvers.h $(CC) -c $(CFLAGS_DL) $(OUT)$@ api.c -crc32l$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h +crc32l$(OBJ): crc32.c $(UNZIP_H) zip.h $(CC) -c $(CFLAGS_DL) $(OUT)$@ crc32.c -cryptl$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crctabl$(OBJ): crctab.c $(UNZIP_H) zip.h + $(CC) -c $(CFLAGS_DL) $(OUT)$@ crctab.c + +cryptl$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(CFLAGS_DL) $(OUT)$@ crypt.c explodel$(OBJ): explode.c $(UNZIP_H) $(CC) -c $(CFLAGS_DL) $(OUT)$@ explode.c -extractl$(OBJ): extract.c $(UNZIP_H) crc32.h crypt.h +extractl$(OBJ): extract.c $(UNZIP_H) crypt.h $(CC) -c $(CFLAGS_DL) $(OUT)$@ extract.c -fileiol$(OBJ): fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +fileiol$(OBJ): fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h $(CC) -c $(CFLAGS_DL) $(OUT)$@ fileio.c globalsl$(OBJ): globals.c $(UNZIP_H) @@ -273,12 +264,9 @@ matchl$(OBJ): match.c $(UNZIP_H) $(CC) -c $(CFLAGS_DL) $(OUT)$@ match.c -processl$(OBJ): process.c $(UNZIP_H) crc32.h +processl$(OBJ): process.c $(UNZIP_H) $(CC) -c $(CFLAGS_DL) $(OUT)$@ process.c -ubz2errl$(OBJ): ubz2err.c $(UNZIP_H) - $(CC) -c $(CFLAGS_DL) $(OUT)$@ ubz2err.c - unreducl$(OBJ): unreduce.c $(UNZIP_H) $(CC) -c $(CFLAGS_DL) $(OUT)$@ unreduce.c @@ -291,9 +279,6 @@ win32l$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h $(CC) -c $(CFLAGS_DL) -Iwin32 $(OUT)$@ win32/win32.c -win32i64l$(OBJ): win32/win32i64.c $(UNZIP_H) - $(CC) -c $(CFLAGS_DL) -Iwin32 $(OUT)$@ win32/win32i64.c - ntl$(OBJ): win32/nt.c $(UNZIP_H) win32/nt.h $(CC) -c $(CFLAGS_DL) -Iwin32 $(OUT)$@ win32/nt.c @@ -307,16 +292,19 @@ apig$(OBJ): api.c $(UNZIP_H) $(WINDLL_H) unzvers.h $(CC) -c $(CFLAGS_SL) $(OUT)$@ api.c -crc32g$(OBJ): crc32.c $(UNZIP_H) zip.h crc32.h +crc32g$(OBJ): crc32.c $(UNZIP_H) zip.h $(CC) -c $(CFLAGS_SL) $(OUT)$@ crc32.c -cryptg$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +crctabg$(OBJ): crctab.c $(UNZIP_H) zip.h + $(CC) -c $(CFLAGS_SL) $(OUT)$@ crctab.c + +cryptg$(OBJ): crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(CC) -c $(CFLAGS_SL) $(OUT)$@ crypt.c -extractg$(OBJ): extract.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h +extractg$(OBJ): extract.c $(UNZIP_H) $(WINDLL_H) crypt.h $(CC) -c $(CFLAGS_SL) $(OUT)$@ extract.c -fileiog$(OBJ): fileio.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h ttyio.h ebcdic.h +fileiog$(OBJ): fileio.c $(UNZIP_H) $(WINDLL_H) crypt.h ttyio.h ebcdic.h $(CC) -c $(CFLAGS_SL) $(OUT)$@ fileio.c globalsg$(OBJ): globals.c $(UNZIP_H) @@ -328,18 +316,12 @@ matchg$(OBJ): match.c $(UNZIP_H) $(CC) -c $(CFLAGS_SL) $(OUT)$@ match.c -processg$(OBJ): process.c $(UNZIP_H) $(WINDLL_H) crc32.h +processg$(OBJ): process.c $(UNZIP_H) $(WINDLL_H) $(CC) -c $(CFLAGS_SL) $(OUT)$@ process.c -ubz2errg$(OBJ): ubz2err.c $(UNZIP_H) - $(CC) -c $(CFLAGS_SL) $(OUT)$@ ubz2err.c - win32g$(OBJ): win32/win32.c $(UNZIP_H) win32/nt.h $(CC) -c $(CFLAGS_SL) -Iwin32 $(OUT)$@ win32/win32.c -win32i64g$(OBJ): win32/win32i64.c $(UNZIP_H) - $(CC) -c $(CFLAGS_SL) -Iwin32 $(OUT)$@ win32/win32i64.c - ntg$(OBJ): win32/nt.c $(UNZIP_H) win32/nt.h $(CC) -c $(CFLAGS_SL) -Iwin32 $(OUT)$@ win32/nt.c diff -Nru unzip-6.0/win32/Makefile.wat unzip-6.0/win32/Makefile.wat --- unzip-6.0/win32/Makefile.wat 2009-01-18 20:30:10.000000000 +0000 +++ unzip-6.0/win32/Makefile.wat 2010-05-14 07:26:14.000000000 +0000 @@ -1,15 +1,13 @@ -# WMAKE makefile for Windows 9x and Windows NT (Intel only) -# using Watcom C/C++ v11.0+, by Paul Kienitz, last revised 18 Jan 2009. +# WMAKE makefile for Windows 95 and Windows NT (Intel only) +# using Watcom C/C++ v11.0+, by Paul Kienitz, last revised 24 Jan 05. # Makes UnZip.exe, fUnZip.exe, and UnZipSFX.exe. # # Invoke from UnZip source dir with "WMAKE -F WIN32\MAKEFILE.WAT [targets]" # To build with debug info use "WMAKE DEBUG=1 ..." # To build with no assembly modules use "WMAKE NOASM=1 ..." -# To omit unshrinking support use "WMAKE NO_LZW=1 ..." +# To support unshrinking use "WMAKE LAWSUIT=1 ..." # To support unreducing, get the real unreduce.c and go "WMAKE OFFEND_RMS=1 ..." # To use Info-Zip's generic timezone functions use "WMAKE USE_IZTIMEZONE=1 ..." -# To include support for bzip2 decompression, get the bzip2 source distribution -# into the bzip2/ subfolder and start compilation with "WMAKE USEBZ2=1 ..." # # Other options to be fed to the compiler can be specified in an environment # variable called LOCAL_UNZIP. @@ -46,16 +44,6 @@ avars = $+$(avars)$- -DUSE_SMITH_CODE !endif -IZ_BZIP2 = bzip2 -!ifdef USEBZ2 -cvars = $+$(cvars)$- -DUSE_BZIP2 -I$(IZ_BZIP2) -BZIPLIB = $(IZ_BZIP2)/$(OBDIR)/bz2.lib -BZ2LNKLIB = lib {$(BZIPLIB)} -!else -BZIPLIB = -BZ2LNKLIB = -!endif - !ifndef USE_IZTIMEZONE #default: do not use the IZ timezone replacement USE_IZTIMEZONE=0 @@ -65,10 +53,10 @@ # controls its usage. !ifdef NOASM -crcaob = +crcob = $(O)crc32.obj !else # !NOASM cvars = $+$(cvars)$- -DASM_CRC -crcaob = $(O)crc_i386.obj +crcob = $(O)crc_i386.obj !endif !if $(USE_IZTIMEZONE) != 0 @@ -88,30 +76,29 @@ # Our object files. OBJU is for UnZip, OBJX for UnZipSFX, OBJF for fUnZip: -OBJU1 = $(O)unzip.obj $(O)crc32.obj $(crcaob) $(O)crypt.obj $(O)envargs.obj +OBJU1 = $(O)unzip.obj $(crcob) $(O)crctab.obj $(O)crypt.obj $(O)envargs.obj OBJU2 = $(O)explode.obj $(O)extract.obj $(O)fileio.obj $(O)globals.obj OBJU3 = $(O)inflate.obj $(O)list.obj $(O)match.obj $(O)process.obj -OBJU4 = $(O)ubz2err.obj $(O)ttyio.obj $(O)unreduce.obj $(O)unshrink.obj -OBJU5 = $(O)zipinfo.obj -OBJUS = $(O)win32.obj $(O)win32i64.obj $(O)nt.obj $(TIMEZONE_OBJU) -OBJU = $(OBJU1) $(OBJU2) $(OBJU3) $(OBJU4) $(OBJU5) $(OBJUS) +OBJU4 = $(O)ttyio.obj $(O)unreduce.obj $(O)unshrink.obj $(O)zipinfo.obj +OBJUS = $(O)win32.obj $(O)nt.obj $(TIMEZONE_OBJU) +OBJU = $(OBJU1) $(OBJU2) $(OBJU3) $(OBJU4) $(OBJUS) -OBJX1 = $(O)unzip.obx $(O)crc32.obx $(crcaob) $(O)crypt.obx $(O)extract.obx +OBJX1 = $(O)unzip.obx $(crcob) $(O)crctab.obx $(O)crypt.obx $(O)extract.obx OBJX2 = $(O)fileio.obx $(O)globals.obx $(O)inflate.obx $(O)match.obx -OBJX3 = $(O)process.obx $(O)ttyio.obx $(O)ubz2err.obx -OBJXS = $(O)win32.obx $(O)win32i64.obx $(O)nt.obx $(TIMEZONE_OBJX) +OBJX3 = $(O)process.obx $(O)ttyio.obx +OBJXS = $(O)win32.obx $(O)nt.obx $(TIMEZONE_OBJX) OBJX = $(OBJX1) $(OBJX2) $(OBJX3) $(OBJXS) -OBJF1 = $(O)funzip.obj $(O)crc32f.obj $(crcaob) $(O)cryptf.obj -OBJF2 = $(O)globalsf.obj $(O)inflatef.obj $(O)ttyiof.obj -OBJFS = $(O)win32f.obj $(O)win32i64f.obj +OBJF1 = $(O)funzip.obj $(crcob) $(O)cryptf.obj $(O)globalsf.obj +OBJF2 = $(O)inflatef.obj $(O)ttyiof.obj +OBJFS = $(O)win32f.obj OBJF = $(OBJF1) $(OBJF2) $(OBJFS) -OBJD1 = $(O)api.obj $(O)crc32l.obj $(crcaob) $(O)cryptl.obj $(O)explodel.obj +OBJD1 = $(O)api.obj $(crcob) $(O)crctabl.obj $(O)cryptl.obj $(O)explodel.obj OBJD2 = $(O)extractl.obj $(O)fileiol.obj $(O)globalsl.obj $(O)inflatel.obj -OBJD3 = $(O)listl.obj $(O)matchl.obj $(O)processl.obj $(O)ubz2errl.obj +OBJD3 = $(O)listl.obj $(O)matchl.obj $(O)processl.obj OBJD4 = $(O)unreducl.obj $(O)unshrnkl.obj $(O)zipinfol.obj -OBJDS = $(O)win32l.obj $(O)win32i64l.obj $(O)ntl.obj $(O)windll.obj $(TIMEZONE_OBJD) +OBJDS = $(O)win32l.obj $(O)ntl.obj $(O)windll.obj $(TIMEZONE_OBJD) OBJD = $(OBJD1) $(OBJD2) $(OBJD3) $(OBJD4) $(OBJDS) UNZIP_H = unzip.h unzpriv.h globals.h win32/w32cfg.h @@ -124,11 +111,9 @@ cc = wcc386 link = wlink asm = wasm -rc = wrc # Use Pentium Pro timings, register args, static strings in code, high strictness: cflags = -bt=NT -6r -zt -zq -wx aflags = -bt=NT -mf -3 -zq -rflags = -bt=NT lflags = sys NT lflags_dll = sys NT_DLL cvars = $+$(cvars)$- -DWIN32 $(variation) @@ -166,41 +151,40 @@ x: UnZipSFX.exe .SYMBOLIC d: UnZip32.dll .SYMBOLIC -UnZip.exe: $(OBDIR) $(OBJU) $(BZIPLIB) $(O)winapp.res - $(link) $(lflags) $(ldebug) name $@ file {$(OBJU)} $(BZ2LNKLIB) +UnZip.exe: $(OBDIR) $(OBJU) + $(link) $(lflags) $(ldebug) name $@ file {$(OBJU)} -UnZipSFX.exe: $(OBDIR) $(OBJX) $(BZIPLIB) - $(link) $(lflags) $(ldebug) name $@ file {$(OBJX)} $(BZ2LNKLIB) +UnZipSFX.exe: $(OBDIR) $(OBJX) + $(link) $(lflags) $(ldebug) name $@ file {$(OBJX)} fUnZip.exe: $(OBDIR) $(OBJF) $(link) $(lflags) $(ldebug) name $@ file {$(OBJF)} -UnZip32.dll: $(OBDIR) $(OBJD) $(BZIPLIB) $(O)windll.res - $(link) $(lflags_dll) $(ldebug) name $@ file {$(OBJD)} $(BZ2LNKLIB) - $(rc) $(rflags) $(O)windll.res $@ +UnZip32.dll: $(OBDIR) $(OBJD) + $(link) $(lflags_dll) $(ldebug) name $@ file {$(OBJD)} uzexampl.exe: $(OBDIR) $(O)uzexampl.obj - $(link) $(lflags) $(ldebug) name $@ file {$(O)uzexampl.obj} lib version.lib + $(link) $(lflags) $(ldebug) name $@ file {$(O)uzexampl.obj} # Source dependencies: # generic (UnZip, fUnZip): -$(O)crc32.obj: crc32.c $(UNZIP_H) zip.h crc32.h -$(O)crypt.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +$(O)crc32.obj: crc32.c $(UNZIP_H) zip.h +$(O)crctab.obj: crctab.c $(UNZIP_H) zip.h +$(O)crypt.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(O)envargs.obj: envargs.c $(UNZIP_H) $(O)explode.obj: explode.c $(UNZIP_H) -$(O)extract.obj: extract.c $(UNZIP_H) crc32.h crypt.h -$(O)fileio.obj: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h -$(O)funzip.obj: funzip.c $(UNZIP_H) crc32.h crypt.h ttyio.h +$(O)extract.obj: extract.c $(UNZIP_H) crypt.h +$(O)fileio.obj: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h +$(O)funzip.obj: funzip.c $(UNZIP_H) crypt.h ttyio.h tables.h $(O)globals.obj: globals.c $(UNZIP_H) $(O)inflate.obj: inflate.c inflate.h $(UNZIP_H) $(O)list.obj: list.c $(UNZIP_H) $(O)match.obj: match.c $(UNZIP_H) -$(O)process.obj: process.c $(UNZIP_H) crc32.h +$(O)process.obj: process.c $(UNZIP_H) $(O)timezone.obj: timezone.c $(UNZIP_H) zip.h timezone.h $(O)ttyio.obj: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -$(O)ubz2err.obj: ubz2err.c $(UNZIP_H) $(O)unreduce.obj: unreduce.c $(UNZIP_H) $(O)unshrink.obj: unshrink.c $(UNZIP_H) $(O)unzip.obj: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h @@ -208,17 +192,17 @@ # UnZipSFX variants: -$(O)crc32.obx: crc32.c $(UNZIP_H) zip.h crc32.h -$(O)crypt.obx: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h -$(O)extract.obx: extract.c $(UNZIP_H) crc32.h crypt.h -$(O)fileio.obx: fileio.c $(UNZIP_H) crc32.h crypt.h ttyio.h ebcdic.h +$(O)crc32.obx: crc32.c $(UNZIP_H) zip.h +$(O)crctab.obx: crctab.c $(UNZIP_H) zip.h +$(O)crypt.obx: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h +$(O)extract.obx: extract.c $(UNZIP_H) crypt.h +$(O)fileio.obx: fileio.c $(UNZIP_H) crypt.h ttyio.h ebcdic.h $(O)globals.obx: globals.c $(UNZIP_H) $(O)inflate.obx: inflate.c inflate.h $(UNZIP_H) $(O)match.obx: match.c $(UNZIP_H) -$(O)process.obx: process.c $(UNZIP_H) crc32.h +$(O)process.obx: process.c $(UNZIP_H) $(O)timezone.obx: timezone.c $(UNZIP_H) zip.h timezone.h $(O)ttyio.obx: ttyio.c $(UNZIP_H) zip.h crypt.h ttyio.h -$(O)ubz2err.obx: ubz2err.c $(UNZIP_H) $(O)unzip.obx: unzip.c $(UNZIP_H) crypt.h unzvers.h consts.h # Special case object files: @@ -229,12 +213,6 @@ $(O)win32.obx: win32\win32.c $(UNZIP_H) win32\nt.h $(cc) $(cdebux) $(cflags) $(cvars) -DSFX win32\win32.c -fo=$@ -$(O)win32i64.obj: win32\win32i64.c $(UNZIP_H) - $(cc) $(cdebug) $(cflags) $(cvars) win32\win32i64.c -fo=$@ - -$(O)win32i64.obx: win32\win32i64.c $(UNZIP_H) - $(cc) $(cdebux) $(cflags) $(cvars) -DSFX win32\win32i64.c -fo=$@ - $(O)nt.obj: win32\nt.c $(UNZIP_H) win32\nt.h $(cc) $(cdebug) $(cflags) $(cvars) win32\nt.c -fo=$@ @@ -244,14 +222,8 @@ $(O)crc_i386.obj: win32\crc_i386.asm $(asm) $(aflags) $(avars) win32\crc_i386.asm -fo=$@ -$(O)winapp.res: win32\winapp.rc unzvers.h - $(rc) $(rflags) /r /fo=$@ /dWIN32 win32\winapp.rc - # Variant object files for fUnZip: -$(O)crc32f.obj: crc32.c $(UNZIP_H) zip.h crc32.h - $(cc) $(CFLAGS_FU) crc32.c -fo=$@ - $(O)cryptf.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(cc) $(CFLAGS_FU) crypt.c -fo=$@ @@ -267,21 +239,20 @@ $(O)win32f.obj: win32\win32.c $(UNZIP_H) $(cc) $(CFLAGS_FU) win32\win32.c -fo=$@ -$(O)win32i64f.obj: win32\win32i64.c $(UNZIP_H) - $(cc) $(CFLAGS_FU) win32\win32i64.c -fo=$@ - # DLL compilation section $(O)api.obj: api.c $(UNZIP_H) $(WINDLL_H) unzvers.h $(cc) $(CFLAGS_DL) api.c -fo=$@ -$(O)crc32l.obj: crc32.c $(UNZIP_H) zip.h crc32.h +$(O)crc32l.obj: crc32.c $(UNZIP_H) zip.h $(cc) $(CFLAGS_DL) crc32.c -fo=$@ -$(O)cryptl.obj: crypt.c $(UNZIP_H) zip.h crypt.h crc32.h ttyio.h +$(O)crctabl.obj: crctab.c $(UNZIP_H) zip.h + $(cc) $(CFLAGS_DL) crctab.c -fo=$@ +$(O)cryptl.obj: crypt.c $(UNZIP_H) zip.h crypt.h ttyio.h $(cc) $(CFLAGS_DL) crypt.c -fo=$@ $(O)explodel.obj: explode.c $(UNZIP_H) $(cc) $(CFLAGS_DL) explode.c -fo=$@ -$(O)extractl.obj: extract.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h +$(O)extractl.obj: extract.c $(UNZIP_H) $(WINDLL_H) crypt.h $(cc) $(CFLAGS_DL) extract.c -fo=$@ -$(O)fileiol.obj: fileio.c $(UNZIP_H) $(WINDLL_H) crc32.h crypt.h ttyio.h ebcdic.h +$(O)fileiol.obj: fileio.c $(UNZIP_H) $(WINDLL_H) crypt.h ttyio.h ebcdic.h $(cc) $(CFLAGS_DL) fileio.c -fo=$@ $(O)globalsl.obj: globals.c $(UNZIP_H) $(cc) $(CFLAGS_DL) globals.c -fo=$@ @@ -291,12 +262,10 @@ $(cc) $(CFLAGS_DL) list.c -fo=$@ $(O)matchl.obj: match.c $(UNZIP_H) $(cc) $(CFLAGS_DL) match.c -fo=$@ -$(O)processl.obj: process.c $(UNZIP_H) $(WINDLL_H) crc32.h +$(O)processl.obj: process.c $(UNZIP_H) $(WINDLL_H) $(cc) $(CFLAGS_DL) process.c -fo=$@ $(O)timezonl.obj: timezone.c $(UNZIP_H) zip.h timezone.h $(cc) $(CFLAGS_DL) timezone.c -fo=$@ -$(O)ubz2errl.obj: ubz2err.c $(UNZIP_H) - $(cc) $(CFLAGS_DL) ubz2err.c -fo=$@ $(O)unreducl.obj: unreduce.c $(UNZIP_H) $(cc) $(CFLAGS_DL) unreduce.c -fo=$@ $(O)unshrnkl.obj: unshrink.c $(UNZIP_H) @@ -307,9 +276,6 @@ $(O)win32l.obj: win32\win32.c $(UNZIP_H) win32\nt.h $(cc) $(CFLAGS_DL) -I. win32\win32.c -fo=$@ -$(O)win32i64l.obj: win32\win32i64.c $(UNZIP_H) - $(cc) $(CFLAGS_DL) -I. win32\win32i64.c -fo=$@ - $(O)ntl.obj: win32\nt.c $(UNZIP_H) win32\nt.h $(cc) $(CFLAGS_DL) -I. win32\nt.c -fo=$@ @@ -317,36 +283,25 @@ $(O)windll.obj: crypt.h unzvers.h consts.h $(cc) $(CFLAGS_DL) -I. windll\windll.c -fo=$@ -$(O)windll.res: windll\windll.rc unzvers.h - $(rc) $(rflags) /r /fo=$@ /i=windll /dWIN32 windll\windll.rc +windll.res: windll\windll.rc unzvers.h + $(rc) /l 0x409 /fo$@ /i windll /d WIN32 windll\windll.rc # Windll command line example: + $(O)uzexampl.obj: windll/uzexampl.c windll/uzexampl.h $(cc) $(cdebug) $(cflags) $(cvars) windll\uzexampl.c -fo=$@ -# The bzip2 (de)compression library for BZIP2 support: -$(IZ_BZIP2)/$(OBDIR)/bz2.lib : .ALWAYS .RECHECK - $(MAKE) -h -f $(IZ_BZIP2)/makbz2iz.wat CC=$(cc) AR=lib386 & - CFLSYS="$(cdebug) $(cflags)" & - BZROOTDIR=$(IZ_BZIP2) BZOBDIR=$(IZ_BZIP2)/$(OBDIR) - # Creation of subdirectory for intermediate files $(OBDIR): -mkdir $@ # Unwanted file removal: -clean_bz2_lib: .SYMBOLIC - -$(MAKE) -h -f $(IZ_BZIP2)/makbz2iz.wat & - BZROOTDIR=$(IZ_BZIP2) BZOBDIR=$(IZ_BZIP2)\$(OBDIR) clean - -clean: clean_bz2_lib .SYMBOLIC +clean: .SYMBOLIC del $(O)*.ob? - del $(O)*.res cleaner: clean .SYMBOLIC del UnZip.exe del fUnZip.exe del UnZipSFX.exe - del UnZip32.dll - del uzexampl.exe + del UnZip32.dll diff -Nru unzip-6.0/win32/nt.c unzip-6.0/win32/nt.c --- unzip-6.0/win32/nt.c 2007-12-25 11:34:50.000000000 +0000 +++ unzip-6.0/win32/nt.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. @@ -52,12 +52,6 @@ # define FILE_SHARE_DELETE 0x00000004 #endif -/* This macro definition is missing in old versions of MS' winbase.h. */ -#ifndef InterlockedExchangePointer -# define InterlockedExchangePointer(Target, Value) \ - (PVOID)InterlockedExchange((PLONG)(Target), (LONG)(Value)) -#endif - /* private prototypes */ @@ -66,8 +60,8 @@ static VOID InitLocalPrivileges(VOID); -volatile BOOL bInitialized = FALSE; /* module level stuff initialized? */ -HANDLE hInitMutex = NULL; /* prevent multiple initialization */ +BOOL bInitialized = FALSE; /* module level stuff initialized? */ +HANDLE hInitMutex = NULL; /* prevent multiple initialization */ BOOL g_bRestorePrivilege = FALSE; /* for local set file security override */ BOOL g_bSaclPrivilege = FALSE; /* for local set sacl operations, only when @@ -95,18 +89,16 @@ HANDLE hMutex; HANDLE hOldMutex; - if (bInitialized) return TRUE; + if(bInitialized) return TRUE; hMutex = CreateMutex(NULL, TRUE, NULL); if(hMutex == NULL) return FALSE; - hOldMutex = (HANDLE)InterlockedExchangePointer((void *)&hInitMutex, - hMutex); + hOldMutex = (HANDLE)InterlockedExchange((LPLONG)&hInitMutex, (LONG)hMutex); - if (hOldMutex != NULL) { + if(hOldMutex != NULL) { /* somebody setup the mutex already */ - InterlockedExchangePointer((void *)&hInitMutex, - hOldMutex); + InterlockedExchange((LPLONG)&hInitMutex, (LONG)hOldMutex); CloseHandle(hMutex); /* close new, un-needed mutex */ @@ -117,24 +109,17 @@ return bInitialized; } - if (!bInitialized) { - /* initialize module level resources */ + /* initialize module level resources */ - InitializeCriticalSection( &VolumeCapsLock ); - memset(&g_VolumeCaps, 0, sizeof(VOLUMECAPS)); + InitializeCriticalSection( &VolumeCapsLock ); + memset(&g_VolumeCaps, 0, sizeof(VOLUMECAPS)); - InitLocalPrivileges(); + InitLocalPrivileges(); - bInitialized = TRUE; - } - - InterlockedExchangePointer((void *)&hInitMutex, - NULL); + bInitialized = TRUE; ReleaseMutex(hMutex); /* release correct mutex */ - CloseHandle(hMutex); /* free the no longer needed handle resource */ - return TRUE; } @@ -156,7 +141,7 @@ if(!GetSecurityDescriptorDacl(sd, &bAclPresent, &pAcl, &bDefaulted)) return FALSE; - if(bAclPresent && pAcl!=NULL) { + if(bAclPresent) { if(!IsValidAcl(pAcl)) return FALSE; } @@ -165,7 +150,7 @@ if(!GetSecurityDescriptorSacl(sd, &bAclPresent, &pAcl, &bDefaulted)) return FALSE; - if(bAclPresent && pAcl!=NULL) { + if(bAclPresent) { if(!IsValidAcl(pAcl)) return FALSE; } @@ -272,7 +257,7 @@ if(rootpath != NULL && rootpath[0] != '\0') { DWORD i; - cchTempRootPath = lstrlenA(rootpath); + cchTempRootPath = lstrlen(rootpath); if(cchTempRootPath > MAX_PATH) return FALSE; /* copy input, converting forward slashes to back slashes as we go */ @@ -344,7 +329,7 @@ EnterCriticalSection( &VolumeCapsLock ); if(!g_VolumeCaps.bValid || - lstrcmpiA(g_VolumeCaps.RootPath, TempRootPath) != 0) + lstrcmpi(g_VolumeCaps.RootPath, TempRootPath) != 0) { /* no match found, build up new entry */ @@ -356,7 +341,7 @@ /* release lock during expensive operations */ LeaveCriticalSection( &VolumeCapsLock ); - bSuccess = GetVolumeInformationA( + bSuccess = GetVolumeInformation( (TempRootPath[0] == '\0') ? NULL : TempRootPath, NULL, 0, NULL, NULL, @@ -370,7 +355,7 @@ if(bSuccess && (dwFileSystemFlags & FS_PERSISTENT_ACLS) && VolumeCaps->bUsePrivileges) { - if(GetDriveTypeA( (TempRootPath[0] == '\0') ? NULL : TempRootPath ) + if(GetDriveType( (TempRootPath[0] == '\0') ? NULL : TempRootPath ) == DRIVE_REMOTE) { bRemote = TRUE; diff -Nru unzip-6.0/win32/vc6/funzip.dsp unzip-6.0/win32/vc6/funzip.dsp --- unzip-6.0/win32/vc6/funzip.dsp 2008-02-11 01:55:18.000000000 +0000 +++ unzip-6.0/win32/vc6/funzip.dsp 2010-05-14 07:26:14.000000000 +0000 @@ -1,26 +1,26 @@ # Microsoft Developer Studio Project File - Name="funzip" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** +# ** NICHT BEARBEITEN ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=funzip - Win32 ASM Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run +!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE +!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl !MESSAGE !MESSAGE NMAKE /f "funzip.mak". !MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben +!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: !MESSAGE !MESSAGE NMAKE /f "funzip.mak" CFG="funzip - Win32 ASM Debug" !MESSAGE -!MESSAGE Possible choices for configuration are: +!MESSAGE Für die Konfiguration stehen zur Auswahl: !MESSAGE -!MESSAGE "funzip - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "funzip - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "funzip - Win32 ASM Release" (based on "Win32 (x86) Console Application") -!MESSAGE "funzip - Win32 ASM Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "funzip - Win32 Release" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "funzip - Win32 Debug" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "funzip - Win32 ASM Release" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "funzip - Win32 ASM Debug" (basierend auf "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -175,10 +175,6 @@ # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File -SOURCE=..\..\crc32.h -# End Source File -# Begin Source File - SOURCE=..\..\crypt.h # End Source File # Begin Source File @@ -195,6 +191,10 @@ # End Source File # Begin Source File +SOURCE=..\..\tables.h +# End Source File +# Begin Source File + SOURCE=..\..\ttyio.h # End Source File # Begin Source File diff -Nru unzip-6.0/win32/vc6/unzip.dsp unzip-6.0/win32/vc6/unzip.dsp --- unzip-6.0/win32/vc6/unzip.dsp 2007-03-24 18:51:24.000000000 +0000 +++ unzip-6.0/win32/vc6/unzip.dsp 2010-05-14 07:26:14.000000000 +0000 @@ -1,26 +1,26 @@ # Microsoft Developer Studio Project File - Name="unzip" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** +# ** NICHT BEARBEITEN ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=unzip - Win32 ASM Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run +!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE +!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl !MESSAGE !MESSAGE NMAKE /f "unzip.mak". !MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben +!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: !MESSAGE !MESSAGE NMAKE /f "unzip.mak" CFG="unzip - Win32 ASM Debug" !MESSAGE -!MESSAGE Possible choices for configuration are: +!MESSAGE Für die Konfiguration stehen zur Auswahl: !MESSAGE -!MESSAGE "unzip - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "unzip - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "unzip - Win32 ASM Release" (based on "Win32 (x86) Console Application") -!MESSAGE "unzip - Win32 ASM Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "unzip - Win32 Release" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "unzip - Win32 Debug" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "unzip - Win32 ASM Release" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "unzip - Win32 ASM Debug" (basierend auf "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -82,13 +82,13 @@ # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "unzip__Win32_ASM_Release" -# PROP BASE Intermediate_Dir "unzip__Win32_ASM_Release" +# PROP BASE Output_Dir "unzip___Win32_ASM_Release" +# PROP BASE Intermediate_Dir "unzip___Win32_ASM_Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 -# PROP Output_Dir "unzip__Win32_ASM_Release" -# PROP Intermediate_Dir "unzip__Win32_ASM_Release" +# PROP Output_Dir "unzip___Win32_ASM_Release" +# PROP Intermediate_Dir "unzip___Win32_ASM_Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /FD /c @@ -106,14 +106,14 @@ # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "unzip__Win32_ASM_Debug" -# PROP BASE Intermediate_Dir "unzip__Win32_ASM_Debug" +# PROP BASE Output_Dir "unzip___Win32_ASM_Debug" +# PROP BASE Intermediate_Dir "unzip___Win32_ASM_Debug" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "unzip__Win32_ASM_Debug" -# PROP Intermediate_Dir "unzip__Win32_ASM_Debug" +# PROP Output_Dir "unzip___Win32_ASM_Debug" +# PROP Intermediate_Dir "unzip___Win32_ASM_Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /FD /GZ /c @@ -148,6 +148,10 @@ # End Source File # Begin Source File +SOURCE=..\..\crctab.c +# End Source File +# Begin Source File + SOURCE=..\..\crypt.c # End Source File # Begin Source File @@ -196,10 +200,6 @@ # End Source File # Begin Source File -SOURCE=..\..\ubz2err.c -# End Source File -# Begin Source File - SOURCE=..\..\unreduce.c # End Source File # Begin Source File @@ -216,10 +216,6 @@ # End Source File # Begin Source File -SOURCE=..\win32i64.c -# End Source File -# Begin Source File - SOURCE=..\..\zipinfo.c # End Source File # End Group @@ -232,10 +228,6 @@ # End Source File # Begin Source File -SOURCE=..\..\crc32.h -# End Source File -# Begin Source File - SOURCE=..\..\crypt.h # End Source File # Begin Source File @@ -256,6 +248,10 @@ # End Source File # Begin Source File +SOURCE=..\..\tables.h +# End Source File +# Begin Source File + SOURCE=..\..\ttyio.h # End Source File # Begin Source File diff -Nru unzip-6.0/win32/vc6/unzip.dsw unzip-6.0/win32/vc6/unzip.dsw --- unzip-6.0/win32/vc6/unzip.dsw 2007-03-24 18:48:32.000000000 +0000 +++ unzip-6.0/win32/vc6/unzip.dsw 2010-05-14 07:26:14.000000000 +0000 @@ -3,18 +3,6 @@ ############################################################################### -Project: "bz2lib"=".\bz2lib.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - Project: "funzip"=".\funzip.dsp" - Package Owner=<4> Package=<5> @@ -39,21 +27,6 @@ ############################################################################### -Project: "unzipbz2"=".\unzipbz2.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name bz2lib - End Project Dependency -}}} - -############################################################################### - Project: "unzipsfx"=".\unzipsfx.dsp" - Package Owner=<4> Package=<5> diff -Nru unzip-6.0/win32/vc6/unzipsfx.dsp unzip-6.0/win32/vc6/unzipsfx.dsp --- unzip-6.0/win32/vc6/unzipsfx.dsp 2008-01-06 18:13:46.000000000 +0000 +++ unzip-6.0/win32/vc6/unzipsfx.dsp 2010-05-14 07:26:14.000000000 +0000 @@ -1,26 +1,26 @@ # Microsoft Developer Studio Project File - Name="unzipsfx" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** +# ** NICHT BEARBEITEN ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=unzipsfx - Win32 ASM Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run +!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE +!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl !MESSAGE !MESSAGE NMAKE /f "unzipsfx.mak". !MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben +!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: !MESSAGE !MESSAGE NMAKE /f "unzipsfx.mak" CFG="unzipsfx - Win32 ASM Debug" !MESSAGE -!MESSAGE Possible choices for configuration are: +!MESSAGE Für die Konfiguration stehen zur Auswahl: !MESSAGE -!MESSAGE "unzipsfx - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "unzipsfx - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE "unzipsfx - Win32 ASM Release" (based on "Win32 (x86) Console Application") -!MESSAGE "unzipsfx - Win32 ASM Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "unzipsfx - Win32 Release" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "unzipsfx - Win32 Debug" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "unzipsfx - Win32 ASM Release" (basierend auf "Win32 (x86) Console Application") +!MESSAGE "unzipsfx - Win32 ASM Debug" (basierend auf "Win32 (x86) Console Application") !MESSAGE # Begin Project @@ -147,6 +147,10 @@ # End Source File # Begin Source File +SOURCE=..\..\crctab.c +# End Source File +# Begin Source File + SOURCE=..\..\crypt.c # End Source File # Begin Source File @@ -183,10 +187,6 @@ # End Source File # Begin Source File -SOURCE=..\..\ubz2err.c -# End Source File -# Begin Source File - SOURCE=..\..\unzip.c # End Source File # Begin Source File @@ -203,10 +203,6 @@ # End Source File # Begin Source File -SOURCE=..\..\crc32.h -# End Source File -# Begin Source File - SOURCE=..\..\crypt.h # End Source File # Begin Source File diff -Nru unzip-6.0/win32/w32cfg.h unzip-6.0/win32/w32cfg.h --- unzip-6.0/win32/w32cfg.h 2009-04-16 18:35:02.000000000 +0000 +++ unzip-6.0/win32/w32cfg.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -27,12 +27,9 @@ #endif /* enable multibyte character set support by default */ -#if (!defined(_MBCS) && !defined(NO_MBCS)) +#ifndef _MBCS # define _MBCS #endif -#if (defined(_MBCS) && defined(NO_MBCS)) -# undef _MBCS -#endif #if (defined(__CYGWIN__) && defined(_MBCS)) # undef _MBCS /* Cygwin RTL lacks support for __mb_cur_max */ #endif @@ -101,12 +98,11 @@ #define GOT_UTIMBUF #ifdef _MBCS -# if (!defined(__EMX__) && !defined(__DJGPP__) && !defined(__CYGWIN__)) -# if (!defined(__MINGW32__) || defined(__MSVCRT__)) +# if (!defined(__EMX__) && !defined(__MINGW32__) && !defined(__CYGWIN__)) +# if (!defined(__DJGPP__)) # include # include /* for MSC (and compatible compilers), use routines supplied by RTL */ -# define CLEN(ptr) _mbclen((const uch *)(ptr)) # define PREINCSTR(ptr) (ptr = (char *)_mbsinc((const uch *)(ptr))) # define MBSCHR(str, c) (char *)_mbschr((const uch *)(str), (c)) # define MBSRCHR(str, c) (char *)_mbsrchr((const uch *)(str), (c)) @@ -213,38 +209,6 @@ #if (defined(NTSD_EAS) && !defined(RESTORE_ACL)) # define RESTORE_ACL /* "restore ACLs" only needed when NTSD_EAS active */ #endif -#if (!defined(NO_UNICODE_SUPPORT) && !defined(UNICODE_SUPPORT)) -# define UNICODE_SUPPORT /* enable UTF-8 filename support by default */ -#endif -#if (defined(UNICODE_SUPPORT) && !defined(UNICODE_WCHAR)) -# define UNICODE_WCHAR /* wchar_t is UTF-16 encoded on WIN32 */ -#endif -#ifdef UTF8_MAYBE_NATIVE -# undef UTF8_MAYBE_NATIVE /* UTF-8 cannot be system charset on WIN32 */ -#endif - -/* The following compiler systems provide or use a runtime library with a - * locale-aware isprint() implementation. For these systems, the "enhanced" - * unprintable charcode detection in fnfilter() gets enabled. - */ -#if (!defined(HAVE_WORKING_ISPRINT) && !defined(NO_WORKING_ISPRINT)) -# if defined(MSC) || defined(__BORLANDC__) -# define HAVE_WORKING_ISPRINT -# endif -# if defined(__MINGW32__) && defined(__MSVCRT__) -# define HAVE_WORKING_ISPRINT -# endif -#endif - -/* WIN32 runs solely on little-endian processors; enable support - * for the 32-bit optimized CRC-32 C code by default. - */ -#ifdef IZ_CRC_BE_OPTIMIZ -# undef IZ_CRC_BE_OPTIMIZ -#endif -#if !defined(IZ_CRC_LE_OPTIMIZ) && !defined(NO_CRC_OPTIMIZ) -# define IZ_CRC_LE_OPTIMIZ -#endif /* handlers for OEM <--> ANSI string conversions */ #ifdef __RSXNT__ @@ -390,6 +354,11 @@ modify [eax ecx edx] # endif /* !USE_ZLIB */ # endif /* __386__ */ + +# ifndef EPIPE +# define EPIPE 29 /* Watcom 11.0c(+) errno.h contains this define */ +# endif +# define PIPE_ERROR (errno == EPIPE) #endif /* __WATCOMC__ */ #define SCREENWIDTH 80 @@ -400,174 +369,4 @@ #define SCREENLWRAP 1 #define TABSIZE 8 - -/* 64-bit-Integers & Large File Support - * (pasted here from Zip 3b, osdep.h - Myles Bennett 7-jun-2004) - * (updated from Zip 3.0d - Ed Gordon 6-oct-2004) - * - * If this is set it is assumed that the port - * supports 64-bit file calls. The types are - * defined here. Any local implementations are - * in w32i64.c and the prototypes for the calls are - * in unzip.h. Note that a port must support - * these calls fully or should not set - * LARGE_FILE_SUPPORT. - */ - -/* Automatically set ZIP64_SUPPORT if supported */ - -#ifndef NO_ZIP64_SUPPORT -# ifndef ZIP64_SUPPORT -# if defined(_MSC_VER) || defined(__MINGW32__) || defined(__CYGWIN__) -# define ZIP64_SUPPORT -# elif defined(__LCC__) - /* LCC links against crtdll.dll -> no support of 64-bit offsets :( */ -# elif (defined(__WATCOMC__) && (__WATCOMC__ >= 1100)) -# define ZIP64_SUPPORT -# elif (defined(__BORLANDC__) && (__BORLANDC__ >= 0x0520)) - /* Borland C RTL lacks any support to get/set 64-bit file pointer :( */ -# endif -# endif -#endif - -#ifdef ZIP64_SUPPORT - /* base type for file offsets and file sizes */ -# if (defined(__GNUC__) || defined(ULONG_LONG_MAX)) - typedef long long zoff_t; -# else - /* all other compilers use this as intrinsic 64-bit type */ - typedef __int64 zoff_t; -# endif -# define ZOFF_T_DEFINED - - /* user-defined types and format strings for 64-bit numbers and - * file pointer functions (these depend on the rtl library and library - * headers used; they are NOT compiler-specific) - */ -# if defined(_MSC_VER) || defined(__MINGW32__) || defined(__LCC__) - /* MS C and VC, MinGW32, lcc32 */ - /* these systems use the Microsoft C RTL */ - - /* 64-bit stat struct */ - typedef struct _stati64 z_stat; -# define Z_STAT_DEFINED - -# ifdef __LCC__ - /* The LCC headers lack these declarations of MSC rtl functions in - sys/stat.h. */ - struct _stati64 { - unsigned int st_dev; - unsigned short st_ino; - unsigned short st_mode; - short st_nlink; - short st_uid; - short st_gid; - unsigned int st_rdev; - __int64 st_size; - time_t st_atime; - time_t st_mtime; - time_t st_ctime; - }; - int _stati64(const char *, struct _stati64 *); - int _fstati64(int, struct _stati64 *); - __int64 _lseeki64(int, __int64, int); -# endif /* __LCC__ */ - - /* printf format size prefix for zoff_t values */ -# define FZOFFT_FMT "I64" -# define FZOFFT_HEX_WID_VALUE "16" - -# define SHORTHDRSTATS "%9I64u %02u%c%02u%c%02u %02u:%02u %c" -# define SHORTFILETRAILER " -------- -------\n%9I64u %9lu file%s\n" - -# elif (defined(__BORLANDC__) && (__BORLANDC__ >= 0x0520)) - /* Borland C 5.2 or newer */ - - /* 64-bit stat struct */ - typedef struct stati64 z_stat; -# define Z_STAT_DEFINED - - /* Borland C does not provide a 64-bit-capable _lseeki64(), so we - need to use the stdio.h stream functions instead. */ -# ifndef USE_STRM_INPUT -# define USE_STRM_INPUT -# endif - - /* printf format size prefix for zoff_t values */ -# define FZOFFT_FMT "L" -# define FZOFFT_HEX_WID_VALUE "16" - -# define SHORTHDRSTATS "%9Lu %02u%c%02u%c%02u %02u:%02u %c" -# define SHORTFILETRAILER " -------- -------\n%9Lu %9lu file%s\n" - -# elif (defined(__WATCOMC__) && (__WATCOMC__ >= 1100)) - /* WATCOM C */ - - /* 64-bit stat struct */ - typedef struct _stati64 z_stat; -# define Z_STAT_DEFINED - - /* printf format size prefix for zoff_t values */ -# define FZOFFT_FMT "ll" -# define FZOFFT_HEX_WID_VALUE "16" - -# define SHORTHDRSTATS "%9llu %02u%c%02u%c%02u %02u:%02u %c" -# define SHORTFILETRAILER " -------- -------\n%9llu %9lu file%s\n" - -# elif (defined(__IBMC__) && (__IBMC__ >= 350)) - /* IBM C */ - - /* 64-bit stat struct */ - - /* printf format size prefix for zoff_t values */ -# define FZOFFT_FMT "I64" -# define FZOFFT_HEX_WID_VALUE "16" - -# define SHORTHDRSTATS "%9I64u %02u%c%02u%c%02u %02u:%02u %c" -# define SHORTFILETRAILER " -------- -------\n%9I64u %9lu file%s\n" - -# endif - -#endif - -/* If port has LARGE_FILE_SUPPORT then define here - to make automatic unless overridden */ - -#ifndef LARGE_FILE_SUPPORT -# ifndef NO_LARGE_FILE_SUPPORT -# if defined(_MSC_VER) || defined(__MINGW32__) -# define LARGE_FILE_SUPPORT -# elif defined(__LCC__) - /* LCC links against crtdll.dll -> no support of 64-bit offsets :( */ -# elif defined(__CYGWIN__) -# define LARGE_FILE_SUPPORT -# elif (defined(__WATCOMC__) && (__WATCOMC__ >= 1100)) -# define LARGE_FILE_SUPPORT -# elif (defined(__BORLANDC__) && (__BORLANDC__ >= 0x0520)) - /* Borland C RTL lacks any support to get/set 64-bit file pointer :( */ -# endif -# endif -#endif - - -#ifndef LARGE_FILE_SUPPORT - /* No Large File Support */ - - /* base type for file offsets and file sizes */ - typedef long zoff_t; -# define ZOFF_T_DEFINED - - /* stat struct */ - typedef struct stat z_stat; -# define Z_STAT_DEFINED - -# define FZOFFT_FMT "l" -# define FZOFFT_HEX_WID_VALUE "8" - - -# define SHORTHDRSTATS "%9lu %02u%c%02u%c%02u %02u:%02u %c" -# define SHORTFILETRAILER " -------- -------\n%9lu %9lu file%s\n" - -#endif /* LARGE_FILE_SUPPORT */ - #endif /* !__w32cfg_h */ diff -Nru unzip-6.0/win32/win32.c unzip-6.0/win32/win32.c --- unzip-6.0/win32/win32.c 2009-01-11 14:57:26.000000000 +0000 +++ unzip-6.0/win32/win32.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2008 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2007-Mar-04 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -157,7 +157,7 @@ static void map2fat (char *pathcomp, char **pEndFAT); -#if (defined(__MINGW32__) && !defined(USE_MINGW_GLOBBING)) +#ifdef __MINGW32__ int _CRT_glob = 0; /* suppress command line globbing by C RTL */ #endif @@ -197,7 +197,7 @@ #else /* use generic API call */ - GetModuleFileName(NULL, G.filename, FILNAMSIZ); + GetModuleFileName(NULL, G.filename, FILNAMSIZ-1); _ISO_INTERN(G.filename); /* translate to codepage of C rtl's stdio */ return G.filename; #endif @@ -221,7 +221,7 @@ { zDIR *d; /* malloc'd return value */ char *p; /* malloc'd temporary string */ - WIN32_FIND_DATAA fd; + WIN32_FIND_DATA fd; extent len = strlen(n); /* Start searching for files in directory n */ @@ -242,7 +242,7 @@ } strcpy(p+len, "/*"); - if (INVALID_HANDLE_VALUE == (d->d_hFindFile = FindFirstFileA(p, &fd))) { + if (INVALID_HANDLE_VALUE == (d->d_hFindFile = FindFirstFile(p, &fd))) { free((zvoid *)d); free((zvoid *)p); return NULL; @@ -271,9 +271,9 @@ d->d_first = 0; else { - WIN32_FIND_DATAA fd; + WIN32_FIND_DATA fd; - if ( !FindNextFileA(d->d_hFindFile, &fd) ) + if ( !FindNextFile(d->d_hFindFile, &fd) ) return NULL; ISO_TO_INTERN(fd.cFileName, d->d_name); @@ -631,9 +631,6 @@ SYSTEMTIME w32tm; FILETIME lft; - /* The milliseconds field gets always initialized to 0. */ - w32tm.wMilliseconds = 0; - #ifdef __BORLANDC__ /* Borland C++ 5.x crashes when trying to reference tm */ if (utc < UTIME_1980_JAN_01_00_00) utc = UTIME_1980_JAN_01_00_00; @@ -809,9 +806,8 @@ #endif if (!FileTimeToLocalFileTime(pft, &lft)) { - /* if pft cannot be converted to local time, set ut to current time */ - time(ut); - return FALSE; + /* if pft cannot be converted to local time, return current time */ + return time(NULL); } FTTrace((stdout, "VFatFT2utime, feed for mktime()", 1, &lft)); #ifndef HAVE_MKTIME @@ -996,7 +992,7 @@ /* Function SetFileSize() */ /**************************/ -int SetFileSize(FILE *file, zusz_t filesize) +int SetFileSize(FILE *file, ulg filesize) { #ifdef __RSXNT__ /* RSXNT environment lacks a translation function from C file pointer @@ -1007,9 +1003,6 @@ rommel@ars.de */ HANDLE os_fh; -#ifdef Z_UINT8_DEFINED - LARGE_INTEGER fsbuf; -#endif /* Win9x supports FAT file system, only; presetting file size does not help to prevent fragmentation. */ @@ -1023,13 +1016,7 @@ */ os_fh = (HANDLE)_get_osfhandle(fileno(file)); /* move file pointer behind the last byte of the expected file size */ -#ifdef Z_UINT8_DEFINED - fsbuf.QuadPart = filesize; - if ((SetFilePointer(os_fh, fsbuf.LowPart, &fsbuf.HighPart, FILE_BEGIN) - == 0xFFFFFFFF) && GetLastError() != NO_ERROR) -#else - if (SetFilePointer(os_fh, (ulg)filesize, 0, FILE_BEGIN) == 0xFFFFFFFF) -#endif + if (SetFilePointer(os_fh, filesize, 0, FILE_BEGIN) == 0xFFFFFFFF) return -1; /* extend/truncate file to the current position */ if (SetEndOfFile(os_fh) == 0) @@ -1052,7 +1039,7 @@ FILETIME Modft; /* File time type defined in NT, `last modified' time */ FILETIME Accft; /* NT file time type, `last access' time */ FILETIME Creft; /* NT file time type, `file creation' time */ - HANDLE hFile = INVALID_HANDLE_VALUE; /* File handle defined in NT */ + HANDLE hFile; /* File handle defined in NT */ int gotTime; #ifdef NTSD_EAS uch *ebSDptr; @@ -1067,15 +1054,6 @@ # define Ansi_Fname G.filename #endif -#ifndef __RSXNT__ - if (IsWinNT()) { - /* Truncate the file to the current position. - * This is needed to remove excess allocation in case the - * extraction has failed or stopped prematurely. */ - SetEndOfFile((HANDLE)_get_osfhandle(fileno(G.outfile))); - } -#endif - /* Close the file and then re-open it using the Win32 * CreateFile call, so that the file can be created * with GENERIC_WRITE access, otherwise the SetFileTime @@ -1086,18 +1064,13 @@ if (uO.cflag) return; - /* skip restoring time stamps on user's request */ - if (uO.D_flag <= 1) { - gotTime = getNTfiletime(__G__ &Modft, &Accft, &Creft); - - /* open a handle to the file before processing extra fields; - we do this in case new security on file prevents us from updating - time stamps */ - hFile = CreateFileA(Ansi_Fname, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, - OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); - } else { - gotTime = 0; - } + gotTime = getNTfiletime(__G__ &Modft, &Accft, &Creft); + + /* open a handle to the file before processing extra fields; + we do this in case new security on file prevents us from updating + time stamps */ + hFile = CreateFile(Ansi_Fname, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); /* sfield@microsoft.com: set attributes before time in case we decide to support other filetime members later. This also allows us to apply @@ -1107,8 +1080,8 @@ FILE_ATTRIBUTE_ARCHIVE appears in the attributes. This works well as an optimization because FILE_ATTRIBUTE_ARCHIVE gets applied to the file anyway, when it's created new. */ - if ((G.pInfo->file_attr & 0x7F) & ~FILE_ATTRIBUTE_ARCHIVE) { - if (!SetFileAttributesA(Ansi_Fname, G.pInfo->file_attr & 0x7F)) + if((G.pInfo->file_attr & 0x7F) & ~FILE_ATTRIBUTE_ARCHIVE) { + if (!SetFileAttributes(Ansi_Fname, G.pInfo->file_attr & 0x7F)) Info(slide, 1, ((char *)slide, "\nwarning (%d): could not set file attributes\n", (int)GetLastError())); @@ -1133,24 +1106,21 @@ } #endif /* NTSD_EAS */ - /* skip restoring time stamps on user's request */ - if (uO.D_flag <= 1) { - if ( hFile == INVALID_HANDLE_VALUE ) - Info(slide, 1, ((char *)slide, - "\nCreateFile() error %d when trying set file time\n", - (int)GetLastError())); - else { - if (gotTime) { - FILETIME *pModft = (gotTime & EB_UT_FL_MTIME) ? &Modft : NULL; - FILETIME *pAccft = (gotTime & EB_UT_FL_ATIME) ? &Accft : NULL; - FILETIME *pCreft = (gotTime & EB_UT_FL_CTIME) ? &Creft : NULL; - - if (!SetFileTime(hFile, pCreft, pAccft, pModft)) - Info(slide, 0, ((char *)slide, - "\nSetFileTime failed: %d\n", (int)GetLastError())); - } - CloseHandle(hFile); + if ( hFile == INVALID_HANDLE_VALUE ) + Info(slide, 1, ((char *)slide, + "\nCreateFile() error %d when trying set file time\n", + (int)GetLastError())); + else { + if (gotTime) { + FILETIME *pModft = (gotTime & EB_UT_FL_MTIME) ? &Modft : NULL; + FILETIME *pAccft = (gotTime & EB_UT_FL_ATIME) ? &Accft : NULL; + FILETIME *pCreft = (gotTime & EB_UT_FL_CTIME) ? &Creft : NULL; + + if (!SetFileTime(hFile, pCreft, pAccft, pModft)) + Info(slide, 0, ((char *)slide, "\nSetFileTime failed: %d\n", + (int)GetLastError())); } + CloseHandle(hFile); } return; @@ -1216,10 +1186,8 @@ d_entry->perms = G.pInfo->file_attr; - d_entry->gotTime = (uO.D_flag <= 0 - ? getNTfiletime(__G__ &(d_entry->Modft), - &(d_entry->Accft), &(d_entry->Creft)) - : 0); + d_entry->gotTime = getNTfiletime(__G__ &(d_entry->Modft), + &(d_entry->Accft), &(d_entry->Creft)); return PK_OK; } /* end function defer_dir_attribs() */ @@ -1229,7 +1197,7 @@ direntry *d; { int errval; - HANDLE hFile = INVALID_HANDLE_VALUE; /* File handle defined in NT */ + HANDLE hFile; /* File handle defined in NT */ #ifdef __RSXNT__ char *ansi_name; #endif @@ -1247,21 +1215,18 @@ # define Ansi_Dirname d->fn #endif - /* Skip restoring directory time stamps on user' request. */ - if (uO.D_flag <= 0) { - /* Open a handle to the directory before processing extra fields; - we do this in case new security on file prevents us from updating - time stamps. - Although the WIN32 documentation recommends to use GENERIC_WRITE - access flag to create the handle for SetFileTime(), this is too - demanding for directories with the "read-only" attribute bit set. - So we use the more specific flag FILE_WRITE_ATTRIBUTES here to - request the minimum required access rights. (This problem is a - Windows bug that has been silently fixed in Windows XP SP2.) */ - hFile = CreateFileA(Ansi_Dirname, FILE_WRITE_ATTRIBUTES, - FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, - OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); - } + /* Open a handle to the directory before processing extra fields; + we do this in case new security on file prevents us from updating + time stamps. + Although the WIN32 documentation recommends to use GENERIC_WRITE + access flag to create the handle for SetFileTime(), this is too + demanding for directories with the "read-only" attribute bit set. + So we use the more specific flag FILE_WRITE_ATTRIBUTES here to + request the minimum required access rights. (This problem is a + Windows bug that has been silently fixed in Windows XP SP2.) */ + hFile = CreateFile(Ansi_Dirname, FILE_WRITE_ATTRIBUTES, + FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, + OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); #ifdef NTSD_EAS if (NtAtt(d)->SDlen > 0) { @@ -1289,33 +1254,30 @@ } #endif /* NTSD_EAS */ - /* Skip restoring directory time stamps on user' request. */ - if (uO.D_flag <= 0) { - if (hFile == INVALID_HANDLE_VALUE) { - Info(slide, 1, ((char *)slide, - "warning: CreateFile() error %d (set file times for %s)\n", - (int)GetLastError(), FnFilter1(d->fn))); - if (!errval) - errval = PK_WARN; - } else { - if (NtAtt(d)->gotTime) { - FILETIME *pModft = (NtAtt(d)->gotTime & EB_UT_FL_MTIME) - ? &(NtAtt(d)->Modft) : NULL; - FILETIME *pAccft = (NtAtt(d)->gotTime & EB_UT_FL_ATIME) - ? &(NtAtt(d)->Accft) : NULL; - FILETIME *pCreft = (NtAtt(d)->gotTime & EB_UT_FL_CTIME) - ? &(NtAtt(d)->Creft) : NULL; - - if (!SetFileTime(hFile, pCreft, pAccft, pModft)) { - Info(slide, 0, ((char *)slide, - "warning: SetFileTime() for %s error %d\n", - FnFilter1(d->fn), (int)GetLastError())); - if (!errval) - errval = PK_WARN; - } + if (hFile == INVALID_HANDLE_VALUE) { + Info(slide, 1, ((char *)slide, + "warning: CreateFile() error %d (set file times for %s)\n", + (int)GetLastError(), FnFilter1(d->fn))); + if (!errval) + errval = PK_WARN; + } else { + if (NtAtt(d)->gotTime) { + FILETIME *pModft = (NtAtt(d)->gotTime & EB_UT_FL_MTIME) + ? &(NtAtt(d)->Modft) : NULL; + FILETIME *pAccft = (NtAtt(d)->gotTime & EB_UT_FL_ATIME) + ? &(NtAtt(d)->Accft) : NULL; + FILETIME *pCreft = (NtAtt(d)->gotTime & EB_UT_FL_CTIME) + ? &(NtAtt(d)->Creft) : NULL; + + if (!SetFileTime(hFile, pCreft, pAccft, pModft)) { + Info(slide, 0, ((char *)slide, + "warning: SetFileTime() for %s error %d\n", + FnFilter1(d->fn), (int)GetLastError())); + if (!errval) + errval = PK_WARN; } - CloseHandle(hFile); } + CloseHandle(hFile); } return errval; @@ -1348,7 +1310,7 @@ #endif /* open a handle to the file to prepare setting the mod-time stamp */ - hFile = CreateFileA(Ansi_Fname, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, + hFile = CreateFile(Ansi_Fname, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if ( hFile == INVALID_HANDLE_VALUE ) { errstat = -1; @@ -1385,7 +1347,7 @@ rootPathName[2] = '/'; rootPathName[3] = '\0'; - return (GetDriveTypeA(rootPathName) == DRIVE_REMOVABLE); + return (GetDriveType(rootPathName) == DRIVE_REMOVABLE); } /* end function isfloppy() */ @@ -1418,7 +1380,7 @@ name = ansi_name; #endif - if ((!strncmp(name, "//", 2) || !strncmp(name, "\\\\", 2)) && + if ((!strncmp(name, "//", 2) || !strncmp(name,"\\\\", 2)) && (name[2] != '\0' && name[2] != '/' && name[2] != '\\')) { /* GetFullPathname() and GetVolumeInformation() do not work * on UNC names. For now, we return "error". @@ -1431,7 +1393,7 @@ tmp0 = (char *)name; else { - if (!GetFullPathNameA(name, MAX_PATH, tmp1, &tmp0)) + if (!GetFullPathName(name, MAX_PATH, tmp1, &tmp0)) return FALSE; tmp0 = &tmp1[0]; } @@ -1441,10 +1403,10 @@ G.lastRootPath[2] = '/'; /* e.g. "A:/" */ G.lastRootPath[3] = '\0'; - if (!GetVolumeInformationA((LPCSTR)G.lastRootPath, - (LPSTR)tmp1, (DWORD)MAX_PATH, + if (!GetVolumeInformation((LPCTSTR)G.lastRootPath, + (LPTSTR)tmp1, (DWORD)MAX_PATH, &volSerNo, &maxCompLen, &fileSysFlags, - (LPSTR)tmp2, (DWORD)MAX_PATH)) { + (LPTSTR)tmp2, (DWORD)MAX_PATH)) { G.lastRootPath[0] = '\0'; return FALSE; } @@ -1832,7 +1794,7 @@ attribute need not be masked, since it does not prevent modifications in the new directory. */ if(G.pInfo->file_attr & (0x7F & ~FILE_ATTRIBUTE_DIRECTORY)) { - if (!SetFileAttributesA(Ansi_Fname, G.pInfo->file_attr & 0x7F)) + if (!SetFileAttributes(Ansi_Fname, G.pInfo->file_attr & 0x7F)) Info(slide, 1, ((char *)slide, "\nwarning (%d): could not set file attributes for %s\n", (int)GetLastError(), FnFilter1(G.filename))); @@ -1845,7 +1807,7 @@ /* set file attributes: */ if(G.pInfo->file_attr & (0x7F & ~FILE_ATTRIBUTE_DIRECTORY)) { - if (!SetFileAttributesA(Ansi_Fname, G.pInfo->file_attr & 0x7F)) + if (!SetFileAttributes(Ansi_Fname, G.pInfo->file_attr & 0x7F)) Info(slide, 1, ((char *)slide, "\nwarning (%d): could not set file attributes for %s\n", (int)GetLastError(), FnFilter1(G.filename))); @@ -1913,7 +1875,7 @@ if (QCOND2) Info(slide, 0, ((char *)slide, "labelling %s %-22s\n", drive, FnFilter1(G.filename))); - if (!SetVolumeLabelA(drive, Ansi_Fname)) { + if (!SetVolumeLabel(drive, Ansi_Fname)) { Info(slide, 1, ((char *)slide, "mapname: error setting volume label\n")); return (error & ~MPN_MASK) | MPN_ERR_SKIP; @@ -1957,7 +1919,7 @@ #endif #ifdef DEBUG - if (zstat(pathcomp, &G.statbuf) == 0) { + if (stat(pathcomp, &G.statbuf) == 0) { Trace((stderr, "maskDOSdevice() stat(\"%s\", buf) st_mode result: %X, %o\n", FnFilter1(pathcomp), G.statbuf.st_mode, G.statbuf.st_mode)); @@ -1966,7 +1928,7 @@ FnFilter1(pathcomp))); } #endif - if (zstat(pathcomp, &G.statbuf) == 0 && S_ISCHR(G.statbuf.st_mode)) { + if (stat(pathcomp, &G.statbuf) == 0 && S_ISCHR(G.statbuf.st_mode)) { extent i; /* pathcomp contains a name of a DOS character device (builtin or @@ -2171,11 +2133,8 @@ if (MKDIR(G.buildpathFAT, 0777) == -1) { /* create the directory */ Info(slide, 1, ((char *)slide, "checkdir error: cannot create %s\n\ - %s\n\ unable to process %s.\n", - FnFilter2(G.buildpathFAT), - strerror(errno), - FnFilter1(G.filename))); + FnFilter2(G.buildpathFAT), FnFilter1(G.filename))); free(G.buildpathHPFS); free(G.buildpathFAT); /* path didn't exist, tried to create, failed */ @@ -2204,11 +2163,8 @@ if (MKDIR(G.buildpathFAT, 0777) == -1) { /* create the directory */ Info(slide, 1, ((char *)slide, "checkdir error: cannot create %s\n\ - %s\n\ unable to process %s.\n", - FnFilter2(G.buildpathFAT), - strerror(errno), - FnFilter1(G.filename))); + FnFilter2(G.buildpathFAT), FnFilter1(G.filename))); free(G.buildpathHPFS); free(G.buildpathFAT); /* path didn't exist, tried to create, failed */ @@ -2217,8 +2173,8 @@ G.created_dir = TRUE; } else if (!S_ISDIR(G.statbuf.st_mode)) { Info(slide, 1, ((char *)slide, - "checkdir error: %s exists but is not directory\n\ - unable to process %s.\n", + "checkdir error: %s exists but is not directory\n \ + unable to process %s.\n", FnFilter2(G.buildpathFAT), FnFilter1(G.filename))); free(G.buildpathHPFS); free(G.buildpathFAT); @@ -2228,7 +2184,7 @@ if (too_long) { Info(slide, 1, ((char *)slide, "checkdir error: path too long: %s\n", - FnFilter1(G.buildpathHPFS))); + FnFilter1(G.buildpathHPFS))); free(G.buildpathHPFS); free(G.buildpathFAT); /* no room for filenames: fatal */ @@ -2271,47 +2227,24 @@ int error = MPN_OK; Trace((stderr, "appending filename [%s]\n", FnFilter1(pathcomp))); - /* The buildpathHPFS buffer has been allocated large enough to - * hold the complete combined name, so there is no need to check - * for OS filename size limit overflow within the copy loop. - */ while ((*G.endHPFS = *p++) != '\0') { /* copy to HPFS filename */ ++G.endHPFS; - } - /* Now, check for OS filename size overflow. When detected, the - * mapped HPFS name is truncated and a warning message is shown. - */ - if ((G.endHPFS-G.buildpathHPFS) >= FILNAMSIZ) { - G.buildpathHPFS[FILNAMSIZ-1] = '\0'; - Info(slide, 1, ((char *)slide, - "checkdir warning: path too long; truncating\n \ - %s\n -> %s\n", - FnFilter1(G.filename), FnFilter2(G.buildpathHPFS))); - error = MPN_INF_TRUNC; /* filename truncated */ + if ((G.endHPFS-G.buildpathHPFS) >= FILNAMSIZ) { + *--G.endHPFS = '\0'; + Info(slide, 1, ((char *)slide, + "checkdir warning: path too long; truncating\n \ + %s\n -> %s\n", + FnFilter1(G.filename), FnFilter2(G.buildpathHPFS))); + error = MPN_INF_TRUNC; /* filename truncated */ + } } - /* The buildpathFAT buffer has the same allocated size as the - * buildpathHPFS buffer, so there is no need for an overflow check - * within the following copy loop, either. - */ - if (G.pInfo->vollabel || !IsVolumeOldFAT(__G__ G.buildpathHPFS)) { - /* copy to FAT filename, too */ + if ( G.pInfo->vollabel || !IsVolumeOldFAT(__G__ G.buildpathHPFS)) { p = pathcomp; - while ((*G.endFAT = *p++) != '\0') + while ((*G.endFAT = *p++) != '\0') /* copy to FAT filename, too */ ++G.endFAT; } else - /* map into FAT fn, update endFAT */ - map2fat(pathcomp, &G.endFAT); - - /* Check that the FAT path does not exceed the FILNAMSIZ limit, and - * truncate when neccessary. - * Note that truncation can only happen when the HPFS path (which is - * never shorter than the FAT path) has been already truncated. - * So, emission of the warning message and setting the error code - * has already happened. - */ - if ((G.endFAT-G.buildpathFAT) >= FILNAMSIZ) - G.buildpathFAT[FILNAMSIZ-1] = '\0'; + map2fat(pathcomp, &G.endFAT); /* map into FAT fn, update endFAT */ Trace((stderr, "buildpathHPFS: %s\nbuildpathFAT: %s\n", FnFilter1(G.buildpathHPFS), FnFilter2(G.buildpathFAT))); @@ -2354,7 +2287,7 @@ *G.buildpathHPFS = (char)ToLower(*G.rootpath); else { char tmpN[MAX_PATH], *tmpP; - if (GetFullPathNameA(".", MAX_PATH, tmpN, &tmpP) > MAX_PATH) + if (GetFullPathName(".", MAX_PATH, tmpN, &tmpP) > MAX_PATH) { /* by definition of MAX_PATH we should never get here */ Info(slide, 1, ((char *)slide, "checkdir warning: current dir path too long\n")); @@ -2494,9 +2427,9 @@ int dateformat() { - char df[2]; /* LOCALE_IDATE has a maximum value of 2 */ + TCHAR df[2]; /* LOCALE_IDATE has a maximum value of 2 */ - if (GetLocaleInfoA(LOCALE_USER_DEFAULT, LOCALE_IDATE, df, 2) != 0) { + if (GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_IDATE, df, 2) != 0) { switch (df[0]) { case '0': @@ -2517,9 +2450,9 @@ char dateseparator() { - char df[2]; /* use only if it is one character */ + TCHAR df[2]; /* use only if it is one character */ - if ((GetLocaleInfoA(LOCALE_USER_DEFAULT, LOCALE_SDATE, df, 2) != 0) && + if ((GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SDATE, df, 2) != 0) && (df[0] != '\0')) return df[0]; else @@ -2689,7 +2622,7 @@ * are not stable but vary according to the seasonal change of "daylight * saving time in effect / not in effect". * - * Other C runtime libs (CygWin), or the crtdll.dll supplied with Win9x/NT + * Other C runtime libs (CygWin, or the crtdll.dll supplied with Win9x/NT * return the unix-time equivalent of the UTC FILETIME values as got back * from the Win32 API call. This time, return values from NTFS are correct * whereas utimes from files on (V)FAT volumes vary according to the DST @@ -2712,9 +2645,9 @@ * detects the case and fills in reasonable values. Otherwise we get * * effects like failure to extract to a root dir because it's not found. */ -int zstat_win32(__W32STAT_GLOBALS__ const char *path, z_stat *buf) +int zstat_win32(__W32STAT_GLOBALS__ const char *path, struct stat *buf) { - if (!zstat(path, buf)) + if (!stat(path, buf)) { /* stat was successful, now redo the time-stamp fetches */ #ifndef NO_W32TIMES_IZFIX @@ -2732,9 +2665,9 @@ #endif TTrace((stdout, "stat(%s) finds modtime %08lx\n", path, buf->st_mtime)); - h = CreateFileA(Ansi_Path, GENERIC_READ, - FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, - OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + h = CreateFile(Ansi_Path, GENERIC_READ, + FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (h != INVALID_HANDLE_VALUE) { BOOL ftOK = GetFileTime(h, &Creft, &Accft, &Modft); CloseHandle(h); @@ -2797,11 +2730,11 @@ # define Ansi_Path path #endif - flags = GetFileAttributesA(Ansi_Path); + flags = GetFileAttributes(Ansi_Path); if (flags != 0xFFFFFFFF && flags & FILE_ATTRIBUTE_DIRECTORY) { Trace((stderr, "\nstat(\"%s\",...) failed on existing directory\n", FnFilter1(path))); - memset(buf, 0, sizeof(z_stat)); + memset(buf, 0, sizeof(struct stat)); buf->st_atime = buf->st_ctime = buf->st_mtime = dos_to_unix_time(DOSTIME_MINIMUM); /* 1-1-80 */ buf->st_mode = S_IFDIR | S_IREAD | @@ -2917,8 +2850,8 @@ # ifdef PASSWD_FROM_STDIN stin = GetStdHandle(STD_INPUT_HANDLE); # else - stin = CreateFileA("CONIN$", GENERIC_READ | GENERIC_WRITE, - FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); + stin = CreateFile("CONIN$", GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); if (stin == INVALID_HANDLE_VALUE) return -1; # endif @@ -2941,199 +2874,3 @@ return ret; } #endif /* !WINDLL */ - - - -#if (defined(UNICODE_SUPPORT) && !defined(FUNZIP)) -/* convert wide character string to multi-byte character string */ -char *wide_to_local_string(wide_string, escape_all) - ZCONST zwchar *wide_string; - int escape_all; -{ - int i; - wchar_t wc; - int bytes_char; - int default_used; - int wsize = 0; - int max_bytes = 9; - char buf[9]; - char *buffer = NULL; - char *local_string = NULL; - - for (wsize = 0; wide_string[wsize]; wsize++) ; - - if (max_bytes < MB_CUR_MAX) - max_bytes = MB_CUR_MAX; - - if ((buffer = (char *)malloc(wsize * max_bytes + 1)) == NULL) { - return NULL; - } - - /* convert it */ - buffer[0] = '\0'; - for (i = 0; i < wsize; i++) { - if (sizeof(wchar_t) < 4 && wide_string[i] > 0xFFFF) { - /* wchar_t probably 2 bytes */ - /* could do surrogates if state_dependent and wctomb can do */ - wc = zwchar_to_wchar_t_default_char; - } else { - wc = (wchar_t)wide_string[i]; - } - /* Unter some vendor's C-RTL, the Wide-to-MultiByte conversion functions - * (like wctomb() et. al.) do not use the same codepage as the other - * string arguments I/O functions (fopen, mkdir, rmdir etc.). - * Therefore, we have to fall back to the underlying Win32-API call to - * achieve a consistent behaviour for all supported compiler environments. - * Failing RTLs are for example: - * Borland (locale uses OEM-CP as default, but I/O functions expect ANSI - * names) - * Watcom (only "C" locale, wctomb() always uses OEM CP) - * (in other words: all supported environments except the Microsoft RTLs) - */ - bytes_char = WideCharToMultiByte( - CP_ACP, WC_COMPOSITECHECK, - &wc, 1, - (LPSTR)buf, sizeof(buf), - NULL, &default_used); - if (default_used) - bytes_char = -1; - if (escape_all) { - if (bytes_char == 1 && (uch)buf[0] <= 0x7f) { - /* ASCII */ - strncat(buffer, buf, 1); - } else { - /* use escape for wide character */ - char *escape_string = wide_to_escape_string(wide_string[i]); - strcat(buffer, escape_string); - free(escape_string); - } - } else if (bytes_char > 0) { - /* multi-byte char */ - strncat(buffer, buf, bytes_char); - } else { - /* no MB for this wide */ - /* use escape for wide character */ - char *escape_string = wide_to_escape_string(wide_string[i]); - strcat(buffer, escape_string); - free(escape_string); - } - } - if ((local_string = (char *)realloc(buffer, strlen(buffer) + 1)) == NULL) { - free(buffer); - return NULL; - } - - return local_string; -} - - -#if 0 -wchar_t *utf8_to_wchar_string(utf8_string) - char *utf8_string; /* path to get utf-8 name for */ -{ - wchar_t *qw; - int ulen; - int ulenw; - - if (utf8_string == NULL) - return NULL; - - /* get length */ - ulenw = MultiByteToWideChar( - CP_UTF8, /* UTF-8 code page */ - 0, /* flags for character-type options */ - utf8_string, /* string to convert */ - -1, /* string length (-1 = NULL terminated) */ - NULL, /* buffer */ - 0 ); /* buffer length (0 = return length) */ - if (ulenw == 0) { - /* failed */ - return NULL; - } - ulenw++; - /* get length in bytes */ - ulen = sizeof(wchar_t) * (ulenw + 1); - if ((qw = (wchar_t *)malloc(ulen + 1)) == NULL) { - return NULL; - } - /* convert multibyte to wide */ - ulen = MultiByteToWideChar( - CP_UTF8, /* UTF-8 code page */ - 0, /* flags for character-type options */ - utf8_string, /* string to convert */ - -1, /* string length (-1 = NULL terminated) */ - qw, /* buffer */ - ulenw); /* buffer length (0 = return length) */ - if (ulen == 0) { - /* failed */ - free(qw); - return NULL; - } - - return qw; -} - -wchar_t *local_to_wchar_string(local_string) - char *local_string; /* path of local name */ -{ - wchar_t *qw; - int ulen; - int ulenw; - - if (local_string == NULL) - return NULL; - - /* get length */ - ulenw = MultiByteToWideChar( - CP_ACP, /* ANSI code page */ - 0, /* flags for character-type options */ - local_string, /* string to convert */ - -1, /* string length (-1 = NULL terminated) */ - NULL, /* buffer */ - 0 ); /* buffer length (0 = return length) */ - if (ulenw == 0) { - /* failed */ - return NULL; - } - ulenw++; - /* get length in bytes */ - ulen = sizeof(wchar_t) * (ulenw + 1); - if ((qw = (wchar_t *)malloc(ulen + 1)) == NULL) { - return NULL; - } - /* convert multibyte to wide */ - ulen = MultiByteToWideChar( - CP_ACP, /* ANSI code page */ - 0, /* flags for character-type options */ - local_string, /* string to convert */ - -1, /* string length (-1 = NULL terminated) */ - qw, /* buffer */ - ulenw); /* buffer length (0 = return length) */ - if (ulen == 0) { - /* failed */ - free(qw); - return NULL; - } - - return qw; -} -#endif /* 0 */ -#endif /* UNICODE_SUPPORT && !FUNZIP */ - - - -/* --------------------------------------------------- */ -/* Large File Support - * - * Initial functions by E. Gordon and R. Nausedat - * 9/10/2003 - * Lifted from Zip 3b, win32.c and place here by Myles Bennett - * 7/6/2004 - * - * These implement 64-bit file support for Windows. The - * defines and headers are in win32/w32cfg.h. - * - * Moved to win32i64.c by Mike White to avoid conflicts in - * same name functions in WiZ using UnZip and Zip libraries. - * 9/25/2003 - */ diff -Nru unzip-6.0/wince/intrface.cpp unzip-6.0/wince/intrface.cpp --- unzip-6.0/wince/intrface.cpp 2009-01-29 21:16:26.000000000 +0000 +++ unzip-6.0/wince/intrface.cpp 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -77,7 +77,6 @@ // iswild // conv_to_rule // GetPlatformLocalTimezone -// wide_to_local_string // // // Date Name History @@ -88,10 +87,6 @@ // 12/01/02 Chr. Spieler Updated interface for UnZip 5.50 // 02/23/05 Chr. Spieler Modified and optimized utimeToFileTime() to support // the NO_W32TIMES_IZFIX compilation option -// 11/01/09 Chr. Spieler Added wide_to_local_string() conversion function -// from win32.c, which is currently needed for the -// new UTF-8 names support (until we manage to port -// the complete UnZip code to native wide-char support). // //***************************************************************************** @@ -200,18 +195,12 @@ int UZ_EXP UzpInput2(zvoid *pG, uch *buffer, int *size, int flag); int UZ_EXP CheckForAbort2(zvoid *pG, int fnflag, ZCONST char *zfn, ZCONST char *efn, ZCONST zvoid *details); -int WINAPI UzpReplace(LPSTR szFile, unsigned nbufsiz); +int WINAPI UzpReplace(LPSTR szFile); void WINAPI UzpSound(void); -#ifdef Z_UINT8_DEFINED -void WINAPI SendAppMsg(z_uint8 uzSize, z_uint8 uzCompressedSize, -#else -void WINAPI SendAppMsg(ulg uzSize, ulg uzCompressedSize, -#endif - unsigned ratio, +void WINAPI SendAppMsg(ulg dwSize, ulg dwCompressedSize, unsigned ratio, unsigned month, unsigned day, unsigned year, unsigned hour, unsigned minute, char uppercase, - LPCSTR szPath, LPCSTR szMethod, ulg dwCRC, - char chCrypt); + LPSTR szPath, LPSTR szMethod, ulg dwCRC, char chCrypt); } // extern "C" @@ -459,7 +448,6 @@ pG->lpUserFunctions->replace = UzpReplace; pG->lpUserFunctions->sound = UzpSound; pG->lpUserFunctions->SendApplicationMessage = SendAppMsg; - pG->lpUserFunctions->SendApplicationMessage_i32 = NULL; #if CRYPT pG->decr_passwd = UzpPassword; @@ -565,7 +553,7 @@ } // Invalidate our file offset to show that we are starting a new operation. - g_pExtractInfo->uzFileOffset = ~(zusz_t)0; + g_pExtractInfo->dwFileOffset = 0xFFFFFFFF; // We wrap some exception handling around the entire Info-ZIP engine to be // safe. Since we are running on a device with tight memory configurations, @@ -619,11 +607,11 @@ static void SetCurrentFile(__GPRO) { // Reset all our counters as we about to process a new file. - g_pExtractInfo->uzFileOffset = (zusz_t)G.pInfo->offset; + g_pExtractInfo->dwFileOffset = (DWORD)G.pInfo->offset; g_pExtractInfo->dwFile++; - g_pExtractInfo->uzBytesWrittenThisFile = 0; - g_pExtractInfo->uzBytesWrittenPreviousFiles += g_pExtractInfo->uzBytesTotalThisFile; - g_pExtractInfo->uzBytesTotalThisFile = G.lrec.ucsize; + g_pExtractInfo->dwBytesWrittenThisFile = 0; + g_pExtractInfo->dwBytesWrittenPreviousFiles += g_pExtractInfo->dwBytesTotalThisFile; + g_pExtractInfo->dwBytesTotalThisFile = G.lrec.ucsize; g_pExtractInfo->szFile = G.filename; g_pExtractInfo->fNewLineOfText = TRUE; @@ -708,7 +696,7 @@ // When extracting, mapname() will get called for every file which in turn // will call SetCurrentFile(). For testing though, mapname() never gets // called so we need to be on the lookout for a new file. - if (g_pExtractInfo->uzFileOffset != (zusz_t)((Uz_Globs*)pG)->pInfo->offset) { + if (g_pExtractInfo->dwFileOffset != (DWORD)((Uz_Globs*)pG)->pInfo->offset) { SetCurrentFile((Uz_Globs*)pG); } @@ -806,7 +794,7 @@ return SendMessage(g_hWndMain, WM_PRIVATE, MSG_PROMPT_FOR_PASSWORD, (LPARAM)&di); #else - return IZ_PW_CANCELALL; + return -2; #endif } @@ -850,12 +838,9 @@ } //****************************************************************************** -int WINAPI UzpReplace(LPSTR szFile, unsigned nbufsiz) { +int WINAPI UzpReplace(LPSTR szFile) { // Pass control to our GUI thread which will prompt the user to overwrite. - // The nbufsiz parameter is not needed here, because this program does not - // (yet?) contain support for renaming the extraction target. - return SendMessage(g_hWndMain, WM_PRIVATE, MSG_PROMPT_TO_REPLACE, - (LPARAM)szFile); + return SendMessage(g_hWndMain, WM_PRIVATE, MSG_PROMPT_TO_REPLACE, (LPARAM)szFile); } //****************************************************************************** @@ -865,16 +850,10 @@ //****************************************************************************** // Called from LIST.C -#ifdef Z_UINT8_DEFINED -void WINAPI SendAppMsg(z_uint8 uzSize, z_uint8 uzCompressedSize, -#else -void WINAPI SendAppMsg(ulg uzSize, ulg uzCompressedSize, -#endif - unsigned ratio, +void WINAPI SendAppMsg(ulg dwSize, ulg dwCompressedSize, unsigned ratio, unsigned month, unsigned day, unsigned year, unsigned hour, unsigned minute, char uppercase, - LPCSTR szPath, LPCSTR szMethod, ulg dwCRC, - char chCrypt) + LPSTR szPath, LPSTR szMethod, ulg dwCRC, char chCrypt) { // If we are out of memory, then just bail since we will only make things worse. if (g_fOutOfMemory) { @@ -886,8 +865,7 @@ // Allocate a FILE_NODE large enough to hold this file. int length = strlen(szPath) + strlen(szMethod); - g_pFileLast = (FILE_NODE*)new BYTE[sizeof(FILE_NODE) + - (sizeof(CHAR) * length)]; + g_pFileLast = (FILE_NODE*)new BYTE[sizeof(FILE_NODE) + (sizeof(CHAR) * length)]; // Bail out if we failed to allocate the node. if (!g_pFileLast) { @@ -901,8 +879,8 @@ } // Fill in our node. - g_pFileLast->uzSize = (zusz_t)uzSize; - g_pFileLast->uzCompressedSize = (zusz_t)uzCompressedSize; + g_pFileLast->dwSize = dwSize; + g_pFileLast->dwCompressedSize = dwCompressedSize; g_pFileLast->dwCRC = dwCRC; g_pFileLast->szComment = NULL; g_pFileLast->szType = NULL; @@ -957,7 +935,7 @@ #endif // Update our bytes written count. - g_pExtractInfo->uzBytesWrittenThisFile += dwBytesWritten; + g_pExtractInfo->dwBytesWrittenThisFile += dwBytesWritten; // Pass control to our GUI thread to do a partial update our progress dialog. SendMessage(g_hWndMain, WM_PRIVATE, MSG_UPDATE_PROGRESS_PARTIAL, @@ -988,13 +966,12 @@ // Check to see if we are expecting a compressed file comment string. if (g_pFileLast) { - char *p1, *p2; // Calcalute the size of the buffer we will need to store this comment. // We are going to convert all ASC values 0 - 31 (except tab, new line, // and CR) to ^char. int size = 1; - for (p1 = buffer; *p1; INCSTR(p1)) { + for (char *p2, *p1 = buffer; *p1; INCSTR(p1)) { size += ((*p1 >= 32) || (*p1 == '\t') || (*p1 == '\r') || (*p1 == '\n')) ? CLEN(p1) : 2; } @@ -1266,7 +1243,7 @@ } //****************************************************************************** -int SetFileSize(FILE *file, zusz_t filesize) +int SetFileSize(FILE *file, ulg filesize) { #if (defined(_WIN32_WCE) || defined(__RSXNT__)) // For native Windows CE, it is not known whether the API supports @@ -1280,9 +1257,6 @@ rommel@ars.de */ HANDLE os_fh; -#ifdef Z_UINT8_DEFINED - LARGE_INTEGER fsbuf; -#endif /* Win9x supports FAT file system, only; presetting file size does not help to prevent fragmentation. */ @@ -1296,13 +1270,7 @@ */ os_fh = (HANDLE)_get_osfhandle(fileno(file)); /* move file pointer behind the last byte of the expected file size */ -#ifdef Z_UINT8_DEFINED - fsbuf.QuadPart = filesize; - if ((SetFilePointer(os_fh, fsbuf.LowPart, &fsbuf.HighPart, FILE_BEGIN) - == 0xFFFFFFFF) && GetLastError() != NO_ERROR) -#else if (SetFilePointer(os_fh, filesize, 0, FILE_BEGIN) == 0xFFFFFFFF) -#endif return -1; /* extend/truncate file to the current position */ if (SetEndOfFile(os_fh) == 0) @@ -1317,60 +1285,57 @@ { HANDLE hFile; + // Get the 3 time stamps for the file. + FILETIME ftCreated, ftAccessed, ftModified; + int timeFlags = GetFileTimes(__G__ &ftCreated, &ftAccessed, &ftModified); + TCHAR szFile[_MAX_PATH]; MBSTOTSTR(szFile, G.filename, countof(szFile)); - /* skip restoring time stamps on user's request */ - if (uO.D_flag <= 1) { - // Get the 3 time stamps for the file. - FILETIME ftCreated, ftAccessed, ftModified; - int timeFlags = GetFileTimes(__G__ &ftCreated, &ftAccessed, &ftModified); - #if (defined(_WIN32_WCE) && (_WIN32_WCE < 211)) - // Cast the outfile to a HANDLE (since that is really what it is), and - // flush the file. We need to flush, because any unsaved data that is - // written to the file during CloseHandle() will step on the work done - // by SetFileTime(). - hFile = (HANDLE)G.outfile; - FlushFileBuffers(hFile); + // Cast the outfile to a HANDLE (since that is really what it is), and + // flush the file. We need to flush, because any unsaved data that is + // written to the file during CloseHandle() will step on the work done + // by SetFileTime(). + hFile = (HANDLE)G.outfile; + FlushFileBuffers(hFile); #else - // Close the file and then re-open it using the Win32 CreateFile() call. - // SetFileTime() requires a Win32 file HANDLE created with GENERIC_WRITE - // access. - fclose(G.outfile); - hFile = CreateFile(szFile, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, - OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + // Close the file and then re-open it using the Win32 CreateFile() call. + // SetFileTime() requires a Win32 file HANDLE created with GENERIC_WRITE + // access. + fclose(G.outfile); + hFile = CreateFile(szFile, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); #endif - // Set the file's date and time. - if (hFile != INVALID_HANDLE_VALUE) { - - // Make sure we retrieved some valid time stamp(s) - if (timeFlags) { - - // Set the various date and time fields. - if (!SetFileTime(hFile, - (timeFlags & EB_UT_FL_CTIME) ? &ftCreated : NULL, - (timeFlags & EB_UT_FL_ATIME) ? &ftAccessed : NULL, - (timeFlags & EB_UT_FL_MTIME) ? &ftModified : NULL)) - { - DebugOut(TEXT("SetFileTime() failed [%u]"), GetLastError()); - } - - } else { - DebugOut(TEXT("GetFileTimes() failed")); + // Set the file's date and time. + if (hFile != INVALID_HANDLE_VALUE) { + + // Make sure we retrieved some valid time stamp(s) + if (timeFlags) { + + // Set the various date and time fields. + if (!SetFileTime(hFile, + (timeFlags & EB_UT_FL_CTIME) ? &ftCreated : NULL, + (timeFlags & EB_UT_FL_ATIME) ? &ftAccessed : NULL, + (timeFlags & EB_UT_FL_MTIME) ? &ftModified : NULL)) + { + DebugOut(TEXT("SetFileTime() failed [%u]"), GetLastError()); } - // Close out file. - CloseHandle(hFile); - } else { - DebugOut(TEXT("CreateFile() failed [%u]"), GetLastError()); + DebugOut(TEXT("GetFileTimes() failed")); } + + // Close out file. + CloseHandle(hFile); + + } else { + DebugOut(TEXT("CreateFile() failed [%u]"), GetLastError()); } // If the file was successfully written, then set the attributes. @@ -1556,7 +1521,7 @@ // Check for a directory wack. case '/': *pOut = '\0'; - // Skip dir traversals unless they are explicitly allowed. + // Skip dir traversals unless they are explicitely allowed. if (strcmp(pPathComp, ".") == 0) { // don't bother appending "./" to the path *pPathComp = '\0'; @@ -1736,7 +1701,7 @@ // Add trailing path separator G.rootpath[G.rootlen++] = '\\'; - G.rootpath[G.rootlen] = '\0'; + G.rootpath[G.rootlen] = '0'; break; } @@ -1795,79 +1760,3 @@ } #endif /* !WINDLL */ #endif // !POCKET_UNZIP - -#if (defined(UNICODE_SUPPORT)) -/* convert wide character string to multi-byte character string */ -char *wide_to_local_string(ZCONST zwchar *wide_string, - int escape_all) -{ - int i; - wchar_t wc; - int bytes_char; - int default_used; - int wsize = 0; - int max_bytes = 9; - char buf[9]; - char *buffer = NULL; - char *local_string = NULL; - - for (wsize = 0; wide_string[wsize]; wsize++) ; - - if (max_bytes < MB_CUR_MAX) - max_bytes = MB_CUR_MAX; - - if ((buffer = (char *)malloc(wsize * max_bytes + 1)) == NULL) { - return NULL; - } - - /* convert it */ - buffer[0] = '\0'; - for (i = 0; i < wsize; i++) { - if (sizeof(wchar_t) < 4 && wide_string[i] > 0xFFFF) { - /* wchar_t probably 2 bytes */ - /* could do surrogates if state_dependent and wctomb can do */ - wc = zwchar_to_wchar_t_default_char; - } else { - wc = (wchar_t)wide_string[i]; - } - /* The C-RTL under WinCE does not support the generic C-style - * Wide-to-MultiByte conversion functions (like wctomb() et. al.). - * Therefore, we have to fall back to the underlying WinCE-API call to - * get WCHAR-to-ANSI translation done. - */ - bytes_char = WideCharToMultiByte( - CP_ACP, WC_COMPOSITECHECK, - &wc, 1, - (LPSTR)buf, sizeof(buf), - NULL, &default_used); - if (default_used) - bytes_char = -1; - if (escape_all) { - if (bytes_char == 1 && (uch)buf[0] <= 0x7f) { - /* ASCII */ - strncat(buffer, buf, 1); - } else { - /* use escape for wide character */ - char *escape_string = wide_to_escape_string(wide_string[i]); - strcat(buffer, escape_string); - free(escape_string); - } - } else if (bytes_char > 0) { - /* multi-byte char */ - strncat(buffer, buf, bytes_char); - } else { - /* no MB for this wide */ - /* use escape for wide character */ - char *escape_string = wide_to_escape_string(wide_string[i]); - strcat(buffer, escape_string); - free(escape_string); - } - } - if ((local_string = (char *)realloc(buffer, strlen(buffer) + 1)) == NULL) { - free(buffer); - return NULL; - } - - return local_string; -} -#endif /* UNICODE_SUPPORT */ diff -Nru unzip-6.0/wince/intrface.h unzip-6.0/wince/intrface.h --- unzip-6.0/wince/intrface.h 2005-05-18 09:21:24.000000000 +0000 +++ unzip-6.0/wince/intrface.h 2010-05-14 07:26:14.000000000 +0000 @@ -56,13 +56,13 @@ } OVERWRITE_MODE, *LPOVERWRITE_MODE; typedef struct _EXTRACT_INFO { - zusz_t uzByteCount; // Total bytes to extract/test + BOOL fExtract; // TRUE for extract, FALSE for test DWORD dwFileCount; // Number of files to extract/test. + DWORD dwByteCount; // Total bytes to extract/test LPSTR *szFileList; // ARGV list of files, NULL for all files. - LPSTR szMappedPath; // Used to store mapped name. May be NULL. - OVERWRITE_MODE overwriteMode; // How to handle file overwrites. - BOOL fExtract; // TRUE for extract, FALSE for test BOOL fRestorePaths; // TRUE to restore paths, FALSE to junk them. + OVERWRITE_MODE overwriteMode; // How to handle file overwrites. + LPSTR szMappedPath; // Used to store mapped name. May be NULL. BOOL fAbort; // Set during operation by UI to abort. int result; // Result code from extraction/test. @@ -75,11 +75,11 @@ HWND hWndBytesProcessed; // Values used to keep track of our progress. - zusz_t uzBytesTotalThisFile; - zusz_t uzBytesWrittenThisFile; - zusz_t uzBytesWrittenPreviousFiles; - zusz_t uzFileOffset; + DWORD dwFileOffset; DWORD dwFile; + DWORD dwBytesTotalThisFile; + DWORD dwBytesWrittenThisFile; + DWORD dwBytesWrittenPreviousFiles; LPCSTR szFile; BOOL fNewLineOfText; diff -Nru unzip-6.0/wince/punzip.htp unzip-6.0/wince/punzip.htp --- unzip-6.0/wince/punzip.htp 2009-04-20 01:59:40.000000000 +0000 +++ unzip-6.0/wince/punzip.htp 2010-05-14 07:26:14.000000000 +0000 @@ -380,13 +380,13 @@

About Pocket UnZip

-

Thank you for using Version 2.0 of Pocket UnZip for Windows +

Thank you for using Version 1.1 of Pocket UnZip for Windows CE.

Pocket UnZip was developed by Steve P. Miller. Although I'd like to take full credit, I could not have done it without the public decompression source code provided by the Info-ZIP group. -Pocket UnZip uses version 6.0 of Info-ZIP's core decompression +Pocket UnZip uses version 5.5 of Info-ZIP's core decompression code. Many thanks go to Greg Roelofs and all the fine folks at Info-ZIP.

@@ -400,13 +400,13 @@ Info-ZIP LICENSE file.

For the latest news, binaries, source code, and more -information about the Info-ZIP group, visit +information about the Info-ZIP group, visit ftp://ftp.info-zip.org/pub/infozip/.

For more information about me, or to check out some of my other applications (mostly Windows 95 / NT / CE), stop by my personal web page at http://pobox.com/~stevemil/.

-

Copyright © 1997-2009 Info-Zip. All Rights Reserved.

+

Copyright © 1997-2005 Info-Zip. All Rights Reserved.

diff -Nru unzip-6.0/wince/punzip.rcv unzip-6.0/wince/punzip.rcv --- unzip-6.0/wince/punzip.rcv 2009-04-20 02:00:22.000000000 +0000 +++ unzip-6.0/wince/punzip.rcv 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -60,12 +60,12 @@ //***** User Modifiable Version Defines //****************************************************************************** -#define VERSION_MAJOR 2 -#define VERSION_MINOR 0 +#define VERSION_MAJOR 1 +#define VERSION_MINOR 1 #define VERSION_PRIVATE 0 #define VERSION_PATCH UZ_PATCHLEVEL -#define VERSION_STRING "2.0" +#define VERSION_STRING "1.1" // Set VER_FF_PRERELEASE to VS_FF_PRERELEASE for beta and 0 for release. #ifdef BETA @@ -87,7 +87,7 @@ #define VER_VERSION VERSION_MAJOR,VERSION_MINOR,VERSION_PRIVATE,VERSION_PATCH #define VER_COMPANY_STR VER_DEVELOPER_STR -#define VER_COPYRIGHT_STR "Copyright \251 1997-2009 Info-ZIP. All Rights Reserved." +#define VER_COPYRIGHT_STR "Copyright \251 1997-2005 Info-ZIP. All Rights Reserved." #ifdef UNICODE diff -Nru unzip-6.0/wince/README unzip-6.0/wince/README --- unzip-6.0/wince/README 2005-12-30 19:50:08.000000000 +0000 +++ unzip-6.0/wince/README 2010-05-14 07:26:14.000000000 +0000 @@ -130,7 +130,7 @@ api.c crypt.h globals.c process.c unzip.h consts.h ebcdic.h globals.h ttyio.c unzpriv.h crc32.c explode.c inflate.c ttyio.h unzvers.h - crc32.h extract.c inflate.h unreduce.c zip.h + crctab.c extract.c inflate.h unreduce.c zip.h crypt.c fileio.c list.c unshrink.c _______________________________________________________________________________ @@ -182,6 +182,7 @@ wince/wcemain.c main entry point unzip.c unzip command line interface crc32.c CRC-32 calculation + crctab.c lookup table for CRC-32 crypt.c decryption support extract.c general archive extraction handling fileio.c internal I/O helper routines @@ -207,9 +208,9 @@ wince/wince.h WinCE C(++) library roundups consts.h global constant data - crc32.h CRC-32 calculation interface crypt.h decryption interface ebcdic.h ASCII <--> EBCDIC translation + tables.h codepage translation tables ttyio.h console I/O interface unzvers.h version/release information wince/intrface.h public entities in wince/intrface.cpp diff -Nru unzip-6.0/wince/vc5/punzip.dsp unzip-6.0/wince/vc5/punzip.dsp --- unzip-6.0/wince/vc5/punzip.dsp 2006-12-25 20:16:24.000000000 +0000 +++ unzip-6.0/wince/vc5/punzip.dsp 2010-05-14 07:26:14.000000000 +0000 @@ -443,7 +443,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -470,7 +469,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -497,7 +495,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH) Release" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -524,7 +521,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH) Debug" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -553,7 +549,122 @@ # End Source File # Begin Source File -SOURCE=..\..\crc32.h +SOURCE=..\..\crctab.c + +!IF "$(CFG)" == "punzip - Win32 Release" + +!ELSEIF "$(CFG)" == "punzip - Win32 Debug" + +!ELSEIF "$(CFG)" == "punzip - Win32 ANSI Release" + +!ELSEIF "$(CFG)" == "punzip - Win32 ANSI Debug" + +!ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" + +DEP_CPP_CRCTA=\ + "..\..\globals.h"\ + "..\..\unzip.h"\ + "..\..\unzpriv.h"\ + "..\..\zip.h"\ + "..\punzip.h"\ + "..\punzip.rcv"\ + "..\wince.h"\ + +NODEP_CPP_CRCTA=\ + "..\..\acorn\riscos.h"\ + "..\..\amiga\amiga.h"\ + "..\..\aosvs\aosvs.h"\ + "..\..\macdir.h"\ + "..\..\macstat.h"\ + "..\..\msdos\doscfg.h"\ + "..\..\os2\os2cfg.h"\ + "..\..\os2\os2data.h"\ + "..\..\qdos\izqdos.h"\ + "..\..\vmmvs.h"\ + "..\..\win32\w32cfg.h"\ + "..\..\zlib.h"\ + + +!ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" + +DEP_CPP_CRCTA=\ + "..\..\globals.h"\ + "..\..\unzip.h"\ + "..\..\unzpriv.h"\ + "..\..\zip.h"\ + "..\punzip.h"\ + "..\punzip.rcv"\ + "..\wince.h"\ + +NODEP_CPP_CRCTA=\ + "..\..\acorn\riscos.h"\ + "..\..\amiga\amiga.h"\ + "..\..\aosvs\aosvs.h"\ + "..\..\macdir.h"\ + "..\..\macstat.h"\ + "..\..\msdos\doscfg.h"\ + "..\..\os2\os2cfg.h"\ + "..\..\os2\os2data.h"\ + "..\..\qdos\izqdos.h"\ + "..\..\vmmvs.h"\ + "..\..\win32\w32cfg.h"\ + "..\..\zlib.h"\ + + +!ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH) Release" + +DEP_CPP_CRCTA=\ + "..\..\globals.h"\ + "..\..\unzip.h"\ + "..\..\unzpriv.h"\ + "..\..\zip.h"\ + "..\punzip.h"\ + "..\punzip.rcv"\ + "..\wince.h"\ + +NODEP_CPP_CRCTA=\ + "..\..\acorn\riscos.h"\ + "..\..\amiga\amiga.h"\ + "..\..\aosvs\aosvs.h"\ + "..\..\macdir.h"\ + "..\..\macstat.h"\ + "..\..\msdos\doscfg.h"\ + "..\..\os2\os2cfg.h"\ + "..\..\os2\os2data.h"\ + "..\..\qdos\izqdos.h"\ + "..\..\vmmvs.h"\ + "..\..\win32\w32cfg.h"\ + "..\..\zlib.h"\ + + +!ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH) Debug" + +DEP_CPP_CRCTA=\ + "..\..\globals.h"\ + "..\..\unzip.h"\ + "..\..\unzpriv.h"\ + "..\..\zip.h"\ + "..\punzip.h"\ + "..\punzip.rcv"\ + "..\wince.h"\ + +NODEP_CPP_CRCTA=\ + "..\..\acorn\riscos.h"\ + "..\..\amiga\amiga.h"\ + "..\..\aosvs\aosvs.h"\ + "..\..\macdir.h"\ + "..\..\macstat.h"\ + "..\..\msdos\doscfg.h"\ + "..\..\os2\os2cfg.h"\ + "..\..\os2\os2data.h"\ + "..\..\qdos\izqdos.h"\ + "..\..\vmmvs.h"\ + "..\..\win32\w32cfg.h"\ + "..\..\zlib.h"\ + + +!ENDIF + # End Source File # Begin Source File @@ -570,7 +681,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\ttyio.h"\ @@ -599,7 +709,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\ttyio.h"\ @@ -628,7 +737,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH) Release" DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\ttyio.h"\ @@ -657,7 +765,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH) Debug" DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\ttyio.h"\ @@ -824,7 +931,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ @@ -853,7 +959,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ @@ -882,7 +987,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH) Release" DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ @@ -911,7 +1015,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH) Debug" DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ @@ -955,7 +1058,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" DEP_CPP_FILEI=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\ebcdic.h"\ "..\..\globals.h"\ @@ -984,7 +1086,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" DEP_CPP_FILEI=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\ebcdic.h"\ "..\..\globals.h"\ @@ -1013,7 +1114,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH) Release" DEP_CPP_FILEI=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\ebcdic.h"\ "..\..\globals.h"\ @@ -1042,7 +1142,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH) Debug" DEP_CPP_FILEI=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\ebcdic.h"\ "..\..\globals.h"\ @@ -1455,7 +1554,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" DEP_CPP_PROCE=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -1483,7 +1581,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" DEP_CPP_PROCE=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -1511,7 +1608,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH) Release" DEP_CPP_PROCE=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -1539,7 +1635,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH) Debug" DEP_CPP_PROCE=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -1700,125 +1795,6 @@ # End Source File # Begin Source File -SOURCE=..\..\ubz2err.c - -!IF "$(CFG)" == "punzip - Win32 Release" - -!ELSEIF "$(CFG)" == "punzip - Win32 Debug" - -!ELSEIF "$(CFG)" == "punzip - Win32 ANSI Release" - -!ELSEIF "$(CFG)" == "punzip - Win32 ANSI Debug" - -!ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" - -DEP_CPP_UBZ2ERR=\ - "..\..\globals.h"\ - "..\..\unzip.h"\ - "..\..\unzpriv.h"\ - "..\intrface.h"\ - "..\punzip.h"\ - "..\punzip.rcv"\ - "..\wince.h"\ - -NODEP_CPP_UBZ2ERR=\ - "..\..\acorn\riscos.h"\ - "..\..\amiga\amiga.h"\ - "..\..\aosvs\aosvs.h"\ - "..\..\macdir.h"\ - "..\..\macstat.h"\ - "..\..\msdos\doscfg.h"\ - "..\..\os2\os2cfg.h"\ - "..\..\os2\os2data.h"\ - "..\..\qdos\izqdos.h"\ - "..\..\vmmvs.h"\ - "..\..\win32\w32cfg.h"\ - "..\..\zlib.h"\ - - -!ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" - -DEP_CPP_UBZ2ERR=\ - "..\..\globals.h"\ - "..\..\unzip.h"\ - "..\..\unzpriv.h"\ - "..\intrface.h"\ - "..\punzip.h"\ - "..\punzip.rcv"\ - "..\wince.h"\ - -NODEP_CPP_UBZ2ERR=\ - "..\..\acorn\riscos.h"\ - "..\..\amiga\amiga.h"\ - "..\..\aosvs\aosvs.h"\ - "..\..\macdir.h"\ - "..\..\macstat.h"\ - "..\..\msdos\doscfg.h"\ - "..\..\os2\os2cfg.h"\ - "..\..\os2\os2data.h"\ - "..\..\qdos\izqdos.h"\ - "..\..\vmmvs.h"\ - "..\..\win32\w32cfg.h"\ - "..\..\zlib.h"\ - - -!ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH) Release" - -DEP_CPP_UBZ2ERR=\ - "..\..\globals.h"\ - "..\..\unzip.h"\ - "..\..\unzpriv.h"\ - "..\intrface.h"\ - "..\punzip.h"\ - "..\punzip.rcv"\ - "..\wince.h"\ - -NODEP_CPP_UBZ2ERR=\ - "..\..\acorn\riscos.h"\ - "..\..\amiga\amiga.h"\ - "..\..\aosvs\aosvs.h"\ - "..\..\macdir.h"\ - "..\..\macstat.h"\ - "..\..\msdos\doscfg.h"\ - "..\..\os2\os2cfg.h"\ - "..\..\os2\os2data.h"\ - "..\..\qdos\izqdos.h"\ - "..\..\vmmvs.h"\ - "..\..\win32\w32cfg.h"\ - "..\..\zlib.h"\ - - -!ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH) Debug" - -DEP_CPP_UBZ2ERR=\ - "..\..\globals.h"\ - "..\..\unzip.h"\ - "..\..\unzpriv.h"\ - "..\intrface.h"\ - "..\punzip.h"\ - "..\punzip.rcv"\ - "..\wince.h"\ - -NODEP_CPP_UBZ2ERR=\ - "..\..\acorn\riscos.h"\ - "..\..\amiga\amiga.h"\ - "..\..\aosvs\aosvs.h"\ - "..\..\macdir.h"\ - "..\..\macstat.h"\ - "..\..\msdos\doscfg.h"\ - "..\..\os2\os2cfg.h"\ - "..\..\os2\os2data.h"\ - "..\..\qdos\izqdos.h"\ - "..\..\vmmvs.h"\ - "..\..\win32\w32cfg.h"\ - "..\..\zlib.h"\ - - -!ENDIF - -# End Source File -# Begin Source File - SOURCE=..\..\unreduce.c !IF "$(CFG)" == "punzip - Win32 Release" diff -Nru unzip-6.0/wince/vc6/punzip.dsp unzip-6.0/wince/vc6/punzip.dsp --- unzip-6.0/wince/vc6/punzip.dsp 2007-03-31 18:19:56.000000000 +0000 +++ unzip-6.0/wince/vc6/punzip.dsp 2010-05-14 07:26:14.000000000 +0000 @@ -412,7 +412,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -450,7 +450,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -537,7 +537,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -598,7 +598,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Release" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -619,7 +618,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -633,7 +632,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Debug" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -654,7 +652,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -668,7 +666,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -696,7 +693,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -724,7 +720,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Release" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -743,7 +738,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -758,7 +753,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Debug" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -788,7 +782,200 @@ # End Source File # Begin Source File -SOURCE=..\..\crc32.h +SOURCE=..\..\crctab.c + +!IF "$(CFG)" == "punzip - Win32 Release" + +!ELSEIF "$(CFG)" == "punzip - Win32 Debug" + +!ELSEIF "$(CFG)" == "punzip - Win32 ANSI Release" + +!ELSEIF "$(CFG)" == "punzip - Win32 ANSI Debug" + +!ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Release" + +DEP_CPP_CRCTA=\ + "..\..\globals.h"\ + "..\..\unzip.h"\ + "..\..\unzpriv.h"\ + "..\..\unzvers.h"\ + "..\..\win32\rsxntwin.h"\ + "..\..\win32\w32cfg.h"\ + "..\..\windll\structs.h"\ + "..\..\zip.h"\ + "..\punzip.h"\ + "..\punzip.rcv"\ + "..\wcecfg.h"\ + "..\wince.h"\ + +NODEP_CPP_CRCTA=\ + "..\..\acorn\riscos.h"\ + "..\..\amiga\amiga.h"\ + "..\..\aosvs\aosvs.h"\ + "..\..\flexos\flxcfg.h"\ + "..\..\maccfg.h"\ + "..\..\msdos\doscfg.h"\ + "..\..\novell\nlmcfg.h"\ + "..\..\os2\os2cfg.h"\ + "..\..\os2\os2data.h"\ + "..\..\qdos\izqdos.h"\ + "..\..\tandem.h"\ + "..\..\theos\thscfg.h"\ + "..\..\unix\unxcfg.h"\ + "..\..\vmmvs.h"\ + "..\..\zlib.h"\ + + +!ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Debug" + +DEP_CPP_CRCTA=\ + "..\..\globals.h"\ + "..\..\unzip.h"\ + "..\..\unzpriv.h"\ + "..\..\unzvers.h"\ + "..\..\win32\rsxntwin.h"\ + "..\..\win32\w32cfg.h"\ + "..\..\windll\structs.h"\ + "..\..\zip.h"\ + "..\punzip.h"\ + "..\punzip.rcv"\ + "..\wcecfg.h"\ + "..\wince.h"\ + +NODEP_CPP_CRCTA=\ + "..\..\acorn\riscos.h"\ + "..\..\amiga\amiga.h"\ + "..\..\aosvs\aosvs.h"\ + "..\..\flexos\flxcfg.h"\ + "..\..\maccfg.h"\ + "..\..\msdos\doscfg.h"\ + "..\..\novell\nlmcfg.h"\ + "..\..\os2\os2cfg.h"\ + "..\..\os2\os2data.h"\ + "..\..\qdos\izqdos.h"\ + "..\..\tandem.h"\ + "..\..\theos\thscfg.h"\ + "..\..\unix\unxcfg.h"\ + "..\..\vmmvs.h"\ + "..\..\zlib.h"\ + + +!ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" + +DEP_CPP_CRCTA=\ + "..\..\globals.h"\ + "..\..\unzip.h"\ + "..\..\unzpriv.h"\ + "..\..\zip.h"\ + "..\punzip.h"\ + "..\punzip.rcv"\ + "..\wcecfg.h"\ + "..\wince.h"\ + +NODEP_CPP_CRCTA=\ + "..\..\acorn\riscos.h"\ + "..\..\amiga\amiga.h"\ + "..\..\aosvs\aosvs.h"\ + "..\..\macdir.h"\ + "..\..\macstat.h"\ + "..\..\msdos\doscfg.h"\ + "..\..\os2\os2cfg.h"\ + "..\..\os2\os2data.h"\ + "..\..\qdos\izqdos.h"\ + "..\..\vmmvs.h"\ + "..\..\win32\w32cfg.h"\ + "..\..\zlib.h"\ + + +!ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" + +DEP_CPP_CRCTA=\ + "..\..\globals.h"\ + "..\..\unzip.h"\ + "..\..\unzpriv.h"\ + "..\..\zip.h"\ + "..\punzip.h"\ + "..\punzip.rcv"\ + "..\wcecfg.h"\ + "..\wince.h"\ + +NODEP_CPP_CRCTA=\ + "..\..\acorn\riscos.h"\ + "..\..\amiga\amiga.h"\ + "..\..\aosvs\aosvs.h"\ + "..\..\macdir.h"\ + "..\..\macstat.h"\ + "..\..\msdos\doscfg.h"\ + "..\..\os2\os2cfg.h"\ + "..\..\os2\os2data.h"\ + "..\..\qdos\izqdos.h"\ + "..\..\vmmvs.h"\ + "..\..\win32\w32cfg.h"\ + "..\..\zlib.h"\ + + +!ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Release" + +DEP_CPP_CRCTA=\ + "..\..\globals.h"\ + "..\..\unzip.h"\ + "..\..\unzpriv.h"\ + "..\..\unzvers.h"\ + "..\..\windll\structs.h"\ + "..\..\zip.h"\ + "..\punzip.h"\ + "..\punzip.rcv"\ + "..\wcecfg.h"\ + "..\wince.h"\ + +NODEP_CPP_CRCTA=\ + "..\..\acorn\riscos.h"\ + "..\..\amiga\amiga.h"\ + "..\..\aosvs\aosvs.h"\ + "..\..\flexos\flxcfg.h"\ + "..\..\maccfg.h"\ + "..\..\msdos\doscfg.h"\ + "..\..\novell\nlmcfg.h"\ + "..\..\os2\os2cfg.h"\ + "..\..\os2\os2data.h"\ + "..\..\qdos\izqdos.h"\ + "..\..\tandem.h"\ + "..\..\theos\thscfg.h"\ + "..\..\unix\unxcfg.h"\ + "..\..\vmmvs.h"\ + "..\..\win32\w32cfg.h"\ + "..\..\zlib.h"\ + + +!ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Debug" + +DEP_CPP_CRCTA=\ + "..\..\globals.h"\ + "..\..\unzip.h"\ + "..\..\unzpriv.h"\ + "..\..\zip.h"\ + "..\punzip.h"\ + "..\punzip.rcv"\ + "..\wcecfg.h"\ + "..\wince.h"\ + +NODEP_CPP_CRCTA=\ + "..\..\acorn\riscos.h"\ + "..\..\amiga\amiga.h"\ + "..\..\aosvs\aosvs.h"\ + "..\..\macdir.h"\ + "..\..\macstat.h"\ + "..\..\msdos\doscfg.h"\ + "..\..\os2\os2cfg.h"\ + "..\..\os2\os2data.h"\ + "..\..\qdos\izqdos.h"\ + "..\..\vmmvs.h"\ + "..\..\win32\w32cfg.h"\ + "..\..\zlib.h"\ + + +!ENDIF + # End Source File # Begin Source File @@ -805,7 +992,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Release" DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\ttyio.h"\ @@ -828,7 +1014,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -842,7 +1028,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Debug" DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\ttyio.h"\ @@ -865,7 +1050,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -879,7 +1064,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\ttyio.h"\ @@ -909,7 +1093,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\ttyio.h"\ @@ -939,7 +1122,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Release" DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\ttyio.h"\ @@ -960,7 +1142,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -975,7 +1157,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Debug" DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\ttyio.h"\ @@ -1047,7 +1228,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1080,7 +1261,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1163,7 +1344,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1219,7 +1400,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Release" DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ @@ -1243,7 +1423,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1257,7 +1437,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Debug" DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ @@ -1281,7 +1460,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1295,7 +1474,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ @@ -1325,7 +1503,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ @@ -1355,7 +1532,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Release" DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ @@ -1377,7 +1553,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1393,7 +1569,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Debug" DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ @@ -1438,7 +1613,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Release" DEP_CPP_FILEI=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\ebcdic.h"\ "..\..\globals.h"\ @@ -1464,7 +1638,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1479,7 +1653,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Debug" DEP_CPP_FILEI=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\ebcdic.h"\ "..\..\globals.h"\ @@ -1505,7 +1678,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1520,7 +1693,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" DEP_CPP_FILEI=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\ebcdic.h"\ "..\..\globals.h"\ @@ -1550,7 +1722,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" DEP_CPP_FILEI=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\ebcdic.h"\ "..\..\globals.h"\ @@ -1580,7 +1751,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Release" DEP_CPP_FILEI=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\ebcdic.h"\ "..\..\globals.h"\ @@ -1606,7 +1776,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1622,7 +1792,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Debug" DEP_CPP_FILEI=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\ebcdic.h"\ "..\..\globals.h"\ @@ -1686,7 +1855,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1719,7 +1888,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1802,7 +1971,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1882,7 +2051,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1917,7 +2086,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2004,7 +2173,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2088,7 +2257,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2124,7 +2293,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2213,7 +2382,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2272,7 +2441,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Release" DEP_CPP_PROCE=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -2295,7 +2463,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2309,7 +2477,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Debug" DEP_CPP_PROCE=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -2332,7 +2499,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2346,7 +2513,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" DEP_CPP_PROCE=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -2378,7 +2544,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" DEP_CPP_PROCE=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -2407,7 +2572,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Release" DEP_CPP_PROCE=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -2427,7 +2591,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2443,7 +2607,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Debug" DEP_CPP_PROCE=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -2509,7 +2672,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2545,7 +2708,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2637,7 +2800,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2687,212 +2850,6 @@ # End Source File # Begin Source File -SOURCE=..\..\ubz2err.c - -!IF "$(CFG)" == "punzip - Win32 Release" - -!ELSEIF "$(CFG)" == "punzip - Win32 Debug" - -!ELSEIF "$(CFG)" == "punzip - Win32 ANSI Release" - -!ELSEIF "$(CFG)" == "punzip - Win32 ANSI Debug" - -!ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Release" - -DEP_CPP_UBZ2ERR_=\ - "..\..\globals.h"\ - "..\..\unzip.h"\ - "..\..\unzpriv.h"\ - "..\..\unzvers.h"\ - "..\..\win32\rsxntwin.h"\ - "..\..\win32\w32cfg.h"\ - "..\..\windll\decs.h"\ - "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ - "..\punzip.h"\ - "..\punzip.rcv"\ - "..\wcecfg.h"\ - "..\wince.h"\ - -NODEP_CPP_UBZ2ERR_=\ - "..\..\acorn\riscos.h"\ - "..\..\amiga\amiga.h"\ - "..\..\aosvs\aosvs.h"\ - "..\..\flexos\flxcfg.h"\ - "..\..\maccfg.h"\ - "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ - "..\..\os2\os2cfg.h"\ - "..\..\os2\os2data.h"\ - "..\..\qdos\izqdos.h"\ - "..\..\tandem.h"\ - "..\..\theos\thscfg.h"\ - "..\..\unix\unxcfg.h"\ - "..\..\vmmvs.h"\ - "..\..\zlib.h"\ - - -!ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Debug" - -DEP_CPP_UBZ2ERR_=\ - "..\..\globals.h"\ - "..\..\unzip.h"\ - "..\..\unzpriv.h"\ - "..\..\unzvers.h"\ - "..\..\win32\rsxntwin.h"\ - "..\..\win32\w32cfg.h"\ - "..\..\windll\decs.h"\ - "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ - "..\punzip.h"\ - "..\punzip.rcv"\ - "..\wcecfg.h"\ - "..\wince.h"\ - -NODEP_CPP_UBZ2ERR_=\ - "..\..\acorn\riscos.h"\ - "..\..\amiga\amiga.h"\ - "..\..\aosvs\aosvs.h"\ - "..\..\flexos\flxcfg.h"\ - "..\..\maccfg.h"\ - "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ - "..\..\os2\os2cfg.h"\ - "..\..\os2\os2data.h"\ - "..\..\qdos\izqdos.h"\ - "..\..\tandem.h"\ - "..\..\theos\thscfg.h"\ - "..\..\unix\unxcfg.h"\ - "..\..\vmmvs.h"\ - "..\..\zlib.h"\ - - -!ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" - -DEP_CPP_UBZ2ERR_=\ - "..\..\globals.h"\ - "..\..\unzip.h"\ - "..\..\unzpriv.h"\ - "..\intrface.h"\ - "..\punzip.h"\ - "..\punzip.rcv"\ - "..\wcecfg.h"\ - "..\wince.h"\ - -NODEP_CPP_UBZ2ERR_=\ - "..\..\acorn\riscos.h"\ - "..\..\amiga\amiga.h"\ - "..\..\aosvs\aosvs.h"\ - "..\..\macdir.h"\ - "..\..\macstat.h"\ - "..\..\msdos\doscfg.h"\ - "..\..\os2\os2cfg.h"\ - "..\..\os2\os2data.h"\ - "..\..\qdos\izqdos.h"\ - "..\..\vmmvs.h"\ - "..\..\win32\w32cfg.h"\ - "..\..\windll\windll.h"\ - "..\..\zlib.h"\ - - -!ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" - -DEP_CPP_UBZ2ERR_=\ - "..\..\globals.h"\ - "..\..\unzip.h"\ - "..\..\unzpriv.h"\ - "..\intrface.h"\ - "..\punzip.h"\ - "..\punzip.rcv"\ - "..\wcecfg.h"\ - "..\wince.h"\ - -NODEP_CPP_UBZ2ERR_=\ - "..\..\acorn\riscos.h"\ - "..\..\amiga\amiga.h"\ - "..\..\aosvs\aosvs.h"\ - "..\..\macdir.h"\ - "..\..\macstat.h"\ - "..\..\msdos\doscfg.h"\ - "..\..\os2\os2cfg.h"\ - "..\..\os2\os2data.h"\ - "..\..\qdos\izqdos.h"\ - "..\..\vmmvs.h"\ - "..\..\win32\w32cfg.h"\ - "..\..\windll\windll.h"\ - "..\..\zlib.h"\ - - -!ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Release" - -DEP_CPP_UBZ2ERR_=\ - "..\..\globals.h"\ - "..\..\unzip.h"\ - "..\..\unzpriv.h"\ - "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ - "..\..\windll\structs.h"\ - "..\intrface.h"\ - "..\punzip.h"\ - "..\punzip.rcv"\ - "..\wcecfg.h"\ - "..\wince.h"\ - -NODEP_CPP_UBZ2ERR_=\ - "..\..\acorn\riscos.h"\ - "..\..\amiga\amiga.h"\ - "..\..\aosvs\aosvs.h"\ - "..\..\flexos\flxcfg.h"\ - "..\..\maccfg.h"\ - "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ - "..\..\os2\os2cfg.h"\ - "..\..\os2\os2data.h"\ - "..\..\qdos\izqdos.h"\ - "..\..\tandem.h"\ - "..\..\theos\thscfg.h"\ - "..\..\unix\unxcfg.h"\ - "..\..\vmmvs.h"\ - "..\..\win32\w32cfg.h"\ - "..\..\windll\windll.h"\ - "..\..\zlib.h"\ - - -!ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Debug" - -DEP_CPP_UBZ2ERR_=\ - "..\..\globals.h"\ - "..\..\unzip.h"\ - "..\..\unzpriv.h"\ - "..\intrface.h"\ - "..\punzip.h"\ - "..\punzip.rcv"\ - "..\wcecfg.h"\ - "..\wince.h"\ - -NODEP_CPP_UBZ2ERR_=\ - "..\..\acorn\riscos.h"\ - "..\..\amiga\amiga.h"\ - "..\..\aosvs\aosvs.h"\ - "..\..\macdir.h"\ - "..\..\macstat.h"\ - "..\..\msdos\doscfg.h"\ - "..\..\os2\os2cfg.h"\ - "..\..\os2\os2data.h"\ - "..\..\qdos\izqdos.h"\ - "..\..\vmmvs.h"\ - "..\..\win32\w32cfg.h"\ - "..\..\windll\windll.h"\ - "..\..\zlib.h"\ - - -!ENDIF - -# End Source File -# Begin Source File - SOURCE=..\..\unreduce.c !IF "$(CFG)" == "punzip - Win32 Release" @@ -2925,7 +2882,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2958,7 +2915,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3041,7 +2998,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3116,7 +3073,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3149,7 +3106,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3232,7 +3189,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3330,7 +3287,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3366,7 +3323,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3458,7 +3415,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3584,7 +3541,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3618,7 +3575,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3668,7 +3625,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3733,7 +3690,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3770,7 +3727,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3867,7 +3824,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ diff -Nru unzip-6.0/wince/vcEMbed3/punzip.vcp unzip-6.0/wince/vcEMbed3/punzip.vcp --- unzip-6.0/wince/vcEMbed3/punzip.vcp 2007-03-31 18:24:54.000000000 +0000 +++ unzip-6.0/wince/vcEMbed3/punzip.vcp 2010-05-14 07:26:14.000000000 +0000 @@ -271,7 +271,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -306,7 +306,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -341,7 +341,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -376,7 +376,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -411,7 +411,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -446,7 +446,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -472,7 +472,6 @@ !IF "$(CFG)" == "punzip - Win32 (WCE x86em) Release" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -491,7 +490,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -506,7 +505,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Debug" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -525,7 +523,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -540,7 +538,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -559,7 +556,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -574,7 +571,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -593,7 +589,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -608,7 +604,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Release" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -627,7 +622,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -642,7 +637,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Debug" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -661,7 +655,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -678,7 +672,208 @@ # End Source File # Begin Source File -SOURCE=..\..\crc32.h +SOURCE=..\..\crctab.c + +!IF "$(CFG)" == "punzip - Win32 (WCE x86em) Release" + +DEP_CPP_CRCTA=\ + "..\..\globals.h"\ + "..\..\unzip.h"\ + "..\..\unzpriv.h"\ + "..\..\unzvers.h"\ + "..\..\windll\structs.h"\ + "..\..\zip.h"\ + "..\punzip.h"\ + "..\punzip.rcv"\ + "..\wcecfg.h"\ + "..\wince.h"\ + +NODEP_CPP_CRCTA=\ + "..\..\acorn\riscos.h"\ + "..\..\amiga\amiga.h"\ + "..\..\aosvs\aosvs.h"\ + "..\..\flexos\flxcfg.h"\ + "..\..\maccfg.h"\ + "..\..\msdos\doscfg.h"\ + "..\..\novell\nlmcfg.h"\ + "..\..\os2\os2cfg.h"\ + "..\..\os2\os2data.h"\ + "..\..\qdos\izqdos.h"\ + "..\..\tandem.h"\ + "..\..\theos\thscfg.h"\ + "..\..\unix\unxcfg.h"\ + "..\..\vmmvs.h"\ + "..\..\win32\w32cfg.h"\ + "..\..\zlib.h"\ + + +!ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Debug" + +DEP_CPP_CRCTA=\ + "..\..\globals.h"\ + "..\..\unzip.h"\ + "..\..\unzpriv.h"\ + "..\..\unzvers.h"\ + "..\..\windll\structs.h"\ + "..\..\zip.h"\ + "..\punzip.h"\ + "..\punzip.rcv"\ + "..\wcecfg.h"\ + "..\wince.h"\ + +NODEP_CPP_CRCTA=\ + "..\..\acorn\riscos.h"\ + "..\..\amiga\amiga.h"\ + "..\..\aosvs\aosvs.h"\ + "..\..\flexos\flxcfg.h"\ + "..\..\maccfg.h"\ + "..\..\msdos\doscfg.h"\ + "..\..\novell\nlmcfg.h"\ + "..\..\os2\os2cfg.h"\ + "..\..\os2\os2data.h"\ + "..\..\qdos\izqdos.h"\ + "..\..\tandem.h"\ + "..\..\theos\thscfg.h"\ + "..\..\unix\unxcfg.h"\ + "..\..\vmmvs.h"\ + "..\..\win32\w32cfg.h"\ + "..\..\zlib.h"\ + + +!ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" + +DEP_CPP_CRCTA=\ + "..\..\globals.h"\ + "..\..\unzip.h"\ + "..\..\unzpriv.h"\ + "..\..\unzvers.h"\ + "..\..\windll\structs.h"\ + "..\..\zip.h"\ + "..\punzip.h"\ + "..\punzip.rcv"\ + "..\wcecfg.h"\ + "..\wince.h"\ + +NODEP_CPP_CRCTA=\ + "..\..\acorn\riscos.h"\ + "..\..\amiga\amiga.h"\ + "..\..\aosvs\aosvs.h"\ + "..\..\flexos\flxcfg.h"\ + "..\..\maccfg.h"\ + "..\..\msdos\doscfg.h"\ + "..\..\novell\nlmcfg.h"\ + "..\..\os2\os2cfg.h"\ + "..\..\os2\os2data.h"\ + "..\..\qdos\izqdos.h"\ + "..\..\tandem.h"\ + "..\..\theos\thscfg.h"\ + "..\..\unix\unxcfg.h"\ + "..\..\vmmvs.h"\ + "..\..\win32\w32cfg.h"\ + "..\..\zlib.h"\ + + +!ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" + +DEP_CPP_CRCTA=\ + "..\..\globals.h"\ + "..\..\unzip.h"\ + "..\..\unzpriv.h"\ + "..\..\unzvers.h"\ + "..\..\windll\structs.h"\ + "..\..\zip.h"\ + "..\punzip.h"\ + "..\punzip.rcv"\ + "..\wcecfg.h"\ + "..\wince.h"\ + +NODEP_CPP_CRCTA=\ + "..\..\acorn\riscos.h"\ + "..\..\amiga\amiga.h"\ + "..\..\aosvs\aosvs.h"\ + "..\..\flexos\flxcfg.h"\ + "..\..\maccfg.h"\ + "..\..\msdos\doscfg.h"\ + "..\..\novell\nlmcfg.h"\ + "..\..\os2\os2cfg.h"\ + "..\..\os2\os2data.h"\ + "..\..\qdos\izqdos.h"\ + "..\..\tandem.h"\ + "..\..\theos\thscfg.h"\ + "..\..\unix\unxcfg.h"\ + "..\..\vmmvs.h"\ + "..\..\win32\w32cfg.h"\ + "..\..\zlib.h"\ + + +!ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Release" + +DEP_CPP_CRCTA=\ + "..\..\globals.h"\ + "..\..\unzip.h"\ + "..\..\unzpriv.h"\ + "..\..\unzvers.h"\ + "..\..\windll\structs.h"\ + "..\..\zip.h"\ + "..\punzip.h"\ + "..\punzip.rcv"\ + "..\wcecfg.h"\ + "..\wince.h"\ + +NODEP_CPP_CRCTA=\ + "..\..\acorn\riscos.h"\ + "..\..\amiga\amiga.h"\ + "..\..\aosvs\aosvs.h"\ + "..\..\flexos\flxcfg.h"\ + "..\..\maccfg.h"\ + "..\..\msdos\doscfg.h"\ + "..\..\novell\nlmcfg.h"\ + "..\..\os2\os2cfg.h"\ + "..\..\os2\os2data.h"\ + "..\..\qdos\izqdos.h"\ + "..\..\tandem.h"\ + "..\..\theos\thscfg.h"\ + "..\..\unix\unxcfg.h"\ + "..\..\vmmvs.h"\ + "..\..\win32\w32cfg.h"\ + "..\..\zlib.h"\ + + +!ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Debug" + +DEP_CPP_CRCTA=\ + "..\..\globals.h"\ + "..\..\unzip.h"\ + "..\..\unzpriv.h"\ + "..\..\unzvers.h"\ + "..\..\windll\structs.h"\ + "..\..\zip.h"\ + "..\punzip.h"\ + "..\punzip.rcv"\ + "..\wcecfg.h"\ + "..\wince.h"\ + +NODEP_CPP_CRCTA=\ + "..\..\acorn\riscos.h"\ + "..\..\amiga\amiga.h"\ + "..\..\aosvs\aosvs.h"\ + "..\..\flexos\flxcfg.h"\ + "..\..\maccfg.h"\ + "..\..\msdos\doscfg.h"\ + "..\..\novell\nlmcfg.h"\ + "..\..\os2\os2cfg.h"\ + "..\..\os2\os2data.h"\ + "..\..\qdos\izqdos.h"\ + "..\..\tandem.h"\ + "..\..\theos\thscfg.h"\ + "..\..\unix\unxcfg.h"\ + "..\..\vmmvs.h"\ + "..\..\win32\w32cfg.h"\ + "..\..\zlib.h"\ + + +!ENDIF + # End Source File # Begin Source File @@ -687,7 +882,6 @@ !IF "$(CFG)" == "punzip - Win32 (WCE x86em) Release" DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\ttyio.h"\ @@ -708,7 +902,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -723,7 +917,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Debug" DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\ttyio.h"\ @@ -744,7 +937,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -759,7 +952,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\ttyio.h"\ @@ -780,7 +972,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -795,7 +987,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\ttyio.h"\ @@ -816,7 +1007,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -831,7 +1022,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Release" DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\ttyio.h"\ @@ -852,7 +1042,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -867,7 +1057,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Debug" DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\ttyio.h"\ @@ -888,7 +1077,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -935,7 +1124,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -967,7 +1156,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -999,7 +1188,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1031,7 +1220,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1063,7 +1252,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1095,7 +1284,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1117,7 +1306,6 @@ !IF "$(CFG)" == "punzip - Win32 (WCE x86em) Release" DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ @@ -1139,7 +1327,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1154,7 +1342,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Debug" DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ @@ -1176,7 +1363,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1191,7 +1378,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ @@ -1213,7 +1399,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1228,7 +1414,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ @@ -1250,7 +1435,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1265,7 +1450,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Release" DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ @@ -1287,7 +1471,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1302,7 +1486,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Debug" DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ @@ -1324,7 +1507,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1346,7 +1529,6 @@ !IF "$(CFG)" == "punzip - Win32 (WCE x86em) Release" DEP_CPP_FILEI=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\ebcdic.h"\ "..\..\globals.h"\ @@ -1370,7 +1552,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1386,7 +1568,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Debug" DEP_CPP_FILEI=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\ebcdic.h"\ "..\..\globals.h"\ @@ -1410,7 +1591,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1426,7 +1607,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" DEP_CPP_FILEI=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\ebcdic.h"\ "..\..\globals.h"\ @@ -1450,7 +1630,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1466,7 +1646,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" DEP_CPP_FILEI=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\ebcdic.h"\ "..\..\globals.h"\ @@ -1490,7 +1669,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1506,7 +1685,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Release" DEP_CPP_FILEI=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\ebcdic.h"\ "..\..\globals.h"\ @@ -1530,7 +1708,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1546,7 +1724,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Debug" DEP_CPP_FILEI=\ - "..\..\crc32.h"\ "..\..\crypt.h"\ "..\..\ebcdic.h"\ "..\..\globals.h"\ @@ -1570,7 +1747,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1610,7 +1787,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1642,7 +1819,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1674,7 +1851,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1706,7 +1883,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1738,7 +1915,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1770,7 +1947,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1815,7 +1992,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1849,7 +2026,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1883,7 +2060,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1917,7 +2094,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1951,7 +2128,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1985,7 +2162,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2031,7 +2208,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2066,7 +2243,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2101,7 +2278,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2136,7 +2313,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2171,7 +2348,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2206,7 +2383,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2228,7 +2405,6 @@ !IF "$(CFG)" == "punzip - Win32 (WCE x86em) Release" DEP_CPP_PROCE=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -2249,7 +2425,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2264,7 +2440,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Debug" DEP_CPP_PROCE=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -2285,7 +2460,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2300,7 +2475,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" DEP_CPP_PROCE=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -2321,7 +2495,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2336,7 +2510,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" DEP_CPP_PROCE=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -2357,7 +2530,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2372,7 +2545,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Release" DEP_CPP_PROCE=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -2393,7 +2565,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2408,7 +2580,6 @@ !ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Debug" DEP_CPP_PROCE=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -2429,7 +2600,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2471,7 +2642,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2506,7 +2677,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2541,7 +2712,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2576,7 +2747,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2611,7 +2782,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2646,7 +2817,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2667,223 +2838,6 @@ # End Source File # Begin Source File -SOURCE=..\..\ubz2err.c - -!IF "$(CFG)" == "punzip - Win32 (WCE x86em) Release" - -DEP_CPP_UBZ2ERR_=\ - "..\..\globals.h"\ - "..\..\unzip.h"\ - "..\..\unzpriv.h"\ - "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ - "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ - "..\punzip.h"\ - "..\punzip.rcv"\ - "..\wcecfg.h"\ - "..\wince.h"\ - -NODEP_CPP_UBZ2ERR_=\ - "..\..\acorn\riscos.h"\ - "..\..\amiga\amiga.h"\ - "..\..\aosvs\aosvs.h"\ - "..\..\flexos\flxcfg.h"\ - "..\..\maccfg.h"\ - "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ - "..\..\os2\os2cfg.h"\ - "..\..\os2\os2data.h"\ - "..\..\qdos\izqdos.h"\ - "..\..\tandem.h"\ - "..\..\theos\thscfg.h"\ - "..\..\unix\unxcfg.h"\ - "..\..\vmmvs.h"\ - "..\..\win32\w32cfg.h"\ - "..\..\zlib.h"\ - - -!ELSEIF "$(CFG)" == "punzip - Win32 (WCE x86em) Debug" - -DEP_CPP_UBZ2ERR_=\ - "..\..\globals.h"\ - "..\..\unzip.h"\ - "..\..\unzpriv.h"\ - "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ - "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ - "..\punzip.h"\ - "..\punzip.rcv"\ - "..\wcecfg.h"\ - "..\wince.h"\ - -NODEP_CPP_UBZ2ERR_=\ - "..\..\acorn\riscos.h"\ - "..\..\amiga\amiga.h"\ - "..\..\aosvs\aosvs.h"\ - "..\..\flexos\flxcfg.h"\ - "..\..\maccfg.h"\ - "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ - "..\..\os2\os2cfg.h"\ - "..\..\os2\os2data.h"\ - "..\..\qdos\izqdos.h"\ - "..\..\tandem.h"\ - "..\..\theos\thscfg.h"\ - "..\..\unix\unxcfg.h"\ - "..\..\vmmvs.h"\ - "..\..\win32\w32cfg.h"\ - "..\..\zlib.h"\ - - -!ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Release" - -DEP_CPP_UBZ2ERR_=\ - "..\..\globals.h"\ - "..\..\unzip.h"\ - "..\..\unzpriv.h"\ - "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ - "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ - "..\punzip.h"\ - "..\punzip.rcv"\ - "..\wcecfg.h"\ - "..\wince.h"\ - -NODEP_CPP_UBZ2ERR_=\ - "..\..\acorn\riscos.h"\ - "..\..\amiga\amiga.h"\ - "..\..\aosvs\aosvs.h"\ - "..\..\flexos\flxcfg.h"\ - "..\..\maccfg.h"\ - "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ - "..\..\os2\os2cfg.h"\ - "..\..\os2\os2data.h"\ - "..\..\qdos\izqdos.h"\ - "..\..\tandem.h"\ - "..\..\theos\thscfg.h"\ - "..\..\unix\unxcfg.h"\ - "..\..\vmmvs.h"\ - "..\..\win32\w32cfg.h"\ - "..\..\zlib.h"\ - - -!ELSEIF "$(CFG)" == "punzip - Win32 (WCE MIPS) Debug" - -DEP_CPP_UBZ2ERR_=\ - "..\..\globals.h"\ - "..\..\unzip.h"\ - "..\..\unzpriv.h"\ - "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ - "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ - "..\punzip.h"\ - "..\punzip.rcv"\ - "..\wcecfg.h"\ - "..\wince.h"\ - -NODEP_CPP_UBZ2ERR_=\ - "..\..\acorn\riscos.h"\ - "..\..\amiga\amiga.h"\ - "..\..\aosvs\aosvs.h"\ - "..\..\flexos\flxcfg.h"\ - "..\..\maccfg.h"\ - "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ - "..\..\os2\os2cfg.h"\ - "..\..\os2\os2data.h"\ - "..\..\qdos\izqdos.h"\ - "..\..\tandem.h"\ - "..\..\theos\thscfg.h"\ - "..\..\unix\unxcfg.h"\ - "..\..\vmmvs.h"\ - "..\..\win32\w32cfg.h"\ - "..\..\zlib.h"\ - - -!ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Release" - -DEP_CPP_UBZ2ERR_=\ - "..\..\globals.h"\ - "..\..\unzip.h"\ - "..\..\unzpriv.h"\ - "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ - "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ - "..\punzip.h"\ - "..\punzip.rcv"\ - "..\wcecfg.h"\ - "..\wince.h"\ - -NODEP_CPP_UBZ2ERR_=\ - "..\..\acorn\riscos.h"\ - "..\..\amiga\amiga.h"\ - "..\..\aosvs\aosvs.h"\ - "..\..\flexos\flxcfg.h"\ - "..\..\maccfg.h"\ - "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ - "..\..\os2\os2cfg.h"\ - "..\..\os2\os2data.h"\ - "..\..\qdos\izqdos.h"\ - "..\..\tandem.h"\ - "..\..\theos\thscfg.h"\ - "..\..\unix\unxcfg.h"\ - "..\..\vmmvs.h"\ - "..\..\win32\w32cfg.h"\ - "..\..\zlib.h"\ - - -!ELSEIF "$(CFG)" == "punzip - Win32 (WCE SH3) Debug" - -DEP_CPP_UBZ2ERR_=\ - "..\..\globals.h"\ - "..\..\unzip.h"\ - "..\..\unzpriv.h"\ - "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ - "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ - "..\punzip.h"\ - "..\punzip.rcv"\ - "..\wcecfg.h"\ - "..\wince.h"\ - -NODEP_CPP_UBZ2ERR_=\ - "..\..\acorn\riscos.h"\ - "..\..\amiga\amiga.h"\ - "..\..\aosvs\aosvs.h"\ - "..\..\flexos\flxcfg.h"\ - "..\..\maccfg.h"\ - "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ - "..\..\os2\os2cfg.h"\ - "..\..\os2\os2data.h"\ - "..\..\qdos\izqdos.h"\ - "..\..\tandem.h"\ - "..\..\theos\thscfg.h"\ - "..\..\unix\unxcfg.h"\ - "..\..\vmmvs.h"\ - "..\..\win32\w32cfg.h"\ - "..\..\zlib.h"\ - - -!ENDIF - -# End Source File -# Begin Source File - SOURCE=..\..\unreduce.c !IF "$(CFG)" == "punzip - Win32 (WCE x86em) Release" @@ -2906,7 +2860,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2938,7 +2892,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2970,7 +2924,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3002,7 +2956,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3034,7 +2988,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3066,7 +3020,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3105,7 +3059,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3137,7 +3091,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3169,7 +3123,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3201,7 +3155,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3233,7 +3187,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3265,7 +3219,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3327,7 +3281,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3362,7 +3316,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3397,7 +3351,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3432,7 +3386,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3467,7 +3421,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3502,7 +3456,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3581,7 +3535,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3614,7 +3568,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3647,7 +3601,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3680,7 +3634,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3713,7 +3667,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3746,7 +3700,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3793,7 +3747,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3829,7 +3783,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3865,7 +3819,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3901,7 +3855,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3937,7 +3891,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3973,7 +3927,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ diff -Nru unzip-6.0/wince/vcEMbed3/unzipcmd.vcp unzip-6.0/wince/vcEMbed3/unzipcmd.vcp --- unzip-6.0/wince/vcEMbed3/unzipcmd.vcp 2007-03-31 18:25:16.000000000 +0000 +++ unzip-6.0/wince/vcEMbed3/unzipcmd.vcp 2010-05-14 07:26:14.000000000 +0000 @@ -390,7 +390,6 @@ !IF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Release" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -409,7 +408,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -424,7 +423,6 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Debug" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -443,7 +441,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -458,7 +456,6 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Release" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -477,7 +474,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -492,7 +489,6 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Debug" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -511,7 +507,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -526,7 +522,6 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Release" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -545,7 +540,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -560,7 +555,6 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Debug" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -579,7 +573,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -594,7 +588,6 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Release" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -613,7 +606,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -628,7 +621,6 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Debug" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -647,7 +639,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -662,7 +654,6 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Release" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -681,7 +672,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -696,7 +687,6 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Debug" DEP_CPP_CRC32=\ - "..\..\crc32.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ @@ -715,7 +705,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -732,15 +722,12 @@ # End Source File # Begin Source File -SOURCE=..\..\crypt.c +SOURCE=..\..\crctab.c !IF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Release" -DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_CRCTA=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -751,14 +738,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_CRYPT=\ +NODEP_CPP_CRCTA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -772,11 +759,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Debug" -DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_CRCTA=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -787,14 +771,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_CRYPT=\ +NODEP_CPP_CRCTA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -808,11 +792,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Release" -DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_CRCTA=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -823,14 +804,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_CRYPT=\ +NODEP_CPP_CRCTA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -844,11 +825,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Debug" -DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_CRCTA=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -859,14 +837,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_CRYPT=\ +NODEP_CPP_CRCTA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -880,11 +858,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Release" -DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_CRCTA=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -895,14 +870,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_CRYPT=\ +NODEP_CPP_CRCTA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -916,11 +891,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Debug" -DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_CRCTA=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -931,14 +903,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_CRYPT=\ +NODEP_CPP_CRCTA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -952,11 +924,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Release" -DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_CRCTA=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -967,14 +936,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_CRYPT=\ +NODEP_CPP_CRCTA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -988,11 +957,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Debug" -DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_CRCTA=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -1003,14 +969,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_CRYPT=\ +NODEP_CPP_CRCTA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1024,11 +990,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Release" -DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_CRCTA=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -1039,14 +1002,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_CRYPT=\ +NODEP_CPP_CRCTA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1060,11 +1023,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Debug" -DEP_CPP_CRYPT=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_CRCTA=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -1075,14 +1035,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_CRYPT=\ +NODEP_CPP_CRCTA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1099,29 +1059,32 @@ # End Source File # Begin Source File -SOURCE=..\..\explode.c +SOURCE=..\..\crypt.c !IF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Release" -DEP_CPP_EXPLO=\ +DEP_CPP_CRYPT=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXPLO=\ +NODEP_CPP_CRYPT=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1135,25 +1098,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Debug" -DEP_CPP_EXPLO=\ +DEP_CPP_CRYPT=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXPLO=\ +NODEP_CPP_CRYPT=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1167,25 +1133,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Release" -DEP_CPP_EXPLO=\ +DEP_CPP_CRYPT=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXPLO=\ +NODEP_CPP_CRYPT=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1199,25 +1168,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Debug" -DEP_CPP_EXPLO=\ +DEP_CPP_CRYPT=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXPLO=\ +NODEP_CPP_CRYPT=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1231,25 +1203,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Release" -DEP_CPP_EXPLO=\ +DEP_CPP_CRYPT=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXPLO=\ +NODEP_CPP_CRYPT=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1263,25 +1238,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Debug" -DEP_CPP_EXPLO=\ +DEP_CPP_CRYPT=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXPLO=\ +NODEP_CPP_CRYPT=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1295,25 +1273,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Release" -DEP_CPP_EXPLO=\ +DEP_CPP_CRYPT=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXPLO=\ +NODEP_CPP_CRYPT=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1327,25 +1308,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Debug" -DEP_CPP_EXPLO=\ +DEP_CPP_CRYPT=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXPLO=\ +NODEP_CPP_CRYPT=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1359,25 +1343,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Release" -DEP_CPP_EXPLO=\ +DEP_CPP_CRYPT=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXPLO=\ +NODEP_CPP_CRYPT=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1391,25 +1378,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Debug" -DEP_CPP_EXPLO=\ +DEP_CPP_CRYPT=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXPLO=\ +NODEP_CPP_CRYPT=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1426,34 +1416,29 @@ # End Source File # Begin Source File -SOURCE=..\..\extract.c +SOURCE=..\..\explode.c !IF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Release" -DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_EXPLO=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXTRA=\ +NODEP_CPP_EXPLO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1467,30 +1452,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Debug" -DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_EXPLO=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXTRA=\ +NODEP_CPP_EXPLO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1504,30 +1484,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Release" -DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_EXPLO=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXTRA=\ +NODEP_CPP_EXPLO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1541,30 +1516,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Debug" -DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_EXPLO=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXTRA=\ +NODEP_CPP_EXPLO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1578,30 +1548,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Release" -DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_EXPLO=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXTRA=\ +NODEP_CPP_EXPLO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1615,30 +1580,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Debug" -DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_EXPLO=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXTRA=\ +NODEP_CPP_EXPLO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1652,30 +1612,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Release" -DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_EXPLO=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXTRA=\ +NODEP_CPP_EXPLO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1689,30 +1644,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Debug" -DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_EXPLO=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXTRA=\ +NODEP_CPP_EXPLO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1726,30 +1676,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Release" -DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_EXPLO=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXTRA=\ +NODEP_CPP_EXPLO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1763,30 +1708,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Debug" -DEP_CPP_EXTRA=\ - "..\..\crc32.h"\ - "..\..\crypt.h"\ +DEP_CPP_EXPLO=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_EXTRA=\ +NODEP_CPP_EXPLO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -1803,16 +1743,13 @@ # End Source File # Begin Source File -SOURCE=..\..\fileio.c +SOURCE=..\..\extract.c !IF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Release" -DEP_CPP_FILEI=\ - "..\..\crc32.h"\ +DEP_CPP_EXTRA=\ "..\..\crypt.h"\ - "..\..\ebcdic.h"\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -1825,19 +1762,18 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_FILEI=\ +NODEP_CPP_EXTRA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ - "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -1847,12 +1783,9 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Debug" -DEP_CPP_FILEI=\ - "..\..\crc32.h"\ +DEP_CPP_EXTRA=\ "..\..\crypt.h"\ - "..\..\ebcdic.h"\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -1865,19 +1798,18 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_FILEI=\ +NODEP_CPP_EXTRA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ - "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -1887,12 +1819,9 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Release" -DEP_CPP_FILEI=\ - "..\..\crc32.h"\ +DEP_CPP_EXTRA=\ "..\..\crypt.h"\ - "..\..\ebcdic.h"\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -1905,19 +1834,18 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_FILEI=\ +NODEP_CPP_EXTRA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ - "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -1927,12 +1855,9 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Debug" -DEP_CPP_FILEI=\ - "..\..\crc32.h"\ +DEP_CPP_EXTRA=\ "..\..\crypt.h"\ - "..\..\ebcdic.h"\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -1945,19 +1870,18 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_FILEI=\ +NODEP_CPP_EXTRA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ - "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -1967,12 +1891,9 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Release" -DEP_CPP_FILEI=\ - "..\..\crc32.h"\ +DEP_CPP_EXTRA=\ "..\..\crypt.h"\ - "..\..\ebcdic.h"\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -1985,19 +1906,18 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_FILEI=\ +NODEP_CPP_EXTRA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ - "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -2007,12 +1927,9 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Debug" -DEP_CPP_FILEI=\ - "..\..\crc32.h"\ +DEP_CPP_EXTRA=\ "..\..\crypt.h"\ - "..\..\ebcdic.h"\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -2025,19 +1942,18 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_FILEI=\ +NODEP_CPP_EXTRA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ - "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -2047,12 +1963,9 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Release" -DEP_CPP_FILEI=\ - "..\..\crc32.h"\ +DEP_CPP_EXTRA=\ "..\..\crypt.h"\ - "..\..\ebcdic.h"\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -2065,19 +1978,18 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_FILEI=\ +NODEP_CPP_EXTRA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ - "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -2087,12 +1999,9 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Debug" -DEP_CPP_FILEI=\ - "..\..\crc32.h"\ +DEP_CPP_EXTRA=\ "..\..\crypt.h"\ - "..\..\ebcdic.h"\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -2105,19 +2014,18 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_FILEI=\ +NODEP_CPP_EXTRA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ - "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -2127,12 +2035,9 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Release" -DEP_CPP_FILEI=\ - "..\..\crc32.h"\ +DEP_CPP_EXTRA=\ "..\..\crypt.h"\ - "..\..\ebcdic.h"\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -2145,19 +2050,18 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_FILEI=\ +NODEP_CPP_EXTRA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ - "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -2167,12 +2071,9 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Debug" -DEP_CPP_FILEI=\ - "..\..\crc32.h"\ +DEP_CPP_EXTRA=\ "..\..\crypt.h"\ - "..\..\ebcdic.h"\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -2185,19 +2086,18 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_FILEI=\ +NODEP_CPP_EXTRA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ - "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -2210,33 +2110,40 @@ # End Source File # Begin Source File -SOURCE=..\..\globals.c +SOURCE=..\..\fileio.c !IF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Release" -DEP_CPP_GLOBA=\ +DEP_CPP_FILEI=\ + "..\..\crypt.h"\ + "..\..\ebcdic.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_GLOBA=\ +NODEP_CPP_FILEI=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ + "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -2246,29 +2153,36 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Debug" -DEP_CPP_GLOBA=\ +DEP_CPP_FILEI=\ + "..\..\crypt.h"\ + "..\..\ebcdic.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_GLOBA=\ +NODEP_CPP_FILEI=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ + "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -2278,29 +2192,36 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Release" -DEP_CPP_GLOBA=\ +DEP_CPP_FILEI=\ + "..\..\crypt.h"\ + "..\..\ebcdic.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_GLOBA=\ +NODEP_CPP_FILEI=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ + "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -2310,29 +2231,36 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Debug" -DEP_CPP_GLOBA=\ +DEP_CPP_FILEI=\ + "..\..\crypt.h"\ + "..\..\ebcdic.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_GLOBA=\ +NODEP_CPP_FILEI=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ + "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -2342,29 +2270,36 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Release" -DEP_CPP_GLOBA=\ +DEP_CPP_FILEI=\ + "..\..\crypt.h"\ + "..\..\ebcdic.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_GLOBA=\ +NODEP_CPP_FILEI=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ + "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -2374,29 +2309,36 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Debug" -DEP_CPP_GLOBA=\ +DEP_CPP_FILEI=\ + "..\..\crypt.h"\ + "..\..\ebcdic.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_GLOBA=\ +NODEP_CPP_FILEI=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ + "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -2406,29 +2348,36 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Release" -DEP_CPP_GLOBA=\ +DEP_CPP_FILEI=\ + "..\..\crypt.h"\ + "..\..\ebcdic.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_GLOBA=\ +NODEP_CPP_FILEI=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ + "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -2438,29 +2387,36 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Debug" -DEP_CPP_GLOBA=\ +DEP_CPP_FILEI=\ + "..\..\crypt.h"\ + "..\..\ebcdic.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_GLOBA=\ +NODEP_CPP_FILEI=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ + "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -2470,29 +2426,36 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Release" -DEP_CPP_GLOBA=\ +DEP_CPP_FILEI=\ + "..\..\crypt.h"\ + "..\..\ebcdic.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_GLOBA=\ +NODEP_CPP_FILEI=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ + "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -2502,29 +2465,36 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Debug" -DEP_CPP_GLOBA=\ +DEP_CPP_FILEI=\ + "..\..\crypt.h"\ + "..\..\ebcdic.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_GLOBA=\ +NODEP_CPP_FILEI=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ "..\..\tandem.h"\ + "..\..\theos\charconv.h"\ "..\..\theos\thscfg.h"\ "..\..\unix\unxcfg.h"\ "..\..\vmmvs.h"\ @@ -2537,14 +2507,12 @@ # End Source File # Begin Source File -SOURCE=..\..\inflate.c +SOURCE=..\..\globals.c !IF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Release" -DEP_CPP_INFLA=\ - "..\..\crypt.h"\ +DEP_CPP_GLOBA=\ "..\..\globals.h"\ - "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -2554,14 +2522,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_INFLA=\ +NODEP_CPP_GLOBA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2575,10 +2543,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Debug" -DEP_CPP_INFLA=\ - "..\..\crypt.h"\ +DEP_CPP_GLOBA=\ "..\..\globals.h"\ - "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -2588,14 +2554,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_INFLA=\ +NODEP_CPP_GLOBA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2609,10 +2575,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Release" -DEP_CPP_INFLA=\ - "..\..\crypt.h"\ +DEP_CPP_GLOBA=\ "..\..\globals.h"\ - "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -2622,14 +2586,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_INFLA=\ +NODEP_CPP_GLOBA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2643,10 +2607,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Debug" -DEP_CPP_INFLA=\ - "..\..\crypt.h"\ +DEP_CPP_GLOBA=\ "..\..\globals.h"\ - "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -2656,14 +2618,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_INFLA=\ +NODEP_CPP_GLOBA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2677,10 +2639,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Release" -DEP_CPP_INFLA=\ - "..\..\crypt.h"\ +DEP_CPP_GLOBA=\ "..\..\globals.h"\ - "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -2690,14 +2650,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_INFLA=\ +NODEP_CPP_GLOBA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2711,10 +2671,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Debug" -DEP_CPP_INFLA=\ - "..\..\crypt.h"\ +DEP_CPP_GLOBA=\ "..\..\globals.h"\ - "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -2724,14 +2682,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_INFLA=\ +NODEP_CPP_GLOBA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2745,10 +2703,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Release" -DEP_CPP_INFLA=\ - "..\..\crypt.h"\ +DEP_CPP_GLOBA=\ "..\..\globals.h"\ - "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -2758,14 +2714,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_INFLA=\ +NODEP_CPP_GLOBA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2779,10 +2735,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Debug" -DEP_CPP_INFLA=\ - "..\..\crypt.h"\ +DEP_CPP_GLOBA=\ "..\..\globals.h"\ - "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -2792,14 +2746,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_INFLA=\ +NODEP_CPP_GLOBA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2813,10 +2767,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Release" -DEP_CPP_INFLA=\ - "..\..\crypt.h"\ +DEP_CPP_GLOBA=\ "..\..\globals.h"\ - "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -2826,14 +2778,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_INFLA=\ +NODEP_CPP_GLOBA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2847,10 +2799,8 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Debug" -DEP_CPP_INFLA=\ - "..\..\crypt.h"\ +DEP_CPP_GLOBA=\ "..\..\globals.h"\ - "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ @@ -2860,14 +2810,14 @@ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_INFLA=\ +NODEP_CPP_GLOBA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2884,32 +2834,31 @@ # End Source File # Begin Source File -SOURCE=..\intrface.cpp +SOURCE=..\..\inflate.c !IF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Release" -DEP_CPP_INTRF=\ +DEP_CPP_INFLA=\ "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ - "..\winmain.h"\ -NODEP_CPP_INTRF=\ +NODEP_CPP_INFLA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2923,28 +2872,27 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Debug" -DEP_CPP_INTRF=\ +DEP_CPP_INFLA=\ "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ - "..\winmain.h"\ -NODEP_CPP_INTRF=\ +NODEP_CPP_INFLA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2958,28 +2906,27 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Release" -DEP_CPP_INTRF=\ +DEP_CPP_INFLA=\ "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ - "..\winmain.h"\ -NODEP_CPP_INTRF=\ +NODEP_CPP_INFLA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -2993,28 +2940,27 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Debug" -DEP_CPP_INTRF=\ +DEP_CPP_INFLA=\ "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ - "..\winmain.h"\ -NODEP_CPP_INTRF=\ +NODEP_CPP_INFLA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3028,28 +2974,27 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Release" -DEP_CPP_INTRF=\ +DEP_CPP_INFLA=\ "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ - "..\winmain.h"\ -NODEP_CPP_INTRF=\ +NODEP_CPP_INFLA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3063,28 +3008,27 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Debug" -DEP_CPP_INTRF=\ +DEP_CPP_INFLA=\ "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ - "..\winmain.h"\ -NODEP_CPP_INTRF=\ +NODEP_CPP_INFLA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3098,28 +3042,27 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Release" -DEP_CPP_INTRF=\ +DEP_CPP_INFLA=\ "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ - "..\winmain.h"\ -NODEP_CPP_INTRF=\ +NODEP_CPP_INFLA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3133,28 +3076,27 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Debug" -DEP_CPP_INTRF=\ +DEP_CPP_INFLA=\ "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ - "..\winmain.h"\ -NODEP_CPP_INTRF=\ +NODEP_CPP_INFLA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3168,28 +3110,27 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Release" -DEP_CPP_INTRF=\ +DEP_CPP_INFLA=\ "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ - "..\winmain.h"\ -NODEP_CPP_INTRF=\ +NODEP_CPP_INFLA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3203,28 +3144,27 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Debug" -DEP_CPP_INTRF=\ +DEP_CPP_INFLA=\ "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\inflate.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ "..\..\windll\structs.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ - "..\winmain.h"\ -NODEP_CPP_INTRF=\ +NODEP_CPP_INFLA=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3241,32 +3181,32 @@ # End Source File # Begin Source File -SOURCE=..\..\list.c +SOURCE=..\intrface.cpp !IF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Release" -DEP_CPP_LIST_=\ +DEP_CPP_INTRF=\ + "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ + "..\winmain.h"\ -NODEP_CPP_LIST_=\ +NODEP_CPP_INTRF=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3280,28 +3220,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Debug" -DEP_CPP_LIST_=\ +DEP_CPP_INTRF=\ + "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ + "..\winmain.h"\ -NODEP_CPP_LIST_=\ +NODEP_CPP_INTRF=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3315,28 +3255,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Release" -DEP_CPP_LIST_=\ +DEP_CPP_INTRF=\ + "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ + "..\winmain.h"\ -NODEP_CPP_LIST_=\ +NODEP_CPP_INTRF=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3350,28 +3290,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Debug" -DEP_CPP_LIST_=\ +DEP_CPP_INTRF=\ + "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ + "..\winmain.h"\ -NODEP_CPP_LIST_=\ +NODEP_CPP_INTRF=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3385,28 +3325,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Release" -DEP_CPP_LIST_=\ +DEP_CPP_INTRF=\ + "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ + "..\winmain.h"\ -NODEP_CPP_LIST_=\ +NODEP_CPP_INTRF=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3420,28 +3360,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Debug" -DEP_CPP_LIST_=\ +DEP_CPP_INTRF=\ + "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ + "..\winmain.h"\ -NODEP_CPP_LIST_=\ +NODEP_CPP_INTRF=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3455,28 +3395,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Release" -DEP_CPP_LIST_=\ +DEP_CPP_INTRF=\ + "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ + "..\winmain.h"\ -NODEP_CPP_LIST_=\ +NODEP_CPP_INTRF=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3490,28 +3430,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Debug" -DEP_CPP_LIST_=\ +DEP_CPP_INTRF=\ + "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ + "..\winmain.h"\ -NODEP_CPP_LIST_=\ +NODEP_CPP_INTRF=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3525,28 +3465,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Release" -DEP_CPP_LIST_=\ +DEP_CPP_INTRF=\ + "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ + "..\winmain.h"\ -NODEP_CPP_LIST_=\ +NODEP_CPP_INTRF=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3560,28 +3500,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Debug" -DEP_CPP_LIST_=\ +DEP_CPP_INTRF=\ + "..\..\crypt.h"\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ + "..\winmain.h"\ -NODEP_CPP_LIST_=\ +NODEP_CPP_INTRF=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3598,29 +3538,32 @@ # End Source File # Begin Source File -SOURCE=..\..\match.c +SOURCE=..\..\list.c !IF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Release" -DEP_CPP_MATCH=\ +DEP_CPP_LIST_=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_MATCH=\ +NODEP_CPP_LIST_=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3634,25 +3577,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Debug" -DEP_CPP_MATCH=\ +DEP_CPP_LIST_=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_MATCH=\ +NODEP_CPP_LIST_=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3666,25 +3612,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Release" -DEP_CPP_MATCH=\ +DEP_CPP_LIST_=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_MATCH=\ +NODEP_CPP_LIST_=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3698,25 +3647,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Debug" -DEP_CPP_MATCH=\ +DEP_CPP_LIST_=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_MATCH=\ +NODEP_CPP_LIST_=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3730,25 +3682,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Release" -DEP_CPP_MATCH=\ +DEP_CPP_LIST_=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_MATCH=\ +NODEP_CPP_LIST_=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3762,25 +3717,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Debug" -DEP_CPP_MATCH=\ +DEP_CPP_LIST_=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_MATCH=\ +NODEP_CPP_LIST_=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3794,25 +3752,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Release" -DEP_CPP_MATCH=\ +DEP_CPP_LIST_=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_MATCH=\ +NODEP_CPP_LIST_=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3826,25 +3787,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Debug" -DEP_CPP_MATCH=\ +DEP_CPP_LIST_=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_MATCH=\ +NODEP_CPP_LIST_=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3858,25 +3822,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Release" -DEP_CPP_MATCH=\ +DEP_CPP_LIST_=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_MATCH=\ +NODEP_CPP_LIST_=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3890,25 +3857,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Debug" -DEP_CPP_MATCH=\ +DEP_CPP_LIST_=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_MATCH=\ +NODEP_CPP_LIST_=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3925,33 +3895,29 @@ # End Source File # Begin Source File -SOURCE=..\..\process.c +SOURCE=..\..\match.c !IF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Release" -DEP_CPP_PROCE=\ - "..\..\crc32.h"\ +DEP_CPP_MATCH=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_PROCE=\ +NODEP_CPP_MATCH=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -3965,29 +3931,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Debug" -DEP_CPP_PROCE=\ - "..\..\crc32.h"\ +DEP_CPP_MATCH=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_PROCE=\ +NODEP_CPP_MATCH=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4001,29 +3963,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Release" -DEP_CPP_PROCE=\ - "..\..\crc32.h"\ +DEP_CPP_MATCH=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_PROCE=\ +NODEP_CPP_MATCH=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4037,29 +3995,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Debug" -DEP_CPP_PROCE=\ - "..\..\crc32.h"\ +DEP_CPP_MATCH=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_PROCE=\ +NODEP_CPP_MATCH=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4073,29 +4027,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Release" -DEP_CPP_PROCE=\ - "..\..\crc32.h"\ +DEP_CPP_MATCH=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_PROCE=\ +NODEP_CPP_MATCH=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4109,29 +4059,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Debug" -DEP_CPP_PROCE=\ - "..\..\crc32.h"\ +DEP_CPP_MATCH=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_PROCE=\ +NODEP_CPP_MATCH=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4145,29 +4091,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Release" -DEP_CPP_PROCE=\ - "..\..\crc32.h"\ +DEP_CPP_MATCH=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_PROCE=\ +NODEP_CPP_MATCH=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4181,29 +4123,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Debug" -DEP_CPP_PROCE=\ - "..\..\crc32.h"\ +DEP_CPP_MATCH=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_PROCE=\ +NODEP_CPP_MATCH=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4217,29 +4155,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Release" -DEP_CPP_PROCE=\ - "..\..\crc32.h"\ +DEP_CPP_MATCH=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_PROCE=\ +NODEP_CPP_MATCH=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4253,29 +4187,25 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Debug" -DEP_CPP_PROCE=\ - "..\..\crc32.h"\ +DEP_CPP_MATCH=\ "..\..\globals.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_PROCE=\ +NODEP_CPP_MATCH=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4292,32 +4222,32 @@ # End Source File # Begin Source File -SOURCE=..\..\ttyio.c +SOURCE=..\..\process.c !IF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Release" -DEP_CPP_TTYIO=\ - "..\..\crypt.h"\ +DEP_CPP_PROCE=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\zip.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_TTYIO=\ +NODEP_CPP_PROCE=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4331,28 +4261,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Debug" -DEP_CPP_TTYIO=\ - "..\..\crypt.h"\ +DEP_CPP_PROCE=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\zip.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_TTYIO=\ +NODEP_CPP_PROCE=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4366,28 +4296,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Release" -DEP_CPP_TTYIO=\ - "..\..\crypt.h"\ +DEP_CPP_PROCE=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\zip.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_TTYIO=\ +NODEP_CPP_PROCE=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4401,28 +4331,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Debug" -DEP_CPP_TTYIO=\ - "..\..\crypt.h"\ +DEP_CPP_PROCE=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\zip.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_TTYIO=\ +NODEP_CPP_PROCE=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4436,28 +4366,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Release" -DEP_CPP_TTYIO=\ - "..\..\crypt.h"\ +DEP_CPP_PROCE=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\zip.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_TTYIO=\ +NODEP_CPP_PROCE=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4471,28 +4401,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Debug" -DEP_CPP_TTYIO=\ - "..\..\crypt.h"\ +DEP_CPP_PROCE=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\zip.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_TTYIO=\ +NODEP_CPP_PROCE=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4506,28 +4436,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Release" -DEP_CPP_TTYIO=\ - "..\..\crypt.h"\ +DEP_CPP_PROCE=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\zip.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_TTYIO=\ +NODEP_CPP_PROCE=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4541,28 +4471,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Debug" -DEP_CPP_TTYIO=\ - "..\..\crypt.h"\ +DEP_CPP_PROCE=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\zip.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_TTYIO=\ +NODEP_CPP_PROCE=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4576,28 +4506,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Release" -DEP_CPP_TTYIO=\ - "..\..\crypt.h"\ +DEP_CPP_PROCE=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\zip.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_TTYIO=\ +NODEP_CPP_PROCE=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4611,28 +4541,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Debug" -DEP_CPP_TTYIO=\ - "..\..\crypt.h"\ +DEP_CPP_PROCE=\ "..\..\globals.h"\ - "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ + "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\zip.h"\ + "..\..\windll\windll.h"\ + "..\intrface.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_TTYIO=\ +NODEP_CPP_PROCE=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4649,32 +4579,32 @@ # End Source File # Begin Source File -SOURCE=..\..\ubz2err.c +SOURCE=..\..\ttyio.c !IF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Release" -DEP_CPP_UBZ2ERR_=\ +DEP_CPP_TTYIO=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_UBZ2ERR_=\ +NODEP_CPP_TTYIO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4688,28 +4618,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE x86em) Debug" -DEP_CPP_UBZ2ERR_=\ +DEP_CPP_TTYIO=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_UBZ2ERR_=\ +NODEP_CPP_TTYIO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4723,28 +4653,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Release" -DEP_CPP_UBZ2ERR_=\ +DEP_CPP_TTYIO=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_UBZ2ERR_=\ +NODEP_CPP_TTYIO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4758,28 +4688,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE MIPS) Debug" -DEP_CPP_UBZ2ERR_=\ +DEP_CPP_TTYIO=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_UBZ2ERR_=\ +NODEP_CPP_TTYIO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4793,28 +4723,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Release" -DEP_CPP_UBZ2ERR_=\ +DEP_CPP_TTYIO=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_UBZ2ERR_=\ +NODEP_CPP_TTYIO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4828,28 +4758,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH4) Debug" -DEP_CPP_UBZ2ERR_=\ +DEP_CPP_TTYIO=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_UBZ2ERR_=\ +NODEP_CPP_TTYIO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4863,28 +4793,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Release" -DEP_CPP_UBZ2ERR_=\ +DEP_CPP_TTYIO=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_UBZ2ERR_=\ +NODEP_CPP_TTYIO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4898,28 +4828,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE SH3) Debug" -DEP_CPP_UBZ2ERR_=\ +DEP_CPP_TTYIO=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_UBZ2ERR_=\ +NODEP_CPP_TTYIO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4933,28 +4863,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Release" -DEP_CPP_UBZ2ERR_=\ +DEP_CPP_TTYIO=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_UBZ2ERR_=\ +NODEP_CPP_TTYIO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -4968,28 +4898,28 @@ !ELSEIF "$(CFG)" == "unzipcmd - Win32 (WCE ARM) Debug" -DEP_CPP_UBZ2ERR_=\ +DEP_CPP_TTYIO=\ + "..\..\crypt.h"\ "..\..\globals.h"\ + "..\..\ttyio.h"\ "..\..\unzip.h"\ "..\..\unzpriv.h"\ "..\..\unzvers.h"\ - "..\..\windll\decs.h"\ "..\..\windll\structs.h"\ - "..\..\windll\windll.h"\ - "..\intrface.h"\ + "..\..\zip.h"\ "..\punzip.h"\ "..\punzip.rcv"\ "..\wcecfg.h"\ "..\wince.h"\ -NODEP_CPP_UBZ2ERR_=\ +NODEP_CPP_TTYIO=\ "..\..\acorn\riscos.h"\ "..\..\amiga\amiga.h"\ "..\..\aosvs\aosvs.h"\ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5028,7 +4958,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5060,7 +4990,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5092,7 +5022,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5124,7 +5054,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5156,7 +5086,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5188,7 +5118,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5220,7 +5150,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5252,7 +5182,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5284,7 +5214,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5316,7 +5246,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5355,7 +5285,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5387,7 +5317,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5419,7 +5349,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5451,7 +5381,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5483,7 +5413,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5515,7 +5445,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5547,7 +5477,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5579,7 +5509,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5611,7 +5541,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5643,7 +5573,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5684,7 +5614,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5718,7 +5648,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5752,7 +5682,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5786,7 +5716,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5820,7 +5750,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5854,7 +5784,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5888,7 +5818,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5922,7 +5852,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5956,7 +5886,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -5990,7 +5920,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6029,7 +5959,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6061,7 +5991,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6093,7 +6023,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6125,7 +6055,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6157,7 +6087,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6189,7 +6119,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6221,7 +6151,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6253,7 +6183,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6285,7 +6215,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6317,7 +6247,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6357,7 +6287,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6390,7 +6320,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6423,7 +6353,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6456,7 +6386,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6489,7 +6419,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6522,7 +6452,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6555,7 +6485,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6588,7 +6518,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6621,7 +6551,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6654,7 +6584,7 @@ "..\..\flexos\flxcfg.h"\ "..\..\maccfg.h"\ "..\..\msdos\doscfg.h"\ - "..\..\netware\nlmcfg.h"\ + "..\..\novell\nlmcfg.h"\ "..\..\os2\os2cfg.h"\ "..\..\os2\os2data.h"\ "..\..\qdos\izqdos.h"\ @@ -6679,10 +6609,6 @@ # End Source File # Begin Source File -SOURCE=..\..\crc32.h -# End Source File -# Begin Source File - SOURCE=..\..\crypt.h # End Source File # Begin Source File @@ -6699,6 +6625,10 @@ # End Source File # Begin Source File +SOURCE=..\..\tables.h +# End Source File +# Begin Source File + SOURCE=..\..\ttyio.h # End Source File # Begin Source File diff -Nru unzip-6.0/wince/wcecfg.h unzip-6.0/wince/wcecfg.h --- unzip-6.0/wince/wcecfg.h 2009-01-29 23:02:40.000000000 +0000 +++ unzip-6.0/wince/wcecfg.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2004 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -70,26 +70,6 @@ #undef NTSD_EAS #endif -#ifdef _WIN32_WCE -// Windows CE does not provide the rename() function needed for UNIXBACKUP -# ifndef NO_UNIXBACKUP -# define NO_UNIXBACKUP -# endif -# ifdef UNIXBACKUP -# undef UNIXBACKUP -# endif -#endif - -#if (!defined(NO_UNICODE_SUPPORT) && !defined(UNICODE_SUPPORT)) -#define UNICODE_SUPPORT -#endif -#if (defined(UNICODE_SUPPORT) && !defined(UNICODE_WCHAR)) -#define UNICODE_WCHAR /* wchar_t is UTF-16 encoded on WinCE */ -#endif -#ifdef UTF8_MAYBE_NATIVE -#undef UTF8_MAYBE_NATIVE /* UTF-8 cannot be system charset on WinCE */ -#endif - #ifdef POCKET_UNZIP // The PUnZip GUI interface does not make use of ZipInfo style archive // listings. @@ -154,7 +134,6 @@ #if (defined(_MBCS) && !defined(_WIN32_WCE)) /* MSC-specific version, _mbsinc() may not be available for other systems */ -# define CLEN(ptr) _mbclen((const UCHAR *)(ptr)) # define PREINCSTR(ptr) (ptr = (char *)_mbsinc((const UCHAR *)(ptr))) # define MBSCHR(str, c) (char *)_mbschr((const UCHAR *)(str), (c)) # define MBSRCHR(str, c) (char *)_mbsrchr((const UCHAR *)(str), (c)) @@ -229,7 +208,6 @@ #endif /* ?POCKET_UNZIP */ - //****************************************************************************** //***** Global headers //****************************************************************************** @@ -253,71 +231,4 @@ #include "wince/punzip.rcv" // Our version information. #endif - -#ifndef _WIN32_WCE /* native Windows CE does not support 64-bit filesizes */ - -/* 64-bit-Integers & Large File Support - * - * If this is set it is assumed that the port - * supports 64-bit file calls. The types are - * defined here. Any local implementations are - * in w32i64.c and the protypes for the calls are - * in unzip.h. Note that a port must support - * these calls fully or should not set - * LARGE_FILE_SUPPORT. - */ - -/* Automatically set ZIP64_SUPPORT if supported */ - -#ifndef NO_ZIP64_SUPPORT -# ifndef ZIP64_SUPPORT -# if defined(_MSC_VER) -# define ZIP64_SUPPORT -# endif -# endif -#endif - -#ifdef ZIP64_SUPPORT - /* base type for file offsets and file sizes */ -# if (defined(__GNUC__) || defined(ULONG_LONG_MAX)) - typedef long long zoff_t; -# else - /* all other compilers use this as intrinsic 64-bit type */ - typedef __int64 zoff_t; -# endif -# define ZOFF_T_DEFINED - - /* user-defined types and format strings for 64-bit numbers and - * file pointer functions (these depend on the rtl library and library - * headers used; they are NOT compiler-specific) - */ -# if defined(_MSC_VER) - /* MS C and VC */ - /* these systems use the Microsoft C RTL */ - - /* 64-bit stat struct */ - typedef struct _stati64 z_stat; -# define Z_STAT_DEFINED - - /* printf format size prefix for zoff_t values */ -# define FZOFFT_FMT "I64" -# define FZOFFT_HEX_WID_VALUE "16" - -# endif - -#endif - -/* If port has LARGE_FILE_SUPPORT then define here - to make automatic unless overridden */ - -#ifndef LARGE_FILE_SUPPORT -# ifndef NO_LARGE_FILE_SUPPORT -# if defined(_MSC_VER) -# define LARGE_FILE_SUPPORT -# endif -# endif -#endif - -#endif /* !_WIN32_WCE */ - #endif /* !__w32cfg_h */ diff -Nru unzip-6.0/wince/wcemain.c unzip-6.0/wince/wcemain.c --- unzip-6.0/wince/wcemain.c 2009-01-29 23:01:42.000000000 +0000 +++ unzip-6.0/wince/wcemain.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2002 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -50,22 +50,29 @@ */ while(argPtr != NULL) { - /* Look for the first non-blank character */ - while((memcmp(argPtr, &Blank, sizeof(TCHAR)) == 0) && + /* Look for the first non blank character */ + while((memcmp(argPtr,&Blank,sizeof(TCHAR)) == 0) && (argPtr < endOfCmdLine)) { argPtr++; } /* Check for quote enclosed strings for extended file names. */ - if (argPtr[0] == _T('"') && - /* Look for closing quote */ - (closingQuote = _tcschr(argPtr + 1, _T('"'))) != NULL) + if (argPtr[0] == '"') { - /* Clear the enclosing quotes */ - *argPtr++ = _T('\0'); - *closingQuote = _T('\0'); - nextParam = closingQuote + 1; + /* Clear the enclosing quote */ + memset(argPtr,'\0',sizeof(TCHAR)); + + argPtr++; + /* Look for closing quote */ + closingQuote = _tcschr(argPtr + 1,_T('"')); + if (closingQuote != NULL) + { + closingQuote++; + /* Clear the enclosing quote */ + memset(closingQuote,'\0',sizeof(TCHAR)); + nextParam = closingQuote++; + } } else { @@ -77,12 +84,13 @@ argc++; /* Look for the next blank */ - argPtr = _tcschr(nextParam, _T(' ')); + argPtr = _tcschr(nextParam,_T(' ')); if (argPtr != NULL) { - /* Terminate the parameter and - point after the blank to the keyword */ - *argPtr++ = _T('\0'); + /* Terminate the perameter. */ + memset(argPtr,'\0',sizeof(TCHAR)); + /* Point after the blank to the keyword */ + argPtr++; } } /* Add one to the arg count for null terminator. */ diff -Nru unzip-6.0/wince/wince.cpp unzip-6.0/wince/wince.cpp --- unzip-6.0/wince/wince.cpp 2005-05-19 20:31:08.000000000 +0000 +++ unzip-6.0/wince/wince.cpp 2010-05-14 07:26:14.000000000 +0000 @@ -49,6 +49,7 @@ // _stricmp // _strupr // strrchr (non-_MBCS only) +// localtime // isupper // stat // localtime diff -Nru unzip-6.0/wince/wince.h unzip-6.0/wince/wince.h --- unzip-6.0/wince/wince.h 2009-01-29 23:02:16.000000000 +0000 +++ unzip-6.0/wince/wince.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2003 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -134,9 +134,7 @@ _CRTIMP int __cdecl tolower(int); // This is a coarse approximation to ASCII isalpha(), it returns TRUE not only // on all ASCII letters but also on punctuation chars in the range of 0x40-0x7F -#ifndef isalpha #define isalpha(c) (((c) & 0xC0) == 0xC0) -#endif //****************************************************************************** //***** FCNTL.H functions diff -Nru unzip-6.0/wince/winmain.cpp unzip-6.0/wince/winmain.cpp --- unzip-6.0/wince/winmain.cpp 2005-05-18 09:10:06.000000000 +0000 +++ unzip-6.0/wince/winmain.cpp 2010-05-14 07:26:14.000000000 +0000 @@ -216,7 +216,7 @@ void CheckAllMenuItems(UINT uMenuItem, BOOL fChecked); void CenterWindow(HWND hWnd); void AddTextToEdit(LPCSTR szText); -LPTSTR FormatValue(LPTSTR szValue, zusz_t uzValue); +LPTSTR FormatValue(LPTSTR szValue, DWORD dwValue); LPTSTR BuildAttributesString(LPTSTR szBuffer, DWORD dwAttributes); LPCSTR BuildTypeString(FILE_NODE *pFile, LPSTR szType); LPCSTR GetFileFromPath(LPCSTR szPath); @@ -1145,7 +1145,7 @@ ZeroMemory(&ei, sizeof(ei)); ei.fExtract = TRUE; ei.dwFileCount = 1; - ei.uzByteCount = pfn->uzSize; + ei.dwByteCount = pfn->dwSize; ei.szFileList = argv; ei.fRestorePaths = FALSE; ei.overwriteMode = OM_PROMPT; @@ -1339,7 +1339,7 @@ return; case 1: // Size - FormatValue(plvdi->item.pszText, pFile->uzSize); + FormatValue(plvdi->item.pszText, pFile->dwSize); return; case 2: // Type @@ -1363,11 +1363,11 @@ return; case 5: // Compressed - FormatValue(plvdi->item.pszText, pFile->uzCompressedSize); + FormatValue(plvdi->item.pszText, pFile->dwCompressedSize); return; case 6: // Ratio - int factor; factor = ratio(pFile->uzSize, pFile->uzCompressedSize); + int factor; factor = ratio(pFile->dwSize, pFile->dwCompressedSize); _stprintf(plvdi->item.pszText, TEXT("%d.%d%%"), factor / 10, ((factor < 0) ? -factor : factor) % 10); return; @@ -1464,8 +1464,8 @@ switch (sortColumn) { case 1: // Size - Smallest to Largest - if (pFile1->uzSize != pFile2->uzSize) { - result = ((pFile1->uzSize < pFile2->uzSize) ? -1 : 1); + if (pFile1->dwSize != pFile2->dwSize) { + result = ((pFile1->dwSize < pFile2->dwSize) ? -1 : 1); } break; @@ -1497,15 +1497,15 @@ break; case 5: // Compressed Size - Smallest to Largest - if (pFile1->uzCompressedSize != pFile2->uzCompressedSize) { - result = ((pFile1->uzCompressedSize < pFile2->uzCompressedSize) ? -1 : 1); + if (pFile1->dwCompressedSize != pFile2->dwCompressedSize) { + result = ((pFile1->dwCompressedSize < pFile2->dwCompressedSize) ? -1 : 1); } break; case 6: // Ratio - Smallest to Largest int factor1, factor2; - factor1 = ratio(pFile1->uzSize, pFile1->uzCompressedSize); - factor2 = ratio(pFile2->uzSize, pFile2->uzCompressedSize); + factor1 = ratio(pFile1->dwSize, pFile1->dwCompressedSize); + factor2 = ratio(pFile2->dwSize, pFile2->dwCompressedSize); result = factor1 - factor2; break; @@ -1928,37 +1928,16 @@ } //****************************************************************************** -LPTSTR FormatValue(LPTSTR szValue, zusz_t uzValue) { -#ifdef ZIP64_SUPPORT - DWORD dw = 0, dwGroup[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; -#else - DWORD dw = 0, dwGroup[4] = { 0, 0, 0, 0 }; -#endif - while (uzValue) { - dwGroup[dw++] = (DWORD)(uzValue % 1000); - uzValue /= 1000; +LPTSTR FormatValue(LPTSTR szValue, DWORD dwValue) { + DWORD dw = 0, dwGroup[4] = { 0, 0, 0, 0 }; + while (dwValue) { + dwGroup[dw++] = dwValue % 1000; + dwValue /= 1000; } switch (dw) { case 2: _stprintf(szValue, TEXT("%u,%03u"), dwGroup[1], dwGroup[0]); break; case 3: _stprintf(szValue, TEXT("%u,%03u,%03u"), dwGroup[2], dwGroup[1], dwGroup[0]); break; case 4: _stprintf(szValue, TEXT("%u,%03u,%03u,%03u"), dwGroup[3], dwGroup[2], dwGroup[1], dwGroup[0]); break; -#ifdef ZIP64_SUPPORT - case 5: - _stprintf(szValue, TEXT("%u,%03u,%03u,%03u,%03u"), - dwGroup[4], dwGroup[3], dwGroup[2], dwGroup[1], dwGroup[0]); - break; - case 6: - _stprintf(szValue, TEXT("%u,%03u,%03u,%03u,%03u,%03u"), dwGroup[5], - dwGroup[4], dwGroup[3], dwGroup[2], dwGroup[1], dwGroup[0]); - break; - case 7: - _stprintf(szValue, TEXT("%u,%03u,%03u,%03u,%03u,%03u,%03u"), dwGroup[6], dwGroup[5], - dwGroup[4], dwGroup[3], dwGroup[2], dwGroup[1], dwGroup[0]); - break; - case 8: - _stprintf(szValue, TEXT("%u,%03u,%03u,%03u,%03u,%03u,%03u,%03u"), dwGroup[7], dwGroup[6], dwGroup[5], - dwGroup[4], dwGroup[3], dwGroup[2], dwGroup[1], dwGroup[0]); -#endif default: _stprintf(szValue, TEXT("%u"), dwGroup[0]); } return szValue; @@ -2640,7 +2619,7 @@ int directory = -1, readOnly = -1, archive = -1, hidden = -1; int system = -1, encrypted = -1; int year = -1, month = -1, day = -1, hour = -1, minute = -1, pm = -1; - zusz_t uzSize = 0, uzCompressedSize = 0; + DWORD dwSize = 0, dwCompressedSize = 0; LPCSTR szPath = NULL, szMethod = NULL, szComment = NULL; DWORD dwCRC = 0, dwCount = 0, dwCommentCount = 0; TCHAR szBuffer[MAX_PATH]; @@ -2680,8 +2659,8 @@ dwCRC = pFile->dwCRC; // Add the size and compressed size to our accumulative sizes. - uzSize += pFile->uzSize; - uzCompressedSize += pFile->uzCompressedSize; + dwSize += pFile->dwSize; + dwCompressedSize += pFile->dwCompressedSize; // Merge in our compression method. LPCSTR szCurMethod = pFile->szPathAndMethod + strlen(pFile->szPathAndMethod) + 1; @@ -2724,17 +2703,17 @@ } // Set the Size tally text. - FormatValue(szBuffer, uzSize); + FormatValue(szBuffer, dwSize); _tcscat(szBuffer, (dwCount > 1) ? TEXT(" bytes total") : TEXT(" bytes")); SetDlgItemText(hDlg, IDC_FILE_SIZE, szBuffer); // Set the Compressed Size tally text. - FormatValue(szBuffer, uzCompressedSize); + FormatValue(szBuffer, dwCompressedSize); _tcscat(szBuffer, (dwCount > 1) ? TEXT(" bytes total") : TEXT(" bytes")); SetDlgItemText(hDlg, IDC_COMPRESSED_SIZE, szBuffer); // Set the Compression Factor text. - int factor = ratio(uzSize, uzCompressedSize); + int factor = ratio(dwSize, dwCompressedSize); _stprintf(szBuffer, TEXT("%d.%d%%"), factor / 10, ((factor < 0) ? -factor : factor) % 10); SetDlgItemText(hDlg, IDC_COMPRESSON_FACTOR, szBuffer); @@ -2880,7 +2859,7 @@ } ei.dwFileCount = 0; - ei.uzByteCount = 0; + ei.dwByteCount = 0; LV_ITEM lvi; ZeroMemory(&lvi, sizeof(lvi)); @@ -2895,7 +2874,7 @@ ei.szFileList[ei.dwFileCount] = ((FILE_NODE*)lvi.lParam)->szPathAndMethod; } ei.dwFileCount++; - ei.uzByteCount += ((FILE_NODE*)lvi.lParam)->uzSize; + ei.dwByteCount += ((FILE_NODE*)lvi.lParam)->dwSize; } if (ei.szFileList) { ei.szFileList[ei.dwFileCount] = NULL; @@ -2939,7 +2918,7 @@ // Set the state of all the controls. SetDlgItemText(hDlg, IDC_FILE_COUNT, FormatValue(szPath, pei->dwFileCount)); - SetDlgItemText(hDlg, IDC_BYTE_COUNT, FormatValue(szPath, pei->uzByteCount)); + SetDlgItemText(hDlg, IDC_BYTE_COUNT, FormatValue(szPath, pei->dwByteCount)); CheckDlgButton(hDlg, IDC_RESTORE_PATHS, pei->fRestorePaths); CheckDlgButton(hDlg, IDC_OVERWRITE_PROMPT, pei->overwriteMode == OM_PROMPT); CheckDlgButton(hDlg, IDC_OVERWRITE_NEWER, pei->overwriteMode == OM_NEWER); @@ -3304,7 +3283,7 @@ SetDlgItemText(hDlg, IDC_FILES_TOTAL, FormatValue(szBuffer, pei->dwFileCount)); SetDlgItemText(hDlg, IDC_BYTES_TOTAL, - FormatValue(szBuffer, pei->uzByteCount)); + FormatValue(szBuffer, pei->dwByteCount)); // Launch our Extract/Test thread and wait for WM_PRIVATE DoExtractOrTestFiles(g_szZipFile, pei); @@ -3325,7 +3304,7 @@ SetDlgItemText(hDlg, IDC_FILES_PROCESSED, FormatValue(szBuffer, pei->dwFileCount)); SetDlgItemText(hDlg, IDC_BYTES_PROCESSED, - FormatValue(szBuffer, pei->uzByteCount)); + FormatValue(szBuffer, pei->dwByteCount)); } // Update our status text. @@ -3441,10 +3420,10 @@ TCHAR szBuffer[_MAX_PATH + 32]; // Compute our file progress bar position. - if (pei->uzBytesTotalThisFile) { + if (pei->dwBytesTotalThisFile) { dwFile = (DWORD)(((DWORDLONG)PROGRESS_MAX * - (DWORDLONG)pei->uzBytesWrittenThisFile) / - (DWORDLONG)pei->uzBytesTotalThisFile); + (DWORDLONG)pei->dwBytesWrittenThisFile) / + (DWORDLONG)pei->dwBytesTotalThisFile); } else { dwFile = PROGRESS_MAX; } @@ -3459,10 +3438,10 @@ // Compute our total progress bar position. dwTotal = (DWORD)(((DWORDLONG)PROGRESS_MAX * - (DWORDLONG)(pei->uzBytesWrittenPreviousFiles + - pei->uzBytesWrittenThisFile + + (DWORDLONG)(pei->dwBytesWrittenPreviousFiles + + pei->dwBytesWrittenThisFile + pei->dwFile)) / - (DWORDLONG)(pei->uzByteCount + + (DWORDLONG)(pei->dwByteCount + pei->dwFileCount)); dwPercentage = dwTotal / (PROGRESS_MAX / 100); @@ -3476,8 +3455,8 @@ // Set our current file and byte process counts. FormatValue(szBuffer, pei->dwFile - 1); SetWindowText(pei->hWndFilesProcessed, szBuffer); - FormatValue(szBuffer, pei->uzBytesWrittenPreviousFiles + - pei->uzBytesWrittenThisFile); + FormatValue(szBuffer, pei->dwBytesWrittenPreviousFiles + + pei->dwBytesWrittenThisFile); SetWindowText(pei->hWndBytesProcessed, szBuffer); diff -Nru unzip-6.0/wince/winmain.h unzip-6.0/wince/winmain.h --- unzip-6.0/wince/winmain.h 2005-05-18 09:14:04.000000000 +0000 +++ unzip-6.0/wince/winmain.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,5 +1,5 @@ /* - Copyright (c) 1990-2005 Info-ZIP. All rights reserved. + Copyright (c) 1990-2003 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. @@ -114,8 +114,8 @@ } FILE_TYPE_NODE, *LPFILE_TYPE_NODE; typedef struct _FILE_NODE { - zusz_t uzSize; - zusz_t uzCompressedSize; + DWORD dwSize; + DWORD dwCompressedSize; DWORD dwModified; DWORD dwAttributes; DWORD dwCRC; diff -Nru unzip-6.0/windll/Contents unzip-6.0/windll/Contents --- unzip-6.0/windll/Contents 2009-02-16 01:15:16.000000000 +0000 +++ unzip-6.0/windll/Contents 2010-05-14 07:26:14.000000000 +0000 @@ -1,4 +1,4 @@ -Contents of the "windll" subdirectory for UnZip 6.0 and later: +Contents of the "windll" subdirectory for UnZip 5.52 and later: Contents this file decs.h Exported function declarations. @@ -27,12 +27,9 @@ sfxwiz16.mak makefile for 16-bit GUISFX stub (Borland C++ 4.52) unzsfx16.def linker definition file for 16-bit unzipsfx static library - csharp\ example files for using the Visual C++ DLL with C# under the - .NET framework 1.1 vb\ example files for using the Visual C++ DLL with Visual Basic vc5\dll\ directory with DLL project for Visual C++ 5.0 - vc5\exampl\ directory with dll usage example project for Visual C++ 5.0 vc5\lib\ directory with LIB project for Visual C++ 5.0 vc5\sfx\ directory with SFX project files for Visual C++ 5.0 SFXWiz32.dsp MS Visual C++ 5.0 project file for 32-bit GUISFX stub @@ -42,7 +39,6 @@ unzip32.dsw MS Visual C++ 5.0 workspace file for all windll projects vc6\dll\ directory with DLL project for Visual C++ 6.0 - vc6\exampl\ directory with dll usage example project for Visual C++ 6.0 vc6\lib\ directory with LIB project for Visual C++ 6.0 vc6\sfx\ directory with SFX project files for Visual C++ 6.0 SFXWiz32.dsp MS Visual C++ 6.0 project file for 32-bit GUISFX stub @@ -51,37 +47,10 @@ vc6\ unzip32.dsw MS Visual C++ 6.0 workspace file for all windll projects - vc8\dll\ directory with DLL project for Visual C++ 2005 (VC++ 8.0) - vc8\exampl\ directory with dll usage example project for Visual C++ 2005 - vc8\lib\ directory with LIB project for Visual C++ 2005 (VC++ 8.0) - vc8\sfx\ directory with SFX project files for Visual Studio 8 - SFXWiz32.sln MS Visual C++ 2005 solution file for 32-bit GUISFX stub - SFXWiz32.vcproj MS Visual C++ 2005 project file for 32-bit GUISFX stub - unzsfx32.vcproj MS Visual C++ 2005 project for 32-bit sfxunzip static lib - vc8\ - unzip32.sln MS Visual C++ 2005 solution file for all windll projects - - -The source file uzexampl.c contains a short example showing how to call the -Win32 UnZip DLL from C. This code should work with all C compiler environments -that allow to build a >>working<< unzip32.dll binary. This has been verified -with Microsoft Visual C++ (Version 6.0 [1998] and 8.0 [2005]) as well as the -free MinGW GCC compiler implementation. The example code is a simple -console application that calls the UnZip dll to extract files from a Zip -archive. The code assumes that the unzip32.dll binary is available somewhere -on the execution path. - -If you want to build the UnZip DLL, the WinDLL usage example, or the WinGUI SFX -stub from the command line, you may use the MSC Makefile supplied in the -subdirectory of the Win32 command line port. - -In the default setup, the UnZip DLL is linked against the shared C runtime -dll. This configuration is most feasible for multi-module C/C++ based -programs. For usage with non-C projects (e.g. Visual Basic 5/6 or MS .NET -managed code), a statically linked UnZip DLL might be more appropiate. -Both the Visual Studio projects and the MSC Makefile in the win32/ subdir -support statically linked builds through specific configurations (VC projects) -or a configuration switch (for details look into ../win32/Makefile). + +If you want to build the UnZip DLL or the WinGUI SFX stub from the command +line, you may use the MSC Makefile supplied in the subdirectory of the +Win32 command line port. Note that Borland C++ 5.0 is full of bugs; version 4.5 or 5.01 is recommended instead. If you must use Borland C++ 5.0, using the Intel optimizing compiler diff -Nru unzip-6.0/windll/decs.h unzip-6.0/windll/decs.h --- unzip-6.0/windll/decs.h 2007-04-03 00:48:08.000000000 +0000 +++ unzip-6.0/windll/decs.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2007 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2007-Mar-04 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -9,11 +9,6 @@ #ifndef __decs_h /* prevent multiple inclusions */ #define __decs_h -/* for UnZip, the "basic" part of the win32 api is sufficient */ -#ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -# define IZ_HASDEFINED_WIN32LEAN -#endif #include #ifndef __unzip_h # include "../unzip.h" @@ -21,10 +16,6 @@ #ifndef __structs_h # include "../windll/structs.h" #endif -#ifdef IZ_HASDEFINED_WIN32LEAN -# undef WIN32_LEAN_AND_MEAN -# undef IZ_HASDEFINED_WIN32LEAN -#endif #define Wiz_Match match @@ -39,8 +30,6 @@ int WINAPI Wiz_Unzip(zvoid *, int, char **, int, char **); int WINAPI Wiz_SingleEntryUnzip(int, char **, int, char **, LPDCL, LPUSERFUNCTIONS); -int WINAPI Wiz_SingleEntryUnzpList(unsigned, LPCSTR, unsigned, LPCSTR, - LPDCL, LPUSERFUNCTIONS); int WINAPI Wiz_UnzipToMemory(LPSTR zip, LPSTR file, LPUSERFUNCTIONS lpUserFunctions, diff -Nru unzip-6.0/windll/guisfx/sfxwiz16.mak unzip-6.0/windll/guisfx/sfxwiz16.mak --- unzip-6.0/windll/guisfx/sfxwiz16.mak 2005-12-30 00:57:06.000000000 +0000 +++ unzip-6.0/windll/guisfx/sfxwiz16.mak 2010-05-14 07:26:14.000000000 +0000 @@ -72,6 +72,7 @@ Dep_EcbWIZbUNZIPbWINDLLbGUISFXbBINbunzsfx16dlib = \ unzsfx16.def\ + E:\WIZ\UNZIP\WINDLL\GUISFX\OBJ\crctab.obj\ E:\WIZ\UNZIP\WINDLL\GUISFX\OBJ\crypt.obj\ E:\WIZ\UNZIP\WINDLL\GUISFX\OBJ\explode.obj\ E:\WIZ\UNZIP\WINDLL\GUISFX\OBJ\extract.obj\ @@ -87,7 +88,8 @@ E:\WIZ\UNZIP\WINDLL\GUISFX\BIN\unzsfx16.lib : $(Dep_EcbWIZbUNZIPbWINDLLbGUISFXbBINbunzsfx16dlib) $(TLIB) $< $(IDE_BFLAGS) $(BEAT_EcbWIZbUNZIPbWINDLLbGUISFXbBINbunzsfx16dlib) @&&| - -+E:\WIZ\UNZIP\WINDLL\GUISFX\OBJ\crypt.obj & + -+E:\WIZ\UNZIP\WINDLL\GUISFX\OBJ\crctab.obj & +-+E:\WIZ\UNZIP\WINDLL\GUISFX\OBJ\crypt.obj & -+E:\WIZ\UNZIP\WINDLL\GUISFX\OBJ\explode.obj & -+E:\WIZ\UNZIP\WINDLL\GUISFX\OBJ\extract.obj & -+E:\WIZ\UNZIP\WINDLL\GUISFX\OBJ\fileio.obj & @@ -101,6 +103,11 @@ -+E:\WIZ\UNZIP\WINDLL\GUISFX\OBJ\windll.obj | +E:\WIZ\UNZIP\WINDLL\GUISFX\OBJ\crctab.obj : ..\..\crctab.c + $(BCC) -P- -c @&&| + $(CEAT_EcbWIZbUNZIPbWINDLLbGUISFXbBINbunzsfx16dlib) $(CNIEAT_EcbWIZbUNZIPbWINDLLbGUISFXbBINbunzsfx16dlib) -o$@ ..\..\crctab.c +| + E:\WIZ\UNZIP\WINDLL\GUISFX\OBJ\crypt.obj : ..\..\crypt.c $(BCC) -P- -c @&&| $(CEAT_EcbWIZbUNZIPbWINDLLbGUISFXbBINbunzsfx16dlib) $(CNIEAT_EcbWIZbUNZIPbWINDLLbGUISFXbBINbunzsfx16dlib) -o$@ ..\..\crypt.c diff -Nru unzip-6.0/windll/guisfx/sfxwiz.c unzip-6.0/windll/guisfx/sfxwiz.c --- unzip-6.0/windll/guisfx/sfxwiz.c 2009-02-15 18:12:50.000000000 +0000 +++ unzip-6.0/windll/guisfx/sfxwiz.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,23 +1,11 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2000 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html */ - -/* Tell Microsoft Visual C++ 2005 (and newer) to leave us alone - * and let us use standard C functions the way we're supposed to. - * (These preprocessor symbols must appear before the first system - * header include.) - */ -#if defined(_MSC_VER) && (_MSC_VER >= 1400) -# ifndef _CRT_SECURE_NO_WARNINGS -# define _CRT_SECURE_NO_WARNINGS -# endif -#endif - #include #include #ifdef WIN32 @@ -66,23 +54,11 @@ int WINAPI password(LPSTR p, int n, LPCSTR m, LPCSTR name); int WINAPI DisplayBuf(TCHAR far *buf, unsigned long size); -int WINAPI GetReplaceDlgRetVal(LPSTR filename, unsigned fnbufsiz); -#ifdef Z_UINT8_DEFINED -void WINAPI ReceiveDllMessage(z_uint8 ucsize, z_uint8 csiz, - unsigned cfactor, unsigned mo, unsigned dy, unsigned yr, unsigned hh, - unsigned mm, TCHAR c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, - TCHAR fCrypt); -#else +int WINAPI GetReplaceDlgRetVal(TCHAR *filename); void WINAPI ReceiveDllMessage(unsigned long ucsize, unsigned long csiz, - unsigned cfactor, unsigned mo, unsigned dy, unsigned yr, unsigned hh, - unsigned mm, TCHAR c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, - TCHAR fCrypt); -#endif -void WINAPI ReceiveDllMessage_NO_INT64(unsigned long ucsize_low, - unsigned long ucsize_high, unsigned long csiz_low, unsigned long csiz_high, - unsigned cfactor, unsigned mo, unsigned dy, unsigned yr, unsigned hh, - unsigned mm, TCHAR c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, - TCHAR fCrypt); + unsigned cfactor, unsigned mo, unsigned dy, unsigned yr, unsigned hh, + unsigned mm, TCHAR c, LPSTR filename, LPSTR methbuf, unsigned long crc, + TCHAR fCrypt); char szAppName[_MAX_PATH]; char szTarget[_MAX_PATH]; @@ -465,10 +441,7 @@ return (unsigned int) size; } -#ifdef __BORLANDC__ -#pragma argsused -#endif -int WINAPI GetReplaceDlgRetVal(LPSTR filename, unsigned fnbufsiz) +int WINAPI GetReplaceDlgRetVal(TCHAR *filename) { #ifndef WIN32 FARPROC lpfnprocReplace; @@ -477,11 +450,11 @@ #ifdef WIN32 ReplaceDlgRetVal = DialogBoxParam(hInst, "Replace", - hWnd, (DLGPROC)ReplaceProc, (DWORD)filename); + hWnd, (DLGPROC)ReplaceProc, (DWORD)(LPSTR)filename); #else lpfnprocReplace = MakeProcInstance(ReplaceProc, hInst); ReplaceDlgRetVal = DialogBoxParam(hInst, "Replace", - hWnd, lpfnprocReplace, (DWORD)filename); + hWnd, lpfnprocReplace, (DWORD)(LPSTR)filename); FreeProcInstance(lpfnprocReplace); #endif return ReplaceDlgRetVal; @@ -490,25 +463,9 @@ #ifdef __BORLANDC__ #pragma argsused #endif -#ifdef Z_UINT8_DEFINED -void WINAPI ReceiveDllMessage(z_uint8 ucsize, z_uint8 csiz, - unsigned cfactor, unsigned mo, unsigned dy, unsigned yr, unsigned hh, - unsigned mm, TCHAR c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, - TCHAR fCrypt) -{ -} -#else void WINAPI ReceiveDllMessage(unsigned long ucsize, unsigned long csiz, - unsigned cfactor, unsigned mo, unsigned dy, unsigned yr, unsigned hh, - unsigned mm, TCHAR c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, - TCHAR fCrypt) -{ -} -#endif -void WINAPI ReceiveDllMessage_NO_INT64(unsigned long ucsize_low, - unsigned long ucsize_high, unsigned long csiz_low, unsigned long csiz_high, unsigned cfactor, unsigned mo, unsigned dy, unsigned yr, unsigned hh, - unsigned mm, TCHAR c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, + unsigned mm, TCHAR c, LPSTR filename, LPSTR methbuf, unsigned long crc, TCHAR fCrypt) { } @@ -551,7 +508,6 @@ lpUserFunctions->sound = NULL; lpUserFunctions->replace = GetReplaceDlgRetVal; lpUserFunctions->SendApplicationMessage = ReceiveDllMessage; -lpUserFunctions->SendApplicationMessage_i32 = ReceiveDllMessage_NO_INT64; lpUserFunctions->ServCallBk = NULL; diff -Nru unzip-6.0/windll/structs.h unzip-6.0/windll/structs.h --- unzip-6.0/windll/structs.h 2009-01-17 22:54:38.000000000 +0000 +++ unzip-6.0/windll/structs.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -30,145 +30,51 @@ extern "C" { #endif -#ifndef Z_UINT8_DEFINED -# if defined(__GNUC__) - typedef unsigned long long z_uint8; -# define Z_UINT8_DEFINED -# elif (defined(_MSC_VER) && (_MSC_VER >= 1100)) - typedef unsigned __int64 z_uint8; -# define Z_UINT8_DEFINED -# elif (defined(__WATCOMC__) && (__WATCOMC__ >= 1100)) - typedef unsigned __int64 z_uint8; -# define Z_UINT8_DEFINED -# elif (defined(__IBMC__) && (__IBMC__ >= 350)) - typedef unsigned __int64 z_uint8; -# define Z_UINT8_DEFINED -# elif (defined(__BORLANDC__) && (__BORLANDC__ >= 0x0500)) - typedef unsigned __int64 z_uint8; -# define Z_UINT8_DEFINED -# elif (defined(__LCC__)) - typedef unsigned __int64 z_uint8; -# define Z_UINT8_DEFINED -# endif -#endif - -/* The following "function" types are jointly defined in both Zip and UnZip - * DLLs. They are guarded by the DEFINED_ONCE symbol to prevent multiple - * declarations in applications that reference both the Zip and the UnZip DLL. - */ #ifndef DEFINED_ONCE #define DEFINED_ONCE typedef int (WINAPI DLLPRNT) (LPSTR, unsigned long); -typedef int (WINAPI DLLPASSWORD) (LPSTR pwbuf, int bufsiz, - LPCSTR promptmsg, LPCSTR entryname); -# ifdef Z_UINT8_DEFINED -typedef int (WINAPI DLLSERVICE) (LPCSTR entryname, z_uint8 uncomprsiz); -# else -typedef int (WINAPI DLLSERVICE) (LPCSTR entryname, unsigned long uncomprsiz); -# endif -typedef int (WINAPI DLLSERVICE_I32) (LPCSTR entryname, - unsigned long ucsz_lo, unsigned long ucsz_hi); +typedef int (WINAPI DLLPASSWORD) (LPSTR, int, LPCSTR, LPCSTR); +typedef int (WINAPI DLLSERVICE) (LPCSTR, unsigned long); #endif /* DEFINED_ONCE */ - typedef void (WINAPI DLLSND) (void); -typedef int (WINAPI DLLREPLACE) (LPSTR efnam, unsigned efbufsiz); -#ifdef Z_UINT8_DEFINED -typedef void (WINAPI DLLMESSAGE) (z_uint8 ucsize, z_uint8 csize, - unsigned cfactor, - unsigned mo, unsigned dy, unsigned yr, unsigned hh, unsigned mm, - char c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, char fCrypt); -#else -typedef void (WINAPI DLLMESSAGE) (unsigned long ucsize, unsigned long csize, - unsigned cfactor, - unsigned mo, unsigned dy, unsigned yr, unsigned hh, unsigned mm, - char c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, char fCrypt); -#endif -typedef void (WINAPI DLLMESSAGE_I32) (unsigned long ucsiz_l, - unsigned long ucsiz_h, unsigned long csiz_l, unsigned long csiz_h, - unsigned cfactor, - unsigned mo, unsigned dy, unsigned yr, unsigned hh, unsigned mm, - char c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, char fCrypt); +typedef int (WINAPI DLLREPLACE)(LPSTR); +typedef void (WINAPI DLLMESSAGE)(unsigned long, unsigned long, unsigned, + unsigned, unsigned, unsigned, unsigned, unsigned, + char, LPSTR, LPSTR, unsigned long, char); typedef struct { - DLLPRNT *print; - DLLSND *sound; - DLLREPLACE *replace; - DLLPASSWORD *password; - DLLMESSAGE *SendApplicationMessage; - DLLSERVICE *ServCallBk; - DLLMESSAGE_I32 *SendApplicationMessage_i32; - DLLSERVICE_I32 *ServCallBk_i32; -#ifdef Z_UINT8_DEFINED - z_uint8 TotalSizeComp; - z_uint8 TotalSize; - z_uint8 NumMembers; -#else - struct _TotalSizeComp { - unsigned long u4Lo; - unsigned long u4Hi; - } TotalSizeComp; - struct _TotalSize { - unsigned long u4Lo; - unsigned long u4Hi; - } TotalSize; - struct _NumMembers { - unsigned long u4Lo; - unsigned long u4Hi; - } NumMembers; -#endif - unsigned CompFactor; - WORD cchComment; +DLLPRNT *print; +DLLSND *sound; +DLLREPLACE *replace; +DLLPASSWORD *password; +DLLMESSAGE *SendApplicationMessage; +DLLSERVICE *ServCallBk; +unsigned long TotalSizeComp; +unsigned long TotalSize; +unsigned long CompFactor; /* "long" applied for proper alignment, only */ +unsigned long NumMembers; +WORD cchComment; } USERFUNCTIONS, far * LPUSERFUNCTIONS; -/* The following symbol UZ_DCL_STRUCTVER must be incremented whenever an - * incompatible change is applied to the WinDLL API structure "DCL" ! - */ -#define UZ_DCL_STRUCTVER 0x600 -/* The structure "DCL" is collects most the UnZip WinDLL program options - * that control the operation of the main UnZip WinDLL function. - */ typedef struct { - unsigned StructVersID; /* struct version id (= UZ_DCL_STRUCTVER) */ - int ExtractOnlyNewer; /* TRUE for "update" without interaction - (extract only newer/new files, without queries) */ - int SpaceToUnderscore; /* TRUE if convert space to underscore */ - int PromptToOverwrite; /* TRUE if prompt to overwrite is wanted */ - int fQuiet; /* quiet flag: - { 0 = all | 1 = few | 2 = no } messages */ - int ncflag; /* write to stdout if TRUE */ - int ntflag; /* test zip file */ - int nvflag; /* verbose listing */ - int nfflag; /* "freshen" (replace existing files by newer versions) */ - int nzflag; /* display zip file comment */ - int ndflag; /* controls (sub)dir recreation during extraction - 0 = junk paths from filenames - 1 = "safe" usage of paths in filenames (skip ../) - 2 = allow unsafe path components (dir traversal) - */ - int noflag; /* always overwriting existing files if TRUE */ - int naflag; /* do end-of-line translation */ - int nZIflag; /* get ZipInfo output if TRUE */ - int B_flag; /* backup existing files if TRUE */ - int C_flag; /* be case insensitive if TRUE */ - int D_flag; /* controls restoration of timestamps - 0 = restore all timestamps (default) - 1 = skip restoration of timestamps for folders - created on behalf of directory entries in the - Zip archive - 2 = no restoration of timestamps; extracted files - and dirs get stamped with current time */ - int U_flag; /* controls UTF-8 filename coding support - 0 = automatic UTF-8 translation enabled (default) - 1 = recognize UTF-8 coded names, but all non-ASCII - characters are "escaped" into "#Uxxxx" - 2 = UTF-8 support is disabled, filename handling - works exactly as in previous UnZip versions */ - int fPrivilege; /* 1 => restore ACLs in user mode, - 2 => try to use privileges for restoring ACLs */ - LPSTR lpszZipFN; /* zip file name */ - LPSTR lpszExtractDir; /* directory to extract to. This should be NULL if - you are extracting to the current directory. */ +int ExtractOnlyNewer; +int SpaceToUnderscore; +int PromptToOverwrite; +int fQuiet; +int ncflag; +int ntflag; +int nvflag; +int nfflag; +int nzflag; +int ndflag; +int noflag; +int naflag; +int nZIflag; +int C_flag; +int fPrivilege; +LPSTR lpszZipFN; +LPSTR lpszExtractDir; } DCL, far * LPDCL; #ifdef __cplusplus diff -Nru unzip-6.0/windll/unziplib.def unzip-6.0/windll/unziplib.def --- unzip-6.0/windll/unziplib.def 2008-02-02 22:50:14.000000000 +0000 +++ unzip-6.0/windll/unziplib.def 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ ;module-definition file for Windows UnZip static Library -- used by link.exe LIBRARY UNZIP32 ; Library module name -;DESCRIPTION 'Windows Info-ZIP UnZip Library (32 bit), by Mike White' +DESCRIPTION 'Windows Info-ZIP UnZip Library (32 bit), by Mike White' CODE PRELOAD FIXED diff -Nru unzip-6.0/windll/uzexampl.c unzip-6.0/windll/uzexampl.c --- unzip-6.0/windll/uzexampl.c 2009-01-25 18:58:42.000000000 +0000 +++ unzip-6.0/windll/uzexampl.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -22,19 +22,6 @@ # define WIN32 #endif -/* Tell Microsoft Visual C++ 2005 to leave us alone and - * let us use standard C functions the way we're supposed to. - */ -#if defined(_MSC_VER) && (_MSC_VER >= 1400) -# ifndef _CRT_SECURE_NO_WARNINGS -# define _CRT_SECURE_NO_WARNINGS -# endif -# ifndef _CRT_NONSTDC_NO_WARNINGS -# define _CRT_NONSTDC_NO_WARNINGS -# endif -#endif - -#include #include #include #include @@ -75,16 +62,15 @@ #ifdef WIN32 DWORD dwPlatformId = 0xFFFFFFFF; #endif -static ZCONST UzpVer *lpUzVersInfo = NULL; /* Forward References */ int WINAPI DisplayBuf(LPSTR, unsigned long); -int WINAPI GetReplaceDlgRetVal(LPSTR, unsigned); +int WINAPI GetReplaceDlgRetVal(LPSTR); int WINAPI password(LPSTR, int, LPCSTR, LPCSTR); - -ZCONST UzpVer * UZ_EXP UzpVersion OF((void)); -_DLL_UZVER pUzpVersion; +void WINAPI ReceiveDllMessage(unsigned long, unsigned long, unsigned, + unsigned, unsigned, unsigned, unsigned, unsigned, + char, LPSTR, LPSTR, unsigned long, char); _DLL_UNZIP pWiz_SingleEntryUnzip; static void FreeUpMemory(void); @@ -108,30 +94,21 @@ if (argc < 2) /* We must have an archive to unzip */ { - char *progname = strrchr(argv[0], '\\'); - - if (progname != NULL) - progname++; - else - { - progname = argv[0]; - if (progname == NULL || *progname == '\0') progname = "example"; - } printf("usage: %s [entry1 [entry2 [...]]] [-x xentry1 [...]]", - progname); + "example"); return 0; } hDCL = GlobalAlloc( GPTR, (DWORD)sizeof(DCL)); if (!hDCL) { - return -1; + return 0; } lpDCL = (LPDCL)GlobalLock(hDCL); if (!lpDCL) { GlobalFree(hDCL); - return -1; + return 0; } hUF = GlobalAlloc( GPTR, (DWORD)sizeof(USERFUNCTIONS)); @@ -139,16 +116,16 @@ { GlobalUnlock(hDCL); GlobalFree(hDCL); - return -1; + return 0; } lpUserFunctions = (LPUSERFUNCTIONS)GlobalLock(hUF); if (!lpUserFunctions) { - GlobalFree(hUF); GlobalUnlock(hDCL); GlobalFree(hDCL); - return -1; + GlobalFree(hUF); + return 0; } lpUserFunctions->password = password; @@ -176,7 +153,7 @@ wsprintf (str, DLL_WARNING, UNZ_DLL_NAME); printf("%s\n", str); FreeUpMemory(); - return -1; + return 0; } #ifndef WIN32 else @@ -220,10 +197,10 @@ { wsprintf (str, DLL_VERSION_WARNING, UNZ_DLL_NAME); printf("%s\n", str); + FreeUpMemory(); GlobalUnlock(hMem); GlobalFree(hMem); - FreeUpMemory(); - return -1; + return 0; } } /* free memory */ @@ -236,7 +213,7 @@ wsprintf (str, DLL_VERSION_WARNING, UNZ_DLL_NAME); printf("%s\n", str); FreeUpMemory(); - return -1; + return 0; } /* Okay, now we know that the dll exists, and has the proper version * information in it. We can go ahead and load it. @@ -248,8 +225,6 @@ if (hUnzipDll != NULL) #endif { - pUzpVersion = - (_DLL_UZVER)GetProcAddress(hUnzipDll, "UzpVersion"); pWiz_SingleEntryUnzip = (_DLL_UNZIP)GetProcAddress(hUnzipDll, "Wiz_SingleEntryUnzip"); } @@ -259,96 +234,31 @@ wsprintf (str, "Could not load %s", UNZ_DLL_NAME); printf("%s\n", str); FreeUpMemory(); - return -1; + return 0; } /* - Before we actually start with the extraction process, we should first - check whether the API of the loaded dll is compatible with the API - definition used to compile this frontend program. - */ -lpUzVersInfo = (*pUzpVersion)(); - -/* The UnZip WinDLL code may change quite frequently. To be safe, we - * require the DLL to be at least at the release level of this example - * frontend code. - */ -# define UZDLL_MINVERS_MAJOR UZ_MAJORVER -# define UZDLL_MINVERS_MINOR UZ_MINORVER -# define UZDLL_MINVERS_PATCHLEVEL UZ_PATCHLEVEL -/* This UnZip DLL stub requires a DLL version of at least: */ -if ( (lpUzVersInfo->unzip.major < UZDLL_MINVERS_MAJOR) || - ((lpUzVersInfo->unzip.major == UZDLL_MINVERS_MAJOR) && - ((lpUzVersInfo->unzip.minor < UZDLL_MINVERS_MINOR) || - ((lpUzVersInfo->unzip.minor == UZDLL_MINVERS_MINOR) && - (lpUzVersInfo->unzip.patchlevel < UZDLL_MINVERS_PATCHLEVEL) - ) - ) - ) ) -{ - char str[256]; - wsprintf(str, "The version %u.%u%u of the loaded UnZip DLL is too old!", - lpUzVersInfo->unzip.major, lpUzVersInfo->unzip.minor, - lpUzVersInfo->unzip.patchlevel); - printf("%s\n", str); - FreeLibrary(hUnzipDll); - FreeUpMemory(); - return -1; -} - -if (lpUzVersInfo->structlen >= - (offsetof(UzpVer, dllapimin) + sizeof(_version_type))) -{ - if ( (lpUzVersInfo->dllapimin.major > UZ_WINAPI_COMP_MAJOR) || - ((lpUzVersInfo->dllapimin.major == UZ_WINAPI_COMP_MAJOR) && - ((lpUzVersInfo->dllapimin.minor > UZ_WINAPI_COMP_MINOR) || - ((lpUzVersInfo->dllapimin.minor == UZ_WINAPI_COMP_MINOR) && - (lpUzVersInfo->dllapimin.patchlevel > UZ_WINAPI_COMP_REVIS) - ) - ) - ) ) - { - char str[256]; - wsprintf(str, "Found incompatible WinDLL API version %u.%u%u, aborting!", - lpUzVersInfo->dllapimin.major, lpUzVersInfo->dllapimin.minor, - lpUzVersInfo->dllapimin.patchlevel); - printf("%s\n", str); - FreeLibrary(hUnzipDll); - FreeUpMemory(); - return -1; - } -} - -/* Here is where the actual extraction process begins. First we set up the flags to be passed into the dll. */ -lpDCL->StructVersID = UZ_DCL_STRUCTVER; /* version of this structure */ -lpDCL->ncflag = 0; /* write to stdout if true */ -lpDCL->fQuiet = 0; /* we want all messages - 1 = fewer messages, - 2 = no messages */ -lpDCL->ntflag = 0; /* test zip file if true */ -lpDCL->nvflag = 0; /* give a verbose listing if true */ -lpDCL->nzflag = 0; /* display zip file comment if true */ -lpDCL->ndflag = 1; /* recreate directories != 0, - skip "../" if < 2 */ -lpDCL->naflag = 0; /* do not convert CR to CRLF */ -lpDCL->nfflag = 0; /* do not freshen existing files only */ -lpDCL->noflag = 1; /* over-write all files if true */ -lpDCL->nZIflag = 0; /* no ZipInfo output mode */ -lpDCL->B_flag = 0; /* do not backup existing files */ -lpDCL->C_flag = 0; /* do not match case-insensitive */ -lpDCL->D_flag = 0; /* restore all timestamps */ -lpDCL->U_flag = 0; /* do not disable UTF-8 support */ -lpDCL->ExtractOnlyNewer = 0; /* do not extract only newer */ -lpDCL->SpaceToUnderscore = 0; /* do not convert space to '_' in filenames */ -lpDCL->PromptToOverwrite = 0; /* "overwrite all" selected -> no query mode */ -lpDCL->lpszZipFN = argv[1]; /* the archive name */ -lpDCL->lpszExtractDir = NULL; /* the directory to extract to. - This is set to NULL if you are extracting - to the current directory. - */ +lpDCL->ncflag = 0; /* Write to stdout if true */ +lpDCL->fQuiet = 0; /* We want all messages. + 1 = fewer messages, + 2 = no messages */ +lpDCL->ntflag = 0; /* test zip file if true */ +lpDCL->nvflag = 0; /* give a verbose listing if true */ +lpDCL->nzflag = 0; /* display a zip file comment if true */ +lpDCL->ndflag = 1; /* Recreate directories != 0, skip "../" if < 2 */ +lpDCL->naflag = 0; /* Do not convert CR to CRLF */ +lpDCL->nfflag = 0; /* Do not freshen existing files only */ +lpDCL->noflag = 1; /* Over-write all files if true */ +lpDCL->ExtractOnlyNewer = 0; /* Do not extract only newer */ +lpDCL->PromptToOverwrite = 0; /* "Overwrite all" selected -> no query mode */ +lpDCL->lpszZipFN = argv[1]; /* The archive name */ +lpDCL->lpszExtractDir = NULL; /* The directory to extract to. This is set + to NULL if you are extracting to the + current directory. + */ /* As this is a quite short example, intended primarily to show how to load and call in to the dll, the command-line parameters are only @@ -392,14 +302,14 @@ } if (retcode != 0) - printf("Error unzipping (error/warning code %d)...\n", retcode); + printf("Error unzipping...\n"); -FreeLibrary(hUnzipDll); FreeUpMemory(); -return retcode; +FreeLibrary(hUnzipDll); +return 1; } -int WINAPI GetReplaceDlgRetVal(LPSTR filename, unsigned fnbufsiz) +int WINAPI GetReplaceDlgRetVal(LPSTR filename) { /* This is where you will decide if you want to replace, rename etc existing files. @@ -409,16 +319,16 @@ static void FreeUpMemory(void) { -if (hUF) - { - GlobalUnlock(hUF); - GlobalFree(hUF); - } if (hDCL) { GlobalUnlock(hDCL); GlobalFree(hDCL); } +if (hUF) + { + GlobalUnlock(hUF); + GlobalFree(hUF); + } } /* This is a very stripped down version of what is done in Wiz. Essentially @@ -426,17 +336,10 @@ is actually never called in this example, but a dummy procedure had to be put in, so this was used. */ -#ifdef Z_UINT8_DEFINED -void WINAPI ReceiveDllMessage(z_uint8 ucsize, z_uint8 csiz, - unsigned cfactor, unsigned mo, unsigned dy, unsigned yr, - unsigned hh, unsigned mm, char c, LPCSTR filename, - LPCSTR methbuf, unsigned long crc, char fCrypt) -#else void WINAPI ReceiveDllMessage(unsigned long ucsize, unsigned long csiz, unsigned cfactor, unsigned mo, unsigned dy, unsigned yr, unsigned hh, unsigned mm, - char c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, char fCrypt) -#endif + char c, LPSTR filename, LPSTR methbuf, unsigned long crc, char fCrypt) { char psLBEntry[_MAX_PATH]; char LongHdrStats[] = diff -Nru unzip-6.0/windll/uzexampl.h unzip-6.0/windll/uzexampl.h --- unzip-6.0/windll/uzexampl.h 2009-01-25 16:26:36.000000000 +0000 +++ unzip-6.0/windll/uzexampl.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -29,13 +29,11 @@ #endif #include -#include "../unzip.h" #include "../windll/structs.h" #include "../windll/decs.h" /* Defines */ -typedef const UzpVer * (WINAPI * _DLL_UZVER)(void); typedef int (WINAPI * _DLL_UNZIP)(int, char **, int, char **, LPDCL, LPUSERFUNCTIONS); @@ -53,20 +51,7 @@ int WINAPI DisplayBuf(LPSTR, unsigned long); /* Procedure Calls */ -#ifdef Z_UINT8_DEFINED -void WINAPI ReceiveDllMessage(z_uint8 ucsize, z_uint8 csize, - unsigned cfactor, - unsigned mo, unsigned dy, unsigned yr, unsigned hh, unsigned mm, - char c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, char fCrypt); -#else -void WINAPI ReceiveDllMessage(unsigned long ucsize, unsigned long csize, - unsigned cfactor, - unsigned mo, unsigned dy, unsigned yr, unsigned hh, unsigned mm, - char c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, char fCrypt); -#endif -void WINAPI ReceiveDllMessage_NO_INT64(unsigned long ucsiz_l, - unsigned long ucsiz_h, unsigned long csiz_l, unsigned long csiz_h, - unsigned cfactor, - unsigned mo, unsigned dy, unsigned yr, unsigned hh, unsigned mm, - char c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, char fCrypt); +void WINAPI ReceiveDllMessage(unsigned long, unsigned long, unsigned, + unsigned, unsigned, unsigned, unsigned, unsigned, + char, LPSTR, LPSTR, unsigned long, char); #endif /* _UZEXAMPL_H */ diff -Nru unzip-6.0/windll/vb/VBReadMe.txt unzip-6.0/windll/vb/VBReadMe.txt --- unzip-6.0/windll/vb/VBReadMe.txt 2009-01-25 16:12:12.000000000 +0000 +++ unzip-6.0/windll/vb/VBReadMe.txt 2010-05-14 07:26:14.000000000 +0000 @@ -7,10 +7,6 @@ execution path. The easiest way to satisfy this rule is to keep a copy of unzip32.dll in the directory where the VB executable is stored, but if it's in the command path it should be found. -NOTE: Whenever a VB program is run from the VB6 IDE, the "path of the VB -executable" is the path where the IDE program file "VB6.EXE" is stored, -NOT the storage directory of the VB project file (= result of the App.Path -property accessed from within the VB program). The example code has been edited last with Visual Basic 6, but should be compatible with VB 5. To maintain compatibility with VB5 after having modified diff -Nru unzip-6.0/windll/vb/vbunzip.bas unzip-6.0/windll/vb/vbunzip.bas --- unzip-6.0/windll/vb/vbunzip.bas 2009-01-25 15:56:30.000000000 +0000 +++ unzip-6.0/windll/vb/vbunzip.bas 2010-05-14 07:26:14.000000000 +0000 @@ -38,49 +38,14 @@ '--------------------------------------------------------------- '-- '-- Modified August 17, 1998 -'-- by Christian Spieler -'-- (implemented sort of a "real" user interface) +'-- by Christian Spieler +'-- (implemented sort of a "real" user interface) '-- Modified May 11, 2003 -'-- by Christian Spieler -'-- (use late binding for referencing the common dialog) -'-- Modified February 01, 2008 -'-- by Christian Spieler -'-- (adapted DLL interface changes, fixed UZDLLPass callback) -'-- Modified December 08, 2008 to December 30, 2008 -'-- by Ed Gordon -'-- Updated sample project for UnZip 6.0 unzip32.dll -'-- (support UnZip 6.0 flags and structures) -'-- Modified January 03, 2009 -'-- by Christian Spieler -'-- (better solution for overwrite_all handling, use Double -'-- instead of Currency to stay safe against number overflow, -'-- corrected UZDLLServ_I32() calling interface, -'-- removed code that is unsupported under VB5) +'-- by Christian Spieler +'-- (use late binding for referencing the common dialog) '-- '--------------------------------------------------------------- -'-- Expected Version data for the DLL compatibility check -' -' For consistency of the version checking algorithm, the version number -' constants "UzDLL_MinVer" and "UzDLL_MaxAPI" have to fullfil the -' condition "UzDLL_MinVer <= "UzDLL_MaxAPI". -' Version data supplied by a specific UnZip DLL always obey the -' relation "UzDLL Version" >= "UzDLL API". - -'Oldest UnZip DLL version that is supported by this program -Private Const cUzDLL_MinVer_Major As Byte = 6 -Private Const cUzDLL_MinVer_Minor As Byte = 0 -Private Const cUzDLL_MinVer_Revis As Byte = 0 - -'Last (newest) UnZip DLL API version that is known (and supported) -'by this program -Private Const cUzDLL_MaxAPI_Major As Byte = 6 -Private Const cUzDLL_MaxAPI_Minor As Byte = 0 -Private Const cUzDLL_MaxAPI_Revis As Byte = 0 - -'Current structure version ID of the DCLIST structure layout -Private Const cUz_DCLStructVer As Long = &H600 - '-- C Style argv Private Type UNZIPnames uzFiles(0 To 99) As String @@ -98,7 +63,6 @@ '-- UNZIP32.DLL DCL Structure Private Type DCLIST - StructVersID As Long ' Currently version &H600 of this structure ExtractOnlyNewer As Long ' 1 = Extract Only Newer/New, Else 0 SpaceToUnderscore As Long ' 1 = Convert Space To Underscore, Else 0 PromptToOverwrite As Long ' 1 = Prompt To Overwrite Required, Else 0 @@ -108,14 +72,11 @@ nvflag As Long ' 0 = Extract, 1 = List Zip Contents nfflag As Long ' 1 = Extract Only Newer Over Existing, Else 0 nzflag As Long ' 1 = Display Zip File Comment, Else 0 - ndflag As Long ' 0 = Junk paths, 1 = safe path components only, 2 = all + ndflag As Long ' 1 = Honor Directories, Else 0 noflag As Long ' 1 = Overwrite Files, Else 0 naflag As Long ' 1 = Convert CR To CRLF, Else 0 nZIflag As Long ' 1 = Zip Info Verbose, Else 0 - B_flag As Long ' 1 = Backup existing files, Else 0 C_flag As Long ' 1 = Case Insensitivity, 0 = Case Sensitivity - D_flag As Long ' Timestamp restoration, 0 = All, 1 = Files, 2 = None - U_flag As Long ' 0 = Unicode enabled, 1 = Escape chars, 2 = No Unicode fPrivilege As Long ' 1 = ACL, 2 = Privileges Zip As String ' The Zip Filename To Extract Files ExtractDir As String ' The Extraction Directory, NULL If Extracting To Current Dir @@ -123,29 +84,21 @@ '-- UNZIP32.DLL Userfunctions Structure Private Type USERFUNCTION - UZDLLPrnt As Long ' Pointer To Apps Print Function - UZDLLSND As Long ' Pointer To Apps Sound Function - UZDLLREPLACE As Long ' Pointer To Apps Replace Function - UZDLLPASSWORD As Long ' Pointer To Apps Password Function - ' 64-bit versions (VB6 does not support passing 64-bit values!) - UZDLLMESSAGE As Long ' Pointer To Apps Message Function (Not Used!) - UZDLLSERVICE As Long ' Pointer To Apps Service Function (Not Used!) - ' 32-bit versions - UZDLLMESSAGE_I32 As Long ' Pointer To Apps Message Function - UZDLLSERVICE_I32 As Long ' Pointer To Apps Service Function - ' All 64-bit values passed as low and high parts! - TotalSizeComp_Lo As Long ' Total Size Of Zip Archive (low 32 bits) - TotalSizeComp_Hi As Long ' Total Size Of Zip Archive (high 32 bits) - TotalSize_Lo As Long ' Total Size Of All Files In Archive (low 32) - TotalSize_Hi As Long ' Total Size Of All Files In Archive (high 32) - NumMembers_Lo As Long ' Total Number Of All Files In The Archive (low 32) - NumMembers_Hi As Long ' Total Number Of All Files In The Archive (high 32) - CompFactor As Long ' Compression Factor - cchComment As Integer ' Flag If Archive Has A Comment! + UZDLLPrnt As Long ' Pointer To Apps Print Function + UZDLLSND As Long ' Pointer To Apps Sound Function + UZDLLREPLACE As Long ' Pointer To Apps Replace Function + UZDLLPASSWORD As Long ' Pointer To Apps Password Function + UZDLLMESSAGE As Long ' Pointer To Apps Message Function + UZDLLSERVICE As Long ' Pointer To Apps Service Function (Not Coded!) + TotalSizeComp As Long ' Total Size Of Zip Archive + TotalSize As Long ' Total Size Of All Files In Archive + CompFactor As Long ' Compression Factor + NumMembers As Long ' Total Number Of All Files In The Archive + cchComment As Integer ' Flag If Archive Has A Comment! End Type '-- UNZIP32.DLL Version Structure -Private Type UZPVER2 +Private Type UZPVER structlen As Long ' Length Of The Structure Being Passed flag As Long ' Bit 0: is_beta bit 1: uses_zlib beta As String * 10 ' e.g., "g BETA" or "" @@ -155,68 +108,39 @@ zipinfo(1 To 4) As Byte ' Version Type Zip Info os2dll As Long ' Version Type OS2 DLL windll(1 To 4) As Byte ' Version Type Windows DLL - dllapimin(1 To 4) As Byte ' Version Type DLL API minimum compatibility End Type -'-- This assumes UNZIP32.DLL is somewhere on your execution path! -'-- The term "execution path" means a search in the following locations, -'-- in the listed sequence (for more details look up the documentation -'-- of the LoadLibrary() Win32 API call): -'-- 1) the directory from which the VB6 application was loaded, -'-- 2) your current working directory in effect when the VB6 program -'-- tries to access a first API call of UNZIP32.DLL, -'-- 3) the Windows "SYSTEM32" (only NT/2K/XP...) and "SYSTEM" directories, -'-- and the Windows directory, -'-- 4) the folder list of your command path (e.g. check the environment -'-- variable PATH as set in a console window started from scratch). -'-- Normally, the Windows system directory is on your command path, -'-- so installing the UNZIP32.DLL in the Windows System Directory -'-- should always work. -'-- -'-- WARNING: -'-- When a VB6 program is run in the VB6 IDE, the "directory from which the -'-- application was loaded" is the -'-- ===>>> directory where VB6.EXE is stored (!!!), -'-- not the storage directory of the VB project file -'-- (the folder returned by "App.Path"). -'-- When a compiled VB6 program is run, the "application load directory" -'-- is identical with the folder reported by "App.Path". -'-- +'-- This Assumes UNZIP32.DLL Is In Your \Windows\System Directory! Private Declare Function Wiz_SingleEntryUnzip Lib "unzip32.dll" _ (ByVal ifnc As Long, ByRef ifnv As UNZIPnames, _ ByVal xfnc As Long, ByRef xfnv As UNZIPnames, _ dcll As DCLIST, Userf As USERFUNCTION) As Long -Private Declare Function UzpVersion2 Lib "unzip32.dll" _ - (uzpv As UZPVER2) As Long - -'-- Private variable holding the API version id as reported by the -'-- loaded UnZip DLL -Private m_UzDllApiVers As Long +Private Declare Sub UzpVersion2 Lib "unzip32.dll" (uzpv As UZPVER) '-- Private Variables For Structure Access Private UZDCL As DCLIST Private UZUSER As USERFUNCTION -Private UZVER2 As UZPVER2 +Private UZVER As UZPVER '-- Public Variables For Setting The '-- UNZIP32.DLL DCLIST Structure '-- These Must Be Set Before The Actual Call To VBUnZip32 -Public uExtractOnlyNewer As Long ' 1 = Extract Only Newer/New, Else 0 -Public uSpaceUnderScore As Long ' 1 = Convert Space To Underscore, Else 0 -Public uPromptOverWrite As Long ' 1 = Prompt To Overwrite Required, Else 0 -Public uQuiet As Long ' 2 = No Messages, 1 = Less, 0 = All -Public uWriteStdOut As Long ' 1 = Write To Stdout, Else 0 -Public uTestZip As Long ' 1 = Test Zip File, Else 0 -Public uExtractList As Long ' 0 = Extract, 1 = List Contents -Public uFreshenExisting As Long ' 1 = Update Existing by Newer, Else 0 -Public uDisplayComment As Long ' 1 = Display Zip File Comment, Else 0 -Public uHonorDirectories As Long ' 1 = Honor Directories, Else 0 -Public uOverWriteFiles As Long ' 1 = Overwrite Files, Else 0 -Public uConvertCR_CRLF As Long ' 1 = Convert CR To CRLF, Else 0 -Public uVerbose As Long ' 1 = Zip Info Verbose -Public uCaseSensitivity As Long ' 1 = Case Insensitivity, 0 = Case Sensitivity -Public uPrivilege As Long ' 1 = ACL, 2 = Privileges, Else 0 +Public uExtractOnlyNewer As Integer ' 1 = Extract Only Newer/New, Else 0 +Public uSpaceUnderScore As Integer ' 1 = Convert Space To Underscore, Else 0 +Public uPromptOverWrite As Integer ' 1 = Prompt To Overwrite Required, Else 0 +Public uQuiet As Integer ' 2 = No Messages, 1 = Less, 0 = All +Public uWriteStdOut As Integer ' 1 = Write To Stdout, Else 0 +Public uTestZip As Integer ' 1 = Test Zip File, Else 0 +Public uExtractList As Integer ' 0 = Extract, 1 = List Contents +Public uFreshenExisting As Integer ' 1 = Update Existing by Newer, Else 0 +Public uDisplayComment As Integer ' 1 = Display Zip File Comment, Else 0 +Public uHonorDirectories As Integer ' 1 = Honor Directories, Else 0 +Public uOverWriteFiles As Integer ' 1 = Overwrite Files, Else 0 +Public uConvertCR_CRLF As Integer ' 1 = Convert CR To CRLF, Else 0 +Public uVerbose As Integer ' 1 = Zip Info Verbose +Public uCaseSensitivity As Integer ' 1 = Case Insensitivity, 0 = Case Sensitivity +Public uPrivilege As Integer ' 1 = ACL, 2 = Privileges, Else 0 Public uZipFileName As String ' The Zip File Name Public uExtractDir As String ' Extraction Directory, Null If Current Directory @@ -228,7 +152,7 @@ Public uZipInfo As String ' For Zip Information Public uZipNames As UNZIPnames ' Names Of Files To Unzip Public uExcludeNames As UNZIPnames ' Names Of Zip Files To Exclude -Public uVbSkip As Boolean ' For DLL Password Function +Public uVbSkip As Integer ' For DLL Password Function '-- Puts A Function Pointer In A Structure '-- For Callbacks. @@ -239,31 +163,23 @@ End Function '-- Callback For UNZIP32.DLL - Receive Message Function -Public Sub UZReceiveDLLMessage_I32( _ - ByVal ucsize_lo As Long, _ - ByVal ucsize_hi As Long, _ - ByVal csiz_lo As Long, _ - ByVal csiz_hi As Long, _ +Public Sub UZReceiveDLLMessage(ByVal ucsize As Long, _ + ByVal csiz As Long, _ ByVal cfactor As Integer, _ ByVal mo As Integer, _ ByVal dy As Integer, _ ByVal yr As Integer, _ ByVal hh As Integer, _ ByVal mm As Integer, _ - ByVal c As Byte, _ - ByRef fname As UNZIPCBCh, _ - ByRef meth As UNZIPCBCh, _ - ByVal crc As Long, _ + ByVal c As Byte, ByRef fname As UNZIPCBCh, _ + ByRef meth As UNZIPCBCh, ByVal crc As Long, _ ByVal fCrypt As Byte) Dim s0 As String Dim xx As Long - Dim cCh As Byte Dim strout As String * 80 - Dim ucsize As Double - Dim csiz As Double - '-- Always implement a runtime error handler in Callback Routines! + '-- Always Put This In Callback Routines! On Error Resume Next '------------------------------------------------ @@ -276,10 +192,10 @@ '-- For Zip Message Printing If uZipNumber = 0 Then - Mid$(strout, 1, 50) = "Filename:" - Mid$(strout, 53, 4) = "Size" - Mid$(strout, 62, 4) = "Date" - Mid$(strout, 71, 4) = "Time" + Mid(strout, 1, 50) = "Filename:" + Mid(strout, 53, 4) = "Size" + Mid(strout, 62, 4) = "Date" + Mid(strout, 71, 4) = "Time" uZipMessage = strout & vbNewLine strout = Space$(80) End If @@ -287,25 +203,22 @@ s0 = "" '-- Do Not Change This For Next!!! - For xx = 0 To UBound(fname.ch) + For xx = 0 To 255 If fname.ch(xx) = 0 Then Exit For s0 = s0 & Chr$(fname.ch(xx)) Next - ucsize = CnvI64Struct2Dbl(ucsize_lo, ucsize_hi) - csiz = CnvI64Struct2Dbl(csiz_lo, csiz_hi) - '-- Assign Zip Information For Printing Mid$(strout, 1, 50) = Mid$(s0, 1, 50) - Mid$(strout, 51, 9) = Right$(" " & CStr(ucsize), 9) - Mid$(strout, 62, 3) = Right$("0" & Trim$(CStr(mo)), 2) & "/" - Mid$(strout, 65, 3) = Right$("0" & Trim$(CStr(dy)), 2) & "/" - Mid$(strout, 68, 2) = Right$("0" & Trim$(CStr(yr)), 2) - Mid$(strout, 72, 3) = Right$(Str$(hh), 2) & ":" - Mid$(strout, 75, 2) = Right$("0" & Trim$(CStr(mm)), 2) + Mid$(strout, 51, 7) = Right$(" " & CStr(ucsize), 7) + Mid$(strout, 60, 3) = Right$("0" & Trim$(CStr(mo)), 2) & "/" + Mid$(strout, 63, 3) = Right$("0" & Trim$(CStr(dy)), 2) & "/" + Mid$(strout, 66, 2) = Right$("0" & Trim$(CStr(yr)), 2) + Mid$(strout, 70, 3) = Right$(Str$(hh), 2) & ":" + Mid$(strout, 73, 2) = Right$("0" & Trim$(CStr(mm)), 2) - ' Mid$(strout, 77, 2) = Right$(" " & CStr(cfactor), 2) - ' Mid$(strout, 80, 8) = Right$(" " & CStr(csiz), 8) + ' Mid(strout, 75, 2) = Right$(" " & CStr(cfactor), 2) + ' Mid(strout, 78, 8) = Right$(" " & CStr(csiz), 8) ' s0 = "" ' For xx = 0 To 255 ' If meth.ch(xx) = 0 Then Exit For @@ -323,29 +236,20 @@ Dim s0 As String Dim xx As Long - Dim cCh As Byte - '-- Always implement a runtime error handler in Callback Routines! + '-- Always Put This In Callback Routines! On Error Resume Next s0 = "" '-- Gets The UNZIP32.DLL Message For Displaying. For xx = 0 To x - 1 - cCh = fname.ch(xx) - Select Case cCh - Case 0 - Exit For - Case 10 - s0 = s0 & vbNewLine ' Damn UNIX :-) - Case 92 ' = Asc("\") - s0 = s0 & "/" - Case Else - s0 = s0 & Chr$(cCh) - End Select + If fname.ch(xx) = 0 Then Exit For + s0 = s0 & Chr$(fname.ch(xx)) Next '-- Assign Zip Information + If Mid$(s0, 1, 1) = vbLf Then s0 = vbNewLine ' Damn UNIX :-) uZipInfo = uZipInfo & s0 UZDLLPrnt = 0 @@ -353,144 +257,109 @@ End Function '-- Callback For UNZIP32.DLL - DLL Service Function -Public Function UZDLLServ_I32(ByRef mname As UNZIPCBChar, _ - ByVal lUcSiz_Lo As Long, ByVal lUcSiz_Hi As Long) As Long - - Dim UcSiz As Double - Dim s0 As String - Dim xx As Long +Public Function UZDLLServ(ByRef mname As UNZIPCBChar, ByVal x As Long) As Long - '-- Always implement a runtime error handler in Callback Routines! - On Error Resume Next + Dim s0 As String + Dim xx As Long - ' Parameters lUcSiz_Lo and lUcSiz_Hi contain the uncompressed size - ' of the extracted archive entry. - ' This information may be used for some kind of progress display... - UcSiz = CnvI64Struct2Dbl(lUcSiz_Lo, lUcSiz_Hi) + '-- Always Put This In Callback Routines! + On Error Resume Next - s0 = "" - '-- Get Zip32.DLL Message For processing - For xx = 0 To UBound(mname.ch) - If mname.ch(xx) = 0 Then Exit For - s0 = s0 & Chr$(mname.ch(xx)) - Next - ' At this point, s0 contains the message passed from the DLL - ' (like the current file being extracted) - ' It is up to the developer to code something useful here :) + ' Parameter x contains the size of the extracted archive entry. + ' This information may be used for some kind of progress display... + + s0 = "" + '-- Get Zip32.DLL Message For processing + For xx = 0 To UBound(mname.ch) + If mname.ch(xx) = 0 Then Exit For + s0 = s0 & Chr$(mname.ch(xx)) + Next + ' At this point, s0 contains the message passed from the DLL + ' It is up to the developer to code something useful here :) - UZDLLServ_I32 = 0 ' Setting this to 1 will abort the zip! + UZDLLServ = 0 ' Setting this to 1 will abort the zip! End Function '-- Callback For UNZIP32.DLL - Password Function -Public Function UZDLLPass(ByRef pwbuf As UNZIPCBCh, _ - ByVal bufsiz As Long, ByRef promptmsg As UNZIPCBCh, _ - ByRef entryname As UNZIPCBCh) As Long +Public Function UZDLLPass(ByRef p As UNZIPCBCh, _ + ByVal n As Long, ByRef m As UNZIPCBCh, _ + ByRef Name As UNZIPCBCh) As Integer Dim prompt As String - Dim xx As Long + Dim xx As Integer Dim szpassword As String - '-- Always implement a runtime error handler in Callback Routines! + '-- Always Put This In Callback Routines! On Error Resume Next - UZDLLPass = -1 'IZ_PW_CANCEL + UZDLLPass = 1 - If uVbSkip Then Exit Function - - '-- Get the Password prompt - For xx = 0 To UBound(promptmsg.ch) - If promptmsg.ch(xx) = 0 Then Exit For - prompt = prompt & Chr$(promptmsg.ch(xx)) - Next - If Len(prompt) = 0 Then - prompt = "Please Enter The Password!" - Else - prompt = prompt & " " - For xx = 0 To UBound(entryname.ch) - If entryname.ch(xx) = 0 Then Exit For - prompt = prompt & Chr$(entryname.ch(xx)) - Next - End If + If uVbSkip = 1 Then Exit Function '-- Get The Zip File Password - Do - szpassword = InputBox(prompt) - If Len(szpassword) < bufsiz Then Exit Do - ' -- Entered password exceeds UnZip's password buffer size - If MsgBox("The supplied password exceeds the maximum password length " _ - & CStr(bufsiz - 1) & " supported by the UnZip DLL." _ - , vbExclamation + vbRetryCancel, "UnZip password too long") _ - = vbCancel Then - szpassword = "" - Exit Do - End If - Loop + szpassword = InputBox("Please Enter The Password!") '-- No Password So Exit The Function If Len(szpassword) = 0 Then - uVbSkip = True + uVbSkip = 1 Exit Function End If '-- Zip File Password So Process It - For xx = 0 To bufsiz - 1 - pwbuf.ch(xx) = 0 + For xx = 0 To 255 + If m.ch(xx) = 0 Then + Exit For + Else + prompt = prompt & Chr$(m.ch(xx)) + End If + Next + + For xx = 0 To n - 1 + p.ch(xx) = 0 Next - '-- Password length has already been checked, so - '-- it will fit into the communication buffer. + For xx = 0 To Len(szpassword) - 1 - pwbuf.ch(xx) = Asc(Mid$(szpassword, xx + 1, 1)) + p.ch(xx) = Asc(Mid$(szpassword, xx + 1, 1)) Next - pwbuf.ch(xx) = 0 ' Put Null Terminator For C + p.ch(xx) = 0 ' Put Null Terminator For C - UZDLLPass = 0 ' IZ_PW_ENTERED + UZDLLPass = 0 End Function '-- Callback For UNZIP32.DLL - Report Function To Overwrite Files. '-- This Function Will Display A MsgBox Asking The User '-- If They Would Like To Overwrite The Files. -Public Function UZDLLReplacePrmt(ByRef fname As UNZIPCBChar, _ - ByVal fnbufsiz As Long) As Long +Public Function UZDLLRep(ByRef fname As UNZIPCBChar) As Long Dim s0 As String Dim xx As Long - Dim cCh As Byte - Dim bufmax As Long - '-- Always implement a runtime error handler in Callback Routines! + '-- Always Put This In Callback Routines! On Error Resume Next - UZDLLReplacePrmt = 100 ' 100 = Do Not Overwrite - Keep Asking User + UZDLLRep = 100 ' 100 = Do Not Overwrite - Keep Asking User s0 = "" - bufmax = UBound(fname.ch) - If bufmax >= fnbufsiz Then bufmax = fnbufsiz - 1 - For xx = 0 To bufmax - cCh = fname.ch(xx) - Select Case cCh - Case 0 - Exit For - Case 92 ' = Asc("\") - s0 = s0 & "/" - Case Else - s0 = s0 & Chr$(cCh) - End Select + For xx = 0 To 255 + If fname.ch(xx) = 0 Then Exit For + s0 = s0 & Chr$(fname.ch(xx)) Next '-- This Is The MsgBox Code - xx = MsgBox("Overwrite """ & s0 & """ ?", vbExclamation Or vbYesNoCancel, _ + xx = MsgBox("Overwrite " & s0 & "?", vbExclamation & vbYesNoCancel, _ "VBUnZip32 - File Already Exists!") - Select Case xx - Case vbYes - UZDLLReplacePrmt = 102 ' 102 = Overwrite, 103 = Overwrite All - Case vbCancel - UZDLLReplacePrmt = 104 ' 104 = Overwrite None - Case Else - 'keep the default as set at function entry. - End Select + + If xx = vbNo Then Exit Function + + If xx = vbCancel Then + UZDLLRep = 104 ' 104 = Overwrite None + Exit Function + End If + + UZDLLRep = 102 ' 102 = Overwrite, 103 = Overwrite All End Function @@ -512,71 +381,15 @@ End Function -'-- convert a 64-bit int divided in two Int32 variables into -'-- a single 64-bit floating-point value -Private Function CnvI64Struct2Dbl(ByVal lInt64Lo As Long, lInt64Hi As Long) As Double - If lInt64Lo < 0 Then - CnvI64Struct2Dbl = 2# ^ 32 + CDbl(lInt64Lo) - Else - CnvI64Struct2Dbl = CDbl(lInt64Lo) - End If - CnvI64Struct2Dbl = CnvI64Struct2Dbl + (2# ^ 32) * CDbl(lInt64Hi) -End Function - -'-- Concatenate a "structured" version number into a single integer value, -'-- to facilitate version number comparisons -'-- (In case the practically used NumMajor numbers will ever exceed 128, it -'-- should be considered to use the number type "Double" to store the -'-- concatenated number. "Double" can store signed integer numbers up to a -'-- width of 52 bits without loss of precision.) -Private Function ConcatVersNums(ByVal NumMajor As Byte, ByVal NumMinor As Byte _ - , ByVal NumRevis As Byte, ByVal NumBuild As Byte) As Long - If (NumMajor And &H80) <> 0 Then - ConcatVersNums = (NumMajor And &H7F) * (2 ^ 24) Or &H80000000 - Else - ConcatVersNums = NumMajor * (2 ^ 24) - End If - ConcatVersNums = ConcatVersNums _ - + NumMinor * (2 ^ 16) _ - + NumRevis * (2 ^ 8) _ - + NumBuild -End Function - -'-- Helper function to provide a printable version number string, using the -'-- current formatting rule for version number display as implemented in UnZip. -Private Function VersNumsToTxt(ByVal NumMajor As Byte, ByVal NumMinor As Byte _ - , ByVal NumRevis As Byte) As String - VersNumsToTxt = CStr(NumMajor) & "." & Hex$(NumMinor) - If NumRevis <> 0 Then VersNumsToTxt = VersNumsToTxt & Hex$(NumRevis) -End Function - -'-- Helper function to convert a "concatenated" version id into a printable -'-- version number string, using the current formatting rule for version number -'-- display as implemented in UnZip. -Private Function VersIDToTxt(ByVal VersionID As Long) As String - Dim lNumTemp As Long - - lNumTemp = VersionID \ (2 ^ 24) - If lNumTemp < 0 Then lNumTemp = 256 + lNumTemp - VersIDToTxt = CStr(lNumTemp) & "." _ - & Hex$((VersionID And &HFF0000) \ &H10000) - lNumTemp = (VersionID And &HFF00&) \ &H100 - If lNumTemp <> 0 Then VersIDToTxt = VersIDToTxt & Hex$(lNumTemp) -End Function - '-- Main UNZIP32.DLL UnZip32 Subroutine '-- (WARNING!) Do Not Change! Public Sub VBUnZip32() Dim retcode As Long Dim MsgStr As String - Dim TotalSizeComp As Double - Dim TotalSize As Double - Dim NumMembers As Double '-- Set The UNZIP32.DLL Options '-- (WARNING!) Do Not Change - UZDCL.StructVersID = cUz_DCLStructVer ' Current version of this structure UZDCL.ExtractOnlyNewer = uExtractOnlyNewer ' 1 = Extract Only Newer/New UZDCL.SpaceToUnderscore = uSpaceUnderScore ' 1 = Convert Space To Underscore UZDCL.PromptToOverwrite = uPromptOverWrite ' 1 = Prompt To Overwrite Required @@ -600,80 +413,32 @@ '-- (WARNING!!!) Do Not Change UZUSER.UZDLLPrnt = FnPtr(AddressOf UZDLLPrnt) UZUSER.UZDLLSND = 0& '-- Not Supported - UZUSER.UZDLLREPLACE = FnPtr(AddressOf UZDLLReplacePrmt) + UZUSER.UZDLLREPLACE = FnPtr(AddressOf UZDLLRep) UZUSER.UZDLLPASSWORD = FnPtr(AddressOf UZDLLPass) - UZUSER.UZDLLMESSAGE_I32 = FnPtr(AddressOf UZReceiveDLLMessage_I32) - UZUSER.UZDLLSERVICE_I32 = FnPtr(AddressOf UZDLLServ_I32) + UZUSER.UZDLLMESSAGE = FnPtr(AddressOf UZReceiveDLLMessage) + UZUSER.UZDLLSERVICE = FnPtr(AddressOf UZDLLServ) '-- Set UNZIP32.DLL Version Space '-- (WARNING!!!) Do Not Change - With UZVER2 - .structlen = Len(UZVER2) - .beta = String$(10, vbNullChar) - .date = String$(20, vbNullChar) - .zlib = String$(10, vbNullChar) + With UZVER + .structlen = Len(UZVER) + .beta = Space$(9) & vbNullChar + .date = Space$(19) & vbNullChar + .zlib = Space$(9) & vbNullChar End With '-- Get Version - retcode = UzpVersion2(UZVER2) - If retcode <> 0 Then - MsgBox "Incompatible DLL version discovered!" & vbNewLine _ - & "The UnZip DLL requires a version structure of length " _ - & CStr(retcode) & ", but the VB frontend expects the DLL to need " _ - & Len(UZVER2) & "bytes." & vbNewLine _ - & vbNewLine & "The program cannot continue." _ - , vbCritical + vbOKOnly, App.Title - Exit Sub - End If - - ' Check that the DLL version is sufficiently recent - If (ConcatVersNums(UZVER2.unzip(1), UZVER2.unzip(2) _ - , UZVER2.unzip(3), UZVER2.unzip(4)) < _ - ConcatVersNums(cUzDLL_MinVer_Major, cUzDLL_MinVer_Minor _ - , cUzDLL_MinVer_Revis, 0)) Then - ' The found UnZip DLL is too old! - MsgBox "Incompatible old DLL version discovered!" & vbNewLine _ - & "This program requires an UnZip DLL version of at least " _ - & VersNumsToTxt(cUzDLL_MinVer_Major, cUzDLL_MinVer_Minor, cUzDLL_MinVer_Revis) _ - & ", but the version reported by the found DLL is only " _ - & VersNumsToTxt(UZVER2.unzip(1), UZVER2.unzip(2), UZVER2.unzip(3)) _ - & "." & vbNewLine _ - & vbNewLine & "The program cannot continue." _ - , vbCritical + vbOKOnly, App.Title - Exit Sub - End If - - ' Concatenate the DLL API version info into a single version id variable. - ' This variable may be used later on to switch between different - ' known variants of specific API calls or API structures. - m_UzDllApiVers = ConcatVersNums(UZVER2.dllapimin(1), UZVER2.dllapimin(2) _ - , UZVER2.dllapimin(3), UZVER2.dllapimin(4)) - ' check that the DLL API version is not too new - If (m_UzDllApiVers > _ - ConcatVersNums(cUzDLL_MaxAPI_Major, cUzDLL_MaxAPI_Minor _ - , cUzDLL_MaxAPI_Revis, 0)) Then - ' The found UnZip DLL is too new! - MsgBox "DLL version with incompatible API discovered!" & vbNewLine _ - & "This program can only handle UnZip DLL API versions up to " _ - & VersNumsToTxt(cUzDLL_MaxAPI_Major, cUzDLL_MaxAPI_Minor, cUzDLL_MaxAPI_Revis) _ - & ", but the found DLL reports a newer API version of " _ - & VersIDToTxt(m_UzDllApiVers) & "." & vbNewLine _ - & vbNewLine & "The program cannot continue." _ - , vbCritical + vbOKOnly, App.Title - Exit Sub - End If + Call UzpVersion2(UZVER) '-------------------------------------- '-- You Can Change This For Displaying '-- The Version Information! '-------------------------------------- - MsgStr$ = "DLL Date: " & szTrim(UZVER2.date) - MsgStr$ = MsgStr$ & vbNewLine$ & "Zip Info: " _ - & VersNumsToTxt(UZVER2.zipinfo(1), UZVER2.zipinfo(2), UZVER2.zipinfo(3)) - MsgStr$ = MsgStr$ & vbNewLine$ & "DLL Version: " _ - & VersNumsToTxt(UZVER2.windll(1), UZVER2.windll(2), UZVER2.windll(3)) - MsgStr$ = MsgStr$ & vbNewLine$ & "DLL API Compatibility: " _ - & VersIDToTxt(m_UzDllApiVers) + MsgStr$ = "DLL Date: " & szTrim(UZVER.date) + MsgStr$ = MsgStr$ & vbNewLine$ & "Zip Info: " & Hex$(UZVER.zipinfo(1)) & "." & _ + Hex$(UZVER.zipinfo(2)) & Hex$(UZVER.zipinfo(3)) + MsgStr$ = MsgStr$ & vbNewLine$ & "DLL Version: " & Hex$(UZVER.windll(1)) & "." & _ + Hex$(UZVER.windll(2)) & Hex$(UZVER.windll(3)) MsgStr$ = MsgStr$ & vbNewLine$ & "--------------" '-- End Of Version Information. @@ -684,30 +449,17 @@ '--------------------------------------------------------------- '-- If There Is An Error Display A MsgBox! - If retcode <> 0 Then _ - MsgBox "UnZip DLL call returned error code #" & CStr(retcode) _ - , vbExclamation, App.Title - - '-- Add up 64-bit values - TotalSizeComp = CnvI64Struct2Dbl(UZUSER.TotalSizeComp_Lo, _ - UZUSER.TotalSizeComp_Hi) - TotalSize = CnvI64Struct2Dbl(UZUSER.TotalSize_Lo, _ - UZUSER.TotalSize_Hi) - NumMembers = CnvI64Struct2Dbl(UZUSER.NumMembers_Lo, _ - UZUSER.NumMembers_Hi) + If retcode <> 0 Then MsgBox retcode '-- You Can Change This As Needed! '-- For Compression Information - MsgStr$ = MsgStr$ & vbNewLine & _ - "Only Shows If uExtractList = 1 List Contents" + MsgStr$ = MsgStr$ & vbNewLine & "Only Shows If uExtractList = 1 List Contents" MsgStr$ = MsgStr$ & vbNewLine & "--------------" MsgStr$ = MsgStr$ & vbNewLine & "Comment : " & UZUSER.cchComment - MsgStr$ = MsgStr$ & vbNewLine & "Total Size Comp : " _ - & Format$(TotalSizeComp, "#,0") - MsgStr$ = MsgStr$ & vbNewLine & "Total Size : " _ - & Format$(TotalSize, "#,0") + MsgStr$ = MsgStr$ & vbNewLine & "Total Size Comp : " & UZUSER.TotalSizeComp + MsgStr$ = MsgStr$ & vbNewLine & "Total Size : " & UZUSER.TotalSize MsgStr$ = MsgStr$ & vbNewLine & "Compress Factor : %" & UZUSER.CompFactor - MsgStr$ = MsgStr$ & vbNewLine & "Num Of Members : " & NumMembers + MsgStr$ = MsgStr$ & vbNewLine & "Num Of Members : " & UZUSER.NumMembers MsgStr$ = MsgStr$ & vbNewLine & "--------------" VBUnzFrm.txtMsgOut.Text = VBUnzFrm.txtMsgOut.Text & MsgStr$ & vbNewLine diff -Nru unzip-6.0/windll/vb/vbunzip.frm unzip-6.0/windll/vb/vbunzip.frm --- unzip-6.0/windll/vb/vbunzip.frm 2009-01-15 03:00:50.000000000 +0000 +++ unzip-6.0/windll/vb/vbunzip.frm 2010-05-14 07:26:14.000000000 +0000 @@ -20,24 +20,6 @@ ScaleHeight = 4785 ScaleWidth = 9375 StartUpPosition = 1 'Fenstermitte - Begin VB.CheckBox checkOverwriteAll - Alignment = 1 'Rechts ausgerichtet - Caption = "Overwrite all?" - BeginProperty Font - Name = "MS Sans Serif" - Size = 9.75 - Charset = 0 - Weight = 400 - Underline = 0 'False - Italic = 0 'False - Strikethrough = 0 'False - EndProperty - Height = 255 - Left = 240 - TabIndex = 5 - Top = 1320 - Width = 4425 - End Begin VB.TextBox txtZipFName BeginProperty Font Name = "Courier New" @@ -50,8 +32,8 @@ EndProperty Height = 375 Left = 4440 - TabIndex = 1 - Top = 120 + TabIndex = 5 + Top = 240 Width = 4335 End Begin VB.TextBox txtExtractRoot @@ -67,14 +49,14 @@ Height = 375 Left = 4440 TabIndex = 4 - Top = 720 + Top = 960 Width = 4335 End Begin VB.CommandButton cmdStartUnz Caption = "Start" Height = 495 Left = 240 - TabIndex = 6 + TabIndex = 3 Top = 1800 Width = 3255 End @@ -93,17 +75,15 @@ Locked = -1 'True MultiLine = -1 'True ScrollBars = 3 'Beides - TabIndex = 8 - TabStop = 0 'False + TabIndex = 2 Top = 2520 Width = 8895 End Begin VB.CommandButton cmdQuitVBUnz - Cancel = -1 'True Caption = "Quit" Height = 495 Left = 6240 - TabIndex = 7 + TabIndex = 1 Top = 1800 Width = 2895 End @@ -120,8 +100,8 @@ EndProperty Height = 375 Left = 8760 - TabIndex = 2 - Top = 120 + TabIndex = 0 + Top = 240 Width = 375 End Begin MSComDlg.CommonDialog CommonDialog1 @@ -144,8 +124,8 @@ EndProperty Height = 255 Left = 240 - TabIndex = 0 - Top = 120 + TabIndex = 7 + Top = 240 Width = 3855 End Begin VB.Label Label2 @@ -161,8 +141,8 @@ EndProperty Height = 255 Left = 240 - TabIndex = 3 - Top = 720 + TabIndex = 6 + Top = 960 Width = 3855 End End @@ -216,16 +196,6 @@ '-- Modified May 11, 2003 '-- by Christian Spieler '-- (use late binding for referencing the common dialog) -'-- Modified December 30, 2008 -'-- by Ed Gordon -'-- (add Overwrite_All checkbox and resizing of txtMsgOut -'-- output box) -'-- Modified January 03, 2009 -'-- by Christian Spieler -'-- (fixed tab navigation sequence, changed passing of -'-- "overwrite-all" setting to use existing option flags, -'-- cleared all msg buffer at start of every DLL call, -'-- removed code that is not supported by VB5) '-- '--------------------------------------------------------------- @@ -240,15 +210,15 @@ '-- Init Global Message Variables uZipInfo = "" - uZipMessage = "" uZipNumber = 0 ' Holds The Number Of Zip Files '-- Select UNZIP32.DLL Options - Change As Required! - ' 1 = Always Overwrite Files - uOverWriteFiles = Me.checkOverwriteAll.Value - ' 1 = Prompt To Overwrite - uPromptOverWrite = IIf(uOverWriteFiles = 0, 1, 0) + uPromptOverWrite = 1 ' 1 = Prompt To Overwrite + uOverWriteFiles = 0 ' 1 = Always Overwrite Files uDisplayComment = 0 ' 1 = Display comment ONLY!!! + + '-- Change The Next Line To Do The Actual Unzip! + uExtractList = 1 ' 1 = List Contents Of Zip 0 = Extract uHonorDirectories = 1 ' 1 = Honour Zip Directories '-- Select Filenames If Required @@ -270,11 +240,8 @@ '-- These Should Point To Your Directory uZipFileName = txtZipFName.Text uExtractDir = txtExtractRoot.Text - If Len(uExtractDir) <> 0 Then - uExtractList = 0 ' 0 = Extract if dir specified - Else - uExtractList = 1 ' 1 = List Contents Of Zip - End If + If uExtractDir <> "" Then uExtractList = 0 ' unzip if dir specified + '-- Let's Go And Unzip Them! Call VBUnZip32 @@ -282,13 +249,11 @@ '-- Tell The User What Happened If Len(uZipMessage) > 0 Then MsgTmp = uZipMessage - uZipMessage = "" End If '-- Display Zip File Information. If Len(uZipInfo) > 0 Then MsgTmp = MsgTmp & vbNewLine & "uZipInfo is:" & vbNewLine & uZipInfo - uZipInfo = "" End If '-- Display The Number Of Extracted Files! @@ -320,20 +285,6 @@ End Sub -Private Sub Form_Resize() - Dim Wid As Single - Dim Hei As Single - - Wid = Me.Width - 600 ' 9495 - 8895 - If Wid < 2000 Then Wid = 2000 - txtMsgOut.Width = Wid - - Hei = Me.Height - 3120 ' 5295 - 2175 - If Hei < 1000 Then Hei = 1000 - txtMsgOut.Height = Hei - -End Sub - Private Sub Form_Unload(Cancel As Integer) '-- remove runtime reference to common dialog control object Set mCommDlgCtrl = Nothing diff -Nru unzip-6.0/windll/vb/vbunzip.vbp unzip-6.0/windll/vb/vbunzip.vbp --- unzip-6.0/windll/vb/vbunzip.vbp 2009-01-04 00:45:12.000000000 +0000 +++ unzip-6.0/windll/vb/vbunzip.vbp 2010-05-14 07:26:14.000000000 +0000 @@ -17,7 +17,7 @@ AutoIncrementVer=0 ServerSupportFiles=0 VersionCompanyName="Info-ZIP" -VersionLegalCopyright="(c) Info-ZIP 1998-2009" +VersionLegalCopyright="(c) Info-ZIP 1998-2004" CompilationType=0 OptimizationType=0 FavorPentiumPro(tm)=0 diff -Nru unzip-6.0/windll/vb/vbunzip.vbw unzip-6.0/windll/vb/vbunzip.vbw --- unzip-6.0/windll/vb/vbunzip.vbw 1970-01-01 00:00:00.000000000 +0000 +++ unzip-6.0/windll/vb/vbunzip.vbw 2010-05-14 07:26:14.000000000 +0000 @@ -0,0 +1,2 @@ +VBUnzFrm = 22, 22, 715, 462, , 66, 66, 759, 506, C +VBUnzBas = 44, 44, 737, 484, diff -Nru unzip-6.0/windll/vc5/dll/unz32dll.dsp unzip-6.0/windll/vc5/dll/unz32dll.dsp --- unzip-6.0/windll/vc5/dll/unz32dll.dsp 2009-02-15 14:29:26.000000000 +0000 +++ unzip-6.0/windll/vc5/dll/unz32dll.dsp 2010-05-14 07:26:14.000000000 +0000 @@ -23,10 +23,6 @@ !MESSAGE "unz32dll - Win32 ASM Release" (based on\ "Win32 (x86) Dynamic-Link Library") !MESSAGE "unz32dll - Win32 ASM Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "unz32dll - Win32 Static Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "unz32dll - Win32 Static Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "unz32dll - Win32 ASM Static Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "unz32dll - Win32 ASM Static Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE # Begin Project @@ -140,110 +136,6 @@ # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"../Debug.ASM/app/unzip32.dll" /pdbtype:sept -!ELSEIF "$(CFG)" == "unz32dll - Win32 Static Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "StatRelease" -# PROP BASE Intermediate_Dir "StatRelease" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "../StatRelease/app" -# PROP Intermediate_Dir "StatRelease" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "WIN32" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../.." /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "WIN32" /D "WINDLL" /D "DLL" /D "USE_EF_UT_TIME" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" /d "WIN32" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /machine:I386 /out:"../StatRelease/app/unzip32.dll" - -!ELSEIF "$(CFG)" == "unz32dll - Win32 Static Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "StatDebug" -# PROP BASE Intermediate_Dir "StatDebug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "../StatDebug/app" -# PROP Intermediate_Dir "StatDebug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "WIN32" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "../../.." /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "WIN32" /D "WINDLL" /D "DLL" /D "USE_EF_UT_TIME" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" /d "WIN32" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"../StatDebug/app/unzip32.dll" /pdbtype:sept - -!ELSEIF "$(CFG)" == "unz32dll - Win32 ASM Static Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "StatRelease" -# PROP BASE Intermediate_Dir "StatRelease" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "../StatRelease.ASM/app" -# PROP Intermediate_Dir "StatRelease.ASM" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "WIN32" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../.." /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "WIN32" /D "WINDLL" /D "DLL" /D "USE_EF_UT_TIME" /D "ASM_CRC" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" /d "WIN32" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /machine:I386 /out:"../StatRelease.ASM/app/unzip32.dll" - -!ELSEIF "$(CFG)" == "unz32dll - Win32 ASM Static Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "StatDebug" -# PROP BASE Intermediate_Dir "StatDebug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "../StatDebug.ASM/app" -# PROP Intermediate_Dir "StatDebug.ASM" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "WIN32" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "../../.." /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "WIN32" /D "WINDLL" /D "DLL" /D "USE_EF_UT_TIME" /D "ASM_CRC" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" /d "WIN32" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"../StatDebug.ASM/app/unzip32.dll" /pdbtype:sept - !ENDIF # Begin Target @@ -252,10 +144,6 @@ # Name "unz32dll - Win32 Debug" # Name "unz32dll - Win32 ASM Release" # Name "unz32dll - Win32 ASM Debug" -# Name "unz32dll - Win32 Static Release" -# Name "unz32dll - Win32 Static Debug" -# Name "unz32dll - Win32 ASM Static Release" -# Name "unz32dll - Win32 ASM Static Debug" # Begin Source File SOURCE=..\..\..\api.c @@ -270,6 +158,10 @@ # End Source File # Begin Source File +SOURCE=..\..\..\crctab.c +# End Source File +# Begin Source File + SOURCE=..\..\..\crypt.c # End Source File # Begin Source File @@ -310,10 +202,6 @@ # End Source File # Begin Source File -SOURCE=..\..\..\ubz2err.c -# End Source File -# Begin Source File - SOURCE=..\..\..\unreduce.c # End Source File # Begin Source File @@ -326,10 +214,6 @@ # End Source File # Begin Source File -SOURCE=..\..\..\win32\win32i64.c -# End Source File -# Begin Source File - SOURCE=..\..\..\windll\windll.c # End Source File # Begin Source File diff -Nru unzip-6.0/windll/vc5/lib/unz32lib.dsp unzip-6.0/windll/vc5/lib/unz32lib.dsp --- unzip-6.0/windll/vc5/lib/unz32lib.dsp 2006-12-27 22:22:54.000000000 +0000 +++ unzip-6.0/windll/vc5/lib/unz32lib.dsp 2010-05-14 07:26:14.000000000 +0000 @@ -138,6 +138,10 @@ # End Source File # Begin Source File +SOURCE=..\..\..\crctab.c +# End Source File +# Begin Source File + SOURCE=..\..\..\crypt.c # End Source File # Begin Source File @@ -178,10 +182,6 @@ # End Source File # Begin Source File -SOURCE=..\..\..\ubz2err.c -# End Source File -# Begin Source File - SOURCE=..\..\..\unreduce.c # End Source File # Begin Source File @@ -198,10 +198,6 @@ # End Source File # Begin Source File -SOURCE=..\..\..\win32\win32i64.c -# End Source File -# Begin Source File - SOURCE=..\..\..\windll\windll.c # End Source File # Begin Source File diff -Nru unzip-6.0/windll/vc5/sfx/SFXWiz32.dsp unzip-6.0/windll/vc5/sfx/SFXWiz32.dsp --- unzip-6.0/windll/vc5/sfx/SFXWiz32.dsp 2008-02-16 03:48:06.000000000 +0000 +++ unzip-6.0/windll/vc5/sfx/SFXWiz32.dsp 2010-05-14 07:26:14.000000000 +0000 @@ -157,10 +157,6 @@ # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=..\..\..\windll\guisfx\dialog.h -# End Source File # End Group # Begin Group "Resource Files" diff -Nru unzip-6.0/windll/vc5/sfx/unzsfx32.dsp unzip-6.0/windll/vc5/sfx/unzsfx32.dsp --- unzip-6.0/windll/vc5/sfx/unzsfx32.dsp 2009-02-15 18:08:00.000000000 +0000 +++ unzip-6.0/windll/vc5/sfx/unzsfx32.dsp 2010-05-14 07:26:14.000000000 +0000 @@ -134,6 +134,10 @@ # End Source File # Begin Source File +SOURCE=..\..\..\crctab.c +# End Source File +# Begin Source File + SOURCE=..\..\..\crypt.c # End Source File # Begin Source File @@ -166,7 +170,8 @@ # End Source File # Begin Source File -SOURCE=..\..\..\ubz2err.c +SOURCE=..\..\..\windll\unzsfx32.def +# PROP Exclude_From_Build 1 # End Source File # Begin Source File @@ -174,10 +179,6 @@ # End Source File # Begin Source File -SOURCE=..\..\..\win32\win32i64.c -# End Source File -# Begin Source File - SOURCE=..\..\..\windll\windll.c # End Source File # End Target diff -Nru unzip-6.0/windll/vc5/unzip32.dsw unzip-6.0/windll/vc5/unzip32.dsw --- unzip-6.0/windll/vc5/unzip32.dsw 2009-02-15 13:57:02.000000000 +0000 +++ unzip-6.0/windll/vc5/unzip32.dsw 2010-05-14 07:26:14.000000000 +0000 @@ -18,21 +18,6 @@ ############################################################################### -Project: "c_dll_ex"=.\exampl\c_dll_ex.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name unz32dll - End Project Dependency -}}} - -############################################################################### - Project: "unz32dll"=.\dll\unz32dll.dsp - Package Owner=<4> Package=<5> diff -Nru unzip-6.0/windll/vc6/dll/unz32dll.dsp unzip-6.0/windll/vc6/dll/unz32dll.dsp --- unzip-6.0/windll/vc6/dll/unz32dll.dsp 2009-02-15 13:33:10.000000000 +0000 +++ unzip-6.0/windll/vc6/dll/unz32dll.dsp 2010-05-14 07:26:14.000000000 +0000 @@ -21,10 +21,6 @@ !MESSAGE "unz32dll - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "unz32dll - Win32 ASM Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "unz32dll - Win32 ASM Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "unz32dll - Win32 Static Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "unz32dll - Win32 Static Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "unz32dll - Win32 ASM Static Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "unz32dll - Win32 ASM Static Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE # Begin Project @@ -139,110 +135,6 @@ # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"../Debug.ASM/app/unzip32.dll" /pdbtype:sept -!ELSEIF "$(CFG)" == "unz32dll - Win32 Static Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "StatRelease" -# PROP BASE Intermediate_Dir "StatRelease" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "../StatRelease/app" -# PROP Intermediate_Dir "StatRelease" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "WIN32" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../.." /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "WIN32" /D "WINDLL" /D "DLL" /D "USE_EF_UT_TIME" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" /d "WIN32" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /machine:I386 /out:"../StatRelease/app/unzip32.dll" - -!ELSEIF "$(CFG)" == "unz32dll - Win32 Static Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "StatDebug" -# PROP BASE Intermediate_Dir "StatDebug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "../StatDebug/app" -# PROP Intermediate_Dir "StatDebug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "WIN32" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "../../.." /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "WIN32" /D "WINDLL" /D "DLL" /D "USE_EF_UT_TIME" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" /d "WIN32" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"../StatDebug/app/unzip32.dll" /pdbtype:sept - -!ELSEIF "$(CFG)" == "unz32dll - Win32 ASM Static Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "StatRelease" -# PROP BASE Intermediate_Dir "StatRelease" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "../StatRelease.ASM/app" -# PROP Intermediate_Dir "StatRelease.ASM" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "WIN32" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../.." /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "WIN32" /D "WINDLL" /D "DLL" /D "USE_EF_UT_TIME" /D "ASM_CRC" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" /d "WIN32" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /machine:I386 /out:"../StatRelease.ASM/app/unzip32.dll" - -!ELSEIF "$(CFG)" == "unz32dll - Win32 ASM Static Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "StatDebug" -# PROP BASE Intermediate_Dir "StatDebug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "../StatDebug.ASM/app" -# PROP Intermediate_Dir "StatDebug.ASM" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "WIN32" /YX /FD /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "../../.." /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "WIN32" /D "WINDLL" /D "DLL" /D "USE_EF_UT_TIME" /D "ASM_CRC" /YX /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" /d "WIN32" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib advapi32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"../StatDebug.ASM/app/unzip32.dll" /pdbtype:sept - !ENDIF # Begin Target @@ -251,10 +143,6 @@ # Name "unz32dll - Win32 Debug" # Name "unz32dll - Win32 ASM Release" # Name "unz32dll - Win32 ASM Debug" -# Name "unz32dll - Win32 Static Release" -# Name "unz32dll - Win32 Static Debug" -# Name "unz32dll - Win32 ASM Static Release" -# Name "unz32dll - Win32 ASM Static Debug" # Begin Source File SOURCE=..\..\..\api.c @@ -269,6 +157,10 @@ # End Source File # Begin Source File +SOURCE=..\..\..\crctab.c +# End Source File +# Begin Source File + SOURCE=..\..\..\crypt.c # End Source File # Begin Source File @@ -309,10 +201,6 @@ # End Source File # Begin Source File -SOURCE=..\..\..\ubz2err.c -# End Source File -# Begin Source File - SOURCE=..\..\..\unreduce.c # End Source File # Begin Source File @@ -325,10 +213,6 @@ # End Source File # Begin Source File -SOURCE=..\..\..\win32\win32i64.c -# End Source File -# Begin Source File - SOURCE=..\..\..\windll\windll.c # End Source File # Begin Source File diff -Nru unzip-6.0/windll/vc6/lib/unz32lib.dsp unzip-6.0/windll/vc6/lib/unz32lib.dsp --- unzip-6.0/windll/vc6/lib/unz32lib.dsp 2006-12-27 22:25:06.000000000 +0000 +++ unzip-6.0/windll/vc6/lib/unz32lib.dsp 2010-05-14 07:26:14.000000000 +0000 @@ -148,6 +148,10 @@ # End Source File # Begin Source File +SOURCE=..\..\..\crctab.c +# End Source File +# Begin Source File + SOURCE=..\..\..\crypt.c # End Source File # Begin Source File @@ -188,10 +192,6 @@ # End Source File # Begin Source File -SOURCE=..\..\..\ubz2err.c -# End Source File -# Begin Source File - SOURCE=..\..\..\unreduce.c # End Source File # Begin Source File @@ -208,10 +208,6 @@ # End Source File # Begin Source File -SOURCE=..\..\..\win32\win32i64.c -# End Source File -# Begin Source File - SOURCE=..\..\..\windll\windll.c # End Source File # Begin Source File diff -Nru unzip-6.0/windll/vc6/sfx/SFXWiz32.dsp unzip-6.0/windll/vc6/sfx/SFXWiz32.dsp --- unzip-6.0/windll/vc6/sfx/SFXWiz32.dsp 2008-02-16 04:25:30.000000000 +0000 +++ unzip-6.0/windll/vc6/sfx/SFXWiz32.dsp 2010-05-14 07:26:14.000000000 +0000 @@ -158,10 +158,6 @@ # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=..\..\..\windll\guisfx\dialog.h -# End Source File # End Group # Begin Group "Resource Files" diff -Nru unzip-6.0/windll/vc6/sfx/unzsfx32.dsp unzip-6.0/windll/vc6/sfx/unzsfx32.dsp --- unzip-6.0/windll/vc6/sfx/unzsfx32.dsp 2009-02-15 18:08:36.000000000 +0000 +++ unzip-6.0/windll/vc6/sfx/unzsfx32.dsp 2010-05-14 07:26:14.000000000 +0000 @@ -144,6 +144,10 @@ # End Source File # Begin Source File +SOURCE=..\..\..\crctab.c +# End Source File +# Begin Source File + SOURCE=..\..\..\crypt.c # End Source File # Begin Source File @@ -176,7 +180,8 @@ # End Source File # Begin Source File -SOURCE=..\..\..\ubz2err.c +SOURCE=..\..\..\windll\unzsfx32.def +# PROP Exclude_From_Build 1 # End Source File # Begin Source File @@ -184,10 +189,6 @@ # End Source File # Begin Source File -SOURCE=..\..\..\win32\win32i64.c -# End Source File -# Begin Source File - SOURCE=..\..\..\windll\windll.c # End Source File # End Target diff -Nru unzip-6.0/windll/vc6/unzip32.dsw unzip-6.0/windll/vc6/unzip32.dsw --- unzip-6.0/windll/vc6/unzip32.dsw 2009-01-03 16:45:18.000000000 +0000 +++ unzip-6.0/windll/vc6/unzip32.dsw 2010-05-14 07:26:14.000000000 +0000 @@ -3,7 +3,7 @@ ############################################################################### -Project: "SFXWiz"=".\sfx\SFXWiz32.dsp" - Package Owner=<4> +Project: "SFXWiz"=.\sfx\SFXWiz32.dsp - Package Owner=<4> Package=<5> {{{ @@ -18,22 +18,7 @@ ############################################################################### -Project: "c_dll_ex"=".\exampl\c_dll_ex.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name unz32dll - End Project Dependency -}}} - -############################################################################### - -Project: "unz32dll"=".\dll\unz32dll.dsp" - Package Owner=<4> +Project: "unz32dll"=.\dll\unz32dll.dsp - Package Owner=<4> Package=<5> {{{ @@ -45,7 +30,7 @@ ############################################################################### -Project: "unz32lib"=".\lib\unz32lib.dsp" - Package Owner=<4> +Project: "unz32lib"=.\lib\unz32lib.dsp - Package Owner=<4> Package=<5> {{{ @@ -57,7 +42,7 @@ ############################################################################### -Project: "unzsfx32"=".\sfx\unzsfx32.dsp" - Package Owner=<4> +Project: "unzsfx32"=.\sfx\unzsfx32.dsp - Package Owner=<4> Package=<5> {{{ diff -Nru unzip-6.0/windll/windll32.def unzip-6.0/windll/windll32.def --- unzip-6.0/windll/windll32.def 2008-02-06 04:33:10.000000000 +0000 +++ unzip-6.0/windll/windll32.def 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ ;module-definition file for Windows UnZip32 DLL -- used by link.exe LIBRARY UNZIP32 ; Library module name -;DESCRIPTION 'Windows Info-ZIP UnZip32 DLL by Mike White' +DESCRIPTION 'Windows Info-ZIP UnZip32 DLL by Mike White' ;CODE PRELOAD FIXED @@ -9,7 +9,6 @@ EXPORTS Wiz_SingleEntryUnzip - Wiz_SingleEntryUnzpList UzpVersion Wiz_Init Wiz_SetOpts diff -Nru unzip-6.0/windll/windll.c unzip-6.0/windll/windll.c --- unzip-6.0/windll/windll.c 2009-02-28 15:52:38.000000000 +0000 +++ unzip-6.0/windll/windll.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -28,9 +28,14 @@ ---------------------------------------------------------------------------*/ -#define __WINDLL_C /* identifies this source module */ - #define WIN32_LEAN_AND_MEAN +#include +#ifdef __RSXNT__ +# include "../win32/rsxntwin.h" +#endif +#ifdef __BORLANDC__ +#include +#endif #define UNZIP_INTERNAL #include "../unzip.h" #include "../crypt.h" @@ -38,7 +43,6 @@ #include "../windll/windll.h" #include "../windll/structs.h" #include "../consts.h" -#include /* Added type casts to prevent potential "type mismatch" error messages. */ #ifdef REENTRANT @@ -72,10 +76,6 @@ /* Dummy sound function for those applications that don't use sound */ static void WINAPI DummySound(void); -static int UnzipAllocMemory(unsigned, char *, char *, char ***, unsigned *); -static int UnzipParseString(LPCSTR, unsigned *, char ***); -static void UnzipFreeArguments(unsigned, char ***); - #ifndef UNZIPLIB /* DLL Entry Point */ @@ -96,33 +96,33 @@ #endif { #ifndef WIN32 - /* The startup code for the DLL initializes the local heap(if there is one) - * with a call to LocalInit which locks the data segment. - */ +/* The startup code for the DLL initializes the local heap(if there is one) + * with a call to LocalInit which locks the data segment. + */ - if ( wHeapSize != 0 ) - { - UnlockData( 0 ); - } - hInst = hInstance; - return 1; /* Indicate that the DLL was initialized successfully. */ +if ( wHeapSize != 0 ) + { + UnlockData( 0 ); + } +hInst = hInstance; +return 1; /* Indicate that the DLL was initialized successfully. */ #else - BOOL rc = TRUE; - switch( dwReason ) - { - case DLL_PROCESS_ATTACH: - // DLL is loaded. Do your initialization here. - // If cannot init, set rc to FALSE. - hInst = hInstance; - break; - - case DLL_PROCESS_DETACH: - // DLL is unloaded. Do your cleanup here. - break; - default: - break; - } - return rc; +BOOL rc = TRUE; +switch( dwReason ) + { + case DLL_PROCESS_ATTACH: + // DLL is loaded. Do your initialization here. + // If cannot init, set rc to FALSE. + hInst = hInstance; + break; + + case DLL_PROCESS_DETACH: + // DLL is unloaded. Do your cleanup here. + break; + default: + break; + } +return rc; #endif } @@ -131,186 +131,40 @@ #endif int FAR PASCAL WEP ( int bSystemExit ) { - return 1; +return 1; } #endif /* !UNZIPLIB */ -static int UnzipAllocMemory(unsigned int i, char *cmd, char *str, - char ***pargVee, unsigned int *pargCee) -{ - if (((*pargVee)[i] = (char *)malloc(sizeof(char) * strlen(cmd)+1 )) - == NULL) - { - if (pargCee != NULL) - (*pargCee)++; - UnzipFreeArguments(*pargCee, pargVee); - fprintf(stdout, "Unable to allocate memory in unzip library at %s\n", - str); - return PK_MEM; - } - strcpy((*pargVee)[i], cmd); - (*pargCee)++; - return PK_OK; -} - -static void UnzipFreeArguments(unsigned int argCee, char ***pargVee) -{ - unsigned i; - - /* Free the arguments in the arrays */ - for (i = 0; i < argCee; i++) - { - free ((*pargVee)[i]); - (*pargVee)[i] = NULL; - } - - /* Then free the arrays themselves */ - free(*pargVee); -} - - -static int UnzipParseString(LPCSTR s, unsigned int *pargCee, char ***pargVee) -{ - unsigned int i = 0; - char *str1, *str2, *str3; - size_t size; - - str1 = (char *) malloc(lstrlen(s)+4); - lstrcpy(str1, s); - lstrcat(str1, " @"); - - str2 = strchr(str1, '\"'); // get first occurance of double quote - - while ((str3 = strchr(str1, '\t')) != NULL) - { - str3[0] = ' '; // Change tabs into a single space - } - - /* Note that if a quoted string contains multiple adjacent spaces, they - will not be removed, because they could well point to a valid - folder/file name. - */ - while ((str2 = strchr(str1, '\"')) != NULL) - { - // Found an opening double quote; get the corresponding closing quote - str3 = strchr(str2+1, '\"'); - if (str3 == NULL) - { - free(str1); - return PK_PARAM; /* Something is screwy with the - string, bail out */ - } - str3[0] = '\0'; // terminate str2 with a NULL - - size = _msize(*pargVee); - if ((*pargVee = (char **)realloc(*pargVee, size + sizeof(char *))) - == NULL) - { - fprintf(stdout, "Unable to allocate memory in unzip dll\n"); - return PK_MEM; - } - // argCee is incremented in UnzipAllocMemory - if (UnzipAllocMemory(i, str2+1, "Creating file list from string", - pargVee, pargCee) != PK_OK) - { - free(str1); - return PK_MEM; - } - i++; - str3+=2; // Point past the whitespace character - str2[0] = '\0'; // Terminate str1 - lstrcat(str1, str3); - } // end while - - /* points to first occurance of a space */ - str2 = strchr(str1, ' '); - - /* Go through the string character by character, looking for instances - of two spaces together. Terminate when you find the trailing @ - */ - while ((str2[0] != '\0') && (str2[0] != '@')) - { - while ((str2[0] == ' ') && (str2[1] == ' ')) - { - str3 = &str2[1]; - str2[0] = '\0'; - lstrcat(str1, str3); - } - str2++; - } - - /* Do we still have a leading space? */ - if (str1[0] == ' ') - { - str3 = &str1[1]; - lstrcpy(str1, str3); // Dump the leading space - } - - - /* Okay, now we have gotten rid of any tabs and replaced them with - spaces, and have replaced multiple spaces with a single space. We - couldn't do this before because the folder names could have actually - contained these characters. - */ - - str2 = str3 = str1; - - while ((str2[0] != '\0') && (str3[0] != '@')) - { - str3 = strchr(str2+1, ' '); - str3[0] = '\0'; - size = _msize(pargVee); - if ((*pargVee = (char **)realloc(*pargVee, size + sizeof(char *))) - == NULL) - { - fprintf(stdout, "Unable to allocate memory in unzip dll\n"); - return PK_MEM; - } - if (UnzipAllocMemory(i, str2, "Creating file list from string", - pargVee, pargCee) != PK_OK) - { - free(str1); - return PK_MEM; - } - i++; - str3++; - str2 = str3; - } - free(str1); - return PK_OK; -} - /* DLL calls */ BOOL WINAPI Wiz_Init(pG, lpUserFunc) zvoid *pG; LPUSERFUNCTIONS lpUserFunc; { - G.message = DllMessagePrint; - G.statreportcb = Wiz_StatReportCB; - if (lpUserFunc->sound == NULL) - lpUserFunc->sound = DummySound; - G.lpUserFunctions = lpUserFunc; - - SETLOCALE(LC_CTYPE, ""); - - if (!G.lpUserFunctions->print || - !G.lpUserFunctions->sound || - !G.lpUserFunctions->replace) - return FALSE; +G.message = DllMessagePrint; +G.statreportcb = Wiz_StatReportCB; +if (lpUserFunc->sound == NULL) + lpUserFunc->sound = DummySound; +G.lpUserFunctions = lpUserFunc; + +SETLOCALE(LC_CTYPE, ""); + +if (!G.lpUserFunctions->print || + !G.lpUserFunctions->sound || + !G.lpUserFunctions->replace) + return FALSE; - return TRUE; +return TRUE; } /* - StructVersID = version of this structure (= UZ_DCL_STRUCTVER) - ExtractOnlyNewer = TRUE for "update" without interaction + ExtractOnlyNewer = true for "update" without interaction (extract only newer/new files, without queries) - SpaceToUnderscore = TRUE if convert space to underscore - PromptToOverwrite = TRUE if prompt to overwrite is wanted + SpaceToUnderscore = true if convert space to underscore + PromptToOverwrite = true if prompt to overwrite is wanted fQuiet = quiet flag: 0 = all messages, 1 = few messages, 2 = no messages - ncflag = write to stdout if TRUE + ncflag = write to stdout if true ntflag = test zip file nvflag = verbose listing nfflag = "freshen" (replace existing files by newer versions) @@ -319,24 +173,10 @@ 0 = junk paths from filenames 1 = "safe" usage of paths in filenames (skip "../") 2 = allow also unsafe path components (dir traversal) - noflag = always overwriting existing files if TRUE + noflag = true if you are to always overwrite existing files naflag = do end-of-line translation nZIflag = get ZipInfo if TRUE - B_flag = backup existing files if TRUE C_flag = be case insensitive if TRUE - D_flag = controls restoration of timestamps - 0 = restore all timestamps (default) - 1 = skip restoration of timestamps for folders - created on behalf of directory entries in the - Zip archive - 2 = do not restore any timestamps; extracted files - and directories get stamped with the current time - U_flag = controls UTF-8 filename coding support - 0 = automatic UTF-8 translation enabled (default) - 1 = recognize UTF-8 coded names, but all non-ASCII - characters are "escaped" into "#Uxxxx" - 2 = UTF-8 support is disabled, filename handling - works exactly as in previous UnZip versions fPrivilege = 1 => restore ACLs in user mode, 2 => try to use privileges for restoring ACLs lpszZipFN = zip file name @@ -348,9 +188,6 @@ zvoid *pG; LPDCL lpDCL; { - if (lpDCL->StructVersID != UZ_DCL_STRUCTVER) - return FALSE; - uO.qflag = lpDCL->fQuiet; /* Quiet flag */ G.pfnames = (char **)&fnames[0]; /* assign default file name vector */ G.pxnames = (char **)&fnames[1]; @@ -362,12 +199,7 @@ uO.vflag = lpDCL->nvflag; uO.zflag = lpDCL->nzflag; uO.aflag = lpDCL->naflag; -#ifdef UNIXBACKUP - uO.B_flag = lpDCL->B_flag; -#endif uO.C_flag = lpDCL->C_flag; - uO.D_flag = lpDCL->D_flag; - uO.U_flag = lpDCL->U_flag; uO.overwrite_all = lpDCL->noflag; uO.overwrite_none = !(lpDCL->noflag || lpDCL->PromptToOverwrite); uO.uflag = lpDCL->ExtractOnlyNewer || lpDCL->nfflag; @@ -406,14 +238,6 @@ #else # define pExDirRoot lpDCL->lpszExtractDir #endif - if (strlen(pExDirRoot) >= FILNAMSIZ) - { - /* The supplied extract root path exceed the filename size limit. */ -#ifndef CRTL_CP_IS_ISO - free(pExDirRoot); -#endif - return FALSE; - } uO.exdir = pExDirRoot; } else @@ -424,10 +248,6 @@ /* G.wildzipfn needs to be initialized so that do_wild does not wind up clearing out the zip file name when it returns in process.c */ - if (strlen(lpDCL->lpszZipFN) >= FILNAMSIZ) - /* length of supplied archive name exceed the system's filename limit */ - return FALSE; - hwildZipFN = GlobalAlloc(GPTR, FILNAMSIZ); if (hwildZipFN == (HGLOBAL) NULL) return FALSE; @@ -448,13 +268,6 @@ if (hwildZipFN) hwildZipFN = GlobalFree(hwildZipFN); -#ifndef CRTL_CP_IS_ISO - if (uO.exdir != NULL) { - free(uO.exdir); - uO.exdir = NULL; - } -#endif - uO.zipinfo_mode = FALSE; } @@ -465,132 +278,111 @@ int xfnc; char **xfnv; { - int retcode, f_cnt; +int retcode, f_cnt; #ifndef CRTL_CP_IS_ISO - unsigned bufsize; - char **intern_ifv = NULL, **intern_xfv = NULL; +char **intern_ifv = NULL, **intern_xfv = NULL; #endif - if (ifnv == (char **)NULL && ifnc != 0) - ifnc = 0; - else - for (f_cnt = 0; f_cnt < ifnc; f_cnt++) - if (ifnv[f_cnt] == (char *)NULL) { - ifnc = f_cnt; - break; - } - if (xfnv == (char **)NULL && xfnc != 0) - xfnc = 0; - else - for (f_cnt = 0; f_cnt < xfnc; f_cnt++) - if (xfnv[f_cnt] == (char *)NULL) { - xfnc = f_cnt; - break; - } +if (ifnv == (char **)NULL && ifnc != 0) + ifnc = 0; +else + for (f_cnt = 0; f_cnt < ifnc; f_cnt++) + if (ifnv[f_cnt] == (char *)NULL) { + ifnc = f_cnt; + break; + } +if (xfnv == (char **)NULL && xfnc != 0) + xfnc = 0; +else + for (f_cnt = 0; f_cnt < xfnc; f_cnt++) + if (xfnv[f_cnt] == (char *)NULL) { + xfnc = f_cnt; + break; + } - G.process_all_files = (ifnc == 0 && xfnc == 0); /* for speed */ - G.filespecs = ifnc; - G.xfilespecs = xfnc; - - if (ifnc > 0) { - for (f_cnt = ifnc; --f_cnt >= 0;) - if (strlen(ifnv[f_cnt]) > ((WSIZE>>2) - 160)) { - /* include filename pattern is too long for internal buffers */ - FreeDllMem(__G); - return PK_PARAM; - } +G.process_all_files = (ifnc == 0 && xfnc == 0); /* for speed */ +G.filespecs = ifnc; +G.xfilespecs = xfnc; +if (ifnc > 0) { #ifdef CRTL_CP_IS_ISO - G.pfnames = ifnv; + G.pfnames = ifnv; #else /* !CRTL_CP_IS_ISO */ - intern_ifv = (char **)malloc((ifnc+1)*sizeof(char **)); - if (intern_ifv == (char **)NULL) + unsigned bufsize = 0; + + intern_ifv = (char **)malloc((ifnc+1)*sizeof(char **)); + if (intern_ifv == (char **)NULL) { - FreeDllMem(__G); - return PK_BADERR; + FreeDllMem(__G); + return PK_BADERR; } - bufsize = 0; - for (f_cnt = ifnc; --f_cnt >= 0;) - bufsize += strlen(ifnv[f_cnt]) + 1; - intern_ifv[0] = (char *)malloc(bufsize); - if (intern_ifv[0] == (char *)NULL) + for (f_cnt = ifnc; --f_cnt >= 0;) + bufsize += strlen(ifnv[f_cnt]) + 1; + intern_ifv[0] = (char *)malloc(bufsize); + if (intern_ifv[0] == (char *)NULL) { - free(intern_ifv); - FreeDllMem(__G); - return PK_BADERR; + free(intern_ifv); + FreeDllMem(__G); + return PK_BADERR; } - for (f_cnt = 0; ; f_cnt++) + for (f_cnt = 0; ; f_cnt++) { - ISO_TO_INTERN(ifnv[f_cnt], intern_ifv[f_cnt]); - if ((f_cnt+1) >= ifnc) - break; - intern_ifv[f_cnt+1] = intern_ifv[f_cnt] + - (strlen(intern_ifv[f_cnt]) + 1); + ISO_TO_INTERN(ifnv[f_cnt], intern_ifv[f_cnt]); + if ((f_cnt+1) >= ifnc) + break; + intern_ifv[f_cnt+1] = intern_ifv[f_cnt] + + (strlen(intern_ifv[f_cnt]) + 1); } - intern_ifv[ifnc] = (char *)NULL; - G.pfnames = intern_ifv; + intern_ifv[ifnc] = (char *)NULL; + G.pfnames = intern_ifv; #endif /* ?CRTL_CP_IS_ISO */ } - if (xfnc > 0) { - for (f_cnt = xfnc; --f_cnt >= 0;) - if (strlen(xfnv[f_cnt]) > ((WSIZE>>2) - 160)) - { - /* exclude filename pattern is too long for internal buffers */ -#ifndef CRTL_CP_IS_ISO - if (ifnc > 0) - { - free(intern_ifv[0]); - free(intern_ifv); - } -#endif - FreeDllMem(__G); - return PK_PARAM; - } - +if (xfnc > 0) { #ifdef CRTL_CP_IS_ISO - G.pxnames = xfnv; + G.pxnames = xfnv; #else /* !CRTL_CP_IS_ISO */ - intern_xfv = (char **)malloc((xfnc+1)*sizeof(char **)); - if (intern_xfv == (char **)NULL) + unsigned bufsize = 0; + + intern_xfv = (char **)malloc((xfnc+1)*sizeof(char **)); + if (intern_xfv == (char **)NULL) { - if (ifnc > 0) + if (ifnc > 0) { - free(intern_ifv[0]); - free(intern_ifv); + free(intern_ifv[0]); + free(intern_ifv); } - FreeDllMem(__G); - return PK_BADERR; + FreeDllMem(__G); + return PK_BADERR; } - bufsize = 0; - for (f_cnt = xfnc; --f_cnt >= 0;) - bufsize += strlen(xfnv[f_cnt]) + 1; - intern_xfv[0] = (char *)malloc(bufsize); - if (intern_xfv[0] == (char *)NULL) + for (f_cnt = xfnc; --f_cnt >= 0;) + bufsize += strlen(xfnv[f_cnt]) + 1; + intern_xfv[0] = (char *)malloc(bufsize); + if (intern_xfv[0] == (char *)NULL) { - free(intern_xfv); - if (ifnc > 0) + free(intern_xfv); + if (ifnc > 0) { - free(intern_ifv[0]); - free(intern_ifv); + free(intern_ifv[0]); + free(intern_ifv); } - FreeDllMem(__G); - return PK_BADERR; + FreeDllMem(__G); + return PK_BADERR; } - for (f_cnt = 0; ; f_cnt++) + for (f_cnt = 0; ; f_cnt++) { - ISO_TO_INTERN(xfnv[f_cnt], intern_xfv[f_cnt]); - if ((f_cnt+1) >= xfnc) - break; - intern_xfv[f_cnt+1] = intern_xfv[f_cnt] + - (strlen(intern_xfv[f_cnt]) + 1); + ISO_TO_INTERN(xfnv[f_cnt], intern_xfv[f_cnt]); + if ((f_cnt+1) >= xfnc) + break; + intern_xfv[f_cnt+1] = intern_xfv[f_cnt] + + (strlen(intern_xfv[f_cnt]) + 1); } - intern_xfv[xfnc] = (char *)NULL; - G.pxnames = intern_xfv; + intern_xfv[xfnc] = (char *)NULL; + G.pxnames = intern_xfv; #endif /* ?CRTL_CP_IS_ISO */ } @@ -598,175 +390,92 @@ Okey dokey, we have everything we need to get started. Let's roll. ---------------------------------------------------------------------------*/ - retcode = setjmp(dll_error_return); - if (retcode) - { +retcode = setjmp(dll_error_return); +if (retcode) + { #ifndef CRTL_CP_IS_ISO - if (xfnc > 0) - { - free(intern_xfv[0]); - free(intern_xfv); - } - if (ifnc > 0) - { - free(intern_ifv[0]); - free(intern_ifv); - } + if (xfnc > 0) + { + free(intern_xfv[0]); + free(intern_xfv); + } + if (ifnc > 0) + { + free(intern_ifv[0]); + free(intern_ifv); + } #endif - FreeDllMem(__G); - return PK_BADERR; - } + FreeDllMem(__G); + return PK_BADERR; + } - retcode = process_zipfiles(__G); +retcode = process_zipfiles(__G); #ifndef CRTL_CP_IS_ISO - if (xfnc > 0) - { - free(intern_xfv[0]); - free(intern_xfv); - } - if (ifnc > 0) - { - free(intern_ifv[0]); - free(intern_ifv); - } +if (xfnc > 0) + { + free(intern_xfv[0]); + free(intern_xfv); + } +if (ifnc > 0) + { + free(intern_ifv[0]); + free(intern_ifv); + } #endif - FreeDllMem(__G); - return retcode; +FreeDllMem(__G); +return retcode; } -/* -ifnc = number of file names being passed. If all files are to be - extracted, then this can be zero. -ifnv = file names to be unarchived. Wildcard patterns are recognized - and expanded. If all files are to be extracted, then this can - be NULL. -xfnc = number of "file names to be excluded from processing" being - passed. If all files are to be extracted, set this to zero. -xfnv = file names to be excluded from the unarchiving process. Wildcard - characters are allowed and expanded. If all files are to be - extracted, set this argument to NULL. -lpDCL = pointer to a structure with the flags for setting the - various options, as well as the zip file name. -lpUserFunc = pointer to a structure that contains pointers to functions - in the calling application, as well as sizes passed back to - the calling application etc. -*/ - int WINAPI Wiz_SingleEntryUnzip(int ifnc, char **ifnv, int xfnc, char **xfnv, LPDCL lpDCL, LPUSERFUNCTIONS lpUserFunc) { - int retcode; - CONSTRUCTGLOBALS(); +int retcode; +CONSTRUCTGLOBALS(); - if (!Wiz_Init((zvoid *)&G, lpUserFunc)) +if (!Wiz_Init((zvoid *)&G, lpUserFunc)) { - DESTROYGLOBALS(); - return PK_BADERR; + DESTROYGLOBALS(); + return PK_BADERR; } - if (lpDCL->lpszZipFN == NULL) +if (lpDCL->lpszZipFN == NULL) { - /* Something has screwed up, we don't have a filename */ - DESTROYGLOBALS(); - return PK_NOZIP; + /* Something has screwed up, we don't have a filename */ + DESTROYGLOBALS(); + return PK_NOZIP; } - if (!Wiz_SetOpts((zvoid *)&G, lpDCL)) +if (!Wiz_SetOpts((zvoid *)&G, lpDCL)) { - DESTROYGLOBALS(); - return PK_MEM; + DESTROYGLOBALS(); + return PK_MEM; } #ifdef SFX - G.zipfn = lpDCL->lpszZipFN; - G.argv0 = lpDCL->lpszZipFN; +G.zipfn = lpDCL->lpszZipFN; +G.argv0 = lpDCL->lpszZipFN; #endif - /* Here is the actual call to "unzip" the files (or whatever else you - * are doing.) - */ - retcode = Wiz_Unzip((zvoid *)&G, ifnc, ifnv, xfnc, xfnv); - - DESTROYGLOBALS(); - return retcode; -} - - -/* -This calling wrapper provided a method to pass file lists as plain strings -instead of the usual string arrays. For VB Users only... -ifnc = number of file names being passed. If all files are to be - extracted, then this can be zero. -ExtList = Pointer to a list of file names to be extracted, separated by - white space. If all files are to be extracted, then this should - be NULL. Parameter ifnc should have an accurate count of the - number of filenames being passed in. -xfnc = number of "file names to be excluded from processing" being - passed. If all files are to be extracted, set this to zero. -ExcList = Pointer to a list of file names to be excluded from processing. - Parameter xfnc should have an accurate count of the number of - the number of filenames being passed in. -lpDCL = pointer to a structure with the flags for setting the - various options, as well as the zip file name. -lpUserFunc = pointer to a structure that contains pointers to functions - in the calling application, as well as sizes passed back to - the calling application etc. -*/ - -int WINAPI Wiz_SingleEntryUnzpList(unsigned int ifnc, LPCSTR ExtList, - unsigned int xfnc, LPCSTR ExcList, - LPDCL lpDCL, LPUSERFUNCTIONS lpUserFunc) -{ - int retcode; - char **argVExt, **argVExc; - unsigned int argCExt, argCExc; - - argCExt = argCExc = 0; - - if (ExtList != NULL) - { - if ((argVExt = (char **)malloc((ifnc)*sizeof(char *))) == NULL) - { - fprintf(stdout, "Unable to allocate memory in unzip dll\n"); - return PK_MEM; - } - if ((retcode = UnzipParseString(ExtList, &argCExt, &argVExt)) != PK_OK) - return retcode; - } - - if (ExcList != NULL) - { - if ((argVExc = (char **)malloc((ifnc)*sizeof(char *))) == NULL) - { - fprintf(stdout, "Unable to allocate memory in unzip dll\n"); - UnzipFreeArguments(argCExt, &argVExt); - return PK_MEM; - } - if ((retcode = UnzipParseString(ExcList, &argCExc, &argVExc)) != PK_OK) - { - UnzipFreeArguments(argCExt, &argVExt); - return retcode; - } - } +/* Here is the actual call to "unzip" the files (or whatever else you + * are doing.) + */ +retcode = Wiz_Unzip((zvoid *)&G, ifnc, ifnv, xfnc, xfnv); - retcode = Wiz_SingleEntryUnzip(argCExt, argVExt, argCExc, argVExc, - lpDCL, lpUserFunc); - UnzipFreeArguments(argCExc, &argVExc); - UnzipFreeArguments(argCExt, &argVExt); - return retcode; +DESTROYGLOBALS(); +return retcode; } int win_fprintf(zvoid *pG, FILE *file, unsigned int size, char far *buffer) { - if ((file != stderr) && (file != stdout)) +if ((file != stderr) && (file != stdout)) { - return write(fileno(file),(char far *)(buffer),size); + return write(fileno(file),(char far *)(buffer),size); } - if (!fNoPrinting) - return G.lpUserFunctions->print((LPSTR)buffer, size); - return (int)size; +if (!fNoPrinting) + return G.lpUserFunctions->print((LPSTR)buffer, size); +return (int)size; } /********************************** @@ -783,10 +492,10 @@ ulg size; /* length of string (may include nulls) */ int flag; /* flag bits */ { - if (!fNoPrinting) - return G.lpUserFunctions->print((LPSTR)buf, size); - else - return (int)size; +if (!fNoPrinting) + return G.lpUserFunctions->print((LPSTR)buf, size); +else + return (int)size; } #if 0 /* currently unused */ @@ -804,9 +513,7 @@ ulg size; /* length of string (may include nulls) */ int flag; /* flag bits */ { - return (!fNoPrinting - ? G.lpUserFunctions->print((LPSTR)buf, size) - : (int)size); +return (!fNoPrinting ? G.lpUserFunctions->print((LPSTR)buf, size) : (int)size); } #endif /* never */ @@ -828,7 +535,7 @@ ZCONST char *efn; /* name of archiv entry being processed */ { #if CRYPT - LPCSTR m; + LPSTR m; if (*rcnt == 0) { *rcnt = 2; @@ -838,7 +545,7 @@ m = "Password incorrect--reenter: "; } - return (*G.lpUserFunctions->password)((LPSTR)pwbuf, size, m, (LPCSTR)efn); + return (*G.lpUserFunctions->password)((LPSTR)pwbuf, size, m, (LPSTR)efn); #else /* !CRYPT */ return IZ_PW_ERROR; /* internal error, function should never get called */ #endif /* ?CRYPT */ @@ -847,7 +554,7 @@ /* Turn off all messages to the calling application */ void WINAPI Wiz_NoPrinting(int f) { - fNoPrinting = f; +fNoPrinting = f; } /* Dummy sound function for those applications that don't use sound */ @@ -874,25 +581,8 @@ if ((G.lpUserFunctions->ServCallBk != NULL) && (*G.lpUserFunctions->ServCallBk)(efn, (details == NULL ? 0L : -#ifdef Z_UINT8_DEFINED - (z_uint8)(*((zusz_t *)details)) -#else - *((zusz_t *)details) -#endif - ))) + *((unsigned long *)details)))) rval = UZ_ST_BREAK; - else if (G.lpUserFunctions->ServCallBk_i32 != NULL) { - unsigned long siz_u4L = 0L; - unsigned long siz_u4H = 0L; - if (details != NULL) { - siz_u4L = (unsigned long)(*(zusz_t *)details); -#ifdef ZIP64_SUPPORT - siz_u4H = (unsigned long)((*(zusz_t *)details) >> 32); -#endif - } - if ((*G.lpUserFunctions->ServCallBk_i32)(efn, siz_u4L, siz_u4H)) - rval = UZ_ST_BREAK; - } break; case UZ_ST_IN_PROGRESS: break; @@ -961,7 +651,7 @@ Parameters: archive = archive name file = file contained in the archive. This cannot be - a wildcard to be meaningful + a wild card to be meaningful pattern = string to search for cmd = 0 - case-insensitive search 1 - case-sensitve search diff -Nru unzip-6.0/windll/windllgcc.def unzip-6.0/windll/windllgcc.def --- unzip-6.0/windll/windllgcc.def 2008-02-06 04:33:14.000000000 +0000 +++ unzip-6.0/windll/windllgcc.def 2010-05-14 07:26:14.000000000 +0000 @@ -1,11 +1,10 @@ LIBRARY UNZIP32 -;DESCRIPTION 'Windows Info-ZIP UnZip32 DLL by Mike White' +DESCRIPTION 'Windows Info-ZIP UnZip32 DLL by Mike White' EXPORTS Wiz_SingleEntryUnzip=Wiz_SingleEntryUnzip@24 - Wiz_SingleEntryUnzpList=Wiz_SingleEntryUnzpList@24 UzpVersion=UzpVersion@0 Wiz_Init=Wiz_Init@8 Wiz_SetOpts=Wiz_SetOpts@8 diff -Nru unzip-6.0/windll/windll_lc.def unzip-6.0/windll/windll_lc.def --- unzip-6.0/windll/windll_lc.def 2009-01-18 20:47:58.000000000 +0000 +++ unzip-6.0/windll/windll_lc.def 2010-05-14 07:26:14.000000000 +0000 @@ -1,9 +1,10 @@ LIBRARY UNZIP32 +DESCRIPTION 'Windows Info-ZIP UnZip32 DLL by Mike White' + EXPORTS Wiz_SingleEntryUnzip=Wiz_SingleEntryUnzip - Wiz_SingleEntryUnzpList=Wiz_SingleEntryUnzpList UzpVersion=UzpVersion Wiz_Init=Wiz_Init Wiz_SetOpts=Wiz_SetOpts diff -Nru unzip-6.0/windll/windll.rc unzip-6.0/windll/windll.rc --- unzip-6.0/windll/windll.rc 2009-01-03 13:28:42.000000000 +0000 +++ unzip-6.0/windll/windll.rc 2010-05-14 07:26:14.000000000 +0000 @@ -8,14 +8,8 @@ FILEVERSION UZ_MAJORVER,UZ_MINORVER,UZ_PATCHLEVEL,0 PRODUCTVERSION UZ_MAJORVER,UZ_MINORVER,UZ_PATCHLEVEL,0 FILEFLAGSMASK 0x3L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif FILEOS VOS__WINDOWS32 FILETYPE VFT_DLL -FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN @@ -25,18 +19,14 @@ BLOCK "040904E4" #endif BEGIN - VALUE "Comments", "\0" VALUE "CompanyName", IZ_COMPANY_NAME "\0" VALUE "FileDescription", "Info-ZIP's UnZip DLL for Win32\0" VALUE "FileVersion", UZ_VER_STRING "\0" VALUE "InternalName", "UnZip32\0" - VALUE "LegalCopyright", "Info-ZIP 1996-2009\0" - VALUE "LegalTrademarks", "\0" + VALUE "LegalCopyright", "Info-ZIP 1996-2005\0" VALUE "OriginalFilename", "UNZIP32.DLL\0" - VALUE "PrivateBuild", "\0" VALUE "ProductName", "Info-ZIP's UnZip Windows DLL\0" VALUE "ProductVersion", UZ_VER_STRING "\0" - VALUE "SpecialBuild", "\0" END END BLOCK "VarFileInfo" diff -Nru unzip-6.0/windll/windll.txt unzip-6.0/windll/windll.txt --- unzip-6.0/windll/windll.txt 2009-01-18 21:54:38.000000000 +0000 +++ unzip-6.0/windll/windll.txt 2010-05-14 07:26:14.000000000 +0000 @@ -24,83 +24,32 @@ the calling application etc. See below for a detailed description of all the parameters. -This calling wrapper for Wiz_SingleEntryUnzip() provides a method to pass -file lists as plain strings instead of the usual string arrays. -For VB Users only...: - -int WINAPI Wiz_SingleEntryUnzpList(unsigned int ifnc, LPCSTR ExtList, - unsigned int xfnc, LPCSTR ExcList, - LPDCL lpDCL, LPUSERFUNCTIONS lpUserFunc) - -ifnc = number of file names being passed. If all files are to be - extracted, then this can be zero. -ExtList = Pointer to a list of file names to be extracted, separated by - white space. If all files are to be extracted, then this should - be NULL. Parameter ifnc should have an accurate count of the - number of filenames being passed in. -xfnc = number of "file names to be excluded from processing" being - passed. If all files are to be extracted, set this to zero. -ExcList = Pointer to a list of file names to be excluded from processing. - Parameter xfnc should have an accurate count of the number of - the number of filenames being passed in. -lpDCL = pointer to a structure with the flags for setting the - various options, as well as the zip file name. -lpUserFunc = pointer to a structure that contains pointers to functions - in the calling application, as well as sizes passed back to - the calling application etc. - - -The DCL structure collects the set of option flags supported by the WinDLL -interface to control the operation of the main function calls. -The first member of this structure is now a version identifier that should -be used to check structural compatibility of a passed option struct with -the expected structure layout. The C header file containing the reference -definition of the DCL structure also provides a symbol denoting the currently -valid StructVersID: - -#define UZ_DCL_STRUCTVER 0x600 - -The layout of the DCL structure is shown below: +The DCL structure is shown below: typedef struct { - unsigned StructVersID = struct version id (= UZ_DCL_STRUCTVER) - int ExtractOnlyNewer = TRUE for "update" without interaction +int ExtractOnlyNewer = true for "update" without interaction (extract only newer/new files, without queries) - int SpaceToUnderscore = TRUE if convert space to underscore - int PromptToOverwrite = TRUE if prompt to overwrite is wanted - int fQuiet = quiet flag: +int SpaceToUnderscore = true if convert space to underscore +int PromptToOverwrite = true if prompt to overwrite is wanted +int fQuiet = quiet flag: 0 = all messages, 1 = few messages, 2 = no messages - int ncflag = write to stdout if TRUE - int ntflag = test zip file - int nvflag = verbose listing - int nfflag = "freshen" (replace existing files by newer versions) - int nzflag = display zip file comment - int ndflag = controls (sub)directory recreation during extraction +int ncflag = write to stdout if true +int ntflag = test zip file +int nvflag = verbose listing +int nfflag = "freshen" (replace existing files by newer versions) +int nzflag = display zip file comment +int ndflag = controls (sub)directory recreation during extraction 0 = junk paths from filenames 1 = "safe" usage of paths in filenames (skip "../") 2 = allow also unsafe path components (dir traversal) - int noflag = always overwriting existing files if TRUE - int naflag = do end-of-line translation - int nZIflag = get ZipInfo if TRUE - int B_flag = backup existing files if TRUE - int C_flag = be case insensitive if TRUE - int D_flag = controls restoration of timestamps - 0 = restore all timestamps (default) - 1 = skip restoration of timestamps for folders - created on behalf of directory entries in the - Zip archive - 2 = do not restore any timestamps; extracted files - and directories get stamped with the current time - int U_flag = controls UTF-8 filename coding support - 0 = automatic UTF-8 translation enabled (default) - 1 = recognize UTF-8 coded names, but all non-ASCII - characters are "escaped" into "#Uxxxx" - 2 = UTF-8 support is disabled, filename handling - works exactly as in previous UnZip versions - int fPrivilege = 1 => restore ACLs in user mode, +int noflag = true if you are to always overwrite existing files +int naflag = do end-of-line translation +int nZIflag = get ZipInfo if TRUE +int C_flag = be case insensitive if TRUE +int fPrivilege = 1 => restore ACLs in user mode, 2 => try to use privileges for restoring ACLs - LPSTR lpszZipFN = zip file name - LPSTR lpszExtractDir = directory to extract to. This should be NULL if you +LPSTR lpszZipFN = zip file name +LPSTR lpszExtractDir = directory to extract to. This should be NULL if you are extracting to the current directory. } DCL, far * LPDCL; @@ -127,7 +76,7 @@ --------------------------------------------------------------------- Legend: true: integer number <> 0 false: integer number 0 - N/A: not applicable, could be set to any value + N/A: not applicable, could be set to any value NOTES: 1) The UnZip options are explained in the generic UnZip manual, see "unzip.txt" or "man/unzip.1". @@ -152,77 +101,49 @@ typedef unsigned short ush; typedef int (WINAPI DLLPRNT) (LPSTR, unsigned long); -typedef int (WINAPI DLLPASSWORD) (LPSTR pwbuf, int bufsiz, - LPCSTR promptmsg, LPCSTR entryname); -typedef int (WINAPI DLLSERVICE) (LPCSTR entryname, z_uint8 uncomprsiz); -typedef int (WINAPI DLLSERVICE_I32) (LPCSTR entryname, - unsigned long ucsz_lo, unsigned long ucsz_hi); +typedef int (WINAPI DLLPASSWORD) (LPSTR, int, LPCSTR, LPCSTR); +typedef int (WINAPI DLLSERVICE) (LPSTR, unsigned long); typedef void (WINAPI DLLSND) (void); -typedef int (WINAPI DLLREPLACE) (LPSTR efnam, unsigned efbufsiz); -typedef void (WINAPI DLLMESSAGE) (z_uint8 ucsize, z_uint8 csize, - unsigned cfactor, - unsigned mo, unsigned dy, unsigned yr, unsigned hh, unsigned mm, - char c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, char fCrypt); -typedef void (WINAPI DLLMESSAGE_I32) (unsigned long ucsiz_l, - unsigned long ucsiz_h, unsigned long csiz_l, unsigned long csiz_h, - unsigned cfactor, - unsigned mo, unsigned dy, unsigned yr, unsigned hh, unsigned mm, - char c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, char fCrypt); +typedef int (WINAPI DLLREPLACE)(LPSTR); +typedef void (WINAPI DLLMESSAGE)(unsigned long, unsigned long, unsigned, + unsigned, unsigned, unsigned, unsigned, unsigned, + char, LPSTR, LPSTR, unsigned long, char); Structure USERFUNCTIONS typedef struct { - DLLPRNT *print; = a pointer to the application's print routine. - DLLSND *sound; = a pointer to the application's sound routine. This +DLLPRNT *print; = a pointer to the application's print routine. +DLLSND *sound; = a pointer to the application's sound routine. This can be NULL if your application doesn't use sound. - DLLREPLACE *replace = a pointer to the application's replace routine. The - replace routine may modify the content of the efnam - string buffer, but must not write beyond its fixed - size of efbufsiz bytes! (This is a potential security - leak of the windll interface.) When modifying the - efnam buffer, the replace routine should return - the status IDM_REPLACE_RENAME. - DLLPASSWORD *password = a pointer to the application's password routine. - This function should return one of the status values - IZ_PW_ENTERED (0), IZ_PW_CANCEL (-1), - IZ_PW_CANCEL_ALL (-2), IZ_PW_ERROR (5). - DLLMESSAGE *SendApplicationMessage = a pointer to the application's routine +DLLREPLACE *replace = a pointer to the application's replace routine. +DLLPASSWORD *password = a pointer to the application's password routine. +DLLMESSAGE *SendApplicationMessage = a pointer to the application's routine for displaying information about specific files in the archive. Used for listing the contents of an archive. - DLLSERVICE *ServCallBk = Callback function designed to be used for +DLLSERVICE *ServCallBk = Callback function designed to be used for allowing the application to process Windows messages, or canceling the operation, as well as giving the option of a progress indicator. If this function returns a non-zero value, then it will terminate what it is doing. It provides the application with - the name of the archive member it has just processed, - as well as it's original size. - DLLMESSAGE_I32 *SendApplicationMessage_i32 = variant of SendApplicationMessage - callback, for environments that do not support the - 64-bit integer types required to transfer "large" - ZIP64-compatible sizes. - DLLSERVICE_I32 *ServCallBk_i32 = variant of the ServCallBk callback function, - for environments that do not support 64-bit integers. - [NOTE: The _i32 variants of the SendApplicationMessage and ServCallBk callback - functions are only called when the corresponding "regular" callback - function pointers are set to NULL. For the i386 architecture, the - "..._i32" calling interfaces are binary identical with the - corresponding regular __int64-aware interfaces.] - [NOTE: The values below are filled in only when listing the contents of an - archive.] - z_uint8 TotalSizeComp = value to be filled in by the dll for the + the name of the name of the archive member it has + just processed, as well as it's original size. +NOTE: The values below are filled in only when listing the contents of an + archive. + +unsigned long TotalSizeComp = value to be filled in by the dll for the compressed total size of the archive. Note this value does not include the size of the archive header and central directory list. - z_uint8 TotalSize = value to be filled in by the dll for the total +unsigned long TotalSize = value to be filled in by the dll for the total size of all files in the archive. - z_uint8 NumMembers = total number of files in the archive. - unsigned CompFactor = value to be filled in by the dll for the overall +unsigned long CompFactor = value to be filled in by the dll for the overall compression factor. This could actually be computed from the other values, but it is available. - WORD cchComment = flag to be set if archive has a comment +unsigned long NumMembers = total number of files in the archive. +WORD cchComment; = flag to be set if archive has a comment } USERFUNCTIONS, far * LPUSERFUNCTIONS; Wiz_SingleEntryUnzip() returns a PKWARE compatible error code (0 if no @@ -241,21 +162,20 @@ Additional entry points: - const UzpVer * WINAPI UzpVersion(void); + void WINAPI UzpVersion2(UzpVer far *); where UzpVer is defined as: typedef struct _UzpVer { - ulg structlen; /* length of the struct being passed */ - ulg flag; /* bit 0: is_beta bit 1: uses_zlib */ - LPCSTR betalevel; /* e.g. "g BETA" or "" */ - LPCSTR date; /* e.g. "9 Oct 08" (beta) or "9 October 2008" */ - LPCSTR zlib_version; /* e.g. "1.2.3" or NULL */ - _version_type unzip; /* current UnZip version */ - _version_type zipinfo; /* current ZipInfo version */ - _version_type os2dll; /* OS2DLL version (retained for compatibility) */ - _version_type windll; /* WinDLL version (retained for compatibility) */ - _version_type dllapimin; /* last incompatible change of library API */ + ulg structlen; /* length of the struct being passed */ + ulg flag; /* bit 0: is_beta bit 1: uses_zlib */ + LPSTR betalevel; /* e.g., "g BETA" or "" */ + LPSTR date; /* e.g., "4 Sep 95" (beta) or "4 September 1995" */ + LPSTR zlib_version; /* e.g., "1.0.5" or NULL */ + _version_type unzip; + _version_type zipinfo; + _version_type os2dll; + _version_type windll; } UzpVer; and _version_type is defined as: @@ -267,33 +187,8 @@ uch not_used; } _version_type; - See api.c for exactly what UzpVersion does, but the short description is - "UzpVersion() returns a pointer to a dll-internal static structure - containing the unzip32.dll version information". - -For usage with languages that do not support function which return pointers -to structures, the variant UzpVersion2() allows to retrieve the version info -into a memory area supplied by the caller: - - unsigned WINAPI UzpVersion2(UzpVer2 far *); - -where UzpVer2 is defined as: - -typedef struct _UzpVer2 { - ulg structlen; /* length of the struct being passed */ - ulg flag; /* bit 0: is_beta bit 1: uses_zlib */ - char betalevel[10]; /* e.g. "g BETA" or "" */ - char date[20]; /* e.g. "9 Oct 08" (beta) or "9 October 2008" */ - char zlib_version[10]; /* e.g. "1.2.3" or NULL */ - _version_type unzip; /* current UnZip version */ - _version_type zipinfo; /* current ZipInfo version */ - _version_type os2dll; /* OS2DLL version (retained for compatibility) */ - _version_type windll; /* WinDLL version (retained for compatibility) */ - _version_type dllapimin; /* last incompatible change of library API */ -} UzpVer2; - - See api.c for the exact function of UzpVersion2, but the short description - is "fill in the version information in the UzpVer2 structure". + See api.c for exactly what UzpVersion2 does, but the short version of + what it does is fill in the version information in the UzpVer structure. void WINAPI Wiz_NoPrinting(int flag) @@ -329,7 +224,7 @@ Pass the name of the zip file in "zip", the name of the zip entry you wish to perform the "grep" on in "file", and the string you wish to look for in - "pattern". There are four possible options for cmd: + "pattern". There are four possible options for code: 0 => case insensitive search 1 => case sensitive search @@ -354,11 +249,7 @@ Match the pattern (wildcard) against the string (fixed): - match(const char *string, const char *pattern, int ignore_case); - -or, when UnZips WILD_SEP_AT_DIR compile-time option was set: - - match(const char *string, const char *pattern, int ignore_case, int sepc); + match(string, pattern, ignore_case); returns TRUE if string matches pattern, FALSE otherwise. In the pattern: @@ -367,12 +258,6 @@ [SET] matches any character in the specified set, [!SET] or [^SET] matches any character not in the specified set. - In case the code was compiled with WILD_STOP_AT_DIR enabled, the pattern - wildcard functionality is modified as follows: - `*' matches any sequence of characters (zero or more) until the first - occurence of the separating character denoted by `sepc' - `**' matches any sequence of characters (zero or more) - A set is composed of characters or ranges; a range looks like ``character hyphen character'' (as in 0-9 or A-Z). [0-9a-zA-Z_] is the minimal set of characters allowed in the [..] pattern construct. Other characters are @@ -429,6 +314,6 @@ used together! When successfully called, Wiz_SetOpts has allocated some internal structures which are in turn free'd by Wiz_Unzip. -Last revised January 18, 2009. +Last revised February 27, 2005. Mike White, Christian Spieler diff -Nru unzip-6.0/zipgrep.txt unzip-6.0/zipgrep.txt --- unzip-6.0/zipgrep.txt 2009-04-20 01:00:30.000000000 +0000 +++ unzip-6.0/zipgrep.txt 2010-05-14 07:26:14.000000000 +0000 @@ -1,75 +1,89 @@ -ZIPGREP(1L) ZIPGREP(1L) + +ZIPGREP(1L) ZIPGREP(1L) NAME - zipgrep - search files in a ZIP archive for lines matching a pattern + zipgrep - search files in a ZIP archive for lines matching + a pattern SYNOPSIS - zipgrep [egrep_options] pattern file[.zip] [file(s) ...] + zipgrep [egrep_options] pattern file[.zip] [file(s) ...] [-x xfile(s) ...] DESCRIPTION - zipgrep will search files within a ZIP archive for lines matching the - given string or pattern. zipgrep is a shell script and requires - egrep(1) and unzip(1L) to function. Its output is identical to that of - egrep(1). + zipgrep will search files within a ZIP archive for lines + matching the given string or pattern. zipgrep is a shell + script and requires egrep(1) and unzip(1L) to function. + Its output is identical to that of egrep(1). ARGUMENTS pattern - The pattern to be located within a ZIP archive. Any - string or regular expression accepted by egrep(1) may be - used. file[.zip] Path of the ZIP archive. (Wildcard - expressions for the ZIP archive name are not supported.) - If the literal filename is not found, the suffix .zip is - appended. Note that self-extracting ZIP files are sup- - ported, as with any other ZIP archive; just specify the - .exe suffix (if any) explicitly. + The pattern to be located within a ZIP archive. + Any string or regular expression accepted by + egrep(1) may be used. file[.zip] Path of the ZIP + archive. (Wildcard expressions for the ZIP archive + name are not supported.) If the literal filename + is not found, the suffix .zip is appended. Note + that self-extracting ZIP files are supported, as + with any other ZIP archive; just specify the .exe + suffix (if any) explicitly. [file(s)] - An optional list of archive members to be processed, sep- - arated by spaces. If no member files are specified, all - members of the ZIP archive are searched. Regular expres- - sions (wildcards) may be used to match multiple members: + An optional list of archive members to be pro- + cessed, separated by spaces. If no member files + are specified, all members of the ZIP archive are + searched. Regular expressions (wildcards) may be + used to match multiple members: * matches a sequence of 0 or more characters ? matches exactly 1 character - [...] matches any single character found inside the - brackets; ranges are specified by a beginning - character, a hyphen, and an ending character. If - an exclamation point or a caret (`!' or `^') fol- - lows the left bracket, then the range of charac- - ters within the brackets is complemented (that is, - anything except the characters inside the brackets - is considered a match). - - (Be sure to quote any character that might otherwise be - interpreted or modified by the operating system.) + [...] matches any single character found inside + the brackets; ranges are specified by a + beginning character, a hyphen, and an ending + character. If an exclamation point or a + caret (`!' or `^') follows the left bracket, + then the range of characters within the + brackets is complemented (that is, anything + except the characters inside the brackets is + considered a match). + + (Be sure to quote any character that might other- + wise be interpreted or modified by the operating + system.) [-x xfile(s)] - An optional list of archive members to be excluded from - processing. Since wildcard characters match directory - separators (`/'), this option may be used to exclude any - files that are in subdirectories. For example, ``zipgrep - grumpy foo *.[ch] -x */*'' would search for the string - ``grumpy'' in all C source files in the main directory of - the ``foo'' archive, but none in any subdirectories. - Without the -x option, all C source files in all directo- + An optional list of archive members to be excluded + from processing. Since wildcard characters match + +Info-ZIP 28 February 2005 1 + +ZIPGREP(1L) ZIPGREP(1L) + + directory separators (`/'), this option may be used + to exclude any files that are in subdirectories. + For example, ``zipgrep grumpy foo *.[ch] -x */*'' + would search for the string ``grumpy'' in all C + source files in the main directory of the ``foo'' + archive, but none in any subdirectories. Without + the -x option, all C source files in all directo- ries within the zipfile would be searched. OPTIONS - All options prior to the ZIP archive filename are passed to - egrep(1). + All options prior to the ZIP archive filename are passed + to egrep(1). SEE ALSO - egrep(1), unzip(1L), zip(1L), funzip(1L), zipcloak(1L), zip- - info(1L), zipnote(1L), zipsplit(1L) + egrep(1), unzip(1L), zip(1L), funzip(1L), zipcloak(1L), + zipinfo(1L), zipnote(1L), zipsplit(1L) URL - The Info-ZIP home page is currently at http://www.info- - zip.org/pub/infozip/ or ftp://ftp.info-zip.org/pub/infozip/ . + The Info-ZIP home page is currently at http://www.info- + zip.org/pub/infozip/ or ftp://ftp.info- + zip.org/pub/infozip/ . AUTHORS zipgrep was written by Jean-loup Gailly. -Info-ZIP 20 April 2009 ZIPGREP(1L) +Info-ZIP 28 February 2005 2 + diff -Nru unzip-6.0/zip.h unzip-6.0/zip.h --- unzip-6.0/zip.h 2005-12-29 18:52:22.000000000 +0000 +++ unzip-6.0/zip.h 2010-05-14 07:26:14.000000000 +0000 @@ -1,15 +1,14 @@ /* - Copyright (c) 1990-2005 Info-ZIP. All rights reserved. + Copyright (c) 1990-2001 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2003-May-08 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html */ -/* This is a dummy zip.h to allow the source files shared with Zip - (crypt.c, crc32.c, ttyio.c, win32/win32i64.c) to compile for UnZip. - (In case you are looking for the Info-ZIP license, please follow - the pointers above.) */ +/* This is a dummy zip.h to allow the source files shared with Zip (crypt.c, + crc32.c, crctab.c, ttyio.c) to compile for UnZip. (In case you are looking + for the Info-ZIP license, please follow the pointers above.) */ #ifndef __zip_h /* don't include more than once */ #define __zip_h diff -Nru unzip-6.0/zipinfo.c unzip-6.0/zipinfo.c --- unzip-6.0/zipinfo.c 2009-02-08 17:04:30.000000000 +0000 +++ unzip-6.0/zipinfo.c 2010-05-14 07:26:14.000000000 +0000 @@ -1,7 +1,7 @@ /* - Copyright (c) 1990-2009 Info-ZIP. All rights reserved. + Copyright (c) 1990-2005 Info-ZIP. All rights reserved. - See the accompanying file LICENSE, version 2009-Jan-02 or later + See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in unzip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html @@ -120,7 +120,7 @@ #define LFLAG 3 /* short "ls -l" type listing */ -static int zi_long OF((__GPRO__ zusz_t *pEndprev, int error_in_archive)); +static int zi_long OF((__GPRO__ ulg *pEndprev)); static int zi_short OF((__GPRO)); static void zi_showMacTypeCreator OF((__GPRO__ uch *ebfield)); @@ -135,37 +135,44 @@ static ZCONST char nullStr[] = ""; static ZCONST char PlurSufx[] = "s"; -static ZCONST char Far ZipInfHeader2[] = - "Zip file size: %s bytes, number of entries: %s\n"; +static ZCONST char Far LongHeader[] = "Archive: %s %ld bytes %u file%s\n"; +static ZCONST char Far ShortHeader[] = "Archive: %s %ld %u\n"; static ZCONST char Far EndCentDirRec[] = "\nEnd-of-central-directory record:\n"; static ZCONST char Far LineSeparators[] = "-------------------------------\n\n"; -static ZCONST char Far ZipFSizeVerbose[] = "\ - Zip archive file size: %s (%sh)\n"; static ZCONST char Far ActOffsetCentDir[] = "\ - Actual end-cent-dir record offset: %s (%sh)\n\ - Expected end-cent-dir record offset: %s (%sh)\n\ + Actual offset of end-of-central-dir record: %9ld (%.8lXh)\n\ + Expected offset of end-of-central-dir record: %9ld (%.8lXh)\n\ (based on the length of the central directory and its expected offset)\n\n"; static ZCONST char Far SinglePartArchive1[] = "\ This zipfile constitutes the sole disk of a single-part archive; its\n\ - central directory contains %s %s.\n\ - The central directory is %s (%sh) bytes long,\n"; + central directory contains %u %s. The central directory is %lu\n\ + (%.8lXh) bytes long, and its (expected) offset in bytes from the\n"; static ZCONST char Far SinglePartArchive2[] = "\ - and its (expected) offset in bytes from the beginning of the zipfile\n\ - is %s (%sh).\n\n"; + beginning of the zipfile is %lu (%.8lXh).\n\n"; static ZCONST char Far MultiPartArchive1[] = "\ - This zipfile constitutes disk %lu of a multi-part archive. The central\n\ - directory starts on disk %lu at an offset within that archive part\n"; + This zipfile constitutes disk %u of a multi-part archive. The central\n\ + directory starts on disk %u; %u of its entries %s contained within\n"; static ZCONST char Far MultiPartArchive2[] = "\ - of %s (%sh) bytes. The entire\n\ - central directory is %s (%sh) bytes long.\n"; + this zipfile, out of a total of %u %s. The entire central\n\ + directory is %lu (%.8lXh) bytes long, and its offset in bytes from\n"; static ZCONST char Far MultiPartArchive3[] = "\ - %s of the archive entries %s contained within this zipfile volume,\n\ - out of a total of %s %s.\n\n"; + the beginning of the zipfile in which it begins is %lu (%.8lXh).\n\n"; +static ZCONST char Far NoZipfileComment[] = " There is no zipfile comment.\n"; +static ZCONST char Far ZipfileCommentDesc[] = + " The zipfile comment is %u bytes long and contains the following text:\n\n"; +static ZCONST char Far ZipfileCommBegin[] = + "======================== zipfile comment begins ==========================\n"; +static ZCONST char Far ZipfileCommEnd[] = + "========================= zipfile comment ends ===========================\n"; +static ZCONST char Far ZipfileCommTrunc2[] = + "\n The zipfile comment is truncated.\n"; +static ZCONST char Far ZipfileCommTruncMsg[] = + "\ncaution: zipfile comment truncated\n"; static ZCONST char Far CentralDirEntry[] = "\nCentral directory entry #%lu:\n---------------------------\n\n"; static ZCONST char Far ZipfileStats[] = - "%lu file%s, %s bytes uncompressed, %s bytes compressed: %s%d.%d%%\n"; + "%lu file%s, %lu bytes uncompressed, %lu bytes compressed: %s%d.%d%%\n"; /* zi_long() strings */ static ZCONST char Far OS_FAT[] = "MS-DOS, OS/2 or NT FAT"; @@ -204,12 +211,8 @@ static ZCONST char Far MthdDeflate[] = "deflated"; static ZCONST char Far MthdDeflat64[] = "deflated (enhanced-64k)"; static ZCONST char Far MthdDCLImplode[] = "imploded (PK DCL)"; +static ZCONST char Far MthdPKRes11[] = "unkn. #11 (PK reserved)"; static ZCONST char Far MthdBZip2[] = "bzipped"; -static ZCONST char Far MthdLZMA[] = "LZMA-ed"; -static ZCONST char Far MthdTerse[] = "tersed (IBM)"; -static ZCONST char Far MthdLZ77[] = "LZ77-compressed (IBM)"; -static ZCONST char Far MthdWavPack[] = "WavPacked"; -static ZCONST char Far MthdPPMd[] = "PPMd-ed"; static ZCONST char Far DeflNorm[] = "normal"; static ZCONST char Far DeflMax[] = "maximum"; @@ -217,80 +220,74 @@ static ZCONST char Far DeflSFast[] = "superfast"; static ZCONST char Far ExtraBytesPreceding[] = - " There are an extra %s bytes preceding this file.\n\n"; + " There are an extra %ld bytes preceding this file.\n\n"; static ZCONST char Far UnknownNo[] = "unknown (%d)"; -#ifdef ZIP64_SUPPORT - static ZCONST char Far LocalHeaderOffset[] = - "\n offset of local header from start of archive: %s\n\ - (%sh) bytes\n"; -#else - static ZCONST char Far LocalHeaderOffset[] = - "\n offset of local header from start of archive: %s (%sh) bytes\n"; -#endif +static ZCONST char Far LocalHeaderOffset[] = + "\n offset of local header from start of archive: %lu (%.8lXh) bytes\n"; static ZCONST char Far HostOS[] = - " file system or operating system of origin: %s\n"; + " file system or operating system of origin: %s\n"; static ZCONST char Far EncodeSWVer[] = - " version of encoding software: %u.%u\n"; + " version of encoding software: %u.%u\n"; static ZCONST char Far MinOSCompReq[] = - " minimum file system compatibility required: %s\n"; + " minimum file system compatibility required: %s\n"; static ZCONST char Far MinSWVerReq[] = - " minimum software version required to extract: %u.%u\n"; + " minimum software version required to extract: %u.%u\n"; static ZCONST char Far CompressMethod[] = - " compression method: %s\n"; + " compression method: %s\n"; static ZCONST char Far SlideWindowSizeImplode[] = - " size of sliding dictionary (implosion): %cK\n"; + " size of sliding dictionary (implosion): %cK\n"; static ZCONST char Far ShannonFanoTrees[] = - " number of Shannon-Fano trees (implosion): %c\n"; + " number of Shannon-Fano trees (implosion): %c\n"; static ZCONST char Far CompressSubtype[] = - " compression sub-type (deflation): %s\n"; + " compression sub-type (deflation): %s\n"; static ZCONST char Far FileSecurity[] = - " file security status: %sencrypted\n"; + " file security status: %sencrypted\n"; static ZCONST char Far ExtendedLocalHdr[] = - " extended local header: %s\n"; + " extended local header: %s\n"; static ZCONST char Far FileModDate[] = - " file last modified on (DOS date/time): %s\n"; + " file last modified on (DOS date/time): %s\n"; #ifdef USE_EF_UT_TIME static ZCONST char Far UT_FileModDate[] = - " file last modified on (UT extra field modtime): %s %s\n"; + " file last modified on (UT extra field modtime): %s %s\n"; static ZCONST char Far LocalTime[] = "local"; #ifndef NO_GMTIME static ZCONST char Far GMTime[] = "UTC"; #endif #endif /* USE_EF_UT_TIME */ static ZCONST char Far CRC32Value[] = - " 32-bit CRC value (hex): %.8lx\n"; + " 32-bit CRC value (hex): %.8lx\n"; static ZCONST char Far CompressedFileSize[] = - " compressed size: %s bytes\n"; + " compressed size: %lu bytes\n"; static ZCONST char Far UncompressedFileSize[] = - " uncompressed size: %s bytes\n"; + " uncompressed size: %lu bytes\n"; static ZCONST char Far FilenameLength[] = - " length of filename: %u characters\n"; + " length of filename: %u characters\n"; static ZCONST char Far ExtraFieldLength[] = - " length of extra field: %u bytes\n"; + " length of extra field: %u bytes\n"; static ZCONST char Far FileCommentLength[] = - " length of file comment: %u characters\n"; + " length of file comment: %u characters\n"; static ZCONST char Far FileDiskNum[] = - " disk number on which file begins: disk %lu\n"; + " disk number on which file begins: disk %u\n"; static ZCONST char Far ApparentFileType[] = - " apparent file type: %s\n"; + " apparent file type: %s\n"; static ZCONST char Far VMSFileAttributes[] = - " VMS file attributes (%06o octal): %s\n"; + " VMS file attributes (%06o octal): %s\n"; static ZCONST char Far AmigaFileAttributes[] = - " Amiga file attributes (%06o octal): %s\n"; + " Amiga file attributes (%06o octal): %s\n"; static ZCONST char Far UnixFileAttributes[] = - " Unix file attributes (%06o octal): %s\n"; + " Unix file attributes (%06o octal): %s\n"; static ZCONST char Far NonMSDOSFileAttributes[] = - " non-MSDOS external file attributes: %06lX hex\n"; + " non-MSDOS external file attributes: %06lX hex\n"; static ZCONST char Far MSDOSFileAttributes[] = - " MS-DOS file attributes (%02X hex): none\n"; + " MS-DOS file attributes (%02X hex): none\n"; static ZCONST char Far MSDOSFileAttributesRO[] = - " MS-DOS file attributes (%02X hex): read-only\n"; + " MS-DOS file attributes (%02X hex): read-only\n"; static ZCONST char Far MSDOSFileAttributesAlpha[] = - " MS-DOS file attributes (%02X hex): %s%s%s%s%s%s%s%s\n"; + " MS-DOS file attributes (%02X hex): %s%s%s%s%s%s%s%s\n"; static ZCONST char Far TheosFileAttributes[] = - " Theos file attributes (%04X hex): %s\n"; + " Theos file attributes (%04X hex): %s\n"; static ZCONST char Far TheosFTypLib[] = "Library "; static ZCONST char Far TheosFTypDir[] = "Directory "; @@ -318,11 +315,8 @@ static ZCONST char Far efPKUnix[] = "PKWARE Unix"; static ZCONST char Far efIZVMS[] = "Info-ZIP VMS"; static ZCONST char Far efIZUnix[] = "old Info-ZIP Unix/OS2/NT"; -static ZCONST char Far efIZUnix2[] = "Unix UID/GID (16-bit)"; -static ZCONST char Far efIZUnix3[] = "Unix UID/GID (any size)"; +static ZCONST char Far efIZUnix2[] = "Unix UID/GID"; static ZCONST char Far efTime[] = "universal time"; -static ZCONST char Far efU8Path[] = "UTF8 path name"; -static ZCONST char Far efU8Commnt[] = "UTF8 entry comment"; static ZCONST char Far efJLMac[] = "old Info-ZIP Macintosh"; static ZCONST char Far efMac3[] = "new Info-ZIP Macintosh"; static ZCONST char Far efZipIt[] = "ZipIt Macintosh"; @@ -363,10 +357,6 @@ static ZCONST char Far UTmodification[] = "modification"; static ZCONST char Far UTaccess[] = "access"; static ZCONST char Far UTcreation[] = "creation"; -static ZCONST char Far U8PthCmnComplete[] = ".\n\ - The UTF8 data of the extra field (V%u, ASCII name CRC `%.8lx') are:\n "; -static ZCONST char Far U8PthCmnF24[] = ". The first\n\ - 24 UTF8 bytes in the extra field (V%u, ASCII name CRC `%.8lx') are:\n "; static ZCONST char Far ZipItFname[] = ".\n\ The Mac long filename is %s"; static ZCONST char Far Mac3data[] = ".\n\ @@ -429,11 +419,11 @@ /* zi_time() strings */ static ZCONST char Far BogusFmt[] = "%03d"; -static ZCONST char Far shtYMDHMTime[] = "%02u-%s-%02u %02u:%02u"; -static ZCONST char Far lngYMDHMSTime[] = "%u %s %u %02u:%02u:%02u"; +static ZCONST char Far DMYHMTime[] = "%2u-%s-%02u %02u:%02u"; +static ZCONST char Far YMDHMSTime[] = "%u %s %u %02u:%02u:%02u"; static ZCONST char Far DecimalTime[] = "%04u%02u%02u.%02u%02u%02u"; #ifdef USE_EF_UT_TIME - static ZCONST char Far lngYMDHMSTimeError[] = "???? ??? ?? ??:??:??"; + static ZCONST char Far YMDHMSTimeError[] = "???? ??? ?? ??:??:??"; #endif @@ -457,6 +447,10 @@ int tflag_slm=TRUE, tflag_2v=FALSE; int explicit_h=FALSE, explicit_t=FALSE; +#ifdef UNIX + extern char OEM_CP[MAX_CP_NAME]; + extern char ISO_CP[MAX_CP_NAME]; +#endif #ifdef MACOS uO.lflag = LFLAG; /* reset default on each call */ @@ -501,6 +495,35 @@ uO.lflag = 0; } break; +#ifdef UNIX + case ('I'): + if (negative) { + Info(slide, 0x401, ((char *)slide, + "error: encodings can't be negated")); + return(PK_PARAM); + } else { + if(*s) { /* Handle the -Icharset case */ + /* Assume that charsets can't start with a dash to spot arguments misuse */ + if(*s == '-') { + Info(slide, 0x401, ((char *)slide, + "error: a valid character encoding should follow the -I argument")); + return(PK_PARAM); + } + strncpy(ISO_CP, s, sizeof(ISO_CP)); + } else { /* -I charset */ + ++argv; + if(!(--argc > 0 && *argv != NULL && **argv != '-')) { + Info(slide, 0x401, ((char *)slide, + "error: a valid character encoding should follow the -I argument")); + return(PK_PARAM); + } + s = *argv; + strncpy(ISO_CP, s, sizeof(ISO_CP)); + } + while(*(++s)); /* No params straight after charset name */ + } + break; +#endif /* ?UNIX */ case 'l': /* longer form of "ls -l" type listing */ if (negative) uO.lflag = -2, negative = 0; @@ -521,6 +544,35 @@ G.M_flag = TRUE; break; #endif +#ifdef UNIX + case ('O'): + if (negative) { + Info(slide, 0x401, ((char *)slide, + "error: encodings can't be negated")); + return(PK_PARAM); + } else { + if(*s) { /* Handle the -Ocharset case */ + /* Assume that charsets can't start with a dash to spot arguments misuse */ + if(*s == '-') { + Info(slide, 0x401, ((char *)slide, + "error: a valid character encoding should follow the -I argument")); + return(PK_PARAM); + } + strncpy(OEM_CP, s, sizeof(OEM_CP)); + } else { /* -O charset */ + ++argv; + if(!(--argc > 0 && *argv != NULL && **argv != '-')) { + Info(slide, 0x401, ((char *)slide, + "error: a valid character encoding should follow the -O argument")); + return(PK_PARAM); + } + s = *argv; + strncpy(OEM_CP, s, sizeof(OEM_CP)); + } + while(*(++s)); /* No params straight after charset name */ + } + break; +#endif /* ?UNIX */ case 's': /* default: shorter "ls -l" type listing */ if (negative) uO.lflag = -2, negative = 0; @@ -542,15 +594,6 @@ else uO.T_flag = TRUE; break; -#ifdef UNICODE_SUPPORT - case ('U'): /* escape UTF-8, or disable UTF-8 support */ - if (negative) { - uO.U_flag = MAX(uO.U_flag-negative,0); - negative = 0; - } else - uO.U_flag++; - break; -#endif /* UNICODE_SUPPORT */ case 'v': /* turbo-verbose listing */ if (negative) uO.lflag = -2, negative = 0; @@ -635,62 +678,88 @@ /* Function zi_end_central() */ /*******************************/ -void zi_end_central(__G) +int zi_end_central(__G) /* return PK-type error code */ __GDEF { + int error = PK_COOL; + + /*--------------------------------------------------------------------------- Print out various interesting things about the zipfile. ---------------------------------------------------------------------------*/ + /* header fits on one line, for anything up to 10GB and 10000 files: */ + if (uO.hflag) + Info(slide, 0, ((char *)slide, ((int)strlen(G.zipfn) < 39)? + LoadFarString(LongHeader) : LoadFarString(ShortHeader), G.zipfn, + (long)G.ziplen, G.ecrec.total_entries_central_dir, + (G.ecrec.total_entries_central_dir==1)? + nullStr : PlurSufx)); + + /* verbose format */ if (uO.lflag > 9) { - /* verbose format */ Info(slide, 0, ((char *)slide, LoadFarString(EndCentDirRec))); Info(slide, 0, ((char *)slide, LoadFarString(LineSeparators))); - Info(slide, 0, ((char *)slide, LoadFarString(ZipFSizeVerbose), - FmZofft(G.ziplen, "11", NULL), - FmZofft(G.ziplen, FZOFFT_HEX_DOT_WID, "X"))); Info(slide, 0, ((char *)slide, LoadFarString(ActOffsetCentDir), - FmZofft(G.real_ecrec_offset, "11", "u"), - FmZofft(G.real_ecrec_offset, FZOFFT_HEX_DOT_WID, "X"), - FmZofft(G.expect_ecrec_offset, "11", "u"), - FmZofft(G.expect_ecrec_offset, FZOFFT_HEX_DOT_WID, "X"))); + (long)G.real_ecrec_offset, (long)G.real_ecrec_offset, + (long)G.expect_ecrec_offset, (long)G.expect_ecrec_offset)); if (G.ecrec.number_this_disk == 0) { Info(slide, 0, ((char *)slide, LoadFarString(SinglePartArchive1), - FmZofft(G.ecrec.total_entries_central_dir, NULL, "u"), + G.ecrec.total_entries_central_dir, (G.ecrec.total_entries_central_dir == 1)? "entry" : "entries", - FmZofft(G.ecrec.size_central_directory, NULL, "u"), - FmZofft(G.ecrec.size_central_directory, - FZOFFT_HEX_DOT_WID, "X"))); + G.ecrec.size_central_directory, + G.ecrec.size_central_directory)); Info(slide, 0, ((char *)slide, LoadFarString(SinglePartArchive2), - FmZofft(G.ecrec.offset_start_central_directory, NULL, "u"), - FmZofft(G.ecrec.offset_start_central_directory, - FZOFFT_HEX_DOT_WID, "X"))); + G.ecrec.offset_start_central_directory, + G.ecrec.offset_start_central_directory)); } else { Info(slide, 0, ((char *)slide, LoadFarString(MultiPartArchive1), - (ulg)(G.ecrec.number_this_disk + 1), - (ulg)(G.ecrec.num_disk_start_cdir + 1))); + G.ecrec.number_this_disk + 1, + G.ecrec.num_disk_start_cdir + 1, + G.ecrec.num_entries_centrl_dir_ths_disk, + (G.ecrec.num_entries_centrl_dir_ths_disk == 1)? "is" : "are")); Info(slide, 0, ((char *)slide, LoadFarString(MultiPartArchive2), - FmZofft(G.ecrec.offset_start_central_directory, NULL, "u"), - FmZofft(G.ecrec.offset_start_central_directory, - FZOFFT_HEX_DOT_WID, "X"), - FmZofft(G.ecrec.size_central_directory, NULL, "u"), - FmZofft(G.ecrec.size_central_directory, - FZOFFT_HEX_DOT_WID, "X"))); + G.ecrec.total_entries_central_dir, + (G.ecrec.total_entries_central_dir == 1) ? "entry" : "entries", + G.ecrec.size_central_directory, + G.ecrec.size_central_directory)); Info(slide, 0, ((char *)slide, LoadFarString(MultiPartArchive3), - FmZofft(G.ecrec.num_entries_centrl_dir_ths_disk, NULL, "u"), - (G.ecrec.num_entries_centrl_dir_ths_disk == 1)? "is" : "are", - FmZofft(G.ecrec.total_entries_central_dir, NULL, "u"), - (G.ecrec.total_entries_central_dir == 1) ? "entry" : "entries")); + G.ecrec.offset_start_central_directory, + G.ecrec.offset_start_central_directory)); } - } - else if (uO.hflag) { - /* print zip file size and number of contained entries: */ - Info(slide, 0, ((char *)slide, LoadFarString(ZipInfHeader2), - FmZofft(G.ziplen, NULL, NULL), - FmZofft(G.ecrec.total_entries_central_dir, NULL, "u"))); - } + + /*----------------------------------------------------------------------- + Get the zipfile comment, if any, and print it out. (Comment may be + up to 64KB long. May the fleas of a thousand camels infest the arm- + pits of anyone who actually takes advantage of this fact.) + -----------------------------------------------------------------------*/ + + if (!G.ecrec.zipfile_comment_length) + Info(slide, 0, ((char *)slide, LoadFarString(NoZipfileComment))); + else { + Info(slide, 0, ((char *)slide, LoadFarString(ZipfileCommentDesc), + G.ecrec.zipfile_comment_length)); + Info(slide, 0, ((char *)slide, LoadFarString(ZipfileCommBegin))); + if (do_string(__G__ G.ecrec.zipfile_comment_length, DISPLAY)) + error = PK_WARN; + Info(slide, 0, ((char *)slide, LoadFarString(ZipfileCommEnd))); + if (error) + Info(slide, 0, ((char *)slide, + LoadFarString(ZipfileCommTrunc2))); + } /* endif (comment exists) */ + + /* non-verbose mode: print zipfile comment only if requested */ + } else if (uO.zflag && G.ecrec.zipfile_comment_length) { + if (do_string(__G__ G.ecrec.zipfile_comment_length, DISPLAY)) { + Info(slide, 0x401, ((char *)slide, + LoadFarString(ZipfileCommTruncMsg))); + error = PK_WARN; + } + } /* endif (verbose) */ + + return error; } /* end function zi_end_central() */ @@ -708,9 +777,9 @@ int do_this_file=FALSE, error, error_in_archive=PK_COOL; int *fn_matched=NULL, *xn_matched=NULL; ulg j, members=0L; - zusz_t tot_csize=0L, tot_ucsize=0L; - zusz_t endprev; /* buffers end of previous entry for zi_long()'s check - * of extra bytes */ + ulg tot_csize=0L, tot_ucsize=0L; + ulg endprev; /* buffers end of previous entry for zi_long()'s check + * of extra bytes */ /*--------------------------------------------------------------------------- @@ -749,20 +818,12 @@ for (j = 1L;; j++) { - if (readbuf(__G__ G.sig, 4) == 0) { - error_in_archive = PK_EOF; - break; - } - if (memcmp(G.sig, central_hdr_sig, 4)) { /* is it a CentDir entry? */ - /* no new central directory entry - * -> is the number of processed entries compatible with the - * number of entries as stored in the end_central record? - */ - if (((j - 1) & - (ulg)(G.ecrec.have_ecr64 ? MASK_ZUCN64 : MASK_ZUCN16)) - == (ulg)G.ecrec.total_entries_central_dir) - { - /* "j modulus 4T/64k" matches the reported 64/16-bit-unsigned + if (readbuf(__G__ G.sig, 4) == 0) + return PK_EOF; + if (strncmp(G.sig, central_hdr_sig, 4)) { /* is it a CentDir entry? */ + if (((unsigned)(j - 1) & (unsigned)0xFFFF) == + (unsigned)G.ecrec.total_entries_central_dir) { + /* "j modulus 64k" matches the reported 16-bit-unsigned * number of directory entries -> probably, the regular * end of the central directory has been reached */ @@ -772,23 +833,19 @@ ((char *)slide, LoadFarString(CentSigMsg), j)); Info(slide, 0x401, ((char *)slide, LoadFarString(ReportMsg))); - error_in_archive = PK_BADERR; /* sig not found */ - break; + return PK_BADERR; /* sig not found */ } } /* process_cdir_file_hdr() sets pInfo->hostnum, pInfo->lcflag, ...: */ - if ((error = process_cdir_file_hdr(__G)) != PK_COOL) { - error_in_archive = error; /* only PK_EOF defined */ - break; - } + if ((error = process_cdir_file_hdr(__G)) != PK_COOL) + return error; /* only PK_EOF defined */ if ((error = do_string(__G__ G.crec.filename_length, DS_FN)) != PK_COOL) { - if (error > error_in_archive) - error_in_archive = error; + error_in_archive = error; /* might be warning */ if (error > PK_WARN) /* fatal */ - break; + return error; } if (!G.process_all_files) { /* check if specified on command line */ @@ -825,29 +882,11 @@ if (G.process_all_files || do_this_file) { - /* Read the extra field, if any. The extra field info is required - * for resolving the Zip64 sizes/offsets and may be used in more - * analysis of the entry below. - */ - if ((error = do_string(__G__ G.crec.extra_field_length, - EXTRA_FIELD)) != 0) - { - if (G.extra_field != NULL) { - free(G.extra_field); - G.extra_field = NULL; - } - error_in_archive = error; - /* The premature return in case of a "fatal" error (PK_EOF) is - * delayed until we analyze the extra field contents. - * This allows us to display all the other info that has been - * successfully read in. - */ - } - switch (uO.lflag) { case 1: case 2: fnprint(__G); + SKIP_(G.crec.extra_field_length) SKIP_(G.crec.file_comment_length) break; @@ -856,25 +895,27 @@ case 5: if ((error = zi_short(__G)) != PK_COOL) { error_in_archive = error; /* might be warning */ + if (error > PK_WARN) /* fatal */ + return error; } break; case 10: Info(slide, 0, ((char *)slide, LoadFarString(CentralDirEntry), j)); - if ((error = zi_long(__G__ &endprev, - error_in_archive)) != PK_COOL) { + if ((error = zi_long(__G__ &endprev)) != PK_COOL) { error_in_archive = error; /* might be warning */ + if (error > PK_WARN) /* fatal */ + return error; } break; default: + SKIP_(G.crec.extra_field_length) SKIP_(G.crec.file_comment_length) break; } /* end switch (lflag) */ - if (error > PK_WARN) /* fatal */ - break; tot_csize += G.crec.csize; tot_ucsize += G.crec.ucsize; @@ -886,9 +927,11 @@ if ((G.statreportcb != NULL) && (*G.statreportcb)(__G__ UZ_ST_FINISH_MEMBER, G.zipfn, G.filename, (zvoid *)&G.crec.ucsize)) { - /* cancel operation by user request */ - error_in_archive = IZ_CTRLC; - break; + if (fn_matched) + free((zvoid *)fn_matched); + if (xn_matched) + free((zvoid *)xn_matched); + return IZ_CTRLC; /* cancel operation by user request */ } #endif #ifdef MACOS /* MacOS is no preemptive OS, thus call event-handling by hand */ @@ -898,7 +941,6 @@ } else { /* not listing this file */ SKIP_(G.crec.extra_field_length) SKIP_(G.crec.file_comment_length) - if (endprev != 0) endprev = 0; } /* end if (list member?) */ @@ -908,7 +950,7 @@ Check that we actually found requested files; if so, print totals. ---------------------------------------------------------------------------*/ - if ((error_in_archive <= PK_WARN) && uO.tflag) { + if (uO.tflag) { char *sgn = ""; int cfactor = ratio(tot_ucsize, tot_csize); @@ -917,10 +959,8 @@ cfactor = -cfactor; } Info(slide, 0, ((char *)slide, LoadFarString(ZipfileStats), - members, (members==1L)? nullStr:PlurSufx, - FmZofft(tot_ucsize, NULL, "u"), - FmZofft(tot_csize, NULL, "u"), - sgn, cfactor/10, cfactor%10)); + members, (members==1L)? nullStr:PlurSufx, tot_ucsize, + tot_csize, sgn, cfactor/10, cfactor%10)); } /*--------------------------------------------------------------------------- @@ -929,48 +969,33 @@ ---------------------------------------------------------------------------*/ if (fn_matched) { - if (error_in_archive <= PK_WARN) - for (j = 0; j < G.filespecs; ++j) - if (!fn_matched[j]) - Info(slide, 0x401, ((char *)slide, - LoadFarString(FilenameNotMatched), G.pfnames[j])); + for (j = 0; j < G.filespecs; ++j) + if (!fn_matched[j]) + Info(slide, 0x401, ((char *)slide, + LoadFarString(FilenameNotMatched), G.pfnames[j])); free((zvoid *)fn_matched); } if (xn_matched) { - if (error_in_archive <= PK_WARN) - for (j = 0; j < G.xfilespecs; ++j) - if (!xn_matched[j]) - Info(slide, 0x401, ((char *)slide, - LoadFarString(ExclFilenameNotMatched), G.pxnames[j])); + for (j = 0; j < G.xfilespecs; ++j) + if (!xn_matched[j]) + Info(slide, 0x401, ((char *)slide, + LoadFarString(ExclFilenameNotMatched), G.pxnames[j])); free((zvoid *)xn_matched); } - - /* Skip the following checks in case of a premature listing break. */ - if (error_in_archive <= PK_WARN) { - /*--------------------------------------------------------------------------- Double check that we're back at the end-of-central-directory record. ---------------------------------------------------------------------------*/ - if ( (memcmp(G.sig, - (G.ecrec.have_ecr64 ? - end_central64_sig : end_central_sig), - 4) != 0) - && (!G.ecrec.is_zip64_archive) - && (memcmp(G.sig, end_central_sig, 4) != 0) - ) { /* just to make sure again */ - Info(slide, 0x401, ((char *)slide, LoadFarString(EndSigMsg))); - error_in_archive = PK_WARN; /* didn't find sig */ - } - - /* Set specific return code when no files have been found. */ - if (members == 0L && error_in_archive <= PK_WARN) - error_in_archive = PK_FIND; - - if (uO.lflag >= 10) - (*G.message)((zvoid *)&G, (uch *)"\n", 1L, 0); + if (strncmp(G.sig, end_central_sig, 4)) { /* just to make sure again */ + Info(slide, 0x401, ((char *)slide, LoadFarString(EndSigMsg))); + error_in_archive = PK_WARN; /* didn't find sig */ } + if (members == 0 && error_in_archive <= PK_WARN) + error_in_archive = PK_FIND; + + if (uO.lflag >= 10) + (*G.message)((zvoid *)&G, (uch *)"\n", 1L, 0); return error_in_archive; @@ -984,17 +1009,15 @@ /* Function zi_long() */ /************************/ -static int zi_long(__G__ pEndprev, error_in_archive) - /* return PK-type error code */ +static int zi_long(__G__ pEndprev) /* return PK-type error code */ __GDEF - zusz_t *pEndprev; /* for zi_long() check of extra bytes */ - int error_in_archive; /* may signal premature return */ + ulg *pEndprev; /* for zi_long() check of extra bytes */ { #ifdef USE_EF_UT_TIME iztimes z_utime; #endif - int error; - unsigned hostnum, hostver, extnum, extver, methid, methnum, xattr; + int error, error_in_archive=PK_COOL; + unsigned hostnum, hostver, extnum, extver, methnum, xattr; char workspace[12], attribs[22]; ZCONST char *varmsg_str; char unkn[16]; @@ -1008,7 +1031,7 @@ static ZCONST char Far *method[NUM_METHODS] = { MthdNone, MthdShrunk, MthdRedF1, MthdRedF2, MthdRedF3, MthdRedF4, MthdImplode, MthdToken, MthdDeflate, MthdDeflat64, MthdDCLImplode, - MthdBZip2, MthdLZMA, MthdTerse, MthdLZ77, MthdWavPack, MthdPPMd + MthdPKRes11, MthdBZip2 }; static ZCONST char Far *dtypelng[4] = { DeflNorm, DeflMax, DeflFast, DeflSFast @@ -1028,8 +1051,7 @@ G.crec.relative_offset_local_header, *pEndprev)); */ Info(slide, 0, ((char *)slide, LoadFarString(ExtraBytesPreceding), - FmZofft((G.crec.relative_offset_local_header - (*pEndprev)), - NULL, NULL))); + (long)G.crec.relative_offset_local_header - (long)(*pEndprev))); } /* calculate endprev for next time around (problem: extra fields may @@ -1038,6 +1060,24 @@ G.crec.filename_length + G.crec.extra_field_length + G.crec.csize; /*--------------------------------------------------------------------------- + Read the extra field, if any. It may be used to get UNIX style modtime. + ---------------------------------------------------------------------------*/ + + if ((error = do_string(__G__ G.crec.extra_field_length, EXTRA_FIELD)) != 0) + { + if (G.extra_field != NULL) { + free(G.extra_field); + G.extra_field = NULL; + } + error_in_archive = error; + /* The premature return in case of a "fatal" error (PK_EOF) is + * delayed until we analyze the extra field contents. + * This allows us to display all the other info that has been + * successfully read in. + */ + } + +/*--------------------------------------------------------------------------- Print out various interesting things about the compressed file. ---------------------------------------------------------------------------*/ @@ -1045,14 +1085,13 @@ hostver = (unsigned)(G.pInfo->hostver); extnum = (unsigned)MIN(G.crec.version_needed_to_extract[1], NUM_HOSTS); extver = (unsigned)G.crec.version_needed_to_extract[0]; - methid = (unsigned)G.crec.compression_method; - methnum = find_compr_idx(G.crec.compression_method); + methnum = (unsigned)MIN(G.crec.compression_method, NUM_METHODS); (*G.message)((zvoid *)&G, (uch *)" ", 2L, 0); fnprint(__G); Info(slide, 0, ((char *)slide, LoadFarString(LocalHeaderOffset), - FmZofft(G.crec.relative_offset_local_header, NULL, "u"), - FmZofft(G.crec.relative_offset_local_header, FZOFFT_HEX_DOT_WID, "X"))); + G.crec.relative_offset_local_header, + G.crec.relative_offset_local_header)); if (hostnum >= NUM_HOSTS) { sprintf(unkn, LoadFarString(UnknownNo), @@ -1089,12 +1128,12 @@ varmsg_str = LoadFarStringSmall(method[methnum]); } Info(slide, 0, ((char *)slide, LoadFarString(CompressMethod), varmsg_str)); - if (methid == IMPLODED) { + if (methnum == IMPLODED) { Info(slide, 0, ((char *)slide, LoadFarString(SlideWindowSizeImplode), (G.crec.general_purpose_bit_flag & 2)? '8' : '4')); Info(slide, 0, ((char *)slide, LoadFarString(ShannonFanoTrees), (G.crec.general_purpose_bit_flag & 4)? '3' : '2')); - } else if (methid == DEFLATED || methid == ENHDEFLATED) { + } else if (methnum == DEFLATED || methnum == ENHDEFLATED) { ush dnum=(ush)((G.crec.general_purpose_bit_flag>>1) & 3); Info(slide, 0, ((char *)slide, LoadFarString(CompressSubtype), @@ -1140,9 +1179,9 @@ Info(slide, 0, ((char *)slide, LoadFarString(CRC32Value), G.crec.crc32)); Info(slide, 0, ((char *)slide, LoadFarString(CompressedFileSize), - FmZofft(G.crec.csize, NULL, "u"))); + G.crec.csize)); Info(slide, 0, ((char *)slide, LoadFarString(UncompressedFileSize), - FmZofft(G.crec.ucsize, NULL, "u"))); + G.crec.ucsize)); Info(slide, 0, ((char *)slide, LoadFarString(FilenameLength), G.crec.filename_length)); Info(slide, 0, ((char *)slide, LoadFarString(ExtraFieldLength), @@ -1150,7 +1189,7 @@ Info(slide, 0, ((char *)slide, LoadFarString(FileCommentLength), G.crec.file_comment_length)); Info(slide, 0, ((char *)slide, LoadFarString(FileDiskNum), - (ulg)(G.crec.disk_number_start + 1))); + G.crec.disk_number_start + 1)); Info(slide, 0, ((char *)slide, LoadFarString(ApparentFileType), (G.crec.internal_file_attributes & 1)? "text" : (G.crec.internal_file_attributes & 2)? "ebcdic" @@ -1360,7 +1399,7 @@ if (error_in_archive > PK_WARN) /* fatal: can't continue */ /* delayed "fatal error" return from extra field reading */ - return error_in_archive; + return error; if (G.extra_field == (uch *)NULL) return PK_ERR; /* not consistent with crec length */ @@ -1381,14 +1420,6 @@ switch (eb_id) { case EF_PKSZ64: ef_fieldname = efPKSZ64; - if ((G.crec.relative_offset_local_header - & (~(zusz_t)0xFFFFFFFFL)) != 0) { - /* Subtract the size of the 64bit local offset from - the local e.f. size, local Z64 e.f. block has no - offset; when only local offset present, the entire - local PKSZ64 block is missing. */ - *pEndprev -= (eb_datalen == 8 ? 12 : 8); - } break; case EF_AV: ef_fieldname = efAV; @@ -1424,22 +1455,9 @@ if (*pEndprev > 0L) *pEndprev += 4L; /* 4 byte UID/GID in local copy */ break; - case EF_IZUNIX3: - ef_fieldname = efIZUnix3; -#if 0 - if (*pEndprev > 0L) - *pEndprev += 4L; /* 4 byte UID/GID in local copy */ -#endif - break; case EF_TIME: ef_fieldname = efTime; break; - case EF_UNIPATH: - ef_fieldname = efU8Path; - break; - case EF_UNICOMNT: - ef_fieldname = efU8Commnt; - break; case EF_MAC3: ef_fieldname = efMac3; break; @@ -1510,8 +1528,6 @@ Info(slide, 0, ((char *)slide, LoadFarString(ef_fieldname), makelong(ef_ptr))); *pEndprev = 0L; /* no clue about csize of local */ - } else { - goto ef_default_display; } break; case EF_NTSD: @@ -1519,8 +1535,6 @@ Info(slide, 0, ((char *)slide, LoadFarString(NTSDData), makelong(ef_ptr))); *pEndprev = 0L; /* no clue about csize of local */ - } else { - goto ef_default_display; } break; case EF_IZVMS: @@ -1567,12 +1581,10 @@ LoadFarString(izVMSdata), LoadFarStringSmall(izVMScomp[compr]), makeword(ef_ptr+EB_IZVMS_UCSIZ), p, q)); - } else { - goto ef_default_display; } break; case EF_TIME: - if (eb_datalen > 0) { + if (eb_datalen >= 1) { char types[80]; int num = 0, len; @@ -1605,30 +1617,6 @@ num == 1? nullStr : PlurSufx)); } break; - case EF_UNIPATH: - case EF_UNICOMNT: - if (eb_datalen >= 5) { - unsigned i, n; - ulg name_crc = makelong(ef_ptr+1); - - if (eb_datalen <= 29) { - Info(slide, 0, ((char *)slide, - LoadFarString(U8PthCmnComplete), - (unsigned)ef_ptr[0], name_crc)); - n = eb_datalen; - } else { - Info(slide, 0, ((char *)slide, - LoadFarString(U8PthCmnF24), - (unsigned)ef_ptr[0], name_crc)); - n = 29; - } - for (i = 5; i < n; ++i) - Info(slide, 0, ((char *)slide, - LoadFarString(efFormat), ef_ptr[i])); - } else { - goto ef_default_display; - } - break; case EF_MAC3: if (eb_datalen >= EB_MAC3_HLEN) { ulg eb_uc = makelong(ef_ptr); @@ -1650,8 +1638,6 @@ MacOS_DF : MacOS_RF), (mac3_flgs & EB_M3_FL_TIME64 ? 64 : 32))); zi_showMacTypeCreator(__G__ &ef_ptr[6]); - } else { - goto ef_default_display; } break; case EF_ZIPIT2: @@ -1661,8 +1647,6 @@ if (eb_datalen >= 12) { zi_showMacTypeCreator(__G__ &ef_ptr[4]); } - } else { - goto ef_default_display; } break; case EF_ZIPIT: @@ -1680,8 +1664,6 @@ ef_ptr[fnlen+5] = nullchar; zi_showMacTypeCreator(__G__ &ef_ptr[fnlen+5]); } - } else { - goto ef_default_display; } break; case EF_JLMAC: @@ -1694,8 +1676,6 @@ LoadFarString(MacOSJLEEflags), LoadFarStringSmall(ef_ptr[31] & 1 ? MacOS_DF : MacOS_RF))); - } else { - goto ef_default_display; } break; case EF_SMARTZIP: @@ -1708,8 +1688,6 @@ A_TO_N(filenameBuf); Info(slide, 0, ((char *)slide, LoadFarString(ZipItFname), filenameBuf)); - } else { - goto ef_default_display; } break; #ifdef CMS_MVS @@ -1746,24 +1724,18 @@ } else { *pEndprev = 0L; /* no clue about csize of local */ } - } else { - goto ef_default_display; } break; case EF_QDOS: if (eb_datalen >= 4) { Info(slide, 0, ((char *)slide, LoadFarString(QDOSdata), ef_ptr[0], ef_ptr[1], ef_ptr[2], ef_ptr[3])); - } else { - goto ef_default_display; } break; case EF_AOSVS: if (eb_datalen >= 5) { Info(slide, 0, ((char *)slide, LoadFarString(AOSVSdata), ((int)(uch)ef_ptr[4])/10, ((int)(uch)ef_ptr[4])%10)); - } else { - goto ef_default_display; } break; case EF_TANDEM: @@ -1784,8 +1756,6 @@ LoadFarString(Tandemdata), LoadFarStringSmall(TandemFileformat[type]), code)); - } else { - goto ef_default_display; } break; case EF_MD5: @@ -1801,9 +1771,8 @@ break; } /* else: fall through !! */ default: -ef_default_display: if (eb_datalen > 0) { - unsigned i, n; + ush i, n; if (eb_datalen <= 24) { Info(slide, 0, ((char *)slide, @@ -1880,7 +1849,7 @@ time_t *z_modtim; #endif int k, error, error_in_archive=PK_COOL; - unsigned hostnum, hostver, methid, methnum, xattr; + unsigned hostnum, hostver, methnum, xattr; char *p, workspace[12], attribs[16]; char methbuf[5]; static ZCONST char dtype[5]="NXFS"; /* normal, maximum, fast, superfast */ @@ -1895,8 +1864,7 @@ #endif static ZCONST char Far method[NUM_METHODS+1][5] = { "stor", "shrk", "re:1", "re:2", "re:3", "re:4", "i#:#", "tokn", - "def#", "d64#", "dcli", "bzp2", "lzma", "ters", "lz77", "wavp", - "ppmd", "u###" + "def#", "d64#", "dcli", "u011", "bzp2", "u###" }; @@ -1904,8 +1872,7 @@ Print out various interesting things about the compressed file. ---------------------------------------------------------------------------*/ - methid = (unsigned)(G.crec.compression_method); - methnum = find_compr_idx(G.crec.compression_method); + methnum = (unsigned)MIN(G.crec.compression_method, NUM_METHODS); hostnum = (unsigned)(G.pInfo->hostnum); hostver = (unsigned)(G.pInfo->hostver); /* @@ -1914,10 +1881,10 @@ */ zfstrcpy(methbuf, method[methnum]); - if (methid == IMPLODED) { + if (methnum == IMPLODED) { methbuf[1] = (char)((G.crec.general_purpose_bit_flag & 2)? '8' : '4'); methbuf[3] = (char)((G.crec.general_purpose_bit_flag & 4)? '3' : '2'); - } else if (methid == DEFLATED || methid == ENHDEFLATED) { + } else if (methnum == DEFLATED || methnum == ENHDEFLATED) { ush dnum=(ush)((G.crec.general_purpose_bit_flag>>1) & 3); methbuf[3] = dtype[dnum]; } else if (methnum >= NUM_METHODS) { /* unknown */ @@ -2120,15 +2087,15 @@ } /* end switch (hostnum: external attributes format) */ #ifdef OLD_THEOS_EXTRA - Info(slide, 0, ((char *)slide, "%s %s %s ", attribs, + Info(slide, 0, ((char *)slide, "%s %s %8lu ", attribs, LoadFarStringSmall(((hostnum == FS_VFAT_ && hostver == 20) ? os_TheosOld : os[hostnum])), - FmZofft(G.crec.ucsize, "8", "u"))); + G.crec.ucsize)); #else - Info(slide, 0, ((char *)slide, "%s %s %s ", attribs, + Info(slide, 0, ((char *)slide, "%s %s %8lu ", attribs, LoadFarStringSmall(os[hostnum]), - FmZofft(G.crec.ucsize, "8", "u"))); + G.crec.ucsize)); #endif Info(slide, 0, ((char *)slide, "%c", (G.crec.general_purpose_bit_flag & 1)? @@ -2144,15 +2111,30 @@ /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ extended local header or not */ if (uO.lflag == 4) { - zusz_t csiz = G.crec.csize; + ulg csiz = G.crec.csize; if (G.crec.general_purpose_bit_flag & 1) csiz -= 12; /* if encrypted, don't count encryption header */ Info(slide, 0, ((char *)slide, "%3d%%", (ratio(G.crec.ucsize,csiz)+5)/10)); } else if (uO.lflag == 5) - Info(slide, 0, ((char *)slide, " %s", - FmZofft(G.crec.csize, "8", "u"))); + Info(slide, 0, ((char *)slide, " %8lu", G.crec.csize)); + + /* Read the extra field, if any. The extra field info may be used + * in the file modification time section, below. + */ + if ((error = do_string(__G__ G.crec.extra_field_length, EXTRA_FIELD)) != 0) + { + if (G.extra_field != NULL) { + free(G.extra_field); + G.extra_field = NULL; + } + error_in_archive = error; + /* We do not return prematurely in case of a "fatal" error (PK_EOF). + * This does not hurt here, because we do not need to read from the + * zipfile again before the end of this function. + */ + } /* For printing of date & time, a "char d_t_buf[16]" is required. * To save stack space, we reuse the "char attribs[16]" buffer whose @@ -2269,7 +2251,7 @@ /* time conversion error in verbose listing format, * return string with '?' instead of data */ - return (strcpy(d_t_str, LoadFarString(lngYMDHMSTimeError))); + return (strcpy(d_t_str, LoadFarString(YMDHMSTimeError))); } else t = (struct tm *)NULL; if (t != (struct tm *)NULL) { @@ -2299,14 +2281,14 @@ monthstr = LoadFarStringSmall(month[mo-1]); if (uO.lflag > 9) /* verbose listing format */ - sprintf(d_t_str, LoadFarString(lngYMDHMSTime), yr+1900, monthstr, dy, - hh, mm, ss); + sprintf(d_t_str, LoadFarString(YMDHMSTime), yr+1900, monthstr, dy, hh, + mm, ss); else if (uO.T_flag) - sprintf(d_t_str, LoadFarString(DecimalTime), yr+1900, mo, dy, - hh, mm, ss); + sprintf(d_t_str, LoadFarString(DecimalTime), yr+1900, mo, dy, hh, mm, + ss); else /* was: if ((uO.lflag >= 3) && (uO.lflag <= 5)) */ - sprintf(d_t_str, LoadFarString(shtYMDHMTime), yr%100, monthstr, dy, - hh, mm); + sprintf(d_t_str, LoadFarString(DMYHMTime), dy, monthstr, yr%100, hh, + mm); return d_t_str; diff -Nru unzip-6.0/zipinfo.txt unzip-6.0/zipinfo.txt --- unzip-6.0/zipinfo.txt 2009-04-20 01:00:30.000000000 +0000 +++ unzip-6.0/zipinfo.txt 2010-05-14 07:26:14.000000000 +0000 @@ -1,233 +1,281 @@ -ZIPINFO(1L) ZIPINFO(1L) + +ZIPINFO(1L) ZIPINFO(1L) NAME zipinfo - list detailed information about a ZIP archive SYNOPSIS - zipinfo [-12smlvhMtTz] file[.zip] [file(s) ...] [-x xfile(s) ...] + zipinfo [-12smlvhMtTz] file[.zip] [file(s) ...] + [-x xfile(s) ...] - unzip -Z [-12smlvhMtTz] file[.zip] [file(s) ...] [-x xfile(s) ...] + unzip -Z [-12smlvhMtTz] file[.zip] [file(s) ...] + [-x xfile(s) ...] DESCRIPTION - zipinfo lists technical information about files in a ZIP archive, most - commonly found on MS-DOS systems. Such information includes file - access permissions, encryption status, type of compression, version and - operating system or file system of compressing program, and the like. - The default behavior (with no options) is to list single-line entries - for each file in the archive, with header and trailer lines providing - summary information for the entire archive. The format is a cross - between Unix ``ls -l'' and ``unzip -v'' output. See DETAILED DESCRIP- - TION below. Note that zipinfo is the same program as unzip (under - Unix, a link to it); on some systems, however, zipinfo support may have - been omitted when unzip was compiled. + zipinfo lists technical information about files in a ZIP + archive, most commonly found on MS-DOS systems. Such + information includes file access permissions, encryption + status, type of compression, version and operating system + or file system of compressing program, and the like. The + default behavior (with no options) is to list single-line + entries for each file in the archive, with header and + trailer lines providing summary information for the entire + archive. The format is a cross between Unix ``ls -l'' and + ``unzip -v'' output. See DETAILED DESCRIPTION below. + Note that zipinfo is the same program as unzip (under + Unix, a link to it); on some systems, however, zipinfo + support may have been omitted when unzip was compiled. ARGUMENTS file[.zip] - Path of the ZIP archive(s). If the file specification is a - wildcard, each matching file is processed in an order determined - by the operating system (or file system). Only the filename can - be a wildcard; the path itself cannot. Wildcard expressions are - similar to Unix egrep(1) (regular) expressions and may contain: + Path of the ZIP archive(s). If the file specifica- + tion is a wildcard, each matching file is processed + in an order determined by the operating system (or + file system). Only the filename can be a wildcard; + the path itself cannot. Wildcard expressions are + similar to Unix egrep(1) (regular) expressions and + may contain: * matches a sequence of 0 or more characters ? matches exactly 1 character - [...] matches any single character found inside the brackets; - ranges are specified by a beginning character, a hyphen, - and an ending character. If an exclamation point or a - caret (`!' or `^') follows the left bracket, then the - range of characters within the brackets is complemented - (that is, anything except the characters inside the - brackets is considered a match). To specify a verbatim - left bracket, the three-character sequence ``[[]'' has to - be used. - - (Be sure to quote any character that might otherwise be inter- - preted or modified by the operating system, particularly under - Unix and VMS.) If no matches are found, the specification is - assumed to be a literal filename; and if that also fails, the - suffix .zip is appended. Note that self-extracting ZIP files - are supported, as with any other ZIP archive; just specify the - .exe suffix (if any) explicitly. + [...] matches any single character found inside + the brackets; ranges are specified by a + beginning character, a hyphen, and an ending + character. If an exclamation point or a + caret (`!' or `^') follows the left bracket, + then the range of characters within the + brackets is complemented (that is, anything + except the characters inside the brackets is + considered a match). To specify a verbatim + left bracket, the three-character sequence + ``[[]'' has to be used. + + (Be sure to quote any character that might other- + wise be interpreted or modified by the operating + system, particularly under Unix and VMS.) If no + +Info-ZIP 28 February 2005 (v2.42) 1 + +ZIPINFO(1L) ZIPINFO(1L) + + matches are found, the specification is assumed to + be a literal filename; and if that also fails, the + suffix .zip is appended. Note that self-extracting + ZIP files are supported, as with any other ZIP + archive; just specify the .exe suffix (if any) + explicitly. [file(s)] - An optional list of archive members to be processed, separated - by spaces. (VMS versions compiled with VMSCLI defined must - delimit files with commas instead.) Regular expressions (wild- - cards) may be used to match multiple members; see above. Again, - be sure to quote expressions that would otherwise be expanded or - modified by the operating system. + An optional list of archive members to be pro- + cessed, separated by spaces. (VMS versions com- + piled with VMSCLI defined must delimit files with + commas instead.) Regular expressions (wildcards) + may be used to match multiple members; see above. + Again, be sure to quote expressions that would oth- + erwise be expanded or modified by the operating + system. [-x xfile(s)] - An optional list of archive members to be excluded from process- - ing. + An optional list of archive members to be excluded + from processing. OPTIONS - -1 list filenames only, one per line. This option excludes all - others; headers, trailers and zipfile comments are never - printed. It is intended for use in Unix shell scripts. - - -2 list filenames only, one per line, but allow headers (-h), - trailers (-t) and zipfile comments (-z), as well. This option - may be useful in cases where the stored filenames are particu- - larly long. - - -s list zipfile info in short Unix ``ls -l'' format. This is the - default behavior; see below. - - -m list zipfile info in medium Unix ``ls -l'' format. Identical to - the -s output, except that the compression factor, expressed as - a percentage, is also listed. - - -l list zipfile info in long Unix ``ls -l'' format. As with -m - except that the compressed size (in bytes) is printed instead of - the compression ratio. - - -v list zipfile information in verbose, multi-page format. - - -h list header line. The archive name, actual size (in bytes) and - total number of files is printed. - - -M pipe all output through an internal pager similar to the Unix - more(1) command. At the end of a screenful of output, zipinfo - pauses with a ``--More--'' prompt; the next screenful may be - viewed by pressing the Enter (Return) key or the space bar. - zipinfo can be terminated by pressing the ``q'' key and, on some - systems, the Enter/Return key. Unlike Unix more(1), there is no - forward-searching or editing capability. Also, zipinfo doesn't - notice if long lines wrap at the edge of the screen, effectively - resulting in the printing of two or more lines and the likeli- - hood that some text will scroll off the top of the screen before - being viewed. On some systems the number of available lines on - the screen is not detected, in which case zipinfo assumes the - height is 24 lines. - - -t list totals for files listed or for all files. The number of - files listed, their uncompressed and compressed total sizes , - and their overall compression factor is printed; or, if only the - totals line is being printed, the values for the entire archive - are given. The compressed total size does not include the 12 - additional header bytes of each encrypted entry. Note that the - total compressed (data) size will never match the actual zipfile - size, since the latter includes all of the internal zipfile - headers in addition to the compressed data. - - -T print the file dates and times in a sortable decimal format - (yymmdd.hhmmss). The default date format is a more standard, - human-readable version with abbreviated month names (see exam- - ples below). - - -U [UNICODE_SUPPORT only] modify or disable UTF-8 handling. When - UNICODE_SUPPORT is available, the option -U forces unzip to - escape all non-ASCII characters from UTF-8 coded filenames as - ``#Uxxxx''. This option is mainly provided for debugging pur- - pose when the fairly new UTF-8 support is suspected to mangle up - extracted filenames. - - The option -UU allows to entirely disable the recognition of - UTF-8 encoded filenames. The handling of filename codings - within unzip falls back to the behaviour of previous versions. + -1 list filenames only, one per line. This option + excludes all others; headers, trailers and zipfile + comments are never printed. It is intended for use + in Unix shell scripts. + + -2 list filenames only, one per line, but allow head- + ers (-h), trailers (-t) and zipfile comments (-z), + as well. This option may be useful in cases where + the stored filenames are particularly long. + + -s list zipfile info in short Unix ``ls -l'' format. + This is the default behavior; see below. + + -m list zipfile info in medium Unix ``ls -l'' format. + Identical to the -s output, except that the com- + pression factor, expressed as a percentage, is also + listed. + + -l list zipfile info in long Unix ``ls -l'' format. + As with -m except that the compressed size (in + bytes) is printed instead of the compression ratio. + + -v list zipfile information in verbose, multi-page + format. + + -h list header line. The archive name, actual size + (in bytes) and total number of files is printed. + + -M pipe all output through an internal pager similar + to the Unix more(1) command. At the end of a + screenful of output, zipinfo pauses with a + ``--More--'' prompt; the next screenful may be + +Info-ZIP 28 February 2005 (v2.42) 2 + +ZIPINFO(1L) ZIPINFO(1L) + + viewed by pressing the Enter (Return) key or the + space bar. zipinfo can be terminated by pressing + the ``q'' key and, on some systems, the + Enter/Return key. Unlike Unix more(1), there is no + forward-searching or editing capability. Also, + zipinfo doesn't notice if long lines wrap at the + edge of the screen, effectively resulting in the + printing of two or more lines and the likelihood + that some text will scroll off the top of the + screen before being viewed. On some systems the + number of available lines on the screen is not + detected, in which case zipinfo assumes the height + is 24 lines. + + -t list totals for files listed or for all files. The + number of files listed, their uncompressed and com- + pressed total sizes , and their overall compression + factor is printed; or, if only the totals line is + being printed, the values for the entire archive + are given. The compressed total size does not + include the 12 additional header bytes of each + encrypted entry. Note that the total compressed + (data) size will never match the actual zipfile + size, since the latter includes all of the internal + zipfile headers in addition to the compressed data. + + -T print the file dates and times in a sortable deci- + mal format (yymmdd.hhmmss). The default date for- + mat is a more standard, human-readable version with + abbreviated month names (see examples below). - -z include the archive comment (if any) in the listing. + -z include the archive comment (if any) in the list- + ing. DETAILED DESCRIPTION - zipinfo has a number of modes, and its behavior can be rather difficult - to fathom if one isn't familiar with Unix ls(1) (or even if one is). - The default behavior is to list files in the following format: + zipinfo has a number of modes, and its behavior can be + rather difficult to fathom if one isn't familiar with Unix + ls(1) (or even if one is). The default behavior is to + list files in the following format: -rw-rws--- 1.9 unx 2802 t- defX 11-Aug-91 13:48 perms.2660 - The last three fields are the modification date and time of the file, - and its name. The case of the filename is respected; thus files that - come from MS-DOS PKZIP are always capitalized. If the file was zipped - with a stored directory name, that is also displayed as part of the + The last three fields are the modification date and time + of the file, and its name. The case of the filename is + respected; thus files that come from MS-DOS PKZIP are + always capitalized. If the file was zipped with a stored + directory name, that is also displayed as part of the filename. - The second and third fields indicate that the file was zipped under - Unix with version 1.9 of zip. Since it comes from Unix, the file per- - missions at the beginning of the line are printed in Unix format. The - uncompressed file-size (2802 in this example) is the fourth field. - - The fifth field consists of two characters, either of which may take on - several values. The first character may be either `t' or `b', indicat- - ing that zip believes the file to be text or binary, respectively; but - if the file is encrypted, zipinfo notes this fact by capitalizing the - character (`T' or `B'). The second character may also take on four - values, depending on whether there is an extended local header and/or - an ``extra field'' associated with the file (fully explained in - PKWare's APPNOTE.TXT, but basically analogous to pragmas in ANSI - C--i.e., they provide a standard way to include non-standard informa- - tion in the archive). If neither exists, the character will be a - hyphen (`-'); if there is an extended local header but no extra field, - `l'; if the reverse, `x'; and if both exist, `X'. Thus the file in - this example is (probably) a text file, is not encrypted, and has nei- - ther an extra field nor an extended local header associated with it. - The example below, on the other hand, is an encrypted binary file with - an extra field: + The second and third fields indicate that the file was + zipped under Unix with version 1.9 of zip. Since it comes + from Unix, the file permissions at the beginning of the + line are printed in Unix format. The uncompressed file- + size (2802 in this example) is the fourth field. + +Info-ZIP 28 February 2005 (v2.42) 3 + +ZIPINFO(1L) ZIPINFO(1L) + + The fifth field consists of two characters, either of + which may take on several values. The first character may + be either `t' or `b', indicating that zip believes the + file to be text or binary, respectively; but if the file + is encrypted, zipinfo notes this fact by capitalizing the + character (`T' or `B'). The second character may also + take on four values, depending on whether there is an + extended local header and/or an ``extra field'' associated + with the file (fully explained in PKWare's APPNOTE.TXT, + but basically analogous to pragmas in ANSI C--i.e., they + provide a standard way to include non-standard information + in the archive). If neither exists, the character will be + a hyphen (`-'); if there is an extended local header but + no extra field, `l'; if the reverse, `x'; and if both + exist, `X'. Thus the file in this example is (probably) a + text file, is not encrypted, and has neither an extra + field nor an extended local header associated with it. + The example below, on the other hand, is an encrypted + binary file with an extra field: RWD,R,R 0.9 vms 168 Bx shrk 9-Aug-91 19:15 perms.0644 - Extra fields are used for various purposes (see discussion of the -v - option below) including the storage of VMS file attributes, which is - presumably the case here. Note that the file attributes are listed in - VMS format. Some other possibilities for the host operating system - (which is actually a misnomer--host file system is more correct) - include OS/2 or NT with High Performance File System (HPFS), MS-DOS, - OS/2 or NT with File Allocation Table (FAT) file system, and Macintosh. - These are denoted as follows: + Extra fields are used for various purposes (see discussion + of the -v option below) including the storage of VMS file + attributes, which is presumably the case here. Note that + the file attributes are listed in VMS format. Some other + possibilities for the host operating system (which is + actually a misnomer--host file system is more correct) + include OS/2 or NT with High Performance File System + (HPFS), MS-DOS, OS/2 or NT with File Allocation Table + (FAT) file system, and Macintosh. These are denoted as + follows: -rw-a-- 1.0 hpf 5358 Tl i4:3 4-Dec-91 11:33 longfilename.hpfs -r--ahs 1.1 fat 4096 b- i4:2 14-Jul-91 12:58 EA DATA. SF --w------- 1.0 mac 17357 bx i8:2 4-May-92 04:02 unzip.macr - File attributes in the first two cases are indicated in a Unix-like - format, where the seven subfields indicate whether the file: (1) is a - directory, (2) is readable (always true), (3) is writable, (4) is exe- - cutable (guessed on the basis of the extension--.exe, .com, .bat, .cmd - and .btm files are assumed to be so), (5) has its archive bit set, (6) - is hidden, and (7) is a system file. Interpretation of Macintosh file - attributes is unreliable because some Macintosh archivers don't store - any attributes in the archive. - - Finally, the sixth field indicates the compression method and possible - sub-method used. There are six methods known at present: storing (no - compression), reducing, shrinking, imploding, tokenizing (never pub- - licly released), and deflating. In addition, there are four levels of - reducing (1 through 4); four types of imploding (4K or 8K sliding dic- - tionary, and 2 or 3 Shannon-Fano trees); and four levels of deflating - (superfast, fast, normal, maximum compression). zipinfo represents - these methods and their sub-methods as follows: stor; re:1, re:2, - etc.; shrk; i4:2, i8:3, etc.; tokn; and defS, defF, defN, and defX. - - The medium and long listings are almost identical to the short format - except that they add information on the file's compression. The medium - format lists the file's compression factor as a percentage indicating - the amount of space that has been ``removed'': + File attributes in the first two cases are indicated in a + Unix-like format, where the seven subfields indicate + whether the file: (1) is a directory, (2) is readable + (always true), (3) is writable, (4) is executable (guessed + on the basis of the extension--.exe, .com, .bat, .cmd and + .btm files are assumed to be so), (5) has its archive bit + set, (6) is hidden, and (7) is a system file. Interpreta- + tion of Macintosh file attributes is unreliable because + some Macintosh archivers don't store any attributes in the + archive. + + Finally, the sixth field indicates the compression method + and possible sub-method used. There are six methods known + at present: storing (no compression), reducing, shrink- + ing, imploding, tokenizing (never publicly released), and + deflating. In addition, there are four levels of reducing + (1 through 4); four types of imploding (4K or 8K sliding + +Info-ZIP 28 February 2005 (v2.42) 4 + +ZIPINFO(1L) ZIPINFO(1L) + + dictionary, and 2 or 3 Shannon-Fano trees); and four lev- + els of deflating (superfast, fast, normal, maximum com- + pression). zipinfo represents these methods and their + sub-methods as follows: stor; re:1, re:2, etc.; shrk; + i4:2, i8:3, etc.; tokn; and defS, defF, defN, and defX. + + The medium and long listings are almost identical to the + short format except that they add information on the + file's compression. The medium format lists the file's + compression factor as a percentage indicating the amount + of space that has been ``removed'': -rw-rws--- 1.5 unx 2802 t- 81% defX 11-Aug-91 13:48 perms.2660 - In this example, the file has been compressed by more than a factor of - five; the compressed data are only 19% of the original size. The long - format gives the compressed file's size in bytes, instead: + In this example, the file has been compressed by more than + a factor of five; the compressed data are only 19% of the + original size. The long format gives the compressed + file's size in bytes, instead: -rw-rws--- 1.5 unx 2802 t- 538 defX 11-Aug-91 13:48 perms.2660 - In contrast to the unzip listings, the compressed size figures in this - listing format denote the complete size of compressed data, including - the 12 extra header bytes in case of encrypted entries. + In contrast to the unzip listings, the compressed size + figures in this listing format denote the complete size of + compressed data, including the 12 extra header bytes in + case of encrypted entries. - Adding the -T option changes the file date and time to decimal format: + Adding the -T option changes the file date and time to + decimal format: -rw-rws--- 1.5 unx 2802 t- 538 defX 910811.134804 perms.2660 - Note that because of limitations in the MS-DOS format used to store - file times, the seconds field is always rounded to the nearest even - second. For Unix files this is expected to change in the next major - releases of zip(1L) and unzip. + Note that because of limitations in the MS-DOS format used + to store file times, the seconds field is always rounded + to the nearest even second. For Unix files this is + expected to change in the next major releases of zip(1L) + and unzip. - In addition to individual file information, a default zipfile listing - also includes header and trailer lines: + In addition to individual file information, a default zip- + file listing also includes header and trailer lines: Archive: OS2.zip 5453 bytes 5 files ,,rw, 1.0 hpf 730 b- i4:3 26-Jun-92 23:40 Contents @@ -237,50 +285,64 @@ ,,rw, 1.0 hpf 95 b- stor 21-Aug-91 17:51 zipinfo.def 5 files, 13386 bytes uncompressed, 4951 bytes compressed: 63.0% - The header line gives the name of the archive, its total size, and the - total number of files; the trailer gives the number of files listed, - their total uncompressed size, and their total compressed size (not - including any of zip's internal overhead). If, however, one or more - file(s) are provided, the header and trailer lines are not listed. - This behavior is also similar to that of Unix's ``ls -l''; it may be - overridden by specifying the -h and -t options explicitly. In such a - case the listing format must also be specified explicitly, since -h or - -t (or both) in the absence of other options implies that ONLY the - header or trailer line (or both) is listed. See the EXAMPLES section - below for a semi-intelligible translation of this nonsense. - - The verbose listing is mostly self-explanatory. It also lists file - comments and the zipfile comment, if any, and the type and number of - bytes in any stored extra fields. Currently known types of extra - fields include PKWARE's authentication (``AV'') info; OS/2 extended - attributes; VMS filesystem info, both PKWARE and Info-ZIP versions; - Macintosh resource forks; Acorn/Archimedes SparkFS info; and so on. - (Note that in the case of OS/2 extended attributes--perhaps the most - common use of zipfile extra fields--the size of the stored EAs as - reported by zipinfo may not match the number given by OS/2's dir com- - mand: OS/2 always reports the number of bytes required in 16-bit for- + The header line gives the name of the archive, its total + size, and the total number of files; the trailer gives the + number of files listed, their total uncompressed size, and + their total compressed size (not including any of zip's + internal overhead). If, however, one or more file(s) are + provided, the header and trailer lines are not listed. + +Info-ZIP 28 February 2005 (v2.42) 5 + +ZIPINFO(1L) ZIPINFO(1L) + + This behavior is also similar to that of Unix's ``ls -l''; + it may be overridden by specifying the -h and -t options + explicitly. In such a case the listing format must also + be specified explicitly, since -h or -t (or both) in the + absence of other options implies that ONLY the header or + trailer line (or both) is listed. See the EXAMPLES sec- + tion below for a semi-intelligible translation of this + nonsense. + + The verbose listing is mostly self-explanatory. It also + lists file comments and the zipfile comment, if any, and + the type and number of bytes in any stored extra fields. + Currently known types of extra fields include PKWARE's + authentication (``AV'') info; OS/2 extended attributes; + VMS filesystem info, both PKWARE and Info-ZIP versions; + Macintosh resource forks; Acorn/Archimedes SparkFS info; + and so on. (Note that in the case of OS/2 extended + attributes--perhaps the most common use of zipfile extra + fields--the size of the stored EAs as reported by zipinfo + may not match the number given by OS/2's dir command: OS/2 + always reports the number of bytes required in 16-bit for- mat, whereas zipinfo always reports the 32-bit storage.) - Again, the compressed size figures of the individual entries include - the 12 extra header bytes for encrypted entries. In contrast, the - archive total compressed size and the average compression ratio shown - in the summary bottom line are calculated without the extra 12 header + Again, the compressed size figures of the individual + entries include the 12 extra header bytes for encrypted + entries. In contrast, the archive total compressed size + and the average compression ratio shown in the summary + bottom line are calculated without the extra 12 header bytes of encrypted entries. ENVIRONMENT OPTIONS - Modifying zipinfo's default behavior via options placed in an environ- - ment variable can be a bit complicated to explain, due to zipinfo's - attempts to handle various defaults in an intuitive, yet Unix-like, - manner. (Try not to laugh.) Nevertheless, there is some underlying - logic. In brief, there are three ``priority levels'' of options: the - default options; environment options, which can override or add to the - defaults; and explicit options given by the user, which can override or - add to either of the above. - - The default listing format, as noted above, corresponds roughly to the - "zipinfo -hst" command (except when individual zipfile members are - specified). A user who prefers the long-listing format (-l) can make - use of the zipinfo's environment variable to change this default: + Modifying zipinfo's default behavior via options placed in + an environment variable can be a bit complicated to + explain, due to zipinfo's attempts to handle various + defaults in an intuitive, yet Unix-like, manner. (Try not + to laugh.) Nevertheless, there is some underlying logic. + In brief, there are three ``priority levels'' of options: + the default options; environment options, which can over- + ride or add to the defaults; and explicit options given by + the user, which can override or add to either of the + above. + + The default listing format, as noted above, corresponds + roughly to the "zipinfo -hst" command (except when indi- + vidual zipfile members are specified). A user who prefers + the long-listing format (-l) can make use of the zipinfo's + environment variable to change this default: Unix Bourne shell: ZIPINFO=-l; export ZIPINFO @@ -288,138 +350,172 @@ Unix C shell: setenv ZIPINFO -l +Info-ZIP 28 February 2005 (v2.42) 6 + +ZIPINFO(1L) ZIPINFO(1L) + OS/2 or MS-DOS: set ZIPINFO=-l VMS (quotes for lowercase): define ZIPINFO_OPTS "-l" - If, in addition, the user dislikes the trailer line, zipinfo's concept - of ``negative options'' may be used to override the default inclusion - of the line. This is accomplished by preceding the undesired option - with one or more minuses: e.g., ``-l-t'' or ``--tl'', in this example. - The first hyphen is the regular switch character, but the one before - the `t' is a minus sign. The dual use of hyphens may seem a little - awkward, but it's reasonably intuitive nonetheless: simply ignore the - first hyphen and go from there. It is also consistent with the behav- - ior of the Unix command nice(1). - - As suggested above, the default variable names are ZIPINFO_OPTS for VMS - (where the symbol used to install zipinfo as a foreign command would - otherwise be confused with the environment variable), and ZIPINFO for - all other operating systems. For compatibility with zip(1L), ZIPIN- - FOOPT is also accepted (don't ask). If both ZIPINFO and ZIPINFOOPT are - defined, however, ZIPINFO takes precedence. unzip's diagnostic option - (-v with no zipfile name) can be used to check the values of all four - possible unzip and zipinfo environment variables. + If, in addition, the user dislikes the trailer line, zip- + info's concept of ``negative options'' may be used to + override the default inclusion of the line. This is + accomplished by preceding the undesired option with one or + more minuses: e.g., ``-l-t'' or ``--tl'', in this exam- + ple. The first hyphen is the regular switch character, + but the one before the `t' is a minus sign. The dual use + of hyphens may seem a little awkward, but it's reasonably + intuitive nonetheless: simply ignore the first hyphen and + go from there. It is also consistent with the behavior of + the Unix command nice(1). + + As suggested above, the default variable names are ZIP- + INFO_OPTS for VMS (where the symbol used to install zip- + info as a foreign command would otherwise be confused with + the environment variable), and ZIPINFO for all other oper- + ating systems. For compatibility with zip(1L), ZIPINFOOPT + is also accepted (don't ask). If both ZIPINFO and ZIPIN- + FOOPT are defined, however, ZIPINFO takes precedence. + unzip's diagnostic option (-v with no zipfile name) can be + used to check the values of all four possible unzip and + zipinfo environment variables. EXAMPLES - To get a basic, short-format listing of the complete contents of a ZIP - archive storage.zip, with both header and totals lines, use only the - archive name as an argument to zipinfo: + To get a basic, short-format listing of the complete con- + tents of a ZIP archive storage.zip, with both header and + totals lines, use only the archive name as an argument to + zipinfo: zipinfo storage - To produce a basic, long-format listing (not verbose), including header - and totals lines, use -l: + To produce a basic, long-format listing (not verbose), + including header and totals lines, use -l: zipinfo -l storage - To list the complete contents of the archive without header and totals - lines, either negate the -h and -t options or else specify the contents - explicitly: + To list the complete contents of the archive without + header and totals lines, either negate the -h and -t + options or else specify the contents explicitly: zipinfo --h-t storage zipinfo storage \* - (where the backslash is required only if the shell would otherwise - expand the `*' wildcard, as in Unix when globbing is turned on--double - quotes around the asterisk would have worked as well). To turn off the - totals line by default, use the environment variable (C shell is - assumed here): + (where the backslash is required only if the shell would + otherwise expand the `*' wildcard, as in Unix when glob- + bing is turned on--double quotes around the asterisk would + have worked as well). To turn off the totals line by + default, use the environment variable (C shell is assumed + +Info-ZIP 28 February 2005 (v2.42) 7 + +ZIPINFO(1L) ZIPINFO(1L) + + here): setenv ZIPINFO --t zipinfo storage - To get the full, short-format listing of the first example again, given - that the environment variable is set as in the previous example, it is - necessary to specify the -s option explicitly, since the -t option by - itself implies that ONLY the footer line is to be printed: + To get the full, short-format listing of the first example + again, given that the environment variable is set as in + the previous example, it is necessary to specify the -s + option explicitly, since the -t option by itself implies + that ONLY the footer line is to be printed: setenv ZIPINFO --t zipinfo -t storage [only totals line] zipinfo -st storage [full listing] - The -s option, like -m and -l, includes headers and footers by default, - unless otherwise specified. Since the environment variable specified - no footers and that has a higher precedence than the default behavior - of -s, an explicit -t option was necessary to produce the full listing. - Nothing was indicated about the header, however, so the -s option was - sufficient. Note that both the -h and -t options, when used by them- - selves or with each other, override any default listing of member - files; only the header and/or footer are printed. This behavior is - useful when zipinfo is used with a wildcard zipfile specification; the - contents of all zipfiles are then summarized with a single command. + The -s option, like -m and -l, includes headers and foot- + ers by default, unless otherwise specified. Since the + environment variable specified no footers and that has a + higher precedence than the default behavior of -s, an + explicit -t option was necessary to produce the full list- + ing. Nothing was indicated about the header, however, so + the -s option was sufficient. Note that both the -h and + -t options, when used by themselves or with each other, + override any default listing of member files; only the + header and/or footer are printed. This behavior is useful + when zipinfo is used with a wildcard zipfile specifica- + tion; the contents of all zipfiles are then summarized + with a single command. - To list information on a single file within the archive, in medium for- - mat, specify the filename explicitly: + To list information on a single file within the archive, + in medium format, specify the filename explicitly: zipinfo -m storage unshrink.c - The specification of any member file, as in this example, will override - the default header and totals lines; only the single line of informa- - tion about the requested file will be printed. This is intuitively - what one would expect when requesting information about a single file. - For multiple files, it is often useful to know the total compressed and - uncompressed size; in such cases -t may be specified explicitly: + The specification of any member file, as in this example, + will override the default header and totals lines; only + the single line of information about the requested file + will be printed. This is intuitively what one would + expect when requesting information about a single file. + For multiple files, it is often useful to know the total + compressed and uncompressed size; in such cases -t may be + specified explicitly: zipinfo -mt storage "*.[ch]" Mak\* - To get maximal information about the ZIP archive, use the verbose - option. It is usually wise to pipe the output into a filter such as - Unix more(1) if the operating system allows it: + To get maximal information about the ZIP archive, use the + verbose option. It is usually wise to pipe the output + into a filter such as Unix more(1) if the operating system + allows it: zipinfo -v storage | more - Finally, to see the most recently modified files in the archive, use - the -T option in conjunction with an external sorting utility such as - Unix sort(1) (and sed(1) as well, in this example): + Finally, to see the most recently modified files in the + archive, use the -T option in conjunction with an external + +Info-ZIP 28 February 2005 (v2.42) 8 + +ZIPINFO(1L) ZIPINFO(1L) + + sorting utility such as Unix sort(1) (and sed(1) as well, + in this example): zipinfo -T storage | sort -nr -k 7 | sed 15q - The -nr option to sort(1) tells it to sort numerically in reverse order - rather than in textual order, and the -k 7 option tells it to sort on - the seventh field. This assumes the default short-listing format; if - -m or -l is used, the proper sort(1) option would be -k 8. Older ver- - sions of sort(1) do not support the -k option, but you can use the - traditional + option instead, e.g., +6 instead of -k 7. The sed(1) - command filters out all but the first 15 lines of the listing. Future - releases of zipinfo may incorporate date/time and filename sorting as - built-in options. + The -nr option to sort(1) tells it to sort numerically in + reverse order rather than in textual order, and the -k 7 + option tells it to sort on the seventh field. This + assumes the default short-listing format; if -m or -l is + used, the proper sort(1) option would be -k 8. Older ver- + sions of sort(1) do not support the -k option, but you can + use the traditional + option instead, e.g., +6 instead of + -k 7. The sed(1) command filters out all but the first 15 + lines of the listing. Future releases of zipinfo may + incorporate date/time and filename sorting as built-in + options. TIPS - The author finds it convenient to define an alias ii for zipinfo on - systems that allow aliases (or, on other systems, copy/rename the exe- - cutable, create a link or create a command file with the name ii). The - ii usage parallels the common ll alias for long listings in Unix, and - the similarity between the outputs of the two commands was intentional. + The author finds it convenient to define an alias ii for + zipinfo on systems that allow aliases (or, on other sys- + tems, copy/rename the executable, create a link or create + a command file with the name ii). The ii usage parallels + the common ll alias for long listings in Unix, and the + similarity between the outputs of the two commands was + intentional. BUGS - As with unzip, zipinfo's -M (``more'') option is overly simplistic in - its handling of screen output; as noted above, it fails to detect the - wrapping of long lines and may thereby cause lines at the top of the - screen to be scrolled off before being read. zipinfo should detect and - treat each occurrence of line-wrap as one additional line printed. - This requires knowledge of the screen's width as well as its height. - In addition, zipinfo should detect the true screen geometry on all sys- - tems. - - zipinfo's listing-format behavior is unnecessarily complex and should - be simplified. (This is not to say that it will be.) + As with unzip, zipinfo's -M (``more'') option is overly + simplistic in its handling of screen output; as noted + above, it fails to detect the wrapping of long lines and + may thereby cause lines at the top of the screen to be + scrolled off before being read. zipinfo should detect and + treat each occurrence of line-wrap as one additional line + printed. This requires knowledge of the screen's width as + well as its height. In addition, zipinfo should detect + the true screen geometry on all systems. + + zipinfo's listing-format behavior is unnecessarily complex + and should be simplified. (This is not to say that it + will be.) SEE ALSO - ls(1), funzip(1L), unzip(1L), unzipsfx(1L), zip(1L), zipcloak(1L), zip- - note(1L), zipsplit(1L) + ls(1), funzip(1L), unzip(1L), unzipsfx(1L), zip(1L), zip- + cloak(1L), zipnote(1L), zipsplit(1L) URL The Info-ZIP home page is currently at @@ -428,9 +524,15 @@ ftp://ftp.info-zip.org/pub/infozip/ . AUTHOR - Greg ``Cave Newt'' Roelofs. ZipInfo contains pattern-matching code by - Mark Adler and fixes/improvements by many others. Please refer to the - CONTRIBS file in the UnZip source distribution for a more complete - list. + Greg ``Cave Newt'' Roelofs. ZipInfo contains pattern- + +Info-ZIP 28 February 2005 (v2.42) 9 + +ZIPINFO(1L) ZIPINFO(1L) + + matching code by Mark Adler and fixes/improvements by many + others. Please refer to the CONTRIBS file in the UnZip + source distribution for a more complete list. + +Info-ZIP 28 February 2005 (v2.42) 10 -Info-ZIP 20 April 2009 (v3.0) ZIPINFO(1L)