📄 unzip.h
字号:
# define UZ_EXP# endif#endif /* OS2 && !FUNZIP */#if (defined(WINDLL) || defined(USE_UNZIP_LIB))# ifndef EXPENTRY# define UZ_EXP WINAPI# else# define UZ_EXP EXPENTRY# endif#endif#ifndef UZ_EXP# define UZ_EXP#endif#ifdef __cplusplusextern "C" {#endif/*--------------------------------------------------------------------------- Public typedefs. ---------------------------------------------------------------------------*/#ifndef _IZ_TYPES_DEFINED#ifdef MODERN typedef void zvoid;#else /* !MODERN */# ifndef AOS_VS /* mostly modern? */# ifndef VAXC /* not fully modern, but has knows 'void' */# define void int# endif /* !VAXC */# endif /* !AOS_VS */ typedef char zvoid;#endif /* ?MODERN */typedef unsigned char uch; /* code assumes unsigned bytes; these type- */typedef unsigned short ush; /* defs replace byte/UWORD/ULONG (which are */typedef unsigned long ulg; /* predefined on some systems) & match zip */#define _IZ_TYPES_DEFINED#endif /* !_IZ_TYPES_DEFINED *//* InputFn is not yet used and is likely to change: */#ifdef PROTO typedef int (UZ_EXP MsgFn) (zvoid *pG, uch *buf, ulg size, int flag); typedef int (UZ_EXP InputFn) (zvoid *pG, uch *buf, int *size, int flag); typedef void (UZ_EXP PauseFn) (zvoid *pG, ZCONST char *prompt, int flag); typedef int (UZ_EXP PasswdFn) (zvoid *pG, int *rcnt, char *pwbuf, int size, ZCONST char *zfn, ZCONST char *efn); typedef int (UZ_EXP StatCBFn) (zvoid *pG, int fnflag, ZCONST char *zfn, ZCONST char *efn, ZCONST zvoid *details); typedef void (UZ_EXP UsrIniFn) (void);#else /* !PROTO */ typedef int (UZ_EXP MsgFn) (); typedef int (UZ_EXP InputFn) (); typedef void (UZ_EXP PauseFn) (); typedef int (UZ_EXP PasswdFn) (); typedef int (UZ_EXP StatCBFn) (); typedef void (UZ_EXP UsrIniFn) ();#endif /* ?PROTO */typedef struct _UzpBuffer { /* rxstr */ ulg strlength; /* length of string */ char *strptr; /* pointer to string */} UzpBuffer;typedef struct _UzpInit { ulg structlen; /* length of the struct being passed */ /* GRR: can we assume that each of these is a 32-bit pointer? if not, * does it matter? add "far" keyword to make sure? */ MsgFn *msgfn; InputFn *inputfn; PauseFn *pausefn; UsrIniFn *userfn; /* user init function to be called after */ /* globals constructed and initialized */ /* pointer to program's environment area or something? */ /* hooks for performance testing? */ /* hooks for extra unzip -v output? (detect CPU or other hardware?) */ /* anything else? let me (Greg) know... */} UzpInit;typedef struct _UzpCB { ulg structlen; /* length of the struct being passed */ /* GRR: can we assume that each of these is a 32-bit pointer? if not, * does it matter? add "far" keyword to make sure? */ MsgFn *msgfn; InputFn *inputfn; PauseFn *pausefn; PasswdFn *passwdfn; StatCBFn *statrepfn;} UzpCB;/* the collection of general UnZip option flags and option arguments */typedef struct _UzpOpts {#ifndef FUNZIP char *exdir; /* pointer to extraction root directory (-d option) */ char *pwdarg; /* pointer to command-line password (-P option) */ int zipinfo_mode; /* behave like ZipInfo or like normal UnZip? */ int aflag; /* -a: do ASCII-EBCDIC and/or end-of-line translation */#ifdef VMS int bflag; /* -b: force fixed record format for binary files */#endif#ifdef TANDEM int bflag; /* -b: create text files in 'C' format (180)*/#endif#ifdef UNIXBACKUP 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 */#ifdef MACOS int E_flag; /* -E: [MacOS] show Mac extra field during restoring */#endif int fflag; /* -f: "freshen" (extract only newer files) */#if (defined(RISCOS) || defined(ACORN_FTYPE_NFS)) int acorn_nfs_ext; /* -F: RISC OS types & NFS filetype extensions */#endif int hflag; /* -h: header line (zipinfo) */#ifdef MACOS int i_flag; /* -i: [MacOS] ignore filenames stored in Mac e.f. */#endif#ifdef RISCOS int scanimage; /* -I: scan image files */#endif int jflag; /* -j: junk pathnames (unzip) */#if (defined(__ATHEOS__) || defined(__BEOS__) || defined(MACOS)) int J_flag; /* -J: ignore AtheOS/BeOS/MacOS e. f. info (unzip) */#endif#if (defined(__ATHEOS__) || defined(__BEOS__) || defined(UNIX)) int K_flag; /* -K: keep setuid/setgid/tacky permissions */#endif int lflag; /* -12slmv: listing format (zipinfo) */ int L_flag; /* -L: convert filenames from some OSes to lowercase */ int overwrite_none; /* -n: never overwrite files (no prompting) */#ifdef AMIGA int N_flag; /* -N: restore comments as AmigaDOS filenotes */#endif int overwrite_all; /* -o: OK to overwrite files without prompting */#endif /* !FUNZIP */ int qflag; /* -q: produce a lot less output */#ifdef TANDEM int rflag; /* -r: remove file extensions */#endif#ifndef FUNZIP#if (defined(MSDOS) || defined(FLEXOS) || defined(OS2) || defined(WIN32)) int sflag; /* -s: convert spaces in filenames to underscores */#endif#if (defined(NLM)) int sflag; /* -s: convert spaces in filenames to underscores */#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) */ 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 */#if (defined (__ATHEOS__) || defined(__BEOS__) || defined(UNIX)) int X_flag; /* -X: restore owner/protection or UID/GID or ACLs */#else#if (defined(TANDEM) || defined(THEOS)) int X_flag; /* -X: restore owner/protection or UID/GID or ACLs */#else#if (defined(OS2) || defined(VMS) || defined(WIN32)) int X_flag; /* -X: restore owner/protection or UID/GID or ACLs */#endif#endif#endif int zflag; /* -z: display the zipfile comment (only, for unzip) */#if (!defined(RISCOS) && !defined(CMS_MVS) && !defined(TANDEM)) int ddotflag; /* -:: don't skip over "../" path elements */#endif#endif /* !FUNZIP */} UzpOpts;/* intended to be a private struct: */typedef struct _ver { uch major; /* e.g., integer 5 */ uch minor; /* e.g., 2 */ uch patchlevel; /* e.g., 0 */ uch not_used;} _version_type;typedef struct _UzpVer { 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., "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 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; 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;#define UZPINIT_LEN sizeof(UzpInit)#define UZPVER_LEN sizeof(UzpVer)#define cbList(func) int (* UZ_EXP func)(char *filename, cdir_file_hdr *crec)/*--------------------------------------------------------------------------- Return (and exit) values of the public UnZip API functions. ---------------------------------------------------------------------------*//* external return codes */#define PK_OK 0 /* no error */#define PK_COOL 0 /* no error */#define PK_WARN 1 /* warning error */#define PK_ERR 2 /* error in zipfile */#define PK_BADERR 3 /* severe error in zipfile */#define PK_MEM 4 /* insufficient memory (during initialization) */#define PK_MEM2 5 /* insufficient memory (password failure) */#define PK_MEM3 6 /* insufficient memory (file decompression) */#define PK_MEM4 7 /* insufficient memory (memory decompression) */#define PK_MEM5 8 /* insufficient memory (not yet used) */#define PK_NOZIP 9 /* zipfile not found */#define PK_PARAM 10 /* bad or illegal parameters specified */#define PK_FIND 11 /* no files found */#define PK_DISK 50 /* disk full */#define PK_EOF 51 /* unexpected EOF */#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 *//* return codes of password fetches (negative = user abort; positive = error) */#define IZ_PW_ENTERED 0 /* got some password string; use/try it */#define IZ_PW_CANCEL -1 /* no password available (for this entry) */#define IZ_PW_CANCELALL -2 /* no password, skip any further pwd. request */#define IZ_PW_ERROR 5 /* = PK_MEM2 : failure (no mem, no tty, ...) *//* flag values for status callback function */#define UZ_ST_START_EXTRACT 1 /* no details */#define UZ_ST_IN_PROGRESS 2 /* no details */#define UZ_ST_FINISH_MEMBER 3 /* 'details': extracted size *//* return values of status callback function */#define UZ_ST_CONTINUE 0#define UZ_ST_BREAK 1/*--------------------------------------------------------------------------- Prototypes for public UnZip API (DLL) functions. ---------------------------------------------------------------------------*/#define UzpMatch matchint UZ_EXP UzpMain OF((int argc, char **argv));int UZ_EXP UzpAltMain OF((int argc, char **argv, UzpInit *init));UzpVer * UZ_EXP UzpVersion OF((void));void UZ_EXP UzpFreeMemBuffer OF((UzpBuffer *retstr));#ifndef WINDLLint UZ_EXP UzpUnzipToMemory OF((char *zip, char *file, UzpOpts *optflgs, UzpCB *UsrFunc, UzpBuffer *retstr));int UZ_EXP UzpGrep OF((char *archive, char *file, char *pattern, int cmd, int SkipBin, UzpCB *UsrFunc));#endif#ifdef OS2int UZ_EXP UzpFileTree OF((char *name, cbList(callBack), char *cpInclude[], char *cpExclude[]));#endifvoid UZ_EXP UzpVersion2 OF((UzpVer2 *version));int UZ_EXP UzpValidate OF((char *archive, int AllCodes));/* default I/O functions (can be swapped out via UzpAltMain() entry point): */int UZ_EXP UzpMessagePrnt OF((zvoid *pG, uch *buf, ulg size, int flag));int UZ_EXP UzpMessageNull OF((zvoid *pG, uch *buf, ulg size, int flag));int UZ_EXP UzpInput OF((zvoid *pG, uch *buf, int *size, int flag));void UZ_EXP UzpMorePause OF((zvoid *pG, ZCONST char *prompt, int flag));int UZ_EXP UzpPassword OF((zvoid *pG, int *rcnt, char *pwbuf, int size, ZCONST char *zfn, ZCONST char *efn));#ifdef __cplusplus}#endif/*--------------------------------------------------------------------------- Remaining private stuff for UnZip compilation. ---------------------------------------------------------------------------*/#ifdef UNZIP_INTERNAL# include "unzpriv.h"#endif#endif /* !__unzip_h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -