gmime r1429 - in trunk: . docs/reference examples gmime



Author: fejj
Date: Sun Sep  7 13:50:08 2008
New Revision: 1429
URL: http://svn.gnome.org/viewvc/gmime?rev=1429&view=rev

Log:
2008-09-07  Jeffrey Stedfast  <fejj novell com>

	* examples/basic-example.c: Updated for the foreach() changes.

	* gmime/gmime-multipart.c (g_mime_multipart_foreach): Changed to
	be recursive. The callback function signature has changed a bit to
	be more useful as well by providing the parent MIME object.

	* gmime/gmime-message.c (g_mime_message_foreach): Same.



Modified:
   trunk/ChangeLog
   trunk/docs/reference/gmime-sections.txt
   trunk/examples/basic-example.c
   trunk/gmime.spec.in
   trunk/gmime/gmime-message.c
   trunk/gmime/gmime-message.h
   trunk/gmime/gmime-multipart.c
   trunk/gmime/gmime-multipart.h
   trunk/gmime/gmime-object.h

Modified: trunk/docs/reference/gmime-sections.txt
==============================================================================
--- trunk/docs/reference/gmime-sections.txt	(original)
+++ trunk/docs/reference/gmime-sections.txt	Sun Sep  7 13:50:08 2008
@@ -666,7 +666,7 @@
 <SECTION>
 <FILE>gmime-object</FILE>
 GMimeObject
-GMimePartFunc
+GMimeObjectForeachFunc
 g_mime_object_register_type
 g_mime_object_new
 g_mime_object_new_type
@@ -838,7 +838,7 @@
 g_mime_message_get_message_id
 g_mime_message_set_mime_part
 g_mime_message_get_mime_part
-g_mime_message_foreach_part
+g_mime_message_foreach
 
 <SUBSECTION Private>
 g_mime_message_get_type

Modified: trunk/examples/basic-example.c
==============================================================================
--- trunk/examples/basic-example.c	(original)
+++ trunk/examples/basic-example.c	Sun Sep  7 13:50:08 2008
@@ -131,27 +131,27 @@
 
 
 static void
-count_foreach_callback (GMimeObject *part, gpointer user_data)
+count_foreach_callback (GMimeObject *parent, GMimeObject *part, gpointer user_data)
 {
 	int *count = user_data;
 	
 	(*count)++;
 	
-	/* 'part' points to the current part node that g_mime_message_foreach_part() is iterating over */
+	/* 'part' points to the current part node that
+	 * g_mime_message_foreach() is iterating over */
 	
 	/* find out what class 'part' is... */
 	if (GMIME_IS_MESSAGE_PART (part)) {
 		/* message/rfc822 or message/news */
 		GMimeMessage *message;
 		
-		/* g_mime_message_foreach_part() won't descend into
+		/* g_mime_message_foreach() won't descend into
                    child message parts, so if we want to count any
                    subparts of this child message, we'll have to call
-                   g_mime_message_foreach_part() again here. */
+                   g_mime_message_foreach() again here. */
 		
 		message = g_mime_message_part_get_message ((GMimeMessagePart *) part);
-		g_mime_message_foreach_part (message, count_foreach_callback, count);
-		g_object_unref (message);
+		g_mime_message_foreach (message, count_foreach_callback, count);
 	} else if (GMIME_IS_MESSAGE_PARTIAL (part)) {
 		/* message/partial */
 		
@@ -162,11 +162,15 @@
                    piece this back together again once we get all the
                    parts? */
 	} else if (GMIME_IS_MULTIPART (part)) {
-		/* multipart/mixed, multipart/alternative, multipart/related, multipart/signed, multipart/encrypted, etc... */
+		/* multipart/mixed, multipart/alternative,
+		 * multipart/related, multipart/signed,
+		 * multipart/encrypted, etc... */
 		
-		/* we'll get to finding out if this is a signed/encrypted multipart later... */
+		/* we'll get to finding out if this is a
+		 * signed/encrypted multipart later... */
 	} else if (GMIME_IS_PART (part)) {
-		/* a normal leaf part, could be text/plain or image/jpeg etc */
+		/* a normal leaf part, could be text/plain or
+		 * image/jpeg etc */
 	} else {
 		g_assert_not_reached ();
 	}
@@ -177,14 +181,15 @@
 {
 	int count = 0;
 	
-	/* count the number of parts (recursively) in the message including the container multiparts */
-	g_mime_message_foreach_part (message, count_foreach_callback, &count);
+	/* count the number of parts (recursively) in the message
+	 * including the container multiparts */
+	g_mime_message_foreach (message, count_foreach_callback, &count);
 	
 	printf ("There are %d parts in the message\n", count);
 }
 
 static void
-verify_foreach_callback (GMimeObject *part, gpointer user_data)
+verify_foreach_callback (GMimeObject *parent, GMimeObject *part, gpointer user_data)
 {
 	GMimeCipherContext *ctx = user_data;
 	
@@ -235,7 +240,7 @@
 verify_signed_parts (GMimeMessage *message, GMimeCipherContext *ctx)
 {
 	/* descend the mime tree and verify any signed parts */
-	g_mime_message_foreach_part (message, verify_foreach_callback, ctx);
+	g_mime_message_foreach (message, verify_foreach_callback, ctx);
 }
 
 static void

Modified: trunk/gmime.spec.in
==============================================================================
--- trunk/gmime.spec.in	(original)
+++ trunk/gmime.spec.in	Sun Sep  7 13:50:08 2008
@@ -24,7 +24,7 @@
 Group: Development/Libraries
 URL: http://spruce.sourceforge.net/gmime/
 
-Source: http://spruce.sourceforge.net/gmime/sources/v2.4/gmime-%{version}.tar.gz
+Source: ftp://ftp.gnome.org/pub/GNOME/sources/gmime/2.4/gmime-%{version}.tar.bz2
 BuildRoot: /var/tmp/%{name}-%{version}-%{release}-root
 
 Requires: glib2 >= 2.0.0

Modified: trunk/gmime/gmime-message.c
==============================================================================
--- trunk/gmime/gmime-message.c	(original)
+++ trunk/gmime/gmime-message.c	Sun Sep  7 13:50:08 2008
@@ -1458,21 +1458,21 @@
 
 
 /**
- * g_mime_message_foreach_part:
- * @message: MIME message
+ * g_mime_message_foreach:
+ * @message: a #GMimeMessage
  * @callback: function to call on each of the mime parts contained by the mime message
- * @data: extra data to pass to the callback
+ * @user_data: user-supplied callback data
  *
- * Calls @callback on each of the mime parts in the mime message.
+ * Recursively calls @callback on each of the mime parts in the mime message.
  **/
 void
-g_mime_message_foreach_part (GMimeMessage *message, GMimePartFunc callback, gpointer data)
+g_mime_message_foreach (GMimeMessage *message, GMimeObjectForeachFunc callback, gpointer user_data)
 {
 	g_return_if_fail (GMIME_IS_MESSAGE (message));
 	g_return_if_fail (callback != NULL);
 	
+	callback ((GMimeObject *) message, message->mime_part, user_data);
+	
 	if (GMIME_IS_MULTIPART (message->mime_part))
-		g_mime_multipart_foreach (GMIME_MULTIPART (message->mime_part), callback, data);
-	else
-		callback (message->mime_part, data);
+		g_mime_multipart_foreach ((GMimeMultipart *) message->mime_part, callback, user_data);
 }

Modified: trunk/gmime/gmime-message.h
==============================================================================
--- trunk/gmime/gmime-message.h	(original)
+++ trunk/gmime/gmime-message.h	Sun Sep  7 13:50:08 2008
@@ -120,7 +120,8 @@
 GMimeObject *g_mime_message_get_mime_part (GMimeMessage *message);
 void g_mime_message_set_mime_part (GMimeMessage *message, GMimeObject *mime_part);
 
-void g_mime_message_foreach_part (GMimeMessage *message, GMimePartFunc callback, gpointer data);
+void g_mime_message_foreach (GMimeMessage *message, GMimeObjectForeachFunc callback,
+			     gpointer user_data);
 
 G_END_DECLS
 

Modified: trunk/gmime/gmime-multipart.c
==============================================================================
--- trunk/gmime/gmime-multipart.c	(original)
+++ trunk/gmime/gmime-multipart.c	Sun Sep  7 13:50:08 2008
@@ -813,27 +813,37 @@
 }
 
 
+static void
+multipart_foreach (GMimeMultipart *multipart, GMimeObjectForeachFunc callback, gpointer user_data)
+{
+	GMimeObject *part;
+	guint i;
+	
+	for (i = 0; i < multipart->children->len; i++) {
+		part = (GMimeObject *) multipart->children->pdata[i];
+		callback ((GMimeObject *) multipart, part, user_data);
+		
+		if (GMIME_IS_MULTIPART (part))
+			multipart_foreach ((GMimeMultipart *) part, callback, user_data);
+	}
+}
+
+
 /**
  * g_mime_multipart_foreach: 
- * @multipart: a multipart
- * @callback: function to call for @multipart and all of its subparts
- * @user_data: extra data to pass to the callback
+ * @multipart: a #GMimeMultipart
+ * @callback: function to call for each of @multipart's subparts.
+ * @user_data: user-supplied callback data
  * 
- * Calls @callback on each of @multipart's subparts.
+ * Recursively calls @callback on each of @multipart's subparts.
  **/
 void
-g_mime_multipart_foreach (GMimeMultipart *multipart, GMimePartFunc callback, gpointer user_data)
+g_mime_multipart_foreach (GMimeMultipart *multipart, GMimeObjectForeachFunc callback, gpointer user_data)
 {
-	GMimeObject *part;
-	guint i;
-	
 	g_return_if_fail (GMIME_IS_MULTIPART (multipart));
 	g_return_if_fail (callback != NULL);
 	
-	for (i = 0; i < multipart->children->len; i++) {
-		part = multipart->children->pdata[i];
-		callback (part, user_data);
-	}
+	multipart_foreach (multipart, callback, user_data);
 }
 
 

Modified: trunk/gmime/gmime-multipart.h
==============================================================================
--- trunk/gmime/gmime-multipart.h	(original)
+++ trunk/gmime/gmime-multipart.h	Sun Sep  7 13:50:08 2008
@@ -105,7 +105,8 @@
 void g_mime_multipart_set_boundary (GMimeMultipart *multipart, const char *boundary);
 const char *g_mime_multipart_get_boundary (GMimeMultipart *multipart);
 
-void g_mime_multipart_foreach (GMimeMultipart *multipart, GMimePartFunc callback, gpointer user_data);
+void g_mime_multipart_foreach (GMimeMultipart *multipart, GMimeObjectForeachFunc callback,
+			       gpointer user_data);
 
 GMimeObject *g_mime_multipart_get_subpart_from_content_id (GMimeMultipart *multipart,
 							   const char *content_id);

Modified: trunk/gmime/gmime-object.h
==============================================================================
--- trunk/gmime/gmime-object.h	(original)
+++ trunk/gmime/gmime-object.h	Sun Sep  7 13:50:08 2008
@@ -80,14 +80,15 @@
 
 
 /**
- * GMimePartFunc:
- * @part: A MIME part.
+ * GMimeObjectForeachFunc:
+ * @parent: parent #GMimeObject
+ * @part: a #GMimeObject
  * @user_data: User-supplied callback data.
  *
- * The function signature for a callback to
- * g_mime_message_foreach_part() and g_mime_multipart_foreach().
+ * The function signature for a callback to g_mime_message_foreach()
+ * and g_mime_multipart_foreach().
  **/
-typedef void (* GMimePartFunc) (GMimeObject *part, gpointer user_data);
+typedef void (* GMimeObjectForeachFunc) (GMimeObject *parent, GMimeObject *part, gpointer user_data);
 
 
 GType g_mime_object_get_type (void);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]