diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2015-09-17 12:25:37 -0400 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2015-09-17 12:29:14 -0400 |
commit | 055b3aac32e7ba95d5bf46e45b69dbf5e9df4e85 (patch) | |
tree | 6221bea25889f26aa7fa0d7371b437383b3a8509 | |
parent | 3267267115f4a53d8a104655250b9162066a95e1 (diff) | |
download | ostree-055b3aac32e7ba95d5bf46e45b69dbf5e9df4e85.tar.gz |
reset: Simplify argument checking logic
-rw-r--r-- | src/ostree/ot-builtin-reset.c | 31 |
1 files changed, 9 insertions, 22 deletions
diff --git a/src/ostree/ot-builtin-reset.c b/src/ostree/ot-builtin-reset.c index 61f233f7..9468ae78 100644 --- a/src/ostree/ot-builtin-reset.c +++ b/src/ostree/ot-builtin-reset.c @@ -31,24 +31,6 @@ static GOptionEntry options[] = { { NULL } }; -static gchar * -find_current_ref (OstreeRepo *repo, - const gchar *ref, - GCancellable *cancellable, - GError **error) -{ - g_autoptr(GHashTable) refs = NULL; - gchar *ret; - - if (!ostree_repo_list_refs (repo, NULL, &refs, cancellable, error)) - return NULL; - ret = g_strdup (g_hash_table_lookup (refs, ref)); - if (ret == NULL) - g_set_error (error, G_IO_ERROR, G_IO_ERROR, "The ref was not found: %s", ref); - - return ret; -} - gboolean ostree_builtin_reset (int argc, char **argv, @@ -57,10 +39,10 @@ ostree_builtin_reset (int argc, { GOptionContext *context; glnx_unref_object OstreeRepo *repo = NULL; + g_autoptr(GHashTable) known_refs = NULL; gboolean ret = FALSE; const char *ref; const char *target = NULL; - g_autofree char *current = NULL; g_autofree char *checksum = NULL; context = g_option_context_new ("REF COMMIT - Reset a REF to a previous COMMIT"); @@ -79,11 +61,16 @@ ostree_builtin_reset (int argc, ref = argv[1]; target = argv[2]; - if (!ostree_repo_resolve_rev (repo, target, FALSE, &checksum, error)) + if (!ostree_repo_list_refs (repo, NULL, &known_refs, cancellable, error)) goto out; - current = find_current_ref (repo, ref, cancellable, error); - if (current == NULL) + if (!g_hash_table_contains (known_refs, ref)) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR, "Invalid ref '%s'", ref); + goto out; + } + + if (!ostree_repo_resolve_rev (repo, target, FALSE, &checksum, error)) goto out; if (!ostree_repo_prepare_transaction (repo, NULL, cancellable, error)) |