diff options
author | Alexander Larsson <alexl@redhat.com> | 2016-05-06 16:03:27 +0200 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2016-05-06 16:03:27 +0200 |
commit | 1ffdf27d927c7944e3bce9b1cd3c101d823fd826 (patch) | |
tree | b91268da5ea5f1d224977ce4e5bbb75386d9a424 /common | |
parent | afa12a446fcc473eb740146805856e76ad82b4af (diff) | |
download | xdg-app-1ffdf27d927c7944e3bce9b1cd3c101d823fd826.tar.gz |
uncruftify: Initial run, all non-problematic changes
Diffstat (limited to 'common')
-rw-r--r-- | common/xdg-app-chain-input-stream.c | 111 | ||||
-rw-r--r-- | common/xdg-app-chain-input-stream.h | 14 | ||||
-rw-r--r-- | common/xdg-app-common-types.h | 4 | ||||
-rw-r--r-- | common/xdg-app-db.c | 209 | ||||
-rw-r--r-- | common/xdg-app-db.h | 123 | ||||
-rw-r--r-- | common/xdg-app-dir.c | 975 | ||||
-rw-r--r-- | common/xdg-app-dir.h | 540 | ||||
-rw-r--r-- | common/xdg-app-portal-error.h | 4 | ||||
-rw-r--r-- | common/xdg-app-run.c | 666 | ||||
-rw-r--r-- | common/xdg-app-run.h | 116 | ||||
-rw-r--r-- | common/xdg-app-utils.c | 469 | ||||
-rw-r--r-- | common/xdg-app-utils.h | 314 |
12 files changed, 1859 insertions, 1686 deletions
diff --git a/common/xdg-app-chain-input-stream.c b/common/xdg-app-chain-input-stream.c index 68b201c..ae1360f 100644 --- a/common/xdg-app-chain-input-stream.c +++ b/common/xdg-app-chain-input-stream.c @@ -1,5 +1,5 @@ /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- - * + * * Copyright (C) 2011 Colin Walters <walters@verbum.org> * * This library is free software; you can redistribute it and/or @@ -29,35 +29,36 @@ enum { G_DEFINE_TYPE (XdgAppChainInputStream, xdg_app_chain_input_stream, G_TYPE_INPUT_STREAM) -struct _XdgAppChainInputStreamPrivate { +struct _XdgAppChainInputStreamPrivate +{ GPtrArray *streams; - guint index; + guint index; }; -static void xdg_app_chain_input_stream_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void xdg_app_chain_input_stream_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); -static void xdg_app_chain_input_stream_finalize (GObject *object); -static gssize xdg_app_chain_input_stream_read (GInputStream *stream, - void *buffer, - gsize count, - GCancellable *cancellable, - GError **error); -static gboolean xdg_app_chain_input_stream_close (GInputStream *stream, - GCancellable *cancellable, - GError **error); +static void xdg_app_chain_input_stream_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void xdg_app_chain_input_stream_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); +static void xdg_app_chain_input_stream_finalize (GObject *object); +static gssize xdg_app_chain_input_stream_read (GInputStream *stream, + void *buffer, + gsize count, + GCancellable *cancellable, + GError **error); +static gboolean xdg_app_chain_input_stream_close (GInputStream *stream, + GCancellable *cancellable, + GError **error); static void xdg_app_chain_input_stream_class_init (XdgAppChainInputStreamClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GInputStreamClass *stream_class = G_INPUT_STREAM_CLASS (klass); - + g_type_class_add_private (klass, sizeof (XdgAppChainInputStreamPrivate)); gobject_class->get_property = xdg_app_chain_input_stream_get_property; @@ -73,23 +74,23 @@ xdg_app_chain_input_stream_class_init (XdgAppChainInputStreamClass *klass) * Chain of input streams read in order. */ g_object_class_install_property (gobject_class, - PROP_STREAMS, - g_param_spec_pointer ("streams", - "", "", - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); + PROP_STREAMS, + g_param_spec_pointer ("streams", + "", "", + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS)); } static void -xdg_app_chain_input_stream_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) +xdg_app_chain_input_stream_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) { XdgAppChainInputStream *self; - + self = XDG_APP_CHAIN_INPUT_STREAM (object); switch (prop_id) @@ -97,6 +98,7 @@ xdg_app_chain_input_stream_set_property (GObject *object, case PROP_STREAMS: self->priv->streams = g_ptr_array_ref (g_value_get_pointer (value)); break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -105,9 +107,9 @@ xdg_app_chain_input_stream_set_property (GObject *object, static void xdg_app_chain_input_stream_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { XdgAppChainInputStream *self; @@ -118,6 +120,7 @@ xdg_app_chain_input_stream_get_property (GObject *object, case PROP_STREAMS: g_value_set_pointer (value, self->priv->streams); break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } @@ -128,7 +131,7 @@ xdg_app_chain_input_stream_finalize (GObject *object) { XdgAppChainInputStream *stream; - stream = (XdgAppChainInputStream*)(object); + stream = (XdgAppChainInputStream *) (object); g_ptr_array_unref (stream->priv->streams); @@ -139,37 +142,37 @@ static void xdg_app_chain_input_stream_init (XdgAppChainInputStream *self) { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, - XDG_APP_TYPE_CHAIN_INPUT_STREAM, - XdgAppChainInputStreamPrivate); + XDG_APP_TYPE_CHAIN_INPUT_STREAM, + XdgAppChainInputStreamPrivate); } XdgAppChainInputStream * -xdg_app_chain_input_stream_new (GPtrArray *streams) +xdg_app_chain_input_stream_new (GPtrArray *streams) { XdgAppChainInputStream *stream; stream = g_object_new (XDG_APP_TYPE_CHAIN_INPUT_STREAM, - "streams", streams, - NULL); + "streams", streams, + NULL); - return (XdgAppChainInputStream*) (stream); + return (XdgAppChainInputStream *) (stream); } static gssize -xdg_app_chain_input_stream_read (GInputStream *stream, - void *buffer, - gsize count, - GCancellable *cancellable, - GError **error) +xdg_app_chain_input_stream_read (GInputStream *stream, + void *buffer, + gsize count, + GCancellable *cancellable, + GError **error) { - XdgAppChainInputStream *self = (XdgAppChainInputStream*) stream; + XdgAppChainInputStream *self = (XdgAppChainInputStream *) stream; GInputStream *child; gssize res = -1; if (g_cancellable_set_error_if_cancelled (cancellable, error)) return -1; - + if (self->priv->index >= self->priv->streams->len) return 0; @@ -190,12 +193,12 @@ xdg_app_chain_input_stream_read (GInputStream *stream, } static gboolean -xdg_app_chain_input_stream_close (GInputStream *stream, - GCancellable *cancellable, - GError **error) +xdg_app_chain_input_stream_close (GInputStream *stream, + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; - XdgAppChainInputStream *self = (gpointer)stream; + XdgAppChainInputStream *self = (gpointer) stream; guint i; for (i = 0; i < self->priv->streams->len; i++) @@ -206,6 +209,6 @@ xdg_app_chain_input_stream_close (GInputStream *stream, } ret = TRUE; - out: +out: return ret; } diff --git a/common/xdg-app-chain-input-stream.h b/common/xdg-app-chain-input-stream.h index d6bab19..0d3b793 100644 --- a/common/xdg-app-chain-input-stream.h +++ b/common/xdg-app-chain-input-stream.h @@ -27,16 +27,16 @@ G_BEGIN_DECLS -#define XDG_APP_TYPE_CHAIN_INPUT_STREAM (xdg_app_chain_input_stream_get_type ()) +#define XDG_APP_TYPE_CHAIN_INPUT_STREAM (xdg_app_chain_input_stream_get_type ()) #define XDG_APP_CHAIN_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), XDG_APP_TYPE_CHAIN_INPUT_STREAM, XdgAppChainInputStream)) -#define XDG_APP_CHAIN_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), XDG_APP_TYPE_CHAIN_INPUT_STREAM, XdgAppChainInputStreamClass)) +#define XDG_APP_CHAIN_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), XDG_APP_TYPE_CHAIN_INPUT_STREAM, XdgAppChainInputStreamClass)) #define XDG_APP_IS_CHAIN_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), XDG_APP_TYPE_CHAIN_INPUT_STREAM)) #define XDG_APP_IS_CHAIN_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), XDG_APP_TYPE_CHAIN_INPUT_STREAM)) #define XDG_APP_CHAIN_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), XDG_APP_TYPE_CHAIN_INPUT_STREAM, XdgAppChainInputStreamClass)) -typedef struct _XdgAppChainInputStream XdgAppChainInputStream; -typedef struct _XdgAppChainInputStreamClass XdgAppChainInputStreamClass; -typedef struct _XdgAppChainInputStreamPrivate XdgAppChainInputStreamPrivate; +typedef struct _XdgAppChainInputStream XdgAppChainInputStream; +typedef struct _XdgAppChainInputStreamClass XdgAppChainInputStreamClass; +typedef struct _XdgAppChainInputStreamPrivate XdgAppChainInputStreamPrivate; struct _XdgAppChainInputStream { @@ -59,9 +59,9 @@ struct _XdgAppChainInputStreamClass void (*_g_reserved5) (void); }; -GType xdg_app_chain_input_stream_get_type (void) G_GNUC_CONST; +GType xdg_app_chain_input_stream_get_type (void) G_GNUC_CONST; -XdgAppChainInputStream * xdg_app_chain_input_stream_new (GPtrArray *streams); +XdgAppChainInputStream * xdg_app_chain_input_stream_new (GPtrArray *streams); G_END_DECLS diff --git a/common/xdg-app-common-types.h b/common/xdg-app-common-types.h index ab49c2c..9e2e8d3 100644 --- a/common/xdg-app-common-types.h +++ b/common/xdg-app-common-types.h @@ -21,8 +21,8 @@ #ifndef __XDG_APP_COMMON_TYPES_H__ #define __XDG_APP_COMMON_TYPES_H__ -typedef struct XdgAppDir XdgAppDir; -typedef struct XdgAppDeploy XdgAppDeploy; +typedef struct XdgAppDir XdgAppDir; +typedef struct XdgAppDeploy XdgAppDeploy; typedef struct XdgAppContext XdgAppContext; #endif /* __XDG_APP_COMMON_TYPES_H__ */ diff --git a/common/xdg-app-db.c b/common/xdg-app-db.c index 6189b9c..8f8468f 100644 --- a/common/xdg-app-db.c +++ b/common/xdg-app-db.c @@ -31,31 +31,33 @@ #include "gvdb/gvdb-reader.h" #include "gvdb/gvdb-builder.h" -struct XdgAppDb { - GObject parent; +struct XdgAppDb +{ + GObject parent; - char *path; - gboolean fail_if_not_found; + char *path; + gboolean fail_if_not_found; GvdbTable *gvdb; - GBytes *gvdb_contents; + GBytes *gvdb_contents; - gboolean dirty; + gboolean dirty; /* Map id => GVariant (data, sorted-dict[appid->perms]) */ - GvdbTable *main_table; + GvdbTable *main_table; GHashTable *main_updates; /* (reverse) Map app id => [ id ]*/ - GvdbTable *app_table; + GvdbTable *app_table; GHashTable *app_additions; GHashTable *app_removals; }; -typedef struct { +typedef struct +{ GObjectClass parent_class; } XdgAppDbClass; -static void initable_iface_init (GInitableIface *initable_iface); +static void initable_iface_init (GInitableIface *initable_iface); G_DEFINE_TYPE_WITH_CODE (XdgAppDb, xdg_app_db, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, initable_iface_init)); @@ -70,17 +72,17 @@ enum { static int cmpstringp (const void *p1, const void *p2) { - return strcmp (* (char * const *) p1, * (char * const *) p2); + return strcmp (*(char * const *) p1, *(char * const *) p2); } static void sort_strv (const char **strv) { - qsort (strv, g_strv_length ((char **)strv), sizeof (const char *), cmpstringp); + qsort (strv, g_strv_length ((char **) strv), sizeof (const char *), cmpstringp); } static int -str_ptr_array_find (GPtrArray *array, +str_ptr_array_find (GPtrArray *array, const char *str) { int i; @@ -93,7 +95,7 @@ str_ptr_array_find (GPtrArray *array, } static gboolean -str_ptr_array_contains (GPtrArray *array, +str_ptr_array_contains (GPtrArray *array, const char *str) { return str_ptr_array_find (array, str) >= 0; @@ -108,7 +110,7 @@ xdg_app_db_get_path (XdgAppDb *self) } void -xdg_app_db_set_path (XdgAppDb *self, +xdg_app_db_set_path (XdgAppDb *self, const char *path) { g_return_if_fail (XDG_APP_IS_DB (self)); @@ -119,8 +121,8 @@ xdg_app_db_set_path (XdgAppDb *self, XdgAppDb * xdg_app_db_new (const char *path, - gboolean fail_if_not_found, - GError **error) + gboolean fail_if_not_found, + GError **error) { return g_initable_new (XDG_APP_TYPE_DB, NULL, @@ -133,7 +135,7 @@ xdg_app_db_new (const char *path, static void xdg_app_db_finalize (GObject *object) { - XdgAppDb *self = (XdgAppDb *)object; + XdgAppDb *self = (XdgAppDb *) object; g_clear_pointer (&self->path, g_free); g_clear_pointer (&self->gvdb_contents, g_bytes_unref); @@ -149,11 +151,11 @@ xdg_app_db_finalize (GObject *object) static void xdg_app_db_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) + guint prop_id, + GValue *value, + GParamSpec *pspec) { - XdgAppDb *self = XDG_APP_DB(object); + XdgAppDb *self = XDG_APP_DB (object); switch (prop_id) { @@ -172,9 +174,9 @@ xdg_app_db_get_property (GObject *object, static void xdg_app_db_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) + guint prop_id, + const GValue *value, + GParamSpec *pspec) { XdgAppDb *self = XDG_APP_DB (object); @@ -226,13 +228,13 @@ xdg_app_db_init (XdgAppDb *self) self->main_updates = g_hash_table_new_full (g_str_hash, g_str_equal, - g_free, (GDestroyNotify)g_variant_unref); + g_free, (GDestroyNotify) g_variant_unref); self->app_additions = g_hash_table_new_full (g_str_hash, g_str_equal, - g_free, (GDestroyNotify)g_ptr_array_unref); + g_free, (GDestroyNotify) g_ptr_array_unref); self->app_removals = g_hash_table_new_full (g_str_hash, g_str_equal, - g_free, (GDestroyNotify)g_ptr_array_unref); + g_free, (GDestroyNotify) g_ptr_array_unref); } static gboolean @@ -252,11 +254,11 @@ is_on_nfs (const char *path) } static gboolean -initable_init (GInitable *initable, - GCancellable *cancellable, - GError **error) +initable_init (GInitable *initable, + GCancellable *cancellable, + GError **error) { - XdgAppDb *self = (XdgAppDb *)initable; + XdgAppDb *self = (XdgAppDb *) initable; GError *my_error = NULL; if (self->path == NULL) @@ -365,7 +367,7 @@ xdg_app_db_list_ids (XdgAppDb *self) } g_ptr_array_add (res, NULL); - return (char **)g_ptr_array_free (res, FALSE); + return (char **) g_ptr_array_free (res, FALSE); } static gboolean @@ -447,12 +449,12 @@ xdg_app_db_list_apps (XdgAppDb *self) } g_ptr_array_add (res, NULL); - return (char **)g_ptr_array_free (res, FALSE); + return (char **) g_ptr_array_free (res, FALSE); } /* Transfer: full */ char ** -xdg_app_db_list_ids_by_app (XdgAppDb *self, +xdg_app_db_list_ids_by_app (XdgAppDb *self, const char *app) { GPtrArray *res; @@ -491,12 +493,12 @@ xdg_app_db_list_ids_by_app (XdgAppDb *self, } g_ptr_array_add (res, NULL); - return (char **)g_ptr_array_free (res, FALSE); + return (char **) g_ptr_array_free (res, FALSE); } /* Transfer: full */ XdgAppDbEntry * -xdg_app_db_lookup (XdgAppDb *self, +xdg_app_db_lookup (XdgAppDb *self, const char *id) { GVariant *res = NULL; @@ -508,12 +510,14 @@ xdg_app_db_lookup (XdgAppDb *self, if (g_hash_table_lookup_extended (self->main_updates, id, NULL, &value)) { if (value != NULL) - res = g_variant_ref ((GVariant *)value); + res = g_variant_ref ((GVariant *) value); } else if (self->main_table) - res = gvdb_table_get_value (self->main_table, id); + { + res = gvdb_table_get_value (self->main_table, id); + } - return (XdgAppDbEntry *)res; + return (XdgAppDbEntry *) res; } /* Transfer: full */ @@ -551,11 +555,11 @@ xdg_app_db_list_ids_by_value (XdgAppDb *self, } g_ptr_array_add (res, NULL); - return (char **)g_ptr_array_free (res, FALSE); + return (char **) g_ptr_array_free (res, FALSE); } static void -add_app_id (XdgAppDb *self, +add_app_id (XdgAppDb *self, const char *app, const char *id) { @@ -588,7 +592,7 @@ add_app_id (XdgAppDb *self, } static void -remove_app_id (XdgAppDb *self, +remove_app_id (XdgAppDb *self, const char *app, const char *id) { @@ -630,8 +634,8 @@ xdg_app_db_is_dirty (XdgAppDb *self) /* add, replace, or NULL entry to remove */ void -xdg_app_db_set_entry (XdgAppDb *self, - const char *id, +xdg_app_db_set_entry (XdgAppDb *self, + const char *id, XdgAppDbEntry *entry) { g_autoptr(XdgAppDbEntry) old_entry = NULL; @@ -718,6 +722,7 @@ xdg_app_db_update (XdgAppDb *self) GBytes *new_contents; GvdbTable *new_gvdb; int i; + g_auto(GStrv) ids = NULL; g_auto(GStrv) apps = NULL; @@ -738,7 +743,7 @@ xdg_app_db_update (XdgAppDb *self) GvdbItem *item; item = gvdb_hash_table_insert (main_h, ids[i]); - gvdb_item_set_value (item, (GVariant *)entry); + gvdb_item_set_value (item, (GVariant *) entry); } } @@ -751,7 +756,7 @@ xdg_app_db_update (XdgAppDb *self) int j; /* May as well ensure that on-disk arrays are sorted, even if we don't use it yet */ - sort_strv ((const char **)app_ids); + sort_strv ((const char **) app_ids); /* We should never list an app that has empty id lists */ g_assert (app_ids[0] != NULL); @@ -811,18 +816,18 @@ xdg_app_db_save_content (XdgAppDb *self, } static void -save_content_callback (GObject *source_object, +save_content_callback (GObject *source_object, GAsyncResult *res, - gpointer user_data) + gpointer user_data) { g_autoptr(GTask) task = user_data; GFile *file = G_FILE (source_object); gboolean ok; g_autoptr(GError) error = NULL; - ok = g_file_replace_contents_finish (file, - res, - NULL, &error); + ok = g_file_replace_contents_finish (file, + res, + NULL, &error); if (ok) g_task_return_boolean (task, TRUE); else @@ -830,12 +835,13 @@ save_content_callback (GObject *source_object, } void -xdg_app_db_save_content_async (XdgAppDb *self, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) +xdg_app_db_save_content_async (XdgAppDb *self, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) { GBytes *content = NULL; + g_autoptr(GTask) task = NULL; g_autoptr(GFile) file = NULL; @@ -856,7 +862,7 @@ xdg_app_db_save_content_async (XdgAppDb *self, } content = g_bytes_ref (self->gvdb_contents); - g_task_set_task_data (task, content, (GDestroyNotify)g_bytes_unref); + g_task_set_task_data (task, content, (GDestroyNotify) g_bytes_unref); file = g_file_new_for_path (self->path); g_file_replace_contents_bytes_async (file, content, @@ -867,9 +873,9 @@ xdg_app_db_save_content_async (XdgAppDb *self, } gboolean -xdg_app_db_save_content_finish (XdgAppDb *self, - GAsyncResult *res, - GError **error) +xdg_app_db_save_content_finish (XdgAppDb *self, + GAsyncResult *res, + GError **error) { return g_task_propagate_boolean (G_TASK (res), error); } @@ -877,7 +883,7 @@ xdg_app_db_save_content_finish (XdgAppDb *self, GString * xdg_app_db_print_string (XdgAppDb *self, - GString *string) + GString *string) { g_auto(GStrv) ids = NULL; g_auto(GStrv) apps = NULL; @@ -891,7 +897,7 @@ xdg_app_db_print_string (XdgAppDb *self, g_string_append_printf (string, "main {\n"); ids = xdg_app_db_list_ids (self); - sort_strv ((const char **)ids); + sort_strv ((const char **) ids); for (i = 0; ids[i] != 0; i++) { g_autoptr(XdgAppDbEntry) entry = xdg_app_db_lookup (self, ids[i]); @@ -904,14 +910,14 @@ xdg_app_db_print_string (XdgAppDb *self, g_string_append_printf (string, "}\napps {\n"); apps = xdg_app_db_list_apps (self); - sort_strv ((const char **)apps); + sort_strv ((const char **) apps); for (i = 0; apps[i] != 0; i++) { int j; g_auto(GStrv) app_ids = NULL; app_ids = xdg_app_db_list_ids_by_app (self, apps[i]); - sort_strv ((const char **)app_ids); + sort_strv ((const char **) app_ids); g_string_append_printf (string, " %s: ", apps[i]); for (j = 0; app_ids[j] != NULL; j++) @@ -931,33 +937,34 @@ xdg_app_db_print (XdgAppDb *self) } XdgAppDbEntry * -xdg_app_db_entry_ref (XdgAppDbEntry *entry) +xdg_app_db_entry_ref (XdgAppDbEntry *entry) { if (entry != NULL) - g_variant_ref ((GVariant *)entry); + g_variant_ref ((GVariant *) entry); return entry; } void -xdg_app_db_entry_unref (XdgAppDbEntry *entry) +xdg_app_db_entry_unref (XdgAppDbEntry *entry) { - g_variant_unref ((GVariant *)entry); + g_variant_unref ((GVariant *) entry); } /* Transfer: full */ GVariant * -xdg_app_db_entry_get_data (XdgAppDbEntry *entry) +xdg_app_db_entry_get_data (XdgAppDbEntry *entry) { - g_autoptr(GVariant) variant = g_variant_get_child_value ((GVariant *)entry, 0); + g_autoptr(GVariant) variant = g_variant_get_child_value ((GVariant *) entry, 0); return g_variant_get_child_value (variant, 0); } /* Transfer: container */ const char ** -xdg_app_db_entry_list_apps (XdgAppDbEntry *entry) +xdg_app_db_entry_list_apps (XdgAppDbEntry *entry) { - GVariant *v = (GVariant *)entry; + GVariant *v = (GVariant *) entry; + g_autoptr(GVariant) app_array = NULL; GVariantIter iter; GVariant *child; @@ -976,21 +983,22 @@ xdg_app_db_entry_list_apps (XdgAppDbEntry *entry) if (g_variant_n_children (permissions) > 0) { g_variant_get_child (child, 0, "&s", &child_app_id); - g_ptr_array_add (res, (char *)child_app_id); + g_ptr_array_add (res, (char *) child_app_id); } g_variant_unref (child); } g_ptr_array_add (res, NULL); - return (const char **)g_ptr_array_free (res, FALSE); + return (const char **) g_ptr_array_free (res, FALSE); } static GVariant * xdg_app_db_entry_get_permissions_variant (XdgAppDbEntry *entry, - const char *app_id) + const char *app_id) { - GVariant *v = (GVariant *)entry; + GVariant *v = (GVariant *) entry; + g_autoptr(GVariant) app_array = NULL; GVariant *child; GVariant *res = NULL; @@ -1018,9 +1026,13 @@ xdg_app_db_entry_get_permissions_variant (XdgAppDbEntry *entry, break; } else if (cmp < 0) - end = m; + { + end = m; + } else /* cmp > 0 */ - start = m + 1; + { + start = m + 1; + } } return res; @@ -1030,7 +1042,7 @@ xdg_app_db_entry_get_permissions_variant (XdgAppDbEntry *entry, /* Transfer: container */ const char ** xdg_app_db_entry_list_permissions (XdgAppDbEntry *entry, - const char *app) + const char *app) { g_autoptr(GVariant) permissions = NULL; @@ -1042,9 +1054,9 @@ xdg_app_db_entry_list_permissions (XdgAppDbEntry *entry, } gboolean -xdg_app_db_entry_has_permission (XdgAppDbEntry *entry, - const char *app, - const char *permission) +xdg_app_db_entry_has_permission (XdgAppDbEntry *entry, + const char *app, + const char *permission) { g_autofree const char **app_permissions = NULL; @@ -1054,9 +1066,9 @@ xdg_app_db_entry_has_permission (XdgAppDbEntry *entry, } gboolean -xdg_app_db_entry_has_permissions (XdgAppDbEntry *entry, - const char *app, - const char **permissions) +xdg_app_db_entry_has_permissions (XdgAppDbEntry *entry, + const char *app, + const char **permissions) { g_autofree const char **app_permissions = NULL; int i; @@ -1089,6 +1101,7 @@ static GVariant * make_permissions (const char *app, const char **permissions) { static const char **empty = { NULL }; + if (permissions == NULL) permissions = empty; @@ -1108,6 +1121,7 @@ add_permissions (GVariant *app_permissions, int cmp; const char *new_app_id; const char *child_app_id; + g_autoptr(GVariant) new_perms_array = NULL; g_variant_get (permissions, "{&s@as}", &new_app_id, &new_perms_array); @@ -1164,14 +1178,14 @@ xdg_app_db_entry_new (GVariant *data) res = make_entry (data, make_empty_app_permissions ()); - return (XdgAppDbEntry *)g_variant_ref_sink (res); + return (XdgAppDbEntry *) g_variant_ref_sink (res); } XdgAppDbEntry * -xdg_app_db_entry_modify_data (XdgAppDbEntry *entry, - GVariant *data) +xdg_app_db_entry_modify_data (XdgAppDbEntry *entry, + GVariant *data) { - GVariant *v = (GVariant *)entry; + GVariant *v = (GVariant *) entry; GVariant *res; if (data == NULL) @@ -1179,17 +1193,18 @@ xdg_app_db_entry_modify_data (XdgAppDbEntry *entry, res = make_entry (data, g_variant_get_child_value (v, 1)); - return (XdgAppDbEntry *)g_variant_ref_sink (res); + return (XdgAppDbEntry *) g_variant_ref_sink (res); } /* NULL (or empty) permissions to remove permissions */ XdgAppDbEntry * xdg_app_db_entry_set_app_permissions (XdgAppDbEntry *entry, - const char *app, - const char **permissions) + const char *app, + const char **permissions) { - GVariant *v = (GVariant *)entry; + GVariant *v = (GVariant *) entry; GVariant *res; + g_autoptr(GVariant) old_data_v = g_variant_get_child_value (v, 0); g_autoptr(GVariant) old_data = g_variant_get_child_value (old_data_v, 0); g_autoptr(GVariant) old_permissions = g_variant_get_child_value (v, 1); @@ -1198,12 +1213,12 @@ xdg_app_db_entry_set_app_permissions (XdgAppDbEntry *entry, add_permissions (old_permissions, make_permissions (app, permissions))); - return (XdgAppDbEntry *)g_variant_ref_sink (res); + return (XdgAppDbEntry *) g_variant_ref_sink (res); } GString * -xdg_app_db_entry_print_string (XdgAppDbEntry *entry, - GString *string) +xdg_app_db_entry_print_string (XdgAppDbEntry *entry, + GString *string) { - return g_variant_print_string ((GVariant *)entry, string, FALSE); + return g_variant_print_string ((GVariant *) entry, string, FALSE); } diff --git a/common/xdg-app-db.h b/common/xdg-app-db.h index 3225c9e..ba49947 100644 --- a/common/xdg-app-db.h +++ b/common/xdg-app-db.h @@ -29,76 +29,75 @@ G_BEGIN_DECLS -typedef struct XdgAppDb XdgAppDb; +typedef struct XdgAppDb XdgAppDb; typedef struct _XdgAppDbEntry XdgAppDbEntry; -#define XDG_APP_TYPE_DB (xdg_app_db_get_type()) +#define XDG_APP_TYPE_DB (xdg_app_db_get_type ()) #define XDG_APP_DB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), XDG_APP_TYPE_DB, XdgAppDb)) #define XDG_APP_IS_DB(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), XDG_APP_TYPE_DB)) GType xdg_app_db_get_type (void); -XdgAppDb * xdg_app_db_new (const char *path, - gboolean fail_if_not_found, - GError **error); -char ** xdg_app_db_list_ids (XdgAppDb *self); -char ** xdg_app_db_list_apps (XdgAppDb *self); -char ** xdg_app_db_list_ids_by_app (XdgAppDb *self, - const char *app); -char ** xdg_app_db_list_ids_by_value (XdgAppDb *self, - GVariant *data); -XdgAppDbEntry *xdg_app_db_lookup (XdgAppDb *self, - const char *id); -GString * xdg_app_db_print_string (XdgAppDb *self, - GString *string); -char * xdg_app_db_print (XdgAppDb *self); - -gboolean xdg_app_db_is_dirty (XdgAppDb *self); -void xdg_app_db_set_entry (XdgAppDb *self, - const char *id, - XdgAppDbEntry *entry); -void xdg_app_db_update (XdgAppDb *self); -GBytes * xdg_app_db_get_content (XdgAppDb *self); -const char * xdg_app_db_get_path (XdgAppDb *self); -gboolean xdg_app_db_save_content (XdgAppDb *self, - GError **error); -void xdg_app_db_save_content_async (XdgAppDb *self, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); -gboolean xdg_app_db_save_content_finish (XdgAppDb *self, - GAsyncResult *res, - GError **error); -void xdg_app_db_set_path (XdgAppDb *self, - const char *path); - - -XdgAppDbEntry *xdg_app_db_entry_ref (XdgAppDbEntry *entry); -void xdg_app_db_entry_unref (XdgAppDbEntry *entry); -GVariant * xdg_app_db_entry_get_data (XdgAppDbEntry *entry); -const char ** xdg_app_db_entry_list_apps (XdgAppDbEntry *entry); -const char ** xdg_app_db_entry_list_permissions (XdgAppDbEntry *entry, - const char *app); -gboolean xdg_app_db_entry_has_permission (XdgAppDbEntry *entry, - const char *app, - const char *permission); -gboolean xdg_app_db_entry_has_permissions (XdgAppDbEntry *entry, - const char *app, - const char **permissions); -GString * xdg_app_db_entry_print_string (XdgAppDbEntry *entry, - GString *string); - -XdgAppDbEntry *xdg_app_db_entry_new (GVariant *data); -XdgAppDbEntry *xdg_app_db_entry_modify_data (XdgAppDbEntry *entry, - GVariant *data); -XdgAppDbEntry *xdg_app_db_entry_set_app_permissions (XdgAppDbEntry *entry, - const char *app, - const char **permissions); - -G_DEFINE_AUTOPTR_CLEANUP_FUNC(XdgAppDb, g_object_unref) -G_DEFINE_AUTOPTR_CLEANUP_FUNC(XdgAppDbEntry, xdg_app_db_entry_unref) +XdgAppDb * xdg_app_db_new (const char *path, + gboolean fail_if_not_found, + GError **error); +char ** xdg_app_db_list_ids (XdgAppDb *self); +char ** xdg_app_db_list_apps (XdgAppDb *self); +char ** xdg_app_db_list_ids_by_app (XdgAppDb *self, + const char *app); +char ** xdg_app_db_list_ids_by_value (XdgAppDb *self, + GVariant *data); +XdgAppDbEntry *xdg_app_db_lookup (XdgAppDb *self, + const char *id); +GString * xdg_app_db_print_string (XdgAppDb *self, + GString *string); +char * xdg_app_db_print (XdgAppDb *self); + +gboolean xdg_app_db_is_dirty (XdgAppDb *self); +void xdg_app_db_set_entry (XdgAppDb *self, + const char *id, + XdgAppDbEntry *entry); +void xdg_app_db_update (XdgAppDb *self); +GBytes * xdg_app_db_get_content (XdgAppDb *self); +const char * xdg_app_db_get_path (XdgAppDb *self); +gboolean xdg_app_db_save_content (XdgAppDb *self, + GError **error); +void xdg_app_db_save_content_async (XdgAppDb *self, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean xdg_app_db_save_content_finish (XdgAppDb *self, + GAsyncResult *res, + GError **error); +void xdg_app_db_set_path (XdgAppDb *self, + const char *path); + + +XdgAppDbEntry *xdg_app_db_entry_ref (XdgAppDbEntry *entry); +void xdg_app_db_entry_unref (XdgAppDbEntry *entry); +GVariant * xdg_app_db_entry_get_data (XdgAppDbEntry *entry); +const char ** xdg_app_db_entry_list_apps (XdgAppDbEntry *entry); +const char ** xdg_app_db_entry_list_permissions (XdgAppDbEntry *entry, + const char *app); +gboolean xdg_app_db_entry_has_permission (XdgAppDbEntry *entry, + const char *app, + const char *permission); +gboolean xdg_app_db_entry_has_permissions (XdgAppDbEntry *entry, + const char *app, + const char **permissions); +GString * xdg_app_db_entry_print_string (XdgAppDbEntry *entry, + GString *string); + +XdgAppDbEntry *xdg_app_db_entry_new (GVariant *data); +XdgAppDbEntry *xdg_app_db_entry_modify_data (XdgAppDbEntry *entry, + GVariant *data); +XdgAppDbEntry *xdg_app_db_entry_set_app_permissions (XdgAppDbEntry *entry, + const char *app, + const char **permissions); + +G_DEFINE_AUTOPTR_CLEANUP_FUNC (XdgAppDb, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (XdgAppDbEntry, xdg_app_db_entry_unref) G_END_DECLS #endif /* XDG_APP_DB_H */ - diff --git a/common/xdg-app-dir.c b/common/xdg-app-dir.c index 1cc74b1..563366b 100644 --- a/common/xdg-app-dir.c +++ b/common/xdg-app-dir.c @@ -37,41 +37,45 @@ #include "errno.h" -#define NO_SYSTEM_HELPER ((XdgAppSystemHelper *)(gpointer)1) +#define NO_SYSTEM_HELPER ((XdgAppSystemHelper *) (gpointer) 1) -struct XdgAppDir { - GObject parent; +struct XdgAppDir +{ + GObject parent; - gboolean user; - GFile *basedir; - OstreeRepo *repo; + gboolean user; + GFile *basedir; + OstreeRepo *repo; XdgAppSystemHelper *system_helper; - SoupSession *soup_session; + SoupSession *soup_session; }; -typedef struct { +typedef struct +{ GObjectClass parent_class; } XdgAppDirClass; -struct XdgAppDeploy { - GObject parent; +struct XdgAppDeploy +{ + GObject parent; - GFile *dir; - GKeyFile *metadata; + GFile *dir; + GKeyFile *metadata; XdgAppContext *system_overrides; XdgAppContext *user_overrides; }; -typedef struct { +typedef struct +{ GObjectClass parent_class; } XdgAppDeployClass; G_DEFINE_TYPE (XdgAppDir, xdg_app_dir, G_TYPE_OBJECT) G_DEFINE_TYPE (XdgAppDeploy, xdg_app_deploy, G_TYPE_OBJECT) -G_DEFINE_QUARK (xdg-app-dir-error-quark, xdg_app_dir_error) +G_DEFINE_QUARK (xdg - app - dir - error - quark, xdg_app_dir_error) enum { PROP_0, @@ -164,6 +168,7 @@ GFile * xdg_app_get_user_base_dir_location (void) { g_autofree char *base = g_build_filename (g_get_user_data_dir (), "xdg-app", NULL); + return g_file_new_for_path (base); } @@ -260,10 +265,10 @@ xdg_app_dir_finalize (GObject *object) } static void -xdg_app_dir_set_property(GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) +xdg_app_dir_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) { XdgAppDir *self = XDG_APP_DIR (object); @@ -273,9 +278,11 @@ xdg_app_dir_set_property(GObject *object, /* Canonicalize */ self->basedir = g_file_new_for_path (gs_file_get_path_cached (g_value_get_object (value))); break; + case PROP_USER: self->user = g_value_get_boolean (value); break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -283,10 +290,10 @@ xdg_app_dir_set_property(GObject *object, } static void -xdg_app_dir_get_property(GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) +xdg_app_dir_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) { XdgAppDir *self = XDG_APP_DIR (object); @@ -295,9 +302,11 @@ xdg_app_dir_get_property(GObject *object, case PROP_PATH: g_value_set_object (value, self->basedir); break; + case PROP_USER: g_value_set_boolean (value, self->user); break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -353,10 +362,10 @@ xdg_app_dir_get_changed_path (XdgAppDir *self) } char * -xdg_app_dir_load_override (XdgAppDir *self, +xdg_app_dir_load_override (XdgAppDir *self, const char *app_id, - gsize *length, - GError **error) + gsize *length, + GError **error) { g_autoptr(GFile) override_dir = NULL; g_autoptr(GFile) file = NULL; @@ -366,7 +375,7 @@ xdg_app_dir_load_override (XdgAppDir *self, file = g_file_get_child (override_dir, app_id); if (!g_file_load_contents (file, NULL, - &metadata_contents, length, NULL, NULL)) + &metadata_contents, length, NULL, NULL)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND, "No overrides found for %s", app_id); @@ -381,6 +390,7 @@ xdg_app_load_override_keyfile (const char *app_id, gboolean user, GError **error { g_autofree char *metadata_contents = NULL; gsize metadata_size; + g_autoptr(GKeyFile) metakey = g_key_file_new (); g_autoptr(XdgAppDir) dir = NULL; @@ -403,6 +413,7 @@ XdgAppContext * xdg_app_load_override_file (const char *app_id, gboolean user, GError **error) { XdgAppContext *overrides = xdg_app_context_new (); + g_autoptr(GKeyFile) metakey = NULL; g_autoptr(GError) my_error = NULL; @@ -425,10 +436,10 @@ xdg_app_load_override_file (const char *app_id, gboolean user, GError **error) } gboolean -xdg_app_save_override_keyfile (GKeyFile *metakey, - const char *app_id, - gboolean user, - GError **error) +xdg_app_save_override_keyfile (GKeyFile *metakey, + const char *app_id, + gboolean user, + GError **error) { g_autoptr(GFile) base_dir = NULL; g_autoptr(GFile) override_dir = NULL; @@ -446,7 +457,7 @@ xdg_app_save_override_keyfile (GKeyFile *metakey, filename = g_file_get_path (file); parent = g_path_get_dirname (filename); - if (g_mkdir_with_parents (parent, 0755)) + if (g_mkdir_with_parents (parent, 0755)) { glnx_set_error_from_errno (error); return FALSE; @@ -511,20 +522,20 @@ xdg_app_dir_load_deployed (XdgAppDir *self, } GFile * -xdg_app_dir_get_deploy_dir (XdgAppDir *self, - const char *ref) +xdg_app_dir_get_deploy_dir (XdgAppDir *self, + const char *ref) { return g_file_resolve_relative_path (self->basedir, ref); } GFile * -xdg_app_dir_get_exports_dir (XdgAppDir *self) +xdg_app_dir_get_exports_dir (XdgAppDir *self) { return g_file_get_child (self->basedir, "exports"); } GFile * -xdg_app_dir_get_removed_dir (XdgAppDir *self) +xdg_app_dir_get_removed_dir (XdgAppDir *self) { return g_file_get_child (self->basedir, ".removed"); } @@ -544,10 +555,10 @@ xdg_app_dir_get_repo (XdgAppDir *self) * to do the right thing. */ gboolean -xdg_app_dir_lock (XdgAppDir *self, - GLnxLockFile *lockfile, - GCancellable *cancellable, - GError **error) +xdg_app_dir_lock (XdgAppDir *self, + GLnxLockFile *lockfile, + GCancellable *cancellable, + GError **error) { g_autoptr(GFile) lock_file = g_file_get_child (xdg_app_dir_get_path (self), "lock"); g_autofree char *lock_path = g_file_get_path (lock_file); @@ -559,6 +570,7 @@ const char * xdg_app_deploy_data_get_origin (GVariant *deploy_data) { const char *origin; + g_variant_get_child (deploy_data, 0, "&s", &origin); return origin; } @@ -567,6 +579,7 @@ const char * xdg_app_deploy_data_get_commit (GVariant *deploy_data) { const char *commit; + g_variant_get_child (deploy_data, 1, "&s", &commit); return commit; } @@ -580,6 +593,7 @@ const char ** xdg_app_deploy_data_get_subpaths (GVariant *deploy_data) { const char **subpaths; + g_variant_get_child (deploy_data, 2, "^as", &subpaths); return subpaths; } @@ -588,6 +602,7 @@ guint64 xdg_app_deploy_data_get_installed_size (GVariant *deploy_data) { guint64 size; + g_variant_get_child (deploy_data, 3, "t", &size); return GUINT64_FROM_BE (size); } @@ -595,9 +610,9 @@ xdg_app_deploy_data_get_installed_size (GVariant *deploy_data) static GVariant * xdg_app_dir_new_deploy_data (const char *origin, const char *commit, - char **subpaths, - guint64 installed_size, - GVariant *metadata) + char **subpaths, + guint64 installed_size, + GVariant *metadata) { char *empty_subpaths[] = {NULL}; GVariantBuilder builder; @@ -617,9 +632,9 @@ xdg_app_dir_new_deploy_data (const char *origin, } static char ** -get_old_subpaths (GFile *deploy_base, - GCancellable *cancellable, - GError **error) +get_old_subpaths (GFile *deploy_base, + GCancellable *cancellable, + GError **error) { g_autoptr(GFile) file = NULL; g_autofree char *data = NULL; @@ -632,7 +647,9 @@ get_old_subpaths (GFile *deploy_base, if (!g_file_load_contents (file, cancellable, &data, NULL, NULL, &my_error)) { if (g_error_matches (my_error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) - data = g_strdup (""); + { + data = g_strdup (""); + } else { g_propagate_error (error, g_steal_pointer (&my_error)); @@ -651,14 +668,14 @@ get_old_subpaths (GFile *deploy_base, } g_ptr_array_add (subpaths, NULL); - return (char **)g_ptr_array_free (subpaths, FALSE); + return (char **) g_ptr_array_free (subpaths, FALSE); } static GVariant * -xdg_app_create_deploy_data_from_old (XdgAppDir *self, - GFile *deploy_dir, +xdg_app_create_deploy_data_from_old (XdgAppDir *self, + GFile *deploy_dir, GCancellable *cancellable, - GError **error) + GError **error) { g_autoptr(GFile) deploy_base = NULL; g_autofree char *old_origin = NULL; @@ -687,10 +704,10 @@ xdg_app_create_deploy_data_from_old (XdgAppDir *self, } GVariant * -xdg_app_dir_get_deploy_data (XdgAppDir *self, - const char *ref, - GCancellable *cancellable, - GError **error) +xdg_app_dir_get_deploy_data (XdgAppDir *self, + const char *ref, + GCancellable *cancellable, + GError **error) { g_autoptr(GFile) deploy_dir = NULL; g_autoptr(GFile) data_file = NULL; @@ -726,10 +743,10 @@ xdg_app_dir_get_deploy_data (XdgAppDir *self, char * -xdg_app_dir_get_origin (XdgAppDir *self, - const char *ref, - GCancellable *cancellable, - GError **error) +xdg_app_dir_get_origin (XdgAppDir *self, + const char *ref, + GCancellable *cancellable, + GError **error) { g_autoptr(GVariant) deploy_data = NULL; @@ -745,10 +762,10 @@ xdg_app_dir_get_origin (XdgAppDir *self, } char ** -xdg_app_dir_get_subpaths (XdgAppDir *self, - const char *ref, - GCancellable *cancellable, - GError **error) +xdg_app_dir_get_subpaths (XdgAppDir *self, + const char *ref, + GCancellable *cancellable, + GError **error) { g_autoptr(GVariant) deploy_data = NULL; char **subpaths; @@ -762,7 +779,7 @@ xdg_app_dir_get_subpaths (XdgAppDir *self, return NULL; } - subpaths = (char **)xdg_app_deploy_data_get_subpaths (deploy_data); + subpaths = (char **) xdg_app_deploy_data_get_subpaths (deploy_data); for (i = 0; subpaths[i] != NULL; i++) subpaths[i] = g_strdup (subpaths[i]); @@ -770,19 +787,20 @@ xdg_app_dir_get_subpaths (XdgAppDir *self, } gboolean -xdg_app_dir_ensure_path (XdgAppDir *self, - GCancellable *cancellable, - GError **error) +xdg_app_dir_ensure_path (XdgAppDir *self, + GCancellable *cancellable, + GError **error) { return gs_file_ensure_directory (self->basedir, TRUE, cancellable, error); } gboolean -xdg_app_dir_ensure_repo (XdgAppDir *self, +xdg_app_dir_ensure_repo (XdgAppDir *self, GCancellable *cancellable, - GError **error) + GError **error) { gboolean ret = FALSE; + g_autoptr(GFile) repodir = NULL; g_autoptr(OstreeRepo) repo = NULL; @@ -793,7 +811,9 @@ xdg_app_dir_ensure_repo (XdgAppDir *self, repodir = g_file_get_child (self->basedir, "repo"); if (self->user) - repo = ostree_repo_new (repodir); + { + repo = ostree_repo_new (repodir); + } else { g_autoptr(GFile) cache_dir = NULL; @@ -841,13 +861,13 @@ xdg_app_dir_ensure_repo (XdgAppDir *self, } ret = TRUE; - out: +out: return ret; } gboolean xdg_app_dir_mark_changed (XdgAppDir *self, - GError **error) + GError **error) { g_autoptr(GFile) changed_file = NULL; @@ -860,10 +880,10 @@ xdg_app_dir_mark_changed (XdgAppDir *self, } gboolean -xdg_app_dir_remove_appstream (XdgAppDir *self, - const char *remote, - GCancellable *cancellable, - GError **error) +xdg_app_dir_remove_appstream (XdgAppDir *self, + const char *remote, + GCancellable *cancellable, + GError **error) { g_autoptr(GFile) appstream_dir = NULL; g_autoptr(GFile) remote_dir = NULL; @@ -882,12 +902,13 @@ xdg_app_dir_remove_appstream (XdgAppDir *self, } gboolean -xdg_app_dir_remove_all_refs (XdgAppDir *self, - const char *remote, - GCancellable *cancellable, - GError **error) +xdg_app_dir_remove_all_refs (XdgAppDir *self, + const char *remote, + GCancellable *cancellable, + GError **error) { g_autofree char *prefix = NULL; + g_autoptr(GHashTable) refs = NULL; GHashTableIter hash_iter; gpointer key; @@ -917,18 +938,19 @@ xdg_app_dir_remove_all_refs (XdgAppDir *self, } gboolean -xdg_app_dir_update_appstream (XdgAppDir *self, - const char *remote, - const char *arch, - gboolean *out_changed, +xdg_app_dir_update_appstream (XdgAppDir *self, + const char *remote, + const char *arch, + gboolean *out_changed, OstreeAsyncProgress *progress, - GCancellable *cancellable, - GError **error) + GCancellable *cancellable, + GError **error) { g_autofree char *branch = NULL; g_autofree char *remote_and_branch = NULL; g_autofree char *old_checksum = NULL; g_autofree char *new_checksum = NULL; + g_autoptr(GFile) root = NULL; g_autoptr(GFile) appstream_dir = NULL; g_autoptr(GFile) remote_dir = NULL; @@ -1054,16 +1076,17 @@ xdg_app_dir_update_appstream (XdgAppDir *self, /* This is a copy of ostree_repo_pull_one_dir that always disables static deltas if subdir is used */ static gboolean -repo_pull_one_dir (OstreeRepo *self, - const char *remote_name, - const char *dir_to_pull, - char **refs_to_fetch, - OstreeRepoPullFlags flags, - OstreeAsyncProgress *progress, - GCancellable *cancellable, - GError **error) +repo_pull_one_dir (OstreeRepo *self, + const char *remote_name, + const char *dir_to_pull, + char **refs_to_fetch, + OstreeRepoPullFlags flags, + OstreeAsyncProgress *progress, + GCancellable *cancellable, + GError **error) { GVariantBuilder builder; + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (dir_to_pull) @@ -1078,7 +1101,7 @@ repo_pull_one_dir (OstreeRepo *self, g_variant_new_variant (g_variant_new_int32 (flags))); if (refs_to_fetch) g_variant_builder_add (&builder, "{s@v}", "refs", - g_variant_new_variant (g_variant_new_strv ((const char *const*) refs_to_fetch, -1))); + g_variant_new_variant (g_variant_new_strv ((const char * const *) refs_to_fetch, -1))); return ostree_repo_pull_with_options (self, remote_name, g_variant_builder_end (&builder), progress, cancellable, error); @@ -1086,18 +1109,19 @@ repo_pull_one_dir (OstreeRepo *self, gboolean -xdg_app_dir_pull (XdgAppDir *self, - const char *repository, - const char *ref, - char **subpaths, - OstreeRepo *repo, - OstreeRepoPullFlags flags, +xdg_app_dir_pull (XdgAppDir *self, + const char *repository, + const char *ref, + char **subpaths, + OstreeRepo *repo, + OstreeRepoPullFlags flags, OstreeAsyncProgress *progress, - GCancellable *cancellable, - GError **error) + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; GSConsole *console = NULL; + g_autoptr(OstreeAsyncProgress) console_progress = NULL; const char *refs[2]; g_autofree char *url = NULL; @@ -1135,7 +1159,7 @@ xdg_app_dir_pull (XdgAppDir *self, if (subpaths == NULL || subpaths[0] == NULL) { if (!ostree_repo_pull (repo, repository, - (char **)refs, flags, + (char **) refs, flags, progress, cancellable, error)) { @@ -1149,7 +1173,7 @@ xdg_app_dir_pull (XdgAppDir *self, if (!repo_pull_one_dir (repo, repository, "/metadata", - (char **)refs, flags, + (char **) refs, flags, progress, cancellable, error)) { @@ -1163,7 +1187,7 @@ xdg_app_dir_pull (XdgAppDir *self, g_autofree char *subpath = g_build_filename ("/files", subpaths[i], NULL); if (!repo_pull_one_dir (repo, repository, subpath, - (char **)refs, flags, + (char **) refs, flags, progress, cancellable, error)) { @@ -1176,7 +1200,7 @@ xdg_app_dir_pull (XdgAppDir *self, ret = TRUE; - out: +out: if (console) { ostree_async_progress_finish (progress); @@ -1187,18 +1211,19 @@ xdg_app_dir_pull (XdgAppDir *self, } static gboolean -repo_pull_one_untrusted (OstreeRepo *self, - const char *remote_name, - const char *url, - const char *dir_to_pull, - const char *ref, - const char *checksum, - OstreeAsyncProgress *progress, - GCancellable *cancellable, - GError **error) +repo_pull_one_untrusted (OstreeRepo *self, + const char *remote_name, + const char *url, + const char *dir_to_pull, + const char *ref, + const char *checksum, + OstreeAsyncProgress *progress, + GCancellable *cancellable, + GError **error) { OstreeRepoPullFlags flags = OSTREE_REPO_PULL_FLAGS_UNTRUSTED; GVariantBuilder builder; + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); const char *refs[2] = { NULL, NULL }; const char *commits[2] = { NULL, NULL }; @@ -1209,9 +1234,9 @@ repo_pull_one_untrusted (OstreeRepo *self, g_variant_builder_add (&builder, "{s@v}", "flags", g_variant_new_variant (g_variant_new_int32 (flags))); g_variant_builder_add (&builder, "{s@v}", "refs", - g_variant_new_variant (g_variant_new_strv ((const char *const*) refs, -1))); + g_variant_new_variant (g_variant_new_strv ((const char * const *) refs, -1))); g_variant_builder_add (&builder, "{s@v}", "override-commit-ids", - g_variant_new_variant (g_variant_new_strv ((const char *const*) commits, -1))); + g_variant_new_variant (g_variant_new_strv ((const char * const *) commits, -1))); g_variant_builder_add (&builder, "{s@v}", "override-remote-name", g_variant_new_variant (g_variant_new_string (remote_name))); g_variant_builder_add (&builder, "{s@v}", "gpg-verify", @@ -1232,17 +1257,18 @@ repo_pull_one_untrusted (OstreeRepo *self, } gboolean -xdg_app_dir_pull_untrusted_local (XdgAppDir *self, - const char *src_path, - const char *remote_name, - const char *ref, - char **subpaths, +xdg_app_dir_pull_untrusted_local (XdgAppDir *self, + const char *src_path, + const char *remote_name, + const char *ref, + char **subpaths, OstreeAsyncProgress *progress, - GCancellable *cancellable, - GError **error) + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; GSConsole *console = NULL; + g_autoptr(OstreeAsyncProgress) console_progress = NULL; g_autoptr(GFile) path_file = g_file_new_for_path (src_path); g_autoptr(GFile) summary_file = g_file_get_child (path_file, "summary"); @@ -1311,7 +1337,7 @@ xdg_app_dir_pull_untrusted_local (XdgAppDir *self, return FALSE; } - (void)ostree_repo_load_commit (self->repo, checksum, &old_commit, NULL, NULL); + (void) ostree_repo_load_commit (self->repo, checksum, &old_commit, NULL, NULL); if (old_commit) { @@ -1347,7 +1373,7 @@ xdg_app_dir_pull_untrusted_local (XdgAppDir *self, if (subpaths == NULL || subpaths[0] == NULL) { - if (!repo_pull_one_untrusted (self->repo, remote_name,url, + if (!repo_pull_one_untrusted (self->repo, remote_name, url, NULL, ref, checksum, progress, cancellable, error)) { @@ -1359,7 +1385,7 @@ xdg_app_dir_pull_untrusted_local (XdgAppDir *self, { int i; - if (!repo_pull_one_untrusted (self->repo, remote_name,url, + if (!repo_pull_one_untrusted (self->repo, remote_name, url, "/metadata", ref, checksum, progress, cancellable, error)) { @@ -1371,7 +1397,7 @@ xdg_app_dir_pull_untrusted_local (XdgAppDir *self, for (i = 0; subpaths[i] != NULL; i++) { g_autofree char *subpath = g_build_filename ("/files", subpaths[i], NULL); - if (!repo_pull_one_untrusted (self->repo, remote_name,url, + if (!repo_pull_one_untrusted (self->repo, remote_name, url, subpath, ref, checksum, progress, cancellable, error)) { @@ -1384,7 +1410,7 @@ xdg_app_dir_pull_untrusted_local (XdgAppDir *self, ret = TRUE; - out: +out: if (console) { ostree_async_progress_finish (progress); @@ -1396,8 +1422,8 @@ xdg_app_dir_pull_untrusted_local (XdgAppDir *self, char * -xdg_app_dir_current_ref (XdgAppDir *self, - const char *name, +xdg_app_dir_current_ref (XdgAppDir *self, + const char *name, GCancellable *cancellable) { g_autoptr(GFile) base = NULL; @@ -1420,10 +1446,10 @@ xdg_app_dir_current_ref (XdgAppDir *self, } gboolean -xdg_app_dir_drop_current_ref (XdgAppDir *self, - const char *name, +xdg_app_dir_drop_current_ref (XdgAppDir *self, + const char *name, GCancellable *cancellable, - GError **error) + GError **error) { g_autoptr(GFile) base = NULL; g_autoptr(GFile) dir = NULL; @@ -1438,10 +1464,10 @@ xdg_app_dir_drop_current_ref (XdgAppDir *self, } gboolean -xdg_app_dir_make_current_ref (XdgAppDir *self, - const char *ref, +xdg_app_dir_make_current_ref (XdgAppDir *self, + const char *ref, GCancellable *cancellable, - GError **error) + GError **error) { g_autoptr(GFile) base = NULL; g_autoptr(GFile) dir = NULL; @@ -1471,19 +1497,20 @@ xdg_app_dir_make_current_ref (XdgAppDir *self, ret = TRUE; - out: +out: return ret; } gboolean -xdg_app_dir_list_refs_for_name (XdgAppDir *self, - const char *kind, - const char *name, - char ***refs_out, - GCancellable *cancellable, - GError **error) +xdg_app_dir_list_refs_for_name (XdgAppDir *self, + const char *kind, + const char *name, + char ***refs_out, + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; + g_autoptr(GFile) base = NULL; g_autoptr(GFile) dir = NULL; g_autoptr(GFileEnumerator) dir_enum = NULL; @@ -1564,7 +1591,7 @@ out: if (ret) { g_ptr_array_add (refs, NULL); - *refs_out = (char **)g_ptr_array_free (refs, FALSE); + *refs_out = (char **) g_ptr_array_free (refs, FALSE); refs = NULL; } @@ -1575,13 +1602,14 @@ out: } gboolean -xdg_app_dir_list_refs (XdgAppDir *self, - const char *kind, - char ***refs_out, - GCancellable *cancellable, - GError **error) +xdg_app_dir_list_refs (XdgAppDir *self, + const char *kind, + char ***refs_out, + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; + g_autoptr(GFile) base; g_autoptr(GFileEnumerator) dir_enum = NULL; g_autoptr(GFileInfo) child_info = NULL; @@ -1639,7 +1667,7 @@ out: if (ret) { g_ptr_array_add (refs, NULL); - *refs_out = (char **)g_ptr_array_free (refs, FALSE); + *refs_out = (char **) g_ptr_array_free (refs, FALSE); refs = NULL; } @@ -1650,11 +1678,11 @@ out: } char * -xdg_app_dir_read_latest (XdgAppDir *self, - const char *remote, - const char *ref, - GCancellable *cancellable, - GError **error) +xdg_app_dir_read_latest (XdgAppDir *self, + const char *remote, + const char *ref, + GCancellable *cancellable, + GError **error) { g_autofree char *remote_and_ref = NULL; char *res = NULL; @@ -1676,8 +1704,8 @@ xdg_app_dir_read_latest (XdgAppDir *self, char * -xdg_app_dir_read_active (XdgAppDir *self, - const char *ref, +xdg_app_dir_read_active (XdgAppDir *self, + const char *ref, GCancellable *cancellable) { g_autoptr(GFile) deploy_base = NULL; @@ -1697,18 +1725,19 @@ xdg_app_dir_read_active (XdgAppDir *self, } gboolean -xdg_app_dir_set_active (XdgAppDir *self, - const char *ref, - const char *checksum, +xdg_app_dir_set_active (XdgAppDir *self, + const char *ref, + const char *checksum, GCancellable *cancellable, - GError **error) + GError **error) { gboolean ret = FALSE; + g_autoptr(GFile) deploy_base = NULL; g_autofree char *tmpname = NULL; g_autoptr(GFile) active_tmp_link = NULL; g_autoptr(GFile) active_link = NULL; - g_autoptr (GError) my_error = NULL; + g_autoptr(GError) my_error = NULL; deploy_base = xdg_app_dir_get_deploy_dir (self, ref); active_link = g_file_get_child (deploy_base, "active"); @@ -1737,17 +1766,18 @@ xdg_app_dir_set_active (XdgAppDir *self, } ret = TRUE; - out: +out: return ret; } gboolean -xdg_app_dir_run_triggers (XdgAppDir *self, - GCancellable *cancellable, - GError **error) +xdg_app_dir_run_triggers (XdgAppDir *self, + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; + g_autoptr(GFileEnumerator) dir_enum = NULL; g_autoptr(GFileInfo) child_info = NULL; g_autoptr(GFile) triggersdir = NULL; @@ -1778,48 +1808,48 @@ xdg_app_dir_run_triggers (XdgAppDir *self, child = g_file_get_child (triggersdir, name); if (g_file_info_get_file_type (child_info) == G_FILE_TYPE_REGULAR && - g_str_has_suffix (name, ".trigger")) - { - g_autoptr(GPtrArray) argv_array = NULL; + g_str_has_suffix (name, ".trigger")) + { + g_autoptr(GPtrArray) argv_array = NULL; - g_debug ("running trigger %s", name); + g_debug ("running trigger %s", name); - argv_array = g_ptr_array_new_with_free_func (g_free); + argv_array = g_ptr_array_new_with_free_func (g_free); #ifdef DISABLE_SANDBOXED_TRIGGERS - g_ptr_array_add (argv_array, g_file_get_path (child)); - g_ptr_array_add (argv_array, g_file_get_path (self->basedir)); + g_ptr_array_add (argv_array, g_file_get_path (child)); + g_ptr_array_add (argv_array, g_file_get_path (self->basedir)); #else - g_ptr_array_add (argv_array, g_strdup (xdg_app_get_bwrap ())); - g_ptr_array_add (argv_array, g_strdup ("--unshare-ipc")); - g_ptr_array_add (argv_array, g_strdup ("--unshare-net")); - g_ptr_array_add (argv_array, g_strdup ("--unshare-pid")); - g_ptr_array_add (argv_array, g_strdup ("--ro-bind")); - g_ptr_array_add (argv_array, g_strdup ("/")); - g_ptr_array_add (argv_array, g_strdup ("/")); - g_ptr_array_add (argv_array, g_strdup ("--proc")); - g_ptr_array_add (argv_array, g_strdup ("/proc")); - g_ptr_array_add (argv_array, g_strdup ("--dev")); - g_ptr_array_add (argv_array, g_strdup ("/dev")); - g_ptr_array_add (argv_array, g_strdup ("--bind")); - g_ptr_array_add (argv_array, g_file_get_path (self->basedir)); - g_ptr_array_add (argv_array, g_file_get_path (self->basedir)); + g_ptr_array_add (argv_array, g_strdup (xdg_app_get_bwrap ())); + g_ptr_array_add (argv_array, g_strdup ("--unshare-ipc")); + g_ptr_array_add (argv_array, g_strdup ("--unshare-net")); + g_ptr_array_add (argv_array, g_strdup ("--unshare-pid")); + g_ptr_array_add (argv_array, g_strdup ("--ro-bind")); + g_ptr_array_add (argv_array, g_strdup ("/")); + g_ptr_array_add (argv_array, g_strdup ("/")); + g_ptr_array_add (argv_array, g_strdup ("--proc")); + g_ptr_array_add (argv_array, g_strdup ("/proc")); + g_ptr_array_add (argv_array, g_strdup ("--dev")); + g_ptr_array_add (argv_array, g_strdup ("/dev")); + g_ptr_array_add (argv_array, g_strdup ("--bind")); + g_ptr_array_add (argv_array, g_file_get_path (self->basedir)); + g_ptr_array_add (argv_array, g_file_get_path (self->basedir)); #endif - g_ptr_array_add (argv_array, g_file_get_path (child)); - g_ptr_array_add (argv_array, g_file_get_path (self->basedir)); - g_ptr_array_add (argv_array, NULL); - - if (!g_spawn_sync ("/", - (char **)argv_array->pdata, - NULL, - G_SPAWN_DEFAULT, - NULL, NULL, - NULL, NULL, - NULL, &trigger_error)) - { - g_warning ("Error running trigger %s: %s", name, trigger_error->message); - g_clear_error (&trigger_error); - } - } + g_ptr_array_add (argv_array, g_file_get_path (child)); + g_ptr_array_add (argv_array, g_file_get_path (self->basedir)); + g_ptr_array_add (argv_array, NULL); + + if (!g_spawn_sync ("/", + (char **) argv_array->pdata, + NULL, + G_SPAWN_DEFAULT, + NULL, NULL, + NULL, NULL, + NULL, &trigger_error)) + { + g_warning ("Error running trigger %s: %s", name, trigger_error->message); + g_clear_error (&trigger_error); + } + } g_clear_object (&child_info); } @@ -1831,16 +1861,16 @@ xdg_app_dir_run_triggers (XdgAppDir *self, } ret = TRUE; - out: +out: return ret; } static gboolean -read_fd (int fd, - struct stat *stat_buf, - gchar **contents, - gsize *length, - GError **error) +read_fd (int fd, + struct stat *stat_buf, + gchar **contents, + gsize *length, + GError **error) { gchar *buf; gsize bytes_read; @@ -1883,9 +1913,13 @@ read_fd (int fd, } } else if (rc == 0) - break; + { + break; + } else - bytes_read += rc; + { + bytes_read += rc; + } } buf[bytes_read] = '\0'; @@ -1925,20 +1959,21 @@ maybe_quote (const char *str) } static gboolean -export_desktop_file (const char *app, - const char *branch, - const char *arch, - GKeyFile *metadata, - int parent_fd, - const char *name, - struct stat *stat_buf, - char **target, - GCancellable *cancellable, - GError **error) +export_desktop_file (const char *app, + const char *branch, + const char *arch, + GKeyFile *metadata, + int parent_fd, + const char *name, + struct stat *stat_buf, + char **target, + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; glnx_fd_close int desktop_fd = -1; g_autofree char *tmpfile_name = NULL; + g_autoptr(GOutputStream) out_stream = NULL; g_autofree gchar *data = NULL; gsize data_len; @@ -1988,10 +2023,12 @@ export_desktop_file (const char *app, NULL); if (tags != NULL) - g_key_file_set_string_list (keyfile, - "Desktop Entry", - "X-XdgApp-Tags", - (const char * const *)tags, length); + { + g_key_file_set_string_list (keyfile, + "Desktop Entry", + "X-XdgApp-Tags", + (const char * const *) tags, length); + } } groups = g_key_file_get_groups (keyfile, NULL); @@ -2004,7 +2041,7 @@ export_desktop_file (const char *app, g_key_file_remove_key (keyfile, groups[i], "X-GNOME-Bugzilla-ExtraInfoScript", NULL); new_exec = g_string_new (""); - g_string_append_printf (new_exec, XDG_APP_BINDIR"/xdg-app run --branch=%s --arch=%s", escaped_branch, escaped_arch); + g_string_append_printf (new_exec, XDG_APP_BINDIR "/xdg-app run --branch=%s --arch=%s", escaped_branch, escaped_arch); old_exec = g_key_file_get_string (keyfile, groups[i], "Exec", NULL); if (old_exec && g_shell_parse_argv (old_exec, &old_argc, &old_argv, NULL) && old_argc >= 1) @@ -2050,7 +2087,7 @@ export_desktop_file (const char *app, *target = g_steal_pointer (&tmpfile_name); ret = TRUE; - out: +out: if (new_exec != NULL) g_string_free (new_exec, TRUE); @@ -2059,16 +2096,17 @@ export_desktop_file (const char *app, } static gboolean -rewrite_export_dir (const char *app, - const char *branch, - const char *arch, - GKeyFile *metadata, - int source_parent_fd, - const char *source_name, - GCancellable *cancellable, - GError **error) +rewrite_export_dir (const char *app, + const char *branch, + const char *arch, + GKeyFile *metadata, + int source_parent_fd, + const char *source_name, + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; + g_auto(GLnxDirFdIterator) source_iter = {0}; g_autoptr(GHashTable) visited_children = NULL; struct dirent *dent; @@ -2089,15 +2127,17 @@ rewrite_export_dir (const char *app, break; if (g_hash_table_contains (visited_children, dent->d_name)) - continue; + continue; /* Avoid processing the same file again if it was re-created during an export */ - g_hash_table_insert (visited_children, g_strdup (dent->d_name), GINT_TO_POINTER(1)); + g_hash_table_insert (visited_children, g_strdup (dent->d_name), GINT_TO_POINTER (1)); if (fstatat (source_iter.fd, dent->d_name, &stbuf, AT_SYMLINK_NOFOLLOW) == -1) { if (errno == ENOENT) - continue; + { + continue; + } else { glnx_set_error_from_errno (error); @@ -2133,7 +2173,7 @@ rewrite_export_dir (const char *app, source_iter.fd, dent->d_name, &stbuf, &new_name, cancellable, error)) goto out; - g_hash_table_insert (visited_children, g_strdup (new_name), GINT_TO_POINTER(1)); + g_hash_table_insert (visited_children, g_strdup (new_name), GINT_TO_POINTER (1)); if (renameat (source_iter.fd, new_name, source_iter.fd, dent->d_name) != 0) { @@ -2154,19 +2194,19 @@ rewrite_export_dir (const char *app, } ret = TRUE; - out: +out: return ret; } gboolean -xdg_app_rewrite_export_dir (const char *app, - const char *branch, - const char *arch, - GKeyFile *metadata, - GFile *source, - GCancellable *cancellable, - GError **error) +xdg_app_rewrite_export_dir (const char *app, + const char *branch, + const char *arch, + GKeyFile *metadata, + GFile *source, + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; @@ -2178,23 +2218,24 @@ xdg_app_rewrite_export_dir (const char *app, ret = TRUE; - out: +out: return ret; } static gboolean -export_dir (int source_parent_fd, - const char *source_name, - const char *source_symlink_prefix, - const char *source_relpath, - int destination_parent_fd, - const char *destination_name, - GCancellable *cancellable, - GError **error) +export_dir (int source_parent_fd, + const char *source_name, + const char *source_symlink_prefix, + const char *source_relpath, + int destination_parent_fd, + const char *destination_name, + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; int res; + g_auto(GLnxDirFdIterator) source_iter = {0}; glnx_fd_close int destination_dfd = -1; struct dirent *dent; @@ -2232,7 +2273,9 @@ export_dir (int source_parent_fd, if (fstatat (source_iter.fd, dent->d_name, &stbuf, AT_SYMLINK_NOFOLLOW) == -1) { if (errno == ENOENT) - continue; + { + continue; + } else { glnx_set_error_from_errno (error); @@ -2270,17 +2313,17 @@ export_dir (int source_parent_fd, } ret = TRUE; - out: +out: return ret; } gboolean -xdg_app_export_dir (GFile *source, - GFile *destination, - const char *symlink_prefix, - GCancellable *cancellable, - GError **error) +xdg_app_export_dir (GFile *source, + GFile *destination, + const char *symlink_prefix, + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; @@ -2295,17 +2338,18 @@ xdg_app_export_dir (GFile *source, ret = TRUE; - out: +out: return ret; } gboolean -xdg_app_dir_update_exports (XdgAppDir *self, - const char *changed_app, +xdg_app_dir_update_exports (XdgAppDir *self, + const char *changed_app, GCancellable *cancellable, - GError **error) + GError **error) { gboolean ret = FALSE; + g_autoptr(GFile) exports = NULL; g_autofree char *current_ref = NULL; g_autofree char *active_id = NULL; @@ -2347,21 +2391,22 @@ xdg_app_dir_update_exports (XdgAppDir *self, ret = TRUE; - out: +out: return ret; } gboolean -xdg_app_dir_deploy (XdgAppDir *self, - const char *origin, - const char *ref, - const char *checksum_or_latest, +xdg_app_dir_deploy (XdgAppDir *self, + const char *origin, + const char *ref, + const char *checksum_or_latest, const char * const * subpaths, - GVariant *old_deploy_data, - GCancellable *cancellable, - GError **error) + GVariant *old_deploy_data, + GCancellable *cancellable, + GError **error) { g_autofree char *resolved_ref = NULL; + g_autoptr(GFile) root = NULL; g_autoptr(GFileInfo) file_info = NULL; g_autoptr(GFile) deploy_base = NULL; @@ -2492,7 +2537,7 @@ xdg_app_dir_deploy (XdgAppDir *self, g_autofree char *subpath = g_build_filename ("/files", subpaths[i], NULL); g_autofree char *dstpath = g_build_filename (checkoutdirpath, "/files", subpaths[i], NULL); g_autofree char *dstpath_parent = g_path_get_dirname (dstpath); - if (g_mkdir_with_parents (dstpath_parent, 0755)) + if (g_mkdir_with_parents (dstpath_parent, 0755)) { glnx_set_error_from_errno (error); return FALSE; @@ -2523,7 +2568,7 @@ xdg_app_dir_deploy (XdgAppDir *self, char *etcfiles[] = {"passwd", "group", "machine-id" }; g_autoptr(GFile) etc_resolve_conf = g_file_get_child (files_etc, "resolv.conf"); int i; - for (i = 0; i < G_N_ELEMENTS(etcfiles); i++) + for (i = 0; i < G_N_ELEMENTS (etcfiles); i++) { g_autoptr(GFile) etc_file = g_file_get_child (files_etc, etcfiles[i]); GFileType type; @@ -2582,7 +2627,7 @@ xdg_app_dir_deploy (XdgAppDir *self, deploy_data = xdg_app_dir_new_deploy_data (origin, checksum, - (char **)subpaths, + (char **) subpaths, installed_size, NULL); @@ -2601,12 +2646,12 @@ xdg_app_dir_deploy (XdgAppDir *self, } gboolean -xdg_app_dir_deploy_install (XdgAppDir *self, - const char *ref, - const char *origin, - char **subpaths, - GCancellable *cancellable, - GError **error) +xdg_app_dir_deploy_install (XdgAppDir *self, + const char *ref, + const char *origin, + char **subpaths, + GCancellable *cancellable, + GError **error) { g_auto(GLnxLockFile) lock = GLNX_LOCK_FILE_INIT; g_autoptr(GFile) deploy_base = NULL; @@ -2623,12 +2668,16 @@ xdg_app_dir_deploy_install (XdgAppDir *self, if (!g_file_make_directory_with_parents (deploy_base, cancellable, &local_error)) { if (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_EXISTS)) - g_set_error (error, - G_IO_ERROR, G_IO_ERROR_EXISTS, - "%s branch %s already installed", - ref_parts[1], ref_parts[3]); + { + g_set_error (error, + G_IO_ERROR, G_IO_ERROR_EXISTS, + "%s branch %s already installed", + ref_parts[1], ref_parts[3]); + } else - g_propagate_error (error, g_steal_pointer (&local_error)); + { + g_propagate_error (error, g_steal_pointer (&local_error)); + } goto out; } @@ -2636,7 +2685,7 @@ xdg_app_dir_deploy_install (XdgAppDir *self, /* After we create the deploy base we must goto out on errors */ created_deploy_base = TRUE; - if (!xdg_app_dir_deploy (self, origin, ref, NULL, (const char * const *)subpaths, NULL, cancellable, error)) + if (!xdg_app_dir_deploy (self, origin, ref, NULL, (const char * const *) subpaths, NULL, cancellable, error)) goto out; if (g_str_has_prefix (ref, "app/")) @@ -2659,7 +2708,7 @@ xdg_app_dir_deploy_install (XdgAppDir *self, ret = TRUE; - out: +out: if (created_deploy_base && !ret) gs_shutil_rm_rf (deploy_base, cancellable, NULL); @@ -2668,13 +2717,14 @@ xdg_app_dir_deploy_install (XdgAppDir *self, gboolean -xdg_app_dir_deploy_update (XdgAppDir *self, - const char *ref, - const char *checksum_or_latest, - GCancellable *cancellable, - GError **error) +xdg_app_dir_deploy_update (XdgAppDir *self, + const char *ref, + const char *checksum_or_latest, + GCancellable *cancellable, + GError **error) { g_autofree char *previous_deployment = NULL; + g_autoptr(GError) my_error = NULL; g_autoptr(GVariant) old_deploy_data = NULL; g_auto(GLnxLockFile) lock = GLNX_LOCK_FILE_INIT; @@ -2738,9 +2788,9 @@ xdg_app_dir_deploy_update (XdgAppDir *self, } static OstreeRepo * -xdg_app_dir_create_system_child_repo (XdgAppDir *self, +xdg_app_dir_create_system_child_repo (XdgAppDir *self, GLnxLockFile *file_lock, - GError **error) + GError **error) { g_autoptr(GFile) cache_dir = NULL; g_autoptr(GFile) repo_dir = NULL; @@ -2803,15 +2853,15 @@ xdg_app_dir_create_system_child_repo (XdgAppDir *self, } gboolean -xdg_app_dir_install (XdgAppDir *self, - gboolean no_pull, - gboolean no_deploy, - const char *ref, - const char *remote_name, - char **subpaths, +xdg_app_dir_install (XdgAppDir *self, + gboolean no_pull, + gboolean no_deploy, + const char *ref, + const char *remote_name, + char **subpaths, OstreeAsyncProgress *progress, - GCancellable *cancellable, - GError **error) + GCancellable *cancellable, + GError **error) { if (xdg_app_dir_use_child_repo (self)) { @@ -2844,7 +2894,7 @@ xdg_app_dir_install (XdgAppDir *self, XDG_APP_HELPER_DEPLOY_FLAGS_NONE, ref, remote_name, - (const char *const *)(subpaths ? subpaths : empty_subpaths), + (const char * const *) (subpaths ? subpaths : empty_subpaths), cancellable, error)) return FALSE; @@ -2875,16 +2925,16 @@ xdg_app_dir_install (XdgAppDir *self, } gboolean -xdg_app_dir_update (XdgAppDir *self, - gboolean no_pull, - gboolean no_deploy, - const char *ref, - const char *remote_name, - const char *checksum_or_latest, - char **subpaths, +xdg_app_dir_update (XdgAppDir *self, + gboolean no_pull, + gboolean no_deploy, + const char *ref, + const char *remote_name, + const char *checksum_or_latest, + char **subpaths, OstreeAsyncProgress *progress, - GCancellable *cancellable, - GError **error) + GCancellable *cancellable, + GError **error) { if (xdg_app_dir_use_child_repo (self)) { @@ -2929,7 +2979,7 @@ xdg_app_dir_update (XdgAppDir *self, XDG_APP_HELPER_DEPLOY_FLAGS_UPDATE, ref, remote_name, - (const char *const *)empty_subpaths, + (const char * const *) empty_subpaths, cancellable, error)) return FALSE; @@ -2954,7 +3004,7 @@ xdg_app_dir_update (XdgAppDir *self, if (!no_deploy) { if (!xdg_app_dir_deploy_update (self, ref, checksum_or_latest, - cancellable, error)) + cancellable, error)) return FALSE; } @@ -2964,16 +3014,17 @@ xdg_app_dir_update (XdgAppDir *self, gboolean -xdg_app_dir_collect_deployed_refs (XdgAppDir *self, - const char *type, - const char *name_prefix, - const char *branch, - const char *arch, - GHashTable *hash, - GCancellable *cancellable, - GError **error) +xdg_app_dir_collect_deployed_refs (XdgAppDir *self, + const char *type, + const char *name_prefix, + const char *branch, + const char *arch, + GHashTable *hash, + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; + g_autoptr(GFile) dir = NULL; g_autoptr(GFileEnumerator) dir_enum = NULL; g_autoptr(GFileInfo) child_info = NULL; @@ -2996,15 +3047,15 @@ xdg_app_dir_collect_deployed_refs (XdgAppDir *self, if (g_file_info_get_file_type (child_info) == G_FILE_TYPE_DIRECTORY && name[0] != '.' && (name_prefix == NULL || g_str_has_prefix (name, name_prefix))) - { - g_autoptr(GFile) child1 = g_file_get_child (dir, name); - g_autoptr(GFile) child2 = g_file_get_child (child1, branch); - g_autoptr(GFile) child3 = g_file_get_child (child2, arch); - g_autoptr(GFile) active = g_file_get_child (child3, "active"); + { + g_autoptr(GFile) child1 = g_file_get_child (dir, name); + g_autoptr(GFile) child2 = g_file_get_child (child1, branch); + g_autoptr(GFile) child3 = g_file_get_child (child2, arch); + g_autoptr(GFile) active = g_file_get_child (child3, "active"); - if (g_file_query_exists (active, cancellable)) - g_hash_table_add (hash, g_strdup (name)); - } + if (g_file_query_exists (active, cancellable)) + g_hash_table_add (hash, g_strdup (name)); + } g_clear_object (&child_info); } @@ -3016,18 +3067,19 @@ xdg_app_dir_collect_deployed_refs (XdgAppDir *self, } ret = TRUE; - out: +out: return ret; } gboolean -xdg_app_dir_list_deployed (XdgAppDir *self, - const char *ref, - char ***deployed_checksums, +xdg_app_dir_list_deployed (XdgAppDir *self, + const char *ref, + char ***deployed_checksums, GCancellable *cancellable, - GError **error) + GError **error) { gboolean ret = FALSE; + g_autoptr(GFile) deploy_base = NULL; g_autoptr(GPtrArray) checksums = NULL; GError *temp_error = NULL; @@ -3078,11 +3130,11 @@ xdg_app_dir_list_deployed (XdgAppDir *self, ret = TRUE; - out: +out: if (ret) { g_ptr_array_add (checksums, NULL); - *deployed_checksums = (char **)g_ptr_array_free (g_steal_pointer (&checksums), FALSE); + *deployed_checksums = (char **) g_ptr_array_free (g_steal_pointer (&checksums), FALSE); } return ret; @@ -3094,6 +3146,7 @@ dir_is_locked (GFile *dir) { glnx_fd_close int ref_fd = -1; struct flock lock = {0}; + g_autoptr(GFile) reffile = NULL; reffile = g_file_resolve_relative_path (dir, "files/.ref"); @@ -3107,21 +3160,22 @@ dir_is_locked (GFile *dir) lock.l_len = 0; if (fcntl (ref_fd, F_GETLK, &lock) == 0) - return lock.l_type != F_UNLCK; + return lock.l_type != F_UNLCK; } return FALSE; } gboolean -xdg_app_dir_undeploy (XdgAppDir *self, - const char *ref, - const char *checksum, - gboolean force_remove, +xdg_app_dir_undeploy (XdgAppDir *self, + const char *ref, + const char *checksum, + gboolean force_remove, GCancellable *cancellable, - GError **error) + GError **error) { gboolean ret = FALSE; + g_autoptr(GFile) deploy_base = NULL; g_autoptr(GFile) checkoutdir = NULL; g_autoptr(GFile) removed_subdir = NULL; @@ -3199,17 +3253,17 @@ xdg_app_dir_undeploy (XdgAppDir *self, } ret = TRUE; - out: +out: return ret; } gboolean -xdg_app_dir_undeploy_all (XdgAppDir *self, - const char *ref, - gboolean force_remove, - gboolean *was_deployed_out, - GCancellable *cancellable, - GError **error) +xdg_app_dir_undeploy_all (XdgAppDir *self, + const char *ref, + gboolean force_remove, + gboolean *was_deployed_out, + GCancellable *cancellable, + GError **error) { g_auto(GStrv) deployed = NULL; g_autoptr(GFile) deploy_base = NULL; @@ -3270,11 +3324,11 @@ xdg_app_dir_undeploy_all (XdgAppDir *self, } gboolean -xdg_app_dir_remove_ref (XdgAppDir *self, - const char *remote_name, - const char *ref, - GCancellable *cancellable, - GError **error) +xdg_app_dir_remove_ref (XdgAppDir *self, + const char *remote_name, + const char *ref, + GCancellable *cancellable, + GError **error) { if (!ostree_repo_set_ref_immediate (self->repo, remote_name, ref, NULL, cancellable, error)) return FALSE; @@ -3283,11 +3337,12 @@ xdg_app_dir_remove_ref (XdgAppDir *self, } gboolean -xdg_app_dir_cleanup_removed (XdgAppDir *self, - GCancellable *cancellable, - GError **error) +xdg_app_dir_cleanup_removed (XdgAppDir *self, + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; + g_autoptr(GFile) removed_dir = NULL; g_autoptr(GFileEnumerator) dir_enum = NULL; g_autoptr(GFileInfo) child_info = NULL; @@ -3310,15 +3365,15 @@ xdg_app_dir_cleanup_removed (XdgAppDir *self, g_autoptr(GFile) child = g_file_get_child (removed_dir, name); if (g_file_info_get_file_type (child_info) == G_FILE_TYPE_DIRECTORY && - !dir_is_locked (child)) - { + !dir_is_locked (child)) + { GError *tmp_error = NULL; if (!gs_shutil_rm_rf (child, cancellable, &tmp_error)) { g_warning ("Unable to remove old checkout: %s\n", tmp_error->message); g_error_free (tmp_error); } - } + } g_clear_object (&child_info); } @@ -3330,15 +3385,15 @@ xdg_app_dir_cleanup_removed (XdgAppDir *self, } ret = TRUE; - out: +out: return ret; } gboolean -xdg_app_dir_prune (XdgAppDir *self, - GCancellable *cancellable, - GError **error) +xdg_app_dir_prune (XdgAppDir *self, + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; gint objects_total, objects_pruned; @@ -3361,16 +3416,16 @@ xdg_app_dir_prune (XdgAppDir *self, g_debug ("Pruned %d/%d objects, size %s", objects_total, objects_pruned, formatted_freed_size); ret = TRUE; - out: +out: return ret; } GFile * -xdg_app_dir_get_if_deployed (XdgAppDir *self, - const char *ref, - const char *checksum, - GCancellable *cancellable) +xdg_app_dir_get_if_deployed (XdgAppDir *self, + const char *ref, + const char *checksum, + GCancellable *cancellable) { g_autoptr(GFile) deploy_base = NULL; g_autoptr(GFile) deploy_dir = NULL; @@ -3378,7 +3433,9 @@ xdg_app_dir_get_if_deployed (XdgAppDir *self, deploy_base = xdg_app_dir_get_deploy_dir (self, ref); if (checksum != NULL) - deploy_dir = g_file_get_child (deploy_base, checksum); + { + deploy_dir = g_file_get_child (deploy_base, checksum); + } else { g_autoptr(GFile) active_link = g_file_get_child (deploy_base, "active"); @@ -3406,11 +3463,11 @@ xdg_app_dir_get_if_deployed (XdgAppDir *self, } static gboolean -xdg_app_dir_remote_fetch_summary (XdgAppDir *self, - const char *name, - GBytes **out_summary, - GCancellable *cancellable, - GError **error) +xdg_app_dir_remote_fetch_summary (XdgAppDir *self, + const char *name, + GBytes **out_summary, + GCancellable *cancellable, + GError **error) { /* TODO: Add in-memory cache here, also use for ostree_repo_list_refs */ if (!ostree_repo_remote_fetch_summary (self->repo, name, @@ -3423,21 +3480,22 @@ xdg_app_dir_remote_fetch_summary (XdgAppDir *self, } char * -xdg_app_dir_find_remote_ref (XdgAppDir *self, - const char *remote, - const char *name, - const char *opt_branch, - const char *opt_arch, - gboolean app, - gboolean runtime, - gboolean *is_app, - GCancellable *cancellable, - GError **error) +xdg_app_dir_find_remote_ref (XdgAppDir *self, + const char *remote, + const char *name, + const char *opt_branch, + const char *opt_arch, + gboolean app, + gboolean runtime, + gboolean *is_app, + GCancellable *cancellable, + GError **error) { g_autofree char *app_ref = NULL; g_autofree char *runtime_ref = NULL; g_autofree char *app_ref_with_remote = NULL; g_autofree char *runtime_ref_with_remote = NULL; + g_autoptr(GVariant) summary = NULL; g_autoptr(GVariant) refs = NULL; g_autoptr(GBytes) summary_bytes = NULL; @@ -3517,14 +3575,14 @@ xdg_app_dir_find_remote_ref (XdgAppDir *self, } char * -xdg_app_dir_find_installed_ref (XdgAppDir *self, - const char *name, - const char *opt_branch, - const char *opt_arch, - gboolean app, - gboolean runtime, - gboolean *is_app, - GError **error) +xdg_app_dir_find_installed_ref (XdgAppDir *self, + const char *name, + const char *opt_branch, + const char *opt_arch, + gboolean app, + gboolean runtime, + gboolean *is_app, + GError **error) { if (app) { @@ -3568,13 +3626,13 @@ xdg_app_dir_find_installed_ref (XdgAppDir *self, return NULL; } -XdgAppDir* +XdgAppDir * xdg_app_dir_new (GFile *path, gboolean user) { return g_object_new (XDG_APP_TYPE_DIR, "path", path, "user", user, NULL); } -XdgAppDir* +XdgAppDir * xdg_app_dir_clone (XdgAppDir *self) { return xdg_app_dir_new (self->basedir, self->user); @@ -3588,7 +3646,7 @@ xdg_app_dir_get_system (void) } XdgAppDir * -xdg_app_dir_get_user (void) +xdg_app_dir_get_user (void) { g_autoptr(GFile) path = xdg_app_get_user_base_dir_location (); return xdg_app_dir_new (path, TRUE); @@ -3610,7 +3668,7 @@ get_group (const char *remote_name) } char * -xdg_app_dir_get_remote_title (XdgAppDir *self, +xdg_app_dir_get_remote_title (XdgAppDir *self, const char *remote_name) { GKeyFile *config = ostree_repo_get_config (self->repo); @@ -3623,7 +3681,7 @@ xdg_app_dir_get_remote_title (XdgAppDir *self, } int -xdg_app_dir_get_remote_prio (XdgAppDir *self, +xdg_app_dir_get_remote_prio (XdgAppDir *self, const char *remote_name) { GKeyFile *config = ostree_repo_get_config (self->repo); @@ -3636,7 +3694,7 @@ xdg_app_dir_get_remote_prio (XdgAppDir *self, } gboolean -xdg_app_dir_get_remote_noenumerate (XdgAppDir *self, +xdg_app_dir_get_remote_noenumerate (XdgAppDir *self, const char *remote_name) { GKeyFile *config = ostree_repo_get_config (self->repo); @@ -3649,7 +3707,7 @@ xdg_app_dir_get_remote_noenumerate (XdgAppDir *self, } gboolean -xdg_app_dir_get_remote_disabled (XdgAppDir *self, +xdg_app_dir_get_remote_disabled (XdgAppDir *self, const char *remote_name) { GKeyFile *config = ostree_repo_get_config (self->repo); @@ -3662,13 +3720,13 @@ xdg_app_dir_get_remote_disabled (XdgAppDir *self, } gint -cmp_remote (gconstpointer a, - gconstpointer b, - gpointer user_data) +cmp_remote (gconstpointer a, + gconstpointer b, + gpointer user_data) { XdgAppDir *self = user_data; - const char *a_name = *(const char **)a; - const char *b_name = *(const char **)b; + const char *a_name = *(const char **) a; + const char *b_name = *(const char **) b; int prio_a, prio_b; prio_a = xdg_app_dir_get_remote_prio (self, a_name); @@ -3678,15 +3736,16 @@ cmp_remote (gconstpointer a, } char * -xdg_app_dir_create_origin_remote (XdgAppDir *self, - const char *url, - const char *id, - const char *title, - GBytes *gpg_data, +xdg_app_dir_create_origin_remote (XdgAppDir *self, + const char *url, + const char *id, + const char *title, + GBytes *gpg_data, GCancellable *cancellable, - GError **error) + GError **error) { g_autofree char *remote = NULL; + g_auto(GStrv) remotes = NULL; int version = 0; g_autoptr(GVariantBuilder) optbuilder = g_variant_builder_new (G_VARIANT_TYPE ("a{sv}")); @@ -3745,9 +3804,9 @@ xdg_app_dir_create_origin_remote (XdgAppDir *self, char ** -xdg_app_dir_list_remotes (XdgAppDir *self, +xdg_app_dir_list_remotes (XdgAppDir *self, GCancellable *cancellable, - GError **error) + GError **error) { char **res; @@ -3765,20 +3824,21 @@ xdg_app_dir_list_remotes (XdgAppDir *self, } static gboolean -remove_unless_in_hash (gpointer key, - gpointer value, - gpointer user_data) +remove_unless_in_hash (gpointer key, + gpointer value, + gpointer user_data) { GHashTable *table = user_data; + return !g_hash_table_contains (table, key); } gboolean -xdg_app_dir_list_remote_refs (XdgAppDir *self, - const char *remote, - GHashTable **refs, +xdg_app_dir_list_remote_refs (XdgAppDir *self, + const char *remote, + GHashTable **refs, GCancellable *cancellable, - GError **error) + GError **error) { g_autoptr(GError) my_error = NULL; @@ -3804,7 +3864,7 @@ xdg_app_dir_list_remote_refs (XdgAppDir *self, * available refs */ if (!ostree_repo_list_refs (self->repo, refspec_prefix, &local_refs, - cancellable, error)) + cancellable, error)) return FALSE; /* First we need to unprefix the remote name from the local refs */ @@ -3828,10 +3888,10 @@ xdg_app_dir_list_remote_refs (XdgAppDir *self, } char * -xdg_app_dir_fetch_remote_title (XdgAppDir *self, - const char *remote, +xdg_app_dir_fetch_remote_title (XdgAppDir *self, + const char *remote, GCancellable *cancellable, - GError **error) + GError **error) { g_autoptr(GError) my_error = NULL; g_autoptr(GBytes) summary_bytes = NULL; @@ -3904,19 +3964,20 @@ ensure_soup_session (XdgAppDir *self) } if (g_getenv ("OSTREE_DEBUG_HTTP")) - soup_session_add_feature (soup_session, (SoupSessionFeature*)soup_logger_new (SOUP_LOGGER_LOG_BODY, 500)); + soup_session_add_feature (soup_session, (SoupSessionFeature *) soup_logger_new (SOUP_LOGGER_LOG_BODY, 500)); g_once_init_leave (&self->soup_session, soup_session); } } static GBytes * -xdg_app_dir_load_uri (XdgAppDir *self, - const char *uri, +xdg_app_dir_load_uri (XdgAppDir *self, + const char *uri, GCancellable *cancellable, - GError **error) + GError **error) { g_autofree char *scheme = NULL; + g_autoptr(GBytes) bytes = NULL; scheme = g_uri_parse_scheme (uri); @@ -3955,6 +4016,7 @@ xdg_app_dir_load_uri (XdgAppDir *self, case 410: code = G_IO_ERROR_NOT_FOUND; break; + default: code = G_IO_ERROR_FAILED; } @@ -3981,17 +4043,18 @@ xdg_app_dir_load_uri (XdgAppDir *self, } GBytes * -xdg_app_dir_fetch_remote_object (XdgAppDir *self, - const char *remote_name, - const char *checksum, - const char *type, +xdg_app_dir_fetch_remote_object (XdgAppDir *self, + const char *remote_name, + const char *checksum, + const char *type, GCancellable *cancellable, - GError **error) + GError **error) { g_autofree char *base_url = NULL; g_autofree char *object_url = NULL; g_autofree char *part1 = NULL; g_autofree char *part2 = NULL; + g_autoptr(GBytes) bytes = NULL; if (!ostree_repo_remote_get_url (self->repo, remote_name, &base_url, error)) @@ -4066,30 +4129,28 @@ xdg_app_dir_fetch_ref_cache (XdgAppDir *self, { guint64 v; g_variant_get_child (res, 0, "t", &v); - *installed_size = GUINT64_FROM_BE(v); + *installed_size = GUINT64_FROM_BE (v); } if (download_size) { guint64 v; g_variant_get_child (res, 1, "t", &v); - *download_size = GUINT64_FROM_BE(v); + *download_size = GUINT64_FROM_BE (v); } if (metadata) - { - g_variant_get_child (res, 2, "s", metadata); - } + g_variant_get_child (res, 2, "s", metadata); return TRUE; } GBytes * -xdg_app_dir_fetch_metadata (XdgAppDir *self, - const char *remote_name, - const char *commit, +xdg_app_dir_fetch_metadata (XdgAppDir *self, + const char *remote_name, + const char *commit, GCancellable *cancellable, - GError **error) + GError **error) { g_autoptr(GBytes) commit_bytes = NULL; g_autoptr(GBytes) root_bytes = NULL; @@ -4161,8 +4222,8 @@ xdg_app_dir_fetch_metadata (XdgAppDir *self, } filez_bytes = xdg_app_dir_fetch_remote_object (self, remote_name, - file_checksum, "filez", - cancellable, error); + file_checksum, "filez", + cancellable, error); if (filez_bytes == NULL) return NULL; @@ -4174,7 +4235,7 @@ xdg_app_dir_fetch_metadata (XdgAppDir *self, return NULL; } - archive_header_size = GUINT32_FROM_BE (*(guint32 *)filez_data); + archive_header_size = GUINT32_FROM_BE (*(guint32 *) filez_data); archive_header_size += 4 + 4; /* Include header-size and padding */ @@ -4182,18 +4243,18 @@ xdg_app_dir_fetch_metadata (XdgAppDir *self, { g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "File header size %u exceeds file size", - (guint)archive_header_size); + (guint) archive_header_size); return NULL; } - dataz_stream = (GMemoryInputStream*)g_memory_input_stream_new_from_data (filez_data + archive_header_size, - g_bytes_get_size (filez_bytes) - archive_header_size, - NULL); + dataz_stream = (GMemoryInputStream *) g_memory_input_stream_new_from_data (filez_data + archive_header_size, + g_bytes_get_size (filez_bytes) - archive_header_size, + NULL); - zlib_decomp = (GConverter*)g_zlib_decompressor_new (G_ZLIB_COMPRESSOR_FORMAT_RAW); + zlib_decomp = (GConverter *) g_zlib_decompressor_new (G_ZLIB_COMPRESSOR_FORMAT_RAW); zlib_input = g_converter_input_stream_new (G_INPUT_STREAM (dataz_stream), zlib_decomp); - data_stream = (GMemoryOutputStream*)g_memory_output_stream_new (NULL, 0, g_realloc, g_free); + data_stream = (GMemoryOutputStream *) g_memory_output_stream_new (NULL, 0, g_realloc, g_free); if (g_output_stream_splice (G_OUTPUT_STREAM (data_stream), zlib_input, G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE | G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET, diff --git a/common/xdg-app-dir.h b/common/xdg-app-dir.h index ccca522..bb7c1b4 100644 --- a/common/xdg-app-dir.h +++ b/common/xdg-app-dir.h @@ -26,21 +26,21 @@ #include "libglnx/libglnx.h" #include <xdg-app-common-types.h> -#define XDG_APP_TYPE_DIR xdg_app_dir_get_type() +#define XDG_APP_TYPE_DIR xdg_app_dir_get_type () #define XDG_APP_DIR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), XDG_APP_TYPE_DIR, XdgAppDir)) #define XDG_APP_IS_DIR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), XDG_APP_TYPE_DIR)) -#define XDG_APP_TYPE_DEPLOY xdg_app_deploy_get_type() +#define XDG_APP_TYPE_DEPLOY xdg_app_deploy_get_type () #define XDG_APP_DEPLOY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), XDG_APP_TYPE_DEPLOY, XdgAppDeploy)) #define XDG_APP_IS_DEPLOY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), XDG_APP_TYPE_DEPLOY)) GType xdg_app_dir_get_type (void); GType xdg_app_deploy_get_type (void); -G_DEFINE_AUTOPTR_CLEANUP_FUNC(XdgAppDir, g_object_unref) -G_DEFINE_AUTOPTR_CLEANUP_FUNC(XdgAppDeploy, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (XdgAppDir, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (XdgAppDeploy, g_object_unref) -#define XDG_APP_DIR_ERROR xdg_app_dir_error_quark() +#define XDG_APP_DIR_ERROR xdg_app_dir_error_quark () typedef enum { XDG_APP_DIR_ERROR_ALREADY_DEPLOYED, @@ -50,12 +50,12 @@ typedef enum { typedef enum { XDG_APP_HELPER_DEPLOY_FLAGS_NONE = 0, - XDG_APP_HELPER_DEPLOY_FLAGS_UPDATE = 1<<0, + XDG_APP_HELPER_DEPLOY_FLAGS_UPDATE = 1 << 0, } XdgAppHelperDeployFlags; #define XDG_APP_HELPER_DEPLOY_FLAGS_ALL (XDG_APP_HELPER_DEPLOY_FLAGS_UPDATE) -GQuark xdg_app_dir_error_quark (void); +GQuark xdg_app_dir_error_quark (void); /** * XDG_APP_DEPLOY_DATA_GVARIANT_FORMAT: @@ -70,284 +70,284 @@ GQuark xdg_app_dir_error_quark (void); #define XDG_APP_DEPLOY_DATA_GVARIANT_FORMAT G_VARIANT_TYPE (XDG_APP_DEPLOY_DATA_GVARIANT_STRING) GFile * xdg_app_get_system_base_dir_location (void); -GFile * xdg_app_get_user_base_dir_location (void); +GFile * xdg_app_get_user_base_dir_location (void); -GKeyFile * xdg_app_load_override_keyfile (const char *app_id, - gboolean user, - GError **error); -XdgAppContext *xdg_app_load_override_file (const char *app_id, - gboolean user, - GError **error); -gboolean xdg_app_save_override_keyfile (GKeyFile *metakey, - const char *app_id, - gboolean user, - GError **error); +GKeyFile * xdg_app_load_override_keyfile (const char *app_id, + gboolean user, + GError **error); +XdgAppContext *xdg_app_load_override_file (const char *app_id, + gboolean user, + GError **error); +gboolean xdg_app_save_override_keyfile (GKeyFile *metakey, + const char *app_id, + gboolean user, + GError **error); -const char * xdg_app_deploy_data_get_origin (GVariant *deploy_data); -const char * xdg_app_deploy_data_get_commit (GVariant *deploy_data); -const char ** xdg_app_deploy_data_get_subpaths (GVariant *deploy_data); +const char * xdg_app_deploy_data_get_origin (GVariant *deploy_data); +const char * xdg_app_deploy_data_get_commit (GVariant *deploy_data); +const char ** xdg_app_deploy_data_get_subpaths (GVariant *deploy_data); guint64 xdg_app_deploy_data_get_installed_size (GVariant *deploy_data); -GFile * xdg_app_deploy_get_dir (XdgAppDeploy *deploy); -GFile * xdg_app_deploy_get_files (XdgAppDeploy *deploy); +GFile * xdg_app_deploy_get_dir (XdgAppDeploy *deploy); +GFile * xdg_app_deploy_get_files (XdgAppDeploy *deploy); XdgAppContext *xdg_app_deploy_get_overrides (XdgAppDeploy *deploy); -GKeyFile * xdg_app_deploy_get_metadata (XdgAppDeploy *deploy); +GKeyFile * xdg_app_deploy_get_metadata (XdgAppDeploy *deploy); -XdgAppDir* xdg_app_dir_new (GFile *basedir, - gboolean user); -XdgAppDir* xdg_app_dir_clone (XdgAppDir *self); -XdgAppDir *xdg_app_dir_get (gboolean user); -XdgAppDir *xdg_app_dir_get_system (void); -XdgAppDir *xdg_app_dir_get_user (void); -gboolean xdg_app_dir_is_user (XdgAppDir *self); -GFile * xdg_app_dir_get_path (XdgAppDir *self); -GFile * xdg_app_dir_get_changed_path (XdgAppDir *self); -GFile * xdg_app_dir_get_deploy_dir (XdgAppDir *self, - const char *ref); -GVariant * xdg_app_dir_get_deploy_data (XdgAppDir *dir, - const char *ref, - GCancellable *cancellable, - GError **error); -char * xdg_app_dir_get_origin (XdgAppDir *self, - const char *ref, - GCancellable *cancellable, - GError **error); -char ** xdg_app_dir_get_subpaths (XdgAppDir *self, - const char *ref, - GCancellable *cancellable, - GError **error); -GFile * xdg_app_dir_get_exports_dir (XdgAppDir *self); -GFile * xdg_app_dir_get_removed_dir (XdgAppDir *self); -GFile * xdg_app_dir_get_if_deployed (XdgAppDir *self, - const char *ref, - const char *checksum, - GCancellable *cancellable); -char * xdg_app_dir_find_remote_ref (XdgAppDir *self, - const char *remote, - const char *name, - const char *opt_branch, - const char *opt_arch, - gboolean app, - gboolean runtime, - gboolean *is_app, - GCancellable *cancellable, - GError **error); -char * xdg_app_dir_find_installed_ref (XdgAppDir *self, - const char *name, - const char *opt_branch, - const char *opt_arch, - gboolean app, - gboolean runtime, - gboolean *is_app, - GError **error); -XdgAppDeploy *xdg_app_dir_load_deployed (XdgAppDir *self, - const char *ref, - const char *checksum, - GCancellable *cancellable, - GError **error); -char * xdg_app_dir_load_override (XdgAppDir *dir, - const char *app_id, - gsize *length, - GError **error); -OstreeRepo *xdg_app_dir_get_repo (XdgAppDir *self); -gboolean xdg_app_dir_ensure_path (XdgAppDir *self, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_use_child_repo (XdgAppDir *self); +XdgAppDir * xdg_app_dir_new (GFile *basedir, + gboolean user); +XdgAppDir * xdg_app_dir_clone (XdgAppDir *self); +XdgAppDir *xdg_app_dir_get (gboolean user); +XdgAppDir *xdg_app_dir_get_system (void); +XdgAppDir *xdg_app_dir_get_user (void); +gboolean xdg_app_dir_is_user (XdgAppDir *self); +GFile * xdg_app_dir_get_path (XdgAppDir *self); +GFile * xdg_app_dir_get_changed_path (XdgAppDir *self); +GFile * xdg_app_dir_get_deploy_dir (XdgAppDir *self, + const char *ref); +GVariant * xdg_app_dir_get_deploy_data (XdgAppDir *dir, + const char *ref, + GCancellable *cancellable, + GError **error); +char * xdg_app_dir_get_origin (XdgAppDir *self, + const char *ref, + GCancellable *cancellable, + GError **error); +char ** xdg_app_dir_get_subpaths (XdgAppDir *self, + const char *ref, + GCancellable *cancellable, + GError **error); +GFile * xdg_app_dir_get_exports_dir (XdgAppDir *self); +GFile * xdg_app_dir_get_removed_dir (XdgAppDir *self); +GFile * xdg_app_dir_get_if_deployed (XdgAppDir *self, + const char *ref, + const char *checksum, + GCancellable *cancellable); +char * xdg_app_dir_find_remote_ref (XdgAppDir *self, + const char *remote, + const char *name, + const char *opt_branch, + const char *opt_arch, + gboolean app, + gboolean runtime, + gboolean *is_app, + GCancellable *cancellable, + GError **error); +char * xdg_app_dir_find_installed_ref (XdgAppDir *self, + const char *name, + const char *opt_branch, + const char *opt_arch, + gboolean app, + gboolean runtime, + gboolean *is_app, + GError **error); +XdgAppDeploy *xdg_app_dir_load_deployed (XdgAppDir *self, + const char *ref, + const char *checksum, + GCancellable *cancellable, + GError **error); +char * xdg_app_dir_load_override (XdgAppDir *dir, + const char *app_id, + gsize *length, + GError **error); +OstreeRepo *xdg_app_dir_get_repo (XdgAppDir *self); +gboolean xdg_app_dir_ensure_path (XdgAppDir *self, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_use_child_repo (XdgAppDir *self); gboolean xdg_app_dir_ensure_system_child_repo (XdgAppDir *self, - GError **error); -gboolean xdg_app_dir_ensure_repo (XdgAppDir *self, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_mark_changed (XdgAppDir *self, - GError **error); -gboolean xdg_app_dir_remove_appstream(XdgAppDir *self, - const char *remote, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_update_appstream(XdgAppDir *self, - const char *remote, - const char *arch, - gboolean *out_changed, - OstreeAsyncProgress *progress, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_pull (XdgAppDir *self, - const char *repository, - const char *ref, - char **subpaths, - OstreeRepo *repo, - OstreeRepoPullFlags flags, - OstreeAsyncProgress *progress, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_pull_untrusted_local (XdgAppDir *self, - const char *src_path, - const char *remote_name, - const char *ref, - char **subpaths, + GError **error); +gboolean xdg_app_dir_ensure_repo (XdgAppDir *self, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_mark_changed (XdgAppDir *self, + GError **error); +gboolean xdg_app_dir_remove_appstream (XdgAppDir *self, + const char *remote, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_update_appstream (XdgAppDir *self, + const char *remote, + const char *arch, + gboolean *out_changed, + OstreeAsyncProgress *progress, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_pull (XdgAppDir *self, + const char *repository, + const char *ref, + char **subpaths, + OstreeRepo *repo, + OstreeRepoPullFlags flags, + OstreeAsyncProgress *progress, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_pull_untrusted_local (XdgAppDir *self, + const char *src_path, + const char *remote_name, + const char *ref, + char **subpaths, OstreeAsyncProgress *progress, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_list_refs_for_name (XdgAppDir *self, - const char *kind, - const char *name, - char ***refs, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_list_refs (XdgAppDir *self, - const char *kind, - char ***refs, - GCancellable *cancellable, - GError **error); -char * xdg_app_dir_read_latest (XdgAppDir *self, - const char *remote, - const char *ref, - GCancellable *cancellable, - GError **error); -char * xdg_app_dir_read_active (XdgAppDir *self, - const char *ref, - GCancellable *cancellable); -gboolean xdg_app_dir_set_active (XdgAppDir *self, - const char *ref, - const char *checksum, - GCancellable *cancellable, - GError **error); -char * xdg_app_dir_current_ref (XdgAppDir *self, - const char *name, - GCancellable *cancellable); -gboolean xdg_app_dir_drop_current_ref (XdgAppDir *self, - const char *name, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_make_current_ref (XdgAppDir *self, - const char *ref, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_list_deployed (XdgAppDir *self, - const char *ref, - char ***deployed_checksums, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_lock (XdgAppDir *self, - GLnxLockFile *lockfile, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_deploy (XdgAppDir *self, - const char *origin, - const char *ref, - const char *checksum_or_latest, - const char * const * subpaths, - GVariant *old_deploy_data, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_deploy_update (XdgAppDir *self, - const char *ref, - const char *checksum, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_deploy_install (XdgAppDir *self, - const char *ref, - const char *origin, - char **subpaths, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_install (XdgAppDir *self, - gboolean no_pull, - gboolean no_deploy, - const char *ref, - const char *remote_name, - char **subpaths, - OstreeAsyncProgress *progress, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_update (XdgAppDir *self, - gboolean no_pull, - gboolean no_deploy, - const char *ref, - const char *remote_name, - const char *checksum_or_latest, - char **subpaths, - OstreeAsyncProgress *progress, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_undeploy (XdgAppDir *self, - const char *ref, - const char *checksum, - gboolean force_remove, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_undeploy_all (XdgAppDir *self, - const char *ref, - gboolean force_remove, - gboolean *was_deployed_out, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_remove_all_refs (XdgAppDir *self, - const char *remote, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_remove_ref (XdgAppDir *self, - const char *remote_name, - const char *ref, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_update_exports (XdgAppDir *self, - const char *app, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_prune (XdgAppDir *self, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_cleanup_removed (XdgAppDir *self, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_dir_collect_deployed_refs (XdgAppDir *self, - const char *type, - const char *name_prefix, - const char *branch, - const char *arch, - GHashTable *hash, - GCancellable *cancellable, - GError **error); -char *xdg_app_dir_create_origin_remote (XdgAppDir *self, - const char *url, - const char *id, - const char *title, - GBytes *gpg_data, - GCancellable *cancellable, - GError **error); -char **xdg_app_dir_list_remotes (XdgAppDir *self, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_list_refs_for_name (XdgAppDir *self, + const char *kind, + const char *name, + char ***refs, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_list_refs (XdgAppDir *self, + const char *kind, + char ***refs, + GCancellable *cancellable, + GError **error); +char * xdg_app_dir_read_latest (XdgAppDir *self, + const char *remote, + const char *ref, + GCancellable *cancellable, + GError **error); +char * xdg_app_dir_read_active (XdgAppDir *self, + const char *ref, + GCancellable *cancellable); +gboolean xdg_app_dir_set_active (XdgAppDir *self, + const char *ref, + const char *checksum, + GCancellable *cancellable, + GError **error); +char * xdg_app_dir_current_ref (XdgAppDir *self, + const char *name, + GCancellable *cancellable); +gboolean xdg_app_dir_drop_current_ref (XdgAppDir *self, + const char *name, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_make_current_ref (XdgAppDir *self, + const char *ref, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_list_deployed (XdgAppDir *self, + const char *ref, + char ***deployed_checksums, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_lock (XdgAppDir *self, + GLnxLockFile *lockfile, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_deploy (XdgAppDir *self, + const char *origin, + const char *ref, + const char *checksum_or_latest, + const char * const * subpaths, + GVariant *old_deploy_data, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_deploy_update (XdgAppDir *self, + const char *ref, + const char *checksum, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_deploy_install (XdgAppDir *self, + const char *ref, + const char *origin, + char **subpaths, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_install (XdgAppDir *self, + gboolean no_pull, + gboolean no_deploy, + const char *ref, + const char *remote_name, + char **subpaths, + OstreeAsyncProgress *progress, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_update (XdgAppDir *self, + gboolean no_pull, + gboolean no_deploy, + const char *ref, + const char *remote_name, + const char *checksum_or_latest, + char **subpaths, + OstreeAsyncProgress *progress, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_undeploy (XdgAppDir *self, + const char *ref, + const char *checksum, + gboolean force_remove, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_undeploy_all (XdgAppDir *self, + const char *ref, + gboolean force_remove, + gboolean *was_deployed_out, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_remove_all_refs (XdgAppDir *self, + const char *remote, GCancellable *cancellable, - GError **error); -char *xdg_app_dir_get_remote_title (XdgAppDir *self, - const char *remote_name); -int xdg_app_dir_get_remote_prio (XdgAppDir *self, + GError **error); +gboolean xdg_app_dir_remove_ref (XdgAppDir *self, + const char *remote_name, + const char *ref, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_update_exports (XdgAppDir *self, + const char *app, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_prune (XdgAppDir *self, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_cleanup_removed (XdgAppDir *self, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_dir_collect_deployed_refs (XdgAppDir *self, + const char *type, + const char *name_prefix, + const char *branch, + const char *arch, + GHashTable *hash, + GCancellable *cancellable, + GError **error); +char *xdg_app_dir_create_origin_remote (XdgAppDir *self, + const char *url, + const char *id, + const char *title, + GBytes *gpg_data, + GCancellable *cancellable, + GError **error); +char **xdg_app_dir_list_remotes (XdgAppDir *self, + GCancellable *cancellable, + GError **error); +char *xdg_app_dir_get_remote_title (XdgAppDir *self, const char *remote_name); -gboolean xdg_app_dir_get_remote_noenumerate (XdgAppDir *self, +int xdg_app_dir_get_remote_prio (XdgAppDir *self, + const char *remote_name); +gboolean xdg_app_dir_get_remote_noenumerate (XdgAppDir *self, const char *remote_name); -gboolean xdg_app_dir_get_remote_disabled (XdgAppDir *self, +gboolean xdg_app_dir_get_remote_disabled (XdgAppDir *self, const char *remote_name); -gboolean xdg_app_dir_list_remote_refs (XdgAppDir *self, - const char *remote, - GHashTable **refs, +gboolean xdg_app_dir_list_remote_refs (XdgAppDir *self, + const char *remote, + GHashTable **refs, GCancellable *cancellable, - GError **error); -char * xdg_app_dir_fetch_remote_title (XdgAppDir *self, - const char *remote, + GError **error); +char * xdg_app_dir_fetch_remote_title (XdgAppDir *self, + const char *remote, GCancellable *cancellable, - GError **error); -GBytes * xdg_app_dir_fetch_remote_object (XdgAppDir *self, - const char *remote, - const char *checksum, - const char *type, - GCancellable *cancellable, - GError **error); -GBytes * xdg_app_dir_fetch_metadata (XdgAppDir *self, - const char *remote_name, - const char *commit, + GError **error); +GBytes * xdg_app_dir_fetch_remote_object (XdgAppDir *self, + const char *remote, + const char *checksum, + const char *type, GCancellable *cancellable, - GError **error); + GError **error); +GBytes * xdg_app_dir_fetch_metadata (XdgAppDir *self, + const char *remote_name, + const char *commit, + GCancellable *cancellable, + GError **error); gboolean xdg_app_dir_fetch_ref_cache (XdgAppDir *self, const char *remote_name, const char *ref, diff --git a/common/xdg-app-portal-error.h b/common/xdg-app-portal-error.h index 1dd1c2f..00e6b89 100644 --- a/common/xdg-app-portal-error.h +++ b/common/xdg-app-portal-error.h @@ -40,9 +40,9 @@ typedef enum { } XdgAppErrorEnum; -#define XDG_APP_PORTAL_ERROR xdg_app_portal_error_quark() +#define XDG_APP_PORTAL_ERROR xdg_app_portal_error_quark () -XDG_APP_EXTERN GQuark xdg_app_portal_error_quark (void); +XDG_APP_EXTERN GQuark xdg_app_portal_error_quark (void); G_END_DECLS diff --git a/common/xdg-app-run.c b/common/xdg-app-run.c index 38c4126..44d5a14 100644 --- a/common/xdg-app-run.c +++ b/common/xdg-app-run.c @@ -98,18 +98,19 @@ static const char *xdg_app_context_devices[] = { NULL }; -struct XdgAppContext { - XdgAppContextShares shares; - XdgAppContextShares shares_valid; +struct XdgAppContext +{ + XdgAppContextShares shares; + XdgAppContextShares shares_valid; XdgAppContextSockets sockets; XdgAppContextSockets sockets_valid; XdgAppContextDevices devices; XdgAppContextDevices devices_valid; - GHashTable *env_vars; - GHashTable *persistent; - GHashTable *filesystems; - GHashTable *session_bus_policy; - GHashTable *system_bus_policy; + GHashTable *env_vars; + GHashTable *persistent; + GHashTable *filesystems; + GHashTable *session_bus_policy; + GHashTable *system_bus_policy; }; XdgAppContext * @@ -174,7 +175,7 @@ xdg_app_context_bitmask_to_string (guint32 enabled, guint32 valid, const char ** } g_ptr_array_add (array, NULL); - return (char **)g_ptr_array_free (array, FALSE); + return (char **) g_ptr_array_free (array, FALSE); } static XdgAppContextShares @@ -236,7 +237,9 @@ xdg_app_verify_dbus_name (const char *name, GError **error) name_part = tmp; } else - name_part = name; + { + name_part = name; + } if (g_dbus_is_name (name_part) && !g_dbus_is_unique_name (name_part)) return TRUE; @@ -280,86 +283,86 @@ xdg_app_context_devices_to_string (XdgAppContextDevices devices, XdgAppContextDe } static void -xdg_app_context_add_shares (XdgAppContext *context, - XdgAppContextShares shares) +xdg_app_context_add_shares (XdgAppContext *context, + XdgAppContextShares shares) { context->shares_valid |= shares; context->shares |= shares; } static void -xdg_app_context_remove_shares (XdgAppContext *context, - XdgAppContextShares shares) +xdg_app_context_remove_shares (XdgAppContext *context, + XdgAppContextShares shares) { context->shares_valid |= shares; context->shares &= ~shares; } static void -xdg_app_context_add_sockets (XdgAppContext *context, - XdgAppContextSockets sockets) +xdg_app_context_add_sockets (XdgAppContext *context, + XdgAppContextSockets sockets) { context->sockets_valid |= sockets; context->sockets |= sockets; } static void -xdg_app_context_remove_sockets (XdgAppContext *context, - XdgAppContextSockets sockets) +xdg_app_context_remove_sockets (XdgAppContext *context, + XdgAppContextSockets sockets) { context->sockets_valid |= sockets; context->sockets &= ~sockets; } static void -xdg_app_context_add_devices (XdgAppContext *context, - XdgAppContextDevices devices) +xdg_app_context_add_devices (XdgAppContext *context, + XdgAppContextDevices devices) { context->devices_valid |= devices; context->devices |= devices; } static void -xdg_app_context_remove_devices (XdgAppContext *context, - XdgAppContextDevices devices) +xdg_app_context_remove_devices (XdgAppContext *context, + XdgAppContextDevices devices) { context->devices_valid |= devices; context->devices &= ~devices; } static void -xdg_app_context_set_env_var (XdgAppContext *context, - const char *name, - const char *value) +xdg_app_context_set_env_var (XdgAppContext *context, + const char *name, + const char *value) { g_hash_table_insert (context->env_vars, g_strdup (name), g_strdup (value)); } void -xdg_app_context_set_session_bus_policy (XdgAppContext *context, - const char *name, - XdgAppPolicy policy) +xdg_app_context_set_session_bus_policy (XdgAppContext *context, + const char *name, + XdgAppPolicy policy) { g_hash_table_insert (context->session_bus_policy, g_strdup (name), GINT_TO_POINTER (policy)); } void -xdg_app_context_set_system_bus_policy (XdgAppContext *context, - const char *name, - XdgAppPolicy policy) +xdg_app_context_set_system_bus_policy (XdgAppContext *context, + const char *name, + XdgAppPolicy policy) { g_hash_table_insert (context->system_bus_policy, g_strdup (name), GINT_TO_POINTER (policy)); } static void -xdg_app_context_set_persistent (XdgAppContext *context, - const char *path) +xdg_app_context_set_persistent (XdgAppContext *context, + const char *path) { g_hash_table_insert (context->persistent, g_strdup (path), GINT_TO_POINTER (1)); } static gboolean -get_user_dir_from_string (const char *filesystem, +get_user_dir_from_string (const char *filesystem, const char **config_key, const char **suffix, const char **dir) @@ -378,7 +381,7 @@ get_user_dir_from_string (const char *filesystem, rest = filesystem + len; while (*rest == '/') - rest ++; + rest++; if (suffix) *suffix = rest; @@ -489,7 +492,7 @@ parse_filesystem_flags (const char *filesystem, XdgAppFilesystemMode *mode) static gboolean xdg_app_context_verify_filesystem (const char *filesystem_and_mode, - GError **error) + GError **error) { g_autofree char *filesystem = parse_filesystem_flags (filesystem_and_mode, NULL); @@ -510,8 +513,8 @@ xdg_app_context_verify_filesystem (const char *filesystem_and_mode, } static void -xdg_app_context_add_filesystem (XdgAppContext *context, - const char *what) +xdg_app_context_add_filesystem (XdgAppContext *context, + const char *what) { XdgAppFilesystemMode mode; char *fs = parse_filesystem_flags (what, &mode); @@ -520,8 +523,8 @@ xdg_app_context_add_filesystem (XdgAppContext *context, } static void -xdg_app_context_remove_filesystem (XdgAppContext *context, - const char *what) +xdg_app_context_remove_filesystem (XdgAppContext *context, + const char *what) { g_hash_table_insert (context->filesystems, parse_filesystem_flags (what, NULL), @@ -529,8 +532,8 @@ xdg_app_context_remove_filesystem (XdgAppContext *context, } void -xdg_app_context_merge (XdgAppContext *context, - XdgAppContext *other) +xdg_app_context_merge (XdgAppContext *context, + XdgAppContext *other) { GHashTableIter iter; gpointer key, value; @@ -567,10 +570,10 @@ xdg_app_context_merge (XdgAppContext *context, } static gboolean -option_share_cb (const gchar *option_name, - const gchar *value, - gpointer data, - GError **error) +option_share_cb (const gchar *option_name, + const gchar *value, + gpointer data, + GError **error) { XdgAppContext *context = data; XdgAppContextShares share; @@ -585,10 +588,10 @@ option_share_cb (const gchar *option_name, } static gboolean -option_unshare_cb (const gchar *option_name, - const gchar *value, - gpointer data, - GError **error) +option_unshare_cb (const gchar *option_name, + const gchar *value, + gpointer data, + GError **error) { XdgAppContext *context = data; XdgAppContextShares share; @@ -603,10 +606,10 @@ option_unshare_cb (const gchar *option_name, } static gboolean -option_socket_cb (const gchar *option_name, - const gchar *value, - gpointer data, - GError **error) +option_socket_cb (const gchar *option_name, + const gchar *value, + gpointer data, + GError **error) { XdgAppContext *context = data; XdgAppContextSockets socket; @@ -621,10 +624,10 @@ option_socket_cb (const gchar *option_name, } static gboolean -option_nosocket_cb (const gchar *option_name, - const gchar *value, - gpointer data, - GError **error) +option_nosocket_cb (const gchar *option_name, + const gchar *value, + gpointer data, + GError **error) { XdgAppContext *context = data; XdgAppContextSockets socket; @@ -639,10 +642,10 @@ option_nosocket_cb (const gchar *option_name, } static gboolean -option_device_cb (const gchar *option_name, - const gchar *value, - gpointer data, - GError **error) +option_device_cb (const gchar *option_name, + const gchar *value, + gpointer data, + GError **error) { XdgAppContext *context = data; XdgAppContextDevices device; @@ -657,10 +660,10 @@ option_device_cb (const gchar *option_name, } static gboolean -option_nodevice_cb (const gchar *option_name, - const gchar *value, - gpointer data, - GError **error) +option_nodevice_cb (const gchar *option_name, + const gchar *value, + gpointer data, + GError **error) { XdgAppContext *context = data; XdgAppContextDevices device; @@ -675,10 +678,10 @@ option_nodevice_cb (const gchar *option_name, } static gboolean -option_filesystem_cb (const gchar *option_name, - const gchar *value, - gpointer data, - GError **error) +option_filesystem_cb (const gchar *option_name, + const gchar *value, + gpointer data, + GError **error) { XdgAppContext *context = data; @@ -690,10 +693,10 @@ option_filesystem_cb (const gchar *option_name, } static gboolean -option_nofilesystem_cb (const gchar *option_name, - const gchar *value, - gpointer data, - GError **error) +option_nofilesystem_cb (const gchar *option_name, + const gchar *value, + gpointer data, + GError **error) { XdgAppContext *context = data; @@ -705,12 +708,13 @@ option_nofilesystem_cb (const gchar *option_name, } static gboolean -option_env_cb (const gchar *option_name, - const gchar *value, - gpointer data, - GError **error) +option_env_cb (const gchar *option_name, + const gchar *value, + gpointer data, + GError **error) { XdgAppContext *context = data; + g_auto(GStrv) split = g_strsplit (value, "=", 2); if (split == NULL || split[0] == NULL || split[0][0] == 0 || split[1] == NULL) @@ -724,10 +728,10 @@ option_env_cb (const gchar *option_name, } static gboolean -option_own_name_cb (const gchar *option_name, - const gchar *value, - gpointer data, - GError **error) +option_own_name_cb (const gchar *option_name, + const gchar *value, + gpointer data, + GError **error) { XdgAppContext *context = data; @@ -739,10 +743,10 @@ option_own_name_cb (const gchar *option_name, } static gboolean -option_talk_name_cb (const gchar *option_name, - const gchar *value, - gpointer data, - GError **error) +option_talk_name_cb (const gchar *option_name, + const gchar *value, + gpointer data, + GError **error) { XdgAppContext *context = data; @@ -754,10 +758,10 @@ option_talk_name_cb (const gchar *option_name, } static gboolean -option_system_own_name_cb (const gchar *option_name, - const gchar *value, - gpointer data, - GError **error) +option_system_own_name_cb (const gchar *option_name, + const gchar *value, + gpointer data, + GError **error) { XdgAppContext *context = data; @@ -769,10 +773,10 @@ option_system_own_name_cb (const gchar *option_name, } static gboolean -option_system_talk_name_cb (const gchar *option_name, - const gchar *value, - gpointer data, - GError **error) +option_system_talk_name_cb (const gchar *option_name, + const gchar *value, + gpointer data, + GError **error) { XdgAppContext *context = data; @@ -784,10 +788,10 @@ option_system_talk_name_cb (const gchar *option_name, } static gboolean -option_persist_cb (const gchar *option_name, - const gchar *value, - gpointer data, - GError **error) +option_persist_cb (const gchar *option_name, + const gchar *value, + gpointer data, + GError **error) { XdgAppContext *context = data; @@ -814,9 +818,9 @@ static GOptionEntry context_options[] = { }; GOptionGroup * -xdg_app_context_get_options (XdgAppContext *context) +xdg_app_context_get_options (XdgAppContext *context) { - GOptionGroup *group; + GOptionGroup *group; group = g_option_group_new ("environment", "Runtime Environment", @@ -838,15 +842,17 @@ parse_negated (const char *option, gboolean *negated) *negated = TRUE; } else - *negated = FALSE; + { + *negated = FALSE; + } return option; } /* This is a merge, not a replace */ gboolean -xdg_app_context_load_metadata (XdgAppContext *context, - GKeyFile *metakey, - GError **error) +xdg_app_context_load_metadata (XdgAppContext *context, + GKeyFile *metakey, + GError **error) { gboolean remove; int i; @@ -933,7 +939,7 @@ xdg_app_context_load_metadata (XdgAppContext *context, if (g_key_file_has_key (metakey, XDG_APP_METADATA_GROUP_CONTEXT, XDG_APP_METADATA_KEY_PERSISTENT, NULL)) { g_auto(GStrv) persistent = g_key_file_get_string_list (metakey, XDG_APP_METADATA_GROUP_CONTEXT, - XDG_APP_METADATA_KEY_PERSISTENT, NULL, error); + XDG_APP_METADATA_KEY_PERSISTENT, NULL, error); if (persistent == NULL) return FALSE; @@ -957,7 +963,7 @@ xdg_app_context_load_metadata (XdgAppContext *context, return FALSE; policy = xdg_app_policy_from_string (value, error); - if ((int)policy == -1) + if ((int) policy == -1) return FALSE; xdg_app_context_set_session_bus_policy (context, key, policy); @@ -980,7 +986,7 @@ xdg_app_context_load_metadata (XdgAppContext *context, return FALSE; policy = xdg_app_policy_from_string (value, error); - if ((int)policy == -1) + if ((int) policy == -1) return FALSE; xdg_app_context_set_system_bus_policy (context, key, policy); @@ -1006,8 +1012,8 @@ xdg_app_context_load_metadata (XdgAppContext *context, } void -xdg_app_context_save_metadata (XdgAppContext *context, - GKeyFile *metakey) +xdg_app_context_save_metadata (XdgAppContext *context, + GKeyFile *metakey) { g_auto(GStrv) shared = xdg_app_context_shared_to_string (context->shares, context->shares_valid); g_auto(GStrv) sockets = xdg_app_context_sockets_to_string (context->sockets, context->sockets_valid); @@ -1016,37 +1022,49 @@ xdg_app_context_save_metadata (XdgAppContext *context, gpointer key, value; if (shared[0] != NULL) - g_key_file_set_string_list (metakey, - XDG_APP_METADATA_GROUP_CONTEXT, - XDG_APP_METADATA_KEY_SHARED, - (const char * const*)shared, g_strv_length (shared)); + { + g_key_file_set_string_list (metakey, + XDG_APP_METADATA_GROUP_CONTEXT, + XDG_APP_METADATA_KEY_SHARED, + (const char * const *) shared, g_strv_length (shared)); + } else - g_key_file_remove_key (metakey, - XDG_APP_METADATA_GROUP_CONTEXT, - XDG_APP_METADATA_KEY_SHARED, - NULL); + { + g_key_file_remove_key (metakey, + XDG_APP_METADATA_GROUP_CONTEXT, + XDG_APP_METADATA_KEY_SHARED, + NULL); + } if (sockets[0] != NULL) - g_key_file_set_string_list (metakey, - XDG_APP_METADATA_GROUP_CONTEXT, - XDG_APP_METADATA_KEY_SOCKETS, - (const char * const*)sockets, g_strv_length (sockets)); + { + g_key_file_set_string_list (metakey, + XDG_APP_METADATA_GROUP_CONTEXT, + XDG_APP_METADATA_KEY_SOCKETS, + (const char * const *) sockets, g_strv_length (sockets)); + } else - g_key_file_remove_key (metakey, - XDG_APP_METADATA_GROUP_CONTEXT, - XDG_APP_METADATA_KEY_SOCKETS, - NULL); + { + g_key_file_remove_key (metakey, + XDG_APP_METADATA_GROUP_CONTEXT, + XDG_APP_METADATA_KEY_SOCKETS, + NULL); + } if (devices[0] != NULL) - g_key_file_set_string_list (metakey, - XDG_APP_METADATA_GROUP_CONTEXT, - XDG_APP_METADATA_KEY_DEVICES, - (const char * const*)devices, g_strv_length (devices)); + { + g_key_file_set_string_list (metakey, + XDG_APP_METADATA_GROUP_CONTEXT, + XDG_APP_METADATA_KEY_DEVICES, + (const char * const *) devices, g_strv_length (devices)); + } else - g_key_file_remove_key (metakey, - XDG_APP_METADATA_GROUP_CONTEXT, - XDG_APP_METADATA_KEY_DEVICES, - NULL); + { + g_key_file_remove_key (metakey, + XDG_APP_METADATA_GROUP_CONTEXT, + XDG_APP_METADATA_KEY_DEVICES, + NULL); + } if (g_hash_table_size (context->filesystems) > 0) { @@ -1066,28 +1084,32 @@ xdg_app_context_save_metadata (XdgAppContext *context, g_key_file_set_string_list (metakey, XDG_APP_METADATA_GROUP_CONTEXT, XDG_APP_METADATA_KEY_FILESYSTEMS, - (const char * const*)array->pdata, array->len); + (const char * const *) array->pdata, array->len); } else - g_key_file_remove_key (metakey, - XDG_APP_METADATA_GROUP_CONTEXT, - XDG_APP_METADATA_KEY_FILESYSTEMS, - NULL); + { + g_key_file_remove_key (metakey, + XDG_APP_METADATA_GROUP_CONTEXT, + XDG_APP_METADATA_KEY_FILESYSTEMS, + NULL); + } if (g_hash_table_size (context->persistent) > 0) { - g_autofree char **keys = (char **)g_hash_table_get_keys_as_array (context->persistent, NULL); + g_autofree char **keys = (char **) g_hash_table_get_keys_as_array (context->persistent, NULL); g_key_file_set_string_list (metakey, XDG_APP_METADATA_GROUP_CONTEXT, XDG_APP_METADATA_KEY_PERSISTENT, - (const char * const*)keys, g_strv_length (keys)); + (const char * const *) keys, g_strv_length (keys)); } else - g_key_file_remove_key (metakey, - XDG_APP_METADATA_GROUP_CONTEXT, - XDG_APP_METADATA_KEY_PERSISTENT, - NULL); + { + g_key_file_remove_key (metakey, + XDG_APP_METADATA_GROUP_CONTEXT, + XDG_APP_METADATA_KEY_PERSISTENT, + NULL); + } g_key_file_remove_group (metakey, XDG_APP_METADATA_GROUP_SESSION_BUS_POLICY, NULL); g_hash_table_iter_init (&iter, context->session_bus_policy); @@ -1097,7 +1119,7 @@ xdg_app_context_save_metadata (XdgAppContext *context, if (policy > 0) g_key_file_set_string (metakey, XDG_APP_METADATA_GROUP_SESSION_BUS_POLICY, - (char *)key, xdg_app_policy_to_string (policy)); + (char *) key, xdg_app_policy_to_string (policy)); } g_key_file_remove_group (metakey, XDG_APP_METADATA_GROUP_SYSTEM_BUS_POLICY, NULL); @@ -1108,7 +1130,7 @@ xdg_app_context_save_metadata (XdgAppContext *context, if (policy > 0) g_key_file_set_string (metakey, XDG_APP_METADATA_GROUP_SYSTEM_BUS_POLICY, - (char *)key, xdg_app_policy_to_string (policy)); + (char *) key, xdg_app_policy_to_string (policy)); } g_key_file_remove_group (metakey, XDG_APP_METADATA_GROUP_ENVIRONMENT, NULL); @@ -1117,12 +1139,12 @@ xdg_app_context_save_metadata (XdgAppContext *context, { g_key_file_set_string (metakey, XDG_APP_METADATA_GROUP_ENVIRONMENT, - (char *)key, (char *)value); + (char *) key, (char *) value); } } void -xdg_app_context_allow_host_fs (XdgAppContext *context) +xdg_app_context_allow_host_fs (XdgAppContext *context) { xdg_app_context_add_filesystem (context, "host"); } @@ -1150,9 +1172,10 @@ extract_unix_path_from_dbus_address (const char *address) } #ifdef ENABLE_XAUTH -static gboolean auth_streq (char *str, - char *au_str, - int au_len) +static gboolean +auth_streq (char *str, + char *au_str, + int au_len) { return au_len == strlen (str) && memcmp (str, au_str, au_len) == 0; } @@ -1192,11 +1215,11 @@ write_xauth (char *number, FILE *output) local_xa.number_length = 2; } - if (!XauWriteAuth(output, &local_xa)) + if (!XauWriteAuth (output, &local_xa)) g_warning ("xauth write error"); } - XauDisposeAuth(xa); + XauDisposeAuth (xa); } fclose (f); @@ -1217,8 +1240,8 @@ add_args (GPtrArray *argv_array, ...) static int create_tmp_fd (const char *contents, - gssize length, - GError **error) + gssize length, + GError **error) { char template[] = "/tmp/tmp_fd_XXXXXX"; int fd; @@ -1270,7 +1293,7 @@ create_tmp_fd (const char *contents, static void xdg_app_run_add_x11_args (GPtrArray *argv_array, - char ***envp_p) + char ***envp_p) { char *x11_socket = NULL; const char *display = g_getenv ("DISPLAY"); @@ -1305,7 +1328,7 @@ xdg_app_run_add_x11_args (GPtrArray *argv_array, if (tmp_fd != -1) { g_autofree char *tmp_fd_str = g_strdup_printf ("%d", tmp_fd); - g_autofree char *dest = g_strdup_printf ("/run/user/%d/Xauthority", getuid()); + g_autofree char *dest = g_strdup_printf ("/run/user/%d/Xauthority", getuid ()); write_xauth (d, output); add_args (argv_array, @@ -1320,18 +1343,22 @@ xdg_app_run_add_x11_args (GPtrArray *argv_array, lseek (tmp_fd, 0, SEEK_SET); } else - close (fd); + { + close (fd); + } } #endif } else - *envp_p = g_environ_unsetenv (*envp_p, "DISPLAY"); + { + *envp_p = g_environ_unsetenv (*envp_p, "DISPLAY"); + } } static void xdg_app_run_add_wayland_args (GPtrArray *argv_array, - char ***envp_p) + char ***envp_p) { g_autofree char *wayland_socket = g_build_filename (g_get_user_runtime_dir (), "wayland-0", NULL); g_autofree char *sandbox_wayland_socket = g_strdup_printf ("/run/user/%d/wayland-0", getuid ()); @@ -1346,7 +1373,7 @@ xdg_app_run_add_wayland_args (GPtrArray *argv_array, static void xdg_app_run_add_pulseaudio_args (GPtrArray *argv_array, - char ***envp_p) + char ***envp_p) { char *pulseaudio_socket = g_build_filename (g_get_user_runtime_dir (), "pulse/native", NULL); @@ -1398,10 +1425,10 @@ create_proxy_socket (char *template) gboolean xdg_app_run_add_system_dbus_args (XdgAppContext *context, - char ***envp_p, - GPtrArray *argv_array, - GPtrArray *dbus_proxy_argv, - gboolean unrestricted) + char ***envp_p, + GPtrArray *argv_array, + GPtrArray *dbus_proxy_argv, + gboolean unrestricted) { const char *dbus_address = g_getenv ("DBUS_SYSTEM_BUS_ADDRESS"); g_autofree char *real_dbus_address = NULL; @@ -1450,9 +1477,9 @@ xdg_app_run_add_system_dbus_args (XdgAppContext *context, gboolean xdg_app_run_add_session_dbus_args (GPtrArray *argv_array, - char ***envp_p, + char ***envp_p, GPtrArray *dbus_proxy_argv, - gboolean unrestricted) + gboolean unrestricted) { const char *dbus_address = g_getenv ("DBUS_SESSION_BUS_ADDRESS"); char *dbus_session_socket = NULL; @@ -1495,9 +1522,9 @@ xdg_app_run_add_session_dbus_args (GPtrArray *argv_array, } static void -xdg_app_add_bus_filters (GPtrArray *dbus_proxy_argv, - GHashTable *ht, - const char *app_id, +xdg_app_add_bus_filters (GPtrArray *dbus_proxy_argv, + GHashTable *ht, + const char *app_id, XdgAppContext *context) { GHashTableIter iter; @@ -1516,16 +1543,16 @@ xdg_app_add_bus_filters (GPtrArray *dbus_proxy_argv, XdgAppPolicy policy = GPOINTER_TO_INT (value); if (policy > 0) - g_ptr_array_add (dbus_proxy_argv, g_strdup_printf ("--%s=%s", xdg_app_policy_to_string (policy), (char *)key)); + g_ptr_array_add (dbus_proxy_argv, g_strdup_printf ("--%s=%s", xdg_app_policy_to_string (policy), (char *) key)); } } gboolean -xdg_app_run_add_extension_args (GPtrArray *argv_array, - GKeyFile *metakey, - const char *full_ref, +xdg_app_run_add_extension_args (GPtrArray *argv_array, + GKeyFile *metakey, + const char *full_ref, GCancellable *cancellable, - GError **error) + GError **error) { g_auto(GStrv) parts = NULL; gboolean is_app; @@ -1559,15 +1586,15 @@ xdg_app_run_add_extension_args (GPtrArray *argv_array, } } - g_list_free_full (extensions, (GDestroyNotify)xdg_app_extension_free); + g_list_free_full (extensions, (GDestroyNotify) xdg_app_extension_free); return TRUE; } static void -add_file_arg (GPtrArray *argv_array, +add_file_arg (GPtrArray *argv_array, XdgAppFilesystemMode mode, - const char *path) + const char *path) { struct stat st; @@ -1584,13 +1611,13 @@ add_file_arg (GPtrArray *argv_array, } void -xdg_app_run_add_environment_args (GPtrArray *argv_array, - char ***envp_p, - GPtrArray *session_bus_proxy_argv, - GPtrArray *system_bus_proxy_argv, - const char *app_id, +xdg_app_run_add_environment_args (GPtrArray *argv_array, + char ***envp_p, + GPtrArray *session_bus_proxy_argv, + GPtrArray *system_bus_proxy_argv, + const char *app_id, XdgAppContext *context, - GFile *app_id_dir) + GFile *app_id_dir) { GHashTableIter iter; gpointer key, value; @@ -1618,13 +1645,15 @@ xdg_app_run_add_environment_args (GPtrArray *argv_array, if (g_file_test ("/dev/dri", G_FILE_TEST_IS_DIR)) add_args (argv_array, "--dev-bind", "/dev/dri", "/dev/dri", NULL); if (g_file_test ("/dev/nvidiactl", G_FILE_TEST_EXISTS)) - add_args (argv_array, - "--dev-bind", "/dev/nvidiactl", "/dev/nvidiactl", - "--dev-bind", "/dev/nvidia0", "/dev/nvidia0", - NULL); + { + add_args (argv_array, + "--dev-bind", "/dev/nvidiactl", "/dev/nvidiactl", + "--dev-bind", "/dev/nvidia0", "/dev/nvidia0", + NULL); + } } - fs_mode = (XdgAppFilesystemMode)g_hash_table_lookup (context->filesystems, "host"); + fs_mode = (XdgAppFilesystemMode) g_hash_table_lookup (context->filesystems, "host"); if (fs_mode != 0) { DIR *dir; @@ -1651,7 +1680,7 @@ xdg_app_run_add_environment_args (GPtrArray *argv_array, add_file_arg (argv_array, fs_mode, "/run/media"); } - home_mode = (XdgAppFilesystemMode)g_hash_table_lookup (context->filesystems, "home"); + home_mode = (XdgAppFilesystemMode) g_hash_table_lookup (context->filesystems, "home"); if (home_mode != 0) { g_debug ("Allowing homedir access"); @@ -1683,7 +1712,7 @@ xdg_app_run_add_environment_args (GPtrArray *argv_array, while (g_hash_table_iter_next (&iter, &key, &value)) { const char *filesystem = key; - XdgAppFilesystemMode mode = GPOINTER_TO_INT(value); + XdgAppFilesystemMode mode = GPOINTER_TO_INT (value); if (value == NULL || strcmp (filesystem, "host") == 0 || @@ -1728,7 +1757,7 @@ xdg_app_run_add_environment_args (GPtrArray *argv_array, { g_autofree char *path = NULL; - path = g_build_filename (g_get_home_dir(), filesystem+2, NULL); + path = g_build_filename (g_get_home_dir (), filesystem + 2, NULL); if (g_file_test (path, G_FILE_TEST_EXISTS)) add_file_arg (argv_array, mode, path); } @@ -1738,7 +1767,9 @@ xdg_app_run_add_environment_args (GPtrArray *argv_array, add_file_arg (argv_array, mode, filesystem); } else - g_warning ("Unexpected filesystem arg %s\n", filesystem); + { + g_warning ("Unexpected filesystem arg %s\n", filesystem); + } } /* Do this after setting up everything in the home dir, so its not overwritten */ @@ -1808,9 +1839,7 @@ xdg_app_run_add_environment_args (GPtrArray *argv_array, g_debug ("Allowing session-dbus access"); if (xdg_app_run_add_session_dbus_args (argv_array, envp_p, session_bus_proxy_argv, unrestricted_session_bus) && !unrestricted_session_bus && session_bus_proxy_argv) - { - xdg_app_add_bus_filters (session_bus_proxy_argv, context->session_bus_policy, app_id, context); - } + xdg_app_add_bus_filters (session_bus_proxy_argv, context->session_bus_policy, app_id, context); unrestricted_system_bus = (context->sockets & XDG_APP_CONTEXT_SOCKET_SYSTEM_BUS) != 0; if (unrestricted_system_bus) @@ -1818,27 +1847,29 @@ xdg_app_run_add_environment_args (GPtrArray *argv_array, if (xdg_app_run_add_system_dbus_args (context, envp_p, argv_array, system_bus_proxy_argv, unrestricted_system_bus) && !unrestricted_system_bus && system_bus_proxy_argv) - { - xdg_app_add_bus_filters (system_bus_proxy_argv, context->system_bus_policy, NULL, context); - } + xdg_app_add_bus_filters (system_bus_proxy_argv, context->system_bus_policy, NULL, context); } -static const struct {const char *env; const char *val;} default_exports[] = { - {"PATH","/app/bin:/usr/bin"}, +static const struct {const char *env; + const char *val; +} default_exports[] = { + {"PATH", "/app/bin:/usr/bin"}, {"LD_LIBRARY_PATH", "/app/lib"}, - {"XDG_CONFIG_DIRS","/app/etc/xdg:/etc/xdg"}, - {"XDG_DATA_DIRS","/app/share:/usr/share"}, - {"SHELL","/bin/sh"}, + {"XDG_CONFIG_DIRS", "/app/etc/xdg:/etc/xdg"}, + {"XDG_DATA_DIRS", "/app/share:/usr/share"}, + {"SHELL", "/bin/sh"}, }; -static const struct {const char *env; const char *val;} devel_exports[] = { - {"ACLOCAL_PATH","/app/share/aclocal"}, - {"C_INCLUDE_PATH","/app/include"}, - {"CPLUS_INCLUDE_PATH","/app/include"}, - {"LDFLAGS","-L/app/lib "}, - {"PKG_CONFIG_PATH","/app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig"}, - {"LC_ALL","en_US.utf8"}, +static const struct {const char *env; + const char *val; +} devel_exports[] = { + {"ACLOCAL_PATH", "/app/share/aclocal"}, + {"C_INCLUDE_PATH", "/app/include"}, + {"CPLUS_INCLUDE_PATH", "/app/include"}, + {"LDFLAGS", "-L/app/lib "}, + {"PKG_CONFIG_PATH", "/app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig"}, + {"LC_ALL", "en_US.utf8"}, }; char ** @@ -1881,7 +1912,7 @@ xdg_app_run_get_minimal_env (gboolean devel) env_array = g_ptr_array_new_with_free_func (g_free); - for (i = 0; i < G_N_ELEMENTS(default_exports); i++) + for (i = 0; i < G_N_ELEMENTS (default_exports); i++) g_ptr_array_add (env_array, g_strdup_printf ("%s=%s", default_exports[i].env, default_exports[i].val)); if (devel) @@ -1890,25 +1921,25 @@ xdg_app_run_get_minimal_env (gboolean devel) g_ptr_array_add (env_array, g_strdup_printf ("%s=%s", devel_exports[i].env, devel_exports[i].val)); } - for (i = 0; i < G_N_ELEMENTS(copy); i++) + for (i = 0; i < G_N_ELEMENTS (copy); i++) { - const char *current = g_getenv(copy[i]); + const char *current = g_getenv (copy[i]); if (current) g_ptr_array_add (env_array, g_strdup_printf ("%s=%s", copy[i], current)); } if (!devel) { - for (i = 0; i < G_N_ELEMENTS(copy_nodevel); i++) + for (i = 0; i < G_N_ELEMENTS (copy_nodevel); i++) { - const char *current = g_getenv(copy_nodevel[i]); + const char *current = g_getenv (copy_nodevel[i]); if (current) g_ptr_array_add (env_array, g_strdup_printf ("%s=%s", copy_nodevel[i], current)); } } g_ptr_array_add (env_array, NULL); - return (char **)g_ptr_array_free (env_array, FALSE); + return (char **) g_ptr_array_free (env_array, FALSE); } char ** @@ -1916,15 +1947,15 @@ xdg_app_run_apply_env_default (char **envp) { int i; - for (i = 0; i < G_N_ELEMENTS(default_exports); i++) + for (i = 0; i < G_N_ELEMENTS (default_exports); i++) envp = g_environ_setenv (envp, default_exports[i].env, default_exports[i].val, TRUE); return envp; } char ** -xdg_app_run_apply_env_appid (char **envp, - GFile *app_dir) +xdg_app_run_apply_env_appid (char **envp, + GFile *app_dir) { g_autoptr(GFile) app_dir_data = NULL; g_autoptr(GFile) app_dir_config = NULL; @@ -1971,9 +2002,9 @@ xdg_app_get_data_dir (const char *app_id) } GFile * -xdg_app_ensure_data_dir (const char *app_id, - GCancellable *cancellable, - GError **error) +xdg_app_ensure_data_dir (const char *app_id, + GCancellable *cancellable, + GError **error) { g_autoptr(GFile) dir = xdg_app_get_data_dir (app_id); g_autoptr(GFile) data_dir = g_file_get_child (dir, "data"); @@ -1992,17 +2023,18 @@ xdg_app_ensure_data_dir (const char *app_id, return g_object_ref (dir); } -struct JobData { - char *job; +struct JobData +{ + char *job; GMainLoop *main_loop; }; static void job_removed_cb (SystemdManager *manager, - guint32 id, - char *job, - char *unit, - char *result, + guint32 id, + char *job, + char *unit, + char *result, struct JobData *data) { if (strcmp (job, data->job) == 0) @@ -2027,7 +2059,7 @@ xdg_app_run_in_transient_unit (const char *appid, GError **error) struct JobData data; gboolean res = FALSE; - path = g_strdup_printf ("/run/user/%d/systemd/private", getuid()); + path = g_strdup_printf ("/run/user/%d/systemd/private", getuid ()); if (!g_file_test (path, G_FILE_TEST_EXISTS)) return xdg_app_fail (error, @@ -2055,7 +2087,7 @@ xdg_app_run_in_transient_unit (const char *appid, GError **error) if (!manager) goto out; - name = g_strdup_printf ("xdg-app-%s-%d.scope", appid, getpid()); + name = g_strdup_printf ("xdg-app-%s-%d.scope", appid, getpid ()); g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(sv)")); @@ -2064,7 +2096,7 @@ xdg_app_run_in_transient_unit (const char *appid, GError **error) "PIDs", g_variant_new_fixed_array (G_VARIANT_TYPE ("u"), &pid, 1, sizeof (guint32)) - ); + ); properties = g_variant_builder_end (&builder); @@ -2082,13 +2114,13 @@ xdg_app_run_in_transient_unit (const char *appid, GError **error) data.job = job; data.main_loop = main_loop; - g_signal_connect (manager,"job-removed", G_CALLBACK (job_removed_cb), &data); + g_signal_connect (manager, "job-removed", G_CALLBACK (job_removed_cb), &data); g_main_loop_run (main_loop); res = TRUE; - out: +out: if (main_context) { g_main_context_pop_thread_default (main_context); @@ -2142,7 +2174,7 @@ add_default_permissions (XdgAppContext *app_context) static XdgAppContext * compute_permissions (GKeyFile *app_metadata, GKeyFile *runtime_metadata, - GError **error) + GError **error) { g_autoptr(XdgAppContext) app_context = NULL; @@ -2160,12 +2192,12 @@ compute_permissions (GKeyFile *app_metadata, } static gboolean -add_app_info_args (GPtrArray *argv_array, - XdgAppDeploy *deploy, - const char *app_id, - const char *runtime_ref, +add_app_info_args (GPtrArray *argv_array, + XdgAppDeploy *deploy, + const char *app_id, + const char *runtime_ref, XdgAppContext *final_app_context, - GError **error) + GError **error) { g_autofree char *tmp_path = NULL; int fd; @@ -2213,7 +2245,7 @@ add_app_info_args (GPtrArray *argv_array, static void add_monitor_path_args (GPtrArray *argv_array, - char ***envp_p) + char ***envp_p) { g_autoptr(AutoXdgAppSessionHelper) session_helper = NULL; g_autofree char *monitor_path = NULL; @@ -2238,7 +2270,7 @@ add_monitor_path_args (GPtrArray *argv_array, } else { - char localtime[PATH_MAX+1]; + char localtime[PATH_MAX + 1]; ssize_t symlink_size; add_args (argv_array, @@ -2254,14 +2286,16 @@ add_monitor_path_args (GPtrArray *argv_array, NULL); } else - add_args (argv_array, - "--bind", "/etc/localtime", "/etc/localtime", - NULL); + { + add_args (argv_array, + "--bind", "/etc/localtime", "/etc/localtime", + NULL); + } } } static void -add_document_portal_args (GPtrArray *argv_array, +add_document_portal_args (GPtrArray *argv_array, const char *app_id) { g_autoptr(GDBusConnection) session_bus = NULL; @@ -2270,9 +2304,9 @@ add_document_portal_args (GPtrArray *argv_array, session_bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL); if (session_bus) { - g_autoptr (GError) local_error = NULL; - g_autoptr (GDBusMessage) reply = NULL; - g_autoptr (GDBusMessage) msg = + g_autoptr(GError) local_error = NULL; + g_autoptr(GDBusMessage) reply = NULL; + g_autoptr(GDBusMessage) msg = g_dbus_message_new_method_call ("org.freedesktop.portal.Documents", "/org/freedesktop/portal/documents", "org.freedesktop.portal.Documents", @@ -2288,7 +2322,9 @@ add_document_portal_args (GPtrArray *argv_array, if (reply) { if (g_dbus_message_to_gerror (reply, &local_error)) - g_warning ("Can't get document portal: %s\n", local_error->message); + { + g_warning ("Can't get document portal: %s\n", local_error->message); + } else { g_autofree char *src_path = NULL; @@ -2298,7 +2334,7 @@ add_document_portal_args (GPtrArray *argv_array, src_path = g_strdup_printf ("%s/by-app/%s", doc_mount_path, app_id); - dst_path = g_strdup_printf ("/run/user/%d/doc", getuid()); + dst_path = g_strdup_printf ("/run/user/%d/doc", getuid ()); add_args (argv_array, "--bind", src_path, dst_path, NULL); } } @@ -2309,6 +2345,7 @@ static void dbus_spawn_child_setup (gpointer user_data) { int fd = GPOINTER_TO_INT (user_data); + fcntl (fd, F_SETFD, 0); } @@ -2316,8 +2353,8 @@ static gboolean add_dbus_proxy_args (GPtrArray *argv_array, GPtrArray *dbus_proxy_argv, gboolean enable_logging, - int sync_fds[2], - GError **error) + int sync_fds[2], + GError **error) { char x = 'x'; const char *proxy; @@ -2351,7 +2388,7 @@ add_dbus_proxy_args (GPtrArray *argv_array, g_ptr_array_add (dbus_proxy_argv, NULL); /* NULL terminate */ if (!g_spawn_async (NULL, - (char **)dbus_proxy_argv->pdata, + (char **) dbus_proxy_argv->pdata, NULL, G_SPAWN_SEARCH_PATH, dbus_spawn_child_setup, @@ -2380,19 +2417,19 @@ add_dbus_proxy_args (GPtrArray *argv_array, static inline void cleanup_seccomp (void *p) { - scmp_filter_ctx *pp = (scmp_filter_ctx *)p; + scmp_filter_ctx *pp = (scmp_filter_ctx *) p; if (*pp) seccomp_release (*pp); } static gboolean -setup_seccomp (GPtrArray *argv_array, +setup_seccomp (GPtrArray *argv_array, const char *arch, - gboolean devel, - GError **error) + gboolean devel, + GError **error) { - __attribute__ ((cleanup(cleanup_seccomp))) scmp_filter_ctx seccomp = NULL; + __attribute__((cleanup (cleanup_seccomp))) scmp_filter_ctx seccomp = NULL; /**** BEGIN NOTE ON CODE SHARING * @@ -2423,47 +2460,49 @@ setup_seccomp (GPtrArray *argv_array, * **** END NOTE ON CODE SHARING */ - struct { - int scall; + struct + { + int scall; struct scmp_arg_cmp *arg; } syscall_blacklist[] = { /* Block dmesg */ - {SCMP_SYS(syslog)}, + {SCMP_SYS (syslog)}, /* Useless old syscall */ - {SCMP_SYS(uselib)}, + {SCMP_SYS (uselib)}, /* Don't allow you to switch to bsd emulation or whatnot */ - {SCMP_SYS(personality)}, + {SCMP_SYS (personality)}, /* Don't allow disabling accounting */ - {SCMP_SYS(acct)}, + {SCMP_SYS (acct)}, /* 16-bit code is unnecessary in the sandbox, and modify_ldt is a historic source of interesting information leaks. */ - {SCMP_SYS(modify_ldt)}, + {SCMP_SYS (modify_ldt)}, /* Don't allow reading current quota use */ - {SCMP_SYS(quotactl)}, + {SCMP_SYS (quotactl)}, /* Scary VM/NUMA ops */ - {SCMP_SYS(move_pages)}, - {SCMP_SYS(mbind)}, - {SCMP_SYS(get_mempolicy)}, - {SCMP_SYS(set_mempolicy)}, - {SCMP_SYS(migrate_pages)}, + {SCMP_SYS (move_pages)}, + {SCMP_SYS (mbind)}, + {SCMP_SYS (get_mempolicy)}, + {SCMP_SYS (set_mempolicy)}, + {SCMP_SYS (migrate_pages)}, /* Don't allow subnamespace setups: */ - {SCMP_SYS(unshare)}, - {SCMP_SYS(mount)}, - {SCMP_SYS(pivot_root)}, - {SCMP_SYS(clone), &SCMP_A0(SCMP_CMP_MASKED_EQ, CLONE_NEWUSER, CLONE_NEWUSER)}, + {SCMP_SYS (unshare)}, + {SCMP_SYS (mount)}, + {SCMP_SYS (pivot_root)}, + {SCMP_SYS (clone), &SCMP_A0 (SCMP_CMP_MASKED_EQ, CLONE_NEWUSER, CLONE_NEWUSER)}, }; - struct { - int scall; + struct + { + int scall; struct scmp_arg_cmp *arg; } syscall_nondevel_blacklist[] = { /* Profiling operations; we expect these to be done by tools from outside * the sandbox. In particular perf has been the source of many CVEs. */ - {SCMP_SYS(perf_event_open)}, - {SCMP_SYS(ptrace)} + {SCMP_SYS (perf_event_open)}, + {SCMP_SYS (ptrace)} }; /* Blacklist all but unix, inet, inet6 and netlink */ int socket_family_blacklist[] = { @@ -2539,9 +2578,9 @@ setup_seccomp (GPtrArray *argv_array, { int scall = syscall_blacklist[i].scall; if (syscall_blacklist[i].arg) - r = seccomp_rule_add (seccomp, SCMP_ACT_ERRNO(EPERM), scall, 1, *syscall_blacklist[i].arg); + r = seccomp_rule_add (seccomp, SCMP_ACT_ERRNO (EPERM), scall, 1, *syscall_blacklist[i].arg); else - r = seccomp_rule_add (seccomp, SCMP_ACT_ERRNO(EPERM), scall, 0); + r = seccomp_rule_add (seccomp, SCMP_ACT_ERRNO (EPERM), scall, 0); if (r < 0 && r == -EFAULT /* unknown syscall */) return xdg_app_fail (error, "Failed to block syscall %d", scall); } @@ -2552,9 +2591,9 @@ setup_seccomp (GPtrArray *argv_array, { int scall = syscall_nondevel_blacklist[i].scall; if (syscall_nondevel_blacklist[i].arg) - r = seccomp_rule_add (seccomp, SCMP_ACT_ERRNO(EPERM), scall, 1, *syscall_nondevel_blacklist[i].arg); + r = seccomp_rule_add (seccomp, SCMP_ACT_ERRNO (EPERM), scall, 1, *syscall_nondevel_blacklist[i].arg); else - r = seccomp_rule_add (seccomp, SCMP_ACT_ERRNO(EPERM), scall, 0); + r = seccomp_rule_add (seccomp, SCMP_ACT_ERRNO (EPERM), scall, 0); if (r < 0 && r == -EFAULT /* unknown syscall */) return xdg_app_fail (error, "Failed to block syscall %d", scall); @@ -2568,9 +2607,9 @@ setup_seccomp (GPtrArray *argv_array, { int family = socket_family_blacklist[i]; if (i == G_N_ELEMENTS (socket_family_blacklist) - 1) - r = seccomp_rule_add_exact (seccomp, SCMP_ACT_ERRNO(EAFNOSUPPORT), SCMP_SYS(socket), 1, SCMP_A0(SCMP_CMP_GE, family)); + r = seccomp_rule_add_exact (seccomp, SCMP_ACT_ERRNO (EAFNOSUPPORT), SCMP_SYS (socket), 1, SCMP_A0 (SCMP_CMP_GE, family)); else - r = seccomp_rule_add_exact (seccomp, SCMP_ACT_ERRNO(EAFNOSUPPORT), SCMP_SYS(socket), 1, SCMP_A0(SCMP_CMP_EQ, family)); + r = seccomp_rule_add_exact (seccomp, SCMP_ACT_ERRNO (EAFNOSUPPORT), SCMP_SYS (socket), 1, SCMP_A0 (SCMP_CMP_EQ, family)); } fd = g_file_open_tmp ("xdg-app-seccomp-XXXXXX", &path, error); @@ -2597,12 +2636,12 @@ setup_seccomp (GPtrArray *argv_array, #endif gboolean -xdg_app_run_setup_base_argv (GPtrArray *argv_array, - GFile *runtime_files, - GFile *app_id_dir, - const char *arch, +xdg_app_run_setup_base_argv (GPtrArray *argv_array, + GFile *runtime_files, + GFile *app_id_dir, + const char *arch, XdgAppRunFlags flags, - GError **error) + GError **error) { const char *usr_links[] = {"lib", "lib32", "lib64", "bin", "sbin"}; g_autofree char *run_dir = g_strdup_printf ("/run/user/%d", getuid ()); @@ -2614,6 +2653,7 @@ xdg_app_run_setup_base_argv (GPtrArray *argv_array, g_autofree char *group_fd_str = NULL; g_autofree char *group_contents = NULL; struct group *g = getgrgid (getgid ()); + g_autoptr(GFile) etc = NULL; passwd_contents = g_strdup_printf ("%s:x:%d:%d:%s:%s:%s\n" @@ -2629,9 +2669,9 @@ xdg_app_run_setup_base_argv (GPtrArray *argv_array, passwd_fd_str = g_strdup_printf ("%d", passwd_fd); group_contents = g_strdup_printf ("%s:x:%d:%s\n" - "nfsnobody:x:65534:\n", - g->gr_name, - getgid (), g_get_user_name ()); + "nfsnobody:x:65534:\n", + g->gr_name, + getgid (), g_get_user_name ()); if ((group_fd = create_tmp_fd (group_contents, -1, error)) < 0) return FALSE; group_fd_str = g_strdup_printf ("%d", group_fd); @@ -2669,7 +2709,7 @@ xdg_app_run_setup_base_argv (GPtrArray *argv_array, { g_auto(GLnxDirFdIterator) dfd_iter = { 0, }; struct dirent *dent; - char path_buffer[PATH_MAX+1]; + char path_buffer[PATH_MAX + 1]; ssize_t symlink_size; glnx_dirfd_iterator_init_at (AT_FDCWD, gs_file_get_path_cached (etc), FALSE, &dfd_iter, NULL); @@ -2703,7 +2743,9 @@ xdg_app_run_setup_base_argv (GPtrArray *argv_array, add_args (argv_array, "--symlink", path_buffer, dest, NULL); } else - add_args (argv_array, "--bind", src, dest, NULL); + { + add_args (argv_array, "--bind", src, dest, NULL); + } } } @@ -2721,7 +2763,7 @@ xdg_app_run_setup_base_argv (GPtrArray *argv_array, NULL); } - for (i = 0; i < G_N_ELEMENTS(usr_links); i++) + for (i = 0; i < G_N_ELEMENTS (usr_links); i++) { const char *subdir = usr_links[i]; g_autoptr(GFile) runtime_subdir = g_file_get_child (runtime_files, subdir); @@ -2747,7 +2789,7 @@ xdg_app_run_setup_base_argv (GPtrArray *argv_array, return TRUE; } -gchar* +gchar * join_args (GPtrArray *argv_array, gsize *len_out) { gchar *string; @@ -2769,17 +2811,17 @@ join_args (GPtrArray *argv_array, gsize *len_out) } gboolean -xdg_app_run_app (const char *app_ref, - XdgAppDeploy *app_deploy, +xdg_app_run_app (const char *app_ref, + XdgAppDeploy *app_deploy, XdgAppContext *extra_context, - const char *custom_runtime, - const char *custom_runtime_version, + const char *custom_runtime, + const char *custom_runtime_version, XdgAppRunFlags flags, - const char *custom_command, - char *args[], - int n_args, - GCancellable *cancellable, - GError **error) + const char *custom_command, + char *args[], + int n_args, + GCancellable *cancellable, + GError **error) { g_autoptr(XdgAppDeploy) runtime_deploy = NULL; g_autoptr(GFile) app_files = NULL; @@ -2875,7 +2917,7 @@ xdg_app_run_app (const char *app_ref, app_files = xdg_app_deploy_get_files (app_deploy); if ((app_id_dir = xdg_app_ensure_data_dir (app_ref_parts[1], cancellable, error)) == NULL) - return FALSE; + return FALSE; envp = g_get_environ (); envp = xdg_app_run_apply_env_default (envp); @@ -2942,7 +2984,9 @@ xdg_app_run_app (const char *app_ref, } if (custom_command) - command = custom_command; + { + command = custom_command; + } else { default_command = g_key_file_get_string (metakey, "Application", "command", &my_error); @@ -2984,7 +3028,7 @@ xdg_app_run_app (const char *app_ref, if ((flags & XDG_APP_RUN_FLAG_BACKGROUND) != 0) { if (!g_spawn_async (NULL, - (char **)real_argv_array->pdata, + (char **) real_argv_array->pdata, envp, G_SPAWN_DEFAULT, NULL, NULL, @@ -2994,7 +3038,7 @@ xdg_app_run_app (const char *app_ref, } else { - if (execvpe (xdg_app_get_bwrap (), (char **)real_argv_array->pdata, envp) == -1) + if (execvpe (xdg_app_get_bwrap (), (char **) real_argv_array->pdata, envp) == -1) { g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errno), "Unable to start app"); return FALSE; diff --git a/common/xdg-app-run.h b/common/xdg-app-run.h index c94c33c..e4ebb05 100644 --- a/common/xdg-app-run.h +++ b/common/xdg-app-run.h @@ -26,7 +26,7 @@ #include "xdg-app-common-types.h" gboolean xdg_app_run_in_transient_unit (const char *app_id, - GError **error); + GError **error); #define XDG_APP_METADATA_GROUP_CONTEXT "Context" #define XDG_APP_METADATA_GROUP_SESSION_BUS_POLICY "Session Bus Policy" @@ -38,74 +38,74 @@ gboolean xdg_app_run_in_transient_unit (const char *app_id, #define XDG_APP_METADATA_KEY_PERSISTENT "persistent" #define XDG_APP_METADATA_KEY_DEVICES "devices" -XdgAppContext *xdg_app_context_new (void); -void xdg_app_context_free (XdgAppContext *context); -void xdg_app_context_merge (XdgAppContext *context, - XdgAppContext *other); -GOptionGroup *xdg_app_context_get_options (XdgAppContext *context); -gboolean xdg_app_context_load_metadata (XdgAppContext *context, - GKeyFile *metakey, - GError **error); -void xdg_app_context_save_metadata (XdgAppContext *context, - GKeyFile *metakey); -void xdg_app_context_allow_host_fs (XdgAppContext *context); -void xdg_app_context_set_session_bus_policy (XdgAppContext *context, - const char *name, - XdgAppPolicy policy); -void xdg_app_context_set_system_bus_policy (XdgAppContext *context, - const char *name, - XdgAppPolicy policy); +XdgAppContext *xdg_app_context_new (void); +void xdg_app_context_free (XdgAppContext *context); +void xdg_app_context_merge (XdgAppContext *context, + XdgAppContext *other); +GOptionGroup *xdg_app_context_get_options (XdgAppContext *context); +gboolean xdg_app_context_load_metadata (XdgAppContext *context, + GKeyFile *metakey, + GError **error); +void xdg_app_context_save_metadata (XdgAppContext *context, + GKeyFile *metakey); +void xdg_app_context_allow_host_fs (XdgAppContext *context); +void xdg_app_context_set_session_bus_policy (XdgAppContext *context, + const char *name, + XdgAppPolicy policy); +void xdg_app_context_set_system_bus_policy (XdgAppContext *context, + const char *name, + XdgAppPolicy policy); -G_DEFINE_AUTOPTR_CLEANUP_FUNC(XdgAppContext, xdg_app_context_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (XdgAppContext, xdg_app_context_free) -gboolean xdg_app_run_add_extension_args (GPtrArray *argv_array, - GKeyFile *metakey, - const char *full_ref, - GCancellable *cancellable, - GError **error); -void xdg_app_run_add_environment_args (GPtrArray *argv_array, - char ***envp_p, - GPtrArray *session_bus_proxy_argv, - GPtrArray *system_bus_proxy_argv, - const char *app_id, - XdgAppContext *context, - GFile *app_id_dir); -char ** xdg_app_run_get_minimal_env (gboolean devel); -char ** xdg_app_run_apply_env_default (char **envp); -char ** xdg_app_run_apply_env_appid (char **envp, - GFile *app_dir); -char ** xdg_app_run_apply_env_vars (char **envp, - XdgAppContext *context); +gboolean xdg_app_run_add_extension_args (GPtrArray *argv_array, + GKeyFile *metakey, + const char *full_ref, + GCancellable *cancellable, + GError **error); +void xdg_app_run_add_environment_args (GPtrArray *argv_array, + char ***envp_p, + GPtrArray *session_bus_proxy_argv, + GPtrArray *system_bus_proxy_argv, + const char *app_id, + XdgAppContext *context, + GFile *app_id_dir); +char ** xdg_app_run_get_minimal_env (gboolean devel); +char ** xdg_app_run_apply_env_default (char **envp); +char ** xdg_app_run_apply_env_appid (char **envp, + GFile *app_dir); +char ** xdg_app_run_apply_env_vars (char **envp, + XdgAppContext *context); GFile *xdg_app_get_data_dir (const char *app_id); -GFile *xdg_app_ensure_data_dir (const char *app_id, - GCancellable *cancellable, - GError **error); +GFile *xdg_app_ensure_data_dir (const char *app_id, + GCancellable *cancellable, + GError **error); typedef enum { - XDG_APP_RUN_FLAG_DEVEL = (1<<0), - XDG_APP_RUN_FLAG_BACKGROUND = (1<<1), - XDG_APP_RUN_FLAG_LOG_SESSION_BUS = (1<<2), - XDG_APP_RUN_FLAG_LOG_SYSTEM_BUS = (1<<3), + XDG_APP_RUN_FLAG_DEVEL = (1 << 0), + XDG_APP_RUN_FLAG_BACKGROUND = (1 << 1), + XDG_APP_RUN_FLAG_LOG_SESSION_BUS = (1 << 2), + XDG_APP_RUN_FLAG_LOG_SYSTEM_BUS = (1 << 3), } XdgAppRunFlags; -gboolean xdg_app_run_setup_base_argv (GPtrArray *argv_array, - GFile *runtime_files, - GFile *app_id_dir, - const char *arch, +gboolean xdg_app_run_setup_base_argv (GPtrArray *argv_array, + GFile *runtime_files, + GFile *app_id_dir, + const char *arch, XdgAppRunFlags flags, - GError **error); -gboolean xdg_app_run_app (const char *app_ref, - XdgAppDeploy *app_deploy, + GError **error); +gboolean xdg_app_run_app (const char *app_ref, + XdgAppDeploy *app_deploy, XdgAppContext *extra_context, - const char *custom_runtime, - const char *custom_runtime_version, + const char *custom_runtime, + const char *custom_runtime_version, XdgAppRunFlags flags, - const char *custom_command, - char *args[], - int n_args, - GCancellable *cancellable, - GError **error); + const char *custom_command, + char *args[], + int n_args, + GCancellable *cancellable, + GError **error); #endif /* __XDG_APP_RUN_H__ */ diff --git a/common/xdg-app-utils.c b/common/xdg-app-utils.c index cdd48d0..c2119af 100644 --- a/common/xdg-app-utils.c +++ b/common/xdg-app-utils.c @@ -40,8 +40,8 @@ GBytes * xdg_app_read_stream (GInputStream *in, - gboolean null_terminate, - GError **error) + gboolean null_terminate, + GError **error) { g_autoptr(GOutputStream) mem_stream = NULL; @@ -63,10 +63,10 @@ xdg_app_read_stream (GInputStream *in, } gint -xdg_app_strcmp0_ptr (gconstpointer a, - gconstpointer b) +xdg_app_strcmp0_ptr (gconstpointer a, + gconstpointer b) { - return g_strcmp0 (* (char * const *) a, * (char * const *) b); + return g_strcmp0 (*(char * const *) a, *(char * const *) b); } /* Returns end of matching path prefix, or NULL if no match */ @@ -182,7 +182,9 @@ xdg_app_get_kernel_arch (void) m = buf.machine; /* i?86 */ if (strlen (m) == 4 && m[0] == 'i' && m[2] == '8' && m[3] == '6') - arch = "i386"; + { + arch = "i386"; + } else if (g_str_has_prefix (m, "arm")) { if (g_str_has_suffix (m, "b")) @@ -244,6 +246,7 @@ const char * xdg_app_get_bwrap (void) { const char *e = g_getenv ("XDG_APP_BWRAP"); + if (e != NULL) return e; return HELPER; @@ -311,10 +314,8 @@ xdg_app_is_valid_name (const char *string) s = string; if (G_UNLIKELY (*s == '.')) - { - /* can't start with a . */ - goto out; - } + /* can't start with a . */ + goto out; else if (G_UNLIKELY (!is_valid_initial_name_character (*s))) goto out; @@ -330,7 +331,9 @@ xdg_app_is_valid_name (const char *string) dot_count++; } else if (G_UNLIKELY (!is_valid_name_character (*s))) - goto out; + { + goto out; + } s += 1; } @@ -339,7 +342,7 @@ xdg_app_is_valid_name (const char *string) ret = TRUE; - out: +out: return ret; } @@ -425,13 +428,13 @@ xdg_app_is_valid_branch (const char *string) ret = TRUE; - out: +out: return ret; } char ** xdg_app_decompose_ref (const char *full_ref, - GError **error) + GError **error) { g_auto(GStrv) parts = NULL; @@ -470,11 +473,11 @@ xdg_app_decompose_ref (const char *full_ref, } char * -xdg_app_compose_ref (gboolean app, +xdg_app_compose_ref (gboolean app, const char *name, const char *branch, const char *arch, - GError **error) + GError **error) { if (!xdg_app_is_valid_name (name)) { @@ -534,14 +537,15 @@ xdg_app_build_app_ref (const char *app, } char ** -xdg_app_list_deployed_refs (const char *type, - const char *name_prefix, - const char *branch, - const char *arch, +xdg_app_list_deployed_refs (const char *type, + const char *name_prefix, + const char *branch, + const char *arch, GCancellable *cancellable, - GError **error) + GError **error) { gchar **ret = NULL; + g_autoptr(GPtrArray) names = NULL; g_autoptr(GHashTable) hash = NULL; g_autoptr(XdgAppDir) user_dir = NULL; @@ -566,23 +570,23 @@ xdg_app_list_deployed_refs (const char *type, names = g_ptr_array_new (); g_hash_table_iter_init (&iter, hash); - while (g_hash_table_iter_next (&iter, (gpointer *)&key, NULL)) + while (g_hash_table_iter_next (&iter, (gpointer *) &key, NULL)) g_ptr_array_add (names, g_strdup (key)); g_ptr_array_sort (names, xdg_app_strcmp0_ptr); g_ptr_array_add (names, NULL); - ret = (char **)g_ptr_array_free (names, FALSE); + ret = (char **) g_ptr_array_free (names, FALSE); names = NULL; - out: +out: return ret; } GFile * -xdg_app_find_deploy_dir_for_ref (const char *ref, +xdg_app_find_deploy_dir_for_ref (const char *ref, GCancellable *cancellable, - GError **error) + GError **error) { g_autoptr(XdgAppDir) user_dir = NULL; g_autoptr(XdgAppDir) system_dir = NULL; @@ -605,9 +609,9 @@ xdg_app_find_deploy_dir_for_ref (const char *ref, } XdgAppDeploy * -xdg_app_find_deploy_for_ref (const char *ref, +xdg_app_find_deploy_for_ref (const char *ref, GCancellable *cancellable, - GError **error) + GError **error) { g_autoptr(XdgAppDir) user_dir = NULL; g_autoptr(XdgAppDir) system_dir = NULL; @@ -631,16 +635,17 @@ xdg_app_find_deploy_for_ref (const char *ref, static gboolean -overlay_symlink_tree_dir (int source_parent_fd, - const char *source_name, - const char *source_symlink_prefix, - int destination_parent_fd, - const char *destination_name, - GCancellable *cancellable, - GError **error) +overlay_symlink_tree_dir (int source_parent_fd, + const char *source_name, + const char *source_symlink_prefix, + int destination_parent_fd, + const char *destination_name, + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; int res; + g_auto(GLnxDirFdIterator) source_iter = { 0 }; glnx_fd_close int destination_dfd = -1; struct dirent *dent; @@ -700,17 +705,17 @@ overlay_symlink_tree_dir (int source_parent_fd, } ret = TRUE; - out: +out: return ret; } gboolean -xdg_app_overlay_symlink_tree (GFile *source, - GFile *destination, - const char *symlink_prefix, - GCancellable *cancellable, - GError **error) +xdg_app_overlay_symlink_tree (GFile *source, + GFile *destination, + const char *symlink_prefix, + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; @@ -726,15 +731,15 @@ xdg_app_overlay_symlink_tree (GFile *source, ret = TRUE; - out: +out: return ret; } static gboolean -remove_dangling_symlinks (int parent_fd, - const char *name, - GCancellable *cancellable, - GError **error) +remove_dangling_symlinks (int parent_fd, + const char *name, + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; struct dirent *dent; @@ -771,15 +776,15 @@ remove_dangling_symlinks (int parent_fd, } ret = TRUE; - out: +out: return ret; } gboolean -xdg_app_remove_dangling_symlinks (GFile *dir, - GCancellable *cancellable, - GError **error) +xdg_app_remove_dangling_symlinks (GFile *dir, + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; @@ -790,17 +795,17 @@ xdg_app_remove_dangling_symlinks (GFile *dir, ret = TRUE; - out: +out: return ret; } /* Based on g_mkstemp from glib */ gint -xdg_app_mkstempat (int dir_fd, +xdg_app_mkstempat (int dir_fd, gchar *tmpl, - int flags, - int mode) + int flags, + int mode) { char *XXXXXX; int count, fd; @@ -859,17 +864,19 @@ xdg_app_mkstempat (int dir_fd, return -1; } -struct XdgAppTablePrinter { +struct XdgAppTablePrinter +{ GPtrArray *rows; GPtrArray *current; - int n_columns; + int n_columns; }; XdgAppTablePrinter * xdg_app_table_printer_new (void) { XdgAppTablePrinter *printer = g_new0 (XdgAppTablePrinter, 1); - printer->rows = g_ptr_array_new_with_free_func ((GDestroyNotify)g_strfreev); + + printer->rows = g_ptr_array_new_with_free_func ((GDestroyNotify) g_strfreev); printer->current = g_ptr_array_new_with_free_func (g_free); return printer; @@ -885,14 +892,14 @@ xdg_app_table_printer_free (XdgAppTablePrinter *printer) void xdg_app_table_printer_add_column (XdgAppTablePrinter *printer, - const char *text) + const char *text) { g_ptr_array_add (printer->current, text ? g_strdup (text) : g_strdup ("")); } void xdg_app_table_printer_append_with_comma (XdgAppTablePrinter *printer, - const char *text) + const char *text) { char *old, *new; @@ -936,7 +943,7 @@ xdg_app_table_printer_print (XdgAppTablePrinter *printer) for (i = 0; i < printer->rows->len; i++) { - char **row = g_ptr_array_index (printer->rows,i); + char **row = g_ptr_array_index (printer->rows, i); for (j = 0; row[j] != NULL; j++) widths[j] = MAX (widths[j], strlen (row[j])); @@ -944,7 +951,7 @@ xdg_app_table_printer_print (XdgAppTablePrinter *printer) for (i = 0; i < printer->rows->len; i++) { - char **row = g_ptr_array_index (printer->rows,i); + char **row = g_ptr_array_index (printer->rows, i); for (j = 0; row[j] != NULL; j++) g_print ("%s%-*s", (j == 0) ? "" : " ", widths[j], row[j]); @@ -955,11 +962,12 @@ xdg_app_table_printer_print (XdgAppTablePrinter *printer) static GHashTable *app_ids; -typedef struct { - char *name; - char *app_id; +typedef struct +{ + char *name; + char *app_id; gboolean exited; - GList *pending; + GList *pending; } AppIdInfo; static void @@ -975,17 +983,18 @@ ensure_app_ids (void) { if (app_ids == NULL) app_ids = g_hash_table_new_full (g_str_hash, g_str_equal, - NULL, (GDestroyNotify)app_id_info_free); + NULL, (GDestroyNotify) app_id_info_free); } static void -got_credentials_cb (GObject *source_object, +got_credentials_cb (GObject *source_object, GAsyncResult *res, - gpointer user_data) + gpointer user_data) { AppIdInfo *info = user_data; - g_autoptr (GDBusMessage) reply = NULL; - g_autoptr (GError) error = NULL; + + g_autoptr(GDBusMessage) reply = NULL; + g_autoptr(GError) error = NULL; GList *l; reply = g_dbus_connection_send_message_with_reply_finish (G_DBUS_CONNECTION (source_object), @@ -1017,7 +1026,7 @@ got_credentials_cb (GObject *source_object, if (g_str_has_prefix (scope, "xdg-app-") && g_str_has_suffix (scope, ".scope")) { - const char *name = scope + strlen("xdg-app-"); + const char *name = scope + strlen ("xdg-app-"); char *dash = strchr (name, '-'); if (dash != NULL) { @@ -1026,7 +1035,9 @@ got_credentials_cb (GObject *source_object, } } else - info->app_id = g_strdup (""); + { + info->app_id = g_strdup (""); + } } } g_strfreev (lines); @@ -1059,6 +1070,7 @@ xdg_app_invocation_lookup_app_id (GDBusMethodInvocation *invocation, { GDBusConnection *connection = g_dbus_method_invocation_get_connection (invocation); const gchar *sender = g_dbus_method_invocation_get_sender (invocation); + g_autoptr(GTask) task = NULL; AppIdInfo *info; @@ -1076,15 +1088,17 @@ xdg_app_invocation_lookup_app_id (GDBusMethodInvocation *invocation, } if (info->app_id) - g_task_return_pointer (task, g_strdup (info->app_id), g_free); + { + g_task_return_pointer (task, g_strdup (info->app_id), g_free); + } else { if (info->pending == NULL) { - g_autoptr (GDBusMessage) msg = g_dbus_message_new_method_call ("org.freedesktop.DBus", - "/org/freedesktop/DBus", - "org.freedesktop.DBus", - "GetConnectionUnixProcessID"); + g_autoptr(GDBusMessage) msg = g_dbus_message_new_method_call ("org.freedesktop.DBus", + "/org/freedesktop/DBus", + "org.freedesktop.DBus", + "GetConnectionUnixProcessID"); g_dbus_message_set_body (msg, g_variant_new ("(s)", sender)); g_dbus_connection_send_message_with_reply (connection, msg, @@ -1102,8 +1116,8 @@ xdg_app_invocation_lookup_app_id (GDBusMethodInvocation *invocation, char * xdg_app_invocation_lookup_app_id_finish (GDBusMethodInvocation *invocation, - GAsyncResult *result, - GError **error) + GAsyncResult *result, + GError **error) { return g_task_propagate_pointer (G_TASK (result), error); } @@ -1118,6 +1132,7 @@ name_owner_changed (GDBusConnection *connection, gpointer user_data) { const char *name, *from, *to; + g_variant_get (parameters, "(sss)", &name, &from, &to); ensure_app_ids (); @@ -1153,10 +1168,10 @@ xdg_app_connection_track_name_owners (GDBusConnection *connection) typedef struct { - GError *error; - GError *splice_error; + GError *error; + GError *splice_error; GMainLoop *loop; - int refs; + int refs; } SpawnData; static void @@ -1168,9 +1183,9 @@ spawn_data_exit (SpawnData *data) } static void -spawn_output_spliced_cb (GObject *obj, - GAsyncResult *result, - gpointer user_data) +spawn_output_spliced_cb (GObject *obj, + GAsyncResult *result, + gpointer user_data) { SpawnData *data = user_data; @@ -1179,9 +1194,9 @@ spawn_output_spliced_cb (GObject *obj, } static void -spawn_exit_cb (GObject *obj, - GAsyncResult *result, - gpointer user_data) +spawn_exit_cb (GObject *obj, + GAsyncResult *result, + gpointer user_data) { SpawnData *data = user_data; @@ -1190,11 +1205,11 @@ spawn_exit_cb (GObject *obj, } gboolean -xdg_app_spawn (GFile *dir, - char **output, - GError **error, - const gchar *argv0, - va_list ap) +xdg_app_spawn (GFile *dir, + char **output, + GError **error, + const gchar *argv0, + va_list ap) { g_autoptr(GSubprocessLauncher) launcher = NULL; g_autoptr(GSubprocess) subp = NULL; @@ -1238,13 +1253,13 @@ xdg_app_spawn (GFile *dir, data.refs++; in = g_subprocess_get_stdout_pipe (subp); out = g_memory_output_stream_new_resizable (); - g_output_stream_splice_async (out, - in, - G_OUTPUT_STREAM_SPLICE_NONE, - 0, - NULL, - spawn_output_spliced_cb, - &data); + g_output_stream_splice_async (out, + in, + G_OUTPUT_STREAM_SPLICE_NONE, + 0, + NULL, + spawn_output_spliced_cb, + &data); } g_subprocess_wait_async (subp, NULL, spawn_exit_cb, &data); @@ -1277,11 +1292,11 @@ xdg_app_spawn (GFile *dir, gboolean -xdg_app_cp_a (GFile *src, - GFile *dest, - XdgAppCpFlags flags, - GCancellable *cancellable, - GError **error) +xdg_app_cp_a (GFile *src, + GFile *dest, + XdgAppCpFlags flags, + GCancellable *cancellable, + GError **error) { gboolean ret = FALSE; GFileEnumerator *enumerator = NULL; @@ -1300,7 +1315,7 @@ xdg_app_cp_a (GFile *src, goto out; src_info = g_file_query_info (src, "standard::name,unix::mode,unix::uid,unix::gid," \ - "time::modified,time::modified-usec,time::access,time::access-usec", + "time::modified,time::modified-usec,time::access,time::access-usec", G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, cancellable, error); if (!src_info) @@ -1356,7 +1371,8 @@ xdg_app_cp_a (GFile *src, if (!file_info) break; - if (dest_child) g_object_unref (dest_child); + if (dest_child) + g_object_unref (dest_child); dest_child = g_file_get_child (dest, g_file_info_get_name (file_info)); if (g_file_info_get_file_type (file_info) == G_FILE_TYPE_DIRECTORY) @@ -1391,7 +1407,7 @@ xdg_app_cp_a (GFile *src, goto out; ret = TRUE; - out: +out: if (dest_dfd != -1) (void) close (dest_dfd); g_clear_object (&src_info); @@ -1401,17 +1417,17 @@ xdg_app_cp_a (GFile *src, } gboolean -xdg_app_variant_save (GFile *dest, - GVariant *variant, +xdg_app_variant_save (GFile *dest, + GVariant *variant, GCancellable *cancellable, - GError **error) + GError **error) { g_autoptr(GOutputStream) out = NULL; gsize bytes_written; - out = (GOutputStream*)g_file_replace (dest, NULL, FALSE, - G_FILE_CREATE_REPLACE_DESTINATION, - cancellable, error); + out = (GOutputStream *) g_file_replace (dest, NULL, FALSE, + G_FILE_CREATE_REPLACE_DESTINATION, + cancellable, error); if (out == NULL) return FALSE; @@ -1458,7 +1474,9 @@ xdg_app_variant_bsearch_str (GVariant *array, cmp = strcmp (cur, str); if (cmp < 0) - imin = imid + 1; + { + imin = imid + 1; + } else if (cmp > 0) { if (imid == 0) @@ -1507,7 +1525,7 @@ xdg_app_summary_lookup_ref (GVariant *summary, const char *ref, char **out_check gboolean xdg_app_repo_set_title (OstreeRepo *repo, const char *title, - GError **error) + GError **error) { g_autoptr(GKeyFile) config = NULL; @@ -1528,13 +1546,13 @@ xdg_app_repo_set_title (OstreeRepo *repo, "unix::device,unix::inode,unix::mode,unix::uid,unix::gid,unix::rdev") static gboolean -_xdg_app_repo_collect_sizes (OstreeRepo *repo, - GFile *file, - GFileInfo *file_info, - guint64 *installed_size, - guint64 *download_size, +_xdg_app_repo_collect_sizes (OstreeRepo *repo, + GFile *file, + GFileInfo *file_info, + guint64 *installed_size, + guint64 *download_size, GCancellable *cancellable, - GError **error) + GError **error) { g_autoptr(GFileEnumerator) dir_enum = NULL; GFileInfo *child_info_tmp; @@ -1584,12 +1602,12 @@ _xdg_app_repo_collect_sizes (OstreeRepo *repo, } gboolean -xdg_app_repo_collect_sizes (OstreeRepo *repo, - GFile *root, - guint64 *installed_size, - guint64 *download_size, +xdg_app_repo_collect_sizes (OstreeRepo *repo, + GFile *root, + guint64 *installed_size, + guint64 *download_size, GCancellable *cancellable, - GError **error) + GError **error) { return _xdg_app_repo_collect_sizes (repo, root, NULL, installed_size, download_size, cancellable, error); } @@ -1605,6 +1623,7 @@ xdg_app_repo_update (OstreeRepo *repo, GVariantBuilder ref_data_builder; GKeyFile *config; g_autofree char *title = NULL; + g_autoptr(GHashTable) refs = NULL; GList *ordered_keys = NULL; GList *l = NULL; @@ -1614,22 +1633,20 @@ xdg_app_repo_update (OstreeRepo *repo, config = ostree_repo_get_config (repo); if (config) - { - title = g_key_file_get_string (config, "xdg-app", "title", NULL); - } + title = g_key_file_get_string (config, "xdg-app", "title", NULL); if (title) g_variant_builder_add (&builder, "{sv}", "xa.title", g_variant_new_string (title)); - g_variant_builder_init (&ref_data_builder, G_VARIANT_TYPE("a{s(tts)}")); + g_variant_builder_init (&ref_data_builder, G_VARIANT_TYPE ("a{s(tts)}")); if (!ostree_repo_list_refs (repo, NULL, &refs, cancellable, error)) return FALSE; ordered_keys = g_hash_table_get_keys (refs); - ordered_keys = g_list_sort (ordered_keys, (GCompareFunc)strcmp); + ordered_keys = g_list_sort (ordered_keys, (GCompareFunc) strcmp); for (l = ordered_keys; l; l = l->next) { @@ -1708,8 +1725,8 @@ xdg_app_mtree_create_root (OstreeRepo *repo, static OstreeRepoCommitFilterResult commit_filter (OstreeRepo *repo, const char *path, - GFileInfo *file_info, - gpointer user_data) + GFileInfo *file_info, + gpointer user_data) { guint current_mode; @@ -1725,10 +1742,10 @@ commit_filter (OstreeRepo *repo, } static gboolean -validate_component (XdgAppXml *component, +validate_component (XdgAppXml *component, const char *ref, const char *id, - char **tags, + char **tags, const char *runtime, const char *sdk) { @@ -1820,17 +1837,18 @@ validate_component (XdgAppXml *component, } gboolean -xdg_app_appstream_xml_migrate (XdgAppXml *source, - XdgAppXml *dest, +xdg_app_appstream_xml_migrate (XdgAppXml *source, + XdgAppXml *dest, const char *ref, const char *id, - GKeyFile *metadata) + GKeyFile *metadata) { XdgAppXml *source_components; XdgAppXml *dest_components; XdgAppXml *component; XdgAppXml *prev_component; gboolean migrated = FALSE; + g_auto(GStrv) tags = NULL; g_autofree const char *runtime = NULL; g_autofree const char *sdk = NULL; @@ -1866,7 +1884,9 @@ xdg_app_appstream_xml_migrate (XdgAppXml *source, migrated = TRUE; } else - prev_component = component; + { + prev_component = component; + } component = next; } @@ -1876,16 +1896,17 @@ xdg_app_appstream_xml_migrate (XdgAppXml *source, static gboolean copy_icon (const char *id, - GFile *root, - GFile *dest, + GFile *root, + GFile *dest, const char *size, - GError **error) + GError **error) { g_autofree char *icon_name = g_strconcat (id, ".png", NULL); + g_autoptr(GFile) icons_dir = g_file_resolve_relative_path (root, "files/share/app-info/icons/xdg-app"); - g_autoptr(GFile) size_dir =g_file_get_child (icons_dir, size); + g_autoptr(GFile) size_dir = g_file_get_child (icons_dir, size); g_autoptr(GFile) icon_file = g_file_get_child (size_dir, icon_name); g_autoptr(GFile) dest_dir = g_file_get_child (dest, "icons"); g_autoptr(GFile) dest_size_dir = g_file_get_child (dest_dir, size); @@ -1894,16 +1915,16 @@ copy_icon (const char *id, g_autoptr(GOutputStream) out = NULL; gssize n_bytes_written; - in = (GInputStream*)g_file_read (icon_file, NULL, error); + in = (GInputStream *) g_file_read (icon_file, NULL, error); if (!in) return FALSE; if (!gs_file_ensure_directory (dest_size_dir, TRUE, NULL, error)) return FALSE; - out = (GOutputStream*)g_file_replace (dest_file, NULL, FALSE, - G_FILE_CREATE_REPLACE_DESTINATION, - NULL, error); + out = (GOutputStream *) g_file_replace (dest_file, NULL, FALSE, + G_FILE_CREATE_REPLACE_DESTINATION, + NULL, error); if (!out) return FALSE; @@ -1917,13 +1938,13 @@ copy_icon (const char *id, } static gboolean -extract_appstream (OstreeRepo *repo, - XdgAppXml *appstream_root, - const char *ref, - const char *id, - GFile *dest, - GCancellable *cancellable, - GError **error) +extract_appstream (OstreeRepo *repo, + XdgAppXml *appstream_root, + const char *ref, + const char *id, + GFile *dest, + GCancellable *cancellable, + GError **error) { g_autoptr(GFile) root = NULL; g_autoptr(GFile) xmls_dir = NULL; @@ -1955,7 +1976,7 @@ extract_appstream (OstreeRepo *repo, appstream_basename = g_strconcat (id, ".xml.gz", NULL); appstream_file = g_file_get_child (xmls_dir, appstream_basename); - in = (GInputStream*)g_file_read (appstream_file, cancellable, error); + in = (GInputStream *) g_file_read (appstream_file, cancellable, error); if (!in) return FALSE; @@ -1992,7 +2013,7 @@ extract_appstream (OstreeRepo *repo, } g_print ("Extracting icons for component %s\n", component_id_text); - component_id_text[strlen(component_id_text)-strlen(".desktop")] = 0; + component_id_text[strlen (component_id_text) - strlen (".desktop")] = 0; if (!copy_icon (component_id_text, root, dest, "64x64", &my_error)) { @@ -2035,7 +2056,7 @@ xdg_app_appstream_xml_new (void) GBytes * xdg_app_appstream_xml_root_to_data (XdgAppXml *appstream_root, - GError **error) + GError **error) { g_autoptr(GString) xml = NULL; g_autoptr(GZlibCompressor) compressor = NULL; @@ -2060,11 +2081,11 @@ xdg_app_appstream_xml_root_to_data (XdgAppXml *appstream_root, } gboolean -xdg_app_repo_generate_appstream (OstreeRepo *repo, - const char **gpg_key_ids, - const char *gpg_homedir, - GCancellable *cancellable, - GError **error) +xdg_app_repo_generate_appstream (OstreeRepo *repo, + const char **gpg_key_ids, + const char *gpg_homedir, + GCancellable *cancellable, + GError **error) { g_autoptr(GHashTable) all_refs = NULL; g_autoptr(GHashTable) arches = NULL; @@ -2095,7 +2116,7 @@ xdg_app_repo_generate_appstream (OstreeRepo *repo, arch = split[2]; if (!g_hash_table_contains (arches, arch)) - g_hash_table_insert (arches, g_strdup (arch), GINT_TO_POINTER(1)); + g_hash_table_insert (arches, g_strdup (arch), GINT_TO_POINTER (1)); } g_hash_table_iter_init (&iter, arches); @@ -2174,7 +2195,7 @@ xdg_app_repo_generate_appstream (OstreeRepo *repo, mtree = ostree_mutable_tree_new (); modifier = ostree_repo_commit_modifier_new (OSTREE_REPO_COMMIT_MODIFIER_FLAGS_SKIP_XATTRS, - (OstreeRepoCommitFilter)commit_filter, NULL, NULL); + (OstreeRepoCommitFilter) commit_filter, NULL, NULL); if (!ostree_repo_write_directory_to_mtree (repo, G_FILE (tmpdir_file), mtree, modifier, cancellable, error)) goto out; @@ -2226,12 +2247,14 @@ xdg_app_repo_generate_appstream (OstreeRepo *repo, goto out; } else - ostree_repo_abort_transaction (repo, cancellable, NULL); + { + ostree_repo_abort_transaction (repo, cancellable, NULL); + } } return TRUE; - out: +out: ostree_repo_abort_transaction (repo, cancellable, NULL); return FALSE; } @@ -2263,7 +2286,7 @@ xdg_app_extension_new (const char *id, } GList * -xdg_app_list_extensions (GKeyFile *metakey, +xdg_app_list_extensions (GKeyFile *metakey, const char *arch, const char *default_branch) { @@ -2332,7 +2355,8 @@ xdg_app_list_extensions (GKeyFile *metakey, } -typedef struct { +typedef struct +{ XdgAppXml *current; } XmlData; @@ -2340,6 +2364,7 @@ XdgAppXml * xdg_app_xml_new (const gchar *element_name) { XdgAppXml *node = g_new0 (XdgAppXml, 1); + node->element_name = g_strdup (element_name); return node; } @@ -2348,6 +2373,7 @@ XdgAppXml * xdg_app_xml_new_text (const gchar *text) { XdgAppXml *node = g_new0 (XdgAppXml, 1); + node->text = g_strdup (text); return node; } @@ -2376,8 +2402,8 @@ xml_start_element (GMarkupParseContext *context, XdgAppXml *node; node = xdg_app_xml_new (element_name); - node->attribute_names = g_strdupv ((char **)attribute_names); - node->attribute_values = g_strdupv ((char **)attribute_values); + node->attribute_names = g_strdupv ((char **) attribute_names); + node->attribute_values = g_strdupv ((char **) attribute_values); xdg_app_xml_add (data->current, node); data->current = node; @@ -2390,6 +2416,7 @@ xml_end_element (GMarkupParseContext *context, GError **error) { XmlData *data = user_data; + data->current = data->current->parent; } @@ -2524,7 +2551,7 @@ xdg_app_xml_unlink (XdgAppXml *node, } XdgAppXml * -xdg_app_xml_find (XdgAppXml *node, +xdg_app_xml_find (XdgAppXml *node, const char *type, XdgAppXml **prev_child_out) { @@ -2554,15 +2581,14 @@ xdg_app_xml_find (XdgAppXml *node, XdgAppXml * xdg_app_xml_parse (GInputStream *in, - gboolean compressed, + gboolean compressed, GCancellable *cancellable, - GError **error) - + GError **error) { g_autoptr(GInputStream) real_in = NULL; g_autoptr(XdgAppXml) xml_root = NULL; XmlData data = { 0 }; - char buffer[32*1024]; + char buffer[32 * 1024]; gssize len; g_autoptr(GMarkupParseContext) ctx = NULL; @@ -2573,7 +2599,9 @@ xdg_app_xml_parse (GInputStream *in, real_in = g_converter_input_stream_new (in, G_CONVERTER (decompressor)); } else - real_in = g_object_ref (in); + { + real_in = g_object_ref (in); + } xml_root = xdg_app_xml_new ("root"); data.current = xml_root; @@ -2602,7 +2630,7 @@ xdg_app_xml_parse (GInputStream *in, static inline guint64 maybe_swap_endian_u64 (gboolean swap, - guint64 v) + guint64 v) { if (!swap) return v; @@ -2613,6 +2641,7 @@ static guint64 xdg_app_bundle_get_installed_size (GVariant *bundle, gboolean byte_swap) { guint64 total_size = 0, total_usize = 0; + g_autoptr(GVariant) meta_entries = NULL; guint i, n_parts; @@ -2637,10 +2666,10 @@ xdg_app_bundle_get_installed_size (GVariant *bundle, gboolean byte_swap) } GVariant * -xdg_app_bundle_load (GFile *file, - char **commit, - char **ref, - char **origin, +xdg_app_bundle_load (GFile *file, + char **commit, + char **ref, + char **origin, guint64 *installed_size, GBytes **gpg_keys, GError **error) @@ -2683,9 +2712,11 @@ xdg_app_bundle_load (GFile *file, case 'l': file_byte_order = G_LITTLE_ENDIAN; break; + case 'B': file_byte_order = G_BIG_ENDIAN; break; + default: break; } @@ -2710,16 +2741,18 @@ xdg_app_bundle_load (GFile *file, if (gpg_keys != NULL) { - g_autoptr(GVariant) gpg_value = g_variant_lookup_value (metadata, "gpg-keys", - G_VARIANT_TYPE("ay")); - if (gpg_value) - { - gsize n_elements; - const char *data = g_variant_get_fixed_array (gpg_value, &n_elements, 1); - *gpg_keys = g_bytes_new (data, n_elements); - } - else + g_autoptr(GVariant) gpg_value = g_variant_lookup_value (metadata, "gpg-keys", + G_VARIANT_TYPE ("ay")); + if (gpg_value) + { + gsize n_elements; + const char *data = g_variant_get_fixed_array (gpg_value, &n_elements, 1); + *gpg_keys = g_bytes_new (data, n_elements); + } + else + { *gpg_keys = NULL; + } } /* Make a copy of the data so we can return it after freeing the file */ @@ -2730,16 +2763,17 @@ xdg_app_bundle_load (GFile *file, } gboolean -xdg_app_pull_from_bundle (OstreeRepo *repo, - GFile *file, - const char *remote, - const char *ref, - gboolean require_gpg_signature, +xdg_app_pull_from_bundle (OstreeRepo *repo, + GFile *file, + const char *remote, + const char *ref, + gboolean require_gpg_signature, GCancellable *cancellable, - GError **error) + GError **error) { g_autofree char *metadata_contents = NULL; g_autofree char *to_checksum = NULL; + g_autoptr(GFile) root = NULL; g_autoptr(GFile) metadata_file = NULL; g_autoptr(GInputStream) in = NULL; @@ -2774,7 +2808,9 @@ xdg_app_pull_from_bundle (OstreeRepo *repo, * is no gpg key specified in the bundle or by the user */ if (g_error_matches (my_error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND) && !require_gpg_signature) - g_clear_error (&my_error); + { + g_clear_error (&my_error); + } else { g_propagate_error (error, g_steal_pointer (&my_error)); @@ -2801,10 +2837,10 @@ xdg_app_pull_from_bundle (OstreeRepo *repo, header, because you may have made decisions on wheter to install it or not based on that data. */ metadata_file = g_file_resolve_relative_path (root, "metadata"); - in = (GInputStream*)g_file_read (metadata_file, cancellable, NULL); + in = (GInputStream *) g_file_read (metadata_file, cancellable, NULL); if (in != NULL) { - g_autoptr(GMemoryOutputStream) data_stream = (GMemoryOutputStream*)g_memory_output_stream_new_resizable (); + g_autoptr(GMemoryOutputStream) data_stream = (GMemoryOutputStream *) g_memory_output_stream_new_resizable (); if (g_output_stream_splice (G_OUTPUT_STREAM (data_stream), in, G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE, @@ -2819,7 +2855,9 @@ xdg_app_pull_from_bundle (OstreeRepo *repo, strcmp (metadata_contents, g_memory_output_stream_get_data (data_stream)) == 0; } else - metadata_valid = (metadata_contents == NULL); + { + metadata_valid = (metadata_contents == NULL); + } if (!metadata_valid) { @@ -2834,19 +2872,20 @@ xdg_app_pull_from_bundle (OstreeRepo *repo, /* This allocates and locks a subdir of the tmp dir, using an existing * one with the same prefix if it is not in use already. */ gboolean -xdg_app_allocate_tmpdir (int tmpdir_dfd, - const char *tmpdir_relpath, - const char *tmpdir_prefix, - char **tmpdir_name_out, - int *tmpdir_fd_out, +xdg_app_allocate_tmpdir (int tmpdir_dfd, + const char *tmpdir_relpath, + const char *tmpdir_prefix, + char **tmpdir_name_out, + int *tmpdir_fd_out, GLnxLockFile *file_lock_out, - gboolean *reusing_dir_out, + gboolean *reusing_dir_out, GCancellable *cancellable, - GError **error) + GError **error) { gboolean reusing_dir = FALSE; g_autofree char *tmpdir_name = NULL; glnx_fd_close int tmpdir_fd = -1; + g_auto(GLnxDirFdIterator) dfd_iter = { 0, }; /* Look for existing tmpdir (with same prefix) to reuse */ @@ -2879,7 +2918,9 @@ xdg_app_allocate_tmpdir (int tmpdir_dfd, &existing_tmpdir_fd, &local_error)) { if (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_DIRECTORY)) - continue; + { + continue; + } else { g_propagate_error (error, g_steal_pointer (&local_error)); @@ -2895,7 +2936,9 @@ xdg_app_allocate_tmpdir (int tmpdir_dfd, file_lock_out, &local_error)) { if (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK)) - continue; + { + continue; + } else { g_propagate_error (error, g_steal_pointer (&local_error)); @@ -2906,7 +2949,7 @@ xdg_app_allocate_tmpdir (int tmpdir_dfd, /* Touch the reused directory so that we don't accidentally * remove it due to being old when cleaning up the tmpdir */ - (void)futimens (existing_tmpdir_fd, NULL); + (void) futimens (existing_tmpdir_fd, NULL); /* We found an existing tmpdir which we managed to lock */ tmpdir_name = g_strdup (dent->d_name); @@ -2938,7 +2981,9 @@ xdg_app_allocate_tmpdir (int tmpdir_dfd, file_lock_out, &local_error)) { if (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK)) - continue; + { + continue; + } else { g_propagate_error (error, g_steal_pointer (&local_error)); diff --git a/common/xdg-app-utils.h b/common/xdg-app-utils.h index 7dae810..e342145 100644 --- a/common/xdg-app-utils.h +++ b/common/xdg-app-utils.h @@ -31,10 +31,12 @@ #include "xdg-app-dir.h" #include <ostree.h> -gboolean xdg_app_fail (GError **error, const char *format, ...); +gboolean xdg_app_fail (GError **error, + const char *format, + ...); -gint xdg_app_strcmp0_ptr (gconstpointer a, - gconstpointer b); +gint xdg_app_strcmp0_ptr (gconstpointer a, + gconstpointer b); const char * xdg_app_path_match_prefix (const char *pattern, const char *path); @@ -44,19 +46,19 @@ const char * xdg_app_get_arch (void); const char * xdg_app_get_bwrap (void); GBytes * xdg_app_read_stream (GInputStream *in, - gboolean null_terminate, - GError **error); + gboolean null_terminate, + GError **error); -gboolean xdg_app_variant_save (GFile *dest, - GVariant *variant, +gboolean xdg_app_variant_save (GFile *dest, + GVariant *variant, GCancellable *cancellable, - GError **error); + GError **error); gboolean xdg_app_variant_bsearch_str (GVariant *array, const char *str, int *out_pos); -gboolean xdg_app_summary_lookup_ref (GVariant *summary, +gboolean xdg_app_summary_lookup_ref (GVariant *summary, const char *ref, - char **out_checksum); + char **out_checksum); gboolean xdg_app_has_name_prefix (const char *string, const char *name); @@ -64,13 +66,13 @@ gboolean xdg_app_is_valid_name (const char *string); gboolean xdg_app_is_valid_branch (const char *string); char **xdg_app_decompose_ref (const char *ref, - GError **error); + GError **error); -char * xdg_app_compose_ref (gboolean app, +char * xdg_app_compose_ref (gboolean app, const char *name, const char *branch, const char *arch, - GError **error); + GError **error); char * xdg_app_build_untyped_ref (const char *runtime, const char *branch, @@ -81,44 +83,44 @@ char * xdg_app_build_runtime_ref (const char *runtime, char * xdg_app_build_app_ref (const char *app, const char *branch, const char *arch); -GFile * xdg_app_find_deploy_dir_for_ref (const char *ref, +GFile * xdg_app_find_deploy_dir_for_ref (const char *ref, GCancellable *cancellable, - GError **error); -XdgAppDeploy * xdg_app_find_deploy_for_ref (const char *ref, + GError **error); +XdgAppDeploy * xdg_app_find_deploy_for_ref (const char *ref, GCancellable *cancellable, - GError **error); -char ** xdg_app_list_deployed_refs (const char *type, - const char *name_prefix, - const char *branch, - const char *arch, - GCancellable *cancellable, - GError **error); - -gboolean xdg_app_overlay_symlink_tree (GFile *source, - GFile *destination, - const char *symlink_prefix, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_remove_dangling_symlinks (GFile *dir, - GCancellable *cancellable, - GError **error); - -void xdg_app_invocation_lookup_app_id (GDBusMethodInvocation *invocation, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data); - -char *xdg_app_invocation_lookup_app_id_finish (GDBusMethodInvocation *invocation, - GAsyncResult *result, - GError **error); - -void xdg_app_connection_track_name_owners (GDBusConnection *connection); - -#if !GLIB_CHECK_VERSION(2,40,0) + GError **error); +char ** xdg_app_list_deployed_refs (const char *type, + const char *name_prefix, + const char *branch, + const char *arch, + GCancellable *cancellable, + GError **error); + +gboolean xdg_app_overlay_symlink_tree (GFile *source, + GFile *destination, + const char *symlink_prefix, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_remove_dangling_symlinks (GFile *dir, + GCancellable *cancellable, + GError **error); + +void xdg_app_invocation_lookup_app_id (GDBusMethodInvocation *invocation, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +char *xdg_app_invocation_lookup_app_id_finish (GDBusMethodInvocation *invocation, + GAsyncResult *result, + GError **error); + +void xdg_app_connection_track_name_owners (GDBusConnection *connection); + +#if !GLIB_CHECK_VERSION (2, 40, 0) static inline gboolean -g_key_file_save_to_file (GKeyFile *key_file, - const gchar *filename, - GError **error) +g_key_file_save_to_file (GKeyFile *key_file, + const gchar *filename, + GError **error) { gchar *contents; gboolean success; @@ -151,74 +153,77 @@ g_strv_subset (const gchar * const *strv, return NULL; } -static inline void xdg_app_auto_unlock_helper (GMutex **mutex) +static inline void +xdg_app_auto_unlock_helper (GMutex **mutex) { if (*mutex) g_mutex_unlock (*mutex); } -static inline GMutex *xdg_app_auto_lock_helper (GMutex *mutex) +static inline GMutex * +xdg_app_auto_lock_helper (GMutex *mutex) { if (mutex) g_mutex_lock (mutex); return mutex; } -gint xdg_app_mkstempat (int dir_fd, +gint xdg_app_mkstempat (int dir_fd, gchar *tmpl, - int flags, - int mode); + int flags, + int mode); typedef struct XdgAppTablePrinter XdgAppTablePrinter; -XdgAppTablePrinter *xdg_app_table_printer_new (void); -void xdg_app_table_printer_free (XdgAppTablePrinter *printer); -void xdg_app_table_printer_add_column (XdgAppTablePrinter *printer, - const char *text); +XdgAppTablePrinter *xdg_app_table_printer_new (void); +void xdg_app_table_printer_free (XdgAppTablePrinter *printer); +void xdg_app_table_printer_add_column (XdgAppTablePrinter *printer, + const char *text); void xdg_app_table_printer_append_with_comma (XdgAppTablePrinter *printer, const char *text); -void xdg_app_table_printer_finish_row (XdgAppTablePrinter *printer); -void xdg_app_table_printer_print (XdgAppTablePrinter *printer); - -gboolean xdg_app_repo_set_title (OstreeRepo *repo, - const char *title, - GError **error); -gboolean xdg_app_repo_update (OstreeRepo *repo, - const char **gpg_key_ids, - const char *gpg_homedir, - GCancellable *cancellable, - GError **error); -gboolean xdg_app_repo_collect_sizes (OstreeRepo *repo, - GFile *root, - guint64 *installed_size, - guint64 *download_size, +void xdg_app_table_printer_finish_row (XdgAppTablePrinter *printer); +void xdg_app_table_printer_print (XdgAppTablePrinter *printer); + +gboolean xdg_app_repo_set_title (OstreeRepo *repo, + const char *title, + GError **error); +gboolean xdg_app_repo_update (OstreeRepo *repo, + const char **gpg_key_ids, + const char *gpg_homedir, + GCancellable *cancellable, + GError **error); +gboolean xdg_app_repo_collect_sizes (OstreeRepo *repo, + GFile *root, + guint64 *installed_size, + guint64 *download_size, GCancellable *cancellable, - GError **error); + GError **error); gboolean xdg_app_mtree_create_root (OstreeRepo *repo, OstreeMutableTree *mtree, GCancellable *cancellable, GError **error); -GVariant * xdg_app_bundle_load (GFile *file, - char **commit, - char **ref, - char **origin, +GVariant * xdg_app_bundle_load (GFile *file, + char **commit, + char **ref, + char **origin, guint64 *installed_size, GBytes **gpg_keys, GError **error); -gboolean xdg_app_pull_from_bundle (OstreeRepo *repo, - GFile *file, - const char *remote, - const char *ref, - gboolean require_gpg_signature, +gboolean xdg_app_pull_from_bundle (OstreeRepo *repo, + GFile *file, + const char *remote, + const char *ref, + gboolean require_gpg_signature, GCancellable *cancellable, - GError **error); + GError **error); -typedef struct { +typedef struct +{ char *id; char *installed_id; char *ref; @@ -227,15 +232,15 @@ typedef struct { void xdg_app_extension_free (XdgAppExtension *extension); -GList *xdg_app_list_extensions (GKeyFile *metakey, +GList *xdg_app_list_extensions (GKeyFile *metakey, const char *arch, const char *branch); -gboolean xdg_app_spawn (GFile *dir, - char **output, - GError **error, - const gchar *argv0, - va_list args); +gboolean xdg_app_spawn (GFile *dir, + char **output, + GError **error, + const gchar *argv0, + va_list args); typedef enum { XDG_APP_CP_FLAGS_NONE = 0, @@ -244,14 +249,14 @@ typedef enum { XDG_APP_CP_FLAGS_MOVE = 1<<2, } XdgAppCpFlags; -gboolean xdg_app_cp_a (GFile *src, - GFile *dest, - XdgAppCpFlags flags, - GCancellable *cancellable, - GError **error); +gboolean xdg_app_cp_a (GFile *src, + GFile *dest, + XdgAppCpFlags flags, + GCancellable *cancellable, + GError **error); -#define xdg_app_autorm_rf _GLIB_CLEANUP(g_autoptr_cleanup_generic_gfree) +#define xdg_app_autorm_rf _GLIB_CLEANUP (g_autoptr_cleanup_generic_gfree) static inline void xdg_app_temp_dir_destroy (void *p) @@ -267,85 +272,86 @@ xdg_app_temp_dir_destroy (void *p) typedef GFile XdgAppTempDir; -G_DEFINE_AUTOPTR_CLEANUP_FUNC(XdgAppTempDir, xdg_app_temp_dir_destroy) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (XdgAppTempDir, xdg_app_temp_dir_destroy) -#define AUTOLOCK(name) G_GNUC_UNUSED __attribute__((cleanup(xdg_app_auto_unlock_helper))) GMutex * G_PASTE(auto_unlock, __LINE__) = xdg_app_auto_lock_helper (&G_LOCK_NAME (name)) +#define AUTOLOCK(name) G_GNUC_UNUSED __attribute__((cleanup (xdg_app_auto_unlock_helper))) GMutex * G_PASTE (auto_unlock, __LINE__) = xdg_app_auto_lock_helper (&G_LOCK_NAME (name)) -G_DEFINE_AUTOPTR_CLEANUP_FUNC(OstreeRepo, g_object_unref) -G_DEFINE_AUTOPTR_CLEANUP_FUNC(OstreeMutableTree, g_object_unref) -G_DEFINE_AUTOPTR_CLEANUP_FUNC(OstreeAsyncProgress, g_object_unref) -G_DEFINE_AUTOPTR_CLEANUP_FUNC(OstreeGpgVerifyResult, g_object_unref) -G_DEFINE_AUTOPTR_CLEANUP_FUNC(OstreeRepoCommitModifier, ostree_repo_commit_modifier_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (OstreeRepo, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (OstreeMutableTree, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (OstreeAsyncProgress, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (OstreeGpgVerifyResult, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (OstreeRepoCommitModifier, ostree_repo_commit_modifier_unref) #ifndef SOUP_AUTOCLEANUPS_H -G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupSession, g_object_unref) -G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupMessage, g_object_unref) -G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupRequest, g_object_unref) -G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupURI, soup_uri_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoupSession, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoupMessage, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoupRequest, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoupURI, soup_uri_free) #endif /* This uses a weird Auto prefix to avoid conflicts with later added autogenerated autoptr support, per: * https://git.gnome.org/browse/glib/commit/?id=1c6cd5f0a3104aa9b62c7f1d3086181f63e71b59 */ typedef XdgAppSessionHelper AutoXdgAppSessionHelper; -G_DEFINE_AUTOPTR_CLEANUP_FUNC(AutoXdgAppSessionHelper, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (AutoXdgAppSessionHelper, g_object_unref) typedef struct XdgAppXml XdgAppXml; -struct XdgAppXml { - gchar *element_name; /* NULL == text */ - char **attribute_names; - char **attribute_values; - char *text; +struct XdgAppXml +{ + gchar *element_name; /* NULL == text */ + char **attribute_names; + char **attribute_values; + char *text; XdgAppXml *parent; XdgAppXml *first_child; XdgAppXml *last_child; XdgAppXml *next_sibling; }; -XdgAppXml *xdg_app_xml_new (const gchar *element_name); -XdgAppXml *xdg_app_xml_new_text (const gchar *text); -void xdg_app_xml_add (XdgAppXml *parent, - XdgAppXml *node); -void xdg_app_xml_free (XdgAppXml *node); -XdgAppXml *xdg_app_xml_parse (GInputStream *in, - gboolean compressed, - GCancellable *cancellable, - GError **error); -void xdg_app_xml_to_string (XdgAppXml *node, - GString *res); -XdgAppXml *xdg_app_xml_unlink (XdgAppXml *node, - XdgAppXml *prev_sibling); -XdgAppXml *xdg_app_xml_find (XdgAppXml *node, - const char *type, - XdgAppXml **prev_child_out); - -G_DEFINE_AUTOPTR_CLEANUP_FUNC(XdgAppXml, xdg_app_xml_free); - - -XdgAppXml *xdg_app_appstream_xml_new (void); -gboolean xdg_app_appstream_xml_migrate (XdgAppXml *source, - XdgAppXml *dest, - const char *ref, - const char *id, - GKeyFile *metadata); -GBytes *xdg_app_appstream_xml_root_to_data (XdgAppXml *appstream_root, - GError **error); -gboolean xdg_app_repo_generate_appstream (OstreeRepo *repo, - const char **gpg_key_ids, - const char *gpg_homedir, - GCancellable *cancellable, - GError **error); - -gboolean xdg_app_allocate_tmpdir (int tmpdir_dfd, - const char *tmpdir_relpath, - const char *tmpdir_prefix, - char **tmpdir_name_out, - int *tmpdir_fd_out, +XdgAppXml *xdg_app_xml_new (const gchar *element_name); +XdgAppXml *xdg_app_xml_new_text (const gchar *text); +void xdg_app_xml_add (XdgAppXml *parent, + XdgAppXml *node); +void xdg_app_xml_free (XdgAppXml *node); +XdgAppXml *xdg_app_xml_parse (GInputStream *in, + gboolean compressed, + GCancellable *cancellable, + GError **error); +void xdg_app_xml_to_string (XdgAppXml *node, + GString *res); +XdgAppXml *xdg_app_xml_unlink (XdgAppXml *node, + XdgAppXml *prev_sibling); +XdgAppXml *xdg_app_xml_find (XdgAppXml *node, + const char *type, + XdgAppXml **prev_child_out); + +G_DEFINE_AUTOPTR_CLEANUP_FUNC (XdgAppXml, xdg_app_xml_free); + + +XdgAppXml *xdg_app_appstream_xml_new (void); +gboolean xdg_app_appstream_xml_migrate (XdgAppXml *source, + XdgAppXml *dest, + const char *ref, + const char *id, + GKeyFile *metadata); +GBytes *xdg_app_appstream_xml_root_to_data (XdgAppXml *appstream_root, + GError **error); +gboolean xdg_app_repo_generate_appstream (OstreeRepo *repo, + const char **gpg_key_ids, + const char *gpg_homedir, + GCancellable *cancellable, + GError **error); + +gboolean xdg_app_allocate_tmpdir (int tmpdir_dfd, + const char *tmpdir_relpath, + const char *tmpdir_prefix, + char **tmpdir_name_out, + int *tmpdir_fd_out, GLnxLockFile *file_lock_out, - gboolean *reusing_dir_out, + gboolean *reusing_dir_out, GCancellable *cancellable, - GError **error); + GError **error); #endif /* __XDG_APP_UTILS_H__ */ |