Tiny INI parser
Ondřej Hruška a038484869
better ini examples
11 months ago
.gitignore code import 11 months ago
LICENSE Initial commit 11 months ago
Makefile code import 11 months ago
README.md better ini examples 11 months ago
nini.c code import 11 months ago
nini.h code import 11 months ago
test.c code import 11 months ago

README.md

NINI

This parser aims to be the smallest possible while supporting a sufficient subset of the INI format. The parser is meant for use in embedded applications.

When compiled for a bare metal Cortex-M0, the whole parser fits in 336 bytes of Flash and 30 (+buffers) bytes of RAM.

Features

  • Basic INI format support
  • Accepts both Unix and DOS newlines
  • Minimal memory footprint
  • The input file can be loaded in multiple pieces of any size.
  • Buffer sizes (section, key, value) can be configured in the header file.
  • Custom data void * for maintaining user context, passed to the callback

Sypported syntax

Any whitespace, except inside a value, is discarded.

  • Sections - [section]
    • Supports any characters except whitespace and ]
  • Key-value pairs - key = value
    • Key supports any characters except whitespace and =
    • Value can contain whitespace, leading and trailing whitespace is removed.
    • Ends with either \r or \n
  • Comment # comment ...
    • Ends with either \r or \n

Limitations

  • Not re-entrant, uses a static state variable
  • No checks for invalid syntax
  • Whitespace inside keys and section names is removed
  • Quoted strings and escape sequences are not supported, will be collected as plain text
  • Value can't be followed by an inline comment

See the file test.c for an example of the most basic usage; see the header file for more details on the API.