pulseaudio/src/pulsecore/conf-parser.h
Ondrej Holecek 5effc83479 update FSF addresses to FSF web page
FSF addresses used in PA sources are no longer valid and rpmlint
generates numerous warnings during packaging because of this.
This patch changes all FSF addresses to FSF web page according to
the GPL how-to: https://www.gnu.org/licenses/gpl-howto.en.html

Done automatically by sed-ing through sources.
2015-01-14 22:20:40 +02:00

81 lines
3.1 KiB
C

#ifndef fooconfparserhfoo
#define fooconfparserhfoo
/***
This file is part of PulseAudio.
Copyright 2004-2006 Lennart Poettering
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio 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 Lesser General Public License
along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
***/
#include <stdio.h>
#include <pulse/proplist.h>
/* An abstract parser for simple, line based, shallow configuration
* files consisting of variable assignments only. */
typedef struct pa_config_parser_state pa_config_parser_state;
typedef int (*pa_config_parser_cb_t)(pa_config_parser_state *state);
/* Wraps info for parsing a specific configuration variable */
typedef struct pa_config_item {
const char *lvalue; /* name of the variable */
pa_config_parser_cb_t parse; /* Function that is called to parse the variable's value */
void *data; /* Where to store the variable's data */
const char *section;
} pa_config_item;
struct pa_config_parser_state {
const char *filename;
unsigned lineno;
char *section;
char *lvalue;
char *rvalue;
void *data; /* The data pointer of the current pa_config_item. */
void *userdata; /* The pointer that was given to pa_config_parse(). */
/* Private data to be used only by conf-parser.c. */
const pa_config_item *item_table;
char buf[4096];
pa_proplist *proplist;
bool in_proplist;
};
/* The configuration file parsing routine. Expects a table of
* pa_config_items in *t that is terminated by an item where lvalue is
* NULL.
*
* Some configuration files may contain a Properties section, which
* is a bit special. Normally all accepted lvalues must be predefined
* in the pa_config_item table, but in the Properties section the
* pa_config_item table is ignored, and all lvalues are accepted (as
* long as they are valid proplist keys). If the proplist pointer is
* non-NULL, the parser will parse any section named "Properties" as
* properties, and those properties will be merged into the given
* proplist. If proplist is NULL, then sections named "Properties"
* are not allowed at all in the configuration file. */
int pa_config_parse(const char *filename, FILE *f, const pa_config_item *t, pa_proplist *proplist, void *userdata);
/* Generic parsers for integers, size_t, booleans and strings */
int pa_config_parse_int(pa_config_parser_state *state);
int pa_config_parse_unsigned(pa_config_parser_state *state);
int pa_config_parse_size(pa_config_parser_state *state);
int pa_config_parse_bool(pa_config_parser_state *state);
int pa_config_parse_not_bool(pa_config_parser_state *state);
int pa_config_parse_string(pa_config_parser_state *state);
#endif