]> git.ipfire.org Git - people/ms/pakfire.git/commitdiff
parser: Directly pass the context
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 29 Jun 2025 13:54:50 +0000 (13:54 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 29 Jun 2025 13:54:50 +0000 (13:54 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/dist.c
src/pakfire/parser.c
src/pakfire/parser.h
src/pakfire/parser/grammar.y
tests/libpakfire/makefile.c
tests/libpakfire/parser.c
tests/parser/test.c

index 107036f8c475b4a2a52529519caf9c57a6a25158..86ac398966370cce22db061bc8c60dac8c770afd 100644 (file)
@@ -154,7 +154,8 @@ int pakfire_read_makefile(pakfire_parser** parser, pakfire_ctx* ctx, pakfire_roo
        int r;
 
        // Create a new parser
-       r = pakfire_parser_create(parser, root, NULL, NULL, PAKFIRE_PARSER_FLAGS_EXPAND_COMMANDS);
+       r = pakfire_parser_create(parser, ctx, root, NULL, NULL,
+                       PAKFIRE_PARSER_FLAGS_EXPAND_COMMANDS);
        if (r < 0)
                goto ERROR;
 
index 12664d1eed7243c9b431ce6f7dd8aaf1d34f54d2..cbf6a2be96a15e4e3e3919811145dc57f6b951b7 100644 (file)
@@ -94,8 +94,8 @@ static void pakfire_parser_free(pakfire_parser* parser) {
        free(parser);
 }
 
-int pakfire_parser_create(pakfire_parser** parser,
-               pakfire_root* root, pakfire_parser* parent, const char* namespace, int flags) {
+int pakfire_parser_create(pakfire_parser** parser, pakfire_ctx* ctx, pakfire_root* root,
+               pakfire_parser* parent, const char* namespace, int flags) {
        pakfire_parser* self = NULL;
        int r;
 
@@ -105,7 +105,7 @@ int pakfire_parser_create(pakfire_parser** parser,
                return -errno;
 
        // Store a reference to the context
-       self->ctx = pakfire_root_get_ctx(root);
+       self->ctx = pakfire_ctx_ref(ctx);
 
        // Store a reference to the root
        self->root = pakfire_root_ref(root);
@@ -140,7 +140,7 @@ pakfire_parser* pakfire_parser_create_child(pakfire_parser* parser, const char*
        int r;
 
        // Create the parser
-       r = pakfire_parser_create(&child, parser->root, parser, namespace, parser->flags);
+       r = pakfire_parser_create(&child, parser->ctx, parser->root, parser, namespace, parser->flags);
        if (r < 0)
                return NULL;
 
index 91d1046e4226e4eda8de78d87351d127dbcbaea9..64eea460cc01b35df49cd3b8715f97cdd0a61392 100644 (file)
@@ -26,6 +26,7 @@
 
 typedef struct pakfire_parser pakfire_parser;
 
+#include <pakfire/ctx.h>
 #include <pakfire/env.h>
 #include <pakfire/package.h>
 #include <pakfire/parser.h>
@@ -38,7 +39,7 @@ enum pakfire_parser_flags {
 
 typedef struct pakfire_parser_error pakfire_parser_error;
 
-int pakfire_parser_create(pakfire_parser** parser, pakfire_root* root,
+int pakfire_parser_create(pakfire_parser** parser, pakfire_ctx* ctx, pakfire_root* root,
        pakfire_parser* parent, const char* namespace, int flags);
 pakfire_parser* pakfire_parser_create_child(pakfire_parser* parser,
        const char* namespace);
index aba5c43ca7381543d5683a9547c819930a84fe8d..0308c8c346c73ad354e9c4974ac1a491d99a4c24 100644 (file)
@@ -171,7 +171,7 @@ static void pakfire_parser_free_declaration(pakfire_parser_declaration* declarat
 }
 
 %initial-action {
-       int r = pakfire_parser_create(parser, root, parent, NULL, 0);
+       int r = pakfire_parser_create(parser, ctx, root, parent, NULL, 0);
        if (r < 0)
                ABORT;
 };
@@ -185,7 +185,7 @@ static void pakfire_parser_free_declaration(pakfire_parser_declaration* declarat
 
 grammar                                                : %empty
                                                        {
-                                                               int r = pakfire_parser_create(&$$, root, *parser, NULL, 0);
+                                                               int r = pakfire_parser_create(&$$, ctx, root, *parser, NULL, 0);
                                                                if (r < 0)
                                                                        ABORT;
 
@@ -347,7 +347,7 @@ subparser                                   : subparser_name T_EOL block T_END T_EOL
                                                                int r;
 
                                                                // Create a new parser
-                                                               r = pakfire_parser_create(&$$, root, *parser, NULL, 0);
+                                                               r = pakfire_parser_create(&$$, ctx, root, *parser, NULL, 0);
                                                                if (r < 0)
                                                                        ABORT;
 
index a35a91d229e8d53dc91b82ed791f8994c8d5e2ed..b764e044c95160d3989c5c3d05a0d34822ab4f24 100644 (file)
@@ -70,7 +70,7 @@ static int test_parse(const struct test* t) {
                FILE* f = fopen(path, "r");
                ASSERT(f);
 
-               ASSERT_SUCCESS(pakfire_parser_create(&parser, t->root, NULL, NULL, 0));
+               ASSERT_SUCCESS(pakfire_parser_create(&parser, t->ctx, t->root, NULL, NULL, 0));
 
                ASSERT_SUCCESS(pakfire_parser_read(parser, f, NULL));
 
@@ -96,7 +96,7 @@ static int test_macros(const struct test* t) {
        pakfire_parser* parser = NULL;
        int r = EXIT_FAILURE;
 
-       ASSERT_SUCCESS(pakfire_parser_create(&parser, t->root, NULL, NULL, 0));
+       ASSERT_SUCCESS(pakfire_parser_create(&parser, t->ctx, t->root, NULL, NULL, 0));
 
        // Load 'em all
        ASSERT_SUCCESS(load_macros(parser));
@@ -121,7 +121,7 @@ static int test_packages(const struct test* t) {
        ASSERT_SUCCESS(pakfire_repo_create(&repo, t->root, "test"));
        ASSERT(repo);
 
-       ASSERT_SUCCESS(pakfire_parser_create(&parser, t->root, NULL, NULL,
+       ASSERT_SUCCESS(pakfire_parser_create(&parser, t->ctx, t->root, NULL, NULL,
                PAKFIRE_PARSER_FLAGS_EXPAND_COMMANDS));
 
        // Set some architecture
index 39b97fc67027a7b187e4727b93c8c52b5c83458a..81bb935dbc0be906d8ae0481734e1bf729f36b74 100644 (file)
@@ -35,7 +35,7 @@ static int test_parser(const struct test* t) {
        char* s = NULL;
 
        // Create a new parser
-       ASSERT_SUCCESS(pakfire_parser_create(&parser, t->root, NULL, NULL, 0));
+       ASSERT_SUCCESS(pakfire_parser_create(&parser, t->ctx, t->root, NULL, NULL, 0));
 
        // Retrieve a value that does not exist
        ASSERT_NULL(pakfire_parser_get(parser, NULL, "null"));
@@ -119,7 +119,7 @@ static int test_parser_files(const struct test* t) {
                ASSERT_SUCCESS(pakfire_string_format(path, "%s/%s", TEST_SRC_PATH, *file));
 
                // Create a new parser
-               ASSERT_SUCCESS(pakfire_parser_create(&parser, t->root, NULL, NULL, 0));
+               ASSERT_SUCCESS(pakfire_parser_create(&parser, t->ctx, t->root, NULL, NULL, 0));
 
                FILE* f = fopen(path, "r");
                ASSERT(f);
@@ -150,7 +150,7 @@ static int test_append(const struct test* t) {
        char* s = NULL;
 
        // Create a new parser
-       ASSERT_SUCCESS(pakfire_parser_create(&parser, t->root, NULL, NULL, 0));
+       ASSERT_SUCCESS(pakfire_parser_create(&parser, t->ctx, t->root, NULL, NULL, 0));
 
        const char* str1 =
                "a  = 1\n"
@@ -202,7 +202,8 @@ static int test_parser_command(const struct test* t) {
        pakfire_parser* parser = NULL;
        int r = EXIT_FAILURE;
 
-       ASSERT_SUCCESS(pakfire_parser_create(&parser, t->root, NULL, NULL, PAKFIRE_PARSER_FLAGS_EXPAND_COMMANDS));
+       ASSERT_SUCCESS(pakfire_parser_create(&parser, t->ctx, t->root, NULL, NULL,
+                       PAKFIRE_PARSER_FLAGS_EXPAND_COMMANDS));
 
        ASSERT_SUCCESS(pakfire_parser_set(parser, NULL, "command", command, 0));
 
index 0acd12bbbd41f485fe95931040b91ef08b787336..e86f1f861654dd027a1c06a46837f3115754850d 100644 (file)
@@ -72,7 +72,7 @@ int main(int argc, const char* argv[]) {
        }
 
        // Create a new parser
-       r = pakfire_parser_create(&parser, root, NULL, NULL, 0);
+       r = pakfire_parser_create(&parser, ctx, root, NULL, NULL, 0);
        if (r < 0) {
                fprintf(stderr, "Could not create a parser: %s\n", strerror(-r));
                goto ERROR;