Version 3.49 [BUG FIXES] 1. Fix a regression since 3.44 involving a case when the header includes "Content-Length: 0". Thanks to Alex Vandiver (RT#51109) 2. Suppress uninitialized warnings under -w. Thanks to burak. (RT#50301) 3. url() now uses virtual_port() instead of server_port(). Thanks to MKANAT and Yanick Champoux. (RT#51562) [SECURITY] 1. embedded newlines are now filtered out of header values in header(). Thanks to Mark Stosberg and Yanick Champoux. [DOCUMENTATION] 1. README was updated to reflect that CGI.pm was moved under ./lib. Thanks to Alex Vandiver. [INTERNALS] 1. More tests were added for autoescape, thanks to Bob Kuo. (RT#25485) 2. Attempt to avoid test failures with t/fast, thanks to Steve Hay. (RT#49599) Version 3.48 [BUG FIXES] 1. default values are now properly escaped. Thanks to #raleigh.pm and Mark Stosberg. (RT#49606) 2. The change to exception handling in CGI::Carp introduced in 3.47 has been reverted for now. It caused regressions reported in RT#49630. Thanks to mkanat for the report. [DOCUMENTATION] 1. Documentation for upload() has been overhauled, thanks to Mark Stosberg. 2. Documentation for tmpFileName has been added. Thanks to Mark Stosberg and Nathaniel K. Smith. 3. URLS were updated, thanks to Leon Brocard and Yanick Champoux. (RT#49770) [INTERNALS] 1. More tests were added for autoescape, thanks to Bob Kuo. (RT#25485) Version 3.47 Released September 9th, 2009. No code changes. [INTERNALS] Re-release of 3.46, which did not contain a proper MANIFEST Version 3.46 [BUG FIXES] 1. In CGI::Pretty, we no longer add line breaks after tags we claim not to format. Thanks to rrt, Bob Kuo and and Mark Stosberg. (RT#42114). 2. unescapeHTML() no longer falsely recognizes certain text as entities. Thanks to Pete Gamanche, Mark Stosberg and Bob Kuo. (RT#39122) 3. checkbox_group() now correctly includes a space before the "checked" attribute. Thanks to Andrew Speer and Bob Kuo. (RT#36583) 4. Fix case-sensitivity in http() and https() according to docs. Make https() return list of keys in list context. Thanks to riQyRoe and Rhesa Rozendaal. (RT#12909) 5. XHTML is now automatically disabled for HTML 4, as well as HTML 2 and HTML 3. Thanks to Dan Harkless and Yanick Champoux. (RT#27907) 6. Pre-compiling 'end_form' with ':form' switch now works. Thanks to ryochin and Yanick Champoux. (RT#41530) 7. Empty name/values pairs are now properly saved and restored from filehandles. Thanks to rlucas and Rhesa Rozendaal (RT#13158) 8. Some differences between startform() and start_form() have been fixed. Thanks to Slaven Rezic and Shawn Corey. (RT#22046) 9. url_param() has been updated to be more consistent with the documentation and param(). Thanks to Britton Kerin and Yanick Campoux. (RT#43587) 10.hidden() now correctly supports multiple default values. Thanks to david@dierauer.net and Russell Jenkins. (RT#20436) 11.Calling CGI->new() no longer clobbers the value of $_ in the current scope. Thanks to Alexey Tourbin, Bob Kuo and Mark Stosberg. (RT#25131) 12.UTF-8 params should not get double-decoded now. Thanks to Yves, Bodo, Burak Gürsoy, and Michael Schout. (RT#19913) 13.We now give objects passed to CGI::Carp::die a chance to be stringified. Thanks to teek and Yanick Champoux (RT#41530) 14.Turning off autoEscape() now only affects the behavior of built-in HTML generation fuctions. Explicit calls to escapeHTML() always escape HTML regardless of the setting. Thanks to vindex, Bob Kuo and Mark Stosberg (RT#40748) 15.In CGI::Fast, preferences set via pragmas are now preserved. Thanks to heinst and Mark Stosberg (RT#32119) [DOCUMENTATION] 1. remote_addr() is now documented. Thanks to Yanick Champoux. (RT#38884) 2. In CGI::Pretty in the list of tags left unformatted was updated to match the code. Thanks to Mark Stosberg. (RT#42114) 3. In CGI::Pretty, performance concerns are now documented. Thanks to Jochen, Rhesa Rozendaal and Mark Stosberg (RT#13223) 4. A number of outdated Netscape references have been removed. Thanks to Mark Stosberg. 5. The documentation has been purged of examples of using indirect object notation. Thanks to Mark Stosberg. 6. Some POD formatting was fixed. Thanks to Dave Mitchell (RT#48935). 7. Docs and examples were updated to highlight start_form instead of startform. Thanks to Slaven Rezic. 8. Note that CGI::Carp::carpout() doesn't work with in-memory filehandles. Thanks to rhubbell and Mark Stosberg. 9. The documentation for the -newstyle_urls is now less confusing. Thanks to Ryan Tate and Mark Stosberg (RT#49454) [INTERNALS] 1. Quit bundling an ancient copy of Test::More and and using a custom 'lib' path for the tests. Instead, Test::More is now a dependency. Thanks to Ansgar and Mark Stosberg (RT#48811) 2. Automated tests for hidden() have been added, thanks to Russel Jenkins and Mark Stosberg (RT#20436) 3. t/util.t has been updated to use Test::More instead of a home-grown test function. Thanks to Bob Kuo. Version 3.45 [BUG FIXES] 1. Prevent warnings about "uninitialized values" for REQUEST_URI, HTTP_USER_AGENT and other environment variables. Patches by Callum Gibson, heiko and Mark Stosberg. (RT#24684, RT#29065) 2. Avoid death in some cases when running under Taint mode on Windows. Patch by Peter Hancock (RT#43796) 3. Allow 0 to be used as a default value in popup_menu(). This was broken starting in 3.37. Thanks to Haze, who was the first to report this and supply a patch, and pfschill, who pinpointed when the bug was introduced. A regression test for this was also added. (RT#37908) 4. Allow "+" as a valid character in file names, which fixes temp file creation on OS X Leopard. Thanks to Andy Armstrong, and alech for patches. (RT#30504) 5. Set binmode() on the Netware platform, thanks to Guenter Knauf (RT#27455) 6. Don't allow a CGI::Carp error handler to die recursively. Print a warning and exit instead. Thanks to Marc Chantreux. (RT#45956) 7. The Dump() method now is fixed to escape HTML properly. Thanks to Mark Stosberg (RT#21341) 8. Support for with scrolling_list() now works the same way as it does for popup_menu(). Thanks to Stuart Johnston (RT#30097) 9. CGI::Pretty now works properly when $" is set to ''. Thanks to Jim Keenan (RT#12401) 10. Fix crash when used in combination with PerlEx::DBI. Thanks to Burak Gürsoy (RT#19902) [DOCUMENTATION] 1. Several typos were fixed, Thanks to ambs. (RT#41105) 2. A typo related to the nosticky pragma was fixed, thanks to Britton Kerin. (RT#43220) 3. examples/nph-clock.cgi is now more portable, by calling localtime() rather than `/bin/date`, thanks to Guenter Knauf. (RT#27456). 4. In CGI::Carp, the SEE ALSO section was cleaned up, thanks to Slaven Rezic. (RT#32769) 5. The docs for redirect() were updated to reflect that most headers are ignored during redirection. Thanks to Mark Stosberg (RT#44911) [INTERNALS] 1. New t/unescapeHTML.t test script has been added. It includes a TODO test for a pre-existing bug which could use a patch. Thanks to Pete Gamache and Mark Stosberg (RT#39122) 2. New test scripts have been added for user_agent(), popup_menu() and query_string(), scrolling_list() and Dump() Thanks to Mark Stosberg and Stuart Johnston. (RT#37908, RT#43006, RT#21341, RT#30097) 3. CGI::Carp and CGI::Util have been updated to have non-developer version numbers. Thanks to Slaven Rezic. (RT#48425) 4. CGI::Switch and CGI::Apache now properly set their VERSION in their own name space. Thanks to Alexey Tourbin (RT#11941,RT#11942) Version 3.44 1. Patch from Kurt Jaeger to allow HTTP PUT even if the content length is unknown. 2. Patch from Pavel merdin to fix a problem for one of the FireFox addons. 3. Fixed issue in mod_perl & fastCGI environment of cookies returned from CGI->cookie() leaking from one session to another. Version 3.43 1. Documentation patch from MARKSTOS@cpan.org to replace all occurrences of "new CGI" with CGI->new()" to reflect best perl practices. 2. Patch from Stepan Kasal to fix utf-8 related problems in perl 5.10 Version 3.42 1. Added patch from Renee Baecker that makes it possible to subclass CGI::Pretty. 2. Added patch from Nicholas Clark to allow ~ characters in temporary directories. 3. Added patch from Renee Baecker that fixes the inappropriate escaping of fields in multipart headers. Version 3.41 1. Fix url() returning incorrect path when query string contains escaped newline. 2. Added additional windows temporary directories and environment variables, courtesy patch from Renee Baecker 3. Added a handle() method to the lightweight upload filehandles. This method returns a real IO::Handle object. 4. Added patch from Tony Vanlingen to fix deep recursion warnings in CGI::Pretty. Version 3.40 1. Fixed CGI::Fast docs to eliminate references to a "special" version of Perl. 2. Makefile.PL now depends on FCGI so that CGI::Fast installs properly. 3. Fix script_name() call from Stephane Chazelas. Version 3.39 1. Fixed regression in "exists" function when using tied interface to CGI via $q->Vars. Version 3.38 1. Fix annoying warning in http://rt.cpan.org/Ticket/Display.html?id=34551 2. Added nobr() function http://rt.cpan.org/Ticket/Display.html?id=35377 3. popup_menu() allows multiple items to be selected by default, satisfying http://rt.cpan.org/Ticket/Display.html?id=35376 4. Patch from Renee Backer to avoid doubled headers. 5. Fixed documentation bug that describes what happens when a parameter is empty (e.g. "?test1="). 6. Fixed minor warning described at http://rt.cpan.org/Public/Bug/Display.html?id=36435 7. Fixed overlap of attribute and parameter space described in http://rt.perl.org/rt3//Ticket/Display.html?id=24294 Version 3.37 1. Fix pragmas so that they persist over modperl invocations (e.g. RT 34761) 2. Fixed handling of chunked multipart uploads; thanks to Michael Bernhardt who reported and fixed the problem. Version 3.36 1. Fix CGI::Cookie to support cookies that are separated by "," instead of ";". Version 3.35 1. Resync with bleadperl, primarily fixing a bug in parsing semicolons in uploaded filenames. Version 3.34 1. Handle Unicode %uXXXX escapes properly -- patch from DANKOGAI@cpan.org 2. Fix url() method to not choke on path names that contain regex characters. Version 3.33 1. Remove uninit variable warning when calling url(-relative=>1) 2. Fix uninit variable warnings for two lc calls 3. Fixed failure of tempfile upload due to sprintf() taint failure in perl 5.10 Version 3.32 1. Patch from Miguel Santinho to prevent sending premature headers under mod_perl 2.0 Version 3.31 1. Patch from Xavier Robin so that CGI::Carp issues a 500 Status code rather than a 200 status code. 2. Patch from Alexander Klink to select correct temporary directory in OSX Leopard so that upload works. 3. Possibly fixed "wrapped pack" error on 5.10 and higher. Version 3.30 1. Patch from Mike Barry to handle POSTDATA in the same way as PUT. 2. Patch from Rafael Garcia-Suarez to correctly reencode unicode values as byte values. Version 3.29 1. The position of file handles is now reset to zero when CGI->new is called. (Mark Stosberg) 2. uploadInfo() now works across multiple object instances. Also, the first tests for uploadInfo() were added as part of the fix. (CPAN bug 11895, with contributions from drfrench and Mark Stosberg). Version 3.28 1. Applied patch from Allen Day that makes Cookie parsing RFC2109 compliant (attribute/values can be separated by commas as well as semicolons). 2. Applied patch from Stephan Struckmann that allows script_name() to be set correctly. 3. Fixed problem with url(-full) in which port number appears twice. Version 3.27 1. Applied patch from Steve Taylor that allows checkbox_groups to be disabled with a new -disabled=> option. Version 3.26 1. Fixed alternate stylesheet behavior so that it is insensitive to order of declarations. 2. Patch from John Binns to allow users to provide a callback to CGI::Carp. 3. Added "~" as an unreserved character in escape(). 4. Patch from Chris Fedde to prevent HTTP_HOST from inhibiting SERVER_PORT in url() generation. 5. Fixed outdated documentation (and behavior) of -language in start_html -script option. 6. Fixed bug in seconds calculation in CGI::Util::expire_calc. Version 3.25 1. Fixed the link to the Netscape frames page. 2. Added ability to specify an alternate stylesheet. 3. Add support for XForms POST submssion both as application/xml or as multipart/related Version 3.24 1. In startform(), if request_uri() returns undef, then falls back to self_url(). This should rarely happen except when run outside of the CGI environment. 2. image button alignment options were mistakenly being capitalized, causing xhtml validation to fail. Version 3.23 1. Typo in upload() persisted, now fixed for real. Thanks to Emanuele Zeppieri for correct patch and regression test. Version 3.22 1. Typo in upload() function broke uploads. Now fixed (CPAN bug 21126). Version 3.21 1. Don't try to read data at all when POST > $POST_MAX. 2. Fixed bug that caused $cgi->param('name',undef,'value') to unset param('name') entirely. 3. Fixed bug in which upload() sometimes returns empty. (CPAN bug #12694). 4. Incorporated patch from BURAK@cpan.org to support HTTPcookies (CPAN bug 21019). Version 3.20 1. Patch from David Wheeler for CGI::Cookie->bake(). Uses mod_perl headers_out->add() rather than headers_out->set(). 2. Fixed problem identified by Andrei Voronkov in which start_form() output was screwed up when initial argument begins with a dash and subsequent arguments do not. 3. Quashed uninitialized variable warnings coming from script_name(), url() and other functions that require access to the PATH_INFO environment variable. Version 3.19 1. Added patch from Stephen Frost that allows one to suppress use of the temp file that is created during uploads. 2. Fixed problem noted by Martin Foster in which regular expression meta-character terms in the path information were not quoted, causing URL parsing to fail on URLs that contained metacharacters (such as +). 3. More fixes to the url() method. 4. Removed "hack to fix broken PATH_INFO in MSII". Version 3.18 1. Doc typo fixes. 2. Patch from Steve Peters to default the document type to match the charset. 3. Fixed param() so that param(-name=>'foo',-values=>[]) sets the parameter to empty list. Version 3.17 Fri Feb 24 14:01:27 EST 2006 1. Added patch from Mike Hanafey which caused 0 arguments to CGI::Cookie->new() to be treated as empty. 2. Patch to CGI::Carp from Peter Whaite to fix the unfixable problem of CGI::Carp not behaving correctly in an eval() context. 3. CGI::Fast->new() calls CGI->_reset_globals to avoid contamination of one session with another's variables. 4. Fixed upload failure on files that contain semicolons in their names. Version 3.16 Wed Feb 8 13:29:11 EST 2006 1. header() -charset option now works even when the MIME type is not "text". 2. Fixed documentation for cookie() function and fastCGI. 3. Upload filehandles now only closed automatically on Windows systems. 4. Apache::Cookie compatibility fix from David Wheeler 5. CGI::Carp->fatalsToBrowser() does not work correctly with mod_perl 2. No workaround is known. 6. Fixed text status code associated with 302 redirects. Should be "Found" but was "Moved". 7. Fixed charset in start_html() and header() to be in synch. Version 3.15 Wed Dec 7 15:13:22 EST 2005 1. Remove extraneous "?" from self_url() when URI contains a ? but no query string. Version 3.14 Tue Dec 6 17:12:03 EST 2005 1. Fixed broken scrolling_list() select attribute. Version 3.13 1. Removed extraneous empty "?" from end of self_url(). Version 3.12 1. Fixed virtual_port so that it works properly with https protocol. 2. Fixed documentation for upload_hook(). 3. Added POSTDATA documentation. 4. Made upload_hook() work in function-oriented mode. 5. Fixed POST_MAX behavior so that it doesn't cause client to hang. 6. Disabled automatic tab indexes and added new -tabindex pragma to turn automatic indexes back on. 7. The url() and self_url() methods now work better in the context of Apache mod_rewrite. Be advised that path_info() may give you confusing results when mod_rewrite is active because Apache calculates the path info *after* rewriting. This is mostly worked around in url() and self_url(), but you may notice some anomalies. 8. Removed empty (and non-validating)
from code emitted by end_form(). 9. Fixed CGI::Carp to work correctly with Mod_perl 1.29 in an Apache 2 environment. 10. Setting $CGI::TMPDIRECTORY should now be effective. Version 3.11 1. Killed warning in CGI::Cookie about MOD_PERL_API_VERSION 2. Fixed append() so that it works in function mode. 3. Workaround for a bug that appears in Apache2 versions through 2.0.54 in which SCRIPT_NAME and PATH_INFO are incorrect if the additional path_info contains a double slash. This workaround will handle the common case of http://mysite.com/cgi-bin/log.cgi/http://www.some.other.site/args, but will not handle the uncommon case of a ScriptAlias directive that adds additional path information to the end of the translated URI. Version 3.10 1. Added Apache2::RequestIO, which is necessary for mp2 interoperability. Version 3.09 1. Fixed tabindex="0" when using CGI to create forms without a prior start_html 2. Removed warning about non-numeric MOD_PERL_API_VERSION. Version 3.08 1. update support for mod_perl 2.0. versions prior to mod_perl 1.999_22 (2.0.0-RC5) are no longer supported. Version 3.07 1. Fixed typo in mod_perl detection. Version 3.06 1. Fixed bare call to script() in start_html 2. Moved Fh::DESTROY out of autoloaded functions so as to avoid clobbering $@ when CGI functions are executed in an eval{} context. 3. mod_perl 2.0 version detection patch in CGI::Cookie provided by Allen Day. 4. autoEscape() flag is now respected when generating extra attributes. 5. Tests for *tag start/end generation from Shlomi Fish. 6. Support for can() method provided by Ron Savage. 7. Fix for lang='' when outputting XHTML. 8. Added support for chunked transfer encoding, as suggested by Hakan Ardo 9. Fixed clobbering of row and column headers in tableized radio and checkbox groups, as reported by Nicolas Thierry-Mieg. 10.