[Expat-checkins] expat/amiga stdlib.c, NONE, 1.1 expat_vectors.c, NONE, 1.1 expat.xml, NONE, 1.1 expat_lib.c, NONE, 1.1 launch.c, NONE, 1.1

Steven Solie ssolie at users.sourceforge.net
Sat Dec 24 07:40:00 CET 2005


Update of /cvsroot/expat/expat/amiga
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2497

Added Files:
	stdlib.c expat_vectors.c expat.xml expat_lib.c launch.c 
Log Message:


--- NEW FILE: stdlib.c ---
/*
** Copyright (c) 2001-2005 Expat maintainers.
**
** Permission is hereby granted, free of charge, to any person obtaining
** a copy of this software and associated documentation files (the
** "Software"), to deal in the Software without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Software, and to
** permit persons to whom the Software is furnished to do so, subject to
** the following conditions:
** 
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Software.
** 
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

#include <stdlib.h>
#include <exec/memory.h>
#include <proto/exec.h>
#include <proto/utility.h>

void * malloc (size_t len)
{
	uint32 size = sizeof(uint32) + len;

	uint32 *mem = AllocMem(size, MEMF_ANY);
	if ( mem != 0 )  {
		*mem = size;
		++mem;
	}

	return mem;
}


void * realloc (void * mem, size_t len2)
{
	if ( mem == 0 )  {
		return malloc(len2);
	}

	if ( len2 == 0 )  {
		free(mem);
		return 0;
	}

	void * new_mem = malloc(len2);
	if ( new_mem == 0 )  {
		return 0;
	}

	uint32 mem_size = *(((uint32*)mem) - 1);
	CopyMem(mem, new_mem, mem_size);
	free(mem);

	return new_mem;
}


void free (void * mem)
{
	if ( mem != 0 )  {
		uint32 size = *(((uint32*)mem) - 1);
		FreeMem(mem, size);
	}
}


int memcmp (const void * a, const void * b, size_t len)
{
	size_t i;
	int diff;

	for ( i = 0; i < len; ++i )  {
		diff = *((uint8 *)a++) - *((uint8 *)b++);
		if ( diff )  {
			return diff;
		}
	}

	return 0;
}


void * memcpy (void * t, const void * a, size_t len)
{
	CopyMem((APTR)a, t, len);
	return t;
}


void * memmove (void * t1, const void * t2, size_t len)
{
	MoveMem((APTR)t2, t1, len);
	return t1;
}


void * memset (void * t, int c, size_t len)
{
	return SetMem(t, c, len);
}

--- NEW FILE: expat_vectors.c ---
/*
** Copyright (c) 2001-2005 Expat maintainers.
**
** Permission is hereby granted, free of charge, to any person obtaining
** a copy of this software and associated documentation files (the
** "Software"), to deal in the Software without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Software, and to
** permit persons to whom the Software is furnished to do so, subject to
** the following conditions:
** 
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Software.
** 
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

#include <exec/types.h>
#include <exec/exec.h>
#include <exec/interfaces.h>
#include <interfaces/expat.h>

extern uint32                _Expat_Obtain(struct ExpatIFace *);
extern uint32                _Expat_Release(struct ExpatIFace *);
extern XML_Parser            _Expat_XML_ParserCreate(struct ExpatIFace *, const XML_Char * encodingName);
extern XML_Parser            _Expat_XML_ParserCreateNS(struct ExpatIFace *, const XML_Char * encodingName, XML_Char nsSep);
extern XML_Parser            _Expat_XML_ParserCreate_MM(struct ExpatIFace *, const XML_Char * encoding, const XML_Memory_Handling_Suite * memsuite, const XML_Char * namespaceSeparator);
extern XML_Parser            _Expat_XML_ExternalEntityParserCreate(struct ExpatIFace *, XML_Parser parser, const XML_Char * context, const XML_Char * encoding);
extern void                  _Expat_XML_ParserFree(struct ExpatIFace *, XML_Parser parser);
extern enum XML_Status       _Expat_XML_Parse(struct ExpatIFace *, XML_Parser parser, const char * s, int len, int isFinal);
extern enum XML_Status       _Expat_XML_ParseBuffer(struct ExpatIFace *, XML_Parser parser, int len, int isFinal);
extern void *                _Expat_XML_GetBuffer(struct ExpatIFace *, XML_Parser parser, int len);
extern void                  _Expat_XML_SetStartElementHandler(struct ExpatIFace *, XML_Parser parser, XML_StartElementHandler start);
extern void                  _Expat_XML_SetEndElementHandler(struct ExpatIFace *, XML_Parser parser, XML_EndElementHandler end);
extern void                  _Expat_XML_SetElementHandler(struct ExpatIFace *, XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end);
extern void                  _Expat_XML_SetCharacterDataHandler(struct ExpatIFace *, XML_Parser parser, XML_CharacterDataHandler handler);
extern void                  _Expat_XML_SetProcessingInstructionHandler(struct ExpatIFace *, XML_Parser parser, XML_ProcessingInstructionHandler handler);
extern void                  _Expat_XML_SetCommentHandler(struct ExpatIFace *, XML_Parser parser, XML_CommentHandler handler);
extern void                  _Expat_XML_SetStartCdataSectionHandler(struct ExpatIFace *, XML_Parser parser, XML_StartCdataSectionHandler start);
extern void                  _Expat_XML_SetEndCdataSectionHandler(struct ExpatIFace *, XML_Parser parser, XML_EndCdataSectionHandler end);
extern void                  _Expat_XML_SetCdataSectionHandler(struct ExpatIFace *, XML_Parser parser, XML_StartCdataSectionHandler start, XML_EndCdataSectionHandler end);
extern void                  _Expat_XML_SetDefaultHandler(struct ExpatIFace *, XML_Parser parser, XML_DefaultHandler handler);
extern void                  _Expat_XML_SetDefaultHandlerExpand(struct ExpatIFace *, XML_Parser parser, XML_DefaultHandler handler);
extern void                  _Expat_XML_SetExternalEntityRefHandler(struct ExpatIFace *, XML_Parser parser, XML_ExternalEntityRefHandler handler);
extern void                  _Expat_XML_SetExternalEntityRefHandlerArg(struct ExpatIFace *, XML_Parser parser, void * arg);
extern void                  _Expat_XML_SetUnknownEncodingHandler(struct ExpatIFace *, XML_Parser parser, XML_UnknownEncodingHandler handler, void * data);
extern void                  _Expat_XML_SetStartNamespaceDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_StartNamespaceDeclHandler start);
extern void                  _Expat_XML_SetEndNamespaceDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_EndNamespaceDeclHandler end);
extern void                  _Expat_XML_SetNamespaceDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_StartNamespaceDeclHandler start, XML_EndNamespaceDeclHandler end);
extern void                  _Expat_XML_SetXmlDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_XmlDeclHandler handler);
extern void                  _Expat_XML_SetStartDoctypeDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_StartDoctypeDeclHandler start);
extern void                  _Expat_XML_SetEndDoctypeDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_EndDoctypeDeclHandler end);
extern void                  _Expat_XML_SetDoctypeDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_StartDoctypeDeclHandler start, XML_EndDoctypeDeclHandler end);
extern void                  _Expat_XML_SetElementDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_ElementDeclHandler eldecl);
extern void                  _Expat_XML_SetAttlistDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_AttlistDeclHandler attdecl);
extern void                  _Expat_XML_SetEntityDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_EntityDeclHandler handler);
extern void                  _Expat_XML_SetUnparsedEntityDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_UnparsedEntityDeclHandler handler);
extern void                  _Expat_XML_SetNotationDeclHandler(struct ExpatIFace *, XML_Parser parser, XML_NotationDeclHandler handler);
extern void                  _Expat_XML_SetNotStandaloneHandler(struct ExpatIFace *, XML_Parser parser, XML_NotStandaloneHandler handler);
extern enum XML_Error        _Expat_XML_GetErrorCode(struct ExpatIFace *, XML_Parser parser);
extern const XML_LChar *     _Expat_XML_ErrorString(struct ExpatIFace *, enum XML_Error code);
extern long                  _Expat_XML_GetCurrentByteIndex(struct ExpatIFace *, XML_Parser parser);
extern int                   _Expat_XML_GetCurrentLineNumber(struct ExpatIFace *, XML_Parser parser);
extern int                   _Expat_XML_GetCurrentColumnNumber(struct ExpatIFace *, XML_Parser parser);
extern int                   _Expat_XML_GetCurrentByteCount(struct ExpatIFace *, XML_Parser parser);
extern const char *          _Expat_XML_GetInputContext(struct ExpatIFace *, XML_Parser parser, int * offset, int * size);
extern void                  _Expat_XML_SetUserData(struct ExpatIFace *, XML_Parser parser, void * userData);
extern void                  _Expat_XML_DefaultCurrent(struct ExpatIFace *, XML_Parser parser);
extern void                  _Expat_XML_UseParserAsHandlerArg(struct ExpatIFace *, XML_Parser parser);
extern enum XML_Status       _Expat_XML_SetBase(struct ExpatIFace *, XML_Parser parser, const XML_Char * base);
extern const XML_Char *      _Expat_XML_GetBase(struct ExpatIFace *, XML_Parser parser);
extern int                   _Expat_XML_GetSpecifiedAttributeCount(struct ExpatIFace *, XML_Parser parser);
extern int                   _Expat_XML_GetIdAttributeIndex(struct ExpatIFace *, XML_Parser parser);
extern enum XML_Status       _Expat_XML_SetEncoding(struct ExpatIFace *, XML_Parser parser, const XML_Char * encoding);
extern int                   _Expat_XML_SetParamEntityParsing(struct ExpatIFace *, XML_Parser parser, enum XML_ParamEntityParsing parsing);
extern void                  _Expat_XML_SetReturnNSTriplet(struct ExpatIFace *, XML_Parser parser, int do_nst);
extern const XML_LChar *     _Expat_XML_ExpatVersion(struct ExpatIFace *);
extern XML_Expat_Version     _Expat_XML_ExpatVersionInfo(struct ExpatIFace *);
extern XML_Bool              _Expat_XML_ParserReset(struct ExpatIFace *, XML_Parser parser, const XML_Char * encoding);
extern void                  _Expat_XML_SetSkippedEntityHandler(struct ExpatIFace *, XML_Parser parser, XML_SkippedEntityHandler handler);
extern enum XML_Error        _Expat_XML_UseForeignDTD(struct ExpatIFace *, XML_Parser parser, XML_Bool useDTD);
extern const XML_Feature *   _Expat_XML_GetFeatureList(struct ExpatIFace *);
extern enum XML_Status       _Expat_XML_StopParser(struct ExpatIFace *, XML_Parser parser, XML_Bool resumable);
extern enum XML_Status       _Expat_XML_ResumeParser(struct ExpatIFace *, XML_Parser parser);
extern void                  _Expat_XML_GetParsingStatus(struct ExpatIFace *, XML_Parser parser, XML_ParsingStatus * status);
extern void                  _Expat_XML_FreeContentModel(struct ExpatIFace *, XML_Parser parser, XML_Content * model);
extern void *                _Expat_XML_MemMalloc(struct ExpatIFace *, XML_Parser parser, size_t size);
extern void *                _Expat_XML_MemRealloc(struct ExpatIFace *, XML_Parser parser, void * ptr, size_t size);
extern void                  _Expat_XML_MemFree(struct ExpatIFace *, XML_Parser parser, void * ptr);


CONST APTR main_vectors[] =
{
    _Expat_Obtain,
    _Expat_Release,
    NULL,
    NULL,
    _Expat_XML_ParserCreate,
    _Expat_XML_ParserCreateNS,
    _Expat_XML_ParserCreate_MM,
    _Expat_XML_ExternalEntityParserCreate,
    _Expat_XML_ParserFree,
    _Expat_XML_Parse,
    _Expat_XML_ParseBuffer,
    _Expat_XML_GetBuffer,
    _Expat_XML_SetStartElementHandler,
    _Expat_XML_SetEndElementHandler,
    _Expat_XML_SetElementHandler,
    _Expat_XML_SetCharacterDataHandler,
    _Expat_XML_SetProcessingInstructionHandler,
    _Expat_XML_SetCommentHandler,
    _Expat_XML_SetStartCdataSectionHandler,
    _Expat_XML_SetEndCdataSectionHandler,
    _Expat_XML_SetCdataSectionHandler,
    _Expat_XML_SetDefaultHandler,
    _Expat_XML_SetDefaultHandlerExpand,
    _Expat_XML_SetExternalEntityRefHandler,
    _Expat_XML_SetExternalEntityRefHandlerArg,
    _Expat_XML_SetUnknownEncodingHandler,
    _Expat_XML_SetStartNamespaceDeclHandler,
    _Expat_XML_SetEndNamespaceDeclHandler,
    _Expat_XML_SetNamespaceDeclHandler,
    _Expat_XML_SetXmlDeclHandler,
    _Expat_XML_SetStartDoctypeDeclHandler,
    _Expat_XML_SetEndDoctypeDeclHandler,
    _Expat_XML_SetDoctypeDeclHandler,
    _Expat_XML_SetElementDeclHandler,
    _Expat_XML_SetAttlistDeclHandler,
    _Expat_XML_SetEntityDeclHandler,
    _Expat_XML_SetUnparsedEntityDeclHandler,
    _Expat_XML_SetNotationDeclHandler,
    _Expat_XML_SetNotStandaloneHandler,
    _Expat_XML_GetErrorCode,
    _Expat_XML_ErrorString,
    _Expat_XML_GetCurrentByteIndex,
    _Expat_XML_GetCurrentLineNumber,
    _Expat_XML_GetCurrentColumnNumber,
    _Expat_XML_GetCurrentByteCount,
    _Expat_XML_GetInputContext,
    _Expat_XML_SetUserData,
    _Expat_XML_DefaultCurrent,
    _Expat_XML_UseParserAsHandlerArg,
    _Expat_XML_SetBase,
    _Expat_XML_GetBase,
    _Expat_XML_GetSpecifiedAttributeCount,
    _Expat_XML_GetIdAttributeIndex,
    _Expat_XML_SetEncoding,
    _Expat_XML_SetParamEntityParsing,
    _Expat_XML_SetReturnNSTriplet,
    _Expat_XML_ExpatVersion,
    _Expat_XML_ExpatVersionInfo,
    _Expat_XML_ParserReset,
    _Expat_XML_SetSkippedEntityHandler,
    _Expat_XML_UseForeignDTD,
    _Expat_XML_GetFeatureList,
    _Expat_XML_StopParser,
    _Expat_XML_ResumeParser,
    _Expat_XML_GetParsingStatus,
    _Expat_XML_FreeContentModel,
    _Expat_XML_MemMalloc,
    _Expat_XML_MemRealloc,
    _Expat_XML_MemFree,
    (APTR)-1
};

uint32 _Expat_Obtain(struct ExpatIFace *Self)
{
	return ++Self->Data.RefCount;
}

uint32 _Expat_Release(struct ExpatIFace *Self)
{
	return --Self->Data.RefCount;
}

XML_Parser _Expat_XML_ParserCreate(struct ExpatIFace * Self, const XML_Char *encoding)
{
	return XML_ParserCreate(encoding);
}

XML_Parser _Expat_XML_ParserCreateNS(struct ExpatIFace * Self, const XML_Char *encoding, XML_Char nsSep)
{
	return XML_ParserCreateNS(encoding, nsSep);
}

XML_Parser _Expat_XML_ParserCreate_MM(struct ExpatIFace * Self, const XML_Char *encoding, const XML_Memory_Handling_Suite *memsuite, const XML_Char *namespaceSeparator)
{
	return XML_ParserCreate_MM(encoding, memsuite, namespaceSeparator);
}

XML_Parser _Expat_XML_ExternalEntityParserCreate(struct ExpatIFace * Self, XML_Parser parser, const XML_Char *context, const XML_Char *encoding)
{
	return XML_ExternalEntityParserCreate(parser, context, encoding);
}

void _Expat_XML_ParserFree(struct ExpatIFace *Self, XML_Parser parser)
{
	XML_ParserFree(parser);
}

enum XML_Status _Expat_XML_Parse(struct ExpatIFace * Self, XML_Parser parser, const char * s, int len, int isFinal)
{
	return XML_Parse(parser, s, len, isFinal);
}

enum XML_Status _Expat_XML_ParseBuffer(struct ExpatIFace * Self, XML_Parser parser, int len, int isFinal)
{
	return XML_ParseBuffer(parser, len, isFinal);
}

void * _Expat_XML_GetBuffer(struct ExpatIFace * Self, XML_Parser parser, int len)
{
	return XML_GetBuffer(parser, len);
}

void _Expat_XML_SetStartElementHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartElementHandler start)
{
	XML_SetStartElementHandler(parser, start);
}

void _Expat_XML_SetEndElementHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EndElementHandler end)
{
	XML_SetEndElementHandler(parser, end);
}

void _Expat_XML_SetElementHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end)
{
	XML_SetElementHandler(parser, start, end);
}

void _Expat_XML_SetCharacterDataHandler(struct ExpatIFace * Self, XML_Parser parser, XML_CharacterDataHandler handler)
{
	XML_SetCharacterDataHandler(parser, handler);
}

void _Expat_XML_SetProcessingInstructionHandler(struct ExpatIFace * Self, XML_Parser parser, XML_ProcessingInstructionHandler handler)
{
	XML_SetProcessingInstructionHandler(parser, handler);
}

void _Expat_XML_SetCommentHandler(struct ExpatIFace * Self, XML_Parser parser, XML_CommentHandler handler)
{
	XML_SetCommentHandler(parser, handler);
}

void _Expat_XML_SetStartCdataSectionHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartCdataSectionHandler start)
{
	XML_SetStartCdataSectionHandler(parser, start);
}

void _Expat_XML_SetEndCdataSectionHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EndCdataSectionHandler end)
{
	XML_SetEndCdataSectionHandler(parser, end);
}

void _Expat_XML_SetCdataSectionHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartCdataSectionHandler start, XML_EndCdataSectionHandler end)
{
	XML_SetCdataSectionHandler(parser, start, end);
}

void _Expat_XML_SetDefaultHandler(struct ExpatIFace * Self, XML_Parser parser, XML_DefaultHandler handler)
{
	XML_SetDefaultHandler(parser, handler);
}

void _Expat_XML_SetDefaultHandlerExpand(struct ExpatIFace * Self, XML_Parser parser, XML_DefaultHandler handler)
{
	XML_SetDefaultHandlerExpand(parser, handler);
}

void _Expat_XML_SetExternalEntityRefHandler(struct ExpatIFace * Self, XML_Parser parser, XML_ExternalEntityRefHandler handler)
{
	XML_SetExternalEntityRefHandler(parser, handler);
}

void _Expat_XML_SetExternalEntityRefHandlerArg(struct ExpatIFace * Self, XML_Parser parser, void * arg)
{
	XML_SetExternalEntityRefHandlerArg(parser, arg);
}

void _Expat_XML_SetUnknownEncodingHandler(struct ExpatIFace * Self, XML_Parser parser, XML_UnknownEncodingHandler handler, void * data)
{
	XML_SetUnknownEncodingHandler(parser, handler, data);
}

void _Expat_XML_SetStartNamespaceDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartNamespaceDeclHandler start)
{
	XML_SetStartNamespaceDeclHandler(parser, start);
}

void _Expat_XML_SetEndNamespaceDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EndNamespaceDeclHandler end)
{
	XML_SetEndNamespaceDeclHandler(parser, end);
}

void _Expat_XML_SetNamespaceDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartNamespaceDeclHandler start, XML_EndNamespaceDeclHandler end)
{
	XML_SetNamespaceDeclHandler(parser, start, end);
}

void _Expat_XML_SetXmlDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_XmlDeclHandler handler)
{
	XML_SetXmlDeclHandler(parser, handler);
}

void _Expat_XML_SetStartDoctypeDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartDoctypeDeclHandler start)
{
	XML_SetStartDoctypeDeclHandler(parser, start);
}

void _Expat_XML_SetEndDoctypeDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EndDoctypeDeclHandler end)
{
	XML_SetEndDoctypeDeclHandler(parser, end);
}

void _Expat_XML_SetDoctypeDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_StartDoctypeDeclHandler start, XML_EndDoctypeDeclHandler end)
{
	XML_SetDoctypeDeclHandler(parser, start, end);
}

void _Expat_XML_SetElementDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_ElementDeclHandler eldecl)
{
	XML_SetElementDeclHandler(parser, eldecl);
}

void _Expat_XML_SetAttlistDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_AttlistDeclHandler attdecl)
{
	XML_SetAttlistDeclHandler(parser, attdecl);
}

void _Expat_XML_SetEntityDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_EntityDeclHandler handler)
{
	XML_SetEntityDeclHandler(parser, handler);
}

void _Expat_XML_SetUnparsedEntityDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_UnparsedEntityDeclHandler handler)
{
	XML_SetUnparsedEntityDeclHandler(parser, handler);
}

void _Expat_XML_SetNotationDeclHandler(struct ExpatIFace * Self, XML_Parser parser, XML_NotationDeclHandler handler)
{
	XML_SetNotationDeclHandler(parser, handler);
}

void _Expat_XML_SetNotStandaloneHandler(struct ExpatIFace * Self, XML_Parser parser, XML_NotStandaloneHandler handler)
{
	XML_SetNotStandaloneHandler(parser, handler);
}

enum XML_Error _Expat_XML_GetErrorCode(struct ExpatIFace * Self, XML_Parser parser)
{
	return XML_GetErrorCode(parser);
}

const XML_LChar * _Expat_XML_ErrorString(struct ExpatIFace * Self, enum XML_Error code)
{
	return XML_ErrorString(code);
}

long _Expat_XML_GetCurrentByteIndex(struct ExpatIFace * Self, XML_Parser parser)
{
	return XML_GetCurrentByteIndex(parser);
}

int _Expat_XML_GetCurrentLineNumber(struct ExpatIFace * Self, XML_Parser parser)
{
	return XML_GetCurrentLineNumber(parser);
}

int _Expat_XML_GetCurrentColumnNumber(struct ExpatIFace * Self, XML_Parser parser)
{
	return XML_GetCurrentColumnNumber(parser);
}

int _Expat_XML_GetCurrentByteCount(struct ExpatIFace * Self, XML_Parser parser)
{
	return XML_GetCurrentByteCount(parser);
}

const char * _Expat_XML_GetInputContext(struct ExpatIFace * Self, XML_Parser parser, int * offset, int * size)
{
	return XML_GetInputContext(parser, offset, size);
}

void _Expat_XML_SetUserData(struct ExpatIFace * Self, XML_Parser parser, void * userData)
{
	XML_SetUserData(parser, userData);
}

void _Expat_XML_DefaultCurrent(struct ExpatIFace * Self, XML_Parser parser)
{
	XML_DefaultCurrent(parser);
}

void _Expat_XML_UseParserAsHandlerArg(struct ExpatIFace * Self, XML_Parser parser)
{
	XML_UseParserAsHandlerArg(parser);
}

enum XML_Status _Expat_XML_SetBase(struct ExpatIFace * Self, XML_Parser parser, const XML_Char *p)
{
	return XML_SetBase(parser, p);
}

const XML_Char * _Expat_XML_GetBase(struct ExpatIFace * Self, XML_Parser parser)
{
	return XML_GetBase(parser);
}

int _Expat_XML_GetSpecifiedAttributeCount(struct ExpatIFace * Self, XML_Parser parser)
{
	return XML_GetSpecifiedAttributeCount(parser);
}

int _Expat_XML_GetIdAttributeIndex(struct ExpatIFace * Self, XML_Parser parser)
{
	return XML_GetIdAttributeIndex(parser);
}

enum XML_Status _Expat_XML_SetEncoding(struct ExpatIFace * Self, XML_Parser parser, const XML_Char *encoding)
{
	return XML_SetEncoding(parser, encoding);
}

int _Expat_XML_SetParamEntityParsing(struct ExpatIFace * Self, XML_Parser parser, enum XML_ParamEntityParsing parsing)
{
	return XML_SetParamEntityParsing(parser, parsing);
}

void _Expat_XML_SetReturnNSTriplet(struct ExpatIFace * Self, XML_Parser parser, int do_nst)
{
	XML_SetReturnNSTriplet(parser, do_nst);
}

const XML_LChar * _Expat_XML_ExpatVersion(struct ExpatIFace * Self)
{
	return XML_ExpatVersion();
}

XML_Expat_Version _Expat_XML_ExpatVersionInfo(struct ExpatIFace * Self)
{
	return XML_ExpatVersionInfo();
}

XML_Bool _Expat_XML_ParserReset(struct ExpatIFace * Self, XML_Parser parser, const XML_Char *encoding)
{
	return XML_ParserReset(parser, encoding);
}

void _Expat_XML_SetSkippedEntityHandler(struct ExpatIFace * Self, XML_Parser parser, XML_SkippedEntityHandler handler)
{
	XML_SetSkippedEntityHandler(parser, handler);
}

enum XML_Error _Expat_XML_UseForeignDTD(struct ExpatIFace * Self, XML_Parser parser, XML_Bool useDTD)
{
	return XML_UseForeignDTD(parser, useDTD);
}

const XML_Feature * _Expat_XML_GetFeatureList(struct ExpatIFace * Self)
{
	return XML_GetFeatureList();
}

enum XML_Status _Expat_XML_StopParser(struct ExpatIFace * Self, XML_Parser parser, XML_Bool resumable)
{
	return XML_StopParser(parser, resumable);
}

enum XML_Status _Expat_XML_ResumeParser(struct ExpatIFace * Self, XML_Parser parser)
{
	return XML_ResumeParser(parser);
}

void _Expat_XML_GetParsingStatus(struct ExpatIFace * Self, XML_Parser parser, XML_ParsingStatus * status)
{
	XML_GetParsingStatus(parser, status);
}

void _Expat_XML_FreeContentModel(struct ExpatIFace * Self, XML_Parser parser, XML_Content * model)
{
	XML_FreeContentModel(parser, model);
}

void * _Expat_XML_MemMalloc(struct ExpatIFace * Self, XML_Parser parser, size_t size)
{
	return XML_MemMalloc(parser, size);
}

void * _Expat_XML_MemRealloc(struct ExpatIFace * Self, XML_Parser parser, void * ptr, size_t size)
{
	XML_MemRealloc(parser, ptr, size);
}

void _Expat_XML_MemFree(struct ExpatIFace * Self, XML_Parser parser, void * ptr)
{
	XML_MemFree(parser, ptr);
}

--- NEW FILE: expat.xml ---
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE library SYSTEM "library.dtd">
<!-- autogenerated by fdtrans v51.16 -->
<library name="expat" basename="ExpatBase" basetype="Library" openname="expat.library">
	<include>libraries/expat.h</include>
	<interface name="main" version="1.0" struct="ExpatIFace" prefix="_Expat_" asmprefix="IExpat" global="IExpat">
		<method name="Obtain" result="uint32"/>
		<method name="Release" result="uint32"/>
		<method name="Expunge" result="void" status="unimplemented"/>
		<method name="Clone" result="struct Interface *" status="unimplemented"/>
		<method name="XML_ParserCreate" result="XML_Parser">
			<arg name="encodingName" type="const XML_Char *"/>
		</method>
		<method name="XML_ParserCreateNS" result="XML_Parser">
			<arg name="encodingName" type="const XML_Char *"/>
			<arg name="nsSep" type="XML_Char"/>
		</method>
		<method name="XML_ParserCreate_MM" result="XML_Parser">
			<arg name="encoding" type="const XML_Char *"/>
			<arg name="memsuite" type="const XML_Memory_Handling_Suite *"/>
			<arg name="namespaceSeparator" type="const XML_Char *"/>
		</method>
		<method name="XML_ExternalEntityParserCreate" result="XML_Parser">
			<arg name="parser" type="XML_Parser"/>
			<arg name="context" type="const XML_Char *"/>
			<arg name="encoding" type="const XML_Char *"/>
		</method>
		<method name="XML_ParserFree" result="void">
			<arg name="parser" type="XML_Parser"/>
		</method>
		<method name="XML_Parse" result="enum XML_Status">
			<arg name="parser" type="XML_Parser"/>
			<arg name="s" type="const char *"/>
			<arg name="len" type="int"/>
			<arg name="isFinal" type="int"/>
		</method>
		<method name="XML_ParseBuffer" result="enum XML_Status">
			<arg name="parser" type="XML_Parser"/>
			<arg name="len" type="int"/>
			<arg name="isFinal" type="int"/>
		</method>
		<method name="XML_GetBuffer" result="void *">
			<arg name="parser" type="XML_Parser"/>
			<arg name="len" type="int"/>
		</method>
		<method name="XML_SetStartElementHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="start" type="XML_StartElementHandler"/>
		</method>
		<method name="XML_SetEndElementHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="end" type="XML_EndElementHandler"/>
		</method>
		<method name="XML_SetElementHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="start" type="XML_StartElementHandler"/>
			<arg name="end" type="XML_EndElementHandler"/>
		</method>
		<method name="XML_SetCharacterDataHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="handler" type="XML_CharacterDataHandler"/>
		</method>
		<method name="XML_SetProcessingInstructionHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="handler" type="XML_ProcessingInstructionHandler"/>
		</method>
		<method name="XML_SetCommentHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="handler" type="XML_CommentHandler"/>
		</method>
		<method name="XML_SetStartCdataSectionHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="start" type="XML_StartCdataSectionHandler"/>
		</method>
		<method name="XML_SetEndCdataSectionHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="end" type="XML_EndCdataSectionHandler"/>
		</method>
		<method name="XML_SetCdataSectionHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="start" type="XML_StartCdataSectionHandler"/>
			<arg name="end" type="XML_EndCdataSectionHandler"/>
		</method>
		<method name="XML_SetDefaultHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="handler" type="XML_DefaultHandler"/>
		</method>
		<method name="XML_SetDefaultHandlerExpand" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="handler" type="XML_DefaultHandler"/>
		</method>
		<method name="XML_SetExternalEntityRefHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="handler" type="XML_ExternalEntityRefHandler"/>
		</method>
		<method name="XML_SetExternalEntityRefHandlerArg" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="arg" type="void *"/>
		</method>
		<method name="XML_SetUnknownEncodingHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="handler" type="XML_UnknownEncodingHandler"/>
			<arg name="data" type="void *"/>
		</method>
		<method name="XML_SetStartNamespaceDeclHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="start" type="XML_StartNamespaceDeclHandler"/>
		</method>
		<method name="XML_SetEndNamespaceDeclHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="end" type="XML_EndNamespaceDeclHandler"/>
		</method>
		<method name="XML_SetNamespaceDeclHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="start" type="XML_StartNamespaceDeclHandler"/>
			<arg name="end" type="XML_EndNamespaceDeclHandler"/>
		</method>
		<method name="XML_SetXmlDeclHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="handler" type="XML_XmlDeclHandler"/>
		</method>
		<method name="XML_SetStartDoctypeDeclHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="start" type="XML_StartDoctypeDeclHandler"/>
		</method>
		<method name="XML_SetEndDoctypeDeclHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="end" type="XML_EndDoctypeDeclHandler"/>
		</method>
		<method name="XML_SetDoctypeDeclHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="start" type="XML_StartDoctypeDeclHandler"/>
			<arg name="end" type="XML_EndDoctypeDeclHandler"/>
		</method>
		<method name="XML_SetElementDeclHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="eldecl" type="XML_ElementDeclHandler"/>
		</method>
		<method name="XML_SetAttlistDeclHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="attdecl" type="XML_AttlistDeclHandler"/>
		</method>
		<method name="XML_SetEntityDeclHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="handler" type="XML_EntityDeclHandler"/>
		</method>
		<method name="XML_SetUnparsedEntityDeclHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="handler" type="XML_UnparsedEntityDeclHandler"/>
		</method>
		<method name="XML_SetNotationDeclHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="handler" type="XML_NotationDeclHandler"/>
		</method>
		<method name="XML_SetNotStandaloneHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="handler" type="XML_NotStandaloneHandler"/>
		</method>
		<method name="XML_GetErrorCode" result="enum XML_Error">
			<arg name="parser" type="XML_Parser"/>
		</method>
		<method name="XML_ErrorString" result="const XML_LChar *">
			<arg name="code" type="enum XML_Error"/>
		</method>
		<method name="XML_GetCurrentByteIndex" result="long">
			<arg name="parser" type="XML_Parser"/>
		</method>
		<method name="XML_GetCurrentLineNumber" result="int">
			<arg name="parser" type="XML_Parser"/>
		</method>
		<method name="XML_GetCurrentColumnNumber" result="int">
			<arg name="parser" type="XML_Parser"/>
		</method>
		<method name="XML_GetCurrentByteCount" result="int">
			<arg name="parser" type="XML_Parser"/>
		</method>
		<method name="XML_GetInputContext" result="const char *">
			<arg name="parser" type="XML_Parser"/>
			<arg name="offset" type="int *"/>
			<arg name="size" type="int *"/>
		</method>
		<method name="XML_SetUserData" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="userData" type="void *"/>
		</method>
		<method name="XML_DefaultCurrent" result="void">
			<arg name="parser" type="XML_Parser"/>
		</method>
		<method name="XML_UseParserAsHandlerArg" result="void">
			<arg name="parser" type="XML_Parser"/>
		</method>
		<method name="XML_SetBase" result="enum XML_Status">
			<arg name="parser" type="XML_Parser"/>
			<arg name="base" type="const XML_Char *"/>
		</method>
		<method name="XML_GetBase" result="const XML_Char *">
			<arg name="parser" type="XML_Parser"/>
		</method>
		<method name="XML_GetSpecifiedAttributeCount" result="int">
			<arg name="parser" type="XML_Parser"/>
		</method>
		<method name="XML_GetIdAttributeIndex" result="int">
			<arg name="parser" type="XML_Parser"/>
		</method>
		<method name="XML_SetEncoding" result="enum XML_Status">
			<arg name="parser" type="XML_Parser"/>
			<arg name="encoding" type="const XML_Char *"/>
		</method>
		<method name="XML_SetParamEntityParsing" result="int">
			<arg name="parser" type="XML_Parser"/>
			<arg name="parsing" type="enum XML_ParamEntityParsing"/>
		</method>
		<method name="XML_SetReturnNSTriplet" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="do_nst" type="int"/>
		</method>
		<method name="XML_ExpatVersion" result="const XML_LChar *">
		</method>
		<method name="XML_ExpatVersionInfo" result="XML_Expat_Version">
		</method>
		<method name="XML_ParserReset" result="XML_Bool">
			<arg name="parser" type="XML_Parser"/>
			<arg name="encoding" type="const XML_Char *"/>
		</method>
		<method name="XML_SetSkippedEntityHandler" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="handler" type="XML_SkippedEntityHandler"/>
		</method>
		<method name="XML_UseForeignDTD" result="enum XML_Error">
			<arg name="parser" type="XML_Parser"/>
			<arg name="useDTD" type="XML_Bool"/>
		</method>
		<method name="XML_GetFeatureList" result="const XML_Feature *">
		</method>
		<method name="XML_StopParser" result="enum XML_Status">
			<arg name="parser" type="XML_Parser"/>
			<arg name="resumable" type="XML_Bool"/>
		</method>
		<method name="XML_ResumeParser" result="enum XML_Status">
			<arg name="parser" type="XML_Parser"/>
		</method>
		<method name="XML_GetParsingStatus" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="status" type="XML_ParsingStatus *"/>
		</method>
		<method name="XML_FreeContentModel" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="model" type="XML_Content *"/>
		</method>
		<method name="XML_MemMalloc" result="void *">
			<arg name="parser" type="XML_Parser"/>
			<arg name="size" type="size_t"/>
		</method>
		<method name="XML_MemRealloc" result="void *">
			<arg name="parser" type="XML_Parser"/>
			<arg name="ptr" type="void *"/>
			<arg name="size" type="size_t"/>
		</method>
		<method name="XML_MemFree" result="void">
			<arg name="parser" type="XML_Parser"/>
			<arg name="ptr" type="void *"/>
		</method>
	</interface>
</library>

--- NEW FILE: expat_lib.c ---
/*
** Copyright (c) 2001-2005 Expat maintainers.
**
** Permission is hereby granted, free of charge, to any person obtaining
** a copy of this software and associated documentation files (the
** "Software"), to deal in the Software without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Software, and to
** permit persons to whom the Software is furnished to do so, subject to
** the following conditions:
** 
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Software.
** 
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

#include <dos/dos.h>
#include <proto/exec.h>

#define LIBNAME		"expat.library"
#define LIBPRI		0
#define VERSION		3
#define REVISION	1
#define VSTRING		"expat.library 3.1 (6.11.2005)"  /* dd.mm.yyyy */


static const char* __attribute__((used)) verstag = "\0$VER: " VSTRING;


struct ExpatBase {
	struct Library libNode;
	uint16 pad;
	BPTR SegList;
};


struct ExpatBase * libInit(struct ExpatBase *libBase, BPTR seglist, struct ExecIFace *ISys);
uint32 libObtain (struct LibraryManagerInterface *Self);
uint32 libRelease (struct LibraryManagerInterface *Self);
struct ExpatBase *libOpen (struct LibraryManagerInterface *Self, uint32 version);
BPTR libClose (struct LibraryManagerInterface *Self);
BPTR libExpunge (struct LibraryManagerInterface *Self);


static APTR lib_manager_vectors[] = {
	libObtain,
	libRelease,
	NULL,
	NULL,
	libOpen,
	libClose,
	libExpunge,
	NULL,
	(APTR)-1,
};


static struct TagItem lib_managerTags[] = {
	{ MIT_Name, (uint32)"__library" },
	{ MIT_VectorTable, (uint32)lib_manager_vectors },
	{ MIT_Version, 1 },
	{ TAG_END, 0 }
};


extern void *main_vectors[];

static struct TagItem lib_mainTags[] = {
	{ MIT_Name, (uint32)"main" },
	{ MIT_VectorTable, (uint32)main_vectors },
	{ MIT_Version, 1 },
	{ TAG_END, 0 }
};


static APTR libInterfaces[] = {
	lib_managerTags,
	lib_mainTags,
	NULL
};


static struct TagItem libCreateTags[] = {
	{ CLT_DataSize, sizeof(struct ExpatBase) },
	{ CLT_InitFunc, (uint32)libInit },
	{ CLT_Interfaces, (uint32)libInterfaces },
	{ TAG_END, 0 }
};


static struct Resident __attribute__((used)) lib_res = {
	RTC_MATCHWORD,	// rt_MatchWord
	&lib_res,		// rt_MatchTag
	&lib_res+1,		// rt_EndSkip
	RTF_NATIVE | RTF_AUTOINIT,	// rt_Flags
	VERSION,		// rt_Version
	NT_LIBRARY,		// rt_Type
	LIBPRI,			// rt_Pri
	LIBNAME,		// rt_Name
	VSTRING,		// rt_IdString
	libCreateTags	// rt_Init
};


struct Library *DOSLib = 0;
struct Library *UtilityBase = 0;

struct ExecIFace *IExec = 0;
struct DOSIFace *IDOS = 0;
struct UtilityIFace *IUtility = 0;


void _start()
{
}


struct ExpatBase *libInit(struct ExpatBase *libBase, BPTR seglist, struct ExecIFace *ISys)
{
	libBase->libNode.lib_Node.ln_Type = NT_LIBRARY;
	libBase->libNode.lib_Node.ln_Pri = LIBPRI;
	libBase->libNode.lib_Node.ln_Name = LIBNAME;
	libBase->libNode.lib_Flags = LIBF_SUMUSED|LIBF_CHANGED;
	libBase->libNode.lib_Version = VERSION;
	libBase->libNode.lib_Revision = REVISION;
	libBase->libNode.lib_IdString = VSTRING;
	libBase->SegList = seglist;

	IExec = ISys;

	DOSLib = OpenLibrary("dos.library", 51);
	if ( DOSLib != 0 )  {
		IDOS = (struct DOSIFace *)GetInterface(DOSLib, "main", 1, NULL);
		if ( IDOS != 0 )  {
			UtilityBase = OpenLibrary("utility.library", 51);
			if ( UtilityBase != 0 )  {
				IUtility = (struct UtilityIFace*)GetInterface(UtilityBase, "main", 1, NULL);
				if ( IUtility != 0 )  {
					return libBase;
				}

				CloseLibrary(UtilityBase);
			}

			DropInterface((struct Interface *)IDOS);
		}

		CloseLibrary(DOSLib);
	}

	return NULL;
}


uint32 libObtain( struct LibraryManagerInterface *Self )
{
	++Self->Data.RefCount;
	return Self->Data.RefCount;
}


uint32 libRelease( struct LibraryManagerInterface *Self )
{
	--Self->Data.RefCount;
	return Self->Data.RefCount;
}


struct ExpatBase *libOpen( struct LibraryManagerInterface *Self, uint32 version )
{
	struct ExpatBase *libBase;

	libBase = (struct ExpatBase *)Self->Data.LibBase;

	++libBase->libNode.lib_OpenCnt;
	libBase->libNode.lib_Flags &= ~LIBF_DELEXP;

	return libBase;
}


BPTR libClose( struct LibraryManagerInterface *Self )
{
	struct ExpatBase *libBase;

	libBase = (struct ExpatBase *)Self->Data.LibBase;

	--libBase->libNode.lib_OpenCnt;
	if ( libBase->libNode.lib_OpenCnt ) {
		return 0;
	}

	if ( libBase->libNode.lib_Flags & LIBF_DELEXP ) {
		return (BPTR)Self->LibExpunge();
	}
	else {
		return 0;
	}
}


BPTR libExpunge( struct LibraryManagerInterface *Self )
{
	struct ExpatBase *libBase;
	BPTR result = 0;

	libBase = (struct ExpatBase *)Self->Data.LibBase;

	if (libBase->libNode.lib_OpenCnt == 0) {
		Remove(&libBase->libNode.lib_Node);

		result = libBase->SegList;

		DropInterface((struct Interface *)IUtility);
		CloseLibrary(UtilityBase);
		DropInterface((struct Interface *)IDOS);
		CloseLibrary(DOSLib);

		DeleteLibrary(&libBase->libNode);
	}
	else {
		libBase->libNode.lib_Flags |= LIBF_DELEXP;
	}

	return result;
}

--- NEW FILE: launch.c ---
/*
** Copyright (c) 2001-2005 Expat maintainers.
**
** Permission is hereby granted, free of charge, to any person obtaining
** a copy of this software and associated documentation files (the
** "Software"), to deal in the Software without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Software, and to
** permit persons to whom the Software is furnished to do so, subject to
** the following conditions:
** 
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Software.
** 
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

#include <stdlib.h>
#include <proto/exec.h>

struct Library* ExpatBase = 0;
struct ExpatIFace* IExpat = 0;


int amiga_main(int argc, char** argv);
void cleanup();


int main(int argc, char** argv)
{
	int result = -1;

	atexit(cleanup);

	ExpatBase = OpenLibrary("expat.library", 2);
	if ( ExpatBase != 0 )  {
		IExpat = (struct ExpatIFace*)GetInterface(ExpatBase, "main", 1, NULL);
		if ( IExpat != 0 )  {
			result = amiga_main(argc, argv);
		}
	}

	cleanup();

	return result;
}


void cleanup()
{
	if ( IExpat != 0 )  {
		DropInterface((struct Interface*)IExpat);
		IExpat = 0;
	}

	if ( ExpatBase != 0 )  {
		CloseLibrary(ExpatBase);
		ExpatBase = 0;
	}
}



More information about the Expat-checkins mailing list