source@mandoc.bsd.lv
 help / color / mirror / Atom feed
From: schwarze@mandoc.bsd.lv
To: source@mandoc.bsd.lv
Subject: docbook2mdoc: Delete the isparent() validation function.
Date: Fri, 22 Mar 2019 10:38:39 -0500 (EST)	[thread overview]
Message-ID: <e3fc9027784507ee@fantadrom.bsd.lv> (raw)

Log Message:
-----------
Delete the isparent() validation function.

The DocBook language is totally ill-designed, a gigantic accretion
of arbitrary elements without any kind of discernible design or
cohesion, with an absurdly large number of arbitrary and pointless
rules of what is allowed to nest inside which other elements.
So attempting to validate DocBook input against the totally crazy
specification makes no sense whatsoever, and even less so because
we are certainly not encouraging anybody to write new or maintain
existing DocBook documents.  The whole point of having a DocBook
parser is to be able to parse legacy documents and convert them to
a sane language, so it is utterly irrelevant whether the input is
considered valid or invalid by some idiotic standard.

This deletion allows substantial simplification of the code
and will massively speed up development in the future.

Kristaps@ says that i can move forward with development without
asking for individual OKs.

Modified Files:
--------------
    docbook2mdoc:
        README
        docbook2mdoc.c
        extern.h
        rules.c

Revision Data
-------------
Index: docbook2mdoc.c
===================================================================
RCS file: /home/cvs/mdocml/docbook2mdoc/docbook2mdoc.c,v
retrieving revision 1.47
retrieving revision 1.48
diff -Ldocbook2mdoc.c -Ldocbook2mdoc.c -u -p -r1.47 -r1.48
--- docbook2mdoc.c
+++ docbook2mdoc.c
@@ -327,20 +327,8 @@ xml_elem_start(void *arg, const XML_Char
 			XML_GetCurrentColumnNumber(ps->xml));
 		ps->stop = 1;
 		return;
-	} else if (NODE_ROOT == ps->node && NODE_REFENTRY != node) {
+	} else if (NODE_ROOT == ps->node && NODE_REFENTRY != node)
 		return;
-	} else if ( ! isparent(node, ps->node)) {
-		fprintf(stderr, "%s:%zu:%zu: bad parent \"%s\" "
-			"of node \"%s\"\n",
-			ps->fname, XML_GetCurrentLineNumber(ps->xml),
-			XML_GetCurrentColumnNumber(ps->xml),
-			NULL == nodes[ps->node].name ?
-			"(none)" : nodes[ps->node].name,
-			NULL == nodes[node].name ?
-			"(none)" : nodes[node].name);
-		ps->stop = 1;
-		return;
-	}
 
 	if (NODE_INLINEEQUATION == node)
 		ps->flags |= PARSE_EQN;
Index: rules.c
===================================================================
RCS file: /home/cvs/mdocml/docbook2mdoc/rules.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -Lrules.c -Lrules.c -u -p -r1.25 -r1.26
--- rules.c
+++ rules.c
@@ -56,1334 +56,3 @@ isattrval(enum attrkey key, enum attrval
 	abort();
 	return(0);
 }
-
-/*
- * Look up whether "parent" is a valid parent for "node".
- * This is sucked directly from the DocBook specification: look at the
- * "children" and "parent" sections of each node.
- */
-int
-isparent(enum nodeid node, enum nodeid parent)
-{
-
-	switch (node) {
-	case (NODE_ROOT):
-		return(0);
-	case (NODE_ACRONYM):
-		switch (parent) {
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_ANCHOR):
-		/* We'll ignore this. */
-		return(1);
-	case (NODE_APPLICATION):
-		switch (parent) {
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFCLASS):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_ARG):
-		switch (parent) {
-		case (NODE_ARG):
-		case (NODE_CMDSYNOPSIS):
-		case (NODE_GROUP):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_CAUTION):
-		switch (parent) {
-		case (NODE_CAUTION):
-		case (NODE_ENTRY):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_LISTITEM):
-		case (NODE_NOTE):
-		case (NODE_ORDEREDLIST):
-		case (NODE_PARA):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_TIP):
-		case (NODE_VARIABLELIST):
-		case (NODE_WARNING):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_CITEREFENTRY):
-		switch (parent) {
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_CMDSYNOPSIS):
-		switch (parent) {
-		case (NODE_CAUTION):
-		case (NODE_ENTRY):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_LISTITEM):
-		case (NODE_ORDEREDLIST):
-		case (NODE_NOTE):
-		case (NODE_PARA):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_TIP):
-		case (NODE_VARIABLELIST):
-		case (NODE_WARNING):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_CODE):
-		switch (parent) {
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-		case (NODE_USERINPUT):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_COLSPEC):
-		switch (parent) {
-		case (NODE_TFOOT):
-		case (NODE_THEAD):
-		case (NODE_TGROUP):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_COMMAND):
-		switch (parent) {
-		case (NODE_CMDSYNOPSIS):
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-		case (NODE_USERINPUT):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_CONSTANT):
-		switch (parent) {
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_ULINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_USERINPUT):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_COPYRIGHT):
-		switch (parent) {
-		case (NODE_INFO):
-		case (NODE_REFENTRYINFO):
-		case (NODE_REFMETAINFO):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_DATE):
-		switch (parent) {
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_INFO):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYINFO):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_EMPHASIS):
-		switch (parent) {
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_ENTRY):
-		return(NODE_ROW == parent);
-	case (NODE_ENVAR):
-		switch (parent) {
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-		case (NODE_USERINPUT):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_FIELDSYNOPSIS):
-		switch (parent) {
-		case (NODE_CAUTION):
-		case (NODE_ENTRY):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_LISTITEM):
-		case (NODE_NOTE):
-		case (NODE_ORDEREDLIST):
-		case (NODE_PARA):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_TIP):
-		case (NODE_VARIABLELIST):
-		case (NODE_WARNING):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_FILENAME):
-		switch (parent) {
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-		case (NODE_USERINPUT):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_FUNCDEF):
-		return(NODE_FUNCPROTOTYPE == parent);
-	case (NODE_FUNCPROTOTYPE):
-		return(NODE_FUNCSYNOPSIS == parent);
-	case (NODE_FUNCSYNOPSIS):
-		switch (parent) {
-		case (NODE_CAUTION):
-		case (NODE_ENTRY):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_LISTITEM):
-		case (NODE_ORDEREDLIST):
-		case (NODE_NOTE):
-		case (NODE_PARA):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_TIP):
-		case (NODE_VARIABLELIST):
-		case (NODE_WARNING):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_FUNCSYNOPSISINFO):
-		return(NODE_FUNCSYNOPSIS == parent);
-	case (NODE_FUNCTION):
-		switch (parent) {
-		case (NODE_CODE):
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCDEF):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_GROUP):
-		switch (parent) {
-		case (NODE_ARG):
-		case (NODE_CMDSYNOPSIS):
-		case (NODE_GROUP):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_HOLDER):
-		switch (parent) {
-		case (NODE_COPYRIGHT):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_INFO):
-		switch (parent) {
-		case (NODE_CAUTION):
-		case (NODE_CMDSYNOPSIS):
-		case (NODE_FUNCSYNOPSIS):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_INFORMALTABLE):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_NOTE):
-		case (NODE_ORDEREDLIST):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_REFENTRY):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TABLE):
-		case (NODE_VARIABLELIST):
-		case (NODE_WARNING):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_INFORMALEQUATION):
-		switch (parent) {
-		case (NODE_CAUTION):
-		case (NODE_ENTRY):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_LISTITEM):
-		case (NODE_NOTE):
-		case (NODE_ORDEREDLIST):
-		case (NODE_PARA):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_VARIABLELIST):
-		case (NODE_WARNING):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_INLINEEQUATION):
-		switch (parent) {
-		case (NODE_APPLICATION):
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_ITEMIZEDLIST):
-		switch (parent) {
-		case (NODE_CAUTION):
-		case (NODE_ENTRY):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_LISTITEM):
-		case (NODE_NOTE):
-		case (NODE_ORDEREDLIST):
-		case (NODE_PARA):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_TIP):
-		case (NODE_VARIABLELIST):
-		case (NODE_WARNING):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_LINK):
-	case (NODE_ULINK): /* Synonyms. */
-		switch (parent) {
-		case (NODE_ACRONYM):
-		case (NODE_APPLICATION):
-		case (NODE_ARG):
-		case (NODE_CODE):
-		case (NODE_COMMAND):
-		case (NODE_CONSTANT):
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_ENVAR):
-		case (NODE_FILENAME):
-		case (NODE_FUNCDEF):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_FUNCTION):
-		case (NODE_HOLDER):
-		case (NODE_LINK):
-		case (NODE_LITERAL):
-		case (NODE_MANVOLNUM):
-		case (NODE_MODIFIER):
-		case (NODE_OPTION):
-		case (NODE_PARA):
-		case (NODE_PARAMDEF):
-		case (NODE_PARAMETER):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_PROMPT):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFMISCINFO):
-		case (NODE_REFNAME):
-		case (NODE_REPLACEABLE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TRADEMARK):
-		case (NODE_TYPE):
-		case (NODE_ULINK):
-		case (NODE_USERINPUT):
-		case (NODE_VARNAME):
-		case (NODE_WORDASWORD):
-		case (NODE_YEAR):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_LISTITEM):
-		switch (parent) {
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_ORDEREDLIST):
-		case (NODE_VARLISTENTRY):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_LITERAL):
-		switch (parent) {
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-		case (NODE_USERINPUT):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_MANVOLNUM):
-		switch (parent) {
-		case (NODE_CITEREFENTRY):
-		case (NODE_REFMETA):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_MML_MATH):
-		switch (parent) {
-		case (NODE_INFORMALEQUATION):
-		case (NODE_INLINEEQUATION):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_MML_MFENCED):
-	case (NODE_MML_MFRAC):
-	case (NODE_MML_MI):
-	case (NODE_MML_MN):
-	case (NODE_MML_MO):
-	case (NODE_MML_MROW):
-	case (NODE_MML_MSUB):
-	case (NODE_MML_MSUP):
-		switch (parent) {
-		case (NODE_MML_MATH):
-		case (NODE_MML_MFENCED):
-		case (NODE_MML_MFRAC):
-		case (NODE_MML_MI):
-		case (NODE_MML_MN):
-		case (NODE_MML_MO):
-		case (NODE_MML_MROW):
-		case (NODE_MML_MSUB):
-		case (NODE_MML_MSUP):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_MODIFIER):
-		switch (parent) {
-		case (NODE_CODE):
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FIELDSYNOPSIS):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_ULINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_NOTE):
-		switch (parent) {
-		case (NODE_CAUTION):
-		case (NODE_ENTRY):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_LISTITEM):
-		case (NODE_NOTE):
-		case (NODE_ORDEREDLIST):
-		case (NODE_PARA):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_TIP):
-		case (NODE_VARIABLELIST):
-		case (NODE_WARNING):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_OPTION):
-		switch (parent) {
-		case (NODE_ARG):
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_GROUP):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-		case (NODE_USERINPUT):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_ORDEREDLIST):
-		switch (parent) {
-		case (NODE_CAUTION):
-		case (NODE_ENTRY):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_LISTITEM):
-		case (NODE_ORDEREDLIST):
-		case (NODE_NOTE):
-		case (NODE_PARA):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_TIP):
-		case (NODE_VARIABLELIST):
-		case (NODE_WARNING):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_PARA):
-		switch (parent) {
-		case (NODE_CAUTION):
-		case (NODE_ENTRY):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_LISTITEM):
-		case (NODE_NOTE):
-		case (NODE_ORDEREDLIST):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_TIP):
-		case (NODE_VARIABLELIST):
-		case (NODE_WARNING):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_PARAMDEF):
-		return(NODE_FUNCPROTOTYPE == parent);
-	case (NODE_PARAMETER):
-		switch (parent) {
-		case (NODE_CODE):
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PARAMDEF):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-		case (NODE_USERINPUT):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_PROGRAMLISTING):
-		switch (parent) {
-		case (NODE_CAUTION):
-		case (NODE_ENTRY):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_LISTITEM):
-		case (NODE_ORDEREDLIST):
-		case (NODE_NOTE):
-		case (NODE_PARA):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_TIP):
-		case (NODE_VARIABLELIST):
-		case (NODE_WARNING):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_PROMPT):
-		switch (parent) {
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-		case (NODE_USERINPUT):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_QUOTE):
-		switch (parent) {
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_REFCLASS):
-		return(parent == NODE_REFNAMEDIV);
-	case (NODE_REFDESCRIPTOR):
-		return(parent == NODE_REFNAMEDIV);
-	case (NODE_REFENTRY):
-		return(parent == NODE_ROOT);
-	case (NODE_REFENTRYINFO):
-		return(parent == NODE_REFENTRY);
-	case (NODE_REFENTRYTITLE):
-		switch (parent) {
-		case (NODE_CITEREFENTRY):
-		case (NODE_REFMETA):
-			return(1);
-		default:
-			break;
-		}
-	case (NODE_REFMETA):
-		return(parent == NODE_REFENTRY);
-	case (NODE_REFMETAINFO):
-		return(parent == NODE_REFMETA);
-	case (NODE_REFMISCINFO):
-		return(parent == NODE_REFMETA);
-	case (NODE_REFNAME):
-		return(parent == NODE_REFNAMEDIV);
-	case (NODE_REFNAMEDIV):
-		return(parent == NODE_REFENTRY);
-	case (NODE_REFPURPOSE):
-		return(parent == NODE_REFNAMEDIV);
-	case (NODE_REFSECT1):
-		return(parent == NODE_REFENTRY);
-	case (NODE_REFSECT2):
-		switch (parent) {
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_REFSECT1):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_REFSECT3):
-		return(parent == NODE_REFSECT2);
-	case (NODE_REFSECTION):
-		switch (parent) {
-		case (NODE_REFENTRY):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_REFSYNOPSISDIV):
-		return(parent == NODE_REFENTRY);
-	case (NODE_REPLACEABLE):
-		switch (parent) {
-		case (NODE_ACRONYM):
-		case (NODE_APPLICATION):
-		case (NODE_ARG):
-		case (NODE_CODE):
-		case (NODE_COMMAND):
-		case (NODE_CONSTANT):
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_ENVAR):
-		case (NODE_FILENAME):
-		case (NODE_FUNCDEF):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_FUNCTION):
-		case (NODE_GROUP):
-		case (NODE_HOLDER):
-		case (NODE_LINK):
-		case (NODE_LITERAL):
-		case (NODE_MANVOLNUM):
-		case (NODE_MODIFIER):
-		case (NODE_OPTION):
-		case (NODE_PARA):
-		case (NODE_PARAMDEF):
-		case (NODE_PARAMETER):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_PROMPT):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFMISCINFO):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_REPLACEABLE):
-		case (NODE_SCREEN):
-		case (NODE_SGMLTAG):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_TRADEMARK):
-		case (NODE_TYPE):
-		case (NODE_ULINK):
-		case (NODE_USERINPUT):
-		case (NODE_VARNAME):
-		case (NODE_WORDASWORD):
-		case (NODE_YEAR):
-		default:
-			return(1);
-		}
-		return(0);
-	case (NODE_ROW):
-		switch (parent) {
-		case (NODE_TBODY):
-		case (NODE_TFOOT):
-		case (NODE_THEAD):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_SBR):
-		switch (parent) {
-		case (NODE_ARG):
-		case (NODE_CMDSYNOPSIS):
-		case (NODE_GROUP):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_SCREEN):
-		switch (parent) {
-		case (NODE_CAUTION):
-		case (NODE_ENTRY):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_LISTITEM):
-		case (NODE_ORDEREDLIST):
-		case (NODE_NOTE):
-		case (NODE_PARA):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_TIP):
-		case (NODE_VARIABLELIST):
-		case (NODE_WARNING):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_SGMLTAG):
-		switch (parent) {
-		case (NODE_APPLICATION):
-		case (NODE_CODE):
-		case (NODE_COMMAND):
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FILENAME):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_FUNCTION):
-		case (NODE_LINK):
-		case (NODE_LITERAL):
-		case (NODE_OPTION):
-		case (NODE_PARA):
-		case (NODE_PARAMETER):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_USERINPUT):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_STRUCTNAME):
-		switch (parent) {
-		case (NODE_CODE):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_FUNCTION):
-		case (NODE_OPTION):
-		case (NODE_PARA):
-		case (NODE_PARAMETER):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SYNOPSIS):
-		case (NODE_TITLE):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_SYNOPSIS):
-		switch (parent) {
-		case (NODE_CAUTION):
-		case (NODE_ENTRY):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_LISTITEM):
-		case (NODE_ORDEREDLIST):
-		case (NODE_NOTE):
-		case (NODE_PARA):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_TIP):
-		case (NODE_WARNING):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_INFORMALTABLE):
-		/* FALLTHROUGH */
-	case (NODE_TABLE):
-		switch (parent) {
-		case (NODE_CAUTION):
-		case (NODE_ENTRY):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_LISTITEM):
-		case (NODE_ORDEREDLIST):
-		case (NODE_NOTE):
-		case (NODE_PARA):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_TIP):
-		case (NODE_VARIABLELIST):
-		case (NODE_WARNING):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_TBODY):
-		return(NODE_TGROUP == parent);
-	case (NODE_TFOOT):
-		return(NODE_TGROUP == parent);
-	case (NODE_TGROUP):
-		switch (parent) {
-		case (NODE_INFORMALTABLE):
-		case (NODE_TABLE):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_THEAD):
-		return(NODE_TGROUP == parent);
-	case (NODE_TITLE):
-		switch (parent) {
-		case (NODE_INFO):
-		case (NODE_INFORMALTABLE):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_ORDEREDLIST):
-		case (NODE_REFENTRYINFO):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_TABLE):
-		case (NODE_VARIABLELIST):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_TERM):
-		return(NODE_VARLISTENTRY == parent);
-	case (NODE_TEXT):
-		return(1);
-	case (NODE_TIP):
-		switch (parent) {
-		case (NODE_CAUTION):
-		case (NODE_ENTRY):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_LISTITEM):
-		case (NODE_NOTE):
-		case (NODE_ORDEREDLIST):
-		case (NODE_PARA):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_TIP):
-		case (NODE_VARIABLELIST):
-		case (NODE_WARNING):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_TRADEMARK):
-		switch (parent) {
-		case (NODE_ACRONYM):
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_ULINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_TYPE):
-		switch (parent) {
-		case (NODE_CODE):
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FIELDSYNOPSIS):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_ULINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_USERINPUT):
-		switch (parent) {
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-		case (NODE_USERINPUT):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_VARIABLELIST):
-		switch (parent) {
-		case (NODE_CAUTION):
-		case (NODE_ENTRY):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_ORDEREDLIST):
-		case (NODE_NOTE):
-		case (NODE_PARA):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_TIP):
-		case (NODE_VARIABLELIST):
-		case (NODE_WARNING):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_VARNAME):
-		switch (parent) {
-		case (NODE_CODE):
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FIELDSYNOPSIS):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_VARLISTENTRY):
-		return (NODE_VARIABLELIST == parent);
-	case (NODE_WARNING):
-		switch (parent) {
-		case (NODE_CAUTION):
-		case (NODE_ENTRY):
-		case (NODE_ITEMIZEDLIST):
-		case (NODE_LISTITEM):
-		case (NODE_NOTE):
-		case (NODE_ORDEREDLIST):
-		case (NODE_PARA):
-		case (NODE_REFSECT1):
-		case (NODE_REFSECT2):
-		case (NODE_REFSECT3):
-		case (NODE_REFSECTION):
-		case (NODE_REFSYNOPSISDIV):
-		case (NODE_TIP):
-		case (NODE_VARIABLELIST):
-		case (NODE_WARNING):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_WORDASWORD):
-		switch (parent) {
-		case (NODE_EMPHASIS):
-		case (NODE_ENTRY):
-		case (NODE_FUNCSYNOPSISINFO):
-		case (NODE_LINK):
-		case (NODE_PARA):
-		case (NODE_PROGRAMLISTING):
-		case (NODE_QUOTE):
-		case (NODE_REFDESCRIPTOR):
-		case (NODE_REFENTRYTITLE):
-		case (NODE_REFNAME):
-		case (NODE_REFPURPOSE):
-		case (NODE_SCREEN):
-		case (NODE_SYNOPSIS):
-		case (NODE_TERM):
-		case (NODE_TITLE):
-		case (NODE_ULINK):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE_YEAR):
-		switch (parent) {
-		case (NODE_COPYRIGHT):
-			return(1);
-		default:
-			break;
-		}
-		return(0);
-	case (NODE__MAX):
-		break;
-	}
-
-	abort();
-	return(0);
-}
-
Index: README
===================================================================
RCS file: /home/cvs/mdocml/docbook2mdoc/README,v
retrieving revision 1.2
retrieving revision 1.3
diff -LREADME -LREADME -u -p -r1.2 -r1.3
--- README
+++ README
@@ -14,25 +14,6 @@ For these, you will have to look at 4.5 
 
 Add the alpha-ordered node (NODE_FOO) to extern.h.
 
-Next, add rules.c isparent() rule.  This is the hard part.  First,
-create a top-level switch statement for NODE_FOO.  Create a white-list
-of switch cases beneath that corresponding to each "These elements
-contain foo":
-
- switch (parent) {
- case (NODE_BAR):
- case (NODE_BAZ):
-  return(1);
- default:
-  break;
- }
- return(0);
-
-Next, go through the "The following elements occur in foo" and add a
-"case (NODE_FOO)" to each of those elements' switches.
-
-Now the hard work is finished!
-
 Next, add the name and whether it admits text to docbook2mdoc.c's
 "nodes" structure array.
 
Index: extern.h
===================================================================
RCS file: /home/cvs/mdocml/docbook2mdoc/extern.h,v
retrieving revision 1.25
retrieving revision 1.26
diff -Lextern.h -Lextern.h -u -p -r1.25 -r1.26
--- extern.h
+++ extern.h
@@ -136,7 +136,6 @@ __BEGIN_DECLS
 
 int isattrkey(enum nodeid node, enum attrkey key);
 int isattrval(enum attrkey key, enum attrval val);
-int isparent(enum nodeid node, enum nodeid parent);
 
 __END_DECLS
 
--
 To unsubscribe send an email to source+unsubscribe@mandoc.bsd.lv

                 reply	other threads:[~2019-03-22 15:38 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e3fc9027784507ee@fantadrom.bsd.lv \
    --to=schwarze@mandoc.bsd.lv \
    --cc=source@mandoc.bsd.lv \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).