[svn-commits] bkruse: branch group/appdocsxml r128636 - /team/group/appdocsxml/main/pbx.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Jul 7 11:26:15 CDT 2008


Author: bkruse
Date: Mon Jul  7 11:26:13 2008
New Revision: 128636

URL: http://svn.digium.com/view/asterisk?view=rev&rev=128636
Log:
Ok, now it really works :)

Modified:
    team/group/appdocsxml/main/pbx.c

Modified: team/group/appdocsxml/main/pbx.c
URL: http://svn.digium.com/view/asterisk/team/group/appdocsxml/main/pbx.c?view=diff&rev=128636&r1=128635&r2=128636
==============================================================================
--- team/group/appdocsxml/main/pbx.c (original)
+++ team/group/appdocsxml/main/pbx.c Mon Jul  7 11:26:13 2008
@@ -337,7 +337,7 @@
 static unsigned int hashtab_hash_labels(const void *obj);
 static void __ast_internal_context_destroy( struct ast_context *con);
 #ifdef XML_DOCUMENTATION
-mxml_node_t *documentation_tree = NULL, *docs = NULL;
+mxml_node_t *documentation_tree = NULL;
 static char *ast_mxml_get_field(const char *type, const char *name, const char *var); 
 void _mxml_error(const char *cb);
 #endif
@@ -2639,9 +2639,10 @@
 
 static char *ast_mxml_get_field(const char *type, const char *name, const char *var) {
 	
-	mxml_node_t *lang_node, *ret;
-
-	lang_node = NULL;
+	const char *tmp = NULL;
+	mxml_node_t *node, *ret;
+
+	node = ret = NULL;
 
 	if(ast_strlen_zero(type) || ast_strlen_zero(name)) {
 		ast_log(LOG_WARNING, "Tried to look in XML tree with faulty values.\n");
@@ -2654,15 +2655,18 @@
 		return NULL; 
 	}
 
-	docs = mxmlFindElement(documentation_tree, documentation_tree, type, "name", name, MXML_DESCEND);
-
-	lang_node = mxmlFindElement(docs, documentation_tree, NULL, "language", documentation_language, MXML_DESCEND);
-
-	/* Could not find language, use the default one without a language */
-	if (!lang_node) {
-		ret = mxmlFindElement(docs, documentation_tree, var, NULL, NULL, MXML_DESCEND);
-	} else {
-		ret = mxmlFindElement(lang_node, documentation_tree, var, NULL, NULL, MXML_DESCEND);
+	for (node = mxmlFindElement(documentation_tree, documentation_tree, type, "name", name, MXML_DESCEND); node != NULL && node->child != NULL; node = mxmlFindElement(node, documentation_tree, type, "name", name, MXML_DESCEND)) {
+		tmp = mxmlElementGetAttr(node, "language");
+		if (!strcmp(tmp, documentation_language)) {
+			ret = mxmlFindElement(node, documentation_tree, var, NULL, NULL, MXML_DESCEND_FIRST);
+			break;
+		}
+	}
+
+	/* If we still could not find the language, chose the first one found (english) */
+	if (!ret) {
+		node = mxmlFindElement(documentation_tree, documentation_tree, type, "name", name, MXML_DESCEND);
+		ret = mxmlFindElement(node, documentation_tree, var, NULL, NULL, MXML_DESCEND);
 	}
 
 	if (!ret || !ret->child) {
@@ -2686,8 +2690,8 @@
 	/* Let's try to find it in the Documentation XML */
 	if (ast_strlen_zero(acf->desc) && ast_strlen_zero(acf->synopsis)) {
 
-		//acf->synopsis = ast_mxml_get_field("function", acf->name, "synopsis");
-		//acf->desc = ast_mxml_get_field("function", acf->name, "description");
+		acf->synopsis = ast_mxml_get_field("function", acf->name, "synopsis");
+		acf->desc = ast_mxml_get_field("function", acf->name, "description");
 
 	}
 




More information about the svn-commits mailing list