diff options
-rw-r--r-- | MANIFEST | 2 | ||||
-rw-r--r-- | ext/Digest/MD5/Changes | 24 | ||||
-rw-r--r-- | ext/Digest/MD5/MD5.pm | 4 | ||||
-rw-r--r-- | ext/Digest/MD5/MD5.xs | 55 | ||||
-rw-r--r-- | ext/Digest/MD5/t/badfile.t | 5 | ||||
-rw-r--r-- | ext/Digest/MD5/t/files.t | 52 | ||||
-rw-r--r-- | ext/Digest/MD5/t/md5-aaa.t (renamed from ext/Digest/MD5/t/aaa.t) | 4 |
7 files changed, 93 insertions, 53 deletions
@@ -169,10 +169,10 @@ ext/Digest/MD5/hints/irix_6.pl Hints for named architecture ext/Digest/MD5/Makefile.PL Digest::MD5 extension makefile writer ext/Digest/MD5/MD5.pm Digest::MD5 extension ext/Digest/MD5/MD5.xs Digest::MD5 extension -ext/Digest/MD5/t/aaa.t See if Digest::MD5 extension works ext/Digest/MD5/t/align.t See if Digest::MD5 extension works ext/Digest/MD5/t/badfile.t See if Digest::MD5 extension works ext/Digest/MD5/t/files.t See if Digest::MD5 extension works +ext/Digest/MD5/t/md5-aaa.t See if Digest::MD5 extension works ext/Digest/MD5/typemap Digest::MD5 extension ext/DynaLoader/dlutils.c Dynamic loader utilities for dl_*.xs files ext/DynaLoader/dl_aix.xs AIX implementation diff --git a/ext/Digest/MD5/Changes b/ext/Digest/MD5/Changes index 224e27174c..50de82fd99 100644 --- a/ext/Digest/MD5/Changes +++ b/ext/Digest/MD5/Changes @@ -1,3 +1,27 @@ +2002-05-01 Gisle Aas <gisle@ActiveState.com> + + Release 2.18 + + Changes #12954 and #16173 from bleadperl. Documentation typo fix + and some signed/unsigned mismatches that Microsoft's C compiler + complained about. + + The EBCDIC-aware md5-aaa.t from bleadperl. + + + +2002-04-25 Gisle Aas <gisle@ActiveState.com> + + Release 2.17 + + The SvPVbyte in perl-5.6.1 is buggy. Use the one from 5.7.3 + instead. + + Give warning if the function interface is used as instance + methods: $md5->md5_hex(). + + + 2001-09-07 Gisle Aas <gisle@ActiveState.com> Release 2.16 diff --git a/ext/Digest/MD5/MD5.pm b/ext/Digest/MD5/MD5.pm index 8de2416f9c..93e13e6048 100644 --- a/ext/Digest/MD5/MD5.pm +++ b/ext/Digest/MD5/MD5.pm @@ -3,7 +3,7 @@ package Digest::MD5; use strict; use vars qw($VERSION @ISA @EXPORT_OK); -$VERSION = '2.16'; # $Date: 2001/09/07 05:45:14 $ +$VERSION = '2.18'; # $Date: 2002/05/01 23:30:28 $ require Exporter; *import = \&Exporter::import; @@ -230,7 +230,7 @@ RFC 1321 This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. - Copyright 1998-2001 Gisle Aas. + Copyright 1998-2002 Gisle Aas. Copyright 1995-1996 Neil Winton. Copyright 1991-1992 RSA Data Security, Inc. diff --git a/ext/Digest/MD5/MD5.xs b/ext/Digest/MD5/MD5.xs index 0852e526db..4a30550f5c 100644 --- a/ext/Digest/MD5/MD5.xs +++ b/ext/Digest/MD5/MD5.xs @@ -1,3 +1,5 @@ +/* $Id: MD5.xs,v 1.34 2002/05/01 23:30:28 gisle Exp $ */ + /* * This library is free software; you can redistribute it and/or * modify it under the same terms as Perl itself. @@ -42,7 +44,27 @@ extern "C" { } #endif -#ifndef SvPVbyte +#include "patchlevel.h" +#if PATCHLEVEL <= 4 && !defined(PL_dowarn) + #define PL_dowarn dowarn +#endif + +#ifdef SvPVbyte + #if PERL_REVISION == 5 && PERL_VERSION < 7 + /* SvPVbyte does not work in perl-5.6.1, borrowed version for 5.7.3 */ + #undef SvPVbyte + #define SvPVbyte(sv, lp) \ + ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK) \ + ? ((lp = SvCUR(sv)), SvPVX(sv)) : my_sv_2pvbyte(aTHX_ sv, &lp)) + + static char * + my_sv_2pvbyte(pTHX_ register SV *sv, STRLEN *lp) + { + sv_utf8_downgrade(sv,0); + return SvPV(sv,*lp); + } + #endif +#else #define SvPVbyte SvPV #endif @@ -619,14 +641,31 @@ md5(...) unsigned char digeststr[16]; PPCODE: MD5Init(&ctx); - if (PL_dowarn && items > 1) { - data = (unsigned char *)SvPVbyte(ST(0), len); - if (len == 11 && memEQ("Digest::MD5", data, 11)) { - char *f = (ix == F_BIN) ? "md5" : - (ix == F_HEX) ? "md5_hex" : "md5_base64"; - warn("&Digest::MD5::%s function probably called as method", f); - } + + if (PL_dowarn) { + char *msg = 0; + if (items == 1) { + if (SvROK(ST(0))) { + SV* sv = SvRV(ST(0)); + if (SvOBJECT(sv) && strEQ(HvNAME(SvSTASH(sv)), "Digest::MD5")) + msg = "probably called as method"; + else + msg = "called with reference argument"; + } + } + else if (items > 1) { + data = (unsigned char *)SvPVbyte(ST(0), len); + if (len == 11 && memEQ("Digest::MD5", data, 11)) { + msg = "probably called as class method"; + } + } + if (msg) { + char *f = (ix == F_BIN) ? "md5" : + (ix == F_HEX) ? "md5_hex" : "md5_base64"; + warn("&Digest::MD5::%s function %s", f, msg); + } } + for (i = 0; i < items; i++) { data = (unsigned char *)(SvPVbyte(ST(i), len)); MD5Update(&ctx, data, len); diff --git a/ext/Digest/MD5/t/badfile.t b/ext/Digest/MD5/t/badfile.t index 63effdfc21..d066d0def6 100644 --- a/ext/Digest/MD5/t/badfile.t +++ b/ext/Digest/MD5/t/badfile.t @@ -1,8 +1,3 @@ -BEGIN { - chdir 't' if -d 't'; - @INC = '../lib'; -} - # Digest::MD5 2.07 and older used to trigger a core dump when # passed an illegal file handle that failed to open. diff --git a/ext/Digest/MD5/t/files.t b/ext/Digest/MD5/t/files.t index 65ecb543ca..b1abe19308 100644 --- a/ext/Digest/MD5/t/files.t +++ b/ext/Digest/MD5/t/files.t @@ -1,51 +1,35 @@ -BEGIN { - chdir 't' if -d 't'; - @INC = '../lib'; -} - -print "1..2\n"; +print "1..5\n"; use strict; use Digest::MD5 qw(md5 md5_hex md5_base64); # -# This is the output of: 'md5sum MD5.pm MD5.xs' +# This is the output of: 'md5sum Changes README MD5.pm MD5.xs rfc1321.txt' # -my $EXPECT; - -if (ord('A') == 193) { # EBCDIC -$EXPECT = <<EOT; -ee6a09094632cd610199278bbb0f910e ext/Digest/MD5/MD5.pm -94f873d905cd20a12d8ef4cdbdbcd89f ext/Digest/MD5/MD5.xs -EOT -} else { # ASCII -$EXPECT = <<EOT; -665ddc08b12d6b1bf85ac6dc5aae68b3 ext/Digest/MD5/MD5.pm -5f21e907b2e7dbffe6aba2c762ea93d0 ext/Digest/MD5/MD5.xs +my $EXPECT = <<EOT; +23cafa2de11474f0df8f808cc588bcc9 Changes +3519f3d02c7c91158f732f0f00064657 README +0268931475ae2a2e843ff58504cfa3f0 MD5.pm +1be293491bba726810f8e87671ee0328 MD5.xs +754b9db19f79dbc4992f7166eb0f37ce rfc1321.txt EOT + +if (!(-f "README") && -f "../README") { + chdir("..") or die "Can't chdir: $!"; } +my $testno = 0; + my $B64 = 1; eval { require MIME::Base64; }; if ($@) { print $@; - print "# Will not test base64 methods\n"; + print "Will not test base64 methods\n"; $B64 = 0; } -my $testno = 0; - -use File::Spec; - for (split /^/, $EXPECT) { my($md5hex, $file) = split ' '; - my @path = split(m:/:, $file); - my $last = pop @path; - my $path = File::Spec->updir; - while (@path) { - $path = File::Spec->catdir($path, shift @path); - } - $file = File::Spec->catfile($path, $last); my $md5bin = pack("H*", $md5hex); my $md5b64; if ($B64) { @@ -126,9 +110,7 @@ sub digest_file #print "$file $method\n"; open(FILE, $file) or die "Can't open $file: $!"; -# Digests above are generated on UNIX without CRLF -# so leave handles in text mode -# binmode(FILE); + binmode(FILE); my $digest = Digest::MD5->new->addfile(*FILE)->$method(); close(FILE); @@ -140,9 +122,7 @@ sub cat_file my($file) = @_; local $/; # slurp open(FILE, $file) or die "Can't open $file: $!"; -# Digests above are generated on UNIX without CRLF -# so leave handles in text mode -# binmode(FILE); + binmode(FILE); my $tmp = <FILE>; close(FILE); $tmp; diff --git a/ext/Digest/MD5/t/aaa.t b/ext/Digest/MD5/t/md5-aaa.t index f3f3202cb9..3069a06089 100644 --- a/ext/Digest/MD5/t/aaa.t +++ b/ext/Digest/MD5/t/md5-aaa.t @@ -1,6 +1,8 @@ BEGIN { chdir 't' if -d 't'; - @INC = '../lib'; + if ($ENV{PERL_CORE}) { + @INC = '../lib'; + } } use strict; |