1 // ini.h 2 3 #ifndef INI_H 4 #define INI_H 5 6 // defines 7 8 #define IniEntriesNb 256 9 10 // includes 11 12 #include "option.h" 13 14 // types 15 16 typedef struct { 17 const char *section; 18 const char *name; 19 const char *value; 20 const char *comment; 21 } ini_entry_t; 22 23 typedef struct { 24 ini_entry_t entries[IniEntriesNb]; 25 int index; 26 int iter; 27 } ini_t; 28 29 typedef enum { 30 SYNTAX_ERROR, 31 EMPTY_LINE, 32 NAME_VALUE, 33 EMPTY_VALUE, 34 SECTION 35 } line_type_t; 36 37 // functions 38 39 extern void ini_init (ini_t *ini); 40 extern void ini_clear (ini_t *ini); 41 extern void ini_copy (ini_t *dst, ini_t *src); 42 extern int ini_parse (ini_t *ini, const char *filename); 43 extern void ini_disp (ini_t *ini); 44 extern void ini_insert (ini_t *ini, ini_entry_t *entry); 45 extern void ini_insert_ex (ini_t *ini, 46 const char *section, 47 const char *name, 48 const char *value); 49 extern void ini_start_iter (ini_t *ini); 50 extern ini_entry_t *ini_next (ini_t *ini); 51 extern ini_entry_t *ini_find (ini_t *ini, 52 const char *section, 53 const char *name); 54 extern line_type_t ini_line_parse (const char *line, 55 char *section, 56 char *name, 57 char *value); 58 59 extern const char * ini_specials; 60 61 #endif // !defined INI_H 62 63 // end of ini.h 64