diff options
author | Eliel C. Sardanons <eliels@gmail.com> | 2009-05-15 13:23:37 +0000 |
---|---|---|
committer | Eliel C. Sardanons <eliels@gmail.com> | 2009-05-15 13:23:37 +0000 |
commit | 77c41d700eb96bb2e977020467f6a7d15698b669 (patch) | |
tree | b9653187c3ba04da9f13fe662d1cc996ac8986d4 | |
parent | d1e0b113433ec90a9b6057b3b425a9ad67e57a0a (diff) |
Allow to specify an enumlist inside an enum.
It was not possible to use an enumlist inside an enum:
<enumlist>
<enum name="aa">
<enumlist>
...
</enumlist>
</enum>
</enumlist>
Now we will be able to insert as many levels as we want.
(closes issue #15112)
Reported by: lmadsen
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@194635 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r-- | doc/appdocsxml.dtd | 2 | ||||
-rw-r--r-- | main/xmldoc.c | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/doc/appdocsxml.dtd b/doc/appdocsxml.dtd index 8ac6ac587..ba0ef2726 100644 --- a/doc/appdocsxml.dtd +++ b/doc/appdocsxml.dtd @@ -41,7 +41,7 @@ <!ATTLIST option hasparams CDATA ""> <!ELEMENT enumlist (enum+)> - <!ELEMENT enum (para|note|warning|parameter)*> + <!ELEMENT enum (para|note|warning|parameter|enumlist)*> <!ATTLIST enum name CDATA ""> <!ELEMENT argument (para|note|warning|variablelist|argument)*> diff --git a/main/xmldoc.c b/main/xmldoc.c index 2ddb20179..29d951ac5 100644 --- a/main/xmldoc.c +++ b/main/xmldoc.c @@ -60,6 +60,7 @@ struct documentation_tree { }; static char *xmldoc_get_syntax_cmd(struct ast_xml_node *fixnode, const char *name, int printname); +static int xmldoc_parse_enumlist(struct ast_xml_node *fixnode, const char *tabs, struct ast_str **buffer); /*! * \brief Container of documentation trees @@ -1400,6 +1401,9 @@ static int xmldoc_parse_enum(struct ast_xml_node *fixnode, const char *tabs, str { struct ast_xml_node *node = fixnode; int ret = 0; + char *optiontabs; + + ast_asprintf(&optiontabs, "%s ", tabs); for (node = ast_xml_node_get_children(node); node; node = ast_xml_node_get_next(node)) { if ((xmldoc_parse_para(node, (ret ? tabs : " - "), "\n", buffer))) { @@ -1407,7 +1411,12 @@ static int xmldoc_parse_enum(struct ast_xml_node *fixnode, const char *tabs, str } else if ((xmldoc_parse_specialtags(node, (ret ? tabs : " - "), "\n", buffer))) { ret = 1; } + + xmldoc_parse_enumlist(node, optiontabs, buffer); } + + ast_free(optiontabs); + return ret; } |