recipient list printing
authorBertrand Guiheneuf <bertrand@src.gnome.org>
Thu, 20 May 1999 21:24:51 +0000 (21:24 +0000)
committerBertrand Guiheneuf <bertrand@src.gnome.org>
Thu, 20 May 1999 21:24:51 +0000 (21:24 +0000)
* camel/camel-mime-message.c (_write_to_file):
recipient list printing

* tests/test1.c (main): more tests.

camel/camel-mime-message.c
camel/camel-mime-message.h
camel/gstring-util.c
camel/gstring-util.h

index c561b89..270cbcc 100644 (file)
@@ -320,7 +320,7 @@ _add_recipient (CamelMimeMessage *mime_message, GString *recipient_type, GString
        existent_list = (GList *)g_hash_table_lookup (mime_message->recipients, recipient_type);
 
        /* if the recipient is already in this list, do nothing */
-       if ( existent_list && g_list_find_custom (existent_list, (gpointer)recipient, g_string_equal_for_hash) ) {
+       if ( existent_list && g_list_find_custom (existent_list, (gpointer)recipient, g_string_equal_for_glist) ) {
                g_string_free (recipient_type, FALSE);
                g_string_free (recipient, FALSE);
                return;
@@ -378,7 +378,7 @@ _remove_recipient (CamelMimeMessage *mime_message, GString *recipient_type, GStr
                                            (gpointer)&(recipients_list)) 
            ) return;
        
-       /* look for the recipient to remoce */
+       /* look for the recipient to remove */
        old_element = g_list_find_custom (recipients_list, recipient, g_string_equal_for_hash);
        if (old_element) {
                /* if recipient exists, remove it */
@@ -490,11 +490,39 @@ camel_mime_message_get_message_number (CamelMimeMessage *mime_message)
 #endif
 #define WHPTF gmime_write_header_pair_to_file
 
+static void
+_write_one_recipient_to_file (gpointer key, gpointer value, gpointer user_data)
+{
+       GString *recipient_type = (GString *)key;
+       GList *recipients = (GList *)value;
+       GString *current;
+       FILE *file = (FILE *)user_data;
+
+       if ( (recipient_type) && (recipient_type->str) && 
+            (recipients) )
+               {
+                       gboolean first;
+
+                       fprintf(file, "%s: ", recipient_type->str);
+                       first = TRUE;
+                       while (recipients) {
+                               current = (GString *)recipients->data;
+                               if ( (current) && (current->str) ) {
+                                       if (!first) fprintf(file, ", ");
+                                       else first = FALSE;
+                                       fprintf(file, "%s", current->str);
+                               }
+                               recipients = g_list_next(recipients);
+                               
+                       }
+                       fprintf(file, "\n");
+               }
+}
 
 static void
-_write_recipients_to_file (CamelDataWrapper *data_wrapper, FILE *file)
+_write_recipients_to_file (CamelMimeMessage *mime_message, FILE *file)
 {
-       
+       g_hash_table_foreach (mime_message->recipients, _write_one_recipient_to_file, (gpointer)file);
 }
 
 static void
@@ -504,6 +532,7 @@ _write_to_file (CamelDataWrapper *data_wrapper, FILE *file)
        
        WHPTF (file, "From", mm->from);
        WHPTF (file, "Reply-To", mm->reply_to);
+       _write_recipients_to_file (mm, file);
        WHPTF (file, "Date", mm->received_date);
        WHPTF (file, "Subject", mm->subject);
        CAMEL_DATA_WRAPPER_CLASS (parent_class)->write_to_file (data_wrapper, file);
index 6bb0a78..b00f723 100644 (file)
@@ -37,6 +37,10 @@ extern "C" {
 #include "camel-session.h"
 
 
+#define RECIPIENT_TYPE_TO "To"
+#define RECIPIENT_TYPE_CC "Cc"
+#define RECIPIENT_TYPE_BCC "Bcc"
+
 
 #define CAMEL_MIME_MESSAGE_TYPE     (camel_mime_message_get_type ())
 #define CAMEL_MIME_MESSAGE(obj)     (GTK_CHECK_CAST((obj), CAMEL_MIME_MESSAGE_TYPE, CamelMimeMessage))
index 05cdc08..4d0411d 100644 (file)
@@ -37,7 +37,7 @@
  * @Return Value : true if the strings equal, false otherwise
  **/
 gboolean
-g_string_equals(GString *string1, GString *string2)
+g_string_equals (GString *string1, GString *string2)
 {
        g_assert(string1);
        g_assert(string2);
@@ -46,6 +46,7 @@ g_string_equals(GString *string1, GString *string2)
 
 
 
+
 /**
  * g_string_clone : clone a GString
  *
@@ -192,6 +193,11 @@ g_string_equal_for_hash (gconstpointer v, gconstpointer v2)
   return strcmp ( ((const GString*)v)->str, ((const GString*)v2)->str) == 0;
 }
 
+g_string_equal_for_glist (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
index fcd2c5d..f8b7ee3 100644 (file)
@@ -48,6 +48,7 @@ gchar g_string_right_dichotomy( GString *string, gchar sep, GString **prefix, GS
 void g_string_append_g_string(GString *dest_string, GString *other_string);
 
 gboolean g_string_equal_for_hash (gconstpointer v, gconstpointer v2);
+gboolean g_string_equal_for_glist (gconstpointer v, gconstpointer v2);
 guint g_string_hash (gconstpointer v);
 void g_string_list_free (GList *string_list);