summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* ini_comment.h needs to be installed as well for the new ini interface.master-wipGünther Deschner2013-01-282-1/+2
| | | | Guenther
* Unit test for parsing flags.Dmitri Pal2013-01-243-0/+89
| | | | Added unit test.
* More interface refactoringDmitri Pal2013-01-246-174/+171
| | | | | | | | | | | | | | | | | I also realized that error list processing should not be bound to the file object. This patch corrects that by moving the error_list and corresponding count from file object to the config object. Things updated by the patch: 1. The internal variables are moved from file obj to config obj. 2. The external header is updated to reflect the change 3. Functions are moved from file obj module to config obj module. 4. Parser code is updated because error validation was in the wrong place 5. Unit test is adjusted to get error list from the right object. I had to adjust the copy function for the config object. Copy function does not copy over the error list.
* Introducing parsing flagsDmitri Pal2013-01-244-65/+187
| | | | | | | | | | | | | | | | 1. Added definition of the parsing flags to the header. 2. Added new argument to the parser. 3. Added function to check the correctness of the line. 4. Added new constants and strings for errors. 5. Refactored function that handles spaces. 6. Moved handle_space since it now calls handle_kvp. 7. Updated handle_kvp to trim spaces at the beginning. 8. Adjusted line inspection to handle any space character. 9. Adjusted exising unit tests. Added parameter to the call. 10. Found couple places where there was a space at the end of the line and cleaned them. The additional unit tests will be added in the follow up patch.
* Refactor interface a bitDmitri Pal2013-01-246-90/+89
| | | | | | | | | | | | | | | | | After some evaluation it became apparent that error level and collision flags should not be a part of the fileobj but rather passed directly to the parser function. This way the interface is more clean and logical. This patch: 1) Removes the error level and collision flags from the fileobj 2) Moves validation function from ini_fileobj.c to ini_configobj.c where it belongs. 3) Moves error level and collision flags arguments from file open function to the parser function. 4) The internals of the file obj are cleaned 5) Validation of the arguments is moved to parser function. 6) Unit tests are updated.
* Replacing sprintf with snprintfDmitri Pal2013-01-246-55/+79
| | | | | | | | Replaced sprintf in the unit test. Defined constants for sizes and used them. Wrpapped lines where noticed that they are longer than 80. Added comments to the places where sprintf is still used but it is safe to use.
* Fixing headersDmitri Pal2013-01-2436-67/+36
| | | | | | | Move GNU_SOUCE definition to configure.ac Change all headers to use config.h. Move config.h to the top. Remove errno.h if it is not needed.
* Use ENOMEM instead of errnoDmitri Pal2013-01-245-41/+18
| | | | | Reviewed all uses or errno. Cleaned places that needed cleaning. Did not remove <errno.h> yet where it is not needed.
* Converting errors to enumDmitri Pal2013-01-241-32/+25
| | | | | Patch converts error and error level to enum instead of defines.
* Add INI_GET_LAST_VALUEDmitri Pal2013-01-073-8/+44
| | | | | Refactored the defines to enum. Added support for fetching last value from the section.
* Fix CLANG errors in unit testDmitri Pal2013-01-075-40/+44
|
* Make CLANG happyDmitri Pal2013-01-044-11/+23
| | | | Address CLANG issues in the main code.
* Fixing coverity issue 13105Dmitri Pal2012-12-121-2/+2
|
* Update unit testsDmitri Pal2012-12-061-6/+368
| | | | | | The parser unit test have been updated to execute the changes in the parser code. A new test was added to execute merge code in all possible modes.
* Update files used in the unit testDmitri Pal2012-12-065-106/+659
|
* Update comments in the public interfaceDmitri Pal2012-12-061-2/+7
|
* Improve parserDmitri Pal2012-12-065-34/+98
| | | | | | | | | | | | | | | | | | 1. Move the last comment into the config object Last comment in the file was previously treated as a special value in the last section in the configuration object. That created difficulties while merging. Storing an orphan comment as part of the config object is a better approach 2. Since the structure of the config object changed the internal header and serialization required update. 3. Parser code was updated to: - deal with the last comment on the top level - make sure the right error codes are returned in different modes - pass right information through the layers which caused some refactoring of the internal calls - prevent using an already used configuration object as an input to parser.
* Ability to merge configurationsDmitri Pal2012-12-061-5/+581
| | | | This patch adds capability to merge two configuration objects.
* Fix trace messageDmitri Pal2012-12-061-1/+1
|
* Merge comments from different valuesDmitri Pal2012-12-063-35/+134
| | | | | Patch allows merging comments that are part of the two different value objects. The values are not merged.
* Merge and serialize commentsDmitri Pal2012-12-063-2/+246
| | | | | | Patch adds ability to combine two different comments into one. It includes changes to the comment API, header file and unit test. It also fixes an invalid free in one of the error cases.
* Adding a trace statementDmitri Pal2012-12-061-1/+2
|
* Remove code that allows dup sectionsDmitri Pal2012-12-065-201/+30
| | | | | | | | | | | | Duplicate sections in the config tree is a bad idea. After more evaluation I decided to not allow more than one section with the same name to be acceptable in the resulting object. All duplicate sections need to be processed so that only one section is left as a result. The collision flags control that. It is OK to remove it as this code has not been released yet. I also spotted that unit test does not exit if the system() call was successful but the command it invoked was not. Fixed that. Also fixed couple spelling mistakes here and there.
* Fixed libcollection dependency and header files inclusionOndrej Kos2012-10-251-0/+3
| | | | | | | Fixes https://bugzilla.redhat.com/show_bug.cgi?id=637955 Also while fixing this, I found that rpmbuild was broken due to missing includes in ini_config-devel spec.
* Clean doxygen configurationsDmitri Pal2012-10-245-170/+5
| | | | | The doxygen files contained some deprecated values and typos. This patch cleans them for all interfaces exposed by ding libs.
* Fix doxygen warnings for the interfaceDmitri Pal2012-10-241-49/+50
| | | | This patch fixes the doxygen warnings in the new interface.
* Fixing coverity issue 11089Dmitri Pal2012-10-171-1/+1
| | | | Pointer was not initialized before being read.
* Fix two issues in Makefile.amDmitri Pal2012-10-171-2/+2
| | | | | 1. The header files were not included into the package. 2. The `make distcheck` commnd was failing due to typo.
* Build docs for new interfaceDmitri Pal2012-10-171-1/+1
| | | | | This patch stops building interface docs for the old interface and starts generating description for the new interface.
* Added new tests for the multi value keysDmitri Pal2012-10-172-0/+1136
|
* Start building the new interfaceDmitri Pal2012-10-171-0/+3
|
* The implementation of the new interfaceDmitri Pal2012-10-173-0/+1319
| | | | | | | | | The three files in the patch implement the functions of the new interface. It is mostly inspired by the old interface except that the string value is replaced with the value object that hides all the metadata about the value itself. The main function to get value now allows more than one value per key.
* Add a search state to the config objectDmitri Pal2012-10-172-0/+40
| | | | | | | The search state allows one to search a configuration object for the same key in the cases when a key permits more than one value scattered across the config file. The state needs to be stored, initialized and properly cleaned.
* Definition of the new INI interfaceDmitri Pal2012-10-171-206/+789
| | | | | | | | Some time ago I started the new INI interface that exists in parallel to the existing interface but uses value object to store value rather than just strings. The header has all the details about the new interface.
* Adding couple functions to value objectDmitri Pal2012-10-173-1/+85
| | | | | | | | | The patch adds function to get the length of the concatenated value. It also adds a convenince print function that is convenint in debugging the values inside configuration object. Patch also add checkes for input values that can be passed by pointer.
* No need to copy file in configure any moreDmitri Pal2012-10-171-2/+1
| | | | File is copied from the test itself.
* Fix permission checking unit testStephen Gallagher2012-10-173-38/+159
| | | | | | | | | The unit test was broken. The wrong function was used. To make sure everything is correct I also added a convenience function to print the internals if the file context object. The unit test is fixed to use relative paths consitently. Also added nice statements at the beggining and the end of the unit test functions where they were missing.
* Update version numbers for ding-libs-0.2.91 releaseJan Zeleny2012-05-153-13/+13
|
* Properly handle file permissions for ini_parse_ut startup_test()Stephen Gallagher2012-05-151-17/+6
|
* Fix issue when running make distcheckStephen Gallagher2012-05-154-12/+8
| | | | | | | | When running 'make distcheck', all files in the $srcdir are set to read-only, to ensure that the build does not modify the source. However, this broke our ability to test file permissions. We will now copy the file to the builddir and do the tests there, where we have control.
* Update version numbers for ding-libs 0.1.3 releaseStephen Gallagher2012-04-251-3/+3
|
* Bump version for 0.1.3 releaseStephen Gallagher2012-04-252-2/+2
|
* Ensure error_string() never returns NULLSumit Bose2012-04-251-1/+12
| | | | | | A Coverity check indicated that ther are platforms where strerror() will return NULL for unknown, e.g. negative error numbers. Chances are that these platforms will have problems with NULL arguments to printf() too.
* * Resolves: bug #735464 Fix the loop limit used to initialize the table ↵John Dennis2012-04-253-77/+182
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | directory, was based on count, now limited to segment_count. * Do not pre-allocate all buckets based on requested table size. This defeats the point of a dynamic hash table which adjusts it's memory usage depending upon the number of items it holds. Pre-allocation also runs afoul of the table contraction logic, if the table is pre-allocated to a large size it will subsequently try to compact it negating the pre-allocation. Now the initial allocation is restricted to one directory segment (i.e. table->segment_count == 1) * If the caller did not specify the directory_bits and segment_bits then compute them from the requested table size. The directory_size and segment_size must be powers of 2 to accmodate fast arithmetic. An optimal maximum number of buckets would be equal to the anticipated table size. If there were no collisions that would mean each item would be located in it's own bucket whose chain length is 1, the item would be immediatly found upon indexing into the bucket table. * There is a requirment there be at least one directory segment, however contract_table() failed to enforce this requirement. Add a check to enforce the requirement. * If hash_create() or hash_create_ex() failed it left the tbl parameter uninitialized but returned an error code. Now upon failure tbl is initialized to NULL as well as returning an error code. * Clean up how the directory and segment sizes were computed. It had been using a loop and shifting 1 bit at a time, now it shifts all the bits in one operation and assures at least one directory and segment are allocated. * In the event of an early exit from hash_create_ex() due to an error make sure all previously allocated resources are cleaned up by calling hash_destroy(). There was only one place this was missing. hash_destroy() blindly assumed the table had a directory, normally it would unless hash_destroy was called due to an early exit in hash_create_ex(). Modify hash_destroy() to check for the existence of the directory before cleaning up the directory contents. * Update the function documentation in dhash.h to explain each parameter of hash_create() and hash_create_ex(). * Enhance dhash_test.c - To output the random seed used to intialize the random number generator and add command line option to set the random seed. This permits recreating a failed test run. - Add command line parameter to set the initial table size. - Use proper string to long conversion routines when reading command line parameters (e.g. strtoul() instead of atoi()) - Add logic to make sure each test value is unique. * Add additional information to the debug output to show the computed directory_bits, segment_bits, sizes, etc. * Adjust the debug_level conditionals to be less verbose.
* Use right macroDmitri Pal2012-04-051-1/+1
| | | | Use correct macro instead of type casting.
* Add missing cleanup in unit testDmitri Pal2012-04-051-1/+23
|
* Add missing assertion macroDmitri Pal2012-04-051-0/+1
|
* Do not debug paddingDmitri Pal2012-04-051-0/+3
| | | | | | | | The header structure might contain padding to align data on the boundary of the word. It is unsafe to always print the header data as it might be uninitialized. I do not want to remove it as it might be handy some day so I prefer to #ifdef it.
* Exposing functionsDmitri Pal2012-04-053-2/+10
| | | | | This patch makes two internal functions resusable from different source modules.
* Initialize variables in loopsDmitri Pal2012-04-053-1/+8
| | | | | | | | | It occured to me that one of the issues that Coverity did not like (and I could not understand what it is complaining about) is related to intializing the variables in the loop. This patch adds initialization in the loops. Also there was an initialization missing in the ini_configobj.c