| /* inih -- simple .INI file parser |
| |
| inih is released under the New BSD license (see LICENSE.txt). Go to the project |
| home page for more info: |
| |
| http://code.google.com/p/inih/ |
| |
| */ |
| |
| #ifndef __INI_CORE_H__ |
| #define __INI_CORE_H__ |
| |
| /* Make this header file easier to include in C++ code */ |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #if (defined CC_COMPILE_IN_PC || defined CC_COMPILE_IN_ANDROID) |
| |
| #include <stdio.h> |
| |
| /* Parse given INI-style file. May have [section]s, name=value pairs |
| (whitespace stripped), and comments starting with ';' (semicolon). Section |
| is "" if name=value pair parsed before any section heading. name:value |
| pairs are also supported as a concession to Python's ConfigParser. |
| |
| For each name=value pair parsed, call handler function with given user |
| pointer as well as section, name, and value (data only valid for duration |
| of handler call). Handler should return nonzero on success, zero on error. |
| |
| Returns 0 on success, line number of first error on parse error (doesn't |
| stop on first error), -1 on file open error, or -2 on memory allocation |
| error (only when INI_USE_STACK is zero). |
| */ |
| int ini_parse(const char* filename, |
| int (*handler)(void* user, const char* section, const char* name, |
| const char* value), void* user); |
| |
| /* Same as ini_parse(), but takes a FILE* instead of filename. This doesn't |
| close the file when it's finished -- the caller must do that. */ |
| int ini_parse_file(FILE* file, |
| int (*handler)(void* user, const char* section, const char* name, |
| const char* value), void* user); |
| #endif |
| |
| int ini_parse_mem(const char* buf, |
| int (*handler)(void* user, const char* section, const char* name, |
| const char* value), void* user); |
| |
| /* Nonzero to allow multi-line value parsing, in the style of Python's |
| ConfigParser. If allowed, ini_parse() will call the handler with the same |
| name for each subsequent line parsed. */ |
| #ifndef INI_ALLOW_MULTILINE |
| #define INI_ALLOW_MULTILINE 1 |
| #endif |
| |
| /* Nonzero to allow a UTF-8 BOM sequence (0xEF 0xBB 0xBF) at the start of |
| the file. See http://code.google.com/p/inih/issues/detail?id=21 */ |
| #ifndef INI_ALLOW_BOM |
| #define INI_ALLOW_BOM 1 |
| #endif |
| |
| /* Nonzero to use stack, zero to use heap (malloc/free). */ |
| #ifndef INI_USE_STACK |
| #define INI_USE_STACK 1 |
| #endif |
| |
| /* Maximum line length for any line in INI file. */ |
| #ifndef INI_MAX_LINE |
| #define INI_MAX_LINE 20000 |
| #endif |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* __INI_CORE_H__ */ |