From 2023ca03c24cc59ea201fcbfa39b86671a9cd6c5 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Mon, 22 May 2017 11:12:03 +0200 Subject: [PATCH] common: Add flatpak_find_current_ref helper --- common/flatpak-utils.c | 35 +++++++++++++++++++++++++++++++++++ common/flatpak-utils.h | 3 +++ 2 files changed, 38 insertions(+) diff --git a/common/flatpak-utils.c b/common/flatpak-utils.c index 91ecda8c..2b830298 100644 --- a/common/flatpak-utils.c +++ b/common/flatpak-utils.c @@ -1286,6 +1286,41 @@ flatpak_find_unmaintained_extension_dir_if_exists (const char *name, return g_steal_pointer(&extension_dir); } +char * +flatpak_find_current_ref (const char *app_id, + GCancellable *cancellable, + GError **error) +{ + g_autofree char *current_ref = NULL; + g_autoptr(FlatpakDir) user_dir = flatpak_dir_get_user (); + int i; + + current_ref = flatpak_dir_current_ref (user_dir, app_id, NULL); + if (current_ref == NULL) + { + g_autoptr(GPtrArray) system_dirs = NULL; + + system_dirs = flatpak_dir_get_system_list (cancellable, error); + if (system_dirs == NULL) + return FALSE; + + for (i = 0; i < system_dirs->len; i++) + { + FlatpakDir *dir = g_ptr_array_index (system_dirs, i); + current_ref = flatpak_dir_current_ref (dir, app_id, cancellable); + if (current_ref != NULL) + break; + } + } + + if (current_ref) + return g_steal_pointer (¤t_ref); + + g_set_error (error, FLATPAK_ERROR, FLATPAK_ERROR_NOT_INSTALLED, + _("%s not installed"), app_id); + return NULL; +} + FlatpakDeploy * flatpak_find_deploy_for_ref (const char *ref, GCancellable *cancellable, diff --git a/common/flatpak-utils.h b/common/flatpak-utils.h index 32c97ea7..b6d99dcc 100644 --- a/common/flatpak-utils.h +++ b/common/flatpak-utils.h @@ -180,6 +180,9 @@ char * flatpak_build_runtime_ref (const char *runtime, char * flatpak_build_app_ref (const char *app, const char *branch, const char *arch); +char * flatpak_find_current_ref (const char *app_id, + GCancellable *cancellable, + GError **error); GFile *flatpak_find_deploy_dir_for_ref (const char *ref, FlatpakDir **dir_out, GCancellable *cancellable,