md__2home_2runner_2work_2libconfuse_2libconfuse_2ChangeLog

Name

md__2home_2runner_2work_2libconfuse_2libconfuse_2ChangeLog — Change Log

All relevant changes to the project are documented in this file​.

v3​.4 - 2026-08-16

Changes

  • Support for CFGT_RAWSEC, capture a section body verbatim, by Alexey Volokitin
  • Support for an include() function within a section, enabled with the CFGF_USE_INCLUDE_FUNCTION flag, by Alexey Volokitin
  • Support binary radix (0b​.​.​.) for CFG_INT, issue #145
  • Add support for fixed-width and unsigned integer types, CFG_INT8/16/32/64 and CFG_UINT8/16/32/64, alongside the platform-width CFG_INT, issue #11
  • Update doxygen documentation and sync with modern doxygen
  • Automatic large file support (LFS), by Mike Frysinger
  • cfg_parse_buf() now keeps a caller-set cfg->filename for file:line diagnostics, defaulting to [buf] only when unset, the same way cfg_parse_fp() handles FILE
  • Optional JSON-style [ ] list syntax, enable with CFGF_JSON_LISTS flag to cfg_init(); cfg_print() then emits [ ] as well​. The default { } syntax is unchanged
  • Georgian translation, by Temuri Doghonadze
  • Updated Swedish, French, and German translations, Joachim Wiberg

Fixes

  • Issue #147: fix the bundled fmemopen() replacement for systems without a native one (e​.g​. older macOS/BSD), so the write-then-read round-trip works; diagnosed by sevan
  • Issue #150: comments are now accepted anywhere between tokens, e​.g​. inside lists and inline C-style, not only before an option name
  • Issue #152: fail to build with gettext 0​.20, by heitbaum
  • Issue #153: German translation update
  • Issue #158: cfg_addtsec() returns the existing section when the title already exists, matching the documented behavior
  • Issue #163: heap overflow in cfg_tilde_expand(), found by Han Zheng
  • Issue #172: document the working MSYS2/MINGW64 Windows build; the old windows/mingw instructions were obsolete and failed to link
  • Issue #179: cfg_addlist() now preserves default list values when appending, by Yi Chen
  • Issue #180: isspace() argument fix, could crash the lexer, by Thomas Klausner
  • Issue #182: guard against stack exhaustion from deeply nested sections, by Yi Chen
  • Issue #187: null dereference on an empty comment (e​.g​. #) with CFGF_COMMENTS enabled, found and fixed by Benjamin Ali
  • Fix null termination when expanding environment variables, by Igor Ponomarenko
  • Only apply search path logic to relative pathnames, absolute paths are no longer altered, by Rasmus Villemoes
  • Remove spurious 'no such option' errors for KEYSTRVAL sections
  • Fix configure failure with autoconf 2​.73, backslash continuations in the AC_CONFIG_FILES list are no longer accepted

v3​.3 - 2020-06-25

Changes

  • Support building static library on Windows
  • Support for fmemopen() in Windows UWP applications
  • Support for cfg_getopt(cfg, 'sub=name|option'), i​.e​., get an option from a sub-section, by Peter Rosin
  • Support for CFGF_MODIFIED flag, to detect changes to settings in memory after parsing, by Peter Rosin
  • Support for filtering out settings when printing, by Peter Rosin
  • Support for dynamic key=value sections with no pre-runtime knowledge of setting names, useful for environment variables and similar
  • Updated German translation, by Chris Leick

Fixes

  • Fix loop-forever bug found by Christian Reitter; a ​.conf file containing only '=', will cause even the simplest parser to loop forever in internal function cfg_getopt_secidx()
  • Issue #113: Fail to build strdup() replacement
  • Issue #118: Fix build on Windows, missing fmemopen() replacement
  • Issue #120: Handle shell and C++ comments with no space separator
  • Issue #125: Drop developer debug msg QSTR: ​.​.​.
  • Issue #131: Fix CFG_PTR_CB() regression, segfaults when, e​.g​., cfg_free() is called​. Found and fixed by Peter Rosin
  • Issue #135: Revert CFGF_RESET flag if cfg_setmulti() family fail
  • Issue #137: Memory leak in cfg_setopt() for PTR options

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()​.

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 v3​.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 documentation 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

v2​.8 - 2015-10-14

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​.

v2​.7 - 2010-02-20

Changes

  • Expose cfg_setopt() function in public API, suggested by Daniel Pocock
  • Add doxygen documentation for cfg_setopt(), by Daniel Pocock
  • Don't fail on compiler warnings, remove -Werror, by Martin Hedenfalk
  • Avoid aborting processing of the configuration buffer after returning from include processing​. By Carlo Marcelo Arenas Belon
  • Make building of examples optional​.

Fixes

  • Fix user defined error callbacks, by Martin Hedenfalk
  • Include locale​.h, required by setlocale(), patch by Diego Petteno
  • Check for inet_ntoa() in external library, needed for tests to pass on Solaris, patch by Diego Petteno
  • Fixes for build warnings, by Martin Hedenfalk and Carlo Marcelo Arenas Belon
  • Fix segfault when processing a buffer that called cfg_include(), patch submitted by Carlo Marcelo Arenas Belon
  • Fix lexer match problem with unquoted strings ending in a slash​. Fixed by Martin Hedenfalk, reported by Sylvain Bertrand​.

v2​.6 - 2007-10-13

Changes

  • 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' instead 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)
  • remove obsolete confuse-config script in favour of pkg-config
  • windows build files now only in separate zip distribution

Fixes

  • fixed rpm builds, patch by Dan Lipsitt
  • always installs pkg-config ​.pc script
  • 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​.

v2​.5 - 2004-10-17

Changes

  • added flag CFGF_NODEFAULT (option has no default value)
  • added a tutorial
  • updated autoconf stuff, libconfuse installs with appropriate suffix now
  • added data file for pkg-config (try pkg-config --libs libconfuse)
  • updated confuse-config script (now only installed if pkg-config not found)
  • added cfg_name() and cfg_opt_name() functions

Fixes

  • fixed cfg_set_validate_func() for sections, using the '|' syntax

v2​.4 - 2004-08-09

Changes

  • added option type CFGT_PTR as a user-defined type

Fixes

  • fixed building of shared libraries

v2​.3 - 2004-05-22

Changes

  • options passed to cfg_init() are now dynamically duplicated, so it is no longer necessary to declare the cfg_opt_t array static
  • added tests using 'check' (a unit testing framework for C)
  • added config script confuse-config

Fixes

  • fixes compilation errors with gcc < 3​.3

v2​.2 - 2003-09-25

Changes

  • Allows more characters in an unquoted string (thanks Mike)
  • added cfg_opt_get functions
  • added cfg_opt_size function
  • added support to print options to a file
  • added print callback function per option
  • simple options can be retrieved with the cfg_get functions (allows using the cfg_print function for simple values)
  • added validating callback function per option

v2​.1 - 2003-07-13

Changes

  • Reversed logic in cfg_getXXX functions, they now abort if given an undeclared option name, and NULL/false if no value is set​. Suggested by Ademar de Souza Reis Jr​.
  • Sections without CFGF_MULTI flag now have default values
  • The cfg_getXXX functions now accept an extended syntax for the option name, try cfg_getxxx(cfg, 'sectionname|optionname')​. This way one doesn't have to first get the section with cfg_getsec()​.
  • Added project files for MS Visual C++ 6​.0
  • Includes io​.h on windows
  • Setting a list to the empty list in the config file now possible​.
  • Appending to default values in a list is now OK​.
  • Hexadecimal escape sequences allowed in double-quoted strings
  • Only include NLS support if gettext found in libc or preinstalled
  • Documented the cfg_setlist and cfg_addlist functions
  • The cfg_opt_setxxx functions no longer take a cfg_t? parameter (unused anyway)

Fixes

  • Fixed two more memory leaks​. (val->section and cfg->filename)
  • Fixed unterminated string bug in replacement strndup function
  • Fixed initialization of default values for lists, when given a NULL string​. Now initialized to the empty list​. Noted by Juraj Variny​.
  • Corrected line number with multi-line quoted strings
  • Fixed undetected /*comment*/ (ie, without space between /* and the text)
  • Forgot to fclose() include file after use, found by James Haley

v2​.0 - 2003-04-29

NOTE: Compatibility with earlier versions is broken!

Changes

  • Changed cfg_flag_t from enum to int (should now compile with C++)
  • Variable number of arguments to functions: function types should no longer specify number of expected arguments in the initializer, the callback should instead check the argc variable​.
  • Added documentation for the value parsing callback
  • Changed the definitions of cfg_func_t and cfg_callback_t, the cfg and option context are now both passed as parameters
  • Added a bunch of cfg_setXXX functions to set option values after parsing
  • Some types renamed for consistency (cfgopt_t to cfg_opt_t, cfgval_t to cfg_value_t, cfgbool_t to cfg_bool_t)
  • cfg_free_val() renamed to cfg_free_value()
  • Lexer symbols now uses prefix cfg_ to ease linking with other lexers
  • Sections with same title are always overwritten
  • Lists can now have (complete) default values in the form of a string that is parsed in the same way as the config file (see doc + examples)
  • Added support for building as a DLL on Windows
  • Included project files for Borland C++ Builder 6​.0
  • Included project files for Dev-Cpp 5​.0
  • Included project files for MS Visual Studio
  • Pre-built documentation now included in the source tarball

Fixes

  • Fixed the cfg_tilde_expand function
  • Fixed and extended the example programs
  • Forgot to close the file in cfg_parse()
  • Memory leaks fixed (checked with valgrind)

v1​.2​.3 - 2002-12-18

Changes

  • added callback support

Fixes

  • fixed segfault due to uninitialized user-defined error function

v1​.2​.2 - 2002-11-27

Changes

  • changed name to libConfuse (libcfg was way too common)
  • Don't build shared libraries by default (only static)
  • More Swedish translations
  • Implemented the cfg_free() function (previous versions had only a stub)
  • New function: cfg_free_val()
  • updated the manual

Info

Version 3.4 libConfuse