# -*- Perl -*-
# Support routines for dbtohtml
#
# $Id: dbtohtml.sup 2.11 2000/02/01 18:41:22 eray Exp $
#
#
##############################################################################
use vars qw($PROGNAME $VERSION);
if ($VERBOSE) {
my($VERSION) = '$Id: dbtohtml.sup 2.11 2000/02/01 18:41:22 eray Exp $'; # '
my($REQNAME) = (split(/\s+/, $VERSION))[1];
my($vers) = (split(/\s+/, $VERSION))[2];
print STDERR "$REQNAME version $vers.\n";
}
##############################################################################
require 'html.mkp';
require 'sparser.pl';
require 'sgmlesis.pl';
$PI_FILE = "";
$PI_CHAPTER = "";
$PI_CHAPTER_NUMBER = "";
$PI_CHAPTER_PAGE = "";
$HTML_EXT = ".htm";
%HTML_NAMES = ();
sub END {
# Update the bookfiles file
my($bak) = "$BOOKFILES~";
my(@sections) = &cfg_sections($bookfiles);
my($section, $newbf);
foreach $section (@sections) {
my($html_names) = &cfg($bookfiles, $section, 'html_names-new');
&cfg_delete ($bookfiles, $section, 'html_names-new');
&cfg_set ($bookfiles, $section, 'html_names', $html_names);
}
print STDERR "Updating $BOOKFILES..." if $VERBOSE;
&set_lock($LOCKFILE);
if (-f $bak) {
chmod (0664, $bak);
unlink ($bak);
}
$rc = system ("cp $BOOKFILES $bak");
chmod (0444, $bak);
$newbf = &mergecfg ($BOOKFILES, $bookfiles);
$rc = &printcfg($newbf, "$BOOKFILES.new", 0);
chmod(0444, "$BOOKFILES.new");
system ("mv -f $BOOKFILES.new $BOOKFILES");
print STDERR "done...\n" if $VERBOSE;
&unset_delete_lock($LOCKFILE);
}
sub gen_empty_subclass {
my($superclass, $tag) = @_;
local($_) = '{
package __PACKAGE__;
@ISA = (\'__SUPERCLASS__\');
}';
s/__PACKAGE__/$tag/g;
s/__SUPERCLASS__/$superclass/g;
eval $_;
}
sub generate_tag_instances {
my(%supertypes) = (
'APPENDIX' => 'GENERIC_CHAPTER',
'ARTHEADER' => 'GENERIC_TITLED',
'BOOKBIBLIO' => 'GENERIC_TITLED',
'CALLOUTLIST' => 'GENERIC_LIST',
'CAUTION' => 'GENERIC_TITLED',
'CHAPTER' => 'GENERIC_CHAPTER',
'COMPUTEROUTPUT' => 'GENERIC_OBEYSPACES',
'DOCINFO' => 'GENERIC_TITLED',
'EXAMPLE' => 'GENERIC_TITLED',
'FIGURE' => 'GENERIC_TITLED',
'FORMALPARA' => 'GENERIC_TITLED',
'GLOSSARY' => 'GENERIC_CHAPTER',
'GLOSSDEF' => 'LISTITEM',
'GLOSSDIV' => 'GENERIC_TITLED',
'GLOSSENTRY' => 'VARLISTENTRY',
'GLOSSLIST' => 'GENERIC_LIST',
'IMPORTANT' => 'GENERIC_TITLED',
'INDEXTERM' => 'GENERIC_NOP',
'INFORMALTABLE' => 'GENERIC_TITLED',
'ITEMIZEDLIST' => 'GENERIC_LIST',
'LITERALLAYOUT' => 'GENERIC_OBEYSPACES',
'LOT' => 'GENERIC_TITLED',
'NOTE' => 'GENERIC_TITLED',
'ORDEREDLIST' => 'GENERIC_LIST',
'PART' => 'GENERIC_TITLED',
'PREFACE' => 'GENERIC_CHAPTER',
'PRIMARY' => 'GENERIC_INDEX_TERM',
'PROGRAMLISTING' => 'GENERIC_OBEYSPACES',
'REFERENCE' => 'GENERIC_TITLED',
'REFMETA' => 'GENERIC_NOP',
'REFNAME' => 'GENERIC_ASARG',
'REFPURPOSE' => 'GENERIC_ASARG',
'REFSECT1' => 'GENERIC_TITLED',
'REFSECT2' => 'GENERIC_TITLED',
'REFSECT3' => 'GENERIC_TITLED',
'SCREEN' => 'GENERIC_OBEYSPACES',
'SECONDARY' => 'GENERIC_INDEX_TERM',
'SECT1' => 'GENERIC_TITLED',
'SECT2' => 'GENERIC_TITLED',
'SECT3' => 'GENERIC_TITLED',
'SECT4' => 'GENERIC_TITLED',
'SECT5' => 'GENERIC_TITLED',
'SEE' => 'GENERIC_INDEX_TERM',
'SEEALSO' => 'GENERIC_INDEX_TERM',
'SERIESINFO' => 'GENERIC_TITLED',
'SIDEBAR' => 'GENERIC_TITLED',
'SYNOPSIS' => 'GENERIC_OBEYSPACES',
'TABLE' => 'GENERIC_TITLED',
'TERTIARY' => 'GENERIC_INDEX_TERM',
'TIP' => 'GENERIC_TITLED',
'TOC' => 'GENERIC_TITLED',
'VARIABLELIST' => 'GENERIC_LIST',
'WARNING' => 'GENERIC_TITLED'
);
my($tag);
foreach $tag (keys %supertypes) {
&gen_empty_subclass ($supertypes{$tag}, $tag)
if !&ispackage ($tag);
}
foreach $tag (keys %TAGS) {
&gen_empty_subclass ('GENERIC_INLINE', $tag)
if !&ispackage($tag);
}
}
sub sig_handler {
local($sig) = @_;
$SIG{'INT'} = 'IGNORE';
$SIG{'KILL'} = 'IGNORE';
$SIG{'HUP'} = 'IGNORE';
print STDERR "Terminated by SIG$sig...\n";
exit 101;
}
sub date {
my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
my(@months) = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
$year += 2000 if $year < 80;
$year += 1900 if $year < 2000;
return sprintf ("%02d%s%d", $mday, $months[$mon], $year);
}
########################################################################
sub PI_lb {
my($self, $markup, $args) = @_;
if (($self->{'PARENT'})->{'TAG'} ne 'TITLE') {
&WARNING("The processing instruction is only meaningful in titles.");
return undef;
}
$markup->output("<\001lb>");
return "";
}
sub PI_html {
my($self, $markup, $args) = @_;
$markup->output("<" . $args . ">");
return "";
}
sub PI_troff {
my($self, $markup, $args) = @_;
return "";
}
sub PI_troff_vlindent {
my($self, $markup, $args) = @_;
return "";
}
sub PI_basename {
my($self, $markup, $args) = @_;
$PI_BASENAME = $args;
return "";
}
sub PI_tex {
my($self, $markup, $args) = @_;
return "";
}
sub PI_source_file {
my($self, $markup, $args) = @_;
$PI_SOURCE_FILE = $args;
delete $HTML_NAMES{$PI_SOURCE_FILE};
return "";
}
sub PI_formatter_file {
my($self, $markup, $args) = @_;
$PI_FILE = $args;
return "";
}
sub PI_chapter {
my($self, $markup, $args) = @_;
$PI_CHAPTER = $args;
return undef;
}
sub PI_chapter_number {
my($self, $markup, $args) = @_;
$PI_CHAPTER_NUMBER = $args;
return undef;
}
sub PI_chapter_page {
my($self, $markup, $args) = @_;
$PI_CHAPTER_PAGE = $args;
return undef;
}
sub PI_page_number {
my($self, $markup, $args) = @_;
return "";
}
sub PI_part {
my($self, $markup, $args) = @_;
return "";
}
sub PI_figure_height {
my($self, $markup, $args) = @_;
$PI_FIGURE_HEIGHT = $args;
return undef;
}
sub PI_graphic_args {
my($self, $markup, $args) = @_;
$PI_GRAPHIC_ARGS = $args;
return undef;
}
sub PI_numbered_sections {
my($self, $markup, $args) = @_;
$PI_NUMBERED_SECTIONS = $args;
return undef;
}
sub PI_table_above_rule_space {
my($self, $markup, $args) = @_;
$TABLE_ABOVE_RULE_SPACE = $args . "p";
return undef;
}
sub PI_table_below_rule_space {
my($self, $markup, $args) = @_;
$TABLE_BELOW_RULE_SPACE = $args . "p";
return undef;
}
sub PI_table_frame_rule {
my($self, $markup, $args) = @_;
$TABLE_FRAME_RULE = $TABLE_SINGLE_HORIZ_RULE if $args =~ /^single/i;
$TABLE_FRAME_RULE = $TABLE_DOUBLE_HORIZ_RULE if $args =~ /^double/i;
return undef;
}
sub PI_no_hyphen {
my($self, $markup, $args) = @_;
$markup->text($args);
return "";
}
sub PI_bye {
my($self, $markup, $args) = @_;
$sgmlsESIS::IGNORE_ALL_MARKUP = 1;
return "";
}
1;