Skip to content

libConfuse v3.0

Compare
Choose a tag to compare
@troglobit troglobit released this 03 Mar 01:01
· 258 commits to master since this release

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