1b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* 235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes** Copyright (c) 2001-2009 Expat maintainers. 3b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project** 4b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project** Permission is hereby granted, free of charge, to any person obtaining 5b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project** a copy of this software and associated documentation files (the 6b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project** "Software"), to deal in the Software without restriction, including 7b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project** without limitation the rights to use, copy, modify, merge, publish, 8b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project** distribute, sublicense, and/or sell copies of the Software, and to 9b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project** permit persons to whom the Software is furnished to do so, subject to 10b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project** the following conditions: 1135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes** 12b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project** The above copyright notice and this permission notice shall be included 13b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project** in all copies or substantial portions of the Software. 1435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes** 15b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 18b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 19b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 20b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 21b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 23b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 2435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#ifdef __USE_INLINE__ 2535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#undef __USE_INLINE__ 2635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif 2735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 28b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#include <stdlib.h> 29b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#include <proto/exec.h> 30b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 31b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectstruct Library* ExpatBase = 0; 32b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectstruct ExpatIFace* IExpat = 0; 33b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 34b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 35d07d5a72938fd52415368c2320fc29575ae9a0c3Elliott Hughesvoid setup() __attribute__((constructor)); 36d07d5a72938fd52415368c2320fc29575ae9a0c3Elliott Hughesvoid cleanup() __attribute__((destructor)); 37b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 38b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 39d07d5a72938fd52415368c2320fc29575ae9a0c3Elliott Hughesvoid setup() 40b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 4135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ExpatBase = IExec->OpenLibrary("expat.library", 53); 4235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IExpat = (struct ExpatIFace*)IExec->GetInterface(ExpatBase, "main", 1, NULL); 4335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 44d07d5a72938fd52415368c2320fc29575ae9a0c3Elliott Hughes if ( IExpat == 0 ) { 4535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IExec->DebugPrintF("Can't open expat.library\n"); 46b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project } 47b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 48b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 49b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 50b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectvoid cleanup() 51b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 5235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IExec->DropInterface((struct Interface*)IExpat); 5335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IExpat = 0; 54b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 5535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IExec->CloseLibrary(ExpatBase); 5635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ExpatBase = 0; 57b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 58