[ostree] reset: Simplify argument checking logic
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] reset: Simplify argument checking logic
- Date: Thu, 17 Sep 2015 23:20:13 +0000 (UTC)
commit 055b3aac32e7ba95d5bf46e45b69dbf5e9df4e85
Author: Matthew Barnes <mbarnes redhat com>
Date: Thu Sep 17 12:25:37 2015 -0400
reset: Simplify argument checking logic
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 61f233f..9468ae7 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))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]