aboutsummaryrefslogtreecommitdiffstats
path: root/e-util/e-xml-utils.c
diff options
context:
space:
mode:
authorChristopher James Lahey <clahey@helixcode.com>2000-04-19 16:58:27 +0800
committerChris Lahey <clahey@src.gnome.org>2000-04-19 16:58:27 +0800
commit4780dd12ca591e0301f0d8eb173f8a4817b356d7 (patch)
tree29281e2c1b4c9c35f35f0f724dce8a9cc59d954c /e-util/e-xml-utils.c
parentd66dfd42ac4b8236f8a7f7b7fb015fc3d85aa7e3 (diff)
downloadgsoc2013-evolution-4780dd12ca591e0301f0d8eb173f8a4817b356d7.tar.gz
gsoc2013-evolution-4780dd12ca591e0301f0d8eb173f8a4817b356d7.tar.zst
gsoc2013-evolution-4780dd12ca591e0301f0d8eb173f8a4817b356d7.zip
Added e_xml_get_child_by_name_by_lang.
2000-04-19 Christopher James Lahey <clahey@helixcode.com> * e-xml-utils.c, e-xml-utils.h: Added e_xml_get_child_by_name_by_lang. svn path=/trunk/; revision=2493
Diffstat (limited to 'e-util/e-xml-utils.c')
-rw-r--r--e-util/e-xml-utils.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/e-util/e-xml-utils.c b/e-util/e-xml-utils.c
index f0182d5167..250451f148 100644
--- a/e-util/e-xml-utils.c
+++ b/e-util/e-xml-utils.c
@@ -22,6 +22,7 @@
#include "e-xml-utils.h"
#include <gnome-xml/parser.h>
+#include <locale.h>
xmlNode *e_xml_get_child_by_name(xmlNode *parent, xmlChar *child_name)
{
@@ -38,6 +39,36 @@ xmlNode *e_xml_get_child_by_name(xmlNode *parent, xmlChar *child_name)
return NULL;
}
+/* Returns the first child with the name child_name and the "lang"
+ * attribute that matches the current LC_MESSAGES, or else, the first
+ * child with the name child_name and no "lang" attribute.
+ */
+xmlNode *
+e_xml_get_child_by_name_by_lang(xmlNode *parent, xmlChar *child_name, char *lang)
+{
+ xmlNode *child;
+ /* This is the default version of the string. */
+ xmlNode *C = NULL;
+
+ g_return_val_if_fail(parent != NULL, NULL);
+ g_return_val_if_fail(child_name != NULL, NULL);
+
+ if (lang == NULL)
+ lang = setlocale(LC_MESSAGES, NULL);
+
+ for (child = parent->childs; child; child = child->next) {
+ if ( !xmlStrcmp( child->name, child_name ) ) {
+ char *this_lang = xmlGetProp(child, "lang");
+ if ( this_lang == NULL ) {
+ C = child;
+ }
+ else if (!strcmp(this_lang, "lang"))
+ return child;
+ }
+ }
+ return C;
+}
+
int
e_xml_get_integer_prop_by_name(xmlNode *parent, xmlChar *prop_name)
{