45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /* Example: parse a simple configuration file */
 | |
| 
 | |
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #include <string.h>
 | |
| #include "../ini.h"
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|     int version;
 | |
|     const char* name;
 | |
|     const char* email;
 | |
| } configuration;
 | |
| 
 | |
| static int handler(void* user, const char* section, const char* name,
 | |
|                    const char* value)
 | |
| {
 | |
|     configuration* pconfig = (configuration*)user;
 | |
| 
 | |
|     #define MATCH(s, n) strcmp(section, s) == 0 && strcmp(name, n) == 0
 | |
|     if (MATCH("protocol", "version")) {
 | |
|         pconfig->version = atoi(value);
 | |
|     } else if (MATCH("user", "name")) {
 | |
|         pconfig->name = strdup(value);
 | |
|     } else if (MATCH("user", "email")) {
 | |
|         pconfig->email = strdup(value);
 | |
|     } else {
 | |
|         return 0;  /* unknown section/name, error */
 | |
|     }
 | |
|     return 1;
 | |
| }
 | |
| 
 | |
| int main(int argc, char* argv[])
 | |
| {
 | |
|     configuration config;
 | |
| 
 | |
|     if (ini_parse("test.ini", handler, &config) < 0) {
 | |
|         printf("Can't load 'test.ini'\n");
 | |
|         return 1;
 | |
|     }
 | |
|     printf("Config loaded from 'test.ini': version=%d, name=%s, email=%s\n",
 | |
|         config.version, config.name, config.email);
 | |
|     return 0;
 | |
| }
 | 
