2003-06-11 Mikael Hallendal <micke@codefactory.se>
authorhallski <hallski>
Wed, 11 Jun 2003 16:44:10 +0000
changeset 6 78fdf5d9eb1b
parent 5 54d788da138c
child 7 d8eae83450ac
2003-06-11 Mikael Hallendal <micke@codefactory.se> * docs/reference/loudmouth-sections.txt: Added new functions * loudmouth/lm-message-node.c: (_lm_message_node_new): Set node->raw_mode = FALSE. (lm_message_node_get_raw_mode): Added (lm_message_node_set_raw_mode): Added (lm_message_node_to_string): Don't escape if raw_mode == TRUE * loudmouth/lm-message-node.h: Added new functions.
ChangeLog
docs/reference/loudmouth-sections.txt
loudmouth/lm-message-node.c
loudmouth/lm-message-node.h
--- a/ChangeLog	Mon May 26 01:50:43 2003 +0000
+++ b/ChangeLog	Wed Jun 11 16:44:10 2003 +0000
@@ -1,3 +1,15 @@
+2003-06-11  Mikael Hallendal  <micke@codefactory.se>
+
+	* docs/reference/loudmouth-sections.txt: Added new functions
+
+	* loudmouth/lm-message-node.c: 
+	(_lm_message_node_new): Set node->raw_mode = FALSE.
+	(lm_message_node_get_raw_mode): Added
+	(lm_message_node_set_raw_mode): Added
+	(lm_message_node_to_string): Don't escape if raw_mode == TRUE
+	
+	* loudmouth/lm-message-node.h: Added new functions.
+
 2003-04-26  Mikael Hallendal  <micke@codefactory.se>
 
         * loudmouth.spec.in: Enable gtk-doc
--- a/docs/reference/loudmouth-sections.txt	Mon May 26 01:50:43 2003 +0000
+++ b/docs/reference/loudmouth-sections.txt	Wed Jun 11 16:44:10 2003 +0000
@@ -53,6 +53,8 @@
 lm_message_node_set_attribute
 lm_message_node_get_child
 lm_message_node_find_child
+lm_message_node_get_raw_mode
+lm_message_node_set_raw_mode
 lm_message_node_ref
 lm_message_node_unref
 lm_message_node_to_string
--- a/loudmouth/lm-message-node.c	Mon May 26 01:50:43 2003 +0000
+++ b/loudmouth/lm-message-node.c	Wed Jun 11 16:44:10 2003 +0000
@@ -92,6 +92,7 @@
         
         node->name       = g_ascii_strdown (name, -1);
         node->value      = NULL;
+	node->raw_mode   = FALSE;
         node->attributes = NULL;
         node->next       = NULL;
         node->prev       = NULL;
@@ -350,6 +351,37 @@
 }
 
 /**
+ * lm_message_node_get_raw_mode:
+ * @node: an #LmMessageNode
+ * 
+ * Checks if the nodes value should be sent as raw mode. 
+ *
+ * Return value: %TRUE if nodes value should be sent as is and %FALSE if the value will be escaped before sending.
+ **/
+gboolean
+lm_message_node_get_raw_mode (LmMessageNode *node)
+{
+	g_return_val_if_fail (node != NULL, FALSE);
+
+	return node->raw_mode;
+}
+
+/** 
+ * lm_message_node_set_raw_mode:
+ * @node: an #LmMessageNode
+ * @raw_mode: boolean specifying if node value should be escaped or not.
+ *
+ * Set @raw_mode to %TRUE if you don't want to escape the value. You need to make sure the value is valid XML yourself.
+ **/
+void
+lm_message_node_set_raw_mode (LmMessageNode *node, gboolean raw_mode)
+{
+	g_return_if_fail (node != NULL);
+
+	node->raw_mode = raw_mode;	
+}
+
+/**
  * lm_message_node_ref:
  * @node: an #LmMessageNode
  * 
@@ -430,10 +462,14 @@
 
 		str = ret_val;
 
-		tmp = g_markup_escape_text (node->value, -1);
-		ret_val = g_strconcat (str, tmp, NULL);
+		if (node->raw_mode == FALSE) {
+			tmp = g_markup_escape_text (node->value, -1);
+			ret_val = g_strconcat (str, tmp, NULL);
+			g_free (tmp);
+		} else {
+			ret_val = g_strconcat (str, node->value, NULL);
+		}
 		g_free (str);
-		g_free (tmp);
 	} 
 
 	for (child = node->children; child; child = child->next) {
--- a/loudmouth/lm-message-node.h	Mon May 26 01:50:43 2003 +0000
+++ b/loudmouth/lm-message-node.h	Wed Jun 11 16:44:10 2003 +0000
@@ -26,7 +26,6 @@
 #error "Only <loudmouth/loudmouth.h> can be included directly, this file may disappear or change contents."
 #endif
 
-
 #include <glib.h>
 
 typedef struct _LmMessageNode LmMessageNode;
@@ -34,6 +33,7 @@
 struct _LmMessageNode {
 	gchar      *name;
 	gchar      *value;
+	gboolean    raw_mode;
 
         LmMessageNode     *next;
         LmMessageNode     *prev;
@@ -63,6 +63,9 @@
 					       const gchar   *child_name);
 LmMessageNode *lm_message_node_find_child     (LmMessageNode *message_node,
 					       const gchar   *child_name);
+gboolean       lm_message_node_get_raw_mode   (LmMessageNode *node);
+void           lm_message_node_set_raw_mode   (LmMessageNode *node,
+					       gboolean       raw_mode);
 LmMessageNode *lm_message_node_ref            (LmMessageNode *node);
 void           lm_message_node_unref          (LmMessageNode *node);
 gchar *        lm_message_node_to_string      (LmMessageNode *node);