2009-11-19 02:48:48 +03:00
/*-*- Mode: C; c-basic-offset: 8 -*-*/
# ifndef fooconfparserhfoo
# define fooconfparserhfoo
2010-02-03 15:03:47 +03:00
/***
This file is part of systemd .
Copyright 2010 Lennart Poettering
systemd is free software ; you can redistribute it and / or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
systemd is distributed in the hope that it will be useful , but
WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
General Public License for more details .
You should have received a copy of the GNU General Public License
along with systemd ; If not , see < http : //www.gnu.org/licenses/>.
* * */
2009-11-19 02:48:48 +03:00
# include <stdio.h>
/* An abstract parser for simple, line based, shallow configuration
* files consisting of variable assignments only . */
2010-02-01 05:33:24 +03:00
typedef int ( * ConfigParserCallback ) ( const char * filename , unsigned line , const char * section , const char * lvalue , const char * rvalue , void * data , void * userdata ) ;
2009-11-19 02:48:48 +03:00
/* Wraps info for parsing a specific configuration variable */
typedef struct ConfigItem {
const char * lvalue ; /* name of the variable */
2010-02-01 05:33:24 +03:00
ConfigParserCallback parse ; /* Function that is called to parse the variable's value */
2009-11-19 02:48:48 +03:00
void * data ; /* Where to store the variable's data */
const char * section ;
} ConfigItem ;
/* The configuration file parsing routine. Expects a table of
* config_items in * t that is terminated by an item where lvalue is
* NULL */
2010-01-26 23:39:06 +03:00
int config_parse ( const char * filename , FILE * f , const char * const * sections , const ConfigItem * t , void * userdata ) ;
2009-11-19 02:48:48 +03:00
/* Generic parsers */
int config_parse_int ( const char * filename , unsigned line , const char * section , const char * lvalue , const char * rvalue , void * data , void * userdata ) ;
int config_parse_unsigned ( const char * filename , unsigned line , const char * section , const char * lvalue , const char * rvalue , void * data , void * userdata ) ;
int config_parse_size ( const char * filename , unsigned line , const char * section , const char * lvalue , const char * rvalue , void * data , void * userdata ) ;
int config_parse_bool ( const char * filename , unsigned line , const char * section , const char * lvalue , const char * rvalue , void * data , void * userdata ) ;
int config_parse_string ( const char * filename , unsigned line , const char * section , const char * lvalue , const char * rvalue , void * data , void * userdata ) ;
2010-01-26 06:18:44 +03:00
int config_parse_path ( const char * filename , unsigned line , const char * section , const char * lvalue , const char * rvalue , void * data , void * userdata ) ;
2009-11-19 04:51:44 +03:00
int config_parse_strv ( const char * filename , unsigned line , const char * section , const char * lvalue , const char * rvalue , void * data , void * userdata ) ;
2009-11-19 02:48:48 +03:00
# endif