1. Line types: 1a. Comment (empty line, lines starting with ';' or '#') 1b. Section header 1c. Assignment [1d. Invalid line - none of above] 2. Assignments appearing before section headers are assumed to be in the default section 3. Section header and assignment's option names should match [a-zA-Z0-9_]{1,128}. 3b. Unknown characters are replaced by '_' 4. Text encoding is UTF-8, without BOM. 5. No line continuation, here documents, quoting or escaping 6. Section headers and assignment names are case insensitive 7. Whitespace is removed at the begin and end of each line, around '='; around '[' and ']' in option names. [8. In case of duplicates the behaviour is application-specific] Example: $ cat > test.ini <<\EOF A=4 b=5 [test] d = fdsfsd # ; qqq e="qwer\nty" [ d f g ] 4☆5= z l☆s 321=123 EOF $ ./ini_dump test.ini GENERAL_A=4 GENERAL_B=5 TEST_D=fdsfsd # ; qqq TEST_E="qwer\nty" D_F_G_4___5=z l☆s D_F_G_321=123