flatpak_list_extensions: Break out code into helper

This is a minor restructure to make the code more readable
and extensible.
tingping/wmclass
Alexander Larsson 2017-03-06 11:57:52 +01:00
parent d6f4ea424d
commit 3122d1c014
1 changed files with 85 additions and 70 deletions

View File

@ -3764,47 +3764,26 @@ flatpak_extension_matches_reason (const char *extension_id,
return FALSE;
}
GList *
flatpak_list_extensions (GKeyFile *metakey,
static GList *
add_extension (GKeyFile *metakey,
const char *group,
const char *extension,
const char *arch,
const char *default_branch)
const char *branch,
GList *res)
{
g_auto(GStrv) groups = NULL;
int i;
GList *res;
res = NULL;
if (arch == NULL)
arch = flatpak_get_arch ();
groups = g_key_file_get_groups (metakey, NULL);
for (i = 0; groups[i] != NULL; i++)
{
FlatpakExtension *ext;
char *extension;
if (g_str_has_prefix (groups[i], "Extension ") &&
*(extension = (groups[i] + strlen ("Extension "))) != 0)
{
g_autofree char *directory = g_key_file_get_string (metakey, groups[i], "directory", NULL);
g_autofree char *version = g_key_file_get_string (metakey, groups[i], "version", NULL);
g_autofree char *add_ld_path = g_key_file_get_string (metakey, groups[i], "add-ld-path", NULL);
g_auto(GStrv) merge_dirs = g_key_file_get_string_list (metakey, groups[i], "merge-dirs", NULL, NULL);
g_autofree char *enable_if = g_key_file_get_string (metakey, groups[i], "enable-if", NULL);
g_autofree char *subdir_suffix = g_key_file_get_string (metakey, groups[i], "subdirectory-suffix", NULL);
g_autofree char *directory = g_key_file_get_string (metakey, group, "directory", NULL);
g_autofree char *add_ld_path = g_key_file_get_string (metakey, group, "add-ld-path", NULL);
g_auto(GStrv) merge_dirs = g_key_file_get_string_list (metakey, group, "merge-dirs", NULL, NULL);
g_autofree char *enable_if = g_key_file_get_string (metakey, group, "enable-if", NULL);
g_autofree char *subdir_suffix = g_key_file_get_string (metakey, group, "subdirectory-suffix", NULL);
g_autofree char *ref = NULL;
const char *branch;
gboolean is_unmaintained = FALSE;
g_autoptr(GFile) files = NULL;
if (directory == NULL)
continue;
if (version)
branch = version;
else
branch = default_branch;
return res;
ref = g_build_filename ("runtime", extension, arch, branch, NULL);
@ -3824,7 +3803,7 @@ flatpak_list_extensions (GKeyFile *metakey,
res = g_list_prepend (res, ext);
}
}
else if (g_key_file_get_boolean (metakey, groups[i],
else if (g_key_file_get_boolean (metakey, group,
"subdirectories", NULL))
{
g_autofree char *prefix = g_strconcat (extension, ".", NULL);
@ -3864,6 +3843,42 @@ flatpak_list_extensions (GKeyFile *metakey,
}
}
}
return res;
}
GList *
flatpak_list_extensions (GKeyFile *metakey,
const char *arch,
const char *default_branch)
{
g_auto(GStrv) groups = NULL;
int i;
GList *res;
res = NULL;
if (arch == NULL)
arch = flatpak_get_arch ();
groups = g_key_file_get_groups (metakey, NULL);
for (i = 0; groups[i] != NULL; i++)
{
char *extension;
if (g_str_has_prefix (groups[i], "Extension ") &&
*(extension = (groups[i] + strlen ("Extension "))) != 0)
{
g_autofree char *version = g_key_file_get_string (metakey, groups[i], "version", NULL);
const char *branch;
if (version)
branch = version;
else
branch = default_branch;
res = add_extension (metakey, groups[i], extension, arch, branch, res);
}
}