summaryrefslogtreecommitdiff
path: root/vms
diff options
context:
space:
mode:
Diffstat (limited to 'vms')
-rwxr-xr-xvms/build_libxml.com261
-rwxr-xr-xvms/config.vms218
-rw-r--r--vms/diffs.vms192
-rw-r--r--vms/readme.vms143
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.
+