Tags: patch Hi Laura, I have analyzed this problem and I believe that the solution is to modify the «validate» script of the validation system for .html files to use onsgmls. I attach the «validate-onsgmls» file and the diff file (validate.patch). To make the migration, the opensp package will need to be installed on the server. I hope this will solve the issue satisfactorily. Regards! I. De Marchi
--- validate 2017-09-04 18:29:47.672459787 +0200
+++ validate-onsgmls 2017-09-04 18:26:29.646745349 +0200
@@ -15,6 +15,12 @@
# Contributors:
# * Ville Skytta
#
+# 04/09/2017 Adapted by I. De Marchi for use with onsgmls
+# due to the replacement of the sp package by opensp
+# (see bug 846178 at
+# https://packages.qa.debian.org/j/jade/news/20161206T124612Z.html
+# for more info).
+#
#####################################################################
#####################################################################
@@ -36,7 +42,7 @@
#######################
# Version and identifier of this program
-my $VERSION = '1.1.3';
+my $VERSION = '1.1.3.1';
my $progname = "Offline HTMLHelp.com Validator, Version $VERSION
by Liam Quinn <liam\@htmlhelp.com>";
my $usage = "Usage: validate [OPTION] [FILE...]";
@@ -45,13 +51,13 @@
# SGML directory (catalog, DTDs, SGML declarations)
my $sgmlDir = '/usr/share/sgml/html/dtd';
-# Location of nsgmls executable
-my $nsgmlsLocation = '/usr/bin/nsgmls';
+# Location of onsgmls executable
+my $onsgmlsLocation = '/usr/bin/onsgmls';
-# nsgmls command line
+# onsgmls command line
# The SGML declaration and HTML document's filename will be appended
# to this string
-my $nsgmls = "$nsgmlsLocation -E0 -s";
+my $onsgmls = "$onsgmlsLocation";
# Catalog files for HTML/SGML and XHTML/XML
my $htmlCatalog = "/usr/share/sgml/html/entities/catalog";
@@ -221,13 +227,13 @@
push(@files, '-');
}
-# Check that nsgmls is available before we get too far
-unless (-e $nsgmlsLocation) {
- &error("$nsgmlsLocation is not installed");
+# Check that onsgmls is available before we get too far
+unless (-e $onsgmlsLocation) {
+ &error("$onsgmlsLocation is not installed");
exit $errors;
}
unless (-x _) {
- &error("$nsgmlsLocation is not executable");
+ &error("$onsgmlsLocation is not executable");
exit $errors;
}
@@ -307,7 +313,6 @@
my @errors; # queue of errors
my @externalErrors; # queue of errors in an external DTD
- my @warnings ;
my $lineAdjust = 0; # account for line number changes if we add a DOCTYPE
# Determine the level of HTML
@@ -381,25 +386,20 @@
}
# Run the validator
- open(NSGMLS, "$nsgmls $sgmlDecl{$htmlLevel} "
+
+ open(ONSGMLS, "$onsgmls $sgmlDecl{$htmlLevel} "
. "eFilename($fileToValidate) . " 2>&1 |")
- || die("Unable to execute $nsgmls: $!\n");
+ || die("Unable to execute $onsgmls: $!\n");
# Create a queue of errors
- while (<NSGMLS>) {
-
+ while (<ONSGMLS>) {
my @error = split(/:/, $_, 6);
if ($#error < 5) {
next;
- } elsif ($error[4] eq 'W') {
-
- push(@warnings, $_);
-
-
- } elsif ($error[4] eq 'E' || $error[4] eq 'X') {
+ } elsif ($error[4] eq 'E' || $error[4] eq 'X' ) {
push(@errors, $_);
@@ -417,7 +417,7 @@
}
}
- close(NSGMLS);
+ close(ONSGMLS);
# If we created a tempfile, unlink it
if (defined $tempname) {
@@ -425,9 +425,10 @@
}
# Report errors
- if ($#errors > -1 || $#externalErrors > -1) {
- &startErrors($file);
+ if ($#errors > 0 || $#externalErrors > -1 ) {
+
+ &startErrors($file);
foreach (@externalErrors) {
my @error = split(/:/, $_, 7);
@@ -454,17 +455,11 @@
$errorMsg .= superChomp($error[5]);
}
- &htmlError(stripLqNsgmlsGunk($errorMsg));
+ &htmlError(stripLqOnsgmlsGunk($errorMsg));
}
- foreach (@warnings) {
-
- my @warning = split(/:/, $_, 6);
-
- &htmlError(stripLqNsgmlsGunk($warnings[5]));
- }
-
foreach (@errors) {
+
my @error = split(/:/, $_, 6);
# I don't think this should happen, but I'm not sure
@@ -488,8 +483,7 @@
} else {
$errorMsg .= superChomp($error[4]);
}
-
- &htmlError(stripLqNsgmlsGunk($errorMsg));
+ &htmlError(stripLqOnsgmlsGunk($errorMsg));
}
} else {
@@ -538,9 +532,9 @@
return "\"$filename\"";
}
-# Clean the "{{foo}}" used in nsgmls error messages
+# Clean the "{{foo}}" used in onsgmls error messages
# The error message must be given as the first argument
-sub stripLqNsgmlsGunk {
+sub stripLqOnsgmlsGunk {
my $errorMsg = shift;
while ($errorMsg =~ m#\{\{"?(.+?)"?\}\}#gos) {
my $linkText = $1;
Attachment:
validate-onsgmls
Description: Binary data