File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / confuse / ChangeLog.md
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 00:49:17 2021 UTC (3 years, 3 months ago) by misho
Branches: confuse, MAIN
CVS tags: v3_3, HEAD
confuse 3.3

    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>