aboutsummaryrefslogtreecommitdiffstats
path: root/camel
diff options
context:
space:
mode:
Diffstat (limited to 'camel')
-rw-r--r--camel/camel-mime-part.c18
-rw-r--r--camel/camel-mime-part.h9
-rw-r--r--camel/gstring-util.c30
-rw-r--r--camel/gstring-util.h2
4 files changed, 59 insertions, 0 deletions
diff --git a/camel/camel-mime-part.c b/camel/camel-mime-part.c
index 2d3fdb58fb..eed4e5de0a 100644
--- a/camel/camel-mime-part.c
+++ b/camel/camel-mime-part.c
@@ -73,3 +73,21 @@ camel_mime_part_get_type (void)
+
+static void
+__camel_mime_part_add_header (CamelMimePart *mime_part, GString *header_name, GString *header_value)
+{
+ gboolean header_exists;
+ GString *old_header_name;
+ GString *old_header_value;
+
+ header_exists = g_hash_table_lookup_extended (mime_part->headers, header_name,
+ (gpointer *) &old_header_name,
+ (gpointer *) &old_header_value);
+ if (header_exists) {
+ g_string_free (old_header_name, TRUE);
+ g_string_free (old_header_value, TRUE);
+ }
+
+ g_hash_table_insert (mime_part->headers, header_name, header_value);
+}
diff --git a/camel/camel-mime-part.h b/camel/camel-mime-part.h
index 2342fb0e50..0d5d16b4e4 100644
--- a/camel/camel-mime-part.h
+++ b/camel/camel-mime-part.h
@@ -42,10 +42,19 @@ extern "C" {
#define IS_CAMEL_MIME_PART(o) (GTK_CHECK_TYPE((o), CAMEL_MIME_PART_TYPE))
+
typedef struct
{
CamelDataWrapper parent_object;
+ GHashTable *headers;
+ GString *description;
+ GString *disposition;
+ GString *content_id;
+ GString *content_md5;
+ GString *encoding;
+ GList *languages;
+
} CamelMimePart;
diff --git a/camel/gstring-util.c b/camel/gstring-util.c
index 3c9d24d167..43e482154e 100644
--- a/camel/gstring-util.c
+++ b/camel/gstring-util.c
@@ -175,3 +175,33 @@ g_string_append_g_string(GString *dest_string, GString *other_string)
g_string_append(dest_string, other_string->str);
}
+
+
+
+/**
+ * g_string_equal_for_hash: test equality of two GStrings for hash tables
+ * @v: string 1
+ * @v2: string 2
+ *
+ *
+ *
+ * Return value:
+ **/
+g_string_equal_for_hash (gconstpointer v, gconstpointer v2)
+{
+ return strcmp ( ((const GString*)v)->str, ((const GString*)v2)->str) == 0;
+}
+
+
+/**
+ * g_string_hash: computes a hash value for a Gstring
+ * @v: Gstring object
+ *
+ *
+ *
+ * Return value:
+ **/
+guint g_string_hash (gconstpointer v)
+{
+ return g_str_hash(((const GString*)v)->str);
+}
diff --git a/camel/gstring-util.h b/camel/gstring-util.h
index decb6ee064..2c118329ed 100644
--- a/camel/gstring-util.h
+++ b/camel/gstring-util.h
@@ -47,6 +47,8 @@ GString *g_string_clone(GString *string);
gchar g_string_right_dichotomy( GString *string, gchar sep, GString **prefix, GString **suffix, DichotomyOption options);
void g_string_append_g_string(GString *dest_string, GString *other_string);
+gboolean g_string_equal_for_hash (gconstpointer v, gconstpointer v2);
+guint g_string_hash (gconstpointer v);
#ifdef __cplusplus
}