[asterisk-commits] bkruse: branch group/appdocsxml r128339 - in /team/group/appdocsxml: ./ main/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Sat Jul 5 19:20:14 CDT 2008
Author: bkruse
Date: Sat Jul 5 19:20:14 2008
New Revision: 128339
URL: http://svn.digium.com/view/asterisk?view=rev&rev=128339
Log:
Sample documentation for Application
Check for NULL passed in register function, try
to find the values in the XML blob
Modified:
team/group/appdocsxml/Makefile
team/group/appdocsxml/main/pbx.c
Modified: team/group/appdocsxml/Makefile
URL: http://svn.digium.com/view/asterisk/team/group/appdocsxml/Makefile?view=diff&rev=128339&r1=128338&r2=128339
==============================================================================
--- team/group/appdocsxml/Makefile (original)
+++ team/group/appdocsxml/Makefile Sat Jul 5 19:20:14 2008
@@ -487,7 +487,7 @@
@echo "<?xml version="1.0" encoding="UTF-8"?>" > documentation.xml
@echo "<docs>" >> documentation.xml
@for x in $(MOD_SUBDIRS); do \
- echo -n " $$x " ; \
+ echo -n "$$x " ; \
for i in $$x/*.c; do \
$(AWK) -f build_tools/get_documentation $$i >> documentation.xml ; \
done ; \
Modified: team/group/appdocsxml/main/pbx.c
URL: http://svn.digium.com/view/asterisk/team/group/appdocsxml/main/pbx.c?view=diff&rev=128339&r1=128338&r2=128339
==============================================================================
--- team/group/appdocsxml/main/pbx.c (original)
+++ team/group/appdocsxml/main/pbx.c Sat Jul 5 19:20:14 2008
@@ -437,6 +437,24 @@
static int totalcalls;
static AST_RWLIST_HEAD_STATIC(acf_root, ast_custom_function);
+
+/*** DOCUMENTATION
+ <application name="Answer" language="en">
+ <synopsis>
+ Answer a channel if ringing.
+ </synopsis>
+ <description>
+ Answer([delay]): If the call has not been answered, this application will
+ answer it. Otherwise, it has no effect on the call. If a delay is specified,
+ Asterisk will wait this number of milliseconds before returning to
+ the dialplan after answering the call.
+ </description>
+ <option name="delay" required="false">
+ Delay that Asterisk will wait in milliseconds before returning to the dialplan after answering the call.
+ </option>
+ </application>
+
+ ***/
/*! \brief Declaration of builtin applications */
static struct pbx_builtin {
@@ -2601,6 +2619,41 @@
acf->mod = mod;
+ /* Let's try to find it in the Documentation XML */
+ if (!acf->desc || !acf->synopsis) {
+ mxml_node_t *node, *lang_node, *desc, *syn;
+ node = lang_node = desc = syn = NULL;
+ if (!documentation_tree) {
+ ast_log(LOG_WARNING, "Cannot get description or synopsis for Dialplan Function, Not Registering It.\n");
+ return -1;
+ }
+ node = mxmlFindElement(documentation_tree, documentation_tree, "function", "name", acf->name, MXML_DESCEND);
+
+ if (!node) {
+ ast_log(LOG_WARNING, "Cannot find Function Documentation for Func: '%s'\n", acf->name);
+ return -1;
+ }
+
+
+ lang_node = mxmlFindElement(node, documentation_tree, "application", "language", documentation_language, MXML_DESCEND);
+
+ /* Could not find language, use the default one without a language */
+ if (!lang_node) {
+ lang_node = node;
+ }
+
+ syn = mxmlFindElement(lang_node, documentation_tree, "synopsis", NULL, NULL, MXML_DESCEND);
+ desc = mxmlFindElement(lang_node, documentation_tree, "description", NULL, NULL, MXML_DESCEND);
+
+ if (!syn || !desc || !syn->child || !desc->child) {
+ ast_log(LOG_WARNING, "Cannot find Application description or synopsis for app: '%s'\n", app);
+ return -1;
+ }
+
+ acf->synopsis = syn->child->value.opaque;
+ acf->desc = desc->child->value.opaque;
+ }
+
AST_RWLIST_WRLOCK(&acf_root);
AST_RWLIST_TRAVERSE(&acf_root, cur, acflist) {
More information about the asterisk-commits
mailing list