]> git.ipfire.org Git - pakfire.git/commitdiff
parser: Handle appending variables correctly
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 1 Mar 2021 18:05:01 +0000 (18:05 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 1 Mar 2021 18:05:01 +0000 (18:05 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/include/pakfire/parser.h
src/libpakfire/parser.c
src/libpakfire/parser/grammar.y

index 78f33c58aa43e040c4f2efba4dffbcc76547d438..43d763fc96e10fd6a114c6517385c61c7b8a0474 100644 (file)
@@ -75,6 +75,7 @@ struct pakfire_parser_declaration {
        enum flags {
                PAKFIRE_PARSER_DECLARATION_NONE                         = 0,
                PAKFIRE_PARSER_DECLARATION_EXPORT                       = (1 << 0),
+               PAKFIRE_PARSER_DECLARATION_APPEND                       = (1 << 1),
        } flags;
 };
 
index 353d04f9e74b0ec022f3775a57dd71bdca2c279f..ff621c187266e8d73cc39f87c261b29582ecfe13 100644 (file)
@@ -209,6 +209,9 @@ PAKFIRE_EXPORT int pakfire_parser_set(PakfireParser parser, const char* name, co
 
 int pakfire_parser_apply_declaration(PakfireParser parser,
                struct pakfire_parser_declaration* declaration) {
+       if (declaration->flags & PAKFIRE_PARSER_DECLARATION_APPEND)
+               return pakfire_parser_append(parser, declaration->name, declaration->value);
+
        return pakfire_parser_set(parser, declaration->name, declaration->value);
 }
 
index d1e210fb8c836c63142d6c6723d5cc339367092b..182574301c004e14ed7500dec228205cb029bfc4 100644 (file)
@@ -218,8 +218,8 @@ declaration                                 : key T_ASSIGN value T_EOL
                                                        }
                                                        | key T_APPEND value T_EOL
                                                        {
-                                                               // XXX HANDLE APPEND PROPERLY
-                                                               int r = pakfire_parser_new_declaration(&$$, $1, $3, 0);
+                                                               int r = pakfire_parser_new_declaration(&$$, $1, $3,
+                                                                       PAKFIRE_PARSER_DECLARATION_APPEND);
                                                                if (r)
                                                                        ABORT;
                                                        }