Use xmlParseMemory instead of xmlReadIO.

This commit is contained in:
Mike McCormack 2005-08-08 18:34:24 +00:00 committed by Alexandre Julliard
parent 3c312f46f9
commit 8a43775e2d
1 changed files with 23 additions and 23 deletions

View File

@ -627,38 +627,38 @@ static HRESULT WINAPI domdoc_nodeFromID(
return E_NOTIMPL;
}
static int read_input_callback( void *context, char *buffer, int len )
{
HANDLE handle = context;
DWORD count = 0;
BOOL r;
r = ReadFile( handle, buffer, len, &count, NULL );
if ( !r )
return -1;
return count;
}
static int input_close_callback( void *context )
{
HANDLE handle = context;
return CloseHandle( handle ) ? 0 : -1;
}
static xmlDocPtr doread( LPWSTR filename )
{
HANDLE handle;
HANDLE handle, mapping;
DWORD len;
xmlDocPtr xmldoc = NULL;
char *ptr;
TRACE("%s\n", debugstr_w( filename ));
handle = CreateFileW( filename, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, 0, NULL );
if( handle == INVALID_HANDLE_VALUE )
return NULL;
return xmldoc;
return xmlReadIO( read_input_callback, input_close_callback,
handle, NULL, NULL, 0 );
len = GetFileSize( handle, NULL );
if( len != INVALID_FILE_SIZE || GetLastError() == NO_ERROR )
{
mapping = CreateFileMappingW( handle, NULL, PAGE_READONLY, 0, 0, NULL );
if ( mapping )
{
ptr = MapViewOfFile( mapping, FILE_MAP_READ, 0, 0, len );
if ( ptr )
{
xmldoc = xmlParseMemory( ptr, len );
UnmapViewOfFile( ptr );
}
CloseHandle( mapping );
}
}
CloseHandle( handle );
return xmldoc;
}