[Freeswitch-svn] [commit] r4289 - freeswitch/trunk/src

Freeswitch SVN anthm at freeswitch.org
Thu Feb 15 14:20:14 EST 2007


Author: anthm
Date: Thu Feb 15 14:20:14 2007
New Revision: 4289

Modified:
   freeswitch/trunk/src/switch_ivr.c
   freeswitch/trunk/src/switch_xml.c

Log:
xml formatting for call detail

Modified: freeswitch/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr.c	(original)
+++ freeswitch/trunk/src/switch_ivr.c	Thu Feb 15 14:20:14 2007
@@ -4921,6 +4921,7 @@
 		x_caller_profile,
 		x_caller_extension,
 		x_times,
+		time_tag,
 		x_application,
 		x_callflow;
 	char tmp[512];
@@ -5004,29 +5005,33 @@
 
 
 		if (caller_profile->times) {
-			if (!(x_times = switch_xml_add_child_d(x_callflow, "created_time", cf_off++))) {
+			int t_off = 0;
+			if (!(x_times = switch_xml_add_child_d(x_callflow, "times", cf_off++))) {
+				goto error;
+			}
+			if (!(time_tag = switch_xml_add_child_d(x_times, "created_time", t_off++))) {
 				goto error;
 			}
 			snprintf(tmp, sizeof(tmp), "%"APR_TIME_T_FMT, caller_profile->times->created);
-			switch_xml_set_txt_d(x_times, tmp);
+			switch_xml_set_txt_d(time_tag, tmp);
 
-			if (!(x_times = switch_xml_add_child_d(x_callflow, "answered_time", cf_off++))) {
+			if (!(time_tag = switch_xml_add_child_d(x_times, "answered_time", t_off++))) {
 				goto error;
 			}
 			snprintf(tmp, sizeof(tmp), "%"APR_TIME_T_FMT, caller_profile->times->answered);
-			switch_xml_set_txt_d(x_times, tmp);
+			switch_xml_set_txt_d(time_tag, tmp);
 
-			if (!(x_times = switch_xml_add_child_d(x_callflow, "hangup_time", cf_off++))) {
+			if (!(time_tag = switch_xml_add_child_d(x_times, "hangup_time", t_off++))) {
 				goto error;
 			}
 			snprintf(tmp, sizeof(tmp), "%"APR_TIME_T_FMT, caller_profile->times->hungup);
-			switch_xml_set_txt_d(x_times, tmp);
+			switch_xml_set_txt_d(time_tag, tmp);
 
-			if (!(x_times = switch_xml_add_child_d(x_callflow, "transfer_time", cf_off++))) {
+			if (!(time_tag = switch_xml_add_child_d(x_times, "transfer_time", t_off++))) {
 				goto error;
 			}
 			snprintf(tmp, sizeof(tmp), "%"APR_TIME_T_FMT, caller_profile->times->transferred);
-			switch_xml_set_txt_d(x_times, tmp);
+			switch_xml_set_txt_d(time_tag, tmp);
 		}
 
 		caller_profile = caller_profile->next;

Modified: freeswitch/trunk/src/switch_xml.c
==============================================================================
--- freeswitch/trunk/src/switch_xml.c	(original)
+++ freeswitch/trunk/src/switch_xml.c	Thu Feb 15 14:20:14 2007
@@ -1223,9 +1223,12 @@
     // parent character content up to this tag
     *s = switch_xml_ampencode(txt + start, xml->off - start, s, len, max, 0);
 
-    while (*len + strlen(xml->name) + 5 + (strlen(XML_INDENT) * (*count)) > *max) // reallocate s
+    while (*len + strlen(xml->name) + 5 + (strlen(XML_INDENT) * (*count)) + 1 > *max) // reallocate s
         *s = realloc(*s, *max += SWITCH_XML_BUFSIZE);
 
+	if (*(*s+(*len)-1) == '>') {
+		*len += sprintf(*s + *len, "\n"); // indent
+	}
 	for (lcount = 0; lcount < *count; lcount++) {
 		*len += sprintf(*s + *len, "%s", XML_INDENT); // indent
 	}
@@ -1253,7 +1256,7 @@
         *len += sprintf(*s + *len, "\"");
     }
 
-    *len += sprintf(*s + *len, (xml->child || xml->txt) ? ">" : "/>\n");
+	*len += sprintf(*s + *len, (xml->child || xml->txt) ? ">" : "/>\n");
 
 	if (xml->child) {
 		(*count)++;
@@ -1268,9 +1271,11 @@
 
 
 	if (xml->child || xml->txt) {
-		//for (lcount = 0; lcount < *count; lcount++) {
-		//*len += sprintf(*s + *len, "%s", XML_INDENT); // indent
-		//}
+		if (*(*s+(*len)-1) == '\n') {
+			for (lcount = 0; lcount < *count; lcount++) {
+				*len += sprintf(*s + *len, "%s", XML_INDENT); // indent
+			}
+		}
 		*len += sprintf(*s + (*len), "</%s>\n", xml->name); // close tag
 	}
 



More information about the Freeswitch-svn mailing list