summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2004-06-09 07:55:16 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2004-06-09 07:55:16 +0000
commit366f4dd93b53bf414d6dcc8032446570939b75e0 (patch)
treebe20cd63f19688682b79a36db7c8fb08fff762a6
parentb68f2bcbb9c40539b992aaeb99125e709350662a (diff)
downloadmailutils-366f4dd93b53bf414d6dcc8032446570939b75e0.tar.gz
mailutils-366f4dd93b53bf414d6dcc8032446570939b75e0.tar.bz2
Use mu_decode_filter.
-rw-r--r--mailbox/rfc2047.c38
1 files changed, 6 insertions, 32 deletions
diff --git a/mailbox/rfc2047.c b/mailbox/rfc2047.c
index c12a64a12..df5fa6de5 100644
--- a/mailbox/rfc2047.c
+++ b/mailbox/rfc2047.c
@@ -27,8 +27,6 @@
#include <mailutils/filter.h>
#include <mailutils/errno.h>
-enum mu_iconv_fallback_mode rfc2047_fallback_mode = mu_fallback_copy_octal;
-
int
rfc2047_decode (const char *tocode, const char *input, char **ptostr)
{
@@ -71,7 +69,7 @@ rfc2047_decode (const char *tocode, const char *input, char **ptostr)
char *fromcode = NULL;
char *encoding_type = NULL;
char *encoded_text = NULL;
- stream_t filter = NULL, cvt = NULL;
+ stream_t filter = NULL;
stream_t in_stream = NULL;
const char *filter_type = NULL;
size_t nbytes = 0, size;
@@ -118,44 +116,20 @@ rfc2047_decode (const char *tocode, const char *input, char **ptostr)
memory_stream_create (&in_stream, 0, 0);
stream_write (in_stream, encoded_text, size, 0, NULL);
- status = filter_create (&filter, in_stream, filter_type,
- MU_FILTER_DECODE, MU_STREAM_READ);
+ status = mu_decode_filter (&filter, in_stream, filter_type, fromcode,
+ tocode);
if (status != 0)
break;
- status = filter_iconv_create (&cvt, filter, fromcode, tocode,
- MU_STREAM_NO_CLOSE,
- rfc2047_fallback_mode);
- if (status)
- {
- cvt = filter;
- /* Note: the filter stream is already open! */
- }
- else
- {
- if (stream_open (cvt))
- {
- stream_destroy (&cvt, stream_get_owner (cvt));
- cvt = filter;
- }
- else
- {
- int flags;
- stream_get_flags (cvt, &flags);
- flags &= ~MU_STREAM_NO_CLOSE;
- stream_set_flags (cvt, flags);
- }
- }
-
- while (stream_sequential_read (cvt, buffer + bufpos,
+ while (stream_sequential_read (filter, buffer + bufpos,
bufsize - bufpos,
&nbytes) == 0 && nbytes)
{
bufpos += nbytes;
}
- stream_close (cvt);
- stream_destroy (&cvt, stream_get_owner (cvt));
+ stream_close (filter);
+ stream_destroy (&filter, stream_get_owner (filter));
fromstr = sp + 1;
run_count = 1;

Return to:

Send suggestions and report system problems to the System administrator.