/* 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_H__ #define __INI_H__ /* Make this header file easier to include in C++ code */ #ifdef __cplusplus extern "C" { #endif #include /* 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); /* 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 200 #endif #ifdef __cplusplus } #endif #endif /* __INI_H__ */