gmime r1413 - in trunk: . examples gmime tests tools



Author: fejj
Date: Tue Aug 26 04:00:13 2008
New Revision: 1413
URL: http://svn.gnome.org/viewvc/gmime?rev=1413&view=rev

Log:
2008-08-25  Jeffrey Stedfast  <fejj novell com>

	Making GMime's object-returning APIs consistent with Gtk+ which do
	not ref returned objects.

	* tests/test-headers.c (test_header_sync): No longer need to unref
	the InternetAddressList object returned from
	g_mime_message_get_recipients().

	* tests/test-mbox.c (print_mime_struct): Since
	g_mime_multipart_get_part() no longer returns a ref'd object, no
	need to unref it once we're done with it.

	* gmime/gmime-multipart-encrypted.c (g_mime_multipart_encrypted_decrypt):
	Don't ref the returned decrypted part.

	* gmime/gmime-message-part.c (g_mime_message_part_get_message):
	Don't ref the returned message part.

	* gmime/gmime-data-wrapper.c (g_mime_data_wrapper_get_stream):
	Don't ref the returned stream.

	* gmime/gmime-part.c (g_mime_part_get_content_object): Don't ref
	the returned content object anymore.

	* gmime/gmime-multipart.c (multipart_get_part): No longer ref the
	returned part.
	(g_mime_multipart_get_subpart_from_content_id): Same.

	* gmime/gmime-message.c (g_mime_message_get_recipients): Don't ref
	the list anymore.
	(g_mime_message_get_mime_part): Don't ref the returned mime part
	anymore.

	* gmime/gmime-object.c (g_mime_object_get_content_type): Don't
	return const anymore. We want app devs to be able to manipulate
	the GMimeContentType directly.
	(g_mime_object_get_content_disposition): Same idea here.

	* gmime/internet-address.c (internet_address_group_get_members):
	Don't ref the members list anymore.
	(internet_address_list_get_address): Same.



Modified:
   trunk/ChangeLog
   trunk/examples/imap-example.c
   trunk/gmime/gmime-data-wrapper.c
   trunk/gmime/gmime-message-part.c
   trunk/gmime/gmime-message-partial.c
   trunk/gmime/gmime-message.c
   trunk/gmime/gmime-multipart-encrypted.c
   trunk/gmime/gmime-multipart-signed.c
   trunk/gmime/gmime-multipart.c
   trunk/gmime/gmime-object.c
   trunk/gmime/gmime-object.h
   trunk/gmime/gmime-part.c
   trunk/gmime/internet-address.c
   trunk/tests/test-headers.c
   trunk/tests/test-mbox.c
   trunk/tests/test-pgpmime.c
   trunk/tools/gmime-port-2-2-to-2-4.sh

Modified: trunk/examples/imap-example.c
==============================================================================
--- trunk/examples/imap-example.c	(original)
+++ trunk/examples/imap-example.c	Tue Aug 26 04:00:13 2008
@@ -111,7 +111,6 @@
 		for (i = 0; i < n; i++) {
 			subpart = g_mime_multipart_get_part (multipart, i);
 			write_part_bodystructure (subpart, fp);
-			g_object_unref (subpart);
 		}
 	} else if (GMIME_IS_MESSAGE_PART (part)) {
 		GMimeMessage *message;
@@ -304,7 +303,6 @@
 			subpart = g_mime_multipart_get_part (multipart, i);
 			sprintf (id, "%d", i + 1);
 			write_part (subpart, uid, buf);
-			g_object_unref (subpart);
 		}
 	} else if (GMIME_IS_MESSAGE_PART (part)) {
 		buf = g_strdup_printf ("%s/%s.TEXT", uid, spec);
@@ -755,16 +753,15 @@
 static void
 reconstruct_message_part (GMimeMessagePart *msgpart, const char *uid, const char *spec)
 {
+	GMimeMessage *message;
 	GMimeParser *parser;
 	GMimeStream *stream;
 	char *filename;
 	int fd;
 	
-	if (msgpart->message)
-		g_object_unref (msgpart->message);
-	
 	filename = g_strdup_printf ("%s/%s.TEXT", uid, spec);
 	if ((fd = open (filename, O_RDONLY))) {
+		g_mime_message_part_set_message (msgpart, NULL);
 		g_free (filename);
 		return;
 	}
@@ -776,8 +773,11 @@
 	g_mime_parser_set_scan_from (parser, FALSE);
 	g_object_unref (stream);
 	
-	msgpart->message = g_mime_parser_construct_message (parser);
+	message = g_mime_parser_construct_message (parser);
 	g_object_unref (parser);
+	
+	g_mime_message_part_set_message (msgpart, message);
+	g_object_unref (message);
 }
 
 static void

Modified: trunk/gmime/gmime-data-wrapper.c
==============================================================================
--- trunk/gmime/gmime-data-wrapper.c	(original)
+++ trunk/gmime/gmime-data-wrapper.c	Tue Aug 26 04:00:13 2008
@@ -192,11 +192,6 @@
 {
 	g_return_val_if_fail (GMIME_IS_DATA_WRAPPER (wrapper), NULL);
 	
-	if (wrapper->stream == NULL)
-		return NULL;
-	
-	g_object_ref (wrapper->stream);
-	
 	return wrapper->stream;
 }
 

Modified: trunk/gmime/gmime-message-part.c
==============================================================================
--- trunk/gmime/gmime-message-part.c	(original)
+++ trunk/gmime/gmime-message-part.c	Tue Aug 26 04:00:13 2008
@@ -302,8 +302,5 @@
 {
 	g_return_val_if_fail (GMIME_IS_MESSAGE_PART (part), NULL);
 	
-	if (part->message)
-		g_object_ref (part->message);
-	
 	return part->message;
 }

Modified: trunk/gmime/gmime-message-partial.c
==============================================================================
--- trunk/gmime/gmime-message-partial.c	(original)
+++ trunk/gmime/gmime-message-partial.c	Tue Aug 26 04:00:13 2008
@@ -351,11 +351,9 @@
 		
 		wrapper = g_mime_part_get_content_object (GMIME_PART (partial));
 		stream = g_mime_data_wrapper_get_stream (wrapper);
-		g_object_unref (wrapper);
 		
 		g_mime_stream_reset (stream);
 		g_mime_stream_cat_add_source (GMIME_STREAM_CAT (cat), stream);
-		g_object_unref (stream);
 	}
 	
 	parser = g_mime_parser_new ();

Modified: trunk/gmime/gmime-message.c
==============================================================================
--- trunk/gmime/gmime-message.c	(original)
+++ trunk/gmime/gmime-message.c	Tue Aug 26 04:00:13 2008
@@ -58,8 +58,6 @@
 static char *message_get_headers (GMimeObject *object);
 static ssize_t message_write_to_stream (GMimeObject *object, GMimeStream *stream);
 
-static void message_add_recipients_from_string (GMimeMessage *message, GMimeRecipientType type, const char *str);
-
 static ssize_t write_structured (GMimeStream *stream, const char *name, const char *value);
 static ssize_t write_addrspec (GMimeStream *stream, const char *name, const char *value);
 static ssize_t write_received (GMimeStream *stream, const char *name, const char *value);
@@ -664,6 +662,18 @@
 	return n;
 }
 
+static void
+message_add_recipients_from_string (GMimeMessage *message, GMimeRecipientType type, const char *str)
+{
+	InternetAddressList *recipients, *addrlist;
+	
+	recipients = g_mime_message_get_recipients (message, type);
+	
+	if ((addrlist = internet_address_list_parse_string (str))) {
+		internet_address_list_concat (recipients, addrlist);
+		g_object_unref (addrlist);
+	}
+}
 
 enum {
 	HEADER_FROM,
@@ -1116,7 +1126,7 @@
 	char *string;
 	
 	/* sync the specified recipient header */
-	if ((list = g_hash_table_lookup (message->recipients, recipient_types[type].name))) {
+	if ((list = g_mime_message_get_recipients (message, type))) {
 		string = internet_address_list_to_string (list, TRUE);
 		g_mime_header_list_set (object->headers, name, string);
 		g_free (string);
@@ -1171,20 +1181,6 @@
 }
 
 
-static void
-message_add_recipients_from_string (GMimeMessage *message, GMimeRecipientType type, const char *str)
-{
-	InternetAddressList *recipients, *addrlist;
-	
-	recipients = g_hash_table_lookup (message->recipients, recipient_types[type].name);
-	
-	if ((addrlist = internet_address_list_parse_string (str))) {
-		internet_address_list_concat (recipients, addrlist);
-		g_object_unref (addrlist);
-	}
-}
-
-
 /**
  * g_mime_message_add_recipients_from_string:
  * @message: MIME Message
@@ -1224,7 +1220,6 @@
 	g_return_val_if_fail (type < N_RECIPIENT_TYPES, NULL);
 	
 	list = g_hash_table_lookup (message->recipients, recipient_types[type].name);
-	g_object_ref (list);
 	
 	return list;
 }
@@ -1452,8 +1447,6 @@
 	if (message->mime_part == NULL)
 		return NULL;
 	
-	g_object_ref (message->mime_part);
-	
 	return message->mime_part;
 }
 

Modified: trunk/gmime/gmime-multipart-encrypted.c
==============================================================================
--- trunk/gmime/gmime-multipart-encrypted.c	(original)
+++ trunk/gmime/gmime-multipart-encrypted.c	Tue Aug 26 04:00:13 2008
@@ -356,7 +356,6 @@
 	
 	if (mpe->decrypted) {
 		/* we seem to have already decrypted the part */
-		g_object_ref (mpe->decrypted);
 		return mpe->decrypted;
 	}
 	
@@ -383,7 +382,6 @@
 		g_set_error (err, GMIME_ERROR, GMIME_ERROR_PROTOCOL_ERROR,
 			     "Failed to decrypt MIME part: protocol error");
 		
-		g_object_unref (version);
 		g_free (content_type);
 		
 		return NULL;
@@ -395,7 +393,6 @@
 	mime_type = g_mime_object_get_content_type (encrypted);
 	if (!g_mime_content_type_is_type (mime_type, "application", "octet-stream")) {
 		g_object_unref (encrypted);
-		g_object_unref (version);
 		return NULL;
 	}
 	
@@ -403,7 +400,6 @@
 	wrapper = g_mime_part_get_content_object (GMIME_PART (encrypted));
 	ciphertext = g_mime_data_wrapper_get_stream (wrapper);
 	g_mime_stream_reset (ciphertext);
-	g_object_unref (wrapper);
 	
 	stream = g_mime_stream_mem_new ();
 	filtered_stream = g_mime_stream_filter_new (stream);
@@ -414,7 +410,6 @@
 	/* get the cleartext */
 	if (!(sv = g_mime_cipher_context_decrypt (ctx, ciphertext, filtered_stream, err))) {
 		g_object_unref (filtered_stream);
-		g_object_unref (ciphertext);
 		g_object_unref (stream);
 		
 		return NULL;
@@ -422,7 +417,6 @@
 	
 	g_mime_stream_flush (filtered_stream);
 	g_object_unref (filtered_stream);
-	g_object_unref (ciphertext);
 	
 	g_mime_stream_reset (stream);
 	parser = g_mime_parser_new ();
@@ -442,7 +436,6 @@
 	}
 	
 	/* cache the decrypted part */
-	g_object_ref (decrypted);
 	mpe->decrypted = decrypted;
 	mpe->validity = sv;
 	

Modified: trunk/gmime/gmime-multipart-signed.c
==============================================================================
--- trunk/gmime/gmime-multipart-signed.c	(original)
+++ trunk/gmime/gmime-multipart-signed.c	Tue Aug 26 04:00:13 2008
@@ -245,7 +245,6 @@
 		for (i = 0; i < n; i++) {
 			subpart = g_mime_multipart_get_part (multipart, i);
 			sign_prepare (subpart);
-			g_object_unref (subpart);
 		}
 	} else if (GMIME_IS_MESSAGE_PART (mime_part)) {
 		subpart = GMIME_MESSAGE_PART (mime_part)->message->mime_part;
@@ -438,7 +437,6 @@
 	/* make sure the protocol matches the signature content-type */
 	content_type = g_mime_content_type_to_string (signature->content_type);
 	if (g_ascii_strcasecmp (content_type, protocol) != 0) {
-		g_object_unref (signature);
 		g_free (content_type);
 		
 		return NULL;
@@ -460,7 +458,6 @@
 	g_mime_stream_flush (filtered_stream);
 	g_object_unref (filtered_stream);
 	g_mime_stream_reset (stream);
-	g_object_unref (content);
 	
 	/* get the signature stream */
 	wrapper = g_mime_part_get_content_object (GMIME_PART (signature));
@@ -477,8 +474,6 @@
 	}
 	
 	g_mime_stream_reset (sigstream);
-	g_object_unref (signature);
-	g_object_unref (wrapper);
 	
 	/* verify the signature */
 	hash = g_mime_cipher_context_hash_id (ctx, mps->micalg);
@@ -487,7 +482,6 @@
 	d(printf ("attempted to verify:\n----- BEGIN SIGNED PART -----\n%.*s----- END SIGNED PART -----\n",
 		  (int) GMIME_STREAM_MEM (stream)->buffer->len, GMIME_STREAM_MEM (stream)->buffer->data));
 	
-	g_object_unref (sigstream);
 	g_object_unref (stream);
 	
 	return valid;

Modified: trunk/gmime/gmime-multipart.c
==============================================================================
--- trunk/gmime/gmime-multipart.c	(original)
+++ trunk/gmime/gmime-multipart.c	Tue Aug 26 04:00:13 2008
@@ -566,7 +566,6 @@
 		return NULL;
 	
 	part = multipart->children->pdata[index];
-	g_object_ref (part);
 	
 	return part;
 }
@@ -761,10 +760,8 @@
 	g_return_val_if_fail (GMIME_IS_MULTIPART (multipart), NULL);
 	g_return_val_if_fail (content_id != NULL, NULL);
 	
-	if (object->content_id && !strcmp (object->content_id, content_id)) {
-		g_object_ref (object);
+	if (object->content_id && !strcmp (object->content_id, content_id))
 		return object;
-	}
 	
 	for (i = 0; i < multipart->children->len; i++) {
 		subpart = multipart->children->pdata[i];
@@ -774,7 +771,6 @@
 			if ((part = g_mime_multipart_get_subpart_from_content_id (mpart, content_id)))
 				return part;
 		} else if (subpart->content_id && !strcmp (subpart->content_id, content_id)) {
-			g_object_ref (subpart);
 			return subpart;
 		}
 	}

Modified: trunk/gmime/gmime-object.c
==============================================================================
--- trunk/gmime/gmime-object.c	(original)
+++ trunk/gmime/gmime-object.c	Tue Aug 26 04:00:13 2008
@@ -380,7 +380,7 @@
  *
  * Returns: the content-type object for the specified Mime object.
  **/
-const GMimeContentType *
+GMimeContentType *
 g_mime_object_get_content_type (GMimeObject *object)
 {
 	g_return_val_if_fail (GMIME_IS_OBJECT (object), NULL);
@@ -436,7 +436,7 @@
  *
  * Returns: the #GMimeContentDisposition set on the Mime object.
  **/
-const GMimeContentDisposition *
+GMimeContentDisposition *
 g_mime_object_get_content_disposition (GMimeObject *object)
 {
 	g_return_val_if_fail (GMIME_IS_OBJECT (object), NULL);

Modified: trunk/gmime/gmime-object.h
==============================================================================
--- trunk/gmime/gmime-object.h	(original)
+++ trunk/gmime/gmime-object.h	Tue Aug 26 04:00:13 2008
@@ -96,12 +96,12 @@
 GMimeObject *g_mime_object_new_type (const char *type, const char *subtype);
 
 void g_mime_object_set_content_type (GMimeObject *object, GMimeContentType *mime_type);
-const GMimeContentType *g_mime_object_get_content_type (GMimeObject *object);
+GMimeContentType *g_mime_object_get_content_type (GMimeObject *object);
 void g_mime_object_set_content_type_parameter (GMimeObject *object, const char *name, const char *value);
 const char *g_mime_object_get_content_type_parameter (GMimeObject *object, const char *name);
 
 void g_mime_object_set_content_disposition (GMimeObject *object, GMimeContentDisposition *disposition);
-const GMimeContentDisposition *g_mime_object_get_content_disposition (GMimeObject *object);
+GMimeContentDisposition *g_mime_object_get_content_disposition (GMimeObject *object);
 
 void g_mime_object_set_disposition (GMimeObject *object, const char *disposition);
 const char *g_mime_object_get_disposition (GMimeObject *object);

Modified: trunk/gmime/gmime-part.c
==============================================================================
--- trunk/gmime/gmime-part.c	(original)
+++ trunk/gmime/gmime-part.c	Tue Aug 26 04:00:13 2008
@@ -362,7 +362,6 @@
 		content_stream = g_mime_data_wrapper_get_stream (part->content);
 		g_mime_stream_reset (content_stream);
 		nwritten = g_mime_stream_write_to_stream (content_stream, stream);
-		g_object_unref (content_stream);
 		
 		if (nwritten == -1)
 			return -1;
@@ -856,8 +855,5 @@
 {
 	g_return_val_if_fail (GMIME_IS_PART (mime_part), NULL);
 	
-	if (mime_part->content)
-		g_object_ref (mime_part->content);
-	
 	return mime_part->content;
 }

Modified: trunk/gmime/internet-address.c
==============================================================================
--- trunk/gmime/internet-address.c	(original)
+++ trunk/gmime/internet-address.c	Tue Aug 26 04:00:13 2008
@@ -503,8 +503,6 @@
 {
 	g_return_val_if_fail (INTERNET_ADDRESS_IS_GROUP (group), NULL);
 	
-	g_object_ref (group->members);
-	
 	return group->members;
 }
 
@@ -895,18 +893,13 @@
 InternetAddress *
 internet_address_list_get_address (InternetAddressList *list, int index)
 {
-	InternetAddress *ia;
-	
 	g_return_val_if_fail (IS_INTERNET_ADDRESS_LIST (list), NULL);
 	g_return_val_if_fail (index >= 0, NULL);
 	
 	if ((guint) index >= list->array->len)
 		return NULL;
 	
-	ia = list->array->pdata[index];
-	g_object_ref (ia);
-	
-	return ia;
+	return list->array->pdata[index];
 }
 
 

Modified: trunk/tests/test-headers.c
==============================================================================
--- trunk/tests/test-headers.c	(original)
+++ trunk/tests/test-headers.c	Tue Aug 26 04:00:13 2008
@@ -537,7 +537,6 @@
 	} finally;
 	
 	g_object_unref (message);
-	g_object_unref (list);
 }
 
 int main (int argc, char **argv)

Modified: trunk/tests/test-mbox.c
==============================================================================
--- trunk/tests/test-mbox.c	(original)
+++ trunk/tests/test-mbox.c	Tue Aug 26 04:00:13 2008
@@ -78,7 +78,6 @@
 		for (i = 0; i < n; i++) {
 			subpart = g_mime_multipart_get_part (multipart, i);
 			print_mime_struct (stream, subpart, depth + 1);
-			g_object_unref (subpart);
 		}
 	} else if (GMIME_IS_MESSAGE_PART (part)) {
 		mpart = (GMimeMessagePart *) part;

Modified: trunk/tests/test-pgpmime.c
==============================================================================
--- trunk/tests/test-pgpmime.c	(original)
+++ trunk/tests/test-pgpmime.c	Tue Aug 26 04:00:13 2008
@@ -398,7 +398,6 @@
 	if (!decrypted || err != NULL) {
 		ex = exception_new ("decryption failed: %s", err->message);
 		g_object_unref (cleartext);
-		g_object_unref (mpe);
 		g_error_free (err);
 		throw (ex);
 	}
@@ -414,8 +413,6 @@
 			ex = exception_new ("signature validity status expected to be NONE");
 	}
 	
-	g_object_unref (mpe);
-	
 	if (ex != NULL) {
 		g_object_unref (cleartext);
 		throw (ex);
@@ -423,7 +420,6 @@
 	
 	stream = g_mime_stream_mem_new ();
 	g_mime_object_write_to_stream (decrypted, stream);
-	g_object_unref (decrypted);
 	
 	buf[0] = GMIME_STREAM_MEM (cleartext)->buffer;
 	buf[1] = GMIME_STREAM_MEM (stream)->buffer;

Modified: trunk/tools/gmime-port-2-2-to-2-4.sh
==============================================================================
--- trunk/tools/gmime-port-2-2-to-2-4.sh	(original)
+++ trunk/tools/gmime-port-2-2-to-2-4.sh	Tue Aug 26 04:00:13 2008
@@ -85,11 +85,19 @@
 	-e "s/g_mime_object_ref/g_object_ref/g" \
 	-e "s/g_mime_stream_unref/g_object_unref/g" \
 	-e "s/g_mime_stream_ref/g_object_ref/g" \
-	-e "s/INTERNET_ADDRESS_NAME/INTERNET_ADDRESS?MAILBOX/g" \
-	-e "s/internet_address_new_name/internet_address_new_mailbox/g" \
+	-e "s/INTERNET_ADDRESS_NAME/INTERNET_ADDRESS_MAILBOX/g" \
+	-e "s/internet_address_unref/g_object_unref/g" \
+	-e "s/internet_address_ref/g_object_ref/g" \
+	-e "s/internet_address_new_name/internet_address_mailbox_new/g" \
+	-e "s/internet_address_get_addr/internet_address_mailbox_get_addr/g" \
+	-e "s/internet_address_set_addr/internet_address_mailbox_set_addr/g" \
+	-e "s/internet_address_new_group/internet_address_group_new/g" \
+	-e "s/internet_address_get_members/internet_address_group_get_members/g" \
+	-e "s/internet_address_set_group/internet_address_group_set_members/g" \
+	-e "s/internet_address_add_member/internet_address_group_add_member/g" \
 	-e "s/internet_address_parse_string/internet_address_list_parse_string/g" \
-	-e "s/internet_address_list_destroy/internet_address_list_unref/g" \
 	-e "s/internet_address_list_append/internet_address_list_add/g" \
+	-e "s/internet_address_list_destroy/g_object_unref/g" \
 	< "$src" > "$src.tmp"
     mv "$src.tmp" "$src"
 done



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