Annotation of embedaddon/libxml2/testModule.c, revision 1.1.1.1

1.1       misho       1: /*
                      2:  * testModule.c : a small tester program for xmlModule
                      3:  *
                      4:  * See Copyright for the status of this software.
                      5:  *
                      6:  * joelwreed@comcast.net
                      7:  */
                      8: 
                      9: #include "libxml.h"
                     10: #ifdef LIBXML_MODULES_ENABLED
                     11: #include <libxml/xmlversion.h>
                     12: 
                     13: #include <limits.h>
                     14: #include <stdio.h>
                     15: #include <string.h>
                     16: #include <stdarg.h>
                     17: 
                     18: #include <libxml/xmlmemory.h>
                     19: #include <libxml/debugXML.h>
                     20: #include <libxml/xmlmodule.h>
                     21: 
                     22: #ifdef _WIN32
                     23: #define MODULE_PATH "."
                     24: #include <stdlib.h> /* for _MAX_PATH */
                     25: #ifndef __MINGW32__
                     26: #define PATH_MAX _MAX_PATH
                     27: #endif
                     28: #else
                     29: #define MODULE_PATH ".libs"
                     30: #endif
                     31: 
                     32: /* Used for SCO Openserver*/
                     33: #ifndef PATH_MAX
                     34: #ifdef _POSIX_PATH_MAX
                     35: #define PATH_MAX _POSIX_PATH_MAX
                     36: #else
                     37: #define PATH_MAX 4096
                     38: #endif
                     39: #endif
                     40: 
                     41: typedef int (*hello_world_t)(void);
                     42:  
                     43: int main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
                     44:     xmlChar filename[PATH_MAX];
                     45:     xmlModulePtr module = NULL;
                     46:     hello_world_t hello_world = NULL;
                     47: 
                     48:     /* build the module filename, and confirm the module exists */
                     49:     xmlStrPrintf(filename, sizeof(filename),
                     50:                  (const xmlChar*) "%s/testdso%s",
                     51:                  (const xmlChar*)MODULE_PATH,
                     52:                 (const xmlChar*)LIBXML_MODULE_EXTENSION);
                     53: 
                     54:     module = xmlModuleOpen((const char*)filename, 0);
                     55:     if (module)
                     56:       {
                     57:         if (xmlModuleSymbol(module, "hello_world", (void **) &hello_world)) {
                     58:            fprintf(stderr, "Failure to lookup\n");
                     59:            return(1);
                     60:        }
                     61:        if (hello_world == NULL) {
                     62:            fprintf(stderr, "Lookup returned NULL\n");
                     63:            return(1);
                     64:        }
                     65:        
                     66:         (*hello_world)();
                     67: 
                     68:         xmlModuleClose(module);
                     69:       }
                     70: 
                     71:     xmlMemoryDump();
                     72: 
                     73:     return(0);
                     74: }
                     75: 
                     76: #else
                     77: #include <stdio.h>
                     78: int main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
                     79:     printf("%s : Module support not compiled in\n", argv[0]);
                     80:     return(0);
                     81: }
                     82: #endif /* LIBXML_SCHEMAS_ENABLED */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>