Annotation of embedaddon/confuse/ChangeLog.md, revision 1.1.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>