[gnome-software/wip/temp/ubuntu-xenial-rebased: 305/329] Use GFile instead of a filename when converting apps.
- From: Iain Lane <iainl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/wip/temp/ubuntu-xenial-rebased: 305/329] Use GFile instead of a filename when converting apps.
- Date: Fri, 29 Apr 2016 14:11:00 +0000 (UTC)
commit f4112585ac3dbec2b58b0f30dab8404c3c45eec1
Author: Robert Ancell <robert ancell canonical com>
Date: Mon Apr 25 11:20:51 2016 +0200
Use GFile instead of a filename when converting apps.
This means plugins don't need to make filenames absolute.
src/gs-cmd.c | 12 ++++---
src/gs-plugin-loader-sync.c | 36 ++++++++++----------
src/gs-plugin-loader-sync.h | 4 +-
src/gs-plugin-loader.c | 49 ++++++++++++++-------------
src/gs-plugin-loader.h | 6 ++--
src/gs-plugin.h | 8 ++--
src/gs-self-test.c | 12 ++++---
src/gs-shell-details.c | 37 +++++++++++----------
src/gs-shell-extras.c | 26 ++++++++-------
src/gs-utils.c | 4 +--
src/gs-utils.h | 2 +-
src/plugins/gs-plugin-dpkg.c | 17 ++++-----
src/plugins/gs-plugin-fwupd.c | 16 +++++----
src/plugins/gs-plugin-packagekit-refresh.c | 14 ++++----
src/plugins/gs-plugin-xdg-app.c | 14 ++++----
15 files changed, 133 insertions(+), 124 deletions(-)
---
diff --git a/src/gs-cmd.c b/src/gs-cmd.c
index acfd509..03e015d 100644
--- a/src/gs-cmd.c
+++ b/src/gs-cmd.c
@@ -207,6 +207,7 @@ main (int argc, char **argv)
g_autoptr(GError) error = NULL;
g_autofree gchar *refine_flags_str = NULL;
g_autoptr(GsApp) app = NULL;
+ g_autoptr(GFile) file = NULL;
g_autoptr(GsPluginLoader) plugin_loader = NULL;
g_autoptr(AsProfile) profile = NULL;
g_autoptr(AsProfileTask) ptask = NULL;
@@ -329,11 +330,12 @@ main (int argc, char **argv)
break;
}
} else if (argc == 3 && g_strcmp0 (argv[1], "filename-to-app") == 0) {
- app = gs_plugin_loader_filename_to_app (plugin_loader,
- argv[2],
- refine_flags,
- NULL,
- &error);
+ file = g_file_new_for_path (argv[2]);
+ app = gs_plugin_loader_file_to_app (plugin_loader,
+ file,
+ refine_flags,
+ NULL,
+ &error);
if (app == NULL) {
ret = FALSE;
} else {
diff --git a/src/gs-plugin-loader-sync.c b/src/gs-plugin-loader-sync.c
index ce0b9c2..37ed2de 100644
--- a/src/gs-plugin-loader-sync.c
+++ b/src/gs-plugin-loader-sync.c
@@ -614,27 +614,27 @@ gs_plugin_loader_refresh (GsPluginLoader *plugin_loader,
}
static void
-gs_plugin_loader_filename_to_app_finish_sync (GObject *source_object,
- GAsyncResult *res,
- gpointer user_data)
+gs_plugin_loader_file_to_app_finish_sync (GObject *source_object,
+ GAsyncResult *res,
+ gpointer user_data)
{
GsPluginLoader *plugin_loader = GS_PLUGIN_LOADER (source_object);
GsPluginLoaderHelper *helper = (GsPluginLoaderHelper *) user_data;
- helper->app = gs_plugin_loader_filename_to_app_finish (plugin_loader,
- res,
- helper->error);
+ helper->app = gs_plugin_loader_file_to_app_finish (plugin_loader,
+ res,
+ helper->error);
g_main_loop_quit (helper->loop);
}
/**
- * gs_plugin_loader_filename_to_app:
+ * gs_plugin_loader_file_to_app:
**/
GsApp *
-gs_plugin_loader_filename_to_app (GsPluginLoader *plugin_loader,
- const gchar *filename,
- GsPluginRefineFlags flags,
- GCancellable *cancellable,
- GError **error)
+gs_plugin_loader_file_to_app (GsPluginLoader *plugin_loader,
+ GFile *file,
+ GsPluginRefineFlags flags,
+ GCancellable *cancellable,
+ GError **error)
{
GsPluginLoaderHelper helper;
@@ -647,12 +647,12 @@ gs_plugin_loader_filename_to_app (GsPluginLoader *plugin_loader,
g_main_context_push_thread_default (helper.context);
/* run async method */
- gs_plugin_loader_filename_to_app_async (plugin_loader,
- filename,
- flags,
- cancellable,
- gs_plugin_loader_filename_to_app_finish_sync,
- &helper);
+ gs_plugin_loader_file_to_app_async (plugin_loader,
+ file,
+ flags,
+ cancellable,
+ gs_plugin_loader_file_to_app_finish_sync,
+ &helper);
g_main_loop_run (helper.loop);
g_main_context_pop_thread_default (helper.context);
diff --git a/src/gs-plugin-loader-sync.h b/src/gs-plugin-loader-sync.h
index b1b88ec..03a3238 100644
--- a/src/gs-plugin-loader-sync.h
+++ b/src/gs-plugin-loader-sync.h
@@ -86,8 +86,8 @@ GsApp *gs_plugin_loader_get_app_by_id (GsPluginLoader *plugin_loader,
GsPluginRefineFlags flags,
GCancellable *cancellable,
GError **error);
-GsApp *gs_plugin_loader_filename_to_app (GsPluginLoader *plugin_loader,
- const gchar *filename,
+GsApp *gs_plugin_loader_file_to_app (GsPluginLoader *plugin_loader,
+ GFile *file,
GsPluginRefineFlags flags,
GCancellable *cancellable,
GError **error);
diff --git a/src/gs-plugin-loader.c b/src/gs-plugin-loader.c
index d8caca6..f6d45cd 100644
--- a/src/gs-plugin-loader.c
+++ b/src/gs-plugin-loader.c
@@ -71,7 +71,7 @@ typedef struct {
GList *list;
GsPluginRefineFlags flags;
gchar *value;
- gchar *filename;
+ GFile *file;
guint cache_age;
GsCategory *category;
GsApp *app;
@@ -87,8 +87,9 @@ gs_plugin_loader_free_async_state (GsPluginLoaderAsyncState *state)
g_object_unref (state->app);
if (state->review != NULL)
g_object_unref (state->review);
+ if (state->file != NULL)
+ g_object_unref (state->file);
- g_free (state->filename);
g_free (state->value);
gs_plugin_list_free (state->list);
g_slice_free (GsPluginLoaderAsyncState, state);
@@ -3628,22 +3629,22 @@ gs_plugin_loader_refresh_finish (GsPluginLoader *plugin_loader,
/******************************************************************************/
/**
- * gs_plugin_loader_filename_to_app_thread_cb:
+ * gs_plugin_loader_file_to_app_thread_cb:
**/
static void
-gs_plugin_loader_filename_to_app_thread_cb (GTask *task,
- gpointer object,
- gpointer task_data,
- GCancellable *cancellable)
+gs_plugin_loader_file_to_app_thread_cb (GTask *task,
+ gpointer object,
+ gpointer task_data,
+ GCancellable *cancellable)
{
GsPluginLoader *plugin_loader = GS_PLUGIN_LOADER (object);
GsPluginLoaderPrivate *priv = gs_plugin_loader_get_instance_private (plugin_loader);
- const gchar *function_name = "gs_plugin_filename_to_app";
+ const gchar *function_name = "gs_plugin_file_to_app";
gboolean ret = TRUE;
GError *error = NULL;
GsPluginLoaderAsyncState *state = (GsPluginLoaderAsyncState *) task_data;
GsPlugin *plugin;
- GsPluginFilenameToAppFunc plugin_func = NULL;
+ GsPluginFileToAppFunc plugin_func = NULL;
guint i;
/* run each plugin */
@@ -3696,7 +3697,7 @@ gs_plugin_loader_filename_to_app_thread_cb (GTask *task,
g_task_return_new_error (task,
GS_PLUGIN_LOADER_ERROR,
GS_PLUGIN_LOADER_ERROR_NO_RESULTS,
- "no filename_to_app results to show");
+ "no file_to_app results to show");
return;
}
@@ -3706,16 +3707,16 @@ gs_plugin_loader_filename_to_app_thread_cb (GTask *task,
GS_PLUGIN_LOADER_ERROR,
GS_PLUGIN_LOADER_ERROR_NO_RESULTS,
"no application was created for %s",
- state->filename);
+ g_file_get_path (state->file));
return;
}
g_task_return_pointer (task, g_object_ref (state->list->data), (GDestroyNotify) g_object_unref);
}
/**
- * gs_plugin_loader_filename_to_app_async:
+ * gs_plugin_loader_file_to_app_async:
*
- * This method calls all plugins that implement the gs_plugin_add_filename_to_app()
+ * This method calls all plugins that implement the gs_plugin_add_file_to_app()
* function. The plugins can either return #GsApp objects of kind
* %AS_APP_KIND_DESKTOP for bonafide applications, or #GsApp's of kind
* %AS_APP_KIND_GENERIC for packages that may or may not be applications.
@@ -3725,12 +3726,12 @@ gs_plugin_loader_filename_to_app_thread_cb (GTask *task,
* or if they are core applications.
**/
void
-gs_plugin_loader_filename_to_app_async (GsPluginLoader *plugin_loader,
- const gchar *filename,
- GsPluginRefineFlags flags,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data)
+gs_plugin_loader_file_to_app_async (GsPluginLoader *plugin_loader,
+ GFile *file,
+ GsPluginRefineFlags flags,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
GsPluginLoaderAsyncState *state;
g_autoptr(GTask) task = NULL;
@@ -3741,7 +3742,7 @@ gs_plugin_loader_filename_to_app_async (GsPluginLoader *plugin_loader,
/* save state */
state = g_slice_new0 (GsPluginLoaderAsyncState);
state->flags = flags;
- state->filename = g_strdup (filename);
+ state->file = g_object_ref (file);
/* run in a thread */
task = g_task_new (plugin_loader, cancellable, callback, user_data);
@@ -3750,14 +3751,14 @@ gs_plugin_loader_filename_to_app_async (GsPluginLoader *plugin_loader,
}
/**
- * gs_plugin_loader_filename_to_app_finish:
+ * gs_plugin_loader_file_to_app_finish:
*
* Return value: (element-type GsApp) (transfer full): An application, or %NULL
**/
GsApp *
-gs_plugin_loader_filename_to_app_finish (GsPluginLoader *plugin_loader,
- GAsyncResult *res,
- GError **error)
+gs_plugin_loader_file_to_app_finish (GsPluginLoader *plugin_loader,
+ GAsyncResult *res,
+ GError **error)
{
g_return_val_if_fail (GS_IS_PLUGIN_LOADER (plugin_loader), NULL);
g_return_val_if_fail (G_IS_TASK (res), NULL);
diff --git a/src/gs-plugin-loader.h b/src/gs-plugin-loader.h
index a01d8b1..3905f1b 100644
--- a/src/gs-plugin-loader.h
+++ b/src/gs-plugin-loader.h
@@ -172,13 +172,13 @@ void gs_plugin_loader_search_what_provides_async (GsPluginLoader
*plugin_loade
GList *gs_plugin_loader_search_what_provides_finish (GsPluginLoader *plugin_loader,
GAsyncResult *res,
GError **error);
-void gs_plugin_loader_filename_to_app_async (GsPluginLoader *plugin_loader,
- const gchar *filename,
+void gs_plugin_loader_file_to_app_async (GsPluginLoader *plugin_loader,
+ GFile *file,
GsPluginRefineFlags flags,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
-GsApp *gs_plugin_loader_filename_to_app_finish(GsPluginLoader *plugin_loader,
+GsApp *gs_plugin_loader_file_to_app_finish (GsPluginLoader *plugin_loader,
GAsyncResult *res,
GError **error);
void gs_plugin_loader_update_async (GsPluginLoader *plugin_loader,
diff --git a/src/gs-plugin.h b/src/gs-plugin.h
index daddef7..94438f2 100644
--- a/src/gs-plugin.h
+++ b/src/gs-plugin.h
@@ -190,9 +190,9 @@ typedef gboolean (*GsPluginRefreshFunc ) (GsPlugin *plugin,
GsPluginRefreshFlags flags,
GCancellable *cancellable,
GError **error);
-typedef gboolean (*GsPluginFilenameToAppFunc) (GsPlugin *plugin,
+typedef gboolean (*GsPluginFileToAppFunc) (GsPlugin *plugin,
GList **list,
- const gchar *filename,
+ GFile *file,
GCancellable *cancellable,
GError **error);
typedef gboolean (*GsPluginUpdateFunc) (GsPlugin *plugin,
@@ -378,9 +378,9 @@ gboolean gs_plugin_refresh (GsPlugin *plugin,
GsPluginRefreshFlags flags,
GCancellable *cancellable,
GError **error);
-gboolean gs_plugin_filename_to_app (GsPlugin *plugin,
+gboolean gs_plugin_file_to_app (GsPlugin *plugin,
GList **list,
- const gchar *filename,
+ GFile *file,
GCancellable *cancellable,
GError **error);
gboolean gs_plugin_update (GsPlugin *plugin,
diff --git a/src/gs-self-test.c b/src/gs-self-test.c
index 4373239..25d0f05 100644
--- a/src/gs-self-test.c
+++ b/src/gs-self-test.c
@@ -429,6 +429,7 @@ gs_plugin_loader_dpkg_func (GsPluginLoader *plugin_loader)
g_autoptr(GsApp) app = NULL;
g_autoptr(GError) error = NULL;
g_autofree gchar *fn = NULL;
+ g_autoptr(GFile) file = NULL;
/* no dpkg, abort */
if (!gs_plugin_loader_get_enabled (plugin_loader, "dpkg"))
@@ -437,11 +438,12 @@ gs_plugin_loader_dpkg_func (GsPluginLoader *plugin_loader)
/* load local file */
fn = gs_test_get_filename ("tests/chiron-1.1-1.deb");
g_assert (fn != NULL);
- app = gs_plugin_loader_filename_to_app (plugin_loader,
- fn,
- GS_PLUGIN_REFINE_FLAGS_DEFAULT,
- NULL,
- &error);
+ file = g_file_new_for-path (fn);
+ app = gs_plugin_loader_file_to_app (plugin_loader,
+ file,
+ GS_PLUGIN_REFINE_FLAGS_DEFAULT,
+ NULL,
+ &error);
g_assert_no_error (error);
g_assert (app != NULL);
g_assert_cmpstr (gs_app_get_id (app), ==, NULL);
diff --git a/src/gs-shell-details.c b/src/gs-shell-details.c
index 359ef82..1664171 100644
--- a/src/gs-shell-details.c
+++ b/src/gs-shell-details.c
@@ -175,7 +175,7 @@ gs_shell_details_switch_to (GsPage *page, gboolean scroll_up)
widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "application_details_header"));
gtk_widget_show (widget);
- /* not set, perhaps filename-to-app */
+ /* not set, perhaps file-to-app */
if (self->app == NULL)
return;
@@ -1205,12 +1205,12 @@ gs_shell_details_failed_response_cb (GtkDialog *dialog,
}
/**
- * gs_shell_details_filename_to_app_cb:
+ * gs_shell_details_filen_to_app_cb:
**/
static void
-gs_shell_details_filename_to_app_cb (GObject *source,
- GAsyncResult *res,
- gpointer user_data)
+gs_shell_details_file_to_app_cb (GObject *source,
+ GAsyncResult *res,
+ gpointer user_data)
{
GsPluginLoader *plugin_loader = GS_PLUGIN_LOADER (source);
GsShellDetails *self = GS_SHELL_DETAILS (user_data);
@@ -1224,9 +1224,9 @@ gs_shell_details_filename_to_app_cb (GObject *source,
}
/* save app */
g_set_object (&self->app,
- gs_plugin_loader_filename_to_app_finish(plugin_loader,
- res,
- &error));
+ gs_plugin_loader_file_to_app_finish (plugin_loader,
+ res,
+ &error));
if (self->app == NULL) {
GtkWidget *dialog;
@@ -1278,16 +1278,19 @@ gs_shell_details_filename_to_app_cb (GObject *source,
void
gs_shell_details_set_filename (GsShellDetails *self, const gchar *filename)
{
+ g_autoptr(GFile) file = NULL;
+
gs_shell_details_set_state (self, GS_SHELL_DETAILS_STATE_LOADING);
- gs_plugin_loader_filename_to_app_async (self->plugin_loader,
- filename,
- GS_PLUGIN_REFINE_FLAGS_DEFAULT |
- GS_PLUGIN_REFINE_FLAGS_REQUIRE_RATING |
- GS_PLUGIN_REFINE_FLAGS_REQUIRE_REVIEW_RATINGS |
- GS_PLUGIN_REFINE_FLAGS_REQUIRE_REVIEWS,
- self->cancellable,
- gs_shell_details_filename_to_app_cb,
- self);
+ file = g_file_new_for_path (filename);
+ gs_plugin_loader_file_to_app_async (self->plugin_loader,
+ file,
+ GS_PLUGIN_REFINE_FLAGS_DEFAULT |
+ GS_PLUGIN_REFINE_FLAGS_REQUIRE_RATING |
+ GS_PLUGIN_REFINE_FLAGS_REQUIRE_REVIEW_RATINGS |
+ GS_PLUGIN_REFINE_FLAGS_REQUIRE_REVIEWS,
+ self->cancellable,
+ gs_shell_details_file_to_app_cb,
+ self);
}
/**
diff --git a/src/gs-shell-extras.c b/src/gs-shell-extras.c
index 9633179..f2f38c9 100644
--- a/src/gs-shell-extras.c
+++ b/src/gs-shell-extras.c
@@ -562,9 +562,9 @@ search_files_cb (GObject *source_object,
}
static void
-filename_to_app_cb (GObject *source_object,
- GAsyncResult *res,
- gpointer user_data)
+file_to_app_cb (GObject *source_object,
+ GAsyncResult *res,
+ gpointer user_data)
{
SearchData *search_data = (SearchData *) user_data;
GsShellExtras *self = search_data->self;
@@ -572,7 +572,7 @@ filename_to_app_cb (GObject *source_object,
GsPluginLoader *plugin_loader = GS_PLUGIN_LOADER (source_object);
g_autoptr(GError) error = NULL;
- app = gs_plugin_loader_filename_to_app_finish (plugin_loader, res, &error);
+ app = gs_plugin_loader_file_to_app_finish (plugin_loader, res, &error);
if (app == NULL) {
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
g_debug ("extras: search what provides cancelled");
@@ -701,15 +701,17 @@ gs_shell_extras_load (GsShellExtras *self, GPtrArray *array_search_data)
search_files_cb,
search_data);
} else if (search_data->package_filename != NULL) {
+ g_autoptr (GFile) file = NULL;
g_debug ("resolving filename to app: '%s'", search_data->package_filename);
- gs_plugin_loader_filename_to_app_async (self->plugin_loader,
- search_data->package_filename,
- GS_PLUGIN_REFINE_FLAGS_DEFAULT |
- GS_PLUGIN_REFINE_FLAGS_REQUIRE_RATING |
- GS_PLUGIN_REFINE_FLAGS_ALLOW_PACKAGES,
- self->search_cancellable,
- filename_to_app_cb,
- search_data);
+ file = g_file_new_for_path (search_data->package_filename);
+ gs_plugin_loader_file_to_app_async (self->plugin_loader,
+ file,
+ GS_PLUGIN_REFINE_FLAGS_DEFAULT |
+ GS_PLUGIN_REFINE_FLAGS_REQUIRE_RATING |
+ GS_PLUGIN_REFINE_FLAGS_ALLOW_PACKAGES,
+ self->search_cancellable,
+ file_to_app_cb,
+ search_data);
} else {
g_debug ("searching what provides: '%s'", search_data->search);
gs_plugin_loader_search_what_provides_async (self->plugin_loader,
diff --git a/src/gs-utils.c b/src/gs-utils.c
index 5c452c5..345caf3 100644
--- a/src/gs-utils.c
+++ b/src/gs-utils.c
@@ -527,16 +527,14 @@ gs_utils_get_permission (const gchar *id)
* gs_utils_get_content_type:
*/
gchar *
-gs_utils_get_content_type (const gchar *filename,
+gs_utils_get_content_type (GFile *file,
GCancellable *cancellable,
GError **error)
{
const gchar *tmp;
- g_autoptr(GFile) file = NULL;
g_autoptr(GFileInfo) info = NULL;
/* get content type */
- file = g_file_new_for_path (filename);
info = g_file_query_info (file,
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
G_FILE_QUERY_INFO_NONE,
diff --git a/src/gs-utils.h b/src/gs-utils.h
index a218b80..d53cb35 100644
--- a/src/gs-utils.h
+++ b/src/gs-utils.h
@@ -35,7 +35,7 @@ void gs_container_remove_all (GtkContainer *container);
void gs_grab_focus_when_mapped (GtkWidget *widget);
guint gs_utils_get_file_age (GFile *file);
-gchar *gs_utils_get_content_type (const gchar *filename,
+gchar *gs_utils_get_content_type (GFile *file,
GCancellable *cancellable,
GError **error);
diff --git a/src/plugins/gs-plugin-dpkg.c b/src/plugins/gs-plugin-dpkg.c
index e7cc5af..532014b 100644
--- a/src/plugins/gs-plugin-dpkg.c
+++ b/src/plugins/gs-plugin-dpkg.c
@@ -51,14 +51,14 @@ gs_plugin_initialize (GsPlugin *plugin)
}
/**
- * gs_plugin_filename_to_app:
+ * gs_plugin_file_to_app:
*/
gboolean
-gs_plugin_filename_to_app (GsPlugin *plugin,
- GList **list,
- const gchar *filename,
- GCancellable *cancellable,
- GError **error)
+gs_plugin_file_to_app (GsPlugin *plugin,
+ GList **list,
+ GFile *file,
+ GCancellable *cancellable,
+ GError **error)
{
GsApp *app;
guint i;
@@ -72,7 +72,7 @@ gs_plugin_filename_to_app (GsPlugin *plugin,
NULL };
/* does this match any of the mimetypes we support */
- content_type = gs_utils_get_content_type (filename, cancellable, error);
+ content_type = gs_utils_get_content_type (file, cancellable, error);
if (content_type == NULL)
return FALSE;
if (!g_strv_contains (mimetypes, content_type))
@@ -87,8 +87,7 @@ gs_plugin_filename_to_app (GsPlugin *plugin,
"${Homepage}\\n"
"${Description}");
argv[2] = g_strdup ("-W");
- argv[3] = g_strdup (filename);
- argv[4] = NULL;
+ argv[3] = g_strdup (g_file_get_path (file));
if (!g_spawn_sync (NULL, argv, NULL,
G_SPAWN_SEARCH_PATH | G_SPAWN_STDERR_TO_DEV_NULL,
NULL, NULL, &output, NULL, NULL, error))
diff --git a/src/plugins/gs-plugin-fwupd.c b/src/plugins/gs-plugin-fwupd.c
index 583ea3d..d08bd75 100644
--- a/src/plugins/gs-plugin-fwupd.c
+++ b/src/plugins/gs-plugin-fwupd.c
@@ -1014,14 +1014,14 @@ gs_plugin_update_app (GsPlugin *plugin,
}
/**
- * gs_plugin_filename_to_app:
+ * gs_plugin_file_to_app:
*/
gboolean
-gs_plugin_filename_to_app (GsPlugin *plugin,
- GList **list,
- const gchar *filename,
- GCancellable *cancellable,
- GError **error)
+gs_plugin_file_to_app (GsPlugin *plugin,
+ GList **list,
+ GFile *file,
+ GCancellable *cancellable,
+ GError **error)
{
FwupdDeviceFlags flags = FU_DEVICE_FLAG_ALLOW_OFFLINE;
GVariant *body;
@@ -1041,9 +1041,10 @@ gs_plugin_filename_to_app (GsPlugin *plugin,
const gchar *mimetypes[] = {
"application/vnd.ms-cab-compressed",
NULL };
+ g_autofree gchar *filename = NULL;
/* does this match any of the mimetypes we support */
- content_type = gs_utils_get_content_type (filename, cancellable, error);
+ content_type = gs_utils_get_content_type (file, cancellable, error);
if (content_type == NULL)
return FALSE;
if (!g_strv_contains (mimetypes, content_type))
@@ -1055,6 +1056,7 @@ gs_plugin_filename_to_app (GsPlugin *plugin,
return FALSE;
/* open file */
+ filename = g_file_get_path (file);
fd = open (filename, O_RDONLY);
if (fd < 0) {
g_set_error (error,
diff --git a/src/plugins/gs-plugin-packagekit-refresh.c b/src/plugins/gs-plugin-packagekit-refresh.c
index c8b7d28..15f854d 100644
--- a/src/plugins/gs-plugin-packagekit-refresh.c
+++ b/src/plugins/gs-plugin-packagekit-refresh.c
@@ -284,14 +284,14 @@ gs_plugin_packagekit_refresh_guess_app_id (GsPlugin *plugin,
}
/**
- * gs_plugin_filename_to_app:
+ * gs_plugin_file_to_app:
*/
gboolean
-gs_plugin_filename_to_app (GsPlugin *plugin,
- GList **list,
- const gchar *filename,
- GCancellable *cancellable,
- GError **error)
+gs_plugin_file_to_app (GsPlugin *plugin,
+ GList **list,
+ GFile *file,
+ GCancellable *cancellable,
+ GError **error)
{
const gchar *package_id;
PkDetails *item;
@@ -312,7 +312,7 @@ gs_plugin_filename_to_app (GsPlugin *plugin,
NULL };
/* does this match any of the mimetypes we support */
- content_type = gs_utils_get_content_type (filename, cancellable, error);
+ content_type = gs_utils_get_content_type (file, cancellable, error);
if (content_type == NULL)
return FALSE;
if (!g_strv_contains (mimetypes, content_type))
diff --git a/src/plugins/gs-plugin-xdg-app.c b/src/plugins/gs-plugin-xdg-app.c
index a937023..3185780 100644
--- a/src/plugins/gs-plugin-xdg-app.c
+++ b/src/plugins/gs-plugin-xdg-app.c
@@ -1367,14 +1367,14 @@ gs_plugin_update_app (GsPlugin *plugin,
}
/**
- * gs_plugin_filename_to_app:
+ * gs_plugin_file_to_app:
*/
gboolean
-gs_plugin_filename_to_app (GsPlugin *plugin,
- GList **list,
- const gchar *filename,
- GCancellable *cancellable,
- GError **error)
+gs_plugin_file_to_app (GsPlugin *plugin,
+ GList **list,
+ GFile *file,
+ GCancellable *cancellable,
+ GError **error)
{
g_autofree gchar *content_type = NULL;
g_autofree gchar *id_prefixed = NULL;
@@ -1389,7 +1389,7 @@ gs_plugin_filename_to_app (GsPlugin *plugin,
NULL };
/* does this match any of the mimetypes we support */
- content_type = gs_utils_get_content_type (filename, cancellable, error);
+ content_type = gs_utils_get_content_type (file, cancellable, error);
if (content_type == NULL)
return FALSE;
if (!g_strv_contains (mimetypes, content_type))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]