The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Changes for version 2.72 - 2012-05-05

  • More refactoring.
  • Now requiring Fcntl (which is a core module) for SEEK_SET() and SEEK_CUR().
  • Update the contact information on the POD.
  • Maintainer’s special birthday (5-May) release.
  • Version 2.71: ( Wed May 2 10:59:04 IDT 2012 )
  • SECURITY BUG FIX: Config::IniFiles used to write to a temporary filename with a predictable name ("${filename}-new") which opens the door for potential exploits.
  • Now requiring List::MoreUtils (for any() and other functions), File::Temp and File::Basename .
  • Add "use warnings;" to lib/Config/IniFiles.pm .
  • More refactoring.
  • Version 2.70: ( Fri Apr 6 12:47:25 IDT 2012 )
  • Fix the test dependency (in the new t/31comments_with_spaces.t test) on IO::stringy (now writing it to a file).
    • This caused some CPAN Testers failures such as:
      • http://www.cpantesters.org/cpan/report/c16b9978-7f40-11e1-9d6f-f6dbfa7543f5
  • Modernized some of the open() calls in the test files.
    • three args open, lexcial file handles, etc.
  • Version 2.69: ( Thu Apr 5 12:05:46 IDT 2012 )
  • Fix https://sourceforge.net/tracker/?func=detail&aid=3388382&group_id=6926&atid=106926
    • "Trailing comments with whitespace are not recognised"
    • Thanks to briconaut for the report and to rbowen for the patch and test.
  • Add the method ->OutputConfigToFileHandle which is a more explicit and safer version of ->OutputConfig.
    • ->OutputConfig now uses it.
    • all existing tests pass, and a new test was added to t/15store-and-retrieve-here-doc-terminator.t .
  • Started refactoring the code.
    • Expand tabs to spaces.
    • many other small changes.
  • Version 2.68: ( Tue Jun 21 22:14:39 IDT 2011 )
  • Typo correction: https://rt.cpan.org/Ticket/Display.html?id=69003
  • Version 2.67: ( Tue Jun 21 14:55:07 IDT 2011 )
  • Made sure that parameters with empty values will be written to the file.
    • Fixes https://rt.cpan.org/Public/Bug/Display.html?id=68554 .
  • Version 2.66: ( Sat Jan 29 18:28:53 IST 2011 )
  • Add support for the handle_trailing_comment option to support trailing comments at the end of a param=value line.
    • Fixes https://rt.cpan.org/Public/Bug/Display.html?id=43843 .
    • Original patch by Peter Xu.
    • Some comments and corrections of the patch by Shlomi Fish (the current Config-IniFiles maintainer.)
  • Version 2.65: ( Thu Nov 25 12:00:00 IST 2010 )
  • Replaced calls to File::Temp's tempfile() with those to its tempdir() followed by File::Spec->catfile() - hopefully fixes the CPAN smoking failures on Win32.
  • Version 2.64: ( Sat Nov 20 11:47:07 IST 2010 )
  • Fixed https://rt.cpan.org/Ticket/Display.html?id=63177
    • tag-release.pl was installed into lib/Config by EU-MM. Converted the Makefile.PL to a wrapper around Build.PL by using Module-Build's create_makefile_pl='small' instead of create_makefile_pl='traditional' .
  • Version 2.63: ( Fri Nov 19 16:50:58 IST 2010 )
  • Fixed https://rt.cpan.org/Ticket/Display.html?id=63079 by refactoring/bug-fixing the main module into the _OutputParam method, which handles the output of multi-line and single-line parameters with all the edge cases.
    • The reported problem was that EOT was encountered again in certain cases in the output string, and now we make sure the program always avoid it. The reappearance of the bug was caused due to duplicate code, which was now eliminated.
  • Version 2.62: ( Fri Nov 19 15:31:36 IST 2010 )
  • Applied a modified version of Steven Haryanto's commit ac6ace8bf09fabba4e6ea3b2826ff13cd30507bc :
    • When writing config with fallback section, also omit the fallback section header, like the original file. Also, change t/19param-found-outside-section.t a bit to not require IO::Scalar and use File::Temp instead (we are testing WriteConfig anyway).
    • Shlomi Fish fixed unless'es to if's and converted a do { ... } if call to a block conditional, as well as made the open statements on t/19param more secure.
  • Add -nomultiline option. -Applied a modified version of Steven Haryanto's commit 2181f438d40b54c290a2dda5627a244c6e467a7b
  • Version 2.61: ( Sun Nov 14 10:52:39 IST 2010 )
  • Correct the opening comment on t/26scalar-filehandle.t to point to the right bug URL and to include the title of the bug
    • https://rt.cpan.org/Ticket/Display.html?id=54997 - this is the right URL.
  • Correct the check in t/26scalar-filehandle.t - it should check that Perl is above 5.8.x - not that IO::Scalar is available, because we use open my $fh, "<", \$buffer;
  • Version 2.60: ( Sat Nov 13 09:21:23 IST 2010 )
  • Made t/19param-found-outside-section.t pass in case IO::Scalar is not installed.
    • We got many failing test reports due to that, like:
    • http://www.cpantesters.org/cpan/report/eb3df0f4-eeb7-11df-b934-9430e12b63f3
  • Version 2.59: ( Fri Nov 12 13:21:02 IST 2010 )
  • Applied a patch from "sharyanto" about enabling the -fallback parameter to new for items outside any section.
    • https://rt.cpan.org/Public/Bug/Display.html?id=62944
  • Add the tag-release.pl file to tag a release.
  • Version 2.58: ( Mon May 17 10:43:06 IDT 2010 )
  • Incorporated a fix for some broken POD.
    • https://rt.cpan.org/Ticket/Display.html?id=51617
    • Thanks to Frank Wiegand for reporting it.
  • Got rid of \r/carriage-returns's in lib/Config/IniFiles.pm .
    • It interfered with applying a patch.
  • Applied a patch to get rid of indirect object notation in the documentation and code ("new Config::IniFiles") and replace it with Config::IniFiles->new().
    • https://rt.cpan.org/Ticket/Display.html?id=57536
    • Thanks to Tom Molesworth for the patch.
  • Version 2.57: ( Mon Mar 1 15:49:54 IST 2010 )
  • Fixed failure to read the ini file contents from a filehandle made out of a scalar
    • https://rt.cpan.org/Ticket/Display.html?id=45997
    • Applied a patch by Nicolas Mendoza - thanks!
  • Version 2.56: ( Thu Dec 31 06:55:01 IST 2009 )
  • Hopefully fixed the skip() in t/07misc.t
    • https://rt.cpan.org/Public/Bug/Display.html?id=53238
    • It was skip($num, $label) instead of skip($label, $num) and it lacked a "SKIP:" label.
  • Version 2.55: ( Tue Dec 22 17:42:59 IST 2009 )
  • Refactoring the tests:
    • Converted t/05hash.t to Test::More and modernised it.
    • Converted t/06oo.t to Test::More and modernised it.
    • Testing: extracted t/lib/Config/IniFiles/TestPaths.pm.
    • Converted t/10delta.t to Test::More and modernised it.
    • Add the t_unlink method.
  • Version 2.54: ( Wed Nov 18 12:00:44 IST 2009 )
  • Adapted t/25line-endings.t to perl-5.6.x .
    • http://www.nntp.perl.org/group/perl.cpan.testers/2009/11/msg6026936.html
    • Failure there.
    • did that by replacing open ">:raw" with "binmode()".
  • Version 2.53: ( Fri Nov 13 11:52:40 IST 2009 )
  • Converted t/01basic.t to Test::More and modernised it.
  • Converted t/02weird.t to Test::More and modernised it.
  • Converted t/04import.t to Test::More and modernised it.
  • Applied a patch from Steffen Heinrich (SHE) for:
    • https://rt.cpan.org/Ticket/Display.html?id=51445
    • included t/25line-endings.t
      • modified a little.
  • Version 2.52: ( Sun Jun 28 16:16:09 IDT 2009 )
  • Added more keys to Build.PL (author, etc.)
  • Added resources and keywords to META.yml.
  • Converted t/00load.t to Test-More.
  • No longer chdir()-ing into "t" in t/00load.t
  • Got rid of the "new Config::IniFiles" syntax in the tests.
  • replaced with Config::IniFiles->new().
  • see "Perl Best Practices", "Programming Perl", 3rd Edition
  • Version 2.51: ( Mon Jun 8 12:38:50 IDT 2009 )
  • Fixed "#46721: $config->exists() does not pay attention to -nocase => 1"
  • https://rt.cpan.org/Ticket/Display.html?id=46721
  • Version 2.50: ( Sun May 31 14:54:14 IDT 2009 )
  • Fixed the POD for SetParameterEOT:
  • https://rt.cpan.org/Ticket/Display.html?id=28375
  • Added t/pod.t and t/pod-coverage.t and fixed the problems they pointed:
  • Removed some trailing pod.
    • http://rt.cpan.org/Ticket/Display.html?id=46549
  • Documented the ->OutputConfig() method.
  • Version 2.49: ( Sat May 2 17:16:28 IDT 2009 )
  • Fixed bug https://rt.cpan.org/Public/Bug/Display.html?id=45209 :
  • Makefile.PL lacked the empty "PL_FILES" directive.
  • Fixed bug https://rt.cpan.org/Ticket/Display.html?id=45588 :
  • Failure to read ini file contents from a scalar (via "IO::Scalar").
  • added t/23scalar-ref.t
  • Version 2.48: ( Tue Apr 7 15:24:55 IDT 2009 )
  • Fixed bug https://rt.cpan.org/Ticket/Display.html?id=30402 :
  • Trailing comments at the end of the file are not written.
  • added a test (t/22trailing-comment-lines.t ) and a test file.
  • Reverted the fix to bug #34067 ( "Multiline values returned as array references in tied hash interface"), as it could potentially break a lot of old code, and was not such a good idea, and was less preferable from interface-sanity reasons.
  • Documented the old API in regards to bug #34067 - see above.
  • Version 2.47: ( Wed Jan 21 11:32:24 IST 2009 )
  • Fixed bug https://rt.cpan.org/Ticket/Display.html?id=34067 :
  • Multiline values returned as array references in tied hash interface
  • This was as opposed to the documentation.
  • added t/21multiline-values-in-tied.t and fixed some older tests.
  • Moved the eval'ed debugging code (_assert_invariants) to its own module, without the eval so the perl-5.6.2 will be happy. Now explicitly use'ing it from t/lib where appropriate. See for example:
  • http://www.nntp.perl.org/group/perl.cpan.testers/2009/01/msg3101788.html
  • Version 2.46: ( Sat Jan 17 16:31:52 IST 2009 )
  • Added regression tests for bug #1720915
  • https://sourceforge.net/tracker/index.php?func=detail&aid=1720915&group_id=6926&atid=106926
  • the bug seems to be fixed in trunk.
  • Added a regression test for RT #36584
  • https://rt.cpan.org/Ticket/Display.html?id=36584
  • the bug seems to be fixed in trunk.
  • Added a regression test for RT #36309
  • https://rt.cpan.org/Ticket/Display.html?id=36309
  • Testing for allowedcommentchars.
  • the bug seems to be fixed in trunk.
  • Converted t/03comments.t to Test::More and did other cleanups in preparation of solving a few bugs.
  • Now GetSectionComment does the documented behaviour in scalar context and returns the string joined by newlines:
  • https://rt.cpan.org/Ticket/Display.html?id=8612
  • Now GetParameterComment returns the right thing in scalar context (joined by newlines). It was documented and tested.
  • https://rt.cpan.org/Ticket/Display.html?id=8612
  • Version 2.45: ( Sat Dec 27 17:21:45 IST 2008 )
  • Fixed bug #1230339:
  • https://sourceforge.net/tracker/index.php?func=detail&aid=1230339&group_id=6926&atid=106926
  • Can't store and retrive "\nEOT\n"
  • Fixed by checking for the existence of the here-doc terminator in the string, and if so appending more characters.
  • Fixed bug #1565180
  • https://sourceforge.net/tracker/index.php?func=detail&aid=1565180&group_id=6926&atid=106926
  • -nocase breaks -default.
  • If a default-values section is specified, then -nocase did not look it up if it's not lowercase.
  • Fixed bug #1831654
  • https://sourceforge.net/tracker/index.php?func=detail&aid=1831654&group_id=6926&atid=106926
  • multiline-values are tainted.
  • Added a test as t/17untainted-multiline-values.t
  • Version 2.44: ( Thu Dec 25 11:44:07 IST 2008 )
  • Eliminated an assignment of $VERSION into itself to "get rid of warnings". Only caused warnings at Build.PL, and is unnecessary now that we "use vars".
  • Version 2.43: ( Thu Dec 4 18:56:02 IST 2008 )
  • Placed IniFiles.pm under lib/Config/IniFiles.pm.
  • Added a Build.PL file for the distribution.
  • Moved the ChangeLog to its own file - Changes.
  • Made the README contain the useful information and nothing else - previously it was a copy of the module's entire POD.
  • Added a regression test for:
  • https://sourceforge.net/tracker/index.php?func=detail&aid=778593&group_id=6926&atid=106926
  • When copying tied-hashes representing sections with multiline values as keys, one used to get a reference instead of a copy. This was fixed in SVN but not in CPAN.
  • Added a test for opening an empty file, inspired by:
  • https://sourceforge.net/tracker/index.php?func=detail&aid=927111&group_id=6926&atid=106926
  • Added a fix for this bug:
  • https://sourceforge.net/tracker/index.php?func=detail&aid=767913&group_id=6926&atid=106926
  • With a test that I wrote myself: in list context, ->val() returned the list containing (undef()) if there was no such key. Now returning the empty list which evaluates to false.
  • Added a test for bug
    • "[ 2030786 ] Brackets within values are treated as section headers"
  • It seems to be fixed on SVN.
  • Revision 2.40 2003/12/08 10:33:13 domq Documentation tidyup
  • Revision 2.39 2003/12/06 07:54:21 wadg
  • By Proxy for domq
    • Encapsulation of internal data structures even for use within the class: e.g. ReadConfig() and the TIEHASH interface operate using accessor methods on $self. Causes massive simplification of the code.
    • TIEHASH interface made load-on-demand. Order of each() in TIEHASH same as configuration file's order (i.e. $self->Sections() and $self->Parameters()).
    • push() and exists() methods
    • -allowempty and -deltas parameters to new()
    • support for loading config from a SCALAR reference. Unfortunately this also requires a small patch to IO::Scalar, whose author has yet to respond to my email
    • ->{myparms} and ->{mysects} fields, supporting -delta=>1 option to WriteConfig()
    • _assert_invariants() method (used only in t/01basic.t and t/02weird.t, maybe should be packaged otherwise)
    • Revision 2.39 2003/11/10 15:37:48 dom
    • Encapsulation of internal data structures even for use within the class: e.g. ReadConfig() and the TIEHASH interface operate using accessor methods on $self. Causes massive simplification of the code.
    • TIEHASH interface made load-on-demand. Order of each() in TIEHASH same as configuration file's order (i.e. $self->Sections() and $self->Parameters()).
    • push() and exists() methods
    • -allowempty and -deltas parameters to new()
    • support for loading config from a SCALAR reference. Unfortunately this also requires a small patch to IO::Scalar, whose author has yet to respond to my email
    • ->{myparms} and ->{mysects} fields, supporting -delta=>1 option to WriteConfig()
    • _assert_invariants() method (used only in t/01basic.t and t/02weird.t, maybe should be packaged otherwise)
    • Revision 2.38 2003/05/14 01:30:32 wadg
    • fixed RewriteConfig and ReadConfig to work with open file handles
    • added a test to ensure that blank files throw no warnings
    • added a test for error messages from malformed lines
    • Revision 2.37 2003/01/31 23:00:35 wadg Updated t/07misc test 4 to remove warning
    • Revision 2.36 2002/12/18 01:43:11 wadg
    • Improved error message when an invalid line is encountered in INI file
    • Fixed bug 649220; importing a non-file-based object into a file one no longer destroys the original object
    • Revision 2.33 2002/11/12 14:48:16 grail Addresses feature request - [ 403496 ] A simple change will allow support on more platforms
    • Revision 2.32 2002/11/12 14:15:44 grail Addresses bug - [225971] Respect Read-Only Permissions of File System
    • Revision 2.31 2002/10/29 01:45:47 grail [ 540867 ] Add GetFileName method
    • Revision 2.30 2002/10/15 18:51:07 wadg Patched to stopwarnings about utf8 usage.
    • Revision 2.29 2002/08/15 21:33:58 wadg
    • Support for UTF Byte-Order-Mark (Raviraj Murdeshwar)
    • Made tests portable to Mac (p. kent)
    • Made file parsing portable for s390/EBCDIC, etc. (Adam Fischler)
    • Fixed import bug with Perl 5.8.0 (Marek Rouchal)
    • Fixed precedence bug in WriteConfig (Luc St Louis)
    • Fixed broken group detection in SetGroupMember and RemoveGroupMember (Kay Röpke)
    • Added line continuation character (/) support (Marek Rouchal)
    • Added configurable comment character support (Marek Rouchal)
    • Revision 2.28 2002/07/04 03:56:05 grail Changes for resolving bug 447532 - _section::FETCH should return array ref for multiline values.
    • Revision 2.27 2001/12/20 16:03:49 wadg
    • Fixed bug introduced in new valid file check where ';' comments in first lines were not considered valid
    • Rearranged some tests to put them in the proper files (case and -default)
    • Added more comment test to cover more cases
    • Fixed first two comments tests which weren't doing anything
    • Revision 2.26 2001/12/19 22:20:50 wadg #481513 Recognize badly formatted files
    • Revision 2.25 2001/12/12 20:44:48 wadg Update to bring CVS version in synch
    • Revision 2.24 2001/12/07 10:03:06 wadg

Modules

A module for reading .ini-style configuration files.