nuttx-apps/fsutils/inifile
2020-07-25 01:01:51 -07:00
..
inifile.c Fix nxstyle warning 2020-05-06 07:31:10 -06:00
Kconfig Move system/inifile to fsutils/inifile 2016-01-20 17:10:55 -06:00
Make.defs apps/: In all Make.def files, append to CONFIGURED_APPS patch with the absolute path. 2019-10-17 11:33:59 -06:00
Makefile build: Replace $(TOPDIR)/Make.defs with $(APPDIR)/Make.defs 2020-07-09 15:17:37 -03:00
README.md Rename README and README.txt to README.md 2020-07-25 01:01:51 -07:00

README.txt

Syntax

This directory contains a very simple INI file parser. An INI file consists of a sequence of lines up to the end of file. A line may be one of the following:

1) A blank line.

2) A comment line.  Any line beginning with ';'

3) A section header.  Definitions are divided into sections.  Each
   section begins with a line containing the section name enclosed in
   square brackets.  For example, "[section1]".  The left bracket must
   be the first character on the line.  Section names are case
   insensitive, i.e., "SECTION1" and "Section1" refer to the same
   section.

4) Variable assignments.  A variable assignment is a variable name
   followed by the '=' sign and then the value of the variable.  For
   example, "A=B": "A" is the variable name; "B" is the variable value.
   All variables following the section header belong in the section.

   Variable names may be preceded with white space. Whitespace is not
   permitted before the '=' sign.  Variable names are case insensitive,
   i.e., "A" and "a" refer to the same variable name.

   Variable values may be numeric (any base) or a string.  The case of
   string arguments is preserved.

Programming Interfaces

See apps/include/fsutils/inifile.h for interfaces supported by the INI file parser.

Test Program

Below is a simple test program:

int main(int argc, char *argv[]) { INIHANDLE handle; FILE *stream; FAR char *ptr; long value;

stream = fopen("/tmp/file.ini", "w"); fprintf(stream, "; Test INI file\n"); fprintf(stream, "[section1]\n"); fprintf(stream, " VAR1=1\n"); fprintf(stream, " VAR2=2\n"); fprintf(stream, " VAR3=3\n"); fprintf(stream, "\n"); fprintf(stream, "[section2]\n"); fprintf(stream, " VAR4=4\n"); fprintf(stream, " VAR5=5\n"); fprintf(stream, "VAR6=6\n"); fprintf(stream, "\n"); fclose(stream);

handle = inifile_initialize("/tmp/file.ini");

ptr = inifile_read_string(handle, "section2", "VAR5", "OOPS"); printf("Section: %s Variable: %s String: %s\n", "section2", "VAR5", ptr); inifile_free_string(ptr);

ptr = inifile_read_string(handle, "section1", "VAR2", "OOPS"); printf("Section: %s Variable: %s String: %s\n", "section1", "VAR2", ptr); inifile_free_string(ptr);

ptr = inifile_read_string(handle, "section3", "VAR3", "OOPS"); printf("Section: %s Variable: %s String: %s\n", "section3", "VAR3", ptr); inifile_free_string(ptr);

ptr = inifile_read_string(handle, "section1", "VAR3", "OOPS"); printf("Section: %s Variable: %s String: %s\n", "section1", "VAR3", ptr); inifile_free_string(ptr);

ptr = inifile_read_string(handle, "section1", "VAR1", "OOPS"); printf("Section: %s Variable: %s String: %s\n", "section1", "VAR1", ptr); inifile_free_string(ptr);

ptr = inifile_read_string(handle, "section1", "VAR42", "OOPS"); printf("Section: %s Variable: %s String: %s\n", "section1", "VAR42", ptr); inifile_free_string(ptr);

ptr = inifile_read_string(handle, "section2", "VAR6", "OOPS"); printf("Section: %s Variable: %s String: %s\n", "section2", "VAR6", ptr); inifile_free_string(ptr);

ptr = inifile_read_string(handle, "section2", "VAR4", "OOPS"); printf("Section: %s Variable: %s String: %s\n", "section2", "VAR4", ptr); inifile_free_string(ptr);

value = inifile_read_integer(handle, "section1", "VAR3", 0); printf("Section: %s Variable: %s Value: %ld\n", "section1", "VAR3", value);

value = inifile_read_integer(handle, "section3", "VAR3", 0); printf("Section: %s Variable: %s String: %ld\n", "section3", "VAR3", value);

value = inifile_read_integer(handle, "section1", "VAR1", 0); printf("Section: %s Variable: %s Value: %ld\n", "section1", "VAR1", value);

value = inifile_read_integer(handle, "section2", "VAR5", 0); printf("Section: %s Variable: %s Value: %ld\n", "section2", "VAR5", value);

value = inifile_read_integer(handle, "section2", "VAR6", 0); printf("Section: %s Variable: %s Value: %ld\n", "section2", "VAR6", value);

value = inifile_read_integer(handle, "section1", "VAR42", 0); printf("Section: %s Variable: %s String: %ld\n", "section1", "VAR42", value);

value = inifile_read_integer(handle, "section1", "VAR2", 0); printf("Section: %s Variable: %s Value: %ld\n", "section1", "VAR2", value);

value = inifile_read_integer(handle, "section2", "VAR4", 0); printf("Section: %s Variable: %s Value: %ld\n", "section2", "VAR4", value);

inifile_uninitialize(handle); return 0; }

Test program output:

Section: section2 Variable: VAR5 String: 5 Section: section1 Variable: VAR2 String: 2 Section: section3 Variable: VAR3 String: OOPS Section: section1 Variable: VAR3 String: 3 Section: section1 Variable: VAR1 String: 1 Section: section1 Variable: VAR42 String: OOPS Section: section2 Variable: VAR6 String: 6 Section: section2 Variable: VAR4 String: 4

Section: section1 Variable: VAR3 Value: 3 Section: section3 Variable: VAR3 Value: 0 Section: section1 Variable: VAR1 Value: 1 Section: section2 Variable: VAR5 Value: 5 Section: section2 Variable: VAR6 Value: 6 Section: section1 Variable: VAR42 String: 0 Section: section1 Variable: VAR2 Value: 2 Section: section2 Variable: VAR4 Value: 4