diff options
Diffstat (limited to 'libxml2-2.9.10/testModule.c')
-rw-r--r-- | libxml2-2.9.10/testModule.c | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/libxml2-2.9.10/testModule.c b/libxml2-2.9.10/testModule.c new file mode 100644 index 0000000..77b7ba1 --- /dev/null +++ b/libxml2-2.9.10/testModule.c @@ -0,0 +1,82 @@ +/* + * testModule.c : a small tester program for xmlModule + * + * See Copyright for the status of this software. + * + * joelwreed@comcast.net + */ + +#include "libxml.h" +#ifdef LIBXML_MODULES_ENABLED +#include <libxml/xmlversion.h> + +#include <limits.h> +#include <stdio.h> +#include <string.h> +#include <stdarg.h> + +#include <libxml/xmlmemory.h> +#include <libxml/debugXML.h> +#include <libxml/xmlmodule.h> + +#ifdef _WIN32 +#define MODULE_PATH "." +#include <stdlib.h> /* for _MAX_PATH */ +#ifndef __MINGW32__ +#define PATH_MAX _MAX_PATH +#endif +#else +#define MODULE_PATH ".libs" +#endif + +/* Used for SCO Openserver*/ +#ifndef PATH_MAX +#ifdef _POSIX_PATH_MAX +#define PATH_MAX _POSIX_PATH_MAX +#else +#define PATH_MAX 4096 +#endif +#endif + +typedef int (*hello_world_t)(void); + +int main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) { + xmlChar filename[PATH_MAX]; + xmlModulePtr module = NULL; + hello_world_t hello_world = NULL; + + /* build the module filename, and confirm the module exists */ + xmlStrPrintf(filename, sizeof(filename), + "%s/testdso%s", + (const xmlChar*)MODULE_PATH, + (const xmlChar*)LIBXML_MODULE_EXTENSION); + + module = xmlModuleOpen((const char*)filename, 0); + if (module) + { + if (xmlModuleSymbol(module, "hello_world", (void **) &hello_world)) { + fprintf(stderr, "Failure to lookup\n"); + return(1); + } + if (hello_world == NULL) { + fprintf(stderr, "Lookup returned NULL\n"); + return(1); + } + + (*hello_world)(); + + xmlModuleClose(module); + } + + xmlMemoryDump(); + + return(0); +} + +#else +#include <stdio.h> +int main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) { + printf("%s : Module support not compiled in\n", argv[0]); + return(0); +} +#endif /* LIBXML_SCHEMAS_ENABLED */ |