Skip to content

andy5995/canfigger

Repository files navigation

codeql-badge actions-c-badge cirrus-badge windows-badge

canfigger v0.3.3

Canfigger is a C library for parsing configuration files. It reads a file and returns the contents as a linked list of key-value nodes. Each node can carry a list of attributes — extra values separated by a delimiter on the same line. The library includes helpers for reading attributes as integers and for parsing RGBA hex colors. It also provides functions for locating standard user directories on Linux (XDG), macOS, and Windows.

Format

The following config file example represents the format handled by canfigger:

foo = bar
blue = color, shiny
statement = hello world, obvious

# An option with no value or attributes
FeatureFooEnabled

# key, value with 2 attributes
dhcp-range = 192.168.0.50, 192.168.0.150, 12

# key, value with 9 attributes
solar_system = sun, Mercury, Venus, Earth, Mars, Jupiter, Saturn, Neptune, Uranus, Pluto

You can change the attribute delimiter character by passing it as the second argument:

canfigger_parse_file(filename_ptr, ':');

Platform path helpers

Canfigger provides helpers for locating standard per-user paths on Linux (XDG), macOS, and Windows:

  • canfigger_config_dir(appname) — returns the per-application config directory ($XDG_CONFIG_HOME/appname or $HOME/.config/appname)
  • canfigger_data_dir(appname) — returns the per-application data directory ($XDG_DATA_HOME/appname or $HOME/.local/share/appname)
  • canfigger_cache_dir(appname) — returns the per-application cache directory ($XDG_CACHE_HOME/appname or $HOME/.cache/appname)
  • canfigger_config_file(filename) — returns a path directly under the base config directory, without an application subdirectory ($XDG_CONFIG_HOME/filename or $HOME/.config/filename); useful when the config file lives at the config root rather than in a per-application subdirectory
  • canfigger_path_join(dir, file) — joins a directory and filename with the platform separator

See the API documentation for details.

Dependencies

None

Building

meson setup _build
cd _build
ninja

For configuration options, use meson configure (see the Meson docs for detailed usage).

Tests

meson test (-v)

Example programs

Example programs will be built when you run ninja. If you want to try them with a different config file, give them the name of a config file as an argument.

About

C config file parser with typed attributes, XDG dirs, and RGBA colors

Topics

Resources

License

Stars

Watchers

Forks

Contributors