From: Michael Tremer Date: Fri, 31 May 2019 03:22:12 +0000 (+0100) Subject: libpakfire: parser: Dump state of parser after parse X-Git-Tag: 0.9.28~1285^2~1021 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=dac3330d69fc34fd9f1c50da655a4e68abefbad6;p=pakfire.git libpakfire: parser: Dump state of parser after parse Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/include/pakfire/parser.h b/src/libpakfire/include/pakfire/parser.h index f10fb27c9..98efe3a22 100644 --- a/src/libpakfire/include/pakfire/parser.h +++ b/src/libpakfire/include/pakfire/parser.h @@ -40,6 +40,7 @@ char* pakfire_parser_get(PakfireParser parser, const char* name); PakfireParser pakfire_parser_merge(PakfireParser parser1, PakfireParser parser2); int pakfire_parser_read(PakfireParser parser, FILE* f); +char* pakfire_parser_dump(PakfireParser parser); #ifdef PAKFIRE_PRIVATE diff --git a/src/libpakfire/libpakfire.sym b/src/libpakfire/libpakfire.sym index a018e1b6e..d7e96a641 100644 --- a/src/libpakfire/libpakfire.sym +++ b/src/libpakfire/libpakfire.sym @@ -211,6 +211,7 @@ global: # parser pakfire_parser_create; + pakfire_parser_dump; pakfire_parser_expand; pakfire_parser_get; pakfire_parser_parse_data; diff --git a/src/libpakfire/parser.c b/src/libpakfire/parser.c index 1961c81d0..ea7ba9a21 100644 --- a/src/libpakfire/parser.c +++ b/src/libpakfire/parser.c @@ -393,3 +393,20 @@ PAKFIRE_EXPORT int pakfire_parser_read(PakfireParser parser, FILE* f) { return r; } + +PAKFIRE_EXPORT char* pakfire_parser_dump(PakfireParser parser) { + char* s = NULL; + + for (unsigned int i = 0; i < parser->num_declarations; i++) { + struct pakfire_parser_declaration* d = parser->declarations[i]; + + if (d) { + if (s) + asprintf(&s, "%s%-24s = %s\n", s, d->name, d->value); + else + asprintf(&s, "%-24s = %s\n", d->name, d->value); + } + } + + return s; +} diff --git a/src/libpakfire/parser/grammar.y b/src/libpakfire/parser/grammar.y index 62d1b5a0c..5ebd300e9 100644 --- a/src/libpakfire/parser/grammar.y +++ b/src/libpakfire/parser/grammar.y @@ -274,7 +274,7 @@ static char* pakfire_parser_make_canonical_name(const char* name) { } int pakfire_parser_parse_data(PakfireParser parent, const char* data, size_t len) { - Pakfire pakfire = pakfire_parser_get_pakfire(parser); + Pakfire pakfire = pakfire_parser_get_pakfire(parent); DEBUG(pakfire, "Parsing the following data:\n%s\n", data); @@ -294,9 +294,18 @@ int pakfire_parser_parse_data(PakfireParser parent, const char* data, size_t len parent = pakfire_parser_merge(parent, parser); } - pakfire_unref(pakfire); + // Destroy the parser pakfire_parser_unref(parser); + // Log what we have in the parent parser now + char* dump = pakfire_parser_dump(parent); + + DEBUG(pakfire, "Status of the parser %p:\n%s\n", parent, dump); + pakfire_free(dump); + + // Cleanup + pakfire_unref(pakfire); + return r; }