1 /* 2 Copyright (c) 1990-2009 Info-ZIP. All rights reserved. 3 4 See the accompanying file LICENSE, version 2009-Jan-02 or later 5 (the contents of which are also included in unzip.h) for terms of use. 6 If, for some reason, all these files are missing, the Info-ZIP license 7 also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html 8 */ 9 #ifndef __unzip_structs_h 10 #define __unzip_structs_h 11 12 #ifndef Far 13 # define Far far 14 #endif 15 16 /* Porting definitions between Win 3.1x and Win32 */ 17 #ifdef WIN32 18 # define far 19 # define _far 20 # define __far 21 # define near 22 # define _near 23 # define __near 24 # ifndef FAR 25 # define FAR 26 # endif 27 #endif 28 29 #ifdef __cplusplus 30 extern "C" { 31 #endif 32 33 #ifndef Z_UINT8_DEFINED 34 # if defined(__GNUC__) 35 typedef unsigned long long z_uint8; 36 # define Z_UINT8_DEFINED 37 # elif (defined(_MSC_VER) && (_MSC_VER >= 1100)) 38 typedef unsigned __int64 z_uint8; 39 # define Z_UINT8_DEFINED 40 # elif (defined(__WATCOMC__) && (__WATCOMC__ >= 1100)) 41 typedef unsigned __int64 z_uint8; 42 # define Z_UINT8_DEFINED 43 # elif (defined(__IBMC__) && (__IBMC__ >= 350)) 44 typedef unsigned __int64 z_uint8; 45 # define Z_UINT8_DEFINED 46 # elif (defined(__BORLANDC__) && (__BORLANDC__ >= 0x0500)) 47 typedef unsigned __int64 z_uint8; 48 # define Z_UINT8_DEFINED 49 # elif (defined(__LCC__)) 50 typedef unsigned __int64 z_uint8; 51 # define Z_UINT8_DEFINED 52 # endif 53 #endif 54 55 /* The following "function" types are jointly defined in both Zip and UnZip 56 * DLLs. They are guarded by the DEFINED_ONCE symbol to prevent multiple 57 * declarations in applications that reference both the Zip and the UnZip DLL. 58 */ 59 #ifndef DEFINED_ONCE 60 #define DEFINED_ONCE 61 62 typedef int (WINAPI DLLPRNT) (LPSTR, unsigned long); 63 typedef int (WINAPI DLLPASSWORD) (LPSTR pwbuf, int bufsiz, 64 LPCSTR promptmsg, LPCSTR entryname); 65 # ifdef Z_UINT8_DEFINED 66 typedef int (WINAPI DLLSERVICE) (LPCSTR entryname, z_uint8 uncomprsiz); 67 # else 68 typedef int (WINAPI DLLSERVICE) (LPCSTR entryname, unsigned long uncomprsiz); 69 # endif 70 typedef int (WINAPI DLLSERVICE_I32) (LPCSTR entryname, 71 unsigned long ucsz_lo, unsigned long ucsz_hi); 72 #endif /* DEFINED_ONCE */ 73 74 typedef void (WINAPI DLLSND) (void); 75 typedef int (WINAPI DLLREPLACE) (LPSTR efnam, unsigned efbufsiz); 76 #ifdef Z_UINT8_DEFINED 77 typedef void (WINAPI DLLMESSAGE) (z_uint8 ucsize, z_uint8 csize, 78 unsigned cfactor, 79 unsigned mo, unsigned dy, unsigned yr, unsigned hh, unsigned mm, 80 char c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, char fCrypt); 81 #else 82 typedef void (WINAPI DLLMESSAGE) (unsigned long ucsize, unsigned long csize, 83 unsigned cfactor, 84 unsigned mo, unsigned dy, unsigned yr, unsigned hh, unsigned mm, 85 char c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, char fCrypt); 86 #endif 87 typedef void (WINAPI DLLMESSAGE_I32) (unsigned long ucsiz_l, 88 unsigned long ucsiz_h, unsigned long csiz_l, unsigned long csiz_h, 89 unsigned cfactor, 90 unsigned mo, unsigned dy, unsigned yr, unsigned hh, unsigned mm, 91 char c, LPCSTR filename, LPCSTR methbuf, unsigned long crc, char fCrypt); 92 93 typedef struct { 94 DLLPRNT *print; 95 DLLSND *sound; 96 DLLREPLACE *replace; 97 DLLPASSWORD *password; 98 DLLMESSAGE *SendApplicationMessage; 99 DLLSERVICE *ServCallBk; 100 DLLMESSAGE_I32 *SendApplicationMessage_i32; 101 DLLSERVICE_I32 *ServCallBk_i32; 102 #ifdef Z_UINT8_DEFINED 103 z_uint8 TotalSizeComp; 104 z_uint8 TotalSize; 105 z_uint8 NumMembers; 106 #else 107 struct _TotalSizeComp { 108 unsigned long u4Lo; 109 unsigned long u4Hi; 110 } TotalSizeComp; 111 struct _TotalSize { 112 unsigned long u4Lo; 113 unsigned long u4Hi; 114 } TotalSize; 115 struct _NumMembers { 116 unsigned long u4Lo; 117 unsigned long u4Hi; 118 } NumMembers; 119 #endif 120 unsigned CompFactor; 121 WORD cchComment; 122 } USERFUNCTIONS, far * LPUSERFUNCTIONS; 123 124 /* The following symbol UZ_DCL_STRUCTVER must be incremented whenever an 125 * incompatible change is applied to the WinDLL API structure "DCL" ! 126 */ 127 #define UZ_DCL_STRUCTVER 0x600 128 /* The structure "DCL" is collects most the UnZip WinDLL program options 129 * that control the operation of the main UnZip WinDLL function. 130 */ 131 typedef struct { 132 unsigned StructVersID; /* struct version id (= UZ_DCL_STRUCTVER) */ 133 int ExtractOnlyNewer; /* TRUE for "update" without interaction 134 (extract only newer/new files, without queries) */ 135 int SpaceToUnderscore; /* TRUE if convert space to underscore */ 136 int PromptToOverwrite; /* TRUE if prompt to overwrite is wanted */ 137 int fQuiet; /* quiet flag: 138 { 0 = all | 1 = few | 2 = no } messages */ 139 int ncflag; /* write to stdout if TRUE */ 140 int ntflag; /* test zip file */ 141 int nvflag; /* verbose listing */ 142 int nfflag; /* "freshen" (replace existing files by newer versions) */ 143 int nzflag; /* display zip file comment */ 144 int ndflag; /* controls (sub)dir recreation during extraction 145 0 = junk paths from filenames 146 1 = "safe" usage of paths in filenames (skip ../) 147 2 = allow unsafe path components (dir traversal) 148 */ 149 int noflag; /* always overwriting existing files if TRUE */ 150 int naflag; /* do end-of-line translation */ 151 int nZIflag; /* get ZipInfo output if TRUE */ 152 int B_flag; /* backup existing files if TRUE */ 153 int C_flag; /* be case insensitive if TRUE */ 154 int D_flag; /* controls restoration of timestamps 155 0 = restore all timestamps (default) 156 1 = skip restoration of timestamps for folders 157 created on behalf of directory entries in the 158 Zip archive 159 2 = no restoration of timestamps; extracted files 160 and dirs get stamped with current time */ 161 int U_flag; /* controls UTF-8 filename coding support 162 0 = automatic UTF-8 translation enabled (default) 163 1 = recognize UTF-8 coded names, but all non-ASCII 164 characters are "escaped" into "#Uxxxx" 165 2 = UTF-8 support is disabled, filename handling 166 works exactly as in previous UnZip versions */ 167 int fPrivilege; /* 1 => restore ACLs in user mode, 168 2 => try to use privileges for restoring ACLs */ 169 LPSTR lpszZipFN; /* zip file name */ 170 LPSTR lpszExtractDir; /* directory to extract to. This should be NULL if 171 you are extracting to the current directory. */ 172 } DCL, far * LPDCL; 173 174 #ifdef __cplusplus 175 } 176 #endif 177 178 /* return codes of the (DLLPASSWORD)() callback function */ 179 #define IDM_REPLACE_NO 100 180 #define IDM_REPLACE_TEXT 101 181 #define IDM_REPLACE_YES 102 182 #define IDM_REPLACE_ALL 103 183 #define IDM_REPLACE_NONE 104 184 #define IDM_REPLACE_RENAME 105 185 #define IDM_REPLACE_HELP 106 186 187 #endif /* __unzip_structs_h */ 188