aboutsummaryrefslogtreecommitdiffstats
path: root/camel
diff options
context:
space:
mode:
Diffstat (limited to 'camel')
-rw-r--r--camel/ChangeLog10
-rw-r--r--camel/camel-folder-summary.c9
-rw-r--r--camel/camel-mime-filter-basic.c3
-rw-r--r--camel/camel-private.h1
4 files changed, 23 insertions, 0 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog
index 2400ab049c..011388a8b9 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -1,5 +1,15 @@
2002-01-16 Jeffrey Stedfast <fejj@ximian.com>
+ * camel-mime-filter-basic.c (filter): If we don't want to corrupt
+ the uuencoded data by overwriting it with base64 decoded data
+ afterward, we need to add a break statement!
+
+ * camel-folder-summary.c (summary_build_content_info): Add code to
+ add a uu filter.
+ (camel_folder_summary_finalize): Unref the uuencode filter.
+
+2002-01-16 Jeffrey Stedfast <fejj@ximian.com>
+
* camel-mime-filter-basic.c (filter): Fixed slight logic error to
find the uuencode begin line. Fixes bug #18754.
diff --git a/camel/camel-folder-summary.c b/camel/camel-folder-summary.c
index d2b3c9fba6..9c79ad80f3 100644
--- a/camel/camel-folder-summary.c
+++ b/camel/camel-folder-summary.c
@@ -207,6 +207,8 @@ camel_folder_summary_finalize (CamelObject *obj)
camel_object_unref((CamelObject *)p->filter_64);
if (p->filter_qp)
camel_object_unref((CamelObject *)p->filter_qp);
+ if (p->filter_uu)
+ camel_object_unref((CamelObject *)p->filter_uu);
if (p->filter_save)
camel_object_unref((CamelObject *)p->filter_save);
if (p->filter_html)
@@ -1904,6 +1906,13 @@ summary_build_content_info(CamelFolderSummary *s, CamelMessageInfo *msginfo, Cam
else
camel_mime_filter_reset((CamelMimeFilter *)p->filter_qp);
enc_id = camel_mime_parser_filter_add(mp, (CamelMimeFilter *)p->filter_qp);
+ } else if (!strcasecmp (encoding, "x-uuencode")) {
+ d(printf(" decoding x-uuencode\n"));
+ if (p->filter_uu == NULL)
+ p->filter_uu = camel_mime_filter_basic_new_type(CAMEL_MIME_FILTER_BASIC_UU_DEC);
+ else
+ camel_mime_filter_reset((CamelMimeFilter *)p->filter_uu);
+ enc_id = camel_mime_parser_filter_add(mp, (CamelMimeFilter *)p->filter_uu);
} else {
d(printf(" ignoring encoding %s\n", encoding));
}
diff --git a/camel/camel-mime-filter-basic.c b/camel/camel-mime-filter-basic.c
index 494f7ead7f..5e2b9f5107 100644
--- a/camel/camel-mime-filter-basic.c
+++ b/camel/camel-mime-filter-basic.c
@@ -54,6 +54,7 @@ camel_mime_filter_basic_init (CamelMimeFilterBasic *obj)
{
obj->state = 0;
obj->save = 0;
+ obj->uulen = 0;
}
@@ -82,6 +83,7 @@ reset(CamelMimeFilter *mf)
CamelMimeFilterBasic *f = (CamelMimeFilterBasic *)mf;
f->uu_begin = FALSE;
+ f->uulen = 0;
switch(f->type) {
case CAMEL_MIME_FILTER_BASIC_QP_ENC:
@@ -181,6 +183,7 @@ filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, s
camel_mime_filter_set_size (mf, (len + 2) * 2 + 62, FALSE);
newlen = uuencode_step (in, len, mf->outbuf, f->uubuf, &f->state, &f->save, &f->uulen);
g_assert (newlen <= (len + 2) * 2 + 62);
+ break;
case CAMEL_MIME_FILTER_BASIC_BASE64_DEC:
/* output can't possibly exceed the input size */
camel_mime_filter_set_size(mf, len+3, FALSE);
diff --git a/camel/camel-private.h b/camel/camel-private.h
index 7eb12e6ae2..78bf1467a8 100644
--- a/camel/camel-private.h
+++ b/camel/camel-private.h
@@ -142,6 +142,7 @@ struct _CamelFolderSummaryPrivate {
struct _CamelMimeFilterIndex *filter_index;
struct _CamelMimeFilterBasic *filter_64;
struct _CamelMimeFilterBasic *filter_qp;
+ struct _CamelMimeFilterBasic *filter_uu;
struct _CamelMimeFilterSave *filter_save;
struct _CamelMimeFilterHTML *filter_html;