* Sync with Wine 1.7.17.
CORE-8080

svn path=/trunk/; revision=62897
This commit is contained in:
Amine Khaldi 2014-04-22 21:30:00 +00:00
parent 5da624e0b6
commit 0712807181
4 changed files with 127 additions and 125 deletions

View file

@ -95,64 +95,64 @@ typedef LONGLONG Int64;
typedef ULONGLONG UInt64;
/* utilities for unmarshalling data */
static int _unmarshal_char_array(unsigned char **pData,
unsigned int *pLenRemain,
char *dest,
int count)
{
if (count <= 0 || (unsigned int)count > *pLenRemain)
return 0;
memcpy(dest, (*pData), count);
*pData += count;
*pLenRemain -= count;
return 1;
}
static int _unmarshal_uchar_array(unsigned char **pData,
static BOOL _unmarshal_char_array(unsigned char **pData,
unsigned int *pLenRemain,
unsigned char *dest,
char *dest,
int count)
{
if (count <= 0 || (unsigned int)count > *pLenRemain)
return 0;
if (count <= 0 || (unsigned int)count > *pLenRemain)
return FALSE;
memcpy(dest, (*pData), count);
*pData += count;
*pLenRemain -= count;
return 1;
return TRUE;
}
static int _unmarshal_int32(unsigned char **pData,
unsigned int *pLenRemain,
Int32 *dest)
static BOOL _unmarshal_uchar_array(unsigned char **pData,
unsigned int *pLenRemain,
unsigned char *dest,
int count)
{
if (4 > *pLenRemain)
return 0;
*dest = (*pData)[0] | (*pData)[1]<<8 | (*pData)[2]<<16 | (*pData)[3]<<24;
*pData += 4;
*pLenRemain -= 4;
return 1;
if (count <= 0 || (unsigned int)count > *pLenRemain)
return FALSE;
memcpy(dest, (*pData), count);
*pData += count;
*pLenRemain -= count;
return TRUE;
}
static int _unmarshal_uint32(unsigned char **pData,
static BOOL _unmarshal_int32(unsigned char **pData,
unsigned int *pLenRemain,
UInt32 *dest)
Int32 *dest)
{
if (4 > *pLenRemain)
return 0;
return FALSE;
*dest = (*pData)[0] | (*pData)[1]<<8 | (*pData)[2]<<16 | (*pData)[3]<<24;
*pData += 4;
*pLenRemain -= 4;
return 1;
return TRUE;
}
static int _unmarshal_int64(unsigned char **pData,
unsigned int *pLenRemain,
Int64 *dest)
static BOOL _unmarshal_uint32(unsigned char **pData,
unsigned int *pLenRemain,
UInt32 *dest)
{
if (4 > *pLenRemain)
return FALSE;
*dest = (*pData)[0] | (*pData)[1]<<8 | (*pData)[2]<<16 | (*pData)[3]<<24;
*pData += 4;
*pLenRemain -= 4;
return TRUE;
}
static BOOL _unmarshal_int64(unsigned char **pData,
unsigned int *pLenRemain,
Int64 *dest)
{
Int64 temp;
int i;
if (8 > *pLenRemain)
return 0;
return FALSE;
temp=0;
for(i=8; i>0; i--)
{
@ -162,17 +162,17 @@ static int _unmarshal_int64(unsigned char **pData,
*dest = temp;
*pData += 8;
*pLenRemain -= 8;
return 1;
return TRUE;
}
static int _unmarshal_uint64(unsigned char **pData,
unsigned int *pLenRemain,
UInt64 *dest)
static BOOL _unmarshal_uint64(unsigned char **pData,
unsigned int *pLenRemain,
UInt64 *dest)
{
UInt64 temp;
int i;
if (8 > *pLenRemain)
return 0;
return FALSE;
temp=0;
for(i=8; i>0; i--)
{
@ -182,12 +182,12 @@ static int _unmarshal_uint64(unsigned char **pData,
*dest = temp;
*pData += 8;
*pLenRemain -= 8;
return 1;
return TRUE;
}
static int _unmarshal_uuid(unsigned char **pData,
unsigned int *pDataLen,
unsigned char *dest)
static BOOL _unmarshal_uuid(unsigned char **pData,
unsigned int *pDataLen,
unsigned char *dest)
{
return _unmarshal_uchar_array(pData, pDataLen, dest, 16);
}
@ -241,13 +241,13 @@ struct chmItsfHeader
UInt64 data_offset; /* 58 (Not present before V3) */
}; /* __attribute__ ((aligned (1))); */
static int _unmarshal_itsf_header(unsigned char **pData,
unsigned int *pDataLen,
struct chmItsfHeader *dest)
static BOOL _unmarshal_itsf_header(unsigned char **pData,
unsigned int *pDataLen,
struct chmItsfHeader *dest)
{
/* we only know how to deal with the 0x58 and 0x60 byte structures */
if (*pDataLen != _CHM_ITSF_V2_LEN && *pDataLen != _CHM_ITSF_V3_LEN)
return 0;
return FALSE;
/* unmarshal common fields */
_unmarshal_char_array(pData, pDataLen, dest->signature, 4);
@ -268,19 +268,19 @@ static int _unmarshal_itsf_header(unsigned char **pData,
* current MS tools do not seem to use them.
*/
if (memcmp(dest->signature, "ITSF", 4) != 0)
return 0;
return FALSE;
if (dest->version == 2)
{
if (dest->header_len < _CHM_ITSF_V2_LEN)
return 0;
return FALSE;
}
else if (dest->version == 3)
{
if (dest->header_len < _CHM_ITSF_V3_LEN)
return 0;
return FALSE;
}
else
return 0;
return FALSE;
/* now, if we have a V3 structure, unmarshal the rest.
* otherwise, compute it
@ -290,12 +290,12 @@ static int _unmarshal_itsf_header(unsigned char **pData,
if (*pDataLen != 0)
_unmarshal_uint64(pData, pDataLen, &dest->data_offset);
else
return 0;
return FALSE;
}
else
dest->data_offset = dest->dir_offset + dest->dir_len;
return 1;
return TRUE;
}
/* structure of ITSP headers */
@ -319,13 +319,13 @@ struct chmItspHeader
UChar unknown_0044[16]; /* 44 */
}; /* __attribute__ ((aligned (1))); */
static int _unmarshal_itsp_header(unsigned char **pData,
unsigned int *pDataLen,
struct chmItspHeader *dest)
static BOOL _unmarshal_itsp_header(unsigned char **pData,
unsigned int *pDataLen,
struct chmItspHeader *dest)
{
/* we only know how to deal with a 0x54 byte structures */
if (*pDataLen != _CHM_ITSP_V1_LEN)
return 0;
return FALSE;
/* unmarshal fields */
_unmarshal_char_array(pData, pDataLen, dest->signature, 4);
@ -346,13 +346,13 @@ static int _unmarshal_itsp_header(unsigned char **pData,
/* error check the data */
if (memcmp(dest->signature, "ITSP", 4) != 0)
return 0;
return FALSE;
if (dest->version != 1)
return 0;
return FALSE;
if (dest->header_len != _CHM_ITSP_V1_LEN)
return 0;
return FALSE;
return 1;
return TRUE;
}
/* structure of PMGL headers */
@ -367,13 +367,13 @@ struct chmPmglHeader
Int32 block_next; /* 10 */
}; /* __attribute__ ((aligned (1))); */
static int _unmarshal_pmgl_header(unsigned char **pData,
unsigned int *pDataLen,
struct chmPmglHeader *dest)
static BOOL _unmarshal_pmgl_header(unsigned char **pData,
unsigned int *pDataLen,
struct chmPmglHeader *dest)
{
/* we only know how to deal with a 0x14 byte structures */
if (*pDataLen != _CHM_PMGL_LEN)
return 0;
return FALSE;
/* unmarshal fields */
_unmarshal_char_array(pData, pDataLen, dest->signature, 4);
@ -384,9 +384,9 @@ static int _unmarshal_pmgl_header(unsigned char **pData,
/* check structure */
if (memcmp(dest->signature, _chm_pmgl_marker, 4) != 0)
return 0;
return FALSE;
return 1;
return TRUE;
}
/* structure of PMGI headers */
@ -398,13 +398,13 @@ struct chmPmgiHeader
UInt32 free_space; /* 4 */
}; /* __attribute__ ((aligned (1))); */
static int _unmarshal_pmgi_header(unsigned char **pData,
unsigned int *pDataLen,
struct chmPmgiHeader *dest)
static BOOL _unmarshal_pmgi_header(unsigned char **pData,
unsigned int *pDataLen,
struct chmPmgiHeader *dest)
{
/* we only know how to deal with a 0x8 byte structures */
if (*pDataLen != _CHM_PMGI_LEN)
return 0;
return FALSE;
/* unmarshal fields */
_unmarshal_char_array(pData, pDataLen, dest->signature, 4);
@ -412,9 +412,9 @@ static int _unmarshal_pmgi_header(unsigned char **pData,
/* check structure */
if (memcmp(dest->signature, _chm_pmgi_marker, 4) != 0)
return 0;
return FALSE;
return 1;
return TRUE;
}
/* structure of LZXC reset table */
@ -430,13 +430,13 @@ struct chmLzxcResetTable
UInt64 block_len;
}; /* __attribute__ ((aligned (1))); */
static int _unmarshal_lzxc_reset_table(unsigned char **pData,
unsigned int *pDataLen,
struct chmLzxcResetTable *dest)
static BOOL _unmarshal_lzxc_reset_table(unsigned char **pData,
unsigned int *pDataLen,
struct chmLzxcResetTable *dest)
{
/* we only know how to deal with a 0x28 byte structures */
if (*pDataLen != _CHM_LZXC_RESETTABLE_V1_LEN)
return 0;
return FALSE;
/* unmarshal fields */
_unmarshal_uint32 (pData, pDataLen, &dest->version);
@ -449,9 +449,9 @@ static int _unmarshal_lzxc_reset_table(unsigned char **pData,
/* check structure */
if (dest->version != 2)
return 0;
return FALSE;
return 1;
return TRUE;
}
/* structure of LZXC control data block */
@ -468,13 +468,13 @@ struct chmLzxcControlData
UInt32 unknown_18; /* 18 */
};
static int _unmarshal_lzxc_control_data(unsigned char **pData,
unsigned int *pDataLen,
struct chmLzxcControlData *dest)
static BOOL _unmarshal_lzxc_control_data(unsigned char **pData,
unsigned int *pDataLen,
struct chmLzxcControlData *dest)
{
/* we want at least 0x18 bytes */
if (*pDataLen < _CHM_LZXC_MIN_LEN)
return 0;
return FALSE;
/* unmarshal fields */
_unmarshal_uint32 (pData, pDataLen, &dest->size);
@ -495,19 +495,19 @@ static int _unmarshal_lzxc_control_data(unsigned char **pData,
dest->windowSize *= 0x8000;
}
if (dest->windowSize == 0 || dest->resetInterval == 0)
return 0;
return FALSE;
/* for now, only support resetInterval a multiple of windowSize/2 */
if (dest->windowSize == 1)
return 0;
return FALSE;
if ((dest->resetInterval % (dest->windowSize/2)) != 0)
return 0;
return FALSE;
/* check structure */
if (memcmp(dest->signature, "LZXC", 4) != 0)
return 0;
return FALSE;
return 1;
return TRUE;
}
/* the structure used for chm file handles */
@ -920,7 +920,7 @@ static UInt64 _chm_parse_cword(UChar **pEntry)
}
/* parse a utf-8 string into an ASCII char buffer */
static int _chm_parse_UTF8(UChar **pEntry, UInt64 count, WCHAR *path)
static BOOL _chm_parse_UTF8(UChar **pEntry, UInt64 count, WCHAR *path)
{
/* MJM - Modified to return real Unicode strings */
while (count != 0)
@ -930,28 +930,28 @@ static int _chm_parse_UTF8(UChar **pEntry, UInt64 count, WCHAR *path)
}
*path = '\0';
return 1;
return TRUE;
}
/* parse a PMGL entry into a chmUnitInfo struct; return 1 on success. */
static int _chm_parse_PMGL_entry(UChar **pEntry, struct chmUnitInfo *ui)
static BOOL _chm_parse_PMGL_entry(UChar **pEntry, struct chmUnitInfo *ui)
{
UInt64 strLen;
/* parse str len */
strLen = _chm_parse_cword(pEntry);
if (strLen > CHM_MAX_PATHLEN)
return 0;
return FALSE;
/* parse path */
if (! _chm_parse_UTF8(pEntry, strLen, ui->path))
return 0;
return FALSE;
/* parse info */
ui->space = (int)_chm_parse_cword(pEntry);
ui->start = _chm_parse_cword(pEntry);
ui->length = _chm_parse_cword(pEntry);
return 1;
return TRUE;
}
/* find an exact entry in PMGL; return NULL if we fail */
@ -1108,11 +1108,11 @@ int chm_resolve_object(struct chmFile *h,
* utility methods for dealing with compressed data
*/
/* get the bounds of a compressed block. return 0 on failure */
static int _chm_get_cmpblock_bounds(struct chmFile *h,
UInt64 block,
UInt64 *start,
Int64 *len)
/* get the bounds of a compressed block. Returns FALSE on failure */
static BOOL _chm_get_cmpblock_bounds(struct chmFile *h,
UInt64 block,
UInt64 *start,
Int64 *len)
{
UChar buffer[8], *dummy;
UInt32 remain;
@ -1130,7 +1130,7 @@ static int _chm_get_cmpblock_bounds(struct chmFile *h,
+ block*8,
remain) != remain ||
!_unmarshal_uint64(&dummy, &remain, start))
return 0;
return FALSE;
/* unpack the end address */
dummy = buffer;
@ -1142,7 +1142,7 @@ static int _chm_get_cmpblock_bounds(struct chmFile *h,
+ block*8 + 8,
remain) != remain ||
!_unmarshal_int64(&dummy, &remain, len))
return 0;
return FALSE;
}
/* for the last block, use the span in addition to the reset table */
@ -1158,7 +1158,7 @@ static int _chm_get_cmpblock_bounds(struct chmFile *h,
+ block*8,
remain) != remain ||
!_unmarshal_uint64(&dummy, &remain, start))
return 0;
return FALSE;
*len = h->reset_table.compressed_len;
}
@ -1167,7 +1167,7 @@ static int _chm_get_cmpblock_bounds(struct chmFile *h,
*len -= *start;
*start += h->data_offset + h->cn_unit.start;
return 1;
return TRUE;
}
/* decompress the block. must have lzx_mutex. */
@ -1392,11 +1392,11 @@ LONGINT64 chm_retrieve_object(struct chmFile *h,
}
}
int chm_enumerate_dir(struct chmFile *h,
const WCHAR *prefix,
int what,
CHM_ENUMERATOR e,
void *context)
BOOL chm_enumerate_dir(struct chmFile *h,
const WCHAR *prefix,
int what,
CHM_ENUMERATOR e,
void *context)
{
/*
* XXX: do this efficiently (i.e. using the tree index)
@ -1411,8 +1411,8 @@ int chm_enumerate_dir(struct chmFile *h,
UChar *cur;
unsigned int lenRemain;
/* set to 1 once we've started */
int it_has_begun=0;
/* set to TRUE once we've started */
BOOL it_has_begun = FALSE;
/* the current ui */
struct chmUnitInfo ui;
@ -1454,7 +1454,7 @@ int chm_enumerate_dir(struct chmFile *h,
h->block_len) != h->block_len)
{
HeapFree(GetProcessHeap(), 0, page_buf);
return 0;
return FALSE;
}
/* figure out start and end for this page */
@ -1463,7 +1463,7 @@ int chm_enumerate_dir(struct chmFile *h,
if (! _unmarshal_pmgl_header(&cur, &lenRemain, &header))
{
HeapFree(GetProcessHeap(), 0, page_buf);
return 0;
return FALSE;
}
end = page_buf + h->block_len - (header.free_space);
@ -1473,14 +1473,14 @@ int chm_enumerate_dir(struct chmFile *h,
if (! _chm_parse_PMGL_entry(&cur, &ui))
{
HeapFree(GetProcessHeap(), 0, page_buf);
return 0;
return FALSE;
}
/* check if we should start */
if (! it_has_begun)
{
if (ui.length == 0 && strncmpiW(ui.path, prefixRectified, prefixLen) == 0)
it_has_begun = 1;
it_has_begun = TRUE;
else
continue;
@ -1494,7 +1494,7 @@ int chm_enumerate_dir(struct chmFile *h,
if (strncmpiW(ui.path, prefixRectified, prefixLen) != 0)
{
HeapFree(GetProcessHeap(), 0, page_buf);
return 1;
return TRUE;
}
}
@ -1540,12 +1540,12 @@ int chm_enumerate_dir(struct chmFile *h,
{
case CHM_ENUMERATOR_FAILURE:
HeapFree(GetProcessHeap(), 0, page_buf);
return 0;
return FALSE;
case CHM_ENUMERATOR_CONTINUE:
break;
case CHM_ENUMERATOR_SUCCESS:
HeapFree(GetProcessHeap(), 0, page_buf);
return 1;
return TRUE;
default:
break;
}
@ -1557,5 +1557,5 @@ int chm_enumerate_dir(struct chmFile *h,
}
HeapFree(GetProcessHeap(), 0, page_buf);
return 1;
return TRUE;
}

View file

@ -105,10 +105,10 @@ typedef int (*CHM_ENUMERATOR)(struct chmFile *h,
#define CHM_ENUMERATOR_FAILURE (0)
#define CHM_ENUMERATOR_CONTINUE (1)
#define CHM_ENUMERATOR_SUCCESS (2)
int chm_enumerate_dir(struct chmFile *h,
const WCHAR *prefix,
int what,
CHM_ENUMERATOR e,
void *context) DECLSPEC_HIDDEN;
BOOL chm_enumerate_dir(struct chmFile *h,
const WCHAR *prefix,
int what,
CHM_ENUMERATOR e,
void *context) DECLSPEC_HIDDEN;
#endif /* INCLUDED_CHMLIB_H */

View file

@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#pragma makedep register
[
helpstring("Microsoft InfoTech Protocol for IE 3.0"),
threading(both),

View file

@ -91,7 +91,7 @@ reactos/dll/win32/initpki # Synced to Wine-1.7.1
reactos/dll/win32/inseng # Synced to Wine-1.7.1
reactos/dll/win32/iphlpapi # Out of sync
reactos/dll/win32/itircl # Synced to Wine-1.7.1
reactos/dll/win32/itss # Synced to Wine-1.7.1
reactos/dll/win32/itss # Synced to Wine-1.7.17
reactos/dll/win32/jscript # Synced to Wine-1.7.1
reactos/dll/win32/loadperf # Synced to Wine-1.7.1
reactos/dll/win32/localspl # Synced to Wine-1.7.1