From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from localhost (fantadrom.bsd.lv [local]) by fantadrom.bsd.lv (OpenSMTPD) with ESMTPA id 7b7d7bc8 for ; Fri, 22 Mar 2019 10:38:39 -0500 (EST) Date: Fri, 22 Mar 2019 10:38:39 -0500 (EST) X-Mailinglist: mandoc-source Reply-To: source@mandoc.bsd.lv MIME-Version: 1.0 From: schwarze@mandoc.bsd.lv To: source@mandoc.bsd.lv Subject: docbook2mdoc: Delete the isparent() validation function. X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Message-ID: 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