1/** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6#ifndef INCLUDED_TYPES_FCI_FDI 7#define INCLUDED_TYPES_FCI_FDI 1 8 9#ifdef __cplusplus 10extern "C" { 11#endif 12 13#ifndef HUGE 14#define HUGE 15#endif 16 17#ifndef FAR 18#define FAR 19#endif 20 21#ifndef DIAMONDAPI 22#define DIAMONDAPI __cdecl 23#endif 24 25#ifndef _WIN64 26#include <pshpack4.h> 27#endif 28 29#ifndef BASETYPES 30#define BASETYPES 31 typedef unsigned __LONG32 ULONG; 32 typedef ULONG *PULONG; 33 typedef unsigned short USHORT; 34 typedef USHORT *PUSHORT; 35 typedef unsigned char UCHAR; 36 typedef UCHAR *PUCHAR; 37 typedef char *PSZ; 38#endif 39 40#if !defined(_INC_WINDOWS) && !defined(_WINDOWS_) 41 typedef int WINBOOL; 42 typedef unsigned char BYTE; 43 typedef unsigned int UINT; 44#endif 45 46 typedef unsigned __LONG32 CHECKSUM; 47 48 typedef unsigned __LONG32 UOFF; 49 typedef unsigned __LONG32 COFF; 50 51#ifndef TRUE 52#define TRUE 1 53#endif 54 55#ifndef FALSE 56#define FALSE 0 57#endif 58 59#ifndef NULL 60#define NULL 0 61#endif 62 63 typedef struct { 64 int erfOper; 65 int erfType; 66 WINBOOL fError; 67 } ERF; 68 69 typedef ERF *PERF; 70 71#define STATIC static 72 73#define CB_MAX_CHUNK 32768U 74#define CB_MAX_DISK __MSABI_LONG(0x7fffffff) 75#define CB_MAX_FILENAME 256 76#define CB_MAX_CABINET_NAME 256 77#define CB_MAX_CAB_PATH 256 78#define CB_MAX_DISK_NAME 256 79 80 typedef unsigned short TCOMP; 81 82#define tcompMASK_TYPE 0x000F 83#define tcompTYPE_NONE 0x0000 84#define tcompTYPE_MSZIP 0x0001 85#define tcompTYPE_QUANTUM 0x0002 86#define tcompTYPE_LZX 0x0003 87#define tcompBAD 0x000F 88 89#define tcompMASK_LZX_WINDOW 0x1F00 90#define tcompLZX_WINDOW_LO 0x0F00 91#define tcompLZX_WINDOW_HI 0x1500 92#define tcompSHIFT_LZX_WINDOW 8 93 94#define tcompMASK_QUANTUM_LEVEL 0x00F0 95#define tcompQUANTUM_LEVEL_LO 0x0010 96#define tcompQUANTUM_LEVEL_HI 0x0070 97#define tcompSHIFT_QUANTUM_LEVEL 4 98 99#define tcompMASK_QUANTUM_MEM 0x1F00 100#define tcompQUANTUM_MEM_LO 0x0A00 101#define tcompQUANTUM_MEM_HI 0x1500 102#define tcompSHIFT_QUANTUM_MEM 8 103 104#define tcompMASK_RESERVED 0xE000 105#define CompressionTypeFromTCOMP(tc) ((tc) & tcompMASK_TYPE) 106#define CompressionLevelFromTCOMP(tc) (((tc) & tcompMASK_QUANTUM_LEVEL) >> tcompSHIFT_QUANTUM_LEVEL) 107#define CompressionMemoryFromTCOMP(tc) (((tc) & tcompMASK_QUANTUM_MEM) >> tcompSHIFT_QUANTUM_MEM) 108#define TCOMPfromTypeLevelMemory(t,l,m) (((m) << tcompSHIFT_QUANTUM_MEM) | ((l) << tcompSHIFT_QUANTUM_LEVEL) | (t)) 109#define LZXCompressionWindowFromTCOMP(tc) (((tc) & tcompMASK_LZX_WINDOW) >> tcompSHIFT_LZX_WINDOW) 110#define TCOMPfromLZXWindow(w) (((w) << tcompSHIFT_LZX_WINDOW) | (tcompTYPE_LZX)) 111 112#ifndef _WIN64 113#include <poppack.h> 114#endif 115 116#ifdef __cplusplus 117} 118#endif 119#endif 120 121#include <basetsd.h> 122 123#ifndef INCLUDED_FDI 124#define INCLUDED_FDI 1 125 126#ifdef __cplusplus 127extern "C" { 128#endif 129 130#ifndef _WIN64 131#pragma pack(4) 132#endif 133 134 typedef enum { 135 FDIERROR_NONE,FDIERROR_CABINET_NOT_FOUND,FDIERROR_NOT_A_CABINET,FDIERROR_UNKNOWN_CABINET_VERSION,FDIERROR_CORRUPT_CABINET,FDIERROR_ALLOC_FAIL, 136 FDIERROR_BAD_COMPR_TYPE,FDIERROR_MDI_FAIL,FDIERROR_TARGET_FILE,FDIERROR_RESERVE_MISMATCH,FDIERROR_WRONG_CABINET,FDIERROR_USER_ABORT 137 } FDIERROR; 138 139#ifndef _A_NAME_IS_UTF 140#define _A_NAME_IS_UTF 0x80 141#endif 142 143#ifndef _A_EXEC 144#define _A_EXEC 0x40 145#endif 146 147 typedef void *HFDI; 148 149 typedef struct { 150 __LONG32 cbCabinet; 151 USHORT cFolders; 152 USHORT cFiles; 153 USHORT setID; 154 USHORT iCabinet; 155 WINBOOL fReserve; 156 WINBOOL hasprev; 157 WINBOOL hasnext; 158 } FDICABINETINFO; 159 160 typedef FDICABINETINFO *PFDICABINETINFO; 161 162 typedef enum { 163 fdidtNEW_CABINET,fdidtNEW_FOLDER,fdidtDECRYPT 164 } FDIDECRYPTTYPE; 165 166 typedef struct { 167 FDIDECRYPTTYPE fdidt; 168 void *pvUser; 169 __C89_NAMELESS union { 170 struct { 171 void *pHeaderReserve; 172 USHORT cbHeaderReserve; 173 USHORT setID; 174 int iCabinet; 175 } cabinet; 176 struct { 177 void *pFolderReserve; 178 USHORT cbFolderReserve; 179 USHORT iFolder; 180 } folder; 181 182 struct { 183 void *pDataReserve; 184 USHORT cbDataReserve; 185 void *pbData; 186 USHORT cbData; 187 WINBOOL fSplit; 188 USHORT cbPartial; 189 190 } decrypt; 191 }; 192 } FDIDECRYPT; 193 194 typedef FDIDECRYPT *PFDIDECRYPT; 195 196 typedef void *(DIAMONDAPI *PFNALLOC)(ULONG cb); 197#define FNALLOC(fn) void *DIAMONDAPI fn(ULONG cb) 198 199 typedef void (DIAMONDAPI *PFNFREE)(void *pv); 200#define FNFREE(fn) void DIAMONDAPI fn(void *pv) 201 202 typedef INT_PTR (DIAMONDAPI *PFNOPEN) (char *pszFile,int oflag,int pmode); 203 typedef UINT (DIAMONDAPI *PFNREAD) (INT_PTR hf,void *pv,UINT cb); 204 typedef UINT (DIAMONDAPI *PFNWRITE)(INT_PTR hf,void *pv,UINT cb); 205 typedef int (DIAMONDAPI *PFNCLOSE)(INT_PTR hf); 206 typedef __LONG32 (DIAMONDAPI *PFNSEEK) (INT_PTR hf,__LONG32 dist,int seektype); 207 208#define FNOPEN(fn) INT_PTR DIAMONDAPI fn(char *pszFile,int oflag,int pmode) 209#define FNREAD(fn) UINT DIAMONDAPI fn(INT_PTR hf,void *pv,UINT cb) 210#define FNWRITE(fn) UINT DIAMONDAPI fn(INT_PTR hf,void *pv,UINT cb) 211#define FNCLOSE(fn) int DIAMONDAPI fn(INT_PTR hf) 212#define FNSEEK(fn) __LONG32 DIAMONDAPI fn(INT_PTR hf,__LONG32 dist,int seektype) 213 214 typedef int (DIAMONDAPI *PFNFDIDECRYPT)(PFDIDECRYPT pfdid); 215#define FNFDIDECRYPT(fn) int DIAMONDAPI fn(PFDIDECRYPT pfdid) 216 217 typedef struct { 218 __LONG32 cb; 219 char *psz1; 220 char *psz2; 221 char *psz3; 222 void *pv; 223 INT_PTR hf; 224 USHORT date; 225 USHORT time; 226 USHORT attribs; 227 USHORT setID; 228 USHORT iCabinet; 229 USHORT iFolder; 230 FDIERROR fdie; 231 } FDINOTIFICATION,*PFDINOTIFICATION; 232 233 typedef enum { 234 fdintCABINET_INFO,fdintPARTIAL_FILE,fdintCOPY_FILE,fdintCLOSE_FILE_INFO,fdintNEXT_CABINET,fdintENUMERATE 235 } FDINOTIFICATIONTYPE; 236 237 typedef INT_PTR (DIAMONDAPI *PFNFDINOTIFY)(FDINOTIFICATIONTYPE fdint,PFDINOTIFICATION pfdin); 238 239#define FNFDINOTIFY(fn) INT_PTR DIAMONDAPI fn(FDINOTIFICATIONTYPE fdint,PFDINOTIFICATION pfdin) 240 241#ifndef _WIN64 242#pragma pack (1) 243#endif 244 245 typedef struct { 246 char ach[2]; 247 __LONG32 cbFile; 248 } FDISPILLFILE; 249 250 typedef FDISPILLFILE *PFDISPILLFILE; 251 252#ifndef _WIN64 253#pragma pack () 254#endif 255 256#define cpuUNKNOWN (-1) 257#define cpu80286 (0) 258#define cpu80386 (1) 259 260 HFDI DIAMONDAPI FDICreate(PFNALLOC pfnalloc,PFNFREE pfnfree,PFNOPEN pfnopen,PFNREAD pfnread,PFNWRITE pfnwrite,PFNCLOSE pfnclose,PFNSEEK pfnseek,int cpuType,PERF perf); 261 WINBOOL DIAMONDAPI FDIIsCabinet(HFDI hfdi,INT_PTR hf,PFDICABINETINFO pfdici); 262 WINBOOL DIAMONDAPI FDICopy(HFDI hfdi,char *pszCabinet,char *pszCabPath,int flags,PFNFDINOTIFY pfnfdin,PFNFDIDECRYPT pfnfdid,void *pvUser); 263 WINBOOL DIAMONDAPI FDIDestroy(HFDI hfdi); 264 WINBOOL DIAMONDAPI FDITruncateCabinet(HFDI hfdi,char *pszCabinetName,USHORT iFolderToDelete); 265 266#ifndef _WIN64 267#pragma pack() 268#endif 269 270#ifdef __cplusplus 271} 272#endif 273#endif 274