#include "precomp.h"
#include "cabview.h"
#include "util.h"
#include <fcntl.h>
Go to the source code of this file.
|
static LPWSTR | BuildPath (LPCWSTR Dir, LPCSTR File, UINT Attr) |
|
static HRESULT | HResultFrom (const ERF &erf) |
|
| FNFREE (CabMemFree) |
|
| FNALLOC (CabMemAlloc) |
|
| FNCLOSE (CabClose) |
|
static INT_PTR | CabOpenEx (LPCWSTR path, UINT access, UINT share, UINT disp, UINT attr) |
|
| FNOPEN (CabOpen) |
|
| FNREAD (CabRead) |
|
| FNWRITE (CabWrite) |
|
| FNSEEK (CabSeek) |
|
static HRESULT | Init (HFDI &hfdi, ERF &erf) |
|
| FNFDINOTIFY (ExtractCabinetCallback) |
|
HRESULT | ExtractCabinet (LPCWSTR cab, LPCWSTR destination, EXTRACTCALLBACK callback, LPVOID cookie) |
|
◆ BuildPath()
Definition at line 20 of file extract.cpp.
21{
27 {
30 path[lendir++] =
'\\';
31
35 {
36 if (
dst[
i] ==
L':' && lendir)
40 }
41 }
43}
static bool IsPathSep(T c)
#define MultiByteToWideChar
LPVOID WINAPI SHAlloc(SIZE_T len)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static DWORD DWORD void LPSTR DWORD cch
Referenced by FNFDINOTIFY().
◆ CabOpenEx()
◆ ExtractCabinet()
Definition at line 189 of file extract.cpp.
190{
191 BOOL quick = !destination;
192 if (!destination)
202
205 if (hf != -1)
206 {
209 {
212 }
213 CabClose(hf);
214 }
215
219 {
222 }
224 {
225 if (
buf[
i] ==
'\\' ||
buf[
i] ==
'/')
227 }
229 {
230
233 namebuf[0] = '\\';
236
243
245 }
248}
BOOL __cdecl FDIIsCabinet(HFDI hfdi, INT_PTR hf, PFDICABINETINFO pfdici)
BOOL __cdecl FDICopy(HFDI hfdi, char *pszCabinet, char *pszCabPath, int flags, PFNFDINOTIFY pfnfdin, PFNFDIDECRYPT pfnfdid, void *pvUser)
BOOL __cdecl FDIDestroy(HFDI hfdi)
#define FILE_ATTRIBUTE_NORMAL
#define WideCharToMultiByte
#define FAILED_UNEXPECTEDLY(hr)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
double __cdecl erf(double)
#define ERROR_FILE_NOT_FOUND
static IPrintDialogCallback callback
#define FILE_SHARE_DELETE
#define HRESULT_FROM_WIN32(x)
Referenced by ExtractFilesThread(), and CEnumIDList::Fill().
◆ FNALLOC()
Definition at line 67 of file extract.cpp.
68{
70}
static HMODULE MODULEINFO DWORD cb
◆ FNCLOSE()
◆ FNFDINOTIFY()
FNFDINOTIFY |
( |
ExtractCabinetCallback |
| ) |
|
Definition at line 120 of file extract.cpp.
121{
127
128 noti.pfdin = pfdin;
130 {
134 {
138 {
139
140
141
142
143
146
147
148 UINT attr = pfdin->attribs & attrmask;
157 }
158 }
160
164 return !CabClose(pfdin->hf);
165
168 {
171 else
174 }
175 return pfdin->fdie ? -1 : 0;
176
178 return 0;
179
181 return 0;
182
184 return 0;
185 }
186 return -1;
187}
BOOL WINAPI SetFileTime(IN HANDLE hFile, CONST FILETIME *lpCreationTime OPTIONAL, CONST FILETIME *lpLastAccessTime OPTIONAL, CONST FILETIME *lpLastWriteTime OPTIONAL)
BOOL WINAPI DosDateTimeToFileTime(IN WORD wFatDate, IN WORD wFatTime, OUT LPFILETIME lpFileTime)
void WINAPI SHFree(LPVOID pv)
@ FDIERROR_CABINET_NOT_FOUND
#define FILE_FLAG_SEQUENTIAL_SCAN
#define FILE_ATTRIBUTE_HIDDEN
#define FILE_ATTRIBUTE_SYSTEM
#define FILE_ATTRIBUTE_ARCHIVE
HRESULT HResultFromWin32(DWORD hr)
DWORD WINAPI GetLastError(void)
#define ERROR_INVALID_DATA
◆ FNFREE()
◆ FNOPEN()
Definition at line 82 of file extract.cpp.
83{
94}
#define UNREFERENCED_PARAMETER(P)
◆ FNREAD()
Definition at line 96 of file extract.cpp.
97{
100}
#define ReadFile(a, b, c, d, e)
◆ FNSEEK()
◆ FNWRITE()
Definition at line 102 of file extract.cpp.
103{
104 DWORD dwBytesWritten;
106}
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
◆ HResultFrom()
◆ Init()
Definition at line 113 of file extract.cpp.
114{
116 hfdi =
FDICreate(CabMemAlloc, CabMemFree, CabOpen, CabRead, CabWrite, CabClose, CabSeek,
cpu, &
erf);
118}
HFDI __cdecl FDICreate(PFNALLOC pfnalloc, PFNFREE pfnfree, PFNOPEN pfnopen, PFNREAD pfnread, PFNWRITE pfnwrite, PFNCLOSE pfnclose, PFNSEEK pfnseek, int cpuType, PERF perf)