[gimp/metadata-browser] Use a helper function to extract updated sequences.
- From: Roman Joost <romanofski src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/metadata-browser] Use a helper function to extract updated sequences.
- Date: Sat, 1 Oct 2011 04:28:02 +0000 (UTC)
commit 2fb13c5f217ca6058442e1ec77a784836fa1a085
Author: Roman Joost <roman bromeco de>
Date: Sat Oct 1 14:20:42 2011 +1000
Use a helper function to extract updated sequences.
If the user changed sequence properties in the UI, we need to split up
the changed string representation or use the raw value otherwise.
plug-ins/metadata/xmp-encode.c | 57 ++++++++++++++++++++++++++++-----------
1 files changed, 41 insertions(+), 16 deletions(-)
---
diff --git a/plug-ins/metadata/xmp-encode.c b/plug-ins/metadata/xmp-encode.c
index 5f683e1..e20e04d 100644
--- a/plug-ins/metadata/xmp-encode.c
+++ b/plug-ins/metadata/xmp-encode.c
@@ -31,13 +31,45 @@
#include "xmp-schemas.h"
-static void gen_element (GString *buffer,
- gint indent,
- const gchar *prefix,
- const gchar *name,
- const gchar *value,
- ...) G_GNUC_NULL_TERMINATED;
+static void gen_element (GString *buffer,
+ gint indent,
+ const gchar *prefix,
+ const gchar *name,
+ const gchar *value,
+ ...) G_GNUC_NULL_TERMINATED;
+
+gchar ** get_extracted_values (const gchar *value,
+ const gchar **value_array);
+
+/*
+ * Helper function to return the updated array of values. In case value
+ * != NULL the values are separated by ';' and cleaned of leading
+ * whitespace, otherwise the value_array will be returned.
+ *
+ * Return value: a newly-allocated %NULL-terminated array of strings.
+ * Use g_strfreev() to free it.
+ */
+gchar **
+get_extracted_values (const gchar *value,
+ const gchar **value_array)
+{
+ int i;
+ gchar **str_array;
+
+ if (value != NULL)
+ {
+ str_array = g_strsplit (value, ";", 0);
+
+ for (i = 0; str_array[i] != NULL; i++)
+ str_array[i] = g_strchug (str_array[i]);
+ }
+ else
+ {
+ str_array = (gchar **) value_array;
+ }
+ return str_array;
+}
static void
gen_schema_start (GString *buffer,
@@ -128,10 +160,8 @@ gen_property (GString *buffer,
case XMP_TYPE_JOB_BAG:
g_string_append_printf (buffer, " <%s:%s>\n <rdf:Bag>\n",
schema->prefix, property->name);
- if (value != NULL)
- updated_values = g_strsplit (value, ";", 0);
- else
- updated_values = (gchar **) value_array;
+
+ updated_values = get_extracted_values (value, value_array);
for (i = 0; updated_values[i] != NULL; i++)
{
@@ -150,12 +180,7 @@ gen_property (GString *buffer,
g_string_append_printf (buffer, " <%s:%s>\n <rdf:Seq>\n",
schema->prefix, property->name);
- if (value != NULL)
- updated_values = g_strsplit (value, ";", 0);
- else
- {
- updated_values = (gchar **) value_array;
- }
+ updated_values = get_extracted_values (value, value_array);
for (i = 0; updated_values[i] != NULL; i++)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]