diff --git a/reactos/dll/win32/cabinet/cabinet.h b/reactos/dll/win32/cabinet/cabinet.h index e786c1feb0f..8b38f9b587c 100644 --- a/reactos/dll/win32/cabinet/cabinet.h +++ b/reactos/dll/win32/cabinet/cabinet.h @@ -656,6 +656,5 @@ typedef struct { /* from fdi.c */ void QTMupdatemodel(struct QTMmodel *model, int sym); int make_decode_table(cab_ULONG nsyms, cab_ULONG nbits, const cab_UBYTE *length, cab_UWORD *table); -cab_ULONG checksum(const cab_UBYTE *data, cab_UWORD bytes, cab_ULONG csum); #endif /* __WINE_CABINET_H */ diff --git a/reactos/dll/win32/cabinet/cabinet_main.c b/reactos/dll/win32/cabinet/cabinet_main.c index 35810e3b659..4748a99404d 100644 --- a/reactos/dll/win32/cabinet/cabinet_main.c +++ b/reactos/dll/win32/cabinet/cabinet_main.c @@ -237,7 +237,18 @@ static INT_PTR fdi_notify_extract(FDINOTIFICATIONTYPE fdint, PFDINOTIFICATION pf /* create the destination directory if it doesn't exist */ if (GetFileAttributesA(szDirectory) == INVALID_FILE_ATTRIBUTES) + { + char *ptr; + + for(ptr = szDirectory + strlen(pDestination->Destination)+1; *ptr; ptr++) { + if(*ptr == '\\') { + *ptr = 0; + CreateDirectoryA(szDirectory, NULL); + *ptr = '\\'; + } + } CreateDirectoryA(szDirectory, NULL); + } hFile = CreateFileA(szFullPath, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL); diff --git a/reactos/dll/win32/cabinet/fci.c b/reactos/dll/win32/cabinet/fci.c index ed413f821e1..81175dcc448 100644 --- a/reactos/dll/win32/cabinet/fci.c +++ b/reactos/dll/win32/cabinet/fci.c @@ -382,7 +382,7 @@ static BOOL fci_flush_data_block (HFCI hfci, int* err, /* inefficient, but it's harder to forget about freeing the buffer :-). */ /* Reserved areas are used seldom besides that... */ if (cbReserveCFData!=0) { - if(!(reserved = (char*)PFCI_ALLOC(hfci, cbReserveCFData))) { + if(!(reserved = PFCI_ALLOC(hfci, cbReserveCFData))) { fci_set_error( FCIERR_ALLOC_FAIL, ERROR_NOT_ENOUGH_MEMORY, TRUE ); return FALSE; } @@ -852,7 +852,7 @@ static BOOL fci_flushfolder_copy_cffolder(HFCI hfci, int* err, UINT cbReserveCFF /* add optional reserved area */ if (cbReserveCFFolder!=0) { - if(!(reserved = (char*)PFCI_ALLOC(hfci, cbReserveCFFolder))) { + if(!(reserved = PFCI_ALLOC(hfci, cbReserveCFFolder))) { fci_set_error( FCIERR_ALLOC_FAIL, ERROR_NOT_ENOUGH_MEMORY, TRUE ); return FALSE; } @@ -1419,7 +1419,7 @@ static BOOL fci_flush_folder( /* save size of file CFDATA2 - required for the folder's offset to data */ sizeFileCFDATA2old = p_fci_internal->sizeFileCFDATA2; - if(!(reserved = (char*)PFCI_ALLOC(hfci, cbReserveCFData+sizeof(CFDATA)))) { + if(!(reserved = PFCI_ALLOC(hfci, cbReserveCFData+sizeof(CFDATA)))) { fci_set_error( FCIERR_ALLOC_FAIL, ERROR_NOT_ENOUGH_MEMORY, TRUE ); PFCI_CLOSE(hfci,handleCFDATA1new,&err,p_fci_internal->pv); /* TODO error handling of err */ @@ -1753,7 +1753,7 @@ static BOOL fci_flush_cabinet( /* add optional reserved area */ if (cbReserveCFHeader!=0) { - if(!(reserved = (char*)PFCI_ALLOC(hfci, cbReserveCFHeader))) { + if(!(reserved = PFCI_ALLOC(hfci, cbReserveCFHeader))) { fci_set_error( FCIERR_ALLOC_FAIL, ERROR_NOT_ENOUGH_MEMORY, TRUE ); return FALSE; } @@ -2397,7 +2397,7 @@ BOOL __cdecl FCIAddFile( fci_set_error( FCIERR_NONE, ERROR_GEN_FAILURE, TRUE ); return FALSE; } - if(!(p_fci_internal->data_in = (char*)PFCI_ALLOC(hfci,CB_MAX_CHUNK))) { + if(!(p_fci_internal->data_in = PFCI_ALLOC(hfci,CB_MAX_CHUNK))) { fci_set_error( FCIERR_ALLOC_FAIL, ERROR_NOT_ENOUGH_MEMORY, TRUE ); return FALSE; } diff --git a/reactos/dll/win32/cabinet/fdi.c b/reactos/dll/win32/cabinet/fdi.c index 49234041522..e36066df5bc 100644 --- a/reactos/dll/win32/cabinet/fdi.c +++ b/reactos/dll/win32/cabinet/fdi.c @@ -293,7 +293,7 @@ int make_decode_table(cab_ULONG nsyms, cab_ULONG nbits, const cab_UBYTE *length, /************************************************************************* * checksum (internal) */ -cab_ULONG checksum(const cab_UBYTE *data, cab_UWORD bytes, cab_ULONG csum) { +static cab_ULONG checksum(const cab_UBYTE *data, cab_UWORD bytes, cab_ULONG csum) { int len; cab_ULONG ul = 0; @@ -1054,7 +1054,7 @@ struct Ziphuft **t, cab_LONG *m, fdi_decomp_state *decomp_state) l[h] = j; /* set table size in stack */ /* allocate and link in new table */ - if (!(q = (struct Ziphuft *) PFDI_ALLOC(CAB(hfdi), (z + 1)*sizeof(struct Ziphuft)))) + if (!(q = PFDI_ALLOC(CAB(hfdi), (z + 1)*sizeof(struct Ziphuft)))) { if(h) fdi_Ziphuft_free(CAB(hfdi), ZIP(u)[0]); @@ -2180,8 +2180,8 @@ static int fdi_decomp(const struct fdi_file *fi, int savemode, fdi_decomp_state if (cab->mii.folder_resv > 0) PFDI_SEEK(CAB(hfdi), cab->cabhf, cab->mii.folder_resv, SEEK_CUR); - - fol = (struct fdi_folder *) PFDI_ALLOC(CAB(hfdi), sizeof(struct fdi_folder)); + + fol = PFDI_ALLOC(CAB(hfdi), sizeof(struct fdi_folder)); if (!fol) { ERR("out of memory!\n"); return DECR_NOMEMORY; @@ -2202,8 +2202,8 @@ static int fdi_decomp(const struct fdi_file *fi, int savemode, fdi_decomp_state for (i = 0; i < fdici.cFiles; i++) { if (PFDI_READ(CAB(hfdi), cab->cabhf, buf2, cffile_SIZEOF) != cffile_SIZEOF) return DECR_INPUT; - - file = (struct fdi_file *) PFDI_ALLOC(CAB(hfdi), sizeof(struct fdi_file)); + + file = PFDI_ALLOC(CAB(hfdi), sizeof(struct fdi_file)); if (!file) { ERR("out of memory!\n"); return DECR_NOMEMORY; @@ -2592,7 +2592,7 @@ BOOL __cdecl FDICopy( if (CAB(mii).folder_resv > 0) PFDI_SEEK(hfdi, cabhf, CAB(mii).folder_resv, SEEK_CUR); - fol = (struct fdi_folder *) PFDI_ALLOC(hfdi, sizeof(struct fdi_folder)); + fol = PFDI_ALLOC(hfdi, sizeof(struct fdi_folder)); if (!fol) { ERR("out of memory!\n"); PFDI_INT(hfdi)->perf->erfOper = FDIERROR_ALLOC_FAIL; @@ -2622,7 +2622,7 @@ BOOL __cdecl FDICopy( goto bail_and_fail; } - file = (struct fdi_file *) PFDI_ALLOC(hfdi, sizeof(struct fdi_file)); + file = PFDI_ALLOC(hfdi, sizeof(struct fdi_file)); if (!file) { ERR("out of memory!\n"); PFDI_INT(hfdi)->perf->erfOper = FDIERROR_ALLOC_FAIL;