1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

libdm-config: Re-link config trees to reflect file order of keys/sections.

This commit is contained in:
Petr Rockai 2014-11-18 23:39:11 +01:00
parent 687029cbbd
commit 956c192841

View File

@ -154,6 +154,24 @@ struct dm_config_tree *dm_config_insert_cascaded_tree(struct dm_config_tree *fir
return first_cft;
}
static struct dm_config_node *_config_reverse(struct dm_config_node *head)
{
if (!head)
return NULL;
struct dm_config_node *left = head, *middle = NULL, *right = NULL;
do {
right = middle;
middle = left;
left = left->sib;
middle->sib = right;
middle->child = _config_reverse(middle->child);
} while (left);
return middle;
};
int dm_config_parse(struct dm_config_tree *cft, const char *start, const char *end)
{
/* TODO? if (start == end) return 1; */
@ -172,6 +190,8 @@ int dm_config_parse(struct dm_config_tree *cft, const char *start, const char *e
if (!(cft->root = _file(p)))
return_0;
cft->root = _config_reverse(cft->root);
return 1;
}