Merge pull request #4852 from FernetMenta/aefixes
[vuplus_xbmc] / lib / UnrarXLib / dll.hpp
1 #ifndef _UNRAR_DLL_
2 #define _UNRAR_DLL_
3
4 #define ERAR_END_ARCHIVE     10
5 #define ERAR_NO_MEMORY       11
6 #define ERAR_BAD_DATA        12
7 #define ERAR_BAD_ARCHIVE     13
8 #define ERAR_UNKNOWN_FORMAT  14
9 #define ERAR_EOPEN           15
10 #define ERAR_ECREATE         16
11 #define ERAR_ECLOSE          17
12 #define ERAR_EREAD           18
13 #define ERAR_EWRITE          19
14 #define ERAR_SMALL_BUF       20
15 #define ERAR_UNKNOWN         21
16
17 #define RAR_OM_LIST           0
18 #define RAR_OM_EXTRACT        1
19
20 #define RAR_SKIP              0
21 #define RAR_TEST              1
22 #define RAR_EXTRACT           2
23
24 #define RAR_VOL_ASK           0
25 #define RAR_VOL_NOTIFY        1
26
27 #define RAR_DLL_VERSION       4
28
29 #ifdef _UNIX
30 #define CALLBACK
31 #define PASCAL
32 #define LONG long
33 #define HANDLE void *
34 #define UINT unsigned int
35 #endif
36
37 struct RARHeaderData
38 {
39   char         ArcName[260];
40   char         FileName[260];
41   unsigned int Flags;
42   unsigned int PackSize;
43   unsigned int UnpSize;
44   unsigned int HostOS;
45   unsigned int FileCRC;
46   unsigned int FileTime;
47   unsigned int UnpVer;
48   unsigned int Method;
49   unsigned int FileAttr;
50   char         *CmtBuf;
51   unsigned int CmtBufSize;
52   unsigned int CmtSize;
53   unsigned int CmtState;
54 };
55
56
57 struct RARHeaderDataEx
58 {
59   char         ArcName[1024];
60   wchar_t      ArcNameW[1024];
61   char         FileName[1024];
62   wchar_t      FileNameW[1024];
63   unsigned int Flags;
64   unsigned int PackSize;
65   unsigned int PackSizeHigh;
66   unsigned int UnpSize;
67   unsigned int UnpSizeHigh;
68   unsigned int HostOS;
69   unsigned int FileCRC;
70   unsigned int FileTime;
71   unsigned int UnpVer;
72   unsigned int Method;
73   unsigned int FileAttr;
74   char         *CmtBuf;
75   unsigned int CmtBufSize;
76   unsigned int CmtSize;
77   unsigned int CmtState;
78   unsigned int Reserved[1024];
79 };
80
81
82 struct RAROpenArchiveData
83 {
84   char         *ArcName;
85   unsigned int OpenMode;
86   unsigned int OpenResult;
87   char         *CmtBuf;
88   unsigned int CmtBufSize;
89   unsigned int CmtSize;
90   unsigned int CmtState;
91 };
92
93 struct RAROpenArchiveDataEx
94 {
95   char         *ArcName;
96   wchar_t      *ArcNameW;
97   unsigned int OpenMode;
98   unsigned int OpenResult;
99   char         *CmtBuf;
100   unsigned int CmtBufSize;
101   unsigned int CmtSize;
102   unsigned int CmtState;
103   unsigned int Flags;
104   unsigned int Reserved[32];
105 };
106
107 enum UNRARCALLBACK_MESSAGES {
108   UCM_CHANGEVOLUME,UCM_PROCESSDATA,UCM_NEEDPASSWORD
109 };
110
111 typedef int (CALLBACK *UNRARCALLBACK)(UINT msg,LONG UserData,LONG P1,LONG P2);
112
113 typedef int (PASCAL *CHANGEVOLPROC)(char *ArcName,int Mode);
114 typedef int (PASCAL *PROCESSDATAPROC)(unsigned char *Addr,int Size);
115
116 #ifdef __cplusplus
117 extern "C" {
118 #endif
119
120 HANDLE PASCAL RAROpenArchive(struct RAROpenArchiveData *ArchiveData);
121 HANDLE PASCAL RAROpenArchiveEx(struct RAROpenArchiveDataEx *ArchiveData);
122 int    PASCAL RARCloseArchive(HANDLE hArcData);
123 int    PASCAL RARReadHeader(HANDLE hArcData,struct RARHeaderData *HeaderData);
124 int    PASCAL RARReadHeaderEx(HANDLE hArcData,struct RARHeaderDataEx *HeaderData);
125 int    PASCAL RARProcessFile(HANDLE hArcData,int Operation,char *DestPath,char *DestName);
126 int    PASCAL RARProcessFileW(HANDLE hArcData,int Operation,wchar_t *DestPath,wchar_t *DestName);
127 void   PASCAL RARSetCallback(HANDLE hArcData,UNRARCALLBACK Callback,LONG UserData);
128 void   PASCAL RARSetChangeVolProc(HANDLE hArcData,CHANGEVOLPROC ChangeVolProc);
129 void   PASCAL RARSetProcessDataProc(HANDLE hArcData,PROCESSDATAPROC ProcessDataProc);
130 void   PASCAL RARSetPassword(HANDLE hArcData,char *Password);
131 int    PASCAL RARGetDllVersion();
132
133 #ifdef __cplusplus
134 }
135 #endif
136
137 #endif