1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-15 23:24:37 +03:00
Günther Deschner f340b2fa36 r15037: Adding iniParser (http://ndevilla.free.fr/iniparser/), a free inifile
parsing library under the MIT licence.

This is required to have a configuration ini-file for pam_winbind
without using loadparm in the next step.

Guenther
(This used to be commit 6658e0a9886ee5a361361bc9b26c136ec91aea72)
2007-10-10 11:15:58 -05:00

118 lines
2.1 KiB
C

#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 ;
}