'CGI' => {
'MAINTAINER' => 'lstein',
- 'DISTRIBUTION' => 'MARKSTOS/CGI.pm-3.60.tar.gz',
+ 'DISTRIBUTION' => 'MARKSTOS/CGI.pm-3.61.tar.gz',
'FILES' => q[cpan/CGI],
'EXCLUDED' => [
qw( cgi_docs.html
'Digest::SHA' => {
'MAINTAINER' => 'mshelor',
- 'DISTRIBUTION' => 'MSHELOR/Digest-SHA-5.72.tar.gz',
+ 'DISTRIBUTION' => 'MSHELOR/Digest-SHA-5.73.tar.gz',
'FILES' => q[cpan/Digest-SHA],
'EXCLUDED' => [
qw( t/pod.t
'Unicode::Collate' => {
'MAINTAINER' => 'sadahiro',
- 'DISTRIBUTION' => 'SADAHIRO/Unicode-Collate-0.90.tar.gz',
+ 'DISTRIBUTION' => 'SADAHIRO/Unicode-Collate-0.91.tar.gz',
'FILES' => q[cpan/Unicode-Collate],
'EXCLUDED' => [
qr{N$},
'Unicode::Normalize' => {
'MAINTAINER' => 'sadahiro',
- 'DISTRIBUTION' => 'SADAHIRO/Unicode-Normalize-1.15.tar.gz',
+ 'DISTRIBUTION' => 'SADAHIRO/Unicode-Normalize-1.16.tar.gz',
'FILES' => q[cpan/Unicode-Normalize],
'EXCLUDED' => [
qw( MANIFEST.N
+Version 3.61 Nov 2nd, 2012
+
+ (No code changes)
+
+ [INTERNALS]
+ - formatting of CGI::Carp documentation was improved. Thanks to benkasminbullock.
+ - un-TODO some tests in t/tmpdir.t that were passing in most cases.
+ More on this:
+ https://github.com/markstos/CGI.pm/issues/19#
+ https://github.com/markstos/CGI.pm/commit/cc73dc9807b0fabb56b3cdf1a9726588b2eda0f7
+
Version 3.60 Aug 15th, 2012
[BUG FIXES]
# The revision is no longer being updated since moving to git.
$CGI::revision = '$Id: CGI.pm,v 1.266 2009/07/30 16:32:34 lstein Exp $';
-$CGI::VERSION='3.60';
+$CGI::VERSION='3.61';
# HARD-CODED LOCATION FOR FILE UPLOAD TEMPORARY FILES.
# UNCOMMENT THIS ONLY IF YOU KNOW WHAT YOU'RE DOING.
use CGI::Carp
-And the standard warn(), die (), croak(), confess() and carp() calls
-will automagically be replaced with functions that write out nicely
-time-stamped messages to the HTTP server error log.
+The standard warn(), die (), croak(), confess() and carp() calls will
+be replaced with functions that write time-stamped messages to the
+HTTP server error log.
For example:
use CGI::Carp qw(carpout);
-The carpout() function requires one argument, which should be a
-reference to an open filehandle for writing errors. It should be
-called in a C<BEGIN> block at the top of the CGI application so that
-compiler errors will be caught. Example:
+The carpout() function requires one argument, a reference to an open
+filehandle for writing errors. It should be called in a C<BEGIN>
+block at the top of the CGI application so that compiler errors will
+be caught. Example:
BEGIN {
use CGI::Carp qw(carpout);
carpout(LOG);
}
-carpout() does not handle file locking on the log for you at this point.
-Also, note that carpout() does not work with in-memory file handles, although
-a patch would be welcome to address that.
+carpout() does not handle file locking on the log for you at this
+point. Also, note that carpout() does not work with in-memory file
+handles, although a patch would be welcome to address that.
-The real STDERR is not closed -- it is moved to CGI::Carp::SAVEERR. Some
-servers, when dealing with CGI scripts, close their connection to the
-browser when the script closes STDOUT and STDERR. CGI::Carp::SAVEERR is there to
-prevent this from happening prematurely.
+The real STDERR is not closed -- it is moved to CGI::Carp::SAVEERR.
+Some servers, when dealing with CGI scripts, close their connection to
+the browser when the script closes STDOUT and STDERR.
+CGI::Carp::SAVEERR is there to prevent this from happening
+prematurely.
You can pass filehandles to carpout() in a variety of ways. The "correct"
way according to Tom Christiansen is to pass a reference to a filehandle
=head1 MAKING PERL ERRORS APPEAR IN THE BROWSER WINDOW
-If you want to send fatal (die, confess) errors to the browser, ask to
-import the special "fatalsToBrowser" subroutine:
+If you want to send fatal (die, confess) errors to the browser, import
+the special "fatalsToBrowser" subroutine:
use CGI::Carp qw(fatalsToBrowser);
die "Bad error here";
-Fatal errors will now be echoed to the browser as well as to the log. CGI::Carp
-arranges to send a minimal HTTP header to the browser so that even errors that
-occur in the early compile phase will be seen.
-Nonfatal errors will still be directed to the log file only (unless redirected
-with carpout).
+Fatal errors will now be echoed to the browser as well as to the log.
+CGI::Carp arranges to send a minimal HTTP header to the browser so
+that even errors that occur in the early compile phase will be seen.
+Nonfatal errors will still be directed to the log file only (unless
+redirected with carpout).
Note that fatalsToBrowser may B<not> work well with mod_perl version 2.0
and higher.
This may have some undesireable effects when the purpose of doing the
eval is to determine which of several algorithms is to be used.
-By setting C<$CGI::Carp::TO_BROWSER> to 0 you can suppress printing the C<die> messages
-but without all of the complexity of using C<set_die_handler>.
-You can localize this effect to inside C<eval> bodies if this is desireable:
-For example:
+By setting C<$CGI::Carp::TO_BROWSER> to 0 you can suppress printing
+the C<die> messages but without all of the complexity of using
+C<set_die_handler>. You can localize this effect to inside C<eval>
+bodies if this is desireable: For example:
eval {
local $CGI::Carp::TO_BROWSER = 0;
=head1 MAKING WARNINGS APPEAR AS HTML COMMENTS
-It is now also possible to make non-fatal errors appear as HTML
-comments embedded in the output of your program. To enable this
-feature, export the new "warningsToBrowser" subroutine. Since sending
-warnings to the browser before the HTTP headers have been sent would
-cause an error, any warnings are stored in an internal buffer until
-you call the warningsToBrowser() subroutine with a true argument:
+It is also possible to make non-fatal errors appear as HTML comments
+embedded in the output of your program. To enable this feature,
+export the new "warningsToBrowser" subroutine. Since sending warnings
+to the browser before the HTTP headers have been sent would cause an
+error, any warnings are stored in an internal buffer until you call
+the warningsToBrowser() subroutine with a true argument:
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
use CGI qw(:standard);
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
-Address bug reports and comments to: lstein@cshl.org
-
=head1 SEE ALSO
-Carp, CGI::Base, CGI::BasePlus, CGI::Request, CGI::MiniSvr, CGI::Form,
-CGI::Response
+L<Carp>, L<CGI::Base>, L<CGI::BasePlus>, L<CGI::Request>,
+L<CGI::MiniSvr>, L<CGI::Form>, L<CGI::Response>.
=cut
CGITempFile->new;
is($CGITempFile::TMPDIRECTORY, $testdir, "\$CGITempFile::TMPDIRECTORY unchanged");
-TODO: {
- local $TODO = "figuring out why these tests fail on some platforms";
- ok(chmod 0500, $testdir, "revoking write access to $testdir");
- ok(! -w $testdir, "write access to $testdir revoked");
+ok(chmod 0500, $testdir, "revoking write access to $testdir");
+ok(! -w $testdir, "write access to $testdir revoked");
CGITempFile->new;
is($CGITempFile::TMPDIRECTORY, $testdir2,
- "unwritable \$CGITempFile::TMPDIRECTORY overridden");
+ "unwritable \$CGITempFile::TMPDIRECTORY overridden");
ok(chmod 0500, $testdir2, "revoking write access to $testdir2");
ok(! -w $testdir, "write access to $testdir revoked");
CGITempFile->new;
isnt($CGITempFile::TMPDIRECTORY, $testdir2,
- "unwritable \$ENV{TMPDIR} overridden");
+ "unwritable \$ENV{TMPDIR} overridden");
isnt($CGITempFile::TMPDIRECTORY, $testdir,
- "unwritable \$ENV{TMPDIR} not overridden with an unwritable \$CGITempFile::TMPDIRECTORY");
-}
+ "unwritable \$ENV{TMPDIR} not overridden with an unwritable \$CGITempFile::TMPDIRECTORY");
END { for ($testdir, $testdir2) { chmod 0700, $_; rmdir; } }
Revision history for Perl extension Digest::SHA.
+5.73 Wed Oct 31 04:32:44 MST 2012
+ - provided workaround for DEC compiler bug (ref. Makefile.PL)
+
5.72 Mon Sep 24 15:22:08 MST 2012
- adjusted module installation directory for later Perls
-- As of 5.11 Perl searches 'site' first, so use that
}
my $define = join(' ', @defines);
- # Workaround for DEC compiler bug, adopted from Digest::MD5
+ # Workaround for DEC compiler bug, adapted from Digest::MD5
my @extra = ();
if ($^O eq 'VMS') {
-Digest::SHA version 5.72
+Digest::SHA version 5.73
========================
Digest::SHA is a complete implementation of the NIST Secure Hash
use Fcntl;
use integer;
-$VERSION = '5.72_01';
+$VERSION = '5.73';
require Exporter;
require DynaLoader;
##
## Copyright (C) 2003-2012 Mark Shelor, All Rights Reserved
##
- ## Version: 5.72
- ## Mon Sep 24 15:22:08 MST 2012
+ ## Version: 5.73
+ ## Wed Oct 31 04:32:44 MST 2012
## shasum SYNOPSIS adapted from GNU Coreutils sha1sum.
## Add an "-a" option for algorithm selection, a "-p"
use Fcntl;
use Getopt::Long;
-my $VERSION = "5.72";
+my $VERSION = "5.73";
## Try to use Digest::SHA. If not installed, use the slower
*
* Copyright (C) 2003-2012 Mark Shelor, All Rights Reserved
*
- * Version: 5.72
- * Mon Sep 24 15:22:08 MST 2012
+ * Version: 5.73
+ * Wed Oct 31 04:32:44 MST 2012
*
*/
*
* Copyright (C) 2003-2012 Mark Shelor, All Rights Reserved
*
- * Version: 5.72
- * Mon Sep 24 15:22:08 MST 2012
+ * Version: 5.73
+ * Wed Oct 31 04:32:44 MST 2012
*
*/
*
* Copyright (C) 2003-2012 Mark Shelor, All Rights Reserved
*
- * Version: 5.72
- * Mon Sep 24 15:22:08 MST 2012
+ * Version: 5.73
+ * Wed Oct 31 04:32:44 MST 2012
*
*/
#define SETBIT(s, pos) s[(pos) >> 3] |= (0x01 << (7 - (pos) % 8))
#define CLRBIT(s, pos) s[(pos) >> 3] &= ~(0x01 << (7 - (pos) % 8))
-#define NBYTES(nbits) ((nbits) > 0 ? 1 + (((nbits) - 1) >> 3) : 0)
+#define NBYTES(nbits) (((nbits) + 7) >> 3)
#define HEXLEN(nbytes) ((nbytes) << 1)
#define B64LEN(nbytes) (((nbytes) % 3 == 0) ? ((nbytes) / 3) * 4 \
: ((nbytes) / 3) * 4 + ((nbytes) % 3) + 1)
*
* Copyright (C) 2003-2012 Mark Shelor, All Rights Reserved
*
- * Version: 5.72
- * Mon Sep 24 15:22:08 MST 2012
+ * Version: 5.73
+ * Wed Oct 31 04:32:44 MST 2012
*
*/
Revision history for Perl module Unicode::Collate.
+0.91 Sun Nov 4 17:00:20 2012
+ - XSUB: use PERL_NO_GET_CONTEXT (see perlguts)
+ (see [rt.cpan.org #80313])
+
0.90 Sun Sep 23 10:42:26 2012
- perl 5.11.0 or later: Install to 'site' instead of 'perl'
(see [rt.cpan.org #79800])
no warnings 'utf8';
-our $VERSION = '0.90';
+our $VERSION = '0.91';
our $PACKAGE = __PACKAGE__;
### begin XS only ###
+
+#define PERL_NO_GET_CONTEXT /* we want efficiency */
+
+/* I guese no private function needs pTHX_ and aTHX_ */
+
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
-Unicode/Collate version 0.90
+Unicode/Collate version 0.91
===============================
NAME
Revision history for Perl extension Unicode::Normalize.
+1.16 Sun Nov 4 17:23:03 2012
+ - XSUB: use PERL_NO_GET_CONTEXT (see perlguts)
+ (see [rt.cpan.org #80312])
+
1.15 Sun Sep 23 10:43:14 2012
- perl 5.11.0 or later: Install to 'site' instead of 'perl'
(see [rt.cpan.org #79801])
no warnings 'utf8';
-our $VERSION = '1.15';
+our $VERSION = '1.16';
our $PACKAGE = __PACKAGE__;
our @EXPORT = qw( NFC NFD NFKC NFKD );
5.10.0 5.0.0
5.8.9, 5.10.1 5.1.0
5.12.0-5.12.3 5.2.0
- 5.14.0 6.0.0
- 5.16.0 (to be) 6.1.0
+ 5.14.x 6.0.0
+ 5.16.x 6.1.0
=item Correction of decomposition mapping
+#define PERL_NO_GET_CONTEXT /* we want efficiency */
+
+/* private functions which need pTHX_ and aTHX_
+ pv_cat_decompHangul
+ sv_2pvunicode
+ pv_utf8_decompose
+ pv_utf8_reorder
+ pv_utf8_compose
+*/
+
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
return row ? row[uv & 0xff] : 0;
}
-static U8* pv_cat_decompHangul(U8* d, UV uv)
+static U8* pv_cat_decompHangul(pTHX_ U8* d, UV uv)
{
UV sindex = uv - Hangul_SBase;
UV lindex = sindex / Hangul_NCount;
return d;
}
-static char* sv_2pvunicode(SV *sv, STRLEN *lp)
+static char* sv_2pvunicode(pTHX_ SV *sv, STRLEN *lp)
{
char *s;
STRLEN len;
}
static
-U8* pv_utf8_decompose(U8* s, STRLEN slen, U8** dp, STRLEN dlen, bool iscompat)
+U8* pv_utf8_decompose(pTHX_ U8* s, STRLEN slen, U8** dp, STRLEN dlen, bool iscompat)
{
U8* p = s;
U8* e = s + slen;
if (Hangul_IsS(uv)) {
Renew_d_if_not_enough_to(UTF8_MAXLEN * 3)
- d = pv_cat_decompHangul(d, uv);
+ d = pv_cat_decompHangul(aTHX_ d, uv);
}
else {
U8* r = iscompat ? dec_compat(uv) : dec_canonical(uv);
}
static
-U8* pv_utf8_reorder(U8* s, STRLEN slen, U8** dp, STRLEN dlen)
+U8* pv_utf8_reorder(pTHX_ U8* s, STRLEN slen, U8** dp, STRLEN dlen)
{
U8* p = s;
U8* e = s + slen;
}
static
-U8* pv_utf8_compose(U8* s, STRLEN slen, U8** dp, STRLEN dlen, bool iscontig)
+U8* pv_utf8_compose(pTHX_ U8* s, STRLEN slen, U8** dp, STRLEN dlen, bool iscontig)
{
U8* p = s;
U8* e = s + slen;
U8 *s, *d, *dend;
STRLEN slen, dlen;
CODE:
- s = (U8*)sv_2pvunicode(src,&slen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&slen);
dst = newSVpvn("", 0);
dlen = slen;
New(0, d, dlen+1, U8);
- dend = pv_utf8_decompose(s, slen, &d, dlen, (bool)SvTRUE(compat));
+ dend = pv_utf8_decompose(aTHX_ s, slen, &d, dlen, (bool)SvTRUE(compat));
sv_setpvn(dst, (char *)d, dend - d);
SvUTF8_on(dst);
Safefree(d);
U8 *s, *d, *dend;
STRLEN slen, dlen;
CODE:
- s = (U8*)sv_2pvunicode(src,&slen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&slen);
dst = newSVpvn("", 0);
dlen = slen;
New(0, d, dlen+1, U8);
- dend = pv_utf8_reorder(s, slen, &d, dlen);
+ dend = pv_utf8_reorder(aTHX_ s, slen, &d, dlen);
sv_setpvn(dst, (char *)d, dend - d);
SvUTF8_on(dst);
Safefree(d);
U8 *s, *d, *dend;
STRLEN slen, dlen;
CODE:
- s = (U8*)sv_2pvunicode(src,&slen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&slen);
dst = newSVpvn("", 0);
dlen = slen;
New(0, d, dlen+1, U8);
- dend = pv_utf8_compose(s, slen, &d, dlen, (bool)ix);
+ dend = pv_utf8_compose(aTHX_ s, slen, &d, dlen, (bool)ix);
sv_setpvn(dst, (char *)d, dend - d);
SvUTF8_on(dst);
Safefree(d);
U8 *s, *t, *tend, *d, *dend;
STRLEN slen, tlen, dlen;
CODE:
- s = (U8*)sv_2pvunicode(src,&slen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&slen);
/* decompose */
tlen = slen;
New(0, t, tlen+1, U8);
- tend = pv_utf8_decompose(s, slen, &t, tlen, (bool)(ix==1));
+ tend = pv_utf8_decompose(aTHX_ s, slen, &t, tlen, (bool)(ix==1));
*tend = '\0';
tlen = tend - t; /* no longer know real size of t */
/* reorder */
dlen = tlen;
New(0, d, dlen+1, U8);
- dend = pv_utf8_reorder(t, tlen, &d, dlen);
+ dend = pv_utf8_reorder(aTHX_ t, tlen, &d, dlen);
*dend = '\0';
dlen = dend - d; /* no longer know real size of d */
U8 *s, *t, *tend, *u, *uend, *d, *dend;
STRLEN slen, tlen, ulen, dlen;
CODE:
- s = (U8*)sv_2pvunicode(src,&slen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&slen);
/* decompose */
tlen = slen;
New(0, t, tlen+1, U8);
- tend = pv_utf8_decompose(s, slen, &t, tlen, (bool)(ix==1));
+ tend = pv_utf8_decompose(aTHX_ s, slen, &t, tlen, (bool)(ix==1));
*tend = '\0';
tlen = tend - t; /* no longer know real size of t */
/* reorder */
ulen = tlen;
New(0, u, ulen+1, U8);
- uend = pv_utf8_reorder(t, tlen, &u, ulen);
+ uend = pv_utf8_reorder(aTHX_ t, tlen, &u, ulen);
*uend = '\0';
ulen = uend - u; /* no longer know real size of u */
/* compose */
dlen = ulen;
New(0, d, dlen+1, U8);
- dend = pv_utf8_compose(u, ulen, &d, dlen, (bool)(ix==2));
+ dend = pv_utf8_compose(aTHX_ u, ulen, &d, dlen, (bool)(ix==2));
*dend = '\0';
dlen = dend - d; /* no longer know real size of d */
U8 *s, *e, *p, curCC, preCC;
bool result = TRUE;
CODE:
- s = (U8*)sv_2pvunicode(src,&srclen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&srclen);
e = s + srclen;
preCC = 0;
bool result = TRUE;
bool isMAYBE = FALSE;
CODE:
- s = (U8*)sv_2pvunicode(src,&srclen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&srclen);
e = s + srclen;
preCC = 0;
bool result = TRUE;
bool isMAYBE = FALSE;
CODE:
- s = (U8*)sv_2pvunicode(src,&srclen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&srclen);
e = s + srclen;
preCC = 0;
for (p = s; p < e; p += retlen) {
if (Hangul_IsS(uv)) {
U8 tmp[3 * UTF8_MAXLEN + 1];
U8 *t = tmp;
- U8 *e = pv_cat_decompHangul(t, uv);
+ U8 *e = pv_cat_decompHangul(aTHX_ t, uv);
RETVAL = newSVpvn((char *)t, e - t);
} else {
U8* rstr = ix ? dec_compat(uv) : dec_canonical(uv);
STRLEN srclen;
U8 *s, *e, *p;
PPCODE:
- s = (U8*)sv_2pvunicode(src,&srclen);
+ s = (U8*)sv_2pvunicode(aTHX_ src,&srclen);
e = s + srclen;
p = e;
while (s < p) {
-Unicode/Normalize version 1.15
+Unicode/Normalize version 1.16
===================================
Unicode::Normalize - Unicode Normalization Forms