summaryrefslogtreecommitdiff
path: root/ext/MIME/Base64
diff options
context:
space:
mode:
authorGisle Aas <gisle@aas.no>2003-05-13 02:59:50 -0700
committerJarkko Hietaniemi <jhi@iki.fi>2003-05-13 18:39:40 +0000
commit2c634edc13b5b5cb4d6fa1bb56a8859a91a81976 (patch)
tree350fdbf330b10b3a25934377df20088c9fb20958 /ext/MIME/Base64
parent2f7da1686732e2a80aedec17c9767de6eadacd14 (diff)
downloadperl-2c634edc13b5b5cb4d6fa1bb56a8859a91a81976.tar.gz
Sync up MIME-Base64 to latest on CPAN
Message-ID: <lru1byzss9.fsf@caliper.activestate.com> p4raw-id: //depot/perl@19517
Diffstat (limited to 'ext/MIME/Base64')
-rw-r--r--ext/MIME/Base64/Base64.pm4
-rw-r--r--ext/MIME/Base64/Base64.xs20
-rw-r--r--ext/MIME/Base64/Changes37
-rw-r--r--ext/MIME/Base64/QuotedPrint.pm4
-rw-r--r--ext/MIME/Base64/t/quoted-print.t21
5 files changed, 77 insertions, 9 deletions
diff --git a/ext/MIME/Base64/Base64.pm b/ext/MIME/Base64/Base64.pm
index 378adf5981..ebf94ba6d5 100644
--- a/ext/MIME/Base64/Base64.pm
+++ b/ext/MIME/Base64/Base64.pm
@@ -1,5 +1,5 @@
#
-# $Id: Base64.pm,v 2.25 2003/01/05 08:01:33 gisle Exp $
+# $Id: Base64.pm,v 2.28 2003/05/13 16:21:25 gisle Exp $
package MIME::Base64;
@@ -137,7 +137,7 @@ require DynaLoader;
@ISA = qw(Exporter DynaLoader);
@EXPORT = qw(encode_base64 decode_base64);
-$VERSION = '2.16';
+$VERSION = '2.19';
eval { bootstrap MIME::Base64 $VERSION; };
if ($@) {
diff --git a/ext/MIME/Base64/Base64.xs b/ext/MIME/Base64/Base64.xs
index 6f855fb92a..d540f11adb 100644
--- a/ext/MIME/Base64/Base64.xs
+++ b/ext/MIME/Base64/Base64.xs
@@ -1,4 +1,4 @@
-/* $Id: Base64.xs,v 1.32 2003/01/05 07:49:07 gisle Exp $
+/* $Id: Base64.xs,v 1.36 2003/05/13 16:21:25 gisle Exp $
Copyright 1997-2003 Gisle Aas
@@ -46,6 +46,13 @@ extern "C" {
#define PL_dowarn dowarn
#endif
+#ifdef G_WARN_ON
+ #define DOWARN (PL_dowarn & G_WARN_ON)
+#else
+ #define DOWARN PL_dowarn
+#endif
+
+
#define MAX_LINE 76 /* size of encoded lines */
static char basis_64[] =
@@ -209,7 +216,7 @@ decode_base64(sv)
if (str == end) {
if (i < 4) {
- if (i && PL_dowarn)
+ if (i && DOWARN)
warn("Premature end of base64 data");
if (i < 2) goto thats_it;
if (i == 2) c[2] = EQ;
@@ -220,7 +227,7 @@ decode_base64(sv)
} while (i < 4);
if (c[0] == EQ || c[1] == EQ) {
- if (PL_dowarn) warn("Premature padding of base64 data");
+ if (DOWARN) warn("Premature padding of base64 data");
break;
}
/* printf("c0=%d,c1=%d,c2=%d,c3=%d\n", c[0],c[1],c[2],c[3]);*/
@@ -324,7 +331,7 @@ encode_qp(sv,...)
}
}
- if (*p == '\n') {
+ if (*p == '\n' && eol_len) {
sv_catpvn(RETVAL, eol, eol_len);
p++;
linelen = 0;
@@ -410,6 +417,11 @@ decode_qp(sv)
}
}
}
+ if (whitespace) {
+ while (whitespace < str) {
+ *r++ = *whitespace++;
+ }
+ }
*r = '\0';
SvCUR_set(RETVAL, r - SvPVX(RETVAL));
diff --git a/ext/MIME/Base64/Changes b/ext/MIME/Base64/Changes
index fab3cca66e..24c31f0d54 100644
--- a/ext/MIME/Base64/Changes
+++ b/ext/MIME/Base64/Changes
@@ -1,3 +1,40 @@
+2003-05-13 Gisle Aas <gisle@ActiveState.com>
+
+ Release 2.19
+
+ decode_qp() did eat up all trailing whitespace in the string decoded.
+ Only whitespace in front of "\n" should go.
+
+ Win32 fix for t/warn.t by Reini Urban <rurban@x-ray.at>.
+
+
+
+2003-03-09 Gisle Aas <gisle@ActiveState.com>
+
+ Release 2.18
+
+ Fix up INSTALLDIRS for perl-5.8 and newer.
+
+
+
+2003-03-09 Gisle Aas <gisle@ActiveState.com>
+
+ Release 2.17
+
+ Make it reliable to disable base64 decoding warnings by
+ resetting $^W in recent perls. Would really like to be
+ able to do real lexical warnings but the current mechanism
+ does not seems suitable for XS code.
+
+ Passing "" as $eol to encode_qp() disable soft line
+ breaks as well.
+
+ Sync up with changes in bleadperl:
+ - safer patchlevel.h include
+ - bad cast
+
+
+
2003-01-05 Gisle Aas <gisle@ActiveState.com>
Release 2.16
diff --git a/ext/MIME/Base64/QuotedPrint.pm b/ext/MIME/Base64/QuotedPrint.pm
index 778cdab0df..08d3468a10 100644
--- a/ext/MIME/Base64/QuotedPrint.pm
+++ b/ext/MIME/Base64/QuotedPrint.pm
@@ -1,5 +1,5 @@
#
-# $Id: QuotedPrint.pm,v 2.11 2003/01/05 08:01:33 gisle Exp $
+# $Id: QuotedPrint.pm,v 2.12 2003/05/13 16:21:25 gisle Exp $
package MIME::QuotedPrint;
@@ -73,7 +73,7 @@ require Exporter;
use Carp qw(croak);
-$VERSION = "2.16";
+$VERSION = "2.19";
use MIME::Base64; # try to load XS version of encode_qp
unless (defined &encode_qp) {
diff --git a/ext/MIME/Base64/t/quoted-print.t b/ext/MIME/Base64/t/quoted-print.t
index 66427246e1..884bebb395 100644
--- a/ext/MIME/Base64/t/quoted-print.t
+++ b/ext/MIME/Base64/t/quoted-print.t
@@ -85,9 +85,13 @@ y. -- H. L. Mencken"],
# some extra special cases we have had problems with
["$x70!2=x=x" => "$x70!2=3D=\nx=3Dx"],
["$x70!2345$x70!2345$x70!23456\n", "$x70!2345=\n$x70!2345=\n$x70!23456\n"],
+
+ # trailing whitespace
+ ["foo \t ", "foo=20=09=20"],
+ ["foo\t \n \t", "foo=09=20\n=20=09"],
);
-$notests = @tests + 3;
+$notests = @tests + 7;
print "1..$notests\n";
$testno = 0;
@@ -127,5 +131,20 @@ print "not " unless decode_qp("foo \r\n\r\nfoo =\r\n\r\nfoo=20\r\n\r\n") eq
"foo\n\nfoo \nfoo \n\n";
$testno++; print "ok $testno\n";
+# Trailing whitespace
+print "not " unless decode_qp("foo ") eq "foo ";
+$testno++; print "ok $testno\n";
+
+print "not " unless decode_qp("foo \n") eq "foo\n";
+$testno++; print "ok $testno\n";
+
+# Test with with alternative line break
+print "not " unless encode_qp("$x70!2345$x70\n", "***") eq "$x70!2345=***$x70***";
+$testno++; print "ok $testno\n";
+
+# Test with no line breaks
+print "not " unless encode_qp("$x70!2345$x70\n", "") eq "$x70!2345$x70=0A";
+$testno++; print "ok $testno\n";
+
print "not " if $] >= 5.006 && (eval 'encode_qp("XXX \x{100}")' || !$@);
$testno++; print "ok $testno\n";