2445 size_t pathlen, filenamelen;
2446 char emptystring =
'\0';
2453 TRACE(
"(hfdi == ^%p, pszCabinet == %s, pszCabPath == %s, flags == %x, " 2454 "pfnfdin == ^%p, pfnfdid == ^%p, pvUser == ^%p)\n",
2457 if (!fdi)
return FALSE;
2466 pathlen = pszCabPath ?
strlen(pszCabPath) : 0;
2467 filenamelen = pszCabinet ?
strlen(pszCabinet) : 0;
2470 if ((pathlen + filenamelen + 3) >
MAX_PATH) {
2471 ERR(
"MAX_PATH exceeded.\n");
2472 fdi->
free(decomp_state);
2480 strcpy(fullpath, pszCabPath);
2482 strcat(fullpath, pszCabinet);
2489 fdi->
free(decomp_state);
2498 fdi->
free(decomp_state);
2508 fdin.
psz1 = (
CAB(mii).nextname) ?
CAB(mii).nextname : &emptystring;
2509 fdin.
psz2 = (
CAB(mii).nextinfo) ?
CAB(mii).nextinfo : &emptystring;
2510 fdin.
psz3 = pszCabPath;
2528 if (
CAB(mii).folder_resv > 0)
2533 ERR(
"out of memory!\n");
2538 if (!
CAB(firstfol))
CAB(firstfol) = fol;
2545 linkfol->next = fol;
2558 ERR(
"out of memory!\n");
2573 if (!
file->filename) {
2579 linkfile->next =
file;
2635 fdin.
psz1 = (
char *)
file->filename;
2636 fdin.
psz2 = (
CAB(mii).prevname) ?
CAB(mii).prevname : &emptystring;
2637 fdin.
psz3 = (
CAB(mii).previnfo) ?
CAB(mii).previnfo : &emptystring;
2646 if (
file->oppressed) {
2651 fdin.
psz1 = (
char *)
file->filename;
2666 fol =
CAB(firstfol);
2673 for (i2 = 0; (i2 <
file->index); i2++)
2689 CAB(filehf) = filehf;
2727 err =
QTMfdi_init((comptype >> 8) & 0x1f, (comptype >> 4) & 0xF, decomp_state);
2753 switch (
fdi_decomp(
file, 0, decomp_state, pszCabPath, pfnfdin, pvUser)) {
2776 fdin.
psz1 = (
char *)
file->filename;
2811 if (filehf) fdi->
close(filehf);
static void free_decompression_mem(FDI_Int *fdi, fdi_decomp_state *decomp_state)
static int QTMfdi_init(int window, int level, fdi_decomp_state *decomp_state)
static FDI_Int * get_fdi_ptr(HFDI hfdi)
char * strcat(char *DstString, const char *SrcString)
ACPI_SIZE strlen(const char *String)
static int ZIPfdi_decomp(int inlen, int outlen, fdi_decomp_state *decomp_state)
#define ERROR_NOT_ENOUGH_MEMORY
#define cffoldCOMPTYPE_MASK
static char * FDI_read_string(FDI_Int *fdi, INT_PTR hf, long cabsize)
static int LZXfdi_decomp(int inlen, int outlen, fdi_decomp_state *decomp_state)
static int QTMfdi_decomp(int inlen, int outlen, fdi_decomp_state *decomp_state)
#define cffile_UncompressedSize
GLenum GLuint GLenum GLsizei const GLchar * buf
#define cffileCONTINUED_TO_NEXT
#define cffoldCOMPTYPE_LZX
#define cffoldCOMPTYPE_MSZIP
#define ERROR_FILE_NOT_FOUND
#define cffold_DataOffset
static BOOL FDI_read_entries(FDI_Int *fdi, INT_PTR hf, PFDICABINETINFO pfdici, PMORE_ISCAB_INFO pmii)
#define cffoldCOMPTYPE_QUANTUM
static void set_error(FDI_Int *fdi, int oper, int err)
struct task_struct * current
static int NONEfdi_decomp(int inlen, int outlen, fdi_decomp_state *decomp_state)
#define cffoldCOMPTYPE_NONE
static IHTMLWindow2 * window
#define cffile_FolderOffset
static int fdi_decomp(const struct fdi_file *fi, int savemode, fdi_decomp_state *decomp_state, char *pszCabPath, PFNFDINOTIFY pfnfdin, void *pvUser)
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
#define cffile_FolderIndex
static void free_decompression_temps(FDI_Int *fdi, const struct fdi_folder *fol, fdi_decomp_state *decomp_state)
char * strcpy(char *DstString, const char *SrcString)
static int LZXfdi_init(int window, fdi_decomp_state *decomp_state)
#define cffileCONTINUED_FROM_PREV