Annotation of embedaddon/confuse/ChangeLog.md, revision 1.1
1.1 ! misho 1: Change Log
! 2: ==========
! 3:
! 4: All relevant changes to the project are documented in this file.
! 5:
! 6: [v3.3][] - 2020-06-25
! 7: ---------------------
! 8:
! 9: ### Changes
! 10: * Support building static library on Windows
! 11: * Support for `fmemopen()` in Windows UWP applications
! 12: * Support for `cfg_getopt(cfg, "sub=name|option")`, i.e., get an option
! 13: from a sub-section, by Peter Rosin
! 14: * Support for `CFGF_MODIFIED` flag, to detect changes to settings
! 15: in memory after parsing, by Peter Rosin
! 16: * Support for filtering out settings when printing, by Peter Rosin
! 17: * Support for dynamic key=value sections with no pre-runtime knowledge
! 18: of setting names, useful for environment variables and similar
! 19: * Updated German translation, by Chris Leick
! 20:
! 21: ### Fixes
! 22: * Fix loop-forever bug found by Christian Reitter; a .conf file
! 23: containing only "=", will cause even the simplest parser to loop
! 24: forever in internal function `cfg_getopt_secidx()`
! 25: * Issue #113: Fail to build `strdup()` replacement
! 26: * Issue #118: Fix build on Windows, missing `fmemopen()` replacement
! 27: * Issue #120: Handle shell and C++ comments with no space separator
! 28: * Issue #125: Drop developer debug msg `QSTR: ...`
! 29: * Issue #131: Fix `CFG_PTR_CB()` regression, segfaults when, e.g.,
! 30: `cfg_free()` is called. Found and fixed by Peter Rosin
! 31: * Issue #135: Revert `CFGF_RESET` flag if `cfg_setmulti()` family fail
! 32: * Issue #137: Memory leak in `cfg_setopt()` for PTR options
! 33:
! 34:
! 35: [v3.2.2][] - 2018-08-19
! 36: -----------------------
! 37:
! 38: This is a security patch release for CVE-2018-14447. The vulnerability
! 39: affects all releases since v3.1 when the `CFGF_COMMENTS` functionality
! 40: was first introduced.
! 41:
! 42: ### Fixes
! 43: * Issue #109: Out of bounds read in `lexer.l:trim_whitespace()`.
! 44:
! 45:
! 46: [v3.2.1][] - 2017-08-17
! 47: -----------------------
! 48:
! 49: ### Fixes
! 50: * Issue #101: Bump ABI major number due to incompatible change in struct
! 51: when adding option annotation/comments in [v3.1][]: `1.1.0 -> 2.0.0`
! 52:
! 53:
! 54: [v3.2][] - 2017-06-03
! 55: ---------------------
! 56:
! 57: ### Fixes
! 58: * Issue #96: Add Windows/mingw compatible `fmemopen()` replacement
! 59: * Issue #98: Fix v3.1 regression, segfault on comment-only lines
! 60:
! 61:
! 62: [v3.1][] - 2017-05-24
! 63: ---------------------
! 64:
! 65: ### Changes
! 66: * Refactored `CFGF_IGNORE_UNKNOWN` support, libConfuse now properly
! 67: ignores any type and sub-section without the need for declaring an
! 68: `__unknown` option. When the flag is set all unknown options,
! 69: including unknown sub-sections with, in turn, unknown options, are
! 70: now fully ignored
! 71: * Issue #69: New API for creating titled sections at runtime,
! 72: by Jonas Johansson @jonasj76
! 73: * Issue #92: Support for option annotation/comments. Every option can
! 74: now have a comment, which is both read and written from/to file.
! 75: Disabled by default, enable with `CFGF_COMMENTS` flag in `cfg_init()`
! 76: * ABI bump: 1.0.0 --> 1.1.0, due to new functionality
! 77:
! 78: ### Fixes
! 79: * Build unit tests statically for easier debugging
! 80: * Issue #21: Major refactor of lexer to fix memory leaks, `cfg_free()`
! 81: now properly releases all memory. By Joachim Nilsson @troglobit
! 82: * Issue #64: Fixed MSVC build errors, by George Koskeridis @Gikoskos
! 83: * Issue #65: SIGSEGV when parsed default values are used with include,
! 84: by Dmitri Zhabinski
! 85: * Issue #71: Fix syntax in rpm spec file, for CentOS/RHEL7
! 86: * Issue #73: Adjust gettext version requirement to build on CentOS/RHEL7.
! 87: GNU gettext v0.18.2.1 update `AM_GNU_GETTEXT()` to use AC_PROG_MKDIR_P
! 88: instead of `AM_PROG_MKDIR_P`, but v0.18.1.1 is included in Ubuntu 12.04
! 89: LTS. Fortunately Ubuntu 14.04 LTS ships v0.18.3.1 and Debian Jessie
! 90: ships v0.19.3. Unfortunately, CentOS7 and RHEL7 ships v0.18.2.1, so
! 91: for best compat. level at this point in time we require v0.18.2.
! 92: * Issue #74: Fix typos in documentation, by Luca Ceresoli
! 93: * Issue #79: Add `fmemopen()` compat for *BSD, including macOS
! 94:
! 95:
! 96: [v3.0][] - 2016-03-03
! 97: ---------------------
! 98:
! 99: This release signifies a major change in libConfuse. On out-of-memory
! 100: conditions at run time, invalid API input, and some other odd use-cases,
! 101: libConfuse will no longer `assert()`. Instead, `NULL` or `CFG_FAIL` is
! 102: returned with an error code for you to handle. For some users this will
! 103: completely change how your application works, so heads up! The library
! 104: ABI version has also been stepped due to this.
! 105:
! 106: Special thanks in this release goes out to Frank Hunleth, Peter Rosin
! 107: and David Grayson for their tireless efforts in helping improve this
! 108: library!
! 109:
! 110: **Note:** libConfuse no longer calls `setlocale()` for `LC_MESSAGES` and
! 111: `LC_CTYPE`. See the documentation for `cfg_init()` for details.
! 112:
! 113: ### Changes
! 114:
! 115: * Support for handling unknown options. The idea is to provide future
! 116: proofing of configuration files, i.e. if a new parameter is added, the
! 117: new config file will not fail if loaded in an older version of your
! 118: program. See the `CFGF_IGNORE_UNKNOWN` flag in the documentation for
! 119: more information. Idea and implementation by Frank Hunleth.
! 120: * Add public API for removing sections at runtime, by Peter Rosin.
! 121: * Allow `cfg_opt_getval()` on options that are `CFGF_MULTI` sections,
! 122: by Peter Rosin.
! 123: * Add `cfg_setmulti()` and `cfg_opt_setmulti()`, by Peter Rosin.
! 124: * Add CLI example of how to manage configuration changes at runtime,
! 125: also by Peter Rosin.
! 126: * Support for Travis-CI and Coverity Scan, by Joachim Nilsson.
! 127: * Use `autoreconf` in `autogen.sh` instead of calling tools separately.
! 128: * Powershell script for AppVeyor CI to build libConfuse with MSYS2
! 129: by David Grayson.
! 130: * Removed calls to `setlocale()` intended to localize messages, with
! 131: `LC_MESSAGES`, and region specific types, with `LC_CTYPE`. This is
! 132: now the responsibility of the user of the library.
! 133: * Reindent to Linux coding style for a clear and well defined look,
! 134: this to ease future maintenance. Issue #33
! 135: * Add support for `CFGF_DEPRECATED` and `CFGF_DROP` option flags. The
! 136: former causes libConfuse to print a deprecated warning message and the
! 137: latter drops the read value on input. Idea and implementation by
! 138: Sebastian Geiger. Issue #24
! 139: * Add `HACKING.md` document to detail maintenance and release checklists
! 140:
! 141: ### Fixes
! 142:
! 143: * Do not assert on API input validation, memory allocation, or similar.
! 144: Instead, return error code to user for further handling. This change
! 145: also includes fixes for a lot of unchecked API return values, e.g.,
! 146: `strdup()`. Issue #37
! 147: * Protect callers arguments to `cfg_setopt()`, by Peter Rosin
! 148: * If new value to `cfg_setopt()` fails parsing, do not lose old value,
! 149: by Peter Rosin.
! 150: * Fixes to update support for older versions of Microsoft Visual Studio
! 151: as well as MSYS2/mingw-w64 by Peter Rosin and David Grayson.
! 152: * Issue #45: `cfg_init()` does not report error on multiple options with
! 153: the same name. Fixed by Peter Rosin.
! 154: * Fixes for memory leaks, invalid expressions, unused variables and
! 155: missing error handling, all thanks to Coverity Scan
! 156:
! 157:
! 158: [v2.8][] - 2015-10-14
! 159: ---------------------
! 160:
! 161: ### Changes
! 162:
! 163: * Support for specifying a searchpath for `cfg_parse()`, by J.J. Green
! 164: * Restore build of shared library by default, by Nathan Phillip Brink
! 165: * Added German translation, contributed by Chris Leick, Aurelien Jarno,
! 166: and Tux^verdreifelt.
! 167: * Document `CFG_SIMPLE_STR` for doxygen, by Nathan Phillip Brink
! 168: * Update ISC license to 2007 version, by Joachim Nilsson
! 169: * Write files in a Bourne shell compatible way, by Alvaro G. M
! 170: * Fix mid-string environment variable substitution, by Frank Hunleth
! 171:
! 172: ### Fixes
! 173: * Various ISO C90 and `-ansi` fixes by Carlo Marcelo Arenas Belon
! 174: * Fix C++ compiler warnings for `const` strings, by Craig McQueen
! 175: * Fix `make distcheck` and out-of-source builds, by Nathan Phillip Brink
! 176: * Fix missing `.gitignore` files, by Carlo Marcelo Arenas Belon
! 177: * Fix `CFG_SIMPLE_INT` on 64-bit systems, by Carlo Marcelo Arenas Belon
! 178: * Coding style cleanup by J.J. Green
! 179: * Fix issue #27: searchpath free problems. Fix to new feature
! 180: introduced in this release cycle.
! 181: * Improved support for MSYS2 by David Grayson.
! 182:
! 183:
! 184: [v2.7][] - 2010-02-20
! 185: ---------------------
! 186:
! 187: ### Changes
! 188:
! 189: * Expose `cfg_setopt()` function in public API, suggested by Daniel Pocock
! 190: * Add doxygen documentation for `cfg_setopt()`, by Daniel Pocock
! 191: * Don't fail on compiler warnings, remove `-Werror`, by Martin Hedenfalk
! 192: * Avoid aborting processing of the configuration buffer after returning
! 193: from include processing. By Carlo Marcelo Arenas Belon
! 194: * Make building of examples optional.
! 195:
! 196: ### Fixes
! 197:
! 198: * Fix user defined error callbacks, by Martin Hedenfalk
! 199: * Include `locale.h`, required by `setlocale()`, patch by Diego Petteno
! 200: * Check for `inet_ntoa()` in external library, needed for tests to pass
! 201: on Solaris, patch by Diego Petteno
! 202: * Fixes for build warnings, by Martin Hedenfalk and Carlo Marcelo Arenas Belon
! 203: * Fix segfault when processing a buffer that called `cfg_include()`, patch
! 204: submitted by Carlo Marcelo Arenas Belon
! 205: * Fix lexer match problem with unquoted strings ending in a slash. Fixed by
! 206: Martin Hedenfalk, reported by Sylvain Bertrand.
! 207:
! 208:
! 209: [v2.6][] - 2007-10-13
! 210: ---------------------
! 211:
! 212: ### Changes
! 213:
! 214: * added French translation contributed by Matthieu Sion
! 215: * added build script and instructions for compiling with Mingw under
! 216: Windows (contributed by Matthieu Sion)
! 217: * now accepts a simplified list append syntax:
! 218:
! 219: option += "value"
! 220: instead of
! 221: option += {"value"}
! 222:
! 223: * added flag `CFGF_NO_TITLE_DUPES`: multiple section titles must be
! 224: unique (duplicates raises an error, only applies to sections)
! 225: (suggested by Brian Fallik)
! 226: * remove obsolete `confuse-config` script in favour of `pkg-config`
! 227: * windows build files now only in separate zip distribution
! 228:
! 229: ### Fixes
! 230:
! 231: * fixed rpm builds, patch by Dan Lipsitt
! 232: * always installs `pkg-config` .pc script
! 233: * fixed a bug reported by Josh Kropf with single sections with titles
! 234: * added patch that escapes values with quotes and backslashes when printing.
! 235: * fixed a memory leak in default values for string lists,
! 236: reported by Vineeth Neelakant.
! 237:
! 238:
! 239: [v2.5][] - 2004-10-17
! 240: ---------------------
! 241:
! 242: ### Changes
! 243:
! 244: * added flag `CFGF_NODEFAULT` (option has no default value)
! 245: * added a tutorial
! 246: * updated autoconf stuff, libconfuse installs with appropriate suffix now
! 247: * added data file for `pkg-config` (try `pkg-config --libs libconfuse`)
! 248: * updated `confuse-config` script (now only installed if `pkg-config` not found)
! 249: * added `cfg_name()` and `cfg_opt_name()` functions
! 250:
! 251: ### Fixes
! 252:
! 253: * fixed `cfg_set_validate_func()` for sections, using the "|" syntax
! 254:
! 255:
! 256: [v2.4][] - 2004-08-09
! 257: ---------------------
! 258:
! 259: ### Changes
! 260:
! 261: * added option type `CFGT_PTR` as a user-defined type
! 262:
! 263: ### Fixes
! 264:
! 265: * fixed building of shared libraries
! 266:
! 267:
! 268: [v2.3][] - 2004-05-22
! 269: ---------------------
! 270:
! 271: ### Changes
! 272:
! 273: * options passed to `cfg_init()` are now dynamically duplicated, so it
! 274: is no longer necessary to declare the `cfg_opt_t array` static
! 275: * added tests using 'check' (a unit testing framework for C)
! 276: * added config script `confuse-config`
! 277:
! 278: ### Fixes
! 279:
! 280: * fixes compilation errors with gcc < 3.3
! 281:
! 282:
! 283: [v2.2][] - 2003-09-25
! 284: ---------------------
! 285:
! 286: ### Changes
! 287:
! 288: * Allows more characters in an unquoted string (thanks Mike)
! 289: * added `cfg_opt_get` functions
! 290: * added `cfg_opt_size` function
! 291: * added support to print options to a file
! 292: * added print callback function per option
! 293: * simple options can be retrieved with the `cfg_get` functions (allows
! 294: using the `cfg_print` function for simple values)
! 295: * added validating callback function per option
! 296:
! 297:
! 298: [v2.1][] - 2003-07-13
! 299: ---------------------
! 300:
! 301: ### Changes
! 302:
! 303: * Reversed logic in `cfg_getXXX` functions, they now abort if given an
! 304: undeclared option name, and NULL/false if no value is set. Suggested
! 305: by Ademar de Souza Reis Jr.
! 306: * Sections without `CFGF_MULTI` flag now have default values
! 307: * The `cfg_getXXX` functions now accept an extended syntax for the
! 308: option name, try `cfg_getxxx(cfg, "sectionname|optionname")`. This
! 309: way one doesn't have to first get the section with `cfg_getsec()`.
! 310: * Added project files for MS Visual C++ 6.0
! 311: * Includes io.h on windows
! 312: * Setting a list to the empty list in the config file now possible.
! 313: * Appending to default values in a list is now OK.
! 314: * Hexadecimal escape sequences allowed in double-quoted strings
! 315: * Only include NLS support if gettext found in libc or preinstalled
! 316: * Documented the `cfg_setlist` and `cfg_addlist` functions
! 317: * The `cfg_opt_setxxx` functions no longer take a `cfg_t?` parameter (unused anyway)
! 318:
! 319: ### Fixes
! 320:
! 321: * Fixed two more memory leaks. (`val->section` and `cfg->filename`)
! 322: * Fixed unterminated string bug in replacement strndup function
! 323: * Fixed initialization of default values for lists, when given a NULL
! 324: string. Now initialized to the empty list. Noted by Juraj Variny.
! 325: * Corrected line number with multi-line quoted strings
! 326: * Fixed undetected `/*comment*/` (ie, without space between /* and the text)
! 327: * Forgot to `fclose()` include file after use, found by James Haley
! 328:
! 329:
! 330: v2.0 - 2003-04-29
! 331: -----------------
! 332:
! 333: **NOTE:** Compatibility with earlier versions is broken!
! 334:
! 335: ### Changes
! 336:
! 337: * Changed `cfg_flag_t` from `enum` to `int` (should now compile with C++)
! 338: * Variable number of arguments to functions: function types should no
! 339: longer specify number of expected arguments in the initializer, the
! 340: callback should instead check the `argc` variable.
! 341: * Added documentation for the value parsing callback
! 342: * Changed the definitions of `cfg_func_t` and `cfg_callback_t`, the cfg
! 343: and option context are now both passed as parameters
! 344: * Added a bunch of `cfg_setXXX` functions to set option values after parsing
! 345: * Some types renamed for consistency (`cfgopt_t` to `cfg_opt_t`, `cfgval_t`
! 346: to `cfg_value_t`, `cfgbool_t` to `cfg_bool_t`)
! 347: * `cfg_free_val()` renamed to `cfg_free_value()`
! 348: * Lexer symbols now uses prefix `cfg_` to ease linking with other lexers
! 349: * Sections with same title are always overwritten
! 350: * Lists can now have (complete) default values in the form of a string
! 351: that is parsed in the same way as the config file (see doc + examples)
! 352: * Added support for building as a DLL on Windows
! 353: * Included project files for Borland C++ Builder 6.0
! 354: * Included project files for Dev-Cpp 5.0
! 355: * Included project files for MS Visual Studio
! 356: * Pre-built documentation now included in the source tarball
! 357:
! 358: ### Fixes
! 359:
! 360: * Fixed the `cfg_tilde_expand` function
! 361: * Fixed and extended the example programs
! 362: * Forgot to close the file in `cfg_parse()`
! 363: * Memory leaks fixed (checked with valgrind)
! 364:
! 365:
! 366: v1.2.3 - 2002-12-18
! 367: -------------------
! 368:
! 369: ### Changes
! 370:
! 371: * added callback support
! 372:
! 373: ### Fixes
! 374:
! 375: * fixed segfault due to uninitialized user-defined error function
! 376:
! 377:
! 378: v1.2.2 - 2002-11-27
! 379: -------------------
! 380:
! 381: ### Changes
! 382:
! 383: * changed name to libConfuse (libcfg was way too common)
! 384: * Don't build shared libraries by default (only static)
! 385: * More Swedish translations
! 386: * Implemented the `cfg_free()` function (previous versions had only a stub)
! 387: * New function: `cfg_free_val()`
! 388: * updated the manual
! 389:
! 390:
! 391: [UNRELEASED]: https://github.com/martinh/libconfuse/compare/v3.3...HEAD
! 392: [v3.3]: https://github.com/martinh/libconfuse/compare/v3.2.2...v3.3
! 393: [v3.2.2]: https://github.com/martinh/libconfuse/compare/v3.2.1...v3.2.2
! 394: [v3.2.1]: https://github.com/martinh/libconfuse/compare/v3.2...v3.2.1
! 395: [v3.2]: https://github.com/martinh/libconfuse/compare/v3.1...v3.2
! 396: [v3.1]: https://github.com/martinh/libconfuse/compare/v3.0...v3.1
! 397: [v3.0]: https://github.com/martinh/libconfuse/compare/v2.8...v3.0
! 398: [v2.8]: https://github.com/martinh/libconfuse/compare/v2.7...v2.8
! 399: [v2.7]: https://github.com/martinh/libconfuse/compare/v2.6...v2.7
! 400: [v2.6]: https://github.com/martinh/libconfuse/compare/v2.5...v2.6
! 401: [v2.5]: https://github.com/martinh/libconfuse/compare/v2.4...v2.5
! 402: [v2.4]: https://github.com/martinh/libconfuse/compare/v2.3...v2.4
! 403: [v2.3]: https://github.com/martinh/libconfuse/compare/v2.2...v2.3
! 404: [v2.2]: https://github.com/martinh/libconfuse/compare/v2.1...v2.2
! 405: [v2.1]: https://github.com/martinh/libconfuse/compare/v2.0...v2.1
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>