mirror of
https://gitlab.freedesktop.org/plymouth/plymouth.git
synced 2026-05-08 03:08:13 +02:00
key-file: Add support for non ini style config files
In some cases me way want to parse key=value style config files from outside of plymouth which lack ini style groups. This commit adds a new ply_key_file_load_groupless_file function which supports loading such files. When a file is loaded this way, NULL must be passed as group_name for subsequent ply_key_file_get_* calls. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
eb73c37c0d
commit
c00955ce03
2 changed files with 25 additions and 0 deletions
|
|
@ -60,6 +60,7 @@ struct _ply_key_file
|
|||
FILE *fp;
|
||||
|
||||
ply_hashtable_t *groups;
|
||||
ply_key_file_group_t *groupless_group;
|
||||
};
|
||||
|
||||
typedef struct
|
||||
|
|
@ -152,6 +153,8 @@ ply_key_file_free (ply_key_file_t *key_file)
|
|||
ply_key_file_free_group,
|
||||
NULL);
|
||||
|
||||
if (key_file->groupless_group)
|
||||
ply_key_file_free_group (NULL, key_file->groupless_group, NULL);
|
||||
|
||||
ply_hashtable_free (key_file->groups);
|
||||
free (key_file->filename);
|
||||
|
|
@ -303,6 +306,9 @@ static ply_key_file_group_t *
|
|||
ply_key_file_find_group (ply_key_file_t *key_file,
|
||||
const char *group_name)
|
||||
{
|
||||
if (!group_name)
|
||||
return key_file->groupless_group;
|
||||
|
||||
return ply_hashtable_lookup (key_file->groups, (void *) group_name);
|
||||
}
|
||||
|
||||
|
|
@ -463,4 +469,18 @@ ply_key_file_foreach_entry (ply_key_file_t *key_file,
|
|||
&func_data);
|
||||
}
|
||||
|
||||
bool
|
||||
ply_key_file_load_groupless_file (ply_key_file_t *key_file)
|
||||
{
|
||||
if (!ply_key_file_open_file (key_file))
|
||||
return false;
|
||||
|
||||
key_file->groupless_group =
|
||||
ply_key_file_load_group (key_file, "NONE");
|
||||
|
||||
ply_key_file_close_file (key_file);
|
||||
|
||||
return key_file->groupless_group != NULL;
|
||||
}
|
||||
|
||||
/* vim: set ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */
|
||||
|
|
|
|||
|
|
@ -36,6 +36,11 @@ typedef void (ply_key_file_foreach_func_t) (const char *group_name,
|
|||
ply_key_file_t *ply_key_file_new (const char *filename);
|
||||
void ply_key_file_free (ply_key_file_t *key_file);
|
||||
bool ply_key_file_load (ply_key_file_t *key_file);
|
||||
/* For loading key=value pair files, which do not have ini style groups.
|
||||
* When a file is loaded this way, NULL must be passed as group_name
|
||||
* for subsequent ply_key_file_get_* calls.
|
||||
*/
|
||||
bool ply_key_file_load_groupless_file (ply_key_file_t *key_file);
|
||||
bool ply_key_file_has_key (ply_key_file_t *key_file,
|
||||
const char *group_name,
|
||||
const char *key);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue