Subversion Repositories FlightCtrl

Rev

Blame | Last modification | View Log | RSS feed

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#include "iniparser.h"

void create_example_ini_file(void);
int  parse_ini_file(char * ini_name);

int main(int argc, char * argv[])
{
        int             status ;

        if (argc<2) {
                create_example_ini_file();
                status = parse_ini_file("example.ini");
        } else {
                status = parse_ini_file(argv[1]);
        }
        return status ;
}

void create_example_ini_file(void)
{
        FILE    *       ini ;

        ini = fopen("example.ini", "w");
        fprintf(ini, "\n\
#\n\
# This is an example of ini file\n\
#\n\
\n\
[Pizza]\n\
\n\
Ham       = yes ;\n\
Mushrooms = TRUE ;\n\
Capres    = 0 ;\n\
Cheese    = NO ;\n\
\n\
\n\
[Wine]\n\
\n\
Grape     = Cabernet Sauvignon ;\n\
Year      = 1989 ;\n\
Country   = Spain ;\n\
Alcohol   = 12.5  ;\n\
\n\
#\n\
# end of file\n\
#\n"
);

        fclose(ini);
}


int parse_ini_file(char * ini_name)
{
        dictionary      *       ini ;

        /* Some temporary variables to hold query results */
        int                             b ;
        int                             i ;
        double                  d ;
        char            *       s ;

        ini = iniparser_load(ini_name);
        if (ini==NULL) {
                fprintf(stderr, "cannot parse file [%s]", ini_name);
                return -1 ;
        }
        iniparser_dump(ini, stderr);

        /* Get pizza attributes */
        printf("Pizza:\n");

        b = iniparser_getboolean(ini, "pizza:ham", -1);
        printf("Ham:       [%d]\n", b);
        b = iniparser_getboolean(ini, "pizza:mushrooms", -1);
        printf("Mushrooms: [%d]\n", b);
        b = iniparser_getboolean(ini, "pizza:capres", -1);
        printf("Capres:    [%d]\n", b);
        b = iniparser_getboolean(ini, "pizza:cheese", -1);
        printf("Cheese:    [%d]\n", b);

        /* Get wine attributes */
        printf("Wine:\n");
        s = iniparser_getstr(ini, "wine:grape");
        if (s) {
                printf("grape:     [%s]\n", s);
        } else {
                printf("grape:     not found\n");
        }
        i = iniparser_getint(ini, "wine:year", -1);
        if (i>0) {
                printf("year:      [%d]\n", i);
        } else {
                printf("year:      not found\n");
        }
        s = iniparser_getstr(ini, "wine:country");
        if (s) {
                printf("country:   [%s]\n", s);
        } else {
                printf("country:   not found\n");
        }
        d = iniparser_getdouble(ini, "wine:alcohol", -1.0);
        if (d>0.0) {
                printf("alcohol:   [%g]\n", d);
        } else {
                printf("alcohol:   not found\n");
        }

        iniparser_freedict(ini);
        return 0 ;
}