]> git.ozlabs.org Git - petitboot/blobdiff - discover/grub2/parser-api.c
discover/grub2: Fix word append
[petitboot] / discover / grub2 / parser-api.c
index 9ccf15eb94ffefdf7fe53ae96f3def672edaab2d..f8915a1f52b3065b725f215918a1c5d4da669d17 100644 (file)
@@ -68,14 +68,26 @@ void statement_append(struct grub2_statements *stmts,
        list_add_tail(&stmts->list, &stmt->list);
 }
 
-struct grub2_word *create_word(struct grub2_parser *parser, const char *text,
-               bool expand, bool split)
+struct grub2_word *create_word_text(struct grub2_parser *parser,
+               const char *text)
 {
        struct grub2_word *word = talloc(parser, struct grub2_word);
+       word->type = GRUB2_WORD_TEXT;
        word->text = talloc_strdup(word, text);
-       word->expand = expand;
-       word->split = split;
        word->next = NULL;
+       word->last = word;
+       return word;
+}
+
+struct grub2_word *create_word_var(struct grub2_parser *parser,
+               const char *name, bool split)
+{
+       struct grub2_word *word = talloc(parser, struct grub2_word);
+       word->type = GRUB2_WORD_VAR;
+       word->var.name = talloc_strdup(word, name);
+       word->var.split = split;
+       word->next = NULL;
+       word->last = word;
        return word;
 }
 
@@ -93,5 +105,6 @@ void argv_append(struct grub2_argv *argv, struct grub2_word *word)
 
 void word_append(struct grub2_word *w1, struct grub2_word *w2)
 {
-       w1->next = w2;
+       w1->last->next = w2;
+       w1->last = w2;
 }