summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
authorssolie <ssolie>2005-12-24 06:38:10 +0000
committerssolie <ssolie>2005-12-24 06:38:10 +0000
commit20b744b085eeebc9e87dc0262deb0d68b0a0a4d7 (patch)
tree296f3dcf7412f67612e22d53fd0eda58dda562d9 /amiga
parentbe082a25f3a7042bfe2a40f899f35822bf031840 (diff)
downloadlibexpat-20b744b085eeebc9e87dc0262deb0d68b0a0a4d7.tar.gz
*** empty log message ***
Diffstat (limited to 'amiga')
-rw-r--r--amiga/Makefile223
-rw-r--r--amiga/README.txt65
-rw-r--r--amiga/expat.xml264
-rwxr-xr-xamiga/expat_lib.c233
-rw-r--r--amiga/expat_vectors.c505
-rwxr-xr-xamiga/launch.c66
-rwxr-xr-xamiga/stdlib.c109
7 files changed, 1362 insertions, 103 deletions
diff --git a/amiga/Makefile b/amiga/Makefile
index 4801e60..97b5723 100644
--- a/amiga/Makefile
+++ b/amiga/Makefile
@@ -2,117 +2,182 @@
# Makefile for AmigaOS
#
-.PHONY: help all check clean install uninstall
+.PHONY: help all staticlib sharedlib check clean install
-tooldir = SDK:C
-includedir = SDK:Local/clib2/include
-libdir = SDK:Local/clib2/lib
+vpath %.c ../lib ../examples ../xmlwf ../tests
+vpath %.h ../lib ../tests
+
+
+#
+# Set these for SDK installation.
+#
+tooldir = SDK:Local/C
+staticlibdir = SDK:Local/clib2/lib
+staticincludedir = SDK:Local/clib2/include
+sharedlibdir = LIBS:
+sharedincludedir = SDK:Local/common/include
+
+
+ifeq ($(MAKECMDGOALS), staticlib)
+ DESTDIR = lib
+else
+ DESTDIR = libs
+endif
+
+STATICLIB = $(DESTDIR)/libexpat.a
+SHAREDLIB = $(DESTDIR)/expat.library
+
+XMLWF = $(DESTDIR)/xmlwf
+ELEMENTS = $(DESTDIR)/elements
+OUTLINE = $(DESTDIR)/outline
+RUNTESTS = $(DESTDIR)/runtests
+BENCHMARK = $(DESTDIR)/benchmark
-LIBRARY = libexpat.a
help:
- @echo "Expat XML Parser"
- @echo ""
- @echo "Requirements:"
- @echo "- AmigaOS 4.0"
- @echo "- SDK 51.5"
- @echo "- clib2 1.188"
+ @echo "Requires:"
+ @echo " AmigaOS 4.0"
+ @echo " SDK 51.15"
+ @echo " clib2 1.198"
@echo ""
@echo "Targets:"
- @echo "all - build expat lib, all tools, test suite and run tests"
- @echo "check - run test suite"
- @echo "clean - clean all product files"
- @echo "install - install expat lib and headers in SDK"
- @echo "uninstall - uninstall expat lib and headers"
+ @echo " all - make expat libraries, xmlwf, examples and run test suite"
+ @echo " install - install expat libraries and tools into SDK"
+
+all:
+ $(MAKE) staticlib
+ $(MAKE) sharedlib
-all: $(LIBRARY) xmlwf elements outline check benchmark
+staticlib: $(STATICLIB) $(XMLWF) $(ELEMENTS) $(OUTLINE) $(RUNTESTS) $(BENCHMARK) check
+ @echo done
-check: runtests
- runtests
+sharedlib: $(SHAREDLIB) $(XMLWF) $(ELEMENTS) $(OUTLINE) $(RUNTESTS) $(BENCHMARK) check
+ @echo done
+
+check:
+ $(RUNTESTS)
clean:
- -delete /lib/#?.o quiet
- -delete /xmlwf/#?.o quiet
- -delete /examples/#?.o quiet
- -delete /tests/#?.o quiet
- -delete $(LIBRARY) xmlwf runtests elements outline benchmark quiet
-
-install: xmlwf $(LIBRARY)
- copy xmlwf $(tooldir) quiet
- copy /lib/expat.h /lib/expat_external.h $(includedir) quiet
- copy $(LIBRARY) $(libdir) quiet
-
-uninstall:
- -delete $(tooldir)/xmlwf quiet
- -delete $(includedir)/expat.h $(includedir)/expat_external.h quiet
- -delete $(libdir)/$(LIBRARY) quiet
+ -delete lib/#?.o quiet
+ -delete libs/#?.o quiet
+
+install:
+ copy lib/xmlwf $(tooldir) quiet
+ copy /lib/expat.h /lib/expat_external.h $(staticincludedir) quiet
+ copy lib/libexpat.a $(staticlibdir) quiet
+ copy libs/expat.library $(sharedlibdir) quiet
+ copy include $(sharedincludedir) quiet all
+
CC = gcc
LIBTOOL = ar
STRIP = strip
-LIBDIR = /lib
-INCLUDES = -I../lib
LDFLAGS =
+LIBS =
CFLAGS = -DNDEBUG -O2
LTFLAGS = -crs
STRIPFLAGS = -R.comment
+LAUNCH =
-COMPILE = $(CC) $(CFLAGS) $(INCLUDES)
+ifeq ($(MAKECMDGOALS), staticlib)
+ LIBS += $(STATICLIB)
+ INCLUDES = -I../lib
+endif
-LINK_LIB = $(LIBTOOL) $(LTFLAGS)
+ifeq ($(MAKECMDGOALS), sharedlib)
+ CFLAGS += -DAMIGA_SHARED_LIB -D__USE_INLINE__
+ INCLUDES = -I. -Iinclude -Iinclude/libraries
+ LAUNCH = $(DESTDIR)/launch.o
+endif
-LINK_EXE = $(COMPILE) $(LDFLAGS) -o $@
-LIB_OBJS = $(LIBDIR)/xmlparse.o $(LIBDIR)/xmltok.o $(LIBDIR)/xmlrole.o
-LIB_LINK_OBJS = $(subst $(LIBDIR),..$(LIBDIR),$(LIB_OBJS))
-$(LIBRARY): $(LIB_OBJS)
- $(LINK_LIB) $@ $(LIB_LINK_OBJS)
+COMPILE = $(CC) $(CFLAGS) $(INCLUDES) -c
-$(LIBDIR)/xmlparse.o: $(LIBDIR)/xmlparse.c $(LIBDIR)/expat.h \
- $(LIBDIR)/xmlrole.h $(LIBDIR)/xmltok.h $(LIBDIR)/expat_external.h \
- $(LIBDIR)/internal.h $(LIBDIR)/amigaconfig.h
+LINK = $(CC) $(LDFLAGS) -o $@
-$(LIBDIR)/xmlrole.o: $(LIBDIR)/xmlrole.c $(LIBDIR)/ascii.h \
- $(LIBDIR)/xmlrole.h $(LIBDIR)/expat_external.h $(LIBDIR)/internal.h \
- $(LIBDIR)/amigaconfig.h
-$(LIBDIR)/xmltok.o: $(LIBDIR)/xmltok.c $(LIBDIR)/xmltok_impl.c \
- $(LIBDIR)/xmltok_ns.c $(LIBDIR)/ascii.h $(LIBDIR)/asciitab.h \
- $(LIBDIR)/iasciitab.h $(LIBDIR)/latin1tab.h $(LIBDIR)/nametab.h \
- $(LIBDIR)/utf8tab.h $(LIBDIR)/xmltok.h $(LIBDIR)/xmltok_impl.h \
- $(LIBDIR)/expat_external.h $(LIBDIR)/internal.h $(LIBDIR)/amigaconfig.h
+$(STATICLIB): $(DESTDIR)/xmlparse.o $(DESTDIR)/xmltok.o $(DESTDIR)/xmlrole.o
+ $(LIBTOOL) $(LTFLAGS) $@ $^
-XMLWF_OBJS = /xmlwf/xmlwf.o /xmlwf/xmlfile.o /xmlwf/codepage.o /xmlwf/readfilemap.o
-XMLWF_LINK_OBJS = $(subst /xmlwf/,../xmlwf/,$(XMLWF_OBJS))
-/xmlwf/xmlwf.o: /xmlwf/xmlwf.c
-/xmlwf/xmlfile.o: /xmlwf/xmlfile.c
-/xmlwf/codepage.o: /xmlwf/codepage.c
-/xmlwf/readfilemap.o: /xmlwf/readfilemap.c
-xmlwf: $(XMLWF_OBJS) $(LIBRARY)
- $(LINK_EXE) $(XMLWF_LINK_OBJS) $(LIBRARY) -lm
- $(STRIP) $(STRIPFLAGS) $@
+$(DESTDIR)/xmlparse.o: xmlparse.c expat.h xmlrole.h xmltok.h \
+ expat_external.h internal.h amigaconfig.h
+ $(COMPILE) $< -o $@
+
+$(DESTDIR)/xmlrole.o: xmlrole.c ascii.h xmlrole.h expat_external.h \
+ internal.h amigaconfig.h
+ $(COMPILE) $< -o $@
+
+$(DESTDIR)/xmltok.o: xmltok.c xmltok_impl.c xmltok_ns.c ascii.h asciitab.h \
+ iasciitab.h latin1tab.h nametab.h utf8tab.h xmltok.h xmltok_impl.h \
+ expat_external.h internal.h amigaconfig.h
+ $(COMPILE) $< -o $@
+
+
+$(SHAREDLIB): $(DESTDIR)/expat_lib.o $(DESTDIR)/expat_vectors.o $(DESTDIR)/stdlib.o lib/libexpat.a
+ $(LINK) -nostartfiles -nostdlib -o $@ $^
+
+$(DESTDIR)/expat_lib.o: expat_lib.c
+ $(COMPILE) $< -o $@
-/examples/elements.o: /examples/elements.c
-elements: /examples/elements.o $(LIBRARY)
- $(LINK_EXE) ../examples/elements.o $(LIBRARY) -lm
+$(DESTDIR)/expat_vectors.o: expat_vectors.c
+ $(COMPILE) $< -o $@
+
+$(DESTDIR)/stdlib.o: stdlib.c
+ $(COMPILE) $< -o $@
+
+$(LAUNCH): launch.c
+ $(COMPILE) $< -o $@
+
+
+$(XMLWF): $(DESTDIR)/xmlwf.o $(DESTDIR)/xmlfile.o $(DESTDIR)/codepage.o $(DESTDIR)/readfilemap.o $(LAUNCH)
+ $(LINK) $^ $(LIBS)
$(STRIP) $(STRIPFLAGS) $@
-/examples/outline.o: /examples/outline.c
-outline: /examples/outline.o $(LIBRARY)
- $(LINK_EXE) ../examples/outline.o $(LIBRARY) -lm
+$(DESTDIR)/xmlwf.o: xmlwf.c
+ $(COMPILE) $< -o $@
+
+$(DESTDIR)/xmlfile.o: xmlfile.c
+ $(COMPILE) $< -o $@
+
+$(DESTDIR)/codepage.o: codepage.c
+ $(COMPILE) $< -o $@
+
+$(DESTDIR)/readfilemap.o: readfilemap.c
+ $(COMPILE) $< -o $@
+
+
+$(ELEMENTS): $(DESTDIR)/elements.o $(LAUNCH)
+ $(LINK) $^ $(LIBS)
$(STRIP) $(STRIPFLAGS) $@
-/tests/benchmark/benchmark.o: /tests/benchmark/benchmark.c
-benchmark: /tests/benchmark/benchmark.o $(LIBRARY)
- $(LINK_EXE) ../tests/benchmark/benchmark.o $(LIBRARY) -lm
+$(DESTDIR)/elements.o: elements.c
+ $(COMPILE) $< -o $@
+
+
+$(OUTLINE): $(DESTDIR)/outline.o $(LAUNCH)
+ $(LINK) $^ $(LIBS)
$(STRIP) $(STRIPFLAGS) $@
-/tests/chardata.o: /tests/chardata.c /tests/chardata.h
-/tests/minicheck.o: /tests/minicheck.c /tests/minicheck.h
-/tests/runtests.o: /tests/runtests.c /tests/chardata.h
-runtests: /tests/runtests.o /tests/chardata.o /tests/minicheck.o $(LIBRARY)
- $(LINK_EXE) ../tests/runtests.o ../tests/chardata.o ../tests/minicheck.o $(LIBRARY) -lm
+$(DESTDIR)/outline.o: outline.c
+ $(COMPILE) $< -o $@
+
+
+$(RUNTESTS): $(DESTDIR)/runtests.o $(DESTDIR)/chardata.o $(DESTDIR)/minicheck.o $(LAUNCH)
+ $(LINK) $^ $(LIBS)
+
+$(DESTDIR)/chardata.o: chardata.c chardata.h
+ $(COMPILE) $< -o $@
+
+$(DESTDIR)/minicheck.o: minicheck.c minicheck.h
+ $(COMPILE) $< -o $@
+
+$(DESTDIR)/runtests.o: runtests.c chardata.h
+ $(COMPILE) $< -o $@
+
+
+$(BENCHMARK): $(DESTDIR)/benchmark.o $(LAUNCH)
+ $(LINK) $^ $(LIBS) -lm
-%.o: %.c
- $(COMPILE) -o ..$@ -c ..$<
+$(DESTDIR)/benchmark.o: benchmark/benchmark.c
+ $(COMPILE) $< -o $@
diff --git a/amiga/README.txt b/amiga/README.txt
index 4df538e..945af5c 100644
--- a/amiga/README.txt
+++ b/amiga/README.txt
@@ -1,36 +1,53 @@
-Short: Expat XML parsing library
-Author: James Clark
-Uploader: ssolie@telus.net (Steven Solie)
-Type: dev/misc
-Version: 1.95.8
-Requires: AmigaOS 4.0, SDK 51.5, clib2 1.188
+SUMMARY
+=======
+This is a port of expat for AmigaOS 4.0 which includes the
+SDK, some XML tools and the libraries.
-This is a port of expat for AmigaOS 4.0 PPC.
+Both static and shared library versions are supported.
-Currently clib2 is supported although it should be possible to use
-the library with newlib (e.g. add the -newlib option to GCC).
+The static library version is limited to clib2 although it should
+be possible to use newlib with the appopriate compile options.
+The shared library version is based on the work of Fredrik Wikstrom
+and is currently limited to PPC only.
-Building:
----------
-To build expat library, xmlwf tool, examples and run the test suite,
-simply type 'make all'.
-To install expat into the AmigaOS SDK type 'make install'.
+HISTORY
+=======
+3.1 - removed obsolete sfd file
+ - added library description xml file
+ - refactored Makefile
+ - removed extraneous VARARGS68K keywords
+ - reworked default memory handling functions in shared lib
+ - updated amigaconfig.h
-To uninstall expat, type 'make uninstall'.
+3.0 - initial release
+ - based on expat 1.95.8
-To run the test suite, type 'make check'.
+BUILDING
+========
+To build expat.library, xmlwf tool, examples and run the test suite,
+simply type 'make all' in the amiga subdirectory.
-Configuration:
---------------
-You may want to edit the lib/amigaconfig.h file to remove DTD and/or
-XML namespace support if they are not required by your application
-for a slightly smaller and faster implementation.
+The test suite will compile and run for both the static and shared
+library versions.
-To Do:
-------
+INSTALLATION
+============
+To install both static and shared versions of expat into the
+AmigaOS SDK type 'make install' in the amiga subdirectory.
+
+
+CONFIGURATION
+=============
+You may want to edit the lib/amigaconfig.h file to remove
+DTD and/or XML namespace support if they are not required by your
+specific application for a smaller and faster implementation.
+
+
+TO DO
+=====
- wide character support (UTF-16)
-- create a shared library option
+- provide 68k backwards compatibility
diff --git a/amiga/expat.xml b/amiga/expat.xml
new file mode 100644
index 0000000..d6aeae2
--- /dev/null
+++ b/amiga/expat.xml
@@ -0,0 +1,264 @@
+<?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>
diff --git a/amiga/expat_lib.c b/amiga/expat_lib.c
new file mode 100755
index 0000000..a218662
--- /dev/null
+++ b/amiga/expat_lib.c
@@ -0,0 +1,233 @@
+/*
+** 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;
+}
diff --git a/amiga/expat_vectors.c b/amiga/expat_vectors.c
new file mode 100644
index 0000000..1116313
--- /dev/null
+++ b/amiga/expat_vectors.c
@@ -0,0 +1,505 @@
+/*
+** 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);
+}
diff --git a/amiga/launch.c b/amiga/launch.c
new file mode 100755
index 0000000..11bbf1c
--- /dev/null
+++ b/amiga/launch.c
@@ -0,0 +1,66 @@
+/*
+** 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;
+ }
+}
diff --git a/amiga/stdlib.c b/amiga/stdlib.c
new file mode 100755
index 0000000..4a7ca71
--- /dev/null
+++ b/amiga/stdlib.c
@@ -0,0 +1,109 @@
+/*
+** 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);
+}