1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405
|
Change Log
==========
All relevant changes to the project are documented in this file.
[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
[UNRELEASED]: https://github.com/martinh/libconfuse/compare/v3.3...HEAD
[v3.3]: https://github.com/martinh/libconfuse/compare/v3.2.2...v3.3
[v3.2.2]: https://github.com/martinh/libconfuse/compare/v3.2.1...v3.2.2
[v3.2.1]: https://github.com/martinh/libconfuse/compare/v3.2...v3.2.1
[v3.2]: https://github.com/martinh/libconfuse/compare/v3.1...v3.2
[v3.1]: https://github.com/martinh/libconfuse/compare/v3.0...v3.1
[v3.0]: https://github.com/martinh/libconfuse/compare/v2.8...v3.0
[v2.8]: https://github.com/martinh/libconfuse/compare/v2.7...v2.8
[v2.7]: https://github.com/martinh/libconfuse/compare/v2.6...v2.7
[v2.6]: https://github.com/martinh/libconfuse/compare/v2.5...v2.6
[v2.5]: https://github.com/martinh/libconfuse/compare/v2.4...v2.5
[v2.4]: https://github.com/martinh/libconfuse/compare/v2.3...v2.4
[v2.3]: https://github.com/martinh/libconfuse/compare/v2.2...v2.3
[v2.2]: https://github.com/martinh/libconfuse/compare/v2.1...v2.2
[v2.1]: https://github.com/martinh/libconfuse/compare/v2.0...v2.1
|