diff --git a/src/libostree/ostree-sysroot-upgrader.c b/src/libostree/ostree-sysroot-upgrader.c index 11d9706c..9816b3d6 100644 --- a/src/libostree/ostree-sysroot-upgrader.c +++ b/src/libostree/ostree-sysroot-upgrader.c @@ -22,6 +22,7 @@ #include "otutil.h" +#include "ostree.h" #include "ostree-sysroot-upgrader.h" /** @@ -50,7 +51,7 @@ struct OstreeSysrootUpgrader { char *override_csum; char *new_revision; -}; +}; enum { PROP_0, @@ -70,7 +71,6 @@ parse_refspec (OstreeSysrootUpgrader *self, GCancellable *cancellable, GError **error) { - gboolean ret = FALSE; g_autofree char *origin_refspec = NULL; g_autofree char *unconfigured_state = NULL; g_autofree char *csum = NULL; @@ -82,37 +82,28 @@ parse_refspec (OstreeSysrootUpgrader *self, */ unconfigured_state = g_key_file_get_string (self->origin, "origin", "unconfigured-state", NULL); if (unconfigured_state) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "origin unconfigured-state: %s", unconfigured_state); - goto out; - } + return glnx_throw (error, "origin unconfigured-state: %s", unconfigured_state); } origin_refspec = g_key_file_get_string (self->origin, "origin", "refspec", NULL); if (!origin_refspec) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "No origin/refspec in current deployment origin; cannot upgrade via ostree"); - goto out; - } + return glnx_throw (error, "No origin/refspec in current deployment origin; cannot upgrade via ostree"); + g_clear_pointer (&self->origin_remote, g_free); g_clear_pointer (&self->origin_ref, g_free); if (!ostree_parse_refspec (origin_refspec, - &self->origin_remote, + &self->origin_remote, &self->origin_ref, error)) - goto out; + return FALSE; csum = g_key_file_get_string (self->origin, "origin", "override-commit", NULL); if (csum != NULL && !ostree_validate_checksum_string (csum, error)) - goto out; + return FALSE; g_clear_pointer (&self->override_csum, g_free); self->override_csum = g_steal_pointer (&csum); - ret = TRUE; - out: - return ret; + return TRUE; } static gboolean @@ -120,17 +111,12 @@ ostree_sysroot_upgrader_initable_init (GInitable *initable, GCancellable *cancellable, GError **error) { - gboolean ret = FALSE; OstreeSysrootUpgrader *self = (OstreeSysrootUpgrader*)initable; OstreeDeployment *booted_deployment = ostree_sysroot_get_booted_deployment (self->sysroot); if (booted_deployment == NULL && self->osname == NULL) - { - g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Not currently booted into an OSTree system and no OS specified"); - goto out; - } + return glnx_throw (error, "Not currently booted into an OSTree system and no OS specified"); if (self->osname == NULL) { @@ -138,37 +124,23 @@ ostree_sysroot_upgrader_initable_init (GInitable *initable, self->osname = g_strdup (ostree_deployment_get_osname (booted_deployment)); } else if (self->osname[0] == '\0') - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Invalid empty osname"); - goto out; - } + return glnx_throw (error, "Invalid empty osname"); - self->merge_deployment = ostree_sysroot_get_merge_deployment (self->sysroot, self->osname); + self->merge_deployment = ostree_sysroot_get_merge_deployment (self->sysroot, self->osname); if (self->merge_deployment == NULL) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "No previous deployment for OS '%s'", self->osname); - goto out; - } + return glnx_throw (error, "No previous deployment for OS '%s'", self->osname); self->origin = ostree_deployment_get_origin (self->merge_deployment); if (!self->origin) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "No origin known for deployment %s.%d", - ostree_deployment_get_csum (self->merge_deployment), - ostree_deployment_get_deployserial (self->merge_deployment)); - goto out; - } + return glnx_throw (error, "No origin known for deployment %s.%d", + ostree_deployment_get_csum (self->merge_deployment), + ostree_deployment_get_deployserial (self->merge_deployment)); g_key_file_ref (self->origin); if (!parse_refspec (self, cancellable, error)) - goto out; + return FALSE; - ret = TRUE; - out: - return ret; + return TRUE; } static void @@ -401,19 +373,15 @@ ostree_sysroot_upgrader_set_origin (OstreeSysrootUpgrader *self, GCancellable *cancellable, GError **error) { - gboolean ret = FALSE; - g_clear_pointer (&self->origin, g_key_file_unref); if (origin) { self->origin = g_key_file_ref (origin); if (!parse_refspec (self, cancellable, error)) - goto out; + return FALSE; } - ret = TRUE; - out: - return ret; + return TRUE; } /** @@ -447,21 +415,19 @@ ostree_sysroot_upgrader_check_timestamps (OstreeRepo *repo, const char *to_rev, GError **error) { - gboolean ret = FALSE; g_autoptr(GVariant) old_commit = NULL; - g_autoptr(GVariant) new_commit = NULL; - if (!ostree_repo_load_variant (repo, OSTREE_OBJECT_TYPE_COMMIT, from_rev, &old_commit, error)) - goto out; - + return FALSE; + + g_autoptr(GVariant) new_commit = NULL; if (!ostree_repo_load_variant (repo, OSTREE_OBJECT_TYPE_COMMIT, to_rev, &new_commit, error)) - goto out; + return FALSE; if (ostree_commit_get_timestamp (old_commit) > ostree_commit_get_timestamp (new_commit)) { @@ -471,31 +437,22 @@ ostree_sysroot_upgrader_check_timestamps (OstreeRepo *repo, g_autofree char *new_ts_str = NULL; if (old_ts == NULL || new_ts == NULL) - { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Upgrade target revision '%s' timestamp (%" G_GINT64_FORMAT ") or current revision '%s' timestamp (%" G_GINT64_FORMAT ") is invalid", - to_rev, ostree_commit_get_timestamp (new_commit), - from_rev, ostree_commit_get_timestamp (old_commit)); - goto out; - } + return glnx_throw (error, "Upgrade target revision '%s' timestamp (%" G_GINT64_FORMAT ") or current revision '%s' timestamp (%" G_GINT64_FORMAT ") is invalid", + to_rev, ostree_commit_get_timestamp (new_commit), + from_rev, ostree_commit_get_timestamp (old_commit)); old_ts_str = g_date_time_format (old_ts, "%c"); new_ts_str = g_date_time_format (new_ts, "%c"); g_date_time_unref (old_ts); g_date_time_unref (new_ts); - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Upgrade target revision '%s' with timestamp '%s' is chronologically older than current revision '%s' with timestamp '%s'; use --allow-downgrade to permit", - to_rev, new_ts_str, from_rev, old_ts_str); - goto out; + return glnx_throw (error, "Upgrade target revision '%s' with timestamp '%s' is chronologically older than current revision '%s' with timestamp '%s'; use --allow-downgrade to permit", + to_rev, new_ts_str, from_rev, old_ts_str); } - ret = TRUE; - out: - return ret; + return TRUE; } - /** * ostree_sysroot_upgrader_pull: * @self: Upgrader @@ -551,8 +508,7 @@ ostree_sysroot_upgrader_pull_one_dir (OstreeSysrootUpgrader *self, GCancellable *cancellable, GError **error) { - gboolean ret = FALSE; - glnx_unref_object OstreeRepo *repo = NULL; + g_autoptr(OstreeRepo) repo = NULL; char *refs_to_fetch[] = { NULL, NULL }; const char *from_revision = NULL; g_autofree char *origin_refspec = NULL; @@ -563,7 +519,7 @@ ostree_sysroot_upgrader_pull_one_dir (OstreeSysrootUpgrader *self, refs_to_fetch[0] = self->origin_ref; if (!ostree_sysroot_get_repo (self->sysroot, &repo, cancellable, error)) - goto out; + return FALSE; if (self->origin_remote) origin_refspec = g_strconcat (self->origin_remote, ":", self->origin_ref, NULL); @@ -579,7 +535,7 @@ ostree_sysroot_upgrader_pull_one_dir (OstreeSysrootUpgrader *self, if (!ostree_repo_pull_one_dir (repo, self->origin_remote, dir_to_pull, refs_to_fetch, flags, progress, cancellable, error)) - goto out; + return FALSE; if (progress) ostree_async_progress_finish (progress); @@ -593,7 +549,7 @@ ostree_sysroot_upgrader_pull_one_dir (OstreeSysrootUpgrader *self, self->override_csum, cancellable, error)) - goto out; + return FALSE; self->new_revision = g_strdup (self->override_csum); } @@ -601,7 +557,7 @@ ostree_sysroot_upgrader_pull_one_dir (OstreeSysrootUpgrader *self, { if (!ostree_repo_resolve_rev (repo, origin_refspec, FALSE, &self->new_revision, error)) - goto out; + return FALSE; } @@ -620,13 +576,11 @@ ostree_sysroot_upgrader_pull_one_dir (OstreeSysrootUpgrader *self, if (!ostree_sysroot_upgrader_check_timestamps (repo, from_revision, self->new_revision, error)) - goto out; + return FALSE; } } - ret = TRUE; - out: - return ret; + return TRUE; } /** @@ -643,9 +597,7 @@ ostree_sysroot_upgrader_deploy (OstreeSysrootUpgrader *self, GCancellable *cancellable, GError **error) { - gboolean ret = FALSE; - glnx_unref_object OstreeDeployment *new_deployment = NULL; - + g_autoptr(OstreeDeployment) new_deployment = NULL; if (!ostree_sysroot_deploy_tree (self->sysroot, self->osname, self->new_revision, self->origin, @@ -653,18 +605,16 @@ ostree_sysroot_upgrader_deploy (OstreeSysrootUpgrader *self, NULL, &new_deployment, cancellable, error)) - goto out; + return FALSE; if (!ostree_sysroot_simple_write_deployment (self->sysroot, self->osname, new_deployment, self->merge_deployment, 0, cancellable, error)) - goto out; + return FALSE; - ret = TRUE; - out: - return ret; + return TRUE; } GType