From ssolie at users.sourceforge.net Sat Aug 8 05:48:57 2009 From: ssolie at users.sourceforge.net (Steven Solie) Date: Sat, 08 Aug 2009 03:48:57 +0000 Subject: [Expat-checkins] expat MANIFEST,1.30,1.31 Message-ID: Update of /cvsroot/expat/expat In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv25352 Modified Files: MANIFEST Log Message: Some AmigaOS related changes. Index: MANIFEST =================================================================== RCS file: /cvsroot/expat/expat/MANIFEST,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- MANIFEST 31 Jan 2009 06:21:09 -0000 1.30 +++ MANIFEST 8 Aug 2009 03:48:55 -0000 1.31 @@ -1,8 +1,8 @@ -amiga/stdlib.c amiga/launch.c amiga/expat_68k.c amiga/expat_68k.h amiga/expat_68k_handler_stubs.c +amiga/expat_base.h amiga/expat_vectors.c amiga/expat_lib.c amiga/expat.xml From ssolie at users.sourceforge.net Sat Aug 8 05:48:57 2009 From: ssolie at users.sourceforge.net (Steven Solie) Date: Sat, 08 Aug 2009 03:48:57 +0000 Subject: [Expat-checkins] expat/amiga expat_base.h, NONE, 1.1 Makefile, 1.8, 1.9 README.txt, 1.8, 1.9 expat_68k.c, 1.2, 1.3 expat_68k.h, 1.1, 1.2 expat_68k_handler_stubs.c, 1.2, 1.3 expat_lib.c, 1.7, 1.8 launch.c, 1.3, 1.4 stdlib.c, 1.4, NONE Message-ID: Update of /cvsroot/expat/expat/amiga In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv25352/amiga Modified Files: Makefile README.txt expat_68k.c expat_68k.h expat_68k_handler_stubs.c expat_lib.c launch.c Added Files: expat_base.h Removed Files: stdlib.c Log Message: Some AmigaOS related changes. --- NEW FILE: expat_base.h --- /* ** Copyright (c) 2001-2009 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. */ #ifndef EXPAT_BASE_H #define EXPAT_BASE_H #include #include #include #include struct ExpatBase { struct Library libNode; uint16 pad; BPTR SegList; struct ExecIFace *IExec; }; #endif Index: Makefile =================================================================== RCS file: /cvsroot/expat/expat/amiga/Makefile,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- Makefile 31 Jan 2009 20:57:34 -0000 1.8 +++ Makefile 8 Aug 2009 03:48:55 -0000 1.9 @@ -214,20 +214,19 @@ ############################################################################# -libs/expat.library: libs/expat_lib.o libs/expat_68k.o libs/expat_68k_handler_stubs.o libs/expat_vectors.o libs/stdlib.o newlib/libexpat.a - $(CC) -mcrt=newlib -nostartfiles -nostdlib $^ -o $@ newlib/libexpat.a +libs/expat.library: libs/expat_lib.o libs/expat_68k.o libs/expat_68k_handler_stubs.o libs/expat_vectors.o newlib/libexpat.a + $(CC) -mcrt=newlib -nostartfiles $^ -o $@ newlib/libexpat.a -Wl,--cref,-M,-Map=$@.map protect $@ -e + $(STRIP) $(STRIPFLAGS) $@ -libs/expat_lib.o: expat_lib.c +libs/expat_lib.o: expat_lib.c expat_base.h -libs/expat_68k.o: expat_68k.c expat_68k.h +libs/expat_68k.o: expat_68k.c expat_68k.h expat_base.h libs/expat_68k_handler_stubs.o: expat_68k_handler_stubs.c expat_68k.h libs/expat_vectors.o: expat_vectors.c -libs/stdlib.o: stdlib.c - libs/launch.o: launch.c ############################################################################# Index: README.txt =================================================================== RCS file: /cvsroot/expat/expat/amiga/README.txt,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- README.txt 10 Feb 2009 03:47:00 -0000 1.8 +++ README.txt 8 Aug 2009 03:48:55 -0000 1.9 @@ -39,6 +39,14 @@ HISTORY ======= +53.1 - bumped version to match AmigaOS streaming + - modified to remove all global variables (except INewLib) + - removed replacements for malloc(), etc. which are now + handled by the respective C library + - compiled with the latest binutils which bumps the + AMIGAOS_DYNVERSION to 2 for the libexpat.so target + - now strips the expat.library binary + 5.2 - fixed XML_Parse 68k stub which enables xmlviewer to work without crashing - added some new functions to the 68k jump table available Index: expat_68k.c =================================================================== RCS file: /cvsroot/expat/expat/amiga/expat_68k.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- expat_68k.c 10 Feb 2009 03:47:00 -0000 1.2 +++ expat_68k.c 8 Aug 2009 03:48:55 -0000 1.3 @@ -22,7 +22,7 @@ */ /* -** This file was originally automatically generated by fdtrans. +** Note: This file was originally automatically generated by fdtrans. */ #ifdef __USE_INLINE__ @@ -35,6 +35,7 @@ #include #include #include "expat_68k.h" +#include "expat_base.h" STATIC ULONG stub_OpenPPC(ULONG *regarray) @@ -74,12 +75,14 @@ struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + struct ExecIFace *IExec = ((struct ExpatBase *)Self->Data.LibBase)->IExec; M68kXML_Parser p; p = IExec->AllocVec(sizeof(*p), MEMF_SHARED|MEMF_CLEAR); if (p) { p->p = Self->XML_ParserCreate((const XML_Char *)regarray[8]); if (p->p) { + p->IExec = IExec; Self->XML_SetUserData(p->p, p); return p; } @@ -94,12 +97,14 @@ struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + struct ExecIFace *IExec = ((struct ExpatBase *)Self->Data.LibBase)->IExec; M68kXML_Parser p; p = IExec->AllocVec(sizeof(*p), MEMF_SHARED|MEMF_CLEAR); if (p) { p->p = Self->XML_ParserCreateNS((const XML_Char *)regarray[8], (XML_Char)regarray[0]); if (p->p) { + p->IExec = IExec; Self->XML_SetUserData(p->p, p); return p; } @@ -114,6 +119,7 @@ struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + struct ExecIFace *IExec = ((struct ExpatBase *)Self->Data.LibBase)->IExec; M68kXML_Parser p; p = IExec->AllocVec(sizeof(*p), MEMF_SHARED|MEMF_CLEAR); @@ -122,6 +128,7 @@ (const XML_Memory_Handling_Suite *)regarray[9], (const XML_Char *)regarray[10]); if (p->p) { + p->IExec = IExec; Self->XML_SetUserData(p->p, p); return p; } @@ -136,6 +143,7 @@ struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + struct ExecIFace *IExec = ((struct ExpatBase *)Self->Data.LibBase)->IExec; M68kXML_Parser p; p = IExec->AllocVec(sizeof(*p), MEMF_SHARED|MEMF_CLEAR); @@ -143,6 +151,7 @@ p->p = Self->XML_ExternalEntityParserCreate((XML_Parser)regarray[8], (const XML_Char *)regarray[9], (const XML_Char *)regarray[10]); if (p->p) { + p->IExec = IExec; Self->XML_SetUserData(p->p, p); return p; } @@ -157,6 +166,7 @@ struct Library *Base = (struct Library *) regarray[REG68K_A6/4]; struct ExtendedLibrary *ExtLib = (struct ExtendedLibrary *) ((ULONG)Base + Base->lib_PosSize); struct ExpatIFace *Self = (struct ExpatIFace *) ExtLib->MainIFace; + struct ExecIFace *IExec = ((struct ExpatBase *)Self->Data.LibBase)->IExec; M68kXML_Parser p = (M68kXML_Parser)regarray[8]; if (p) { Index: expat_68k.h =================================================================== RCS file: /cvsroot/expat/expat/amiga/expat_68k.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- expat_68k.h 31 Jan 2009 06:21:09 -0000 1.1 +++ expat_68k.h 8 Aug 2009 03:48:55 -0000 1.2 @@ -1,3 +1,26 @@ +/* +** Copyright (c) 2001-2009 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. +*/ + #ifndef EXPAT_68K_H #define EXPAT_68K_H @@ -7,6 +30,7 @@ typedef struct M68kXML_ParserStruct { XML_Parser p; + struct ExecIFace *IExec; void *handlerarg; void *extenthandlerarg; void *enchandlerarg; Index: expat_68k_handler_stubs.c =================================================================== RCS file: /cvsroot/expat/expat/amiga/expat_68k_handler_stubs.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- expat_68k_handler_stubs.c 31 Jan 2009 20:57:34 -0000 1.2 +++ expat_68k_handler_stubs.c 8 Aug 2009 03:48:55 -0000 1.3 @@ -21,19 +21,23 @@ ** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#ifdef __USE_INLINE__ +#undef __USE_INLINE__ +#endif + #include "expat_68k.h" #include #include #include -static uint32 VARARGS68K call_68k_code (void *code, int num_args, ...) { +static uint32 VARARGS68K call_68k_code (struct ExecIFace *IExec, void *code, int num_args, ...) { uint32 res = 0; va_list vargs; va_startlinear(vargs, num_args); uint32 *args = va_getlinearva(vargs, uint32 *); - uint8 *stack = AllocVec(4096, MEMF_SHARED); + uint8 *stack = IExec->AllocVec(4096, MEMF_SHARED); if (stack) { uint32 *sp = (uint32 *)(stack + 4096); args += num_args; @@ -41,8 +45,8 @@ *--sp = *--args; } - res = EmulateTags(code, ET_StackPtr, sp, TAG_END); - FreeVec(stack); + res = IExec->EmulateTags(code, ET_StackPtr, sp, TAG_END); + IExec->FreeVec(stack); } va_end(vargs); @@ -52,47 +56,47 @@ void _68k_startelementhandler(void *userdata, const char *name, const char **attrs) { M68kXML_Parser p = userdata; - call_68k_code(p->startelementhandler, 3, p->handlerarg, name, attrs); + call_68k_code(p->IExec, p->startelementhandler, 3, p->handlerarg, name, attrs); } void _68k_endelementhandler(void *userdata, const char *name) { M68kXML_Parser p = userdata; - call_68k_code(p->endelementhandler, 2, p->handlerarg, name); + call_68k_code(p->IExec, p->endelementhandler, 2, p->handlerarg, name); } void _68k_chardatahandler(void *userdata, const char *s, int len) { M68kXML_Parser p = userdata; - call_68k_code(p->chardatahandler, 3, p->handlerarg, s, len); + call_68k_code(p->IExec, p->chardatahandler, 3, p->handlerarg, s, len); } void _68k_procinsthandler(void *userdata, const char *target, const char *data) { M68kXML_Parser p = userdata; - call_68k_code(p->procinsthandler, 3, p->handlerarg, target, data); + call_68k_code(p->IExec, p->procinsthandler, 3, p->handlerarg, target, data); } void _68k_commenthandler(void *userdata, const char *data) { M68kXML_Parser p = userdata; - call_68k_code(p->commenthandler, 2, p->handlerarg, data); + call_68k_code(p->IExec, p->commenthandler, 2, p->handlerarg, data); } void _68k_startcdatahandler(void *userdata) { M68kXML_Parser p = userdata; - call_68k_code(p->startcdatahandler, 1, p->handlerarg); + call_68k_code(p->IExec, p->startcdatahandler, 1, p->handlerarg); } void _68k_endcdatahandler(void *userdata) { M68kXML_Parser p = userdata; - call_68k_code(p->endcdatahandler, 1, p->handlerarg); + call_68k_code(p->IExec, p->endcdatahandler, 1, p->handlerarg); } void _68k_defaulthandler(void *userdata, const char *s, int len) { M68kXML_Parser p = userdata; - call_68k_code(p->defaulthandler, 3, p->handlerarg, s, len); + call_68k_code(p->IExec, p->defaulthandler, 3, p->handlerarg, s, len); } void _68k_defaulthandlerexp(void *userdata, const char *s, int len) { M68kXML_Parser p = userdata; - call_68k_code(p->defaulthandlerexp, 3, p->handlerarg, s, len); + call_68k_code(p->IExec, p->defaulthandlerexp, 3, p->handlerarg, s, len); } int _68k_extentrefhandler(XML_Parser parser, const char *context, const char *base, @@ -100,51 +104,51 @@ { M68kXML_Parser p = XML_GetUserData(parser); void *arg = p->extenthandlerarg; - return (int)call_68k_code(p->extentrefhandler, 5, arg ? arg : p, context, base, sysid, pubid); + return (int)call_68k_code(p->IExec, p->extentrefhandler, 5, arg ? arg : p, context, base, sysid, pubid); } int _68k_unknownenchandler(void *enchandlerdata, const char *name, XML_Encoding *info) { M68kXML_Parser p = enchandlerdata; - return (int)call_68k_code(p->unknownenchandler, 3, p->enchandlerarg, name, info); + return (int)call_68k_code(p->IExec, p->unknownenchandler, 3, p->enchandlerarg, name, info); } void _68k_startnamespacehandler(void *userdata, const char *prefix, const char *uri) { M68kXML_Parser p = userdata; - call_68k_code(p->startnamespacehandler, 3, p->handlerarg, prefix, uri); + call_68k_code(p->IExec, p->startnamespacehandler, 3, p->handlerarg, prefix, uri); } void _68k_endnamespacehandler(void *userdata, const char *prefix) { M68kXML_Parser p = userdata; - call_68k_code(p->endnamespacehandler, 2, p->handlerarg, prefix); + call_68k_code(p->IExec, p->endnamespacehandler, 2, p->handlerarg, prefix); } void _68k_xmldeclhandler(void *userdata, const char *version, const char *encoding, int standalone) { M68kXML_Parser p = userdata; - call_68k_code(p->xmldeclhandler, 4, p->handlerarg, version, encoding, standalone); + call_68k_code(p->IExec, p->xmldeclhandler, 4, p->handlerarg, version, encoding, standalone); } void _68k_startdoctypehandler(void *userdata, const char *doctypename, const char *sysid, const char *pubid, int has_internal_subset) { M68kXML_Parser p = userdata; - call_68k_code(p->startdoctypehandler, 5, p->handlerarg, doctypename, sysid, pubid, has_internal_subset); + call_68k_code(p->IExec, p->startdoctypehandler, 5, p->handlerarg, doctypename, sysid, pubid, has_internal_subset); } void _68k_enddoctypehandler(void *userdata) { M68kXML_Parser p = userdata; - call_68k_code(p->enddoctypehandler, 1, p->handlerarg); + call_68k_code(p->IExec, p->enddoctypehandler, 1, p->handlerarg); } void _68k_elementdeclhandler(void *userdata, const char *name, XML_Content *model) { M68kXML_Parser p = userdata; - call_68k_code(p->elementdeclhandler, 3, p->handlerarg, name, model); + call_68k_code(p->IExec, p->elementdeclhandler, 3, p->handlerarg, name, model); } void _68k_attlistdeclhandler(void *userdata, const char *elname, const char *attname, const char *att_type, const char *dflt, int isrequired) { M68kXML_Parser p = userdata; - call_68k_code(p->attlistdeclhandler, 6, p->handlerarg, elname, attname, att_type, dflt, isrequired); + call_68k_code(p->IExec, p->attlistdeclhandler, 6, p->handlerarg, elname, attname, att_type, dflt, isrequired); } void _68k_entitydeclhandler(void *userdata, const char *entityname, int is_param_entity, @@ -152,7 +156,7 @@ const char *notationname) { M68kXML_Parser p = userdata; - call_68k_code(p->entitydeclhandler, 9, p->handlerarg, entityname, is_param_entity, + call_68k_code(p->IExec, p->entitydeclhandler, 9, p->handlerarg, entityname, is_param_entity, value, value_length, base, sysid, pubid, notationname); } @@ -160,22 +164,22 @@ const char *sysid, const char *pubid, const char *notationname) { M68kXML_Parser p = userdata; - call_68k_code(p->unparseddeclhandler, 6, p->handlerarg, entityname, base, sysid, pubid, notationname); + call_68k_code(p->IExec, p->unparseddeclhandler, 6, p->handlerarg, entityname, base, sysid, pubid, notationname); } void _68k_notationdeclhandler(void *userdata, const char *notationname, const char *base, const char *sysid, const char *pubid) { M68kXML_Parser p = userdata; - call_68k_code(p->notationdeclhandler, 5, p->handlerarg, notationname, base, sysid, pubid); + call_68k_code(p->IExec, p->notationdeclhandler, 5, p->handlerarg, notationname, base, sysid, pubid); } int _68k_notstandalonehandler(void *userdata) { M68kXML_Parser p = userdata; - return (int)call_68k_code(p->notstandalonehandler, 1, p->handlerarg); + return (int)call_68k_code(p->IExec, p->notstandalonehandler, 1, p->handlerarg); } void _68k_skippedentityhandler(void *userdata, const char *entityname, int is_param_entity) { M68kXML_Parser p = userdata; - call_68k_code(p->skippedentityhandler, 3, p->handlerarg, entityname, is_param_entity); + call_68k_code(p->IExec, p->skippedentityhandler, 3, p->handlerarg, entityname, is_param_entity); } Index: expat_lib.c =================================================================== RCS file: /cvsroot/expat/expat/amiga/expat_lib.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- expat_lib.c 10 Feb 2009 03:47:00 -0000 1.7 +++ expat_lib.c 8 Aug 2009 03:48:55 -0000 1.8 @@ -21,24 +21,30 @@ ** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#ifdef __USE_INLINE__ +#undef __USE_INLINE__ +#endif + +#define __NOLIBBASE__ +#define __NOGLOBALIFACE__ + #include #include +#include "expat_base.h" + + #define LIBNAME "expat.library" #define LIBPRI 0 -#define VERSION 5 -#define REVISION 2 -#define VSTRING "expat.library 5.2 (9.2.2009)" /* dd.mm.yyyy */ +#define VERSION 53 +#define REVISION 1 +#define VSTRING "expat.library 53.1 (7.8.2009)" /* dd.mm.yyyy */ static const char* __attribute__((used)) verstag = "\0$VER: " VSTRING; -struct ExpatBase { - struct Library libNode; - uint16 pad; - BPTR SegList; -}; +struct Interface *INewlib = 0; struct ExpatBase * libInit(struct ExpatBase *libBase, BPTR seglist, struct ExecIFace *ISys); @@ -47,6 +53,8 @@ struct ExpatBase *libOpen (struct LibraryManagerInterface *Self, uint32 version); BPTR libClose (struct LibraryManagerInterface *Self); BPTR libExpunge (struct LibraryManagerInterface *Self); +struct Interface *openInterface(struct ExecIFace *IExec, CONST_STRPTR libName, uint32 libVer); +void closeInterface(struct ExecIFace *IExec, struct Interface *iface); static APTR lib_manager_vectors[] = { @@ -112,20 +120,13 @@ }; -struct Library *DOSLib = 0; -struct Library *UtilityBase = 0; - -struct ExecIFace *IExec = 0; -struct DOSIFace *IDOS = 0; -struct UtilityIFace *IUtility = 0; - - -void _start() +int32 _start() { + return RETURN_FAIL; } -struct ExpatBase *libInit(struct ExpatBase *libBase, BPTR seglist, struct ExecIFace *ISys) +struct ExpatBase *libInit(struct ExpatBase *libBase, BPTR seglist, struct ExecIFace *iexec) { libBase->libNode.lib_Node.ln_Type = NT_LIBRARY; libBase->libNode.lib_Node.ln_Pri = LIBPRI; @@ -134,29 +135,20 @@ libBase->libNode.lib_Version = VERSION; libBase->libNode.lib_Revision = REVISION; libBase->libNode.lib_IdString = VSTRING; - libBase->SegList = seglist; - IExec = ISys; + libBase->SegList = seglist; - 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; - } + libBase->IExec = iexec; + INewlib = openInterface(iexec, "newlib.library", 0); - CloseLibrary(UtilityBase); - } + if ( INewlib != 0 ) { + return libBase; + } - DropInterface((struct Interface *)IDOS); - } + closeInterface(iexec, INewlib); + INewlib = 0; - CloseLibrary(DOSLib); - } + iexec->DeleteLibrary(&libBase->libNode); return NULL; } @@ -204,29 +196,25 @@ return (BPTR)Self->LibExpunge(); } else { - return 0; + return ZERO; } } BPTR libExpunge( struct LibraryManagerInterface *Self ) { - struct ExpatBase *libBase; - BPTR result = 0; - - libBase = (struct ExpatBase *)Self->Data.LibBase; + struct ExpatBase *libBase = (struct ExpatBase *)Self->Data.LibBase; + BPTR result = ZERO; if (libBase->libNode.lib_OpenCnt == 0) { - Remove(&libBase->libNode.lib_Node); + libBase->IExec->Remove(&libBase->libNode.lib_Node); result = libBase->SegList; - DropInterface((struct Interface *)IUtility); - CloseLibrary(UtilityBase); - DropInterface((struct Interface *)IDOS); - CloseLibrary(DOSLib); + closeInterface(libBase->IExec, INewlib); + INewlib = 0; - DeleteLibrary(&libBase->libNode); + libBase->IExec->DeleteLibrary(&libBase->libNode); } else { libBase->libNode.lib_Flags |= LIBF_DELEXP; @@ -234,3 +222,26 @@ return result; } + + +struct Interface *openInterface(struct ExecIFace *IExec, CONST_STRPTR libName, uint32 libVer) +{ + struct Library *base = IExec->OpenLibrary(libName, libVer); + struct Interface *iface = IExec->GetInterface(base, "main", 1, 0); + if (iface == 0) { + IExec->CloseLibrary(base); + } + + return iface; +} + + +void closeInterface(struct ExecIFace *IExec, struct Interface *iface) +{ + if (iface != 0) + { + struct Library *base = iface->Data.LibBase; + IExec->DropInterface(iface); + IExec->CloseLibrary(base); + } +} Index: launch.c =================================================================== RCS file: /cvsroot/expat/expat/amiga/launch.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- launch.c 31 Jan 2009 06:21:09 -0000 1.3 +++ launch.c 8 Aug 2009 03:48:55 -0000 1.4 @@ -21,6 +21,10 @@ ** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#ifdef __USE_INLINE__ +#undef __USE_INLINE__ +#endif + #include #include @@ -34,20 +38,20 @@ void setup() { - ExpatBase = OpenLibrary("expat.library", 5); - IExpat = (struct ExpatIFace*)GetInterface(ExpatBase, "main", 1, NULL); + ExpatBase = IExec->OpenLibrary("expat.library", 53); + IExpat = (struct ExpatIFace*)IExec->GetInterface(ExpatBase, "main", 1, NULL); if ( IExpat == 0 ) { - DebugPrintF("Can't open expat.library\n"); + IExec->DebugPrintF("Can't open expat.library\n"); } } void cleanup() { - DropInterface((struct Interface*)IExpat); + IExec->DropInterface((struct Interface*)IExpat); IExpat = 0; - CloseLibrary(ExpatBase); + IExec->CloseLibrary(ExpatBase); ExpatBase = 0; } --- stdlib.c DELETED ---