aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-mime-filter-basic.c
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@ximian.com>2002-01-18 03:21:11 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2002-01-18 03:21:11 +0800
commiteea1e59abbbc3e8d26c454d13a9fb59d88e652e2 (patch)
treec0ac419b8c1e6f753f52b75775e78b559379f8be /camel/camel-mime-filter-basic.c
parentbda8b73fe19ec3881f79f8d3d8cfc575dceef6de (diff)
downloadgsoc2013-evolution-eea1e59abbbc3e8d26c454d13a9fb59d88e652e2.tar
gsoc2013-evolution-eea1e59abbbc3e8d26c454d13a9fb59d88e652e2.tar.gz
gsoc2013-evolution-eea1e59abbbc3e8d26c454d13a9fb59d88e652e2.tar.bz2
gsoc2013-evolution-eea1e59abbbc3e8d26c454d13a9fb59d88e652e2.tar.lz
gsoc2013-evolution-eea1e59abbbc3e8d26c454d13a9fb59d88e652e2.tar.xz
gsoc2013-evolution-eea1e59abbbc3e8d26c454d13a9fb59d88e652e2.tar.zst
gsoc2013-evolution-eea1e59abbbc3e8d26c454d13a9fb59d88e652e2.zip
Stop uudecoding once the CAMEL_UUDECODE_STATE_END state bit gets set. Set
2002-01-17 Jeffrey Stedfast <fejj@ximian.com> * camel-mime-filter-basic.c (filter): Stop uudecoding once the CAMEL_UUDECODE_STATE_END state bit gets set. Set the CAMEL_UUDECODE_STATE_BEGIN state bit once we find the begin line. (reset): No longer have uu_begin or uulen state variables, these are now stuffed into a single state variable. * camel-mime-utils.c (uudecode_step): No longer needs a uulen argument and also keeps track of whether or not the end of the encoded data has been found in 'state'. (uuencode_step): Now stuffs uulen into state so that the uulen argument is no longer needed. (uuencode_close): Same. svn path=/trunk/; revision=15349
Diffstat (limited to 'camel/camel-mime-filter-basic.c')
-rw-r--r--camel/camel-mime-filter-basic.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/camel/camel-mime-filter-basic.c b/camel/camel-mime-filter-basic.c
index 5e2b9f5107..efb9b9818e 100644
--- a/camel/camel-mime-filter-basic.c
+++ b/camel/camel-mime-filter-basic.c
@@ -54,7 +54,6 @@ camel_mime_filter_basic_init (CamelMimeFilterBasic *obj)
{
obj->state = 0;
obj->save = 0;
- obj->uulen = 0;
}
@@ -82,9 +81,6 @@ reset(CamelMimeFilter *mf)
{
CamelMimeFilterBasic *f = (CamelMimeFilterBasic *)mf;
- f->uu_begin = FALSE;
- f->uulen = 0;
-
switch(f->type) {
case CAMEL_MIME_FILTER_BASIC_QP_ENC:
f->state = -1;
@@ -117,8 +113,7 @@ complete(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out,
case CAMEL_MIME_FILTER_BASIC_UU_ENC:
/* won't go to more than 2 * (x + 2) + 62 */
camel_mime_filter_set_size (mf, (len + 2) * 2 + 62, FALSE);
- newlen = uuencode_close (in, len, mf->outbuf, f->uubuf, &f->state,
- &f->save, &f->uulen);
+ newlen = uuencode_close (in, len, mf->outbuf, f->uubuf, &f->state, &f->save);
g_assert (newlen <= (len + 2) * 2 + 62);
break;
case CAMEL_MIME_FILTER_BASIC_BASE64_DEC:
@@ -134,10 +129,10 @@ complete(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out,
g_assert(newlen <= len+2);
break;
case CAMEL_MIME_FILTER_BASIC_UU_DEC:
- if (f->uu_begin) {
+ if ((f->state & CAMEL_UUDECODE_STATE_BEGIN) && !(f->state & CAMEL_UUDECODE_STATE_END)) {
/* "begin <mode> <filename>\n" has been found, so we can now start decoding */
camel_mime_filter_set_size (mf, len + 3, FALSE);
- newlen = uudecode_step (in, len, mf->outbuf, &f->state, &f->save, &f->uulen);
+ newlen = uudecode_step (in, len, mf->outbuf, &f->state, &f->save);
} else {
newlen = 0;
}
@@ -181,7 +176,7 @@ filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, s
case CAMEL_MIME_FILTER_BASIC_UU_ENC:
/* won't go to more than 2 * (x + 2) + 62 */
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);
+ newlen = uuencode_step (in, len, mf->outbuf, f->uubuf, &f->state, &f->save);
g_assert (newlen <= (len + 2) * 2 + 62);
break;
case CAMEL_MIME_FILTER_BASIC_BASE64_DEC:
@@ -197,7 +192,7 @@ filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, s
g_assert(newlen <= len + 2);
break;
case CAMEL_MIME_FILTER_BASIC_UU_DEC:
- if (!f->uu_begin) {
+ if (!(f->state & CAMEL_UUDECODE_STATE_BEGIN)) {
register char *inptr, *inend;
size_t left;
@@ -214,7 +209,7 @@ filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, s
for (in = inptr; inptr < inend && *inptr != '\n'; inptr++);
if (inptr < inend) {
inptr++;
- f->uu_begin = TRUE;
+ f->state |= CAMEL_UUDECODE_STATE_BEGIN;
/* we can start uudecoding... */
in = inptr;
len = inend - in;
@@ -232,10 +227,10 @@ filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, s
}
}
- if (f->uu_begin) {
+ if ((f->state & CAMEL_UUDECODE_STATE_BEGIN) && !(f->state & CAMEL_UUDECODE_STATE_END)) {
/* "begin <mode> <filename>\n" has been found, so we can now start decoding */
camel_mime_filter_set_size (mf, len + 3, FALSE);
- newlen = uudecode_step (in, len, mf->outbuf, &f->state, &f->save, &f->uulen);
+ newlen = uudecode_step (in, len, mf->outbuf, &f->state, &f->save);
} else {
newlen = 0;
}