[gmime] Shortcut encode() if encoding already acceptable
- From: Jeffrey Stedfast <fejj src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gmime] Shortcut encode() if encoding already acceptable
- Date: Fri, 2 Oct 2009 03:13:32 +0000 (UTC)
commit d365877e4226bb0ee9409d12c50f879786118b34
Author: Jeffrey Stedfast <fejj gnome org>
Date: Thu Oct 1 23:13:23 2009 -0400
Shortcut encode() if encoding already acceptable
2009-10-01 Jeffrey Stedfast <fejj novell com>
* gmime/gmime-part.c (mime_part_encode): Shortcut if the currently
set encoding is within the acceptable constraints.
* docs/reference/gmime-sections.txt: Updated.
* mono/gmime-api.raw: Updated.
ChangeLog | 9 +++++++++
docs/reference/gmime-sections.txt | 3 ++-
gmime/gmime-encodings.h | 7 ++++---
gmime/gmime-object.c | 2 +-
gmime/gmime-part.c | 25 +++++++++++++++++++++++++
mono/gmime-api.raw | 15 ++++++++++++++-
6 files changed, 55 insertions(+), 6 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 43b9bcc..2f02ed7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2009-10-01 Jeffrey Stedfast <fejj novell com>
+ * gmime/gmime-part.c (mime_part_encode): Shortcut if the currently
+ set encoding is within the acceptable constraints.
+
+ * docs/reference/gmime-sections.txt: Updated.
+
+ * mono/gmime-api.raw: Updated.
+
+2009-10-01 Jeffrey Stedfast <fejj novell com>
+
* gmime/gmime-filter-best.h: Moved GMimeEncodingConstraint to
gmime-encodings.h
diff --git a/docs/reference/gmime-sections.txt b/docs/reference/gmime-sections.txt
index d2748ba..70b1c8b 100644
--- a/docs/reference/gmime-sections.txt
+++ b/docs/reference/gmime-sections.txt
@@ -307,7 +307,6 @@ GMIME_FILTER_BASIC_GET_CLASS
<FILE>gmime-filter-best</FILE>
GMimeFilterBest
GMimeFilterBestFlags
-GMimeEncodingConstraint
g_mime_filter_best_new
g_mime_filter_best_charset
g_mime_filter_best_encoding
@@ -697,6 +696,7 @@ g_mime_object_get_headers
g_mime_object_get_header_list
g_mime_object_write_to_stream
g_mime_object_to_string
+g_mime_object_encode
<SUBSECTION Private>
g_mime_object_get_type
@@ -937,6 +937,7 @@ g_mime_utils_unstructured_header_fold
GMimeContentEncoding
g_mime_content_encoding_from_string
g_mime_content_encoding_to_string
+GMimeEncodingConstraint
GMimeEncoding
g_mime_encoding_init_encode
g_mime_encoding_init_decode
diff --git a/gmime/gmime-encodings.h b/gmime/gmime-encodings.h
index fa69568..26c8926 100644
--- a/gmime/gmime-encodings.h
+++ b/gmime/gmime-encodings.h
@@ -57,9 +57,10 @@ typedef enum {
* @GMIME_ENCODING_CONSTRAINT_8BIT: The stream data may have bytes with the high bit set, but no null bytes.
* @GMIME_ENCODING_CONSTRAINT_BINARY: The stream may contain any binary data.
*
- * Used with g_mime_filter_best_encoding() as the 'constraint'
- * argument. These values provide a means of letting the filter know
- * what the encoding constraints are for the stream.
+ * Used with functions like g_mime_filter_best_encoding() and
+ * g_mime_object_encode() as the 'constraint' argument. These values
+ * provide a means of letting the filter know what the encoding
+ * constraints are for the stream.
**/
typedef enum {
GMIME_ENCODING_CONSTRAINT_7BIT,
diff --git a/gmime/gmime-object.c b/gmime/gmime-object.c
index d926a00..ae1534f 100644
--- a/gmime/gmime-object.c
+++ b/gmime/gmime-object.c
@@ -989,7 +989,7 @@ object_encode (GMimeObject *object, GMimeEncodingConstraint constraint)
/**
* g_mime_object_encode:
* @object: a #GMimeObject
- * @constraint a #GMimeEncodingConstraint
+ * @constraint: a #GMimeEncodingConstraint
*
* Calculates and sets the most efficient Content-Transfer-Encoding
* for this #GMimeObject and all child parts based on the @constraint
diff --git a/gmime/gmime-part.c b/gmime/gmime-part.c
index 2f0ef7e..f9414c9 100644
--- a/gmime/gmime-part.c
+++ b/gmime/gmime-part.c
@@ -405,6 +405,31 @@ mime_part_encode (GMimeObject *object, GMimeEncodingConstraint constraint)
GMimeStream *stream, *null;
GMimeFilter *filter;
+ switch (part->encoding) {
+ case GMIME_CONTENT_ENCODING_DEFAULT:
+ /* Unspecified encoding, we need to figure out the
+ * best encoding no matter what */
+ break;
+ case GMIME_CONTENT_ENCODING_7BIT:
+ /* This encoding is always safe. */
+ return;
+ case GMIME_CONTENT_ENCODING_8BIT:
+ /* This encoding is safe unless the constraint is 7bit. */
+ if (constraint != GMIME_ENCODING_CONSTRAINT_7BIT)
+ return;
+ break;
+ case GMIME_CONTENT_ENCODING_BINARY:
+ /* This encoding is only safe if the constraint is binary. */
+ if (constraint == GMIME_ENCODING_CONSTRAINT_BINARY)
+ return;
+ break;
+ case GMIME_CONTENT_ENCODING_BASE64:
+ case GMIME_CONTENT_ENCODING_QUOTEDPRINTABLE:
+ case GMIME_CONTENT_ENCODING_UUENCODE:
+ /* These encodings are always safe. */
+ return;
+ }
+
filter = g_mime_filter_best_new (GMIME_FILTER_BEST_ENCODING);
null = g_mime_stream_null_new ();
diff --git a/mono/gmime-api.raw b/mono/gmime-api.raw
index 790fea4..2b07889 100644
--- a/mono/gmime-api.raw
+++ b/mono/gmime-api.raw
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<api>
+<api parser_version="1">
<!--
This file was automatically generated.
@@ -1109,6 +1109,13 @@
<parameter type="GMimeStream*" name="stream" />
</parameters>
</virtual_method>
+ <virtual_method name="Encode" cname="encode">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="GMimeObject*" name="object" />
+ <parameter type="GMimeEncodingConstraint" name="constraint" />
+ </parameters>
+ </virtual_method>
<method name="AppendHeader" cname="g_mime_object_append_header">
<return-type type="void" />
<parameters>
@@ -1116,6 +1123,12 @@
<parameter type="const-char*" name="value" />
</parameters>
</method>
+ <method name="Encode" cname="g_mime_object_encode">
+ <return-type type="void" />
+ <parameters>
+ <parameter type="GMimeEncodingConstraint" name="constraint" />
+ </parameters>
+ </method>
<method name="GetContentDisposition" cname="g_mime_object_get_content_disposition">
<return-type type="GMimeContentDisposition*" />
</method>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]