diff options
Diffstat (limited to 'vms')
-rwxr-xr-x | vms/build_libxml.com | 261 | ||||
-rwxr-xr-x | vms/config.vms | 218 | ||||
-rw-r--r-- | vms/diffs.vms | 192 | ||||
-rw-r--r-- | vms/readme.vms | 143 |
4 files changed, 814 insertions, 0 deletions
diff --git a/vms/build_libxml.com b/vms/build_libxml.com new file mode 100755 index 0000000..323c36f --- /dev/null +++ b/vms/build_libxml.com @@ -0,0 +1,261 @@ +$! BUILD_LIBXML.COM +$! +$! Build the LIBXML library +$! +$! Arguments: +$! +$! "DEBUG" - build everything in debug +$! +$! This procedure creates an object library XML_LIBDIR:LIBXML.OLB directory. +$! After the library is built, you can link LIBXML routines into +$! your code with the command +$! +$! $ LINK your_modules,XML_LIBDIR:LIBXML.OLB/LIBRARY +$! +$! Change History +$! -------------- +$! Command file author : John A Fotheringham (jaf@jafsoft.com) +$! Update history : 13 October 2003 Craig Berry (craigberry@mac.com) +$! more new module additions +$! : 25 April 2003 Craig Berry (craigberry@mac.com) +$! added xmlreader.c and relaxng.c to source list +$! : 28 September 2002 Craig Berry (craigberry@mac.com) +$! updated to work with current sources +$! miscellaneous enhancements to build process +$! +$!- configuration ------------------------------------------------------------- +$! +$!- compile command. If p1="nowarn" suppress the expected warning types +$! +$ cc_opts = "/NAMES=(SHORTENED)/FLOAT=IEEE/IEEE_MODE=DENORM_RESULTS" +$! +$ if p1.eqs."DEBUG" .or. p2.eqs."DEBUG" +$ then +$ debug = "Y" +$ cc_command = "CC''cc_opts'/DEBUG/NOOPTIMIZE/LIST/SHOW=ALL" +$ else +$ debug = "N" +$ cc_command = "CC''cc_opts'" +$ endif +$! +$!- list of sources to be built into the LIBXML library. Compare this list +$! to the definition of "libxml2_la_SOURCES" in the file MAKEFILE.IN. +$! Currently this definition includes the list WITH_TRIO_SOURCES_TRUE +$! +$ sources = "SAX.c entities.c encoding.c error.c parserInternals.c parser.c" +$ sources = sources + " tree.c hash.c list.c xmlIO.c xmlmemory.c uri.c valid.c" +$ sources = sources + " xlink.c HTMLparser.c HTMLtree.c debugXML.c xpath.c " +$ sources = sources + " xpointer.c xinclude.c nanohttp.c nanoftp.c " +$ sources = sources + " DOCBparser.c catalog.c globals.c threads.c c14n.c " +$ sources = sources + " xmlregexp.c xmlschemas.c xmlschemastypes.c xmlunicode.c " +$ sources = sources + " triostr.c trio.c xmlreader.c relaxng.c dict.c SAX2.c" +$ sources = sources + " legacy.c xmldwalk.c chvalid.c" +$! +$!- list of main modules to compile and link. Compare this list to the +$! definition of bin_PROGRAMS in MAKEFILE.IN +$! +$ bin_progs = "xmllint xmlcatalog" +$! +$!- list of test modules to compile and link. Compare this list to the +$! definition of noinst_PROGRAMS in MAKEFILE. +$! +$ noinst_PROGRAMS = "testSchemas testRelax testSAX testHTML testXPath testURI " - + + "testThreads testC14N testAutomata testRegexp testReader" +$! +$!- set up build logicals -----------------------------------------------------\ +$! +$! +$!- start from where the procedure is in case it's submitted in batch ----------\ +$! +$ whoami = f$parse(f$environment("PROCEDURE"),,,,"NO_CONCEAL") +$ procdir = f$parse(whoami,,,"DEVICE") + f$parse(whoami,,,"DIRECTORY") +$ set default 'procdir' +$! +$ if f$trnlnm("XML_LIBDIR").eqs."" +$ then +$ if f$search("[-]lib.dir") .eqs. "" +$ then +$ create/directory/log [-.lib] +$ endif +$ xml_libdir = f$parse("[-.lib]",,,"DEVICE") + f$parse("[-.lib]",,,"DIRECTORY") +$ define/process XML_LIBDIR 'xml_libdir' +$ write sys$output "Defining XML_LIBDIR as """ + f$trnlnm("XML_LIBDIR") + """ +$ endif +$! +$ if f$trnlnm("XML_SRCDIR").eqs."" +$ then +$ globfile = f$search("[-...]globals.c") +$ if globfile.eqs."" +$ then +$ write sys$output "Can't locate globals.c. You need to manually define a XML_SRCDIR logical" +$ exit +$ else +$ srcdir = f$parse(globfile,,,"DEVICE") + f$parse(globfile,,,"DIRECTORY") +$ define/process XML_SRCDIR "''srcdir'" +$ write sys$output "Defining XML_SRCDIR as ""''srcdir'""" +$ endif +$ endif +$! +$ copy/log config.vms xml_srcdir:config.h +$! +$ if f$trnlnm("libxml").eqs."" +$ then +$ globfile = f$search("[-...]globals.h") +$ if globfile.eqs."" +$ then +$ write sys$output "Can't locate globals.h. You need to manually define a LIBXML logical" +$ exit +$ else +$ includedir = f$parse(globfile,,,"DEVICE") + f$parse(globfile,,,"DIRECTORY") +$ define/process libxml "''includedir'" +$ write sys$output "Defining libxml as ""''includedir'""" +$ endif +$ endif +$! +$!- set up error handling (such as it is) ------------------------------------- +$! +$ exit_status = 1 +$ saved_default = f$environment("default") +$ on error then goto ERROR_OUT +$ on control_y then goto ERROR_OUT +$! +$!- move to the source directory and create any necessary subdirs and the +$! object library +$! +$ set default xml_srcdir +$ if f$search("DEBUG.DIR").eqs."" then create/dir [.DEBUG] +$ if f$search("XML_LIBDIR:LIBXML.OLB").eqs."" +$ then +$ write sys$output "Creating new object library XML_LIBDIR:LIBXML.OLB" +$ library/create XML_LIBDIR:LIBXML.OLB +$ endif +$! +$ goto start_here +$ start_here: ! move this line to debug/rerun parts of this command file +$! +$!- compile modules into the library ------------------------------------------ +$! +$ lib_command = "LIBRARY/REPLACE/LOG XML_LIBDIR:LIBXML.OLB" +$ link_command = "" +$! +$ write sys$output "" +$ write sys$output "Building modules into the LIBXML object library" +$ write sys$output "" +$! +$ s_no = 0 +$ sources = f$edit(sources,"COMPRESS") +$! +$ source_loop: +$! +$ next_source = f$element (S_no," ",sources) +$ if next_source.nes."" .and. next_source.nes." " +$ then +$! +$ on error then goto ERROR_OUT +$ on control_y then goto ERROR_OUT +$ call build 'next_source' +$ s_no = s_no + 1 +$ goto source_loop +$! +$ endif +$! +$!- now build self-test programs ---------------------------------------------- +$! +$! these programs are built as ordinary modules into XML_LIBDIR:LIBXML.OLB. Here they +$! are built a second time with /DEFINE=(STANDALONE) in which case a main() +$! is also compiled into the module +$ +$ lib_command = "" +$ link_command = "LINK" +$! +$ library/compress XML_LIBDIR:LIBXML.OLB +$ purge XML_LIBDIR:LIBXML.OLB +$! +$ write sys$output "" +$ write sys$output "Building STANDALONE self-test programs" +$ write sys$output "" +$! +$ call build NANOFTP.C /DEFINE=(STANDALONE) +$ call build NANOHTTP.C /DEFINE=(STANDALONE) +$ call build TRIONAN.C /DEFINE=(STANDALONE) +$! +$!- now build main and test programs ------------------------------------------ +$! +$! +$ lib_command = "" +$ link_command = "LINK" +$! +$ write sys$output "" +$ write sys$output "Building main programs and test programs" +$ write sys$output "" +$! +$ p_no = 0 +$ all_progs = bin_progs + " " + noinst_PROGRAMS +$ all_progs = f$edit(all_progs,"COMPRESS") +$! +$ prog_loop: +$! +$ next_prog = f$element (p_no," ",all_progs) +$ if next_prog.nes."" .and. next_prog.nes." " +$ then +$! +$ on error then goto ERROR_OUT +$ on control_y then goto ERROR_OUT +$ call build 'next_prog'.c +$ p_no = p_no + 1 +$ goto prog_loop +$! +$ endif +$! +$!- Th-th-th-th-th-that's all folks! ------------------------------------------ +$! +$ goto exit_here ! move this line to avoid parts of this command file +$ exit_here: +$! +$ exit +$ goto exit_out +$! +$! +$EXIT_OUT: +$! +$ purge/nolog [.debug] +$ set default 'saved_default +$ exit 'exit_status +$! +$ +$ERROR_OUT: +$ exit_status = $status +$ write sys$output "''f$message(exit_status)'" +$ goto EXIT_OUT +$! +$!- the BUILD subroutine. Compile then insert into library or link as required +$! +$BUILD: subroutine +$ on warning then goto EXIT_BUILD +$ source_file = p1 +$ name = f$parse(source_file,,,"NAME") +$ object_file = f$parse("[.debug].OBJ",name,,,"SYNTAX_ONLY") +$! +$!- compile +$! +$ write sys$output "''cc_command'''p2'/object=''object_file' ''source_file'" +$ cc_command'p2' /object='object_file 'source_file' +$! +$!- insert into library if command defined +$! +$ if lib_command.nes."" then lib_command 'object_file' +$! +$!- link module if command defined +$ if link_command.nes."" +$ then +$ opts = "" +$ if debug then opts = "/DEBUG" +$ write sys$output "''link_command'''opts' ''object_file',XML_LIBDIR:libxml.olb/library" +$ link_command'opts' 'object_file',- + XML_LIBDIR:libxml.olb/library +$ endif +$! +$EXIT_BUILD: +$ exit $status +$! +$endsubroutine diff --git a/vms/config.vms b/vms/config.vms new file mode 100755 index 0000000..b898bf1 --- /dev/null +++ b/vms/config.vms @@ -0,0 +1,218 @@ +/* config.h */ + +#define VMS 1 + +/* Define if you have the strftime function. */ +#define HAVE_STRFTIME 1 + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +#undef PACKAGE +#undef VERSION +#undef HAVE_LIBZ +#undef HAVE_LIBM +#undef HAVE_ISINF +#if defined(_IEEE_FP) && (__CRTL_VER >= 60200000) +# define HAVE_ISNAN 1 +#endif +#undef HAVE_LIBHISTORY +#undef HAVE_LIBREADLINE + +/* Define if you have the class function. */ +#undef HAVE_CLASS + +/* Define if you have the finite function. */ +#undef HAVE_FINITE + +/* Define if you have the fp_class function. */ +#define HAVE_FP_CLASS 1 + +/* Define if you have the fpclass function. */ +#undef HAVE_FPCLASS + +/* Define if you have the isnand function. */ +#undef HAVE_ISNAND + +/* Define if you have the localtime function. */ +#define HAVE_LOCALTIME 1 + +/* Define if you have the snprintf function. */ +#undef HAVE_SNPRINTF + +/* Define if you have the strdup function. */ +#define HAVE_STRDUP 1 + +/* Define if you have the strerror function. */ +#define HAVE_STRERROR 1 + +/* Define if you have the strftime function. */ +#define HAVE_STRFTIME 1 + +/* Define if you have the strndup function. */ +#undef HAVE_STRNDUP + +/* Define if you have the <arpa/inet.h> header file. */ +#undef HAVE_ARPA_INET_H + +/* Define if you have the <ctype.h> header file. */ +#define HAVE_CTYPE_H 1 + +/* Define if you have the <dirent.h> header file. */ +#define HAVE_DIRENT_H 1 + +/* Define if you have the <errno.h> header file. */ +#define HAVE_ERRNO_H 1 + +/* Define if you have the <fcntl.h> header file. */ +#define HAVE_FCNTL_H 1 + +/* Define if you have the <float.h> header file. */ +#define HAVE_FLOAT_H 1 + +/* Define if you have the <fp_class.h> header file. */ +#define HAVE_FP_CLASS_H 1 + +/* Define if you have the <ieeefp.h> header file. */ +#undef HAVE_IEEEFP_H + +/* Define if you have the <malloc.h> header file. */ +#undef HAVE_MALLOC_H + +/* Define if you have the <math.h> header file. */ +#define HAVE_MATH_H 1 + +/* Define if you have the <nan.h> header file. */ +#undef HAVE_NAN_H + +/* Define if you have the <ndir.h> header file. */ +#undef HAVE_NDIR_H + +/* Define if you have the <netdb.h> header file. */ +#define HAVE_NETDB_H 1 + +/* Define if you have the <netinet/in.h> header file. */ +#undef HAVE_NETINET_IN_H + +/* Define if you have the <stdarg.h> header file. */ +#define HAVE_STDARG_H 1 + +/* Define if you have the <stdlib.h> header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the `strftime' function. */ +#define HAVE_STRFTIME 1 + +/* Define to 1 if you have the <strings.h> header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the <string.h> header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strndup' function. */ +#undef HAVE_STRNDUP + +/* Define if you have the <sys/dir.h> header file. */ +#undef HAVE_SYS_DIR_H + +/* Define if you have the <sys/mman.h> header file. */ +#undef HAVE_SYS_MMAN_H + +/* Define if you have the <sys/ndir.h> header file. */ +#undef HAVE_SYS_NDIR_H + +/* Define if you have the <sys/select.h> header file. */ +#undef HAVE_SYS_SELECT_H + +/* Define if you have the <sys/socket.h> header file. */ +#define HAVE_SYS_SOCKET_H 1 + +/* Define if you have the <sys/stat.h> header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define if you have the <sys/time.h> header file. */ +#undef HAVE_SYS_TIME_H + +/* Define if you have the <sys/types.h> header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define if you have the <time.h> header file. */ +#define HAVE_TIME_H 1 + +/* Define if you have the <unistd.h> header file. */ +#define HAVE_UNISTD_H 1 + +/* Define if you have the <zlib.h> header file. */ +#undef HAVE_ZLIB_H + +/* Define if you have the inet library (-linet). */ +#undef HAVE_LIBINET + +/* Define if you have the nsl library (-lnsl). */ +#undef HAVE_LIBNSL + +/* Define if you have the socket library (-lsocket). */ +#undef HAVE_LIBSOCKET + +/* Name of package */ +#undef PACKAGE + +/* Version number of package */ +#undef VERSION + +/* Up to this point this is just a hard-wired version of + * config.h. After this will be anything else we need + * that is VMS-specific. + */ + +/* For best results, compile with /NAMES=(SHORTENED), which requires + * DEC C 5.7 or later. For older compilers, the shortened names below + * are the same ones the mangler generates in C 5.7 and later. These may + * work, though there will probably be some conflicts with redefinitions + * in globals.h. + */ + +#if __DECC_VER < 57000000 +/* 0 1 2 3 0 1 2 3 + * 123456789012345678901234567890123456789 1234567890123456789012345678901 + */ +#define __xmlDoValidityCheckingDefaultValue __xmlDoValidityChecking3qad3pq$ +#define __xmlSubstituteEntitiesDefaultValue __xmlSubstituteEntities0pij13u$ +#define trio_locale_set_thousand_separator trio_locale_set_thousan259ikkk$ +#define xmlDoValidityCheckingDefaultValue xmlDoValidityCheckingDe1bcsei4$ +#define xmlParseBalancedChunkMemoryRecover xmlParseBalancedChunkMe1lu1e86$ +#define xmlParseElementChildrenContentDecl xmlParseElementChildren1mp6pcb$ +#define xmlParserInputBufferCreateFilename xmlParserInputBufferCre36lujn2$ +#define xmlRegisterDefaultInputCallbacks xmlRegisterDefaultInput3vin0cp$ +#define xmlRegisterDefaultOutputCallbacks xmlRegisterDefaultOutpu0q443dd$ +#define xmlSubstituteEntitiesDefaultValue xmlSubstituteEntitiesDe28k2c80$ +#define xmlUCSIsAlphabeticPresentationForms xmlUCSIsAlphabeticPrese2qr24s3$ +#define xmlUCSIsArabicPresentationFormsB xmlUCSIsArabicPresentat1gajvg8$ +#define xmlUCSIsArabicPresentationFormsA xmlUCSIsArabicPresentat3sq1bti$ +#define xmlUCSIsCJKCompatibilityIdeographsSupplement xmlUCSIsCJKCompatibilit0or40ki$ +#define xmlUCSIsCJKCompatibilityIdeographs xmlUCSIsCJKCompatibilit2nodmc5$ +#define xmlUCSIsCJKSymbolsandPunctuation xmlUCSIsCJKSymbolsandPu0a3i7ra$ +#define xmlUCSIsCJKUnifiedIdeographsExtensionA xmlUCSIsCJKUnifiedIdeog11ig3fd$ +#define xmlUCSIsCJKUnifiedIdeographsExtensionB xmlUCSIsCJKUnifiedIdeog3d22n2n$ +#define xmlUCSIsCombiningDiacriticalMarks xmlUCSIsCombiningDiacri3tj3nl8$ +#define xmlUCSIsCombiningMarksforSymbols xmlUCSIsCombiningMarksf3ftqd7s$ +#define xmlUCSIsEnclosedCJKLettersandMonths xmlUCSIsEnclosedCJKLett0nq67g4$ +#define xmlUCSIsHalfwidthandFullwidthForms xmlUCSIsHalfwidthandFul047l0a1$ +#define xmlUCSIsHighPrivateUseSurrogates xmlUCSIsHighPrivateUseS071kh83$ +#define xmlUCSIsIdeographicDescriptionCharacters xmlUCSIsIdeographicDesc1rovf8g$ +#define xmlUCSIsMathematicalAlphanumericSymbols xmlUCSIsMathematicalAlp2ag8r44$ +#define xmlUCSIsOpticalCharacterRecognition xmlUCSIsOpticalCharacte1juuh06$ +#define xmlUCSIsSuperscriptsandSubscripts xmlUCSIsSuperscriptsand3fi4eup$ +#define xmlUCSIsUnifiedCanadianAboriginalSyllabics xmlUCSIsUnifiedCanadian0lbvi9b$ +#define xmlValidCtxtNormalizeAttributeValue xmlValidCtxtNormalizeAt0q11n5f$ +#define xmlXPathRegisteredVariablesCleanup xmlXPathRegisteredVaria1uvs4uc$ + +#endif + +#define xmlBufferWriteChar xmlBufferWriteChar2 diff --git a/vms/diffs.vms b/vms/diffs.vms new file mode 100644 index 0000000..5402910 --- /dev/null +++ b/vms/diffs.vms @@ -0,0 +1,192 @@ +-------------------------------------------------------------------------- +GLOBALS.C + +105a106 +> int xmlDoValidityCheckingDefaultValue = 0; +111,121c112,113 +< #if defined(VMS) || defined(__VMS) +< #define PLATFORM_VMS +< /* int xmlDoValidityCheckingDefaultVal = 0; +< * int xmlSubstituteEntitiesDefaultVal = 0; +< */ +< #define xmlDoValidityCheckingDefaultValue xmlDoValidityCheckingDefaultVal +< #define xmlSubstituteEntitiesDefaultValue xmlSubstituteEntitiesDefaultVal +< #else +< int xmlDoValidityCheckingDefaultValue = 0; +< int xmlSubstituteEntitiesDefaultValue = 0; +< #endif +--- +> int xmlSubstituteEntitiesDefaultValue = 0; +> +289,291d280 +< #ifdef PLATFORM_VMS +< gs->xmlDoValidityCheckingDefaultVal = 0; +< #else +293,294d281 +< #endif +< +316,318d302 +< #ifdef PLATFORM_VMS +< gs->xmlSubstituteEntitiesDefaultVal = 0; +< #else +320d303 +< #endif +404,419c387,390 +< #ifdef PLATFORM_VMS +< extern int xmlDoValidityCheckingDefaultVal; +< #undef xmlDoValidityCheckingDefaultVal +< int * +< __xmlDoValidityCheckingDefVal(void) { +< if (IS_MAIN_THREAD) +< return (&xmlDoValidityCheckingDefaultVal); +< else +< return (&xmlGetGlobalState()->xmlDoValidityCheckingDefaultVal); +< } +< #define __xmlDoValidityCheckingDefaultValue __xmlDoValidityCheckingDefVal +< #else +< extern int xmlDoValidityCheckingDefaultValue; +< #undef xmlDoValidityCheckingDefaultValue +< int * +< __xmlDoValidityCheckingDefaultValue(void) { +--- +> extern int xmlDoValidityCheckingDefaultValue; +> #undef xmlDoValidityCheckingDefaultValue +> int * +> __xmlDoValidityCheckingDefaultValue(void) { +424,425c395 +< } +< #endif +--- +> } +577,592c547,550 +< #ifdef PLATFORM_VMS +< extern int xmlSubstituteEntitiesDefaultVal; +< #undef xmlSubstituteEntitiesDefaultVal +< int * +< __xmlSubsEntitiesDefaultValue(void) { +< if (IS_MAIN_THREAD) +< return (&xmlSubstituteEntitiesDefaultVal); +< else +< return (&xmlGetGlobalState()->xmlSubstituteEntitiesDefaultVal); +< } +< #define __xmlSubstituteEntitiesDefaultValue __xmlSubsEntitiesDefaultValue +< #else +< extern int xmlSubstituteEntitiesDefaultValue; +< #undef xmlSubstituteEntitiesDefaultValue +< int * +< __xmlSubstituteEntitiesDefaultValue(void) { +--- +> extern int xmlSubstituteEntitiesDefaultValue; +> #undef xmlSubstituteEntitiesDefaultValue +> int * +> __xmlSubstituteEntitiesDefaultValue(void) { +597,598c555 +< } +< #endif +--- +> } + + +-------------------------------------------------------------------------- +TRIO.C +113,116d112 +< #if defined(VMS) || defined(__VMS) +< # include <unistd.h> +< #endif /* Platform is VMS */ +< +123d118 +< + + +-------------------------------------------------------------------------- +GLOBALS.H +78,86c78,79 +< #if defined(VMS) || defined(__VMS) +< int xmlSubstituteEntitiesDefaultVal; /* 31 character name limit */ +< int xmlDoValidityCheckingDefaultVal; +< #define xmlSubstituteEntitiesDefaultValue xmlSubstituteEntitiesDefaultVal +< #define xmlDoValidityCheckingDefaultValue xmlDoValidityCheckingDefaultVal +< #else +< int xmlSubstituteEntitiesDefaultValue; +< int xmlDoValidityCheckingDefaultValue; +< #endif +--- +> int xmlSubstituteEntitiesDefaultValue; +> int xmlDoValidityCheckingDefaultValue; +211,226c204,209 +< #if defined(VMS) || defined(__VMS) +< #ifdef LIBXML_THREAD_ENABLED +< extern int *__xmlDoValidityCheckingDefaultVal(void); +< #define xmlDoValidityCheckingDefaultVal \ +< (*(__xmlDoValidityCheckingDefaultVal())) +< #else +< LIBXML_DLL_IMPORT extern int xmlDoValidityCheckingDefaultVal; +< #endif +< #else +< #ifdef LIBXML_THREAD_ENABLED +< extern int *__xmlDoValidityCheckingDefaultValue(void); +< #define xmlDoValidityCheckingDefaultValue \ +< (*(__xmlDoValidityCheckingDefaultValue())) +< #else +< LIBXML_DLL_IMPORT extern int xmlDoValidityCheckingDefaultValue; +< #endif +--- +> #ifdef LIBXML_THREAD_ENABLED +> extern int *__xmlDoValidityCheckingDefaultValue(void); +> #define xmlDoValidityCheckingDefaultValue \ +> (*(__xmlDoValidityCheckingDefaultValue())) +> #else +> LIBXML_DLL_IMPORT extern int xmlDoValidityCheckingDefaultValue; +317,332c300,305 +< #if defined(VMS) || defined(__VMS) +< #ifdef LIBXML_THREAD_ENABLED +< extern int *__xmlSubsEntitiesDefaultValue(void); +< #define xmlSubsEntitiesDefaultValue \ +< (*(__xmlSubsEntitiesDefaultValue())) +< #else +< LIBXML_DLL_IMPORT extern int xmlSubsEntitiesDefaultValue; +< #endif +< #else +< #ifdef LIBXML_THREAD_ENABLED +< extern int *__xmlSubstituteEntitiesDefaultValue(void); +< #define xmlSubstituteEntitiesDefaultValue \ +< (*(__xmlSubstituteEntitiesDefaultValue())) +< #else +< LIBXML_DLL_IMPORT extern int xmlSubstituteEntitiesDefaultValue; +< #endif +--- +> #ifdef LIBXML_THREAD_ENABLED +> extern int *__xmlSubstituteEntitiesDefaultValue(void); +> #define xmlSubstituteEntitiesDefaultValue \ +> (*(__xmlSubstituteEntitiesDefaultValue())) +> #else +> LIBXML_DLL_IMPORT extern int xmlSubstituteEntitiesDefaultValue; + + +-------------------------------------------------------------------------- +XMLIO.H +79,82d78 +< #if defined(VMS) || defined(__VMS) +< void xmlRegisterDefInputCallbacks (void); +< #define xmlRegisterDefaultInputCallbacks xmlRegisterDefInputCallbacks +< #else +84d79 +< #endif +130,133d124 +< #if defined(VMS) || defined(__VMS) +< void xmlRegisterDefOutputCallbacks(void); +< #define xmlRegisterDefaultOutputCallbacks xmlRegisterDefOutputCallbacks +< #else +135,136d125 +< #endif +< + +-------------------------------------------------------------------------- +XPATHINTERNALS.H +433,436d432 +< #if defined(VMS) || defined(__VMS) +< void xmlXPathRegisteredVarsCleanup(xmlXPathContextPtr ctxt); +< #define xmlXPathRegisteredVariablesCleanup xmlXPathRegisteredVarsCleanup +< #else +438d433 +< #endif diff --git a/vms/readme.vms b/vms/readme.vms new file mode 100644 index 0000000..91dddeb --- /dev/null +++ b/vms/readme.vms @@ -0,0 +1,143 @@ +Issues in porting libxml to VMS +=============================== + +Here's a summary of the issues I encountered when building LIBXML under +VMS. There was some VMS support in the version I got, but it was a little +out of date with the result that some newer files had problems. + +I present this list "as is" to hopefully act as a guide to anyone having +problems in the future. + +That's it. Good luck! + +John A Fotheringham (jaf@jafsoft.com) +October 2001 + +Updated October 2002 by Craig A Berry (craigberry@mac.com) + +Installation kit +---------------- + +- File attributes. Having downloaded essentially a Unix distribution, some + of the file attributes weren't correct... especially those in the [.VMS] + subdirectory. In EDT you could see line feeds and carriage returns as + <LF><CR> etc. To correct this use the command + + $ set file <filespec> /attr=rfm=stm + + This sets the record format to be "stream". Other variants may be used + instead depending on how you got the files onto your system. Files will + look okay in an EDT editor once the attributes are set. Without + this the command file may not run correctly, since it may be interpreted + as a single line. + +- VMS-specific files are in a [.VMS] directory. If you've found this file + then you already know this :-) This directory contains + + BUILD_LIBXML.COM - a build command file, which I've radically re-worked + CONFIG.VMS - a configuration file to replace config.h + +- Don't execute BUILD_LIBXML.COM until you've done all the following + + - read these notes + - reviewed the configuration section of BUILD_LIBXML.COM, and in particular + updated the module lists in line with MAKEFILE + - identified the location of the include files, so that you can manually + set the LIBXML logical if need be. + - re-read these notes :-p + + instructions for all these steps are below. + +- the file [.vms]config.vms is used in lieu of a Configure-generated config.h. + This file contains a number of define statements that identify the software + options required under VMS + +- The include files are in a [.INCLUDE.LIBXML] subdirectory. You need + a logical "libxml" to point to this so that include statements of the + form + + #include <libxml/parser.h> + + will work correctly. The source files are mostly two levels above this + directory, although there are some .h files there as well. + +- The command file BUILD_LIBXML.COM will do the following + + - setup some logicals + - set def to the source directory + - compile modules and place them into a LIBXML.OLB library + - compile and link a number of self-test programs + - compile and link a number of utilities and test programs + - set def back to the original directory (i.e. if it fails you might not be + where you started :-) + + before running this command file review the configuration segment at + the top. In particular compare the lists of modules with those in the + most recent version of the Unix MAKEFILE. Instructions are contained + in the command file itself. + + The command file will attempt to set two logicals + + - xml_srcdir. The directory containing the source files + - libxml. The include file directory. + + It attempts this by looking for modules globals.c and globals.h in + nearby directories. If this logic fails, you'll need to manually define + these logicals. + + +The TRIO package +---------------- +- A sub-package TRIO is used to provide some functions not naturally available + under VMS. These include support for infinite and undefined numbers, + and specialised print functions like "snprintf" + + I had to make several changes to trionan.c in discussion with the author + (hopefully these are now included in the distro, so I won't list them here) + + To build this software we need to add + + /IEEE_MODE=UNDERFLOW_TO_ZERO/FLOAT=IEEE + + to the compile command for xpath.c and trio.c, and to any main program + that uses this functionality. BUILD_LIBXML.COM should do this for you. + +- to build in trio support you need the define WITH_TRIO to be set. This + is done by default for VMS in xmlversion.h + + +Compiler and linker errors +-------------------------- +- the DEC C compiler may produce a number of warnings when compiling the + C code. These include + + - Implicit function warnings. These indicate functions whose type is + not defined in a .h file. This will probably only happen if your + configuration is not correct (e.g. for "snprintf" if you haven't + edited xmlversion.h to set WITH_TRIO + + - uninitialised variables. Not usually a problem. You can solve this + by editing the code to initialise the variables affected + +Changes made to the codebase +---------------------------- +- I changed all dummy declarations in trio.c to be + + va_list dummy = NULL; + + to prevent compiler whinge in TRIO.C about uninitialised variables + +- I had to add the following to nanoftp.c + + #if defined(VMS) || defined(__VMS) + #define SOCKLEN_T unsigned int + #endif + + This matches similar lines already added to nanohttp.c + +- Several variables and function names exceed the 31 character limit + of the VMS linker. The solution adopted has been to use the + /NAMES=SHORTENED compiler option, which requires DEC/Compaq C 5.7 + or later. For a complete list of the names that needed shortening + and the short names generated by the compiler, see [.vms]config.vms. + |