ph10 2006/03/08 11:13:07 GMT
Modified files:
exim-doc/doc-txt ChangeLog
exim-src/src expand.c functions.h parse.c sieve.c
Log:
Allow for linefold when generating more than one RFC 2047 encoded-word.
Sieve uses this.
Revision Changes Path
1.326 +4 -0 exim/exim-doc/doc-txt/ChangeLog
1.57 +1 -1 exim/exim-src/src/expand.c
1.24 +1 -1 exim/exim-src/src/functions.h
1.9 +5 -2 exim/exim-src/src/parse.c
1.19 +1 -1 exim/exim-src/src/sieve.c
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.325
retrieving revision 1.326
diff -u -r1.325 -r1.326
--- ChangeLog 8 Mar 2006 10:49:18 -0000 1.325
+++ ChangeLog 8 Mar 2006 11:13:07 -0000 1.326
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.325 2006/03/08 10:49:18 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.326 2006/03/08 11:13:07 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -295,6 +295,10 @@
responses to authentication challenges, though it was showing the
challenges; (ii) I've removed the CR characters from the debug output for
SMTP output lines.
+
+PH/58 Allow for the insertion of a newline as well as a space when a string
+ is turned into more than one encoded-word during RFC 2047 encoding. The
+ Sieve code now uses this.
Exim version 4.60
Index: expand.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/expand.c,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -r1.56 -r1.57
--- expand.c 1 Mar 2006 11:40:51 -0000 1.56
+++ expand.c 8 Mar 2006 11:13:07 -0000 1.57
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/expand.c,v 1.56 2006/03/01 11:40:51 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/expand.c,v 1.57 2006/03/08 11:13:07 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -4737,7 +4737,7 @@
{
uschar buffer[2048];
uschar *string = parse_quote_2047(sub, Ustrlen(sub), headers_charset,
- buffer, sizeof(buffer));
+ buffer, sizeof(buffer), FALSE);
yield = string_cat(yield, &size, &ptr, string, Ustrlen(string));
continue;
}
Index: functions.h
===================================================================
RCS file: /home/cvs/exim/exim-src/src/functions.h,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- functions.h 28 Feb 2006 11:25:40 -0000 1.23
+++ functions.h 8 Mar 2006 11:13:07 -0000 1.24
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/functions.h,v 1.23 2006/02/28 11:25:40 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/functions.h,v 1.24 2006/03/08 11:13:07 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -176,7 +176,7 @@
extern uschar *parse_find_at(uschar *);
extern uschar *parse_fix_phrase(uschar *, int, uschar *, int);
extern uschar *parse_message_id(uschar *, uschar **, uschar **);
-extern uschar *parse_quote_2047(uschar *, int, uschar *, uschar *, int);
+extern uschar *parse_quote_2047(uschar *, int, uschar *, uschar *, int, BOOL);
extern BOOL queue_action(uschar *, int, uschar **, int, int);
extern void queue_check_only(void);
Index: parse.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/parse.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- parse.c 28 Feb 2006 11:25:40 -0000 1.8
+++ parse.c 8 Mar 2006 11:13:07 -0000 1.9
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/parse.c,v 1.8 2006/02/28 11:25:40 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/parse.c,v 1.9 2006/03/08 11:13:07 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -854,6 +854,8 @@
charset the name of the character set; NULL => iso-8859-1
buffer the buffer to put the answer in
buffer_size the size of the buffer
+ fold if TRUE, a newline is inserted before the separating space when
+ more than one encoded-word is generated
Returns: pointer to the original string, if no quoting needed, or
pointer to buffer containing the quoted string, or
@@ -863,7 +865,7 @@
uschar *
parse_quote_2047(uschar *string, int len, uschar *charset, uschar *buffer,
- int buffer_size)
+ int buffer_size, BOOL fold)
{
uschar *s = string;
uschar *p, *t;
@@ -890,6 +892,7 @@
{
*t++ = '?';
*t++ = '=';
+ if (fold) *t++ = '\n';
*t++ = ' ';
p = t;
Ustrncpy(p, buffer, hlen);
@@ -989,7 +992,7 @@
if ((*s < 32 && *s != '\t') || *s > 126) break;
if (i < len) return parse_quote_2047(phrase, len, headers_charset, buffer,
- buffer_size);
+ buffer_size, FALSE);
/* No non-printers; use the RFC 822 quoting rules */
Index: sieve.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/sieve.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- sieve.c 1 Mar 2006 10:40:03 -0000 1.18
+++ sieve.c 8 Mar 2006 11:13:07 -0000 1.19
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/sieve.c,v 1.18 2006/03/01 10:40:03 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/sieve.c,v 1.19 2006/03/08 11:13:07 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -2854,7 +2854,7 @@
/* Allocation is larger than neccessary, but enough even for split MIME words */
buffer_capacity=32+4*subject.length;
buffer=store_get(buffer_capacity);
- addr->reply->subject=parse_quote_2047(subject.character, subject.length, US"utf-8", buffer, buffer_capacity);
+ addr->reply->subject=parse_quote_2047(subject.character, subject.length, US"utf-8", buffer, buffer_capacity, TRUE);
addr->reply->oncelog=once;
addr->reply->once_repeat=days*86400;