I wrote:
> I had a lot of difficulties (and finally gave up) with
> older versions of XML-Parser, but built the latest version 2.30
> (and a separate expat) with a lot less hassle.
Here are the diffs for expat 1.95.1 and XML::Parser 2.30 to build
successfully using DEC C 5.7 and MMK on my VMS VAX 6.2 system.
I hope that MicroCrap Outlook doesn't mangle the diffs.
[Start expat diff]
diff -udrN expat-1_95_1-orig/CONFIG.H expat-1_95_1/CONFIG.H
--- expat-1_95_1-orig/CONFIG.H Thu Jan 1 00:00:00 1970
+++ expat-1_95_1/CONFIG.H Sun Nov 26 04:03:03 2000
@@ -0,0 +1,64 @@
+/*================================================================
+** Copyright 2000, Clark Cooper
+** All rights reserved.
+**
+** This is free software. You are permitted to copy, distribute, or modify
+** it under the terms of the MIT/X license (contained in the COPYING file
+** with this distribution.)
+**
+**
+*/
+
+/* Define to empty if the keyword does not work. */
+#undef const
+
+/* Define if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to `long' if <sys/types.h> doesn't define. */
+#undef off_t
+
+/* Define to `unsigned' if <sys/types.h> doesn't define. */
+#undef size_t
+
+/* Define if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define if your processor stores words with the most significant
+ byte first (like Motorola and SPARC, unlike Intel and VAX). */
+#undef WORDS_BIGENDIAN
+
+/* Define if you have the bcopy function. */
+#undef HAVE_BCOPY
+
+/* Define if you have the getpagesize function. */
+#undef HAVE_GETPAGESIZE
+
+/* Define if you have the memmove function. */
+#define HAVE_MEMMOVE 1
+
+/* Define if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+#define XML_NS
+#define XML_DTD
+
+#ifdef WORDS_BIGENDIAN
+#define XML_BYTE_ORDER 21
+#else
+#define XML_BYTE_ORDER 12
+#endif
+
+#define XML_CONTEXT_BYTES 1024
+
+#ifndef HAVE_MEMMOVE
+#ifdef HAVE_BCOPY
+#define memmove(d,s,l) bcopy((s),(d),(l))
+#else
+#define memmove(d,s,l) ;punting on memmove;
+#endif
+
+#endif
diff -udrN expat-1_95_1-orig/LIB/DESCRIP.MMS expat-1_95_1/LIB/DESCRIP.MMS
--- expat-1_95_1-orig/LIB/DESCRIP.MMS Thu Jan 1 00:00:00 1970
+++ expat-1_95_1/LIB/DESCRIP.MMS Sun Nov 26 04:00:54 2000
@@ -0,0 +1,202 @@
+################################################################
+# Process this file with top-level configure script to produce Makefile
+#
+# Copyright 2000 Clark Cooper
+#
+# This file is part of EXPAT.
+#
+# EXPAT is free software; you can redistribute it and/or modify it
+# under the terms of the License (based on the MIT/X license) contained
+# in the file COPYING that comes with this distribution.
+#
+# EXPAT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN EXPAT.
+#
+#
+#
+# SHELL = @SHELL@
+#
+# srcdir = @srcdir@
+# top_srcdir = @top_srcdir@
+# VPATH = @srcdir@
+# prefix = @prefix@
+# exec_prefix = @exec_prefix@
+#
+# bindir = @bindir@
+# sbindir = @sbindir@
+# libexecdir = @libexecdir@
+# datadir = @datadir@
+# sysconfdir = @sysconfdir@
+# sharedstatedir = @sharedstatedir@
+# localstatedir = @localstatedir@
+# libdir = @libdir@
+# infodir = @infodir@
+# mandir = @mandir@
+# includedir = @includedir@
+# oldincludedir = /usr/include
+#
+# subdir = lib
+#
+# DESTDIR =
+#
+# top_builddir = ..
+#
+# INSTALL = @INSTALL@
+# INSTALL_PROGRAM = @INSTALL_PROGRAM@
+# INSTALL_SCRIPT = @INSTALL_SCRIPT@
+# INSTALL_DATA = @INSTALL_DATA@
+#
+# host_alias = @host_alias@
+# host_triplet = @host@
+# AS = @AS@
+# CC = @CC@
+# DLLTOOL = @DLLTOOL@
+# LIBTOOL = @LIBTOOL@
+# LN_S = @LN_S@
+# OBJDUMP = @OBJDUMP@
+# PACKAGE = @PACKAGE@
+PACKAGE = expat
+# RANLIB = @RANLIB@
+# VERSION = @VERSION@
+VERSION = 1.95.1
+#
+O = .obj
+OLB = .olb
+#
+# LIBRARY = libexpat.la
+LIBRARY = expat$(OLB)
+SOURCES = xmlparse.c xmltok.c xmlrole.c
+# OBJECTS = $(SOURCES:.c=.o)
+OBJECTS = xmlparse$(O) xmltok$(O) xmlrole$(O)
+# LTOBJECTS = $(SOURCES:.c=.lo)
+#
+TEMPLATES = xmltok_impl.c xmltok_ns.c
+APIHEADER = expat.h
+HEADERS = ascii.h iasciitab.h utf8tab.h xmltok.h asciitab.h latin1tab.h \
+ nametab.h xmldef.h xmlrole.h xmltok_impl.h
+#
+# mkinstalldirs = $(SHELL) $(top_srcdir)/conftools/mkinstalldirs
+# CONFIG_HEADER = ../config.h
+CONFIG_HEADER = [-]config.h
+# CONFIG_CLEAN_FILES =
+#
+# INCLUDES = -I$(srcdir) -I..
+INCLUDES = /INCLUDE=([],[-])
+# DEFS = @DEFS@ -DPACKAGE='"$(PACKAGE)"' -DVERSION='"$(PACKAGE)_$(VERSION)"'
+DEFS = /DEFINE=(PACKAGE="""$(PACKAGE)""",VERSION="""$(PACKAGE)_$(VERSION)""")
+# CPPFLAGS = @CPPFLAGS@
+# LDFLAGS = @LDFLAGS@
+# LIBS = @LIBS@
+# CFLAGS = @CFLAGS@
+#
+# LIBREVISION = @LIBREVISION@
+LIBREVISION = 0
+# LIBCURRENT = @LIBCURRENT@
+LIBCURRENT = 1
+# LIBAGE = @LIBAGE@
+LIBAGE = 0
+#
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
+# LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS)
+$(CFLAGS)
+# CCLD = $(CC)
+# LINK = $(LIBTOOL) --mode=link $(CCLD) -version-info
+$(LIBCURRENT):$(LIBREVISION):$(LIBAGE) $(CFLAGS) $(LDFLAGS) -o $@
+# DIST_COMMON = Makefile.in
+#
+#
+# DISTFILES = $(DIST_COMMON) $(SOURCES) $(TEMPLATES) $(APIHEADER) $(HEADERS)
+#
+# TAR = gtar
+# GZIP_ENV = --best
+#
+.FIRST :
+ IF F$SEARCH("$(LIBRARY)") .EQS. "" THEN $(LIBR) /CREATE /OBJECT $(LIBRARY)
+
+all : $(LIBRARY)
+#
+# .SUFFIXES : .c .lo .o
+.SUFFIXES : .c $(OLB) $(O)
+# .PHONY : all clean distclean maintainer-clean
+#
+# .c$(O) :
+# @echo '$(COMPILE) -c $<'; \
+# $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
+# @-cp .deps/$(*F).pp .deps/$(*F).P; \
+# tr ' ' '\012' < .deps/$(*F).pp \
+# | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
+# >> .deps/$(*F).P; \
+# rm .deps/$(*F).pp
+.c$(O) :
+ $(COMPILE) $(MMS$SOURCE)
+#
+# .c.lo :
+# @echo '$(LTCOMPILE) -c $<'; \
+# test -d .deps || mkdir .deps ; \
+# $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
+# @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
+# < .deps/$(*F).pp > .deps/$(*F).P; \
+# tr ' ' '\012' < .deps/$(*F).pp \
+# | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
+# >> .deps/$(*F).P; \
+# rm -f .deps/$(*F).pp
+.c$(OLB) :
+ $(COMPILE) $(MMS$SOURCE)
+ $(LIBR) /REPLACE $(MMS$TARGET) $(MMS$SOURCE_NAME)
+$(O)$(OLB) :
+ $(LIBR) /REPLACE $(MMS$TARGET) $(MMS$SOURCE_NAME)
+#
+# Makefile : $(srcdir)/Makefile.in $(top_builddir)/config.status
+# cd $(top_builddir) \
+# && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+#
+# $(top_builddir)/config.status : $(top_builddir)/configure
+# cd $(top_builddir) && $(MAKE) config.status
+#
+# $(top_builddir)/config.h : $(top_builddir)/config.hin
+# cd $(top_builddir) && $(MAKE) config.h
+#
+# clean :
+# rm -f $(LIBRARY) *.o *.lo *~
+# rm -rf .libs _libs .deps
+clean :
+ DELETE $(LIBRARY);*,*$(O);*
+#
+# distclean : clean
+# rm -f Makefile
+#
+# maintainer-clean : distclean
+#
+# install : $(LIBRARY) $(APIHEADER)
+# $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir)
+# $(LIBTOOL) --mode=install $(INSTALL) $(LIBRARY) $(DESTDIR)$(libdir)/$(LIBRARY)
+# $(INSTALL_DATA) $(APIHEADER) $(DESTDIR)$(includedir)
+#
+# uninstall :
+# $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(LIBRARY);
+# rm -f $(DESTDIR)$(libdir)/$(APIHEADER)
+#
+# $(LIBRARY) : $(LTOBJECTS)
+# $(LINK) -rpath $(libdir) $(LDFLAGS) $(LTOBJECTS)
+$(LIBRARY) : $(LIBRARY)( $(OBJECTS) )
+ $(LIBR) /COMPRESS $(MMS$TARGET)
+#
+# xmlparse.o \
+# xmlparse.lo : xmlparse.c expat.h xmlrole.h xmltok.h $(top_builddir)/config.h
+xmlparse$(O) : xmlparse.c expat.h xmlrole.h xmltok.h [-]config.h
+#
+# xmlrole.o \
+# xmlrole.lo : xmlrole.c ascii.h xmlrole.h $(top_builddir)/config.h
+xmlrole$(O) : xmlrole.c ascii.h xmlrole.h [-]config.h
+#
+# xmltok.o \
+# xmltok.lo : xmltok.c xmltok_impl.c xmltok_ns.c \
+# ascii.h asciitab.h iasciitab.h latin1tab.h nametab.h utf8tab.h \
+# xmltok.h xmltok_impl.h $(top_builddir)/config.h
+xmltok$(O) : xmltok.c xmltok_impl.c xmltok_ns.c \
+ ascii.h asciitab.h iasciitab.h latin1tab.h nametab.h utf8tab.h \
+ xmltok.h xmltok_impl.h [-]config.h
+
diff -udrN expat-1_95_1-orig/LIB/EXPAT.H expat-1_95_1/LIB/EXPAT.H
--- expat-1_95_1-orig/LIB/EXPAT.H Sun Oct 22 19:47:34 2000
+++ expat-1_95_1/LIB/EXPAT.H Sun Nov 26 04:08:26 2000
@@ -6,6 +6,15 @@
#ifndef XmlParse_INCLUDED
#define XmlParse_INCLUDED 1
+#ifdef __VMS
+/* 0 1 2 3 0 1 2 3
+ 1234567890123456789012345678901 1234567890123456789012345678901 */
+#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler
+#define XML_SetUnparsedEntityDeclHandler XML_SetUnparsedEntDeclHandler
+#define XML_SetStartNamespaceDeclHandler XML_SetStartNamespcDeclHandler
+#define XML_SetExternalEntityRefHandlerArg XML_SetExternalEntRefHandlerArg
+#endif
+
#include <stdlib.h>
#ifndef XMLPARSEAPI
diff -udrN expat-1_95_1-orig/LIB/XMLPARSE.C expat-1_95_1/LIB/XMLPARSE.C
--- expat-1_95_1-orig/LIB/XMLPARSE.C Sun Oct 22 19:47:34 2000
+++ expat-1_95_1/LIB/XMLPARSE.C Sun Nov 26 04:05:04 2000
@@ -6,6 +6,10 @@
static char RCSId[]
= "$Header: /cvsroot/expat/expat/lib/xmlparse.c,v 1.11 2000/10/22 19:20:23 coopercc
Exp $";
+#ifdef __VMS
+#include <string.h> /* memset(), memcpy() */
+#endif
+
#ifdef COMPILED_FROM_DSP
# include "winconfig.h"
# define XMLPARSEAPI __declspec(dllexport)
diff -udrN expat-1_95_1-orig/LIB/XMLROLE.H expat-1_95_1/LIB/XMLROLE.H
--- expat-1_95_1-orig/LIB/XMLROLE.H Sun Oct 22 19:47:34 2000
+++ expat-1_95_1/LIB/XMLROLE.H Sun Nov 26 04:08:26 2000
@@ -6,6 +6,12 @@
#ifndef XmlRole_INCLUDED
#define XmlRole_INCLUDED 1
+#ifdef __VMS
+/* 0 1 2 3 0 1 2 3
+ 1234567890123456789012345678901 1234567890123456789012345678901 */
+#define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt
+#endif
+
#include "xmltok.h"
#ifdef __cplusplus
[End expat diff]
[Start XML::Parser diff]
--- xml-parser-2_30-orig/EXPAT/EXPAT.XS Thu Oct 5 16:35:44 2000
+++ xml-parser-2_30/EXPAT/EXPAT.XS Sun Nov 26 04:20:13 2000
@@ -1023,7 +1023,7 @@
if (SvTRUE(ERRSV)) {
char *hold;
- int len;
+ unsigned int len;
POPs;
hold = SvPV(ERRSV, len);
[End XML::Parser diff]
Isn't that last bit nice? :-))
Hope it helps,
Martin
--
One OS to rule them all | Martin Vorlaender | VMS & WNT programmer
One OS to find them | work: [EMAIL PROTECTED]
One OS to bring them all | http://www.pdv-systeme.de/users/martinv/
And in the Darkness bind them.| home: [EMAIL PROTECTED]