1.16.026 Oct 2020 20:27
* Function `ini_get_bool_i()` has been created
* Code review (private function `get_type_as_active()`; types `int8_t`, `uint8_t`, `uint16_t` and `uint32_t` have been changed to to `int_least8_t`, `uint_least8_t`, `uint_least16_t` and `uint_least32_t` everywhere)
* New examples have been created (`examples/cplusplus/map.cpp`, `examples/utilities/ini_string_preparse.h`)
1.15.006 Oct 2020 22:54
* Public function `ini_global_set_lowercase_mode()` and global variable `INI_GLOBAL_LOWERCASE_MODE` have been marked as deprecated
* Global integer constant `INI_DISABLED_FLAG` and macro `INI_IS_IMPLICIT_SUBSTR()` have been added to the public header
* A minor incompatibility with **MSVC** has been solved
* A small bug has been fixed (starting from version 1.10.2 `IniDispatch::v_len` was not always set to `0` in case of empty `IniDispatch::value`)
* Code review (`strip_ini_cache()`)
* Minor changes that affect only the build system are now documented in a separate file (see `autostuff/ChangeLog.md`)
1.14.224 Sep 2020 18:09
* Improved re-implementation of `stdbool.h` in case of `--with-io-api=nolibc`
* General package maintenance
1.9.129 Mar 2019 06:25
Improved performance of load_ini_file() (ambiguous disabled entries that have been already tested with a negative result before invoking f_init() will be internally marked as comments for not being tested twice an example of such ambiguous disabled entries is # foo #bar ).
Added --multiversion option to the autogen.sh script for future major version changes (see INSTALL).
Added --with-pkgconfigdir=DIR option to the configure script.
Private function dqultrim_s() has been created.
Private macros _LIBCONFINI_IS_COM_MARKER_() and _LIBCONFINI_SC_INT_MARKER_ have been created.
Private macro _LIBCONFINI_INLINE_MARKER_ has been renamed to _LIBCONFINI_IC_INT_MARKER_.
Code review (load_ini_file(), private functions uncomment() and further_cuts()).
1.9.026 Mar 2019 03:16
Code review (load_ini_file(), private functions get_type_as_active() and further_cuts()).
1.8.618 Mar 2019 02:19
* Code review (private functions get_type_as_active(), further_cuts())
1.8.511 Mar 2019 01:29
1.8.408 Jan 2019 03:45
Code review (ini_string_match_ss(), ini_string_match_si(), ini_array_foreach(), ini_array_split()).
1.8.319 Nov 2018 23:14
* Code review (ini_string_match_ss(), ini_string_match_si(), ini_array_foreach(), ini_array_split())
1.8.211 Nov 2018 23:20
- Code review (private function further_cuts())
- Optimization flag -O2 seems to be working better than -O3 on Unix systems: conditionally use -O2 or -O3 depending on the host
- Use libtool's -avoid-version only when compiling under native Microsoft Windows environment
- Added --clean option to the autogen.sh script
- Updated Autotools macros
1.8.105 Nov 2018 06:25
Created typedefs of callback functions (types IniStatsHandler and IniDispHandler, both required by load_ini_file() and load_ini_path(), type IniStrHandler, required by ini_array_split(), and type IniSubstrHandler, required by ini_array_foreach()).
Internal macro _LIBCONFINI_INIFORMAT_AS_() has been renamed to INIFORMAT_TABLE_AS() and marked as public please note that the arguments that are passed to the user-given callback are now different.
Introduced libtool versioning system for the compiled binary (versioning begins with current version 1.8.0, represented as 0:0:0); note that libtool versioning system does not affect the versioning of the project currently in use, but constitutes only a means for the linker to keep track of incompatibilities between different releases of the library.
Improved support for building libconfini under Microsoft Windows (created Windows resource file src/winres.rc; conditionally added option -avoid-version to LDFLAGS in order to skip foreign libtool versioning system under Microsoft Windows; created batch script mgwmake.bat for compiling libconfini under Microsoft Windows without Autotools).
Code review (ini_fton() and ini_ntof()).
Updated Autotools macros.
Created new examples (see examples/topics/ini_array_foreach.c, examples/topics/ini_array_split.c and examples/miscellanea/stats_only.c).
1.8.029 Oct 2018 00:41
* Created `typedef`s of callback functions (types `IniStatsHandler` and `IniDispHandler`, both required by `load_ini_file()` and `load_ini_path()`, type `IniStrHandler`, required by `ini_array_split()`, and type `IniSubstrHandler`, required by `ini_array_foreach()`)
* Internal macro `_LIBCONFINI_INIFORMAT_AS_()` has been renamed to `INIFORMAT_TABLE_AS()` and marked as public please note that the arguments that are passed to the user-given callback are now different
* Introduced **libtool** versioning system for the compiled binary (versioning begins with current version 1.8.0, represented as `0:0:0`); note that **libtool** versioning system does not affect the versioning of the project currently in use, but constitutes only a means for the linker to keep track of incompatibilities between different releases of the library
* Improved support for building **libconfini** under Microsoft Windows (created Windows resource file `src/winres.rc`; conditionally added option `-avoid-version` to `LDFLAGS` in order to skip foreign **libtool** versioning system under Microsoft Windows; created batch script `mgwmake.bat` for compiling **libconfini** under Microsoft Windows without **Autotools**)
* Code review (`ini_fton()` and `ini_ntof()`)
* Updated **Autotools** macros
* Created new examples (see `examples/topics/ini_array_foreach.c`, `examples/topics/ini_array_split.c` and `examples/miscellanea/stats_only.c`)
1.6.119 May 2018 03:15
Functions ini_array_shift(), ini_array_break(), ini_array_release() have been created.
Made sure that escapable characters cannot be used as delimiters in formats that support escape sequences.
Boolean pair OFF/ON has been added to the list of supported INI booleans.
Boolean pair 0/1 has been removed from the list of supported INI booleans.
Public macro INIFORMAT_HAS_NO_ESC has been created.
Redundant function ini_get_lazy_bool() has been removed.
The buffer pointed by IniDispatch::append_to is now passed as const.
Code review (ini_string_match_ss(), ini_string_match_si(), ini_string_match_ii(), ini_string_parse(), ini_array_get_length(), ini_array_foreach(), ini_array_split(), private functions uncomment() and further_cuts()).
Private functions get_metachar_pos() and collapse_empty_quotes() have been created.
Private functions sanitize_key_name() and get_delimiter_pos() have been renamed to collapse_everything() and getn_metachar_pos() (the latter now requires one more argument).
1.6.015 May 2018 03:15
Added IniFormat::section_paths option to the IniFormat bitfield.
Created enum IniSectionPaths.
Made sure that implicit keys containing only empty quotes are ignored in formats that support quotes.
Private function ultrim_h() has been renamed to qultrim_h() and rewritten.
Code review (ini_array_foreach(), ini_array_split(), ini_string_parse(), private functions get_delimiter_pos() and get_type_as_active()).
1.5.203 May 2018 03:15
Changed fields order and sizes in the IniFormat bitfield.
Changed internal values of INI_KEY, INI_SECTION, INI_DISABLED_KEY andINI_DISABLED_SECTION (see enum IniNodeType).
Moved example INI files to examples/ini_files.
1.5.129 Apr 2018 03:15
Added IniFormat::preserve_empty_quotes option to the IniFormat bitfield.
IniFormat::hash, IniFormat::semicolon and IniFormat::multiline_entries
have been renamed to IniFormat::hash_marker, IniFormat::semicolon_marker
Function ini_string_parse() has been created.
Function ini_collapse_array() has been renamed to ini_array_collapse().
Function ini_split_array() has been renamed to ini_array_split().
Function ini_set_implicit_value() has been renamed toini_global_set_implicit_value().
Function confini_global_set_lowercase_mode() has been renamed toini_global_set_lowercase_mode().
Global variable INI_INSENSITIVE_LOWERCASE has been renamed toINI_GLOBAL_LOWERCASE_MODE.
Default value of INI_GLOBAL_LOWERCASE_MODE has been set to FALSE.
Data type IniFormatId has been renamed to IniFormatNum.
ini_format_get_id() has been renamed to ini_fton().
ini_format_set_to_id() has been renamed to ini_ntof() -- now accepts only
one argument and has a return value.
Constants INI_PARSE_COMMENT, INI_SHOW_COMMENT, INI_FORGET_COMMENT andINI_NORMAL_CHARACTER have been renamed to INI_DISABLED_OR_COMMENT,INI_ONLY_COMMENT, INI_IGNORE and INI_IS_NOT_A_MARKER.
Constants INI_EVERYTHING_MULTILINE, INI_ACTIVE_AND_DISABLED_MULTILINE andINI_ACTIVE_MULTILINE have been renamed to INI_MULTILINE_EVERYWHERE,INI_BUT_COMMENTS, and INI_BUT_DISABLED_AND_COMMENTS.
Constants CONFINI_EIINTR and CONFINI_EFEINTR have been renamed toCONFINI_IINTR and CONFINI_FEINTR.
enum tags ConfiniErrorNo and IniComments have been renamed toConfiniInterruptNo and IniCommentMarker.
Private function sanitize_section_name() has been renamed tosanitize_section_path().
Created private function sanitize_key_name().
Code review (ini_array_get_length(), ini_string_match_si(),ini_string_match_ii(), private functions sanitize_section_path() andcollapse_spaces()).
Made sure that sections appended to root as pseudo-subsections will be
dispatched always without the leading dot.
Made sure that key and section names
1.5.018 Apr 2018 19:35
* Added `IniFormat::preserve_empty_quotes` option to the `IniFormat` bitfield
* `IniFormat::hash`, `IniFormat::semicolon` and `IniFormat::multiline_entries`
have been renamed to `IniFormat::hash_marker`, `IniFormat::semicolon_marker`
* Function `ini_string_parse()` has been created
* Function `ini_collapse_array()` has been renamed to `ini_array_collapse()`
* Function `ini_split_array()` has been renamed to `ini_array_split()`
* Function `ini_set_implicit_value()` has been renamed to
* Function `confini_global_set_lowercase_mode()` has been renamed to
* Global variable `INI_INSENSITIVE_LOWERCASE` has been renamed to
* Default value of `INI_GLOBAL_LOWERCASE_MODE` has been set to `FALSE`
* Data type `IniFormatId` has been renamed to `IniFormatNum`
* `ini_format_get_id()` has been renamed to `ini_fton()`
* `ini_format_set_to_id()` has been renamed to `ini_ntof()` -- now accepts only
one argument and has a return value
* Constants `INI_PARSE_COMMENT`, `INI_SHOW_COMMENT`, `INI_FORGET_COMMENT` and
`INI_NORMAL_CHARACTER` have been renamed to `INI_DISABLED_OR_COMMENT`,
`INI_ONLY_COMMENT`, `INI_IGNORE` and `INI_IS_NOT_A_MARKER`
* Constants `INI_EVERYTHING_MULTILINE`, `INI_ACTIVE_AND_DISABLED_MULTILINE` and
`INI_ACTIVE_MULTILINE` have been renamed to `INI_MULTILINE_EVERYWHERE`,
`INI_BUT_COMMENTS`, and `INI_BUT_DISABLED_AND_COMMENTS`
* Constants `CONFINI_EIINTR` and `CONFINI_EFEINTR` have been renamed to
`CONFINI_IINTR` and `CONFINI_FEINTR`
* `enum` tags `ConfiniErrorNo` and `IniComments` have been renamed to
`ConfiniInterruptNo` and `IniCommentMarker`
* Private function `sanitize_section_name()` has been renamed to
* Created private function `sanitize_key_name()`
* Code review (`ini_array_get_length()`, `ini_string_match_si()`,
`ini_string_match_ii()`, private functions `sanitize_sectio