diff options
Diffstat (limited to 'camel')
-rw-r--r-- | camel/ChangeLog | 5 | ||||
-rw-r--r-- | camel/camel-mime-filter-smtp.c | 20 |
2 files changed, 15 insertions, 10 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index c2961e5853..a3b614049f 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,3 +1,8 @@ +2000-06-02 Jeffrey Stedfast <fejj@helixcode.com> + + * camel-mime-filter-smtp.c (filter): Fixed the filter so that it wouldn't + insert garbage under certain conditions. + 2000-06-02 Christopher James Lahey <clahey@helixcode.com> * camel-session.c: Don't ref the services in the cache. diff --git a/camel/camel-mime-filter-smtp.c b/camel/camel-mime-filter-smtp.c index fca4b1684d..2b769fde72 100644 --- a/camel/camel-mime-filter-smtp.c +++ b/camel/camel-mime-filter-smtp.c @@ -108,9 +108,9 @@ filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, s if (c == '\n' || !midline) { /* if there isn't already a carriage-return before the line-feed, count it */ - if (*(inptr-1) == '\n' && *(inptr-2) != '\r') { + if (c == '\n') { linecount++; - node = alloca(sizeof(*node)); + node = alloca (sizeof (*node)); node->type = EOLN_NODE; node->pointer = inptr - 1; node->next = NULL; @@ -121,7 +121,7 @@ filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, s left = inend - inptr; if (left < 2) { if (*inptr == '.') { - camel_mime_filter_backup(mf, inptr, left); + camel_mime_filter_backup (mf, inptr, left); midline = FALSE; inend = inptr; break; @@ -131,7 +131,7 @@ filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, s if (left > 0 && *inptr == '.' && *(inptr+1) != '.') { midline = TRUE; dotcount++; - node = alloca(sizeof(*node)); + node = alloca (sizeof (*node)); node->type = DOT_NODE; node->pointer = inptr; node->next = NULL; @@ -151,18 +151,18 @@ filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, s f->midline = midline; if (dotcount > 0 || linecount > 0) { - camel_mime_filter_set_size(mf, len + dotcount + linecount, FALSE); + camel_mime_filter_set_size (mf, len + dotcount + linecount, FALSE); node = head; inptr = in; outptr = mf->outbuf; while (node) { if (node->type == EOLN_NODE) { - memcpy(outptr, inptr, node->pointer - inptr); + memcpy (outptr, inptr, node->pointer - inptr); outptr += node->pointer - inptr; *outptr++ = '\r'; } else { if (node->type == DOT_NODE) { - memcpy(outptr, inptr, node->pointer - inptr); + memcpy (outptr, inptr, node->pointer - inptr); outptr += node->pointer - inptr; *outptr++ = '.'; } @@ -170,19 +170,19 @@ filter(CamelMimeFilter *mf, char *in, size_t len, size_t prespace, char **out, s inptr = node->pointer; node = node->next; } - memcpy(outptr, inptr, inend - inptr); + memcpy (outptr, inptr, inend - inptr); outptr += inend - inptr; *out = mf->outbuf; *outlen = outptr - mf->outbuf; *outprespace = mf->outbuf - mf->outreal; - d(printf("Filtered '%.*s'\n", *outlen, *out)); + d(printf ("Filtered '%.*s'\n", *outlen, *out)); } else { *out = in; *outlen = inend - in; *outprespace = prespace; - d(printf("Filtered '%.*s'\n", *outlen, *out)); + d(printf ("Filtered '%.*s'\n", *outlen, *out)); } } |