[v3.2.2][] - 2018-08-19
-----------------------
This is a security patch release for CVE-2018-14447. The vulnerability
affects all releases since v3.1 when the `CFGF_COMMENTS` functionality
was first introduced.
### Fixes
* Issue #109: Out of bounds read in `lexer.l:trim_whitespace()`.
Changelog:
[v3.2.1][] - 2017-08-17
-----------------------
### Fixes
* Issue #101: Bump ABI major number due to incompatible change in struct
when adding option annotation/comments in [v.3.1][]: `1.1.0 -> 2.0.0`
[v3.2][] - 2017-06-03
---------------------
### Fixes
* Issue #96: Add Windows/mingw compatible `fmemopen()` replacement
* Issue #98: Fix v3.1 regression, segfault on comment-only lines
[v3.1][] - 2017-05-24
---------------------
### Changes
* Refactored `CFGF_IGNORE_UNKNOWN` support, libConfuse now properly
ignores any type and sub-section without the need for declaring an
`__unknown` option. When the flag is set all unknown options,
including unknown sub-sections with, in turn, unknown options, are
now fully ignored
* Issue #69: New API for creating titled sections at runtime,
by Jonas Johansson @jonasj76
* Issue #92: Support for option annotation/comments. Every option can
now have a comment, which is both read and written from/to file.
Disabled by default, enable with `CFGF_COMMENTS` flag in `cfg_init()`
* ABI bump: 1.0.0 --> 1.1.0, due to new functionality
### Fixes
* Build unit tests statically for easier debugging
* Issue #21: Major refactor of lexer to fix memory leaks, `cfg_free()`
now properly releases all memory. By Joachim Nilsson @troglobit
* Issue #64: Fixed MSVC build errors, by George Koskeridis @Gikoskos
* Issue #65: SIGSEGV when parsed default values are used with include,
by Dmitri Zhabinski
* Issue #71: Fix syntax in rpm spec file, for CentOS/RHEL7
* Issue #73: Adjust gettext version requirement to build on CentOS/RHEL7.
GNU gettext v0.18.2.1 update `AM_GNU_GETTEXT()` to use AC_PROG_MKDIR_P
instead of `AM_PROG_MKDIR_P`, but v0.18.1.1 is included in Ubuntu 12.04
LTS. Fortunately Ubuntu 14.04 LTS ships v0.18.3.1 and Debian Jessie
ships v0.19.3. Unfortunately, CentOS7 and RHEL7 ships v0.18.2.1, so
for best compat. level at this point in time we require v0.18.2.
* Issue #74: Fix typos in documentation, by Luca Ceresoli
* Issue #79: Add `fmemopen()` compat for *BSD, including macOS
[v3.0][] - 2016-03-03
---------------------
This release signifies a major change in libConfuse. On out-of-memory
conditions at run time, invalid API input, and some other odd use-cases,
libConfuse will no longer `assert()`. Instead, `NULL` or `CFG_FAIL` is
returned with an error code for you to handle. For some users this will
completely change how your application works, so heads up! The library
ABI version has also been stepped due to this.
Special thanks in this release goes out to Frank Hunleth, Peter Rosin
and David Grayson for their tireless efforts in helping improve this
library!
**Note:** libConfuse no longer calls `setlocale()` for `LC_MESSAGES` and
`LC_CTYPE`. See the documentation for `cfg_init()` for details.
### Changes
* Support for handling unknown options. The idea is to provide future
proofing of configuration files, i.e. if a new parameter is added, the
new config file will not fail if loaded in an older version of your
program. See the `CFGF_IGNORE_UNKNOWN` flag in the documenation for
more information. Idea and implementation by Frank Hunleth.
* Add public API for removing sections at runtime, by Peter Rosin.
* Allow `cfg_opt_getval()` on options that are `CFGF_MULTI` sections,
by Peter Rosin.
* Add `cfg_setmulti()` and `cfg_opt_setmulti()`, by Peter Rosin.
* Add CLI example of how to manage configuration changes at runtime,
also by Peter Rosin.
* Support for Travis-CI and Coverity Scan, by Joachim Nilsson.
* Use `autoreconf` in `autogen.sh` instead of calling tools separately.
* Powershell script for AppVeyor CI to build libConfuse with MSYS2
by David Grayson.
* Removed calls to `setlocale()` intended to localize messages, with
`LC_MESSAGES`, and region specific types, with `LC_CTYPE`. This is
now the responsibility of the user of the library.
* Reindent to Linux coding style for a clear and well defined look,
this to ease future maintenance. Issue #33
* Add support for `CFGF_DEPRECATED` and `CFGF_DROP` option flags. The
former causes libConfuse to print a deprecated warning message and the
latter drops the read value on input. Idea and implementation by
Sebastian Geiger. Issue #24
* Add `HACKING.md` document to detail maintenance and release checklists
### Fixes
* Do not assert on API input validation, memory allocation, or similar.
Instead, return error code to user for further handling. This change
also includes fixes for a lot of unchecked API return values, e.g.,
`strdup()`. Issue #37
* Protect callers arguments to `cfg_setopt()`, by Peter Rosin
* If new value to `cfg_setopt()` fails parsing, do not lose old value,
by Peter Rosin.
* Fixes to update support for older versions of Microsoft Visual Studio
as well as MSYS2/mingw-w64 by Peter Rosin and David Grayson.
* Issue #45: `cfg_init()` does not report error on multiple options with
the same name. Fixed by Peter Rosin.
* Fixes for memory leaks, invalid expressions, unused variables and
missing error handling, all thanks to Coverity Scan
Changes
- Support for specifying a searchpath for cfg_parse(), by J.J. Green
- Restore build of shared library by default, by Nathan Phillip Brink
- Added German translation, contributed by Chris Leick, Aurelien Jarno, and
Tux^verdreifelt.
- Document CFG_SIMPLE_STR for doxygen, by Nathan Phillip Brink
- Update ISC license to 2007 version, by Joachim Nilsson
- Write files in a Bourne shell compatible way, by Alvaro G. M
- Fix mid-string environment variable substitution, by Frank Hunleth
Fixes
- Various ISO C90 and -ansi fixes by Carlo Marcelo Arenas Belon
- Fix C++ compiler warnings for const strings, by Craig McQueen
- Fix make distcheck and out-of-source builds, by Nathan Phillip Brink
- Fix missing .gitignore files, by Carlo Marcelo Arenas Belon
- Fix CFG_SIMPLE_INT on 64-bit systems, by Carlo Marcelo Arenas Belon
- Coding style cleanup by J.J. Green
- Fix issue #27: searchpath free problems. Fix to new feature introduced in
this release cycle.
- Improved support for MSYS2 by David Grayson.
Issues found with existing distfiles:
distfiles/eclipse-sourceBuild-srcIncluded-3.0.1.zip
distfiles/fortran-utils-1.1.tar.gz
distfiles/ivykis-0.39.tar.gz
distfiles/enum-1.11.tar.gz
distfiles/pvs-3.2-libraries.tgz
distfiles/pvs-3.2-linux.tgz
distfiles/pvs-3.2-solaris.tgz
distfiles/pvs-3.2-system.tgz
No changes made to these distinfo files.
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
New in 2.6
----------
* added French translation contributed by Matthieu Sion
* added build script and instructions for compiling with Mingw under Windows
(contributed by Matthieu Sion)
* now accepts a simplified list append syntax:
option += "value"
insted of
option += {"value"}
* added flag CFGF_NO_TITLE_DUPES: multiple section titles must be unique
(duplicates raises an error, only applies to sections)
(suggested by Brian Fallik)
* fixed rpm builds, patch by Dan Lipsitt
* always installs pkg-config .pc script
* remove obsolete confuse-config script in favour of pkg-config
* fixed a bug reported by Josh Kropf with single sections with titles
* added patch that escapes values with quotes and backslashes when printing.
* fixed a memory leak in default values for string lists,
reported by Vineeth Neelakant.
* windows build files now only in separate zip distribution
libConfuse is a configuration file parser library, licensed under the
terms of the LGPL, and written in C. It supports sections and (lists
of) values (strings, integers, floats, booleans or other sections), as
well as some other features (such as single/double-quoted strings,
environment variable expansion, functions and nested include
statements). It makes it very easy to add configuration file
capability to a program using a simple API.
The goal of libConfuse is not to be the configuration file parser
library with a gazillion of features. Instead, it aims to be easy to
use and quick to integrate with your code. libConfuse was called
libcfg before, but was changed to not confuse with other similar
libraries.