[ostree] reset: Simplify argument checking logic



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]