📄 unzip.h
字号:
/*---------------------------------------------------------------------------
unzip.h
This header file is used by all of the UnZip source files. Its contents
are divided into seven more-or-less separate sections: predefined macros,
OS-dependent includes, (mostly) OS-independent defines, typedefs, function
prototypes (or "forward declarations," in the case of non-ANSI compilers),
macros, and global-variable declarations.
---------------------------------------------------------------------------*/
#ifndef __unzip_h /* prevent multiple inclusions */
#define __unzip_h
/*****************************************/
/* Predefined, Machine-specific Macros */
/*****************************************/
#if defined(__GO32__) && defined(unix) /* MS-DOS extender: NOT Unix */
# undef unix
#endif
#if (defined(__convex__) && !defined(__convexc__))
# define __convexc__
#endif
#if defined(unix) || defined(M_XENIX) || defined(COHERENT) || defined(__hpux)
# ifndef UNIX
# define UNIX
# endif
#endif /* unix || M_XENIX || COHERENT || __hpux */
#if defined(__convexc__) || defined(MINIX)
# ifndef UNIX
# define UNIX
# endif
#endif /* __convexc__ || MINIX */
#ifdef __COMPILER_KCC__
# include <c-env.h>
# ifdef SYS_T20
# define TOPS20
# endif
#endif /* __COMPILER_KCC__ */
/* define MSDOS for Turbo C (unless OS/2) and Power C as well as Microsoft C */
#ifdef __POWERC
# define __TURBOC__
# define MSDOS
#endif /* __POWERC */
#if defined(__MSDOS__) && (!defined(MSDOS)) /* just to make sure */
# define MSDOS
#endif
#if defined(linux) && (!defined(LINUX))
# define LINUX
#endif
/* use prototypes and ANSI libraries if __STDC__, or Microsoft or Borland C, or
* Silicon Graphics, or Convex?, or IBM C Set/2, or GNU gcc/emx, or Watcom C,
* or Macintosh, or Windows NT, or Sequent, or Atari.
*/
#if defined(__STDC__) || defined(MSDOS) || defined(sgi)
# ifndef PROTO
# define PROTO
# endif
# define MODERN
#endif
#if defined(__IBMC__) || defined(__EMX__) || defined(__WATCOMC__)
# ifndef PROTO
# define PROTO
# endif
# define MODERN
#endif
#if defined(THINK_C) || defined(MPW) || defined(WIN32) || defined(_SEQUENT_)
# ifndef PTX /* Sequent running Dynix/ptx: non-modern compiler */
# ifndef PROTO
# define PROTO
# endif
# define MODERN
# endif
#endif
#if defined(ATARI_ST) || defined(__BORLANDC__) /* || defined(__convexc__) */
# ifndef PROTO
# define PROTO
# endif
# define MODERN
#endif
/* turn off prototypes if requested */
#if defined(NOPROTO) && defined(PROTO)
# undef PROTO
#endif
/* used to remove arguments in function prototypes for non-ANSI C */
#ifdef PROTO
# define OF(a) a
#else
# define OF(a) ()
#endif
/* bad or (occasionally?) missing stddef.h: */
#if defined(M_XENIX) || defined(DNIX)
# define NO_STDDEF_H
#endif
#if defined(apollo) /* defines __STDC__ */
# define NO_STDLIB_H
#endif /* apollo */
#ifdef DNIX
# define SYSV
# define SHORT_NAMES /* 14-char limitation on path components */
/* # define FILENAME_MAX 14 */
# define FILENAME_MAX NAME_MAX /* GRR: experiment */
#endif
#if (defined(__SYSTEM_FIVE) || defined(M_SYSV) || defined(M_SYS5))
# ifndef SYSV
# define SYSV
# endif
#endif /* __SYSTEM_FIVE || M_SYSV || M_SYS5 */
#if (defined(ultrix) || defined(bsd4_2) || defined(sun) || defined(pyr))
# if (!defined(BSD) && !defined(SYSV))
# define BSD
# endif
#endif /* ultrix || bsd4_2 || sun || pyr */
#if defined(__convexc__)
# if (!defined(BSD) && !defined(SYSV))
# define BSD
# endif
#endif /* __convexc__ */
#ifdef pyr /* Pyramid */
# ifdef BSD
# define pyr_bsd
# define USE_STRINGS_H /* instead of more common string.h */
# endif
# define ZMEM /* should ZMEM only be for BSD universe...? */
# define DECLARE_ERRNO /* (AT&T memcpy was claimed to be very slow) */
#endif /* pyr */
#if (defined(CRAY) && defined(ZMEM))
# undef ZMEM
#endif
/* stat() bug for Borland, Watcom, VAX C (also GNU?), and Atari ST MiNT on
* TOS filesystems: returns 0 for wildcards! (returns 0xffffffff on Minix
* filesystem or U: drive under Atari MiNT) */
#if (defined(__TURBOC__) || defined(__WATCOMC__) || defined(VMS))
# define WILD_STAT_BUG
#endif
#if (defined(__MINT__))
# define WILD_STAT_BUG
#endif
#ifdef WILD_STAT_BUG
# define SSTAT(path,pbuf) (iswild(path) || stat(path,pbuf))
#else
# define SSTAT stat
#endif
#ifdef REGULUS /* returns the inode number on success(!)...argh argh argh */
# define stat(p,s) zstat(p,s)
#endif
#define STRNICMP zstrnicmp
/***************************/
/* OS-Dependent Includes */
/***************************/
#ifndef MINIX /* Minix needs it after all the other includes (?) */
# include <stdio.h>
#endif
#include <ctype.h> /* skip for VMS, to use tolower() function? */
#include <errno.h> /* used in mapname() */
#ifdef USE_STRINGS_H
# include <strings.h> /* strcpy, strcmp, memcpy, index/rindex, etc. */
#else
# include <string.h> /* strcpy, strcmp, memcpy, strchr/strrchr, etc. */
#endif
#ifdef MODERN
# include <limits.h> /* GRR: EXPERIMENTAL! (can be deleted) */
#endif
#ifdef EFT
# define LONGINT off_t /* Amdahl UTS nonsense ("extended file types") */
#else
# define LONGINT long
#endif
#ifdef MODERN
# ifndef NO_STDDEF_H
# include <stddef.h>
# endif
# ifndef NO_STDLIB_H
# include <stdlib.h> /* standard library prototypes, malloc(), etc. */
# endif
typedef size_t extent;
typedef void voidp;
#else /* !MODERN */
LONGINT lseek();
# ifdef VAXC /* not fully modern, but does have stdlib.h */
# include <stdlib.h>
# else
char *malloc();
# endif
typedef unsigned int extent;
typedef char voidp;
# define void int
#endif /* ?MODERN */
/* this include must be down here for SysV.4, for some reason... */
#include <signal.h> /* used in unzip.c, file_io.c */
/*---------------------------------------------------------------------------
Amiga section:
---------------------------------------------------------------------------*/
#ifdef AMIGA
# include "amiga/amiga.h"
# ifndef AZTEC_C
# include <sys/types.h> /* off_t, time_t, dev_t, ... */
# include <sys/stat.h>
# endif
# include <fcntl.h> /* O_BINARY for open() w/o CR/LF translation */
# define DATE_FORMAT DF_MDY
# define lenEOL 1
# define PutNativeEOL *q++ = native(LF);
/* # define USE_FWRITE if write() returns 16-bit int */
# define PIPE_ERROR (errno == 9999) /* always false */
#endif
/*---------------------------------------------------------------------------
Atari ST section:
---------------------------------------------------------------------------*/
#if (defined(ATARI_ST) || defined(__MINT__)) /* comments by [cjh] */
# ifdef __TURBOC__
# include <ext.h> /* stat() */
# include <tos.h> /* OS-specific functions (Fdup) */
# endif
# include <time.h>
# ifndef __MINT__
# define dup Fdup
# define mkdir Dcreate
# define DIR_END '\\'
# else
# include <sys/types.h> /* didn't we include this already? */
# include <sys/stat.h>
# include <fcntl.h> /* O_BINARY */
# include <unistd.h> /* dup proto & unix system calls live here */
# include <time.h>
# include <stdio.h> /* didn't we include this already? */
# define dup dup
# define mkdir mkdir
# define DIR_END '/' /* much sexier than DOS filenames... */
# define timezone _timezone /* oops */
# define DIRENT
# define SYMLINKS
# ifdef S_ISLNK /* WARNING: horrible kludge!!!! */
# undef S_ISLNK /* MiNTlibs & POSIX don't define S_ISLNK */
# define S_ISLNK(a) (((a) & 0xa000) == 0xa000)
# endif
# ifdef SHORT_NAMES /* library will truncate weird names on TOS fs */
# undef SHORT_NAMES
# endif
# ifndef ZMEM
# define ZMEM /* we have bcopy, etc., ifndef __STRICT_ANSI__ */
# endif
# endif /* __MINT__ */
# ifndef S_IFMT
# define S_IFMT (S_IFCHR | S_IFREG | S_IFDIR)
# endif
# define DATE_FORMAT DF_MDY
# ifndef lenEOL
# define lenEOL 2 /* DOS convention; MiNT doesn't really care */
# endif
# ifndef PutNativeEOL
# define PutNativeEOL {*q++ = native(CR); *q++ = native(LF);}
# endif
# define EXE_EXTENSION ".tos" /* or .ttp instead?? */
#endif
/*---------------------------------------------------------------------------
Human68k/X68000 section:
---------------------------------------------------------------------------*/
#ifdef __human68k__ /* DO NOT DEFINE DOS_OS2 HERE! If Human68k is so much */
# include <time.h> /* like MS-DOS and/or OS/2, create DOS_HUM_OS2 macro. */
# include <fcntl.h>
# include <io.h>
# include <conio.h>
# include <jctype.h>
# include <sys/stat.h>
# define DATE_FORMAT DF_YMD /* Japanese standard */
/* GRR: these EOL macros are guesses */
# define lenEOL 2
# define PutNativeEOL {*q++ = native(CR); *q++ = native(LF);}
# define EXE_EXTENSION ".exe" /* just a guess... */
#endif
/*---------------------------------------------------------------------------
Mac section:
---------------------------------------------------------------------------*/
#ifdef THINK_C
# define MACOS
# ifndef __STDC__ /* if Think C hasn't defined __STDC__ ... */
# define __STDC__ 1 /* make sure it's defined: it needs it */
# else
# if !__STDC__ /* sometimes __STDC__ is defined as 0; */
# undef __STDC__ /* it needs to be 1 or required header */
# define __STDC__ 1 /* files are not properly included. */
# endif /* !__STDC__ */
# endif
# define CREATOR 'KAHL'
# define MAIN unzip
#endif /* THINK_C */
#ifdef MPW
# define MACOS
# include <Errors.h>
# include <Files.h>
# include <Memory.h>
# include <Quickdraw.h>
# include <ToolUtils.h>
# ifdef fileno
# undef fileno
# endif
# ifdef MCH_MACINTOSH
# define CREATOR 'Manx'
# else
# define CREATOR 'MPS '
# endif
#endif /* MPW */
#ifdef MACOS
# include <fcntl.h> /* O_BINARY for open() w/o CR/LF translation */
# define fileno(x) ((x) == stdout ? 1 : (short)(x))
# define open(x,y) macopen((x), (y), gnVRefNum, glDirID)
# define fopen(x,y) macfopen((x), (y), gnVRefNum, glDirID)
# define close macclose
# define fclose(x) macclose(fileno((x)))
# define read macread
# define write macwrite
# define lseek maclseek
# define creat(x,y) maccreat((x), gnVRefNum, glDirID, gostCreator, gostType)
# define stat(x,y) macstat((x), (y), gnVRefNum, glDirID)
# define dup
# ifndef MCH_MACINTOSH
# define NO_STRNICMP
# endif
# define DIR_END ':'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -