aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--configure.in2
-rw-r--r--libsylph/xml.c35
-rw-r--r--libsylph/xml.h1
4 files changed, 41 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index efe2a3e3..a0e4aad2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-11-16
+
+ * libsylph/xml.[ch]: xml_escape_str(): added.
+
2010-11-12
* src/plugin_manager.c: fixed button order.
diff --git a/configure.in b/configure.in
index a79d8b4e..b3b86bea 100644
--- a/configure.in
+++ b/configure.in
@@ -10,7 +10,7 @@ MICRO_VERSION=0
INTERFACE_AGE=0
BINARY_AGE=0
EXTRA_VERSION=beta4
-BUILD_REVISION=1103
+BUILD_REVISION=1105
VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
dnl define if this is a development release
diff --git a/libsylph/xml.c b/libsylph/xml.c
index 9f4c4257..23b98506 100644
--- a/libsylph/xml.c
+++ b/libsylph/xml.c
@@ -520,6 +520,41 @@ gint xml_unescape_str(gchar *str)
return 0;
}
+gchar *xml_escape_str(const gchar *str)
+{
+ GString *estr;
+ const gchar *p;
+
+ if (!str)
+ return NULL;
+
+ estr = g_string_sized_new(strlen(str));
+ for (p = str; *p != '\0'; p++) {
+ switch (*p) {
+ case '<':
+ g_string_append(estr, "&lt;");
+ break;
+ case '>':
+ g_string_append(estr, "&gt;");
+ break;
+ case '&':
+ g_string_append(estr, "&amp;");
+ break;
+ case '\'':
+ g_string_append(estr, "&apos;");
+ break;
+ case '\"':
+ g_string_append(estr, "&quot;");
+ break;
+ default:
+ g_string_append_c(estr, *p);
+ break;
+ }
+ }
+
+ return g_string_free(estr, FALSE);
+}
+
gint xml_file_put_escape_str(FILE *fp, const gchar *str)
{
const gchar *p;
diff --git a/libsylph/xml.h b/libsylph/xml.h
index 95a61ac1..766281b6 100644
--- a/libsylph/xml.h
+++ b/libsylph/xml.h
@@ -95,6 +95,7 @@ XMLTag *xml_copy_tag (XMLTag *tag);
XMLAttr *xml_copy_attr (XMLAttr *attr);
gint xml_unescape_str (gchar *str);
+gchar *xml_escape_str (const gchar *str);
gint xml_file_put_escape_str (FILE *fp,
const gchar *str);