[svn-commits] bkruse: branch group/appdocsxml r128598 - in /team/group/appdocsxml: ./ main/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Jul 7 09:03:37 CDT 2008


Author: bkruse
Date: Mon Jul  7 09:03:36 2008
New Revision: 128598

URL: http://svn.digium.com/view/asterisk?view=rev&rev=128598
Log:
Yay!

It totally works now with the multi-language
support. I feel really stupid going about this
when the app/func register functions are NULL
safe for description and synopsis, instead of
allocating space for a (None) String and passing
it back. Well, it works now!

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=128598&r1=128597&r2=128598
==============================================================================
--- team/group/appdocsxml/Makefile (original)
+++ team/group/appdocsxml/Makefile Mon Jul  7 09:03:36 2008
@@ -669,7 +669,7 @@
 		echo "astrundir => $(ASTVARRUNDIR)" ; \
 		echo "astlogdir => $(ASTLOGDIR)" ; \
 		echo "" ; \
-		echo ";[options]" ; \
+		echo "[options]" ; \
 		echo ";verbose = 3" ; \
 		echo ";debug = 3" ; \
 		echo ";alwaysfork = yes ; same as -F at startup" ; \

Modified: team/group/appdocsxml/main/pbx.c
URL: http://svn.digium.com/view/asterisk/team/group/appdocsxml/main/pbx.c?view=diff&rev=128598&r1=128597&r2=128598
==============================================================================
--- team/group/appdocsxml/main/pbx.c (original)
+++ team/group/appdocsxml/main/pbx.c Mon Jul  7 09:03:36 2008
@@ -439,6 +439,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>
+
+ ***/
 
 /*** DOCUMENTATION
 	<application name="Answer" language="en">
@@ -2603,6 +2621,14 @@
 	if (!acf)
 		return -1;
 
+	/* Let's try to find it in the Documentation XML */
+	/*
+	if (!acf->desc && !acf->synopsis) {
+		acf->synopsis =  syn->child->value.opaque;
+		acf->desc = desc->child->value.opaque;
+	}
+	*/
+
 	AST_RWLIST_WRLOCK(&acf_root);
 	if ((cur = AST_RWLIST_REMOVE(&acf_root, acf, acflist)))
 		ast_verb(2, "Unregistered custom function %s\n", cur->name);
@@ -2611,53 +2637,41 @@
 	return cur ? 0 : -1;
 }
 
-/* XXX Really not sure if I did this memory allocation correctly... */
 static char *ast_mxml_get_field(const char *type, const char *name, const char *var) {
 	
-	char *fail = malloc(6);
 	mxml_node_t *node, *lang_node, *ret;
 
-	node = lang_node = ret = NULL;
-
-	sprintf(fail, "%s", "(None)");	
+	lang_node = NULL;
 
 	if(ast_strlen_zero(type) || ast_strlen_zero(name)) {
 		ast_log(LOG_WARNING, "Tried to look in XML tree with faulty values.\n");
-		return fail;
+		return NULL;
 	}
 
 	/* not fully initted yet */
-	if(documentation_tree == NULL || docs == NULL) {
+	if(documentation_tree == NULL) {
 		ast_log(LOG_DEBUG, "Parsing XML Tree Error\n");
-		return fail; 
-	}
-
-	ast_log(LOG_WARNING, "Searching For: name:'%s' type:'%s' var:'%s'\n", name, type, var);
-	//ret = mxmlFindElement(docs, docs, type, "name", name, MXML_DESCEND);
-	//ret = mxmlFindElement(documentation_tree, documentation_tree, "application", "name", "Dial", MXML_DESCEND);
-
-	if (!ret) {
-		ast_log(LOG_WARNING, "Cannot find Documentation name:'%s' type:'%s' var:'%s'\n", name, type, var);
-		return fail;
-	}
-
-//	lang_node = mxmlFindElement(node, documentation_tree, type, "language", documentation_language, MXML_DESCEND);	
-	
+		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(node, documentation_tree, var, NULL, NULL, MXML_NO_DESCEND);
-//	} else {
-//		ret = mxmlFindElement(lang_node, documentation_tree, var, NULL, NULL, MXML_NO_DESCEND);
-//	}
+	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);
+	}
+
+	ast_log(LOG_ERROR, "Ok, documentation_language is '%s' and lang_node is %s null\n", documentation_language, (lang_node) ? "NOT":"");
 
 	if (!ret || !ret->child) {
 		ast_log(LOG_WARNING, "Cannot find varible '%s' in tree '%s'\n", name, var);
-		return fail;
-	}
-
-	ast_log(LOG_ERROR, "a) '%s' b) '%s' type: '%s', name:'%s', var:'%s'\n", ret->value.opaque, ret->child->value.opaque, type, name, var);
-	/* Dont need fail anymore */
-	free(fail);
+		return NULL;
+	}
+
 	return ret->child->value.opaque;
 }
 
@@ -2674,8 +2688,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");
 
 	}
 
@@ -4422,6 +4436,8 @@
 static int ast_load_documentation(void) {
 
 	FILE *xmldoc;
+	//const char *test;
+	//mxml_node_t *node, *tmp;
 
 	/* For now, I just throw away cdata */
 	xmldoc = fopen(FILE_XML_DOC, "r");
@@ -4443,13 +4459,6 @@
 	}
 
 	fclose(xmldoc);
-
-	docs = mxmlFindElement(documentation_tree, documentation_tree, "docs", NULL, NULL, MXML_DESCEND);
-
-	if(!docs || !docs->child) {
-		ast_log(LOG_ERROR, "Could not find the docs element in the XML documentation.\n");
-		return 1;
-	}
 
 	return 0;
 }




More information about the svn-commits mailing list