Nico:
Hi. Yes, I did successfully build the Expat parser and XML::Expat as
well. Once built they work fine.
In addition to the changes you mention below, you must also change the
Expat code itself, renaming the function:
XML_SetExternalEntityRefHandlerArg()
to something else, e.g. XML_SetExtEntityRefHdlrArg(). The reason is
that when the DEC compiler truncates to 31 characters, it will make it
"XML_SetExternalEntityRefHandler()", which clashes with a different
function of the same name.
Once that is done, you will find that the .XS module also creates a
bunch of stub functions which are not unique due to truncation. You
will basically need to take the .XS file and truncate every function
name manually, until the DEC C compiler stops complaining about
too-long symbols. This is necessary because when the shared library is
bootstrapped and you start calling functions, it will try to match up
the function name (a perl string, exceeding 31 characters) with a
corresponding name in the library's symbol table, and it won't find
it. I just slashed-and-burned everything in the .XS which was longer
than 24 or so characters, and it then worked.
I attach for your reference our .XS file, from XML::Parser version
2.27. You will see things like XML_SetExternalEntityRefHandler() to
something more sane, like XML_SetEERefHandler() or some such thing.
Note you must change every reference to that name and not just the
declaration (obviously).
One last note: When you finish compiling and it starts to fail tests,
whining about badly formed XML, check to see if the test program is
doing a "binmode()" on the test XML file. If it is, comment out that
line -- "binmode()" on VMS is WAAAYYY different than on other systems.
Good luck, and let me know when you are stuck, as there is no point in
both of us suffering the same pain.
Regards,
David Hansen
______________________________ Reply Separator _________________________________
Subject: XML::Parser on VMS
Author: NVerwer ([EMAIL PROTECTED]) at unix,mime
Date: 01/04/01 10:07 AM
Dear David, Craig,
On the vmsperl newsgroup I found that you have both installed XML::Parser
and XML::Parser::Expat on VMS, with some degree of success. I am trying to
do this myself, on OpenVMS 7.2, using Perl 5.6.0. However, I have not been
able to build XML::Parser, and would like to ask you for some help.
I have patched File::Spec::VMS.pm as indicated in the newsgroup.
I have not patched MM_VMS, as this appears to be okay under Perl 5.6.0.
I use cc/names=truncated
Apparently, I should also change some symbols in the expat.xs files. Do you
have a list of these?
Thanks for any help you can provide!
Best regards,
Nico Verwer
[EMAIL PROTECTED]
expat.xs
Visit our website at http://www.ubswarburg.com
This message contains confidential information and is intended only
for the individual named. If you are not the named addressee you
should not disseminate, distribute or copy this e-mail. Please
notify the sender immediately by e-mail if you have received this
e-mail by mistake and delete this e-mail from your system.
E-mail transmission cannot be guaranteed to be secure or error-free
as information could be intercepted, corrupted, lost, destroyed,
arrive late or incomplete, or contain viruses. The sender therefore
does not accept liability for any errors or omissions in the contents
of this message which arise as a result of e-mail transmission. If
verification is required please request a hard-copy version. This
message is provided for informational purposes and should not be
construed as a solicitation or offer to buy or sell any securities or
related financial instruments.