10.2. configfile — Configuration file (INI-file)

The INI file format is an informal standard for configuration files for some platforms or software. INI files are simple text files with a basic structure composed of sections, properties, and values.

More information on Wikipedia.

10.2.1. File format description

  • Line terminators: \n, \r\n or \n\r.
  • Opening bracket ([) at the beginning of a line indicates a section. The section name is all characters until a closing bracket (]).
  • A property line starts with its name, then a colon (:) or equal sign (=), and then the value.
  • Semicolon (;) or number sign (#) at the beginning of a line indicate a comment.

10.2.2. Example file

; last modified 1 April 2001 by John Doe
[owner]
name = John Doe
organization = Acme Widgets Inc.

[database]
; use IP address in case network name resolution is not working
server = 192.0.2.62
port = 143
file = "payroll.dat"

Source code: src/text/configfile.h, src/text/configfile.c

Test code: tst/text/configfile/main.c

Test coverage: src/text/configfile.c


Functions

int configfile_init(struct configfile_t *self_p, char *buf_p, size_t size)

Initialize given configuration file object.

Return
zero(0) or negative error code.
Parameters
  • self_p: Object to initialize.
  • buf_p: Configuration file contents as a NULL terminated string.
  • size: Size of the configuration file contents.

int configfile_set(struct configfile_t *self_p, const char *section_p, const char *property_p, const char *value_p)

Set the value of given property in given section.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized parser.
  • section_p: Section to set the property from.
  • property_p: Property to set the value for.
  • value_p: NULL terminated value to set.

char *configfile_get(struct configfile_t *self_p, const char *section_p, const char *property_p, char *value_p, int length)

Get the value of given property in given section.

Return
Value pointer or NULL on failure.
Parameters
  • self_p: Initialized parser.
  • section_p: Section to get the property from.
  • property_p: Property to get the value for.
  • value_p: Value of given property in given section.
  • size: Size of the value buffer.

int configfile_get_long(struct configfile_t *self_p, const char *section_p, const char *property_p, long *value_p)

Get the value of given property in given section, converted to an integer.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized parser.
  • section_p: Section to get the property from.
  • property_p: Property to get the value for.
  • value_p: Value of given property in given section.

int configfile_get_float(struct configfile_t *self_p, const char *section_p, const char *property_p, float *value_p)

Get the value of given property in given section, converted to a float.

Return
zero(0) or negative error code.
Parameters
  • self_p: Initialized parser.
  • section_p: Section to get the property from.
  • property_p: Property to get the value for.
  • value_p: Value of given property in given section.

struct configfile_t
#include <configfile.h>

Public Members

char *buf_p
size_t size