aboutsummaryrefslogtreecommitdiff
path: root/x86_64-w64-mingw32/include/fdi.h
blob: ec594658c2dadba3f69f65c44e937a7e3439669d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the mingw-w64 runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */
#ifndef INCLUDED_TYPES_FCI_FDI
#define INCLUDED_TYPES_FCI_FDI 1

#ifdef __cplusplus
extern "C" {
#endif

#ifndef HUGE
#define HUGE
#endif

#ifndef FAR
#define FAR
#endif

#ifndef DIAMONDAPI
#define DIAMONDAPI __cdecl
#endif

#ifndef _WIN64
#include <pshpack4.h>
#endif

#ifndef BASETYPES
#define BASETYPES
  typedef unsigned __LONG32 ULONG;
  typedef ULONG *PULONG;
  typedef unsigned short USHORT;
  typedef USHORT *PUSHORT;
  typedef unsigned char UCHAR;
  typedef UCHAR *PUCHAR;
  typedef char *PSZ;
#endif

#if !defined(_INC_WINDOWS) && !defined(_WINDOWS_)
  typedef int WINBOOL;
  typedef unsigned char BYTE;
  typedef unsigned int UINT;
#endif

  typedef unsigned __LONG32 CHECKSUM;

  typedef unsigned __LONG32 UOFF;
  typedef unsigned __LONG32 COFF;

#ifndef TRUE
#define TRUE 1
#endif

#ifndef FALSE
#define FALSE 0
#endif

#ifndef NULL
#define NULL 0
#endif

  typedef struct {
    int erfOper;
    int erfType;
    WINBOOL fError;
  } ERF;

  typedef ERF *PERF;

#define STATIC static

#define CB_MAX_CHUNK 32768U
#define CB_MAX_DISK __MSABI_LONG(0x7fffffff)
#define CB_MAX_FILENAME 256
#define CB_MAX_CABINET_NAME 256
#define CB_MAX_CAB_PATH 256
#define CB_MAX_DISK_NAME 256

  typedef unsigned short TCOMP;

#define tcompMASK_TYPE 0x000F
#define tcompTYPE_NONE 0x0000
#define tcompTYPE_MSZIP 0x0001
#define tcompTYPE_QUANTUM 0x0002
#define tcompTYPE_LZX 0x0003
#define tcompBAD 0x000F

#define tcompMASK_LZX_WINDOW 0x1F00
#define tcompLZX_WINDOW_LO 0x0F00
#define tcompLZX_WINDOW_HI 0x1500
#define tcompSHIFT_LZX_WINDOW 8

#define tcompMASK_QUANTUM_LEVEL 0x00F0
#define tcompQUANTUM_LEVEL_LO 0x0010
#define tcompQUANTUM_LEVEL_HI 0x0070
#define tcompSHIFT_QUANTUM_LEVEL 4

#define tcompMASK_QUANTUM_MEM 0x1F00
#define tcompQUANTUM_MEM_LO 0x0A00
#define tcompQUANTUM_MEM_HI 0x1500
#define tcompSHIFT_QUANTUM_MEM 8

#define tcompMASK_RESERVED 0xE000
#define CompressionTypeFromTCOMP(tc) ((tc) & tcompMASK_TYPE)
#define CompressionLevelFromTCOMP(tc) (((tc) & tcompMASK_QUANTUM_LEVEL) >> tcompSHIFT_QUANTUM_LEVEL)
#define CompressionMemoryFromTCOMP(tc) (((tc) & tcompMASK_QUANTUM_MEM) >> tcompSHIFT_QUANTUM_MEM)
#define TCOMPfromTypeLevelMemory(t,l,m) (((m) << tcompSHIFT_QUANTUM_MEM) | ((l) << tcompSHIFT_QUANTUM_LEVEL) | (t))
#define LZXCompressionWindowFromTCOMP(tc) (((tc) & tcompMASK_LZX_WINDOW) >> tcompSHIFT_LZX_WINDOW)
#define TCOMPfromLZXWindow(w) (((w) << tcompSHIFT_LZX_WINDOW) | (tcompTYPE_LZX))

#ifndef _WIN64
#include <poppack.h>
#endif

#ifdef __cplusplus
}
#endif
#endif

#include <basetsd.h>

#ifndef INCLUDED_FDI
#define INCLUDED_FDI 1

#ifdef __cplusplus
extern "C" {
#endif

#ifndef _WIN64
#pragma pack(4)
#endif

  typedef enum {
    FDIERROR_NONE,FDIERROR_CABINET_NOT_FOUND,FDIERROR_NOT_A_CABINET,FDIERROR_UNKNOWN_CABINET_VERSION,FDIERROR_CORRUPT_CABINET,FDIERROR_ALLOC_FAIL,
    FDIERROR_BAD_COMPR_TYPE,FDIERROR_MDI_FAIL,FDIERROR_TARGET_FILE,FDIERROR_RESERVE_MISMATCH,FDIERROR_WRONG_CABINET,FDIERROR_USER_ABORT
  } FDIERROR;

#ifndef _A_NAME_IS_UTF
#define _A_NAME_IS_UTF 0x80
#endif

#ifndef _A_EXEC
#define _A_EXEC 0x40
#endif

  typedef void *HFDI;

  typedef struct {
    __LONG32 cbCabinet;
    USHORT cFolders;
    USHORT cFiles;
    USHORT setID;
    USHORT iCabinet;
    WINBOOL fReserve;
    WINBOOL hasprev;
    WINBOOL hasnext;
  } FDICABINETINFO;

  typedef FDICABINETINFO *PFDICABINETINFO;

  typedef enum {
    fdidtNEW_CABINET,fdidtNEW_FOLDER,fdidtDECRYPT
  } FDIDECRYPTTYPE;

  typedef struct {
    FDIDECRYPTTYPE fdidt;
    void *pvUser;
    __C89_NAMELESS union {
      struct {
	void *pHeaderReserve;
	USHORT cbHeaderReserve;
	USHORT setID;
	int iCabinet;
      } cabinet;
      struct {
	void *pFolderReserve;
	USHORT cbFolderReserve;
	USHORT iFolder;
      } folder;

      struct {
	void *pDataReserve;
	USHORT cbDataReserve;
	void *pbData;
	USHORT cbData;
	WINBOOL fSplit;
	USHORT cbPartial;

      } decrypt;
    };
  } FDIDECRYPT;

  typedef FDIDECRYPT *PFDIDECRYPT;

  typedef void *(DIAMONDAPI *PFNALLOC)(ULONG cb);
#define FNALLOC(fn) void *DIAMONDAPI fn(ULONG cb)

  typedef void (DIAMONDAPI *PFNFREE)(void *pv);
#define FNFREE(fn) void DIAMONDAPI fn(void *pv)

  typedef INT_PTR (DIAMONDAPI *PFNOPEN) (char *pszFile,int oflag,int pmode);
  typedef UINT (DIAMONDAPI *PFNREAD) (INT_PTR hf,void *pv,UINT cb);
  typedef UINT (DIAMONDAPI *PFNWRITE)(INT_PTR hf,void *pv,UINT cb);
  typedef int (DIAMONDAPI *PFNCLOSE)(INT_PTR hf);
  typedef __LONG32 (DIAMONDAPI *PFNSEEK) (INT_PTR hf,__LONG32 dist,int seektype);

#define FNOPEN(fn) INT_PTR DIAMONDAPI fn(char *pszFile,int oflag,int pmode)
#define FNREAD(fn) UINT DIAMONDAPI fn(INT_PTR hf,void *pv,UINT cb)
#define FNWRITE(fn) UINT DIAMONDAPI fn(INT_PTR hf,void *pv,UINT cb)
#define FNCLOSE(fn) int DIAMONDAPI fn(INT_PTR hf)
#define FNSEEK(fn) __LONG32 DIAMONDAPI fn(INT_PTR hf,__LONG32 dist,int seektype)

  typedef int (DIAMONDAPI *PFNFDIDECRYPT)(PFDIDECRYPT pfdid);
#define FNFDIDECRYPT(fn) int DIAMONDAPI fn(PFDIDECRYPT pfdid)

  typedef struct {
    __LONG32 cb;
    char *psz1;
    char *psz2;
    char *psz3;
    void *pv;
    INT_PTR hf;
    USHORT date;
    USHORT time;
    USHORT attribs;
    USHORT setID;
    USHORT iCabinet;
    USHORT iFolder;
    FDIERROR fdie;
  } FDINOTIFICATION,*PFDINOTIFICATION;

  typedef enum {
    fdintCABINET_INFO,fdintPARTIAL_FILE,fdintCOPY_FILE,fdintCLOSE_FILE_INFO,fdintNEXT_CABINET,fdintENUMERATE
  } FDINOTIFICATIONTYPE;

  typedef INT_PTR (DIAMONDAPI *PFNFDINOTIFY)(FDINOTIFICATIONTYPE fdint,PFDINOTIFICATION pfdin);

#define FNFDINOTIFY(fn) INT_PTR DIAMONDAPI fn(FDINOTIFICATIONTYPE fdint,PFDINOTIFICATION pfdin)

#ifndef _WIN64
#pragma pack (1)
#endif

  typedef struct {
    char ach[2];
    __LONG32 cbFile;
  } FDISPILLFILE;

  typedef FDISPILLFILE *PFDISPILLFILE;

#ifndef _WIN64
#pragma pack ()
#endif

#define cpuUNKNOWN (-1)
#define cpu80286 (0)
#define cpu80386 (1)

  HFDI DIAMONDAPI FDICreate(PFNALLOC pfnalloc,PFNFREE pfnfree,PFNOPEN pfnopen,PFNREAD pfnread,PFNWRITE pfnwrite,PFNCLOSE pfnclose,PFNSEEK pfnseek,int cpuType,PERF perf);
  WINBOOL DIAMONDAPI FDIIsCabinet(HFDI hfdi,INT_PTR hf,PFDICABINETINFO pfdici);
  WINBOOL DIAMONDAPI FDICopy(HFDI hfdi,char *pszCabinet,char *pszCabPath,int flags,PFNFDINOTIFY pfnfdin,PFNFDIDECRYPT pfnfdid,void *pvUser);
  WINBOOL DIAMONDAPI FDIDestroy(HFDI hfdi);
  WINBOOL DIAMONDAPI FDITruncateCabinet(HFDI hfdi,char *pszCabinetName,USHORT iFolderToDelete);

#ifndef _WIN64
#pragma pack()
#endif

#ifdef __cplusplus
}
#endif
#endif