ph10 2007/01/31 11:30:08 GMT
Modified files:
exim-doc/doc-txt ChangeLog NewStuff
exim-src ACKNOWLEDGMENTS
exim-src/src expand.c
exim-test/scripts/0000-Basic 0002
exim-test/stdout 0002
Log:
Add ${rfc2047d: expansion.
Revision Changes Path
1.466 +2 -0 exim/exim-doc/doc-txt/ChangeLog
1.133 +6 -0 exim/exim-doc/doc-txt/NewStuff
1.70 +3 -2 exim/exim-src/ACKNOWLEDGMENTS
1.79 +19 -0 exim/exim-src/src/expand.c
1.10 +7 -0 exim/exim-test/scripts/0000-Basic/0002
1.10 +7 -0 exim/exim-test/stdout/0002
Index: ChangeLog
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/ChangeLog,v
retrieving revision 1.465
retrieving revision 1.466
diff -u -r1.465 -r1.466
--- ChangeLog 30 Jan 2007 15:10:58 -0000 1.465
+++ ChangeLog 31 Jan 2007 11:30:08 -0000 1.466
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.465 2007/01/30 15:10:58 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/ChangeLog,v 1.466 2007/01/31 11:30:08 ph10 Exp $
Change log file for Exim from version 4.21
-------------------------------------------
@@ -66,6 +66,8 @@
patch, slightly modified), and move the expansion of helo_data till after
the connection is made in the smtp transport (so it can use these
values).
+
+PH/13 Added ${rfc2047d: to decoded RFC 2047 strings.
Exim version 4.66
Index: NewStuff
===================================================================
RCS file: /home/cvs/exim/exim-doc/doc-txt/NewStuff,v
retrieving revision 1.132
retrieving revision 1.133
diff -u -r1.132 -r1.133
--- NewStuff 30 Jan 2007 15:10:58 -0000 1.132
+++ NewStuff 31 Jan 2007 11:30:08 -0000 1.133
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.132 2007/01/30 15:10:58 ph10 Exp $
+$Cambridge: exim/exim-doc/doc-txt/NewStuff,v 1.133 2007/01/31 11:30:08 ph10 Exp $
New Features in Exim
--------------------
@@ -221,6 +221,12 @@
The use of helo_data applies both to sending messages and when doing
callouts.
+
+ 9. There is a new expansion operator ${rfc2047d: that decodes strings that
+ are encoded as per RFC 2047. Binary zero bytes are replaced by question
+ marks. Characters are converted into the character set defined by
+ headers_charset. Overlong RFC 2047 "words" are not recognized unless
+ check_rfc2047_length is set false.
Version 4.66
Index: ACKNOWLEDGMENTS
===================================================================
RCS file: /home/cvs/exim/exim-src/ACKNOWLEDGMENTS,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -r1.69 -r1.70
--- ACKNOWLEDGMENTS 30 Jan 2007 15:10:59 -0000 1.69
+++ ACKNOWLEDGMENTS 31 Jan 2007 11:30:08 -0000 1.70
@@ -1,4 +1,4 @@
-$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.69 2007/01/30 15:10:59 ph10 Exp $
+$Cambridge: exim/exim-src/ACKNOWLEDGMENTS,v 1.70 2007/01/31 11:30:08 ph10 Exp $
EXIM ACKNOWLEDGEMENTS
@@ -20,7 +20,7 @@
Philip Hazel
Lists created: 20 November 2002
-Last updated: 30 January 2007
+Last updated: 31 January 2007
THE OLD LIST
@@ -167,7 +167,8 @@
Magnus Holmgren Patch for filter_prepend_home
Patch for "h" flag in Domain Keys
Patch for $sending_ip_address/$sending_port
- Lots of other support
+ Patch for ${rfc2047d:
+ Lots of other maintenance support
Kjetil Torgrim Homme Patch for require_files problem on NFS file systems
Tom Hughes Suggested patch for $n bug in pipe command from filter
Pierre Humblet Continued Cygwin support
Index: expand.c
===================================================================
RCS file: /home/cvs/exim/exim-src/src/expand.c,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -r1.78 -r1.79
--- expand.c 30 Jan 2007 15:10:59 -0000 1.78
+++ expand.c 31 Jan 2007 11:30:08 -0000 1.79
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/exim-src/src/expand.c,v 1.78 2007/01/30 15:10:59 ph10 Exp $ */
+/* $Cambridge: exim/exim-src/src/expand.c,v 1.79 2007/01/31 11:30:08 ph10 Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
@@ -181,6 +181,7 @@
US"nhash",
US"quote",
US"rfc2047",
+ US"rfc2047d",
US"rxquote",
US"s",
US"sha1",
@@ -211,6 +212,7 @@
EOP_NHASH,
EOP_QUOTE,
EOP_RFC2047,
+ EOP_RFC2047D,
EOP_RXQUOTE,
EOP_S,
EOP_SHA1,
@@ -5081,6 +5083,23 @@
uschar *string = parse_quote_2047(sub, Ustrlen(sub), headers_charset,
buffer, sizeof(buffer), FALSE);
yield = string_cat(yield, &size, &ptr, string, Ustrlen(string));
+ continue;
+ }
+
+ /* RFC 2047 decode */
+
+ case EOP_RFC2047D:
+ {
+ int len;
+ uschar *error;
+ uschar *decoded = rfc2047_decode(sub, check_rfc2047_length,
+ headers_charset, '?', &len, &error);
+ if (error != NULL)
+ {
+ expand_string_message = error;
+ goto EXPAND_FAILED;
+ }
+ yield = string_cat(yield, &size, &ptr, decoded, len);
continue;
}
Index: 0002
===================================================================
RCS file: /home/cvs/exim/exim-test/scripts/0000-Basic/0002,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- 0002 8 Jan 2007 11:56:41 -0000 1.9
+++ 0002 31 Jan 2007 11:30:08 -0000 1.10
@@ -502,6 +502,13 @@
Long: ${rfc2047: here we go: a string that is going to be encoded: it will go over the 75-char limit}
Long: ${rfc2047: here we go: a string that is going to be encoded: it will go over the 75-char limit by a long way; in fact this one will go over the 150 character limit}
+# RFC 2047 decode
+
+${rfc2047d:abcd abcd}
+${rfc2047d:<:abcd:> =?iso-8859-8?Q?=3C=3Aabcd=3A=3E?=}
+${rfc2047d:<:ab cd:> =?iso-8859-8?Q?=3C=3Aab_cd=3A=3E?=}
+${rfc2047d:Long: =?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_i?= =?iso-8859-8?Q?t_will_go_over_the_75-char_limit?=}
+${rfc2047d:Long: =?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_i?= =?iso-8859-8?Q?t_will_go_over_the_75-char_limit_by_a_long_way=3B_in_fac?= =?iso-8859-8?Q?t_this_one_will_go_over_the_150_character_limit?=}
# UTF-8
Index: 0002
===================================================================
RCS file: /home/cvs/exim/exim-test/stdout/0002,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- 0002 8 Jan 2007 11:56:41 -0000 1.9
+++ 0002 31 Jan 2007 11:30:08 -0000 1.10
@@ -471,6 +471,13 @@
> Long: =?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_i?= =?iso-8859-8?Q?t_will_go_over_the_75-char_limit?=
> Long: =?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_i?= =?iso-8859-8?Q?t_will_go_over_the_75-char_limit_by_a_long_way=3B_in_fac?= =?iso-8859-8?Q?t_this_one_will_go_over_the_150_character_limit?=
>
+> # RFC 2047 decode
+>
+> abcd abcd
+> <:abcd:> <:abcd:>
+> <:ab cd:> <:ab cd:>
+> Long: here we go: a string that is going to be encoded: it will go over the 75-char limit
+> Long: here we go: a string that is going to be encoded: it will go over the 75-char limit by a long way; in fact this one will go over the 150 character limit
>
> # UTF-8
>