static void
format_cb (GObject      *source_object,
           GAsyncResult *res,
           gpointer      user_data)
{
  FormatVolumeData *data = user_data;
  GError *error;

  error = NULL;
  if (!udisks_block_call_format_finish (UDISKS_BLOCK (source_object),
                                        res,
                                        &error))
    {
      gdu_utils_show_error (GTK_WINDOW (data->parent_window), _("Error formatting volume"), error);
      g_error_free (error);
    }
  format_volume_data_free (data);
}
예제 #2
0
static void
on_format_done (GObject *source_object,
                GAsyncResult *res,
                gpointer user_data)
{
  FormatData *data = user_data;
  GError *error = NULL;
  gboolean success;

  success = (udisks_block_call_format_finish (UDISKS_BLOCK (source_object), res, &error)
             && set_crypto_config (data->block,
                                   data->crypto_passphrase,
                                   data->crypto_options,
                                   &error)
             && set_fstab_config (data->block,
                                  data->mount_point,
                                  data->mount_options,
                                  &error));

  if (data->invocation)
    {
      if (!success)
        {
          g_dbus_error_strip_remote_error (error);
          g_dbus_method_invocation_return_error (data->invocation,
                                                 COCKPIT_ERROR,
                                                 COCKPIT_ERROR_FAILED,
                                                 "%s", error->message);
          g_error_free (error);
        }
      else
        g_dbus_method_invocation_return_value (data->invocation, g_variant_new ("()"));
    }

  g_signal_handler_disconnect (data->udisks_object_manager, data->object_added_handler_id);
  g_free (data->mount_point);
  g_free (data->mount_options);
  g_free (data->crypto_passphrase);
  g_free (data->crypto_options);
  g_clear_object (&data->invocation);
  g_object_unref (data->block);
}