parser-xml: Pass root element in parse_file().

Instead of setting it directly to struct parser_data. Also remove
unused root from the struct.
This commit is contained in:
Juho Hämäläinen 2020-10-20 11:12:11 +03:00
parent dd83f69d87
commit d885b86121

View file

@ -319,7 +319,6 @@ struct parser_data {
const char *fn;
unsigned lineno;
const struct element_parser *root;
const struct element_parser *current;
struct element_parser_stack *stack;
@ -834,7 +833,7 @@ done:
return parsed;
}
static bool parse_file(struct parser_data *data, const char *filename) {
static bool parse_file(struct parser_data *data, const struct element_parser *root, const char *filename) {
char buf[BUFSIZ];
FILE *f = NULL;
XML_Parser parser = NULL;
@ -858,6 +857,8 @@ static bool parse_file(struct parser_data *data, const char *filename) {
if (!data->conf)
data->conf = pa_xnew0(struct audio_policy_configuration, 1);
data->current = root;
XML_SetUserData(parser, data);
XML_SetElementHandler(parser, xml_start_element, xml_end_element);
XML_SetCharacterDataHandler(parser, xml_character_data_handler);
@ -1029,10 +1030,7 @@ pa_droid_config_audio *pa_parse_droid_audio_config_xml(const char *filename) {
memset(&data, 0, sizeof(data));
data.root = &element_parse_root;
data.current = data.root;
if (!(ret = parse_file(&data, filename)))
if (!(ret = parse_file(&data, &element_parse_root, filename)))
goto done;
config = convert_config(data.conf);