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>