diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2004-06-09 07:55:16 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2004-06-09 07:55:16 +0000 |
commit | 366f4dd93b53bf414d6dcc8032446570939b75e0 (patch) | |
tree | be20cd63f19688682b79a36db7c8fb08fff762a6 | |
parent | b68f2bcbb9c40539b992aaeb99125e709350662a (diff) | |
download | mailutils-366f4dd93b53bf414d6dcc8032446570939b75e0.tar.gz mailutils-366f4dd93b53bf414d6dcc8032446570939b75e0.tar.bz2 |
Use mu_decode_filter.
-rw-r--r-- | mailbox/rfc2047.c | 38 |
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; |