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>