[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [virt-tools-list] [PATCH virt-viewer] file: add delete-this-file option



Hi,

Looks good, ACK.

Regards,

Hans


On 04/30/2013 02:33 AM, Marc-André Lureau wrote:
In case the virt-viewer setting file is meant to temporary, you may use
the delete-this-file=1 option to ask the client to remove it, once it
has been read. This is useful for example in ovirt context, where
connection settings file are generated and can't be reused.
---
  src/virt-viewer-file.c | 32 ++++++++++++++++++++++++++++++++
  src/virt-viewer-file.h |  2 ++
  2 files changed, 34 insertions(+)

diff --git a/src/virt-viewer-file.c b/src/virt-viewer-file.c
index 12b8c31..3636c2e 100644
--- a/src/virt-viewer-file.c
+++ b/src/virt-viewer-file.c
@@ -22,6 +22,7 @@
  #include <config.h>

  #include <glib/gi18n.h>
+#include <glib/gstdio.h>

  #include "virt-viewer-util.h"
  #include "virt-viewer-file.h"
@@ -61,6 +62,7 @@
   * - enable-usb-autoshare: int
   * - usb-filter: string
   * - secure-channels: string list
+ * - delete-this-file: int (0 or 1 atm)
   *
   * (the file can be extended with extra groups or keys, which should
   * be prefixed with x- to avoid later conflicts)
@@ -101,6 +103,7 @@ enum  {
      PROP_PROXY,
      PROP_VERSION,
      PROP_SECURE_CHANNELS,
+    PROP_DELETE_THIS_FILE,
  };

  VirtViewerFile*
@@ -131,6 +134,12 @@ virt_viewer_file_new(const gchar* location, GError** error)
          return NULL;
      }

+    if (virt_viewer_file_get_delete_this_file(self) &&
+        !g_getenv("VIRT_VIEWER_KEEP_FILE")) {
+        if (g_unlink(location) != 0)
+            g_warning("failed to remove %s", location);
+    }
+
      return self;
  }

@@ -479,6 +488,19 @@ virt_viewer_file_set_enable_usbredir(VirtViewerFile* self, gint value)
  }

  gint
+virt_viewer_file_get_delete_this_file(VirtViewerFile* self)
+{
+    return virt_viewer_file_get_int(self, "delete-this-file");
+}
+
+void
+virt_viewer_file_set_delete_this_file(VirtViewerFile* self, gint value)
+{
+    virt_viewer_file_set_int(self, "delete-this-file", !!value);
+    g_object_notify(G_OBJECT(self), "delete-this-file");
+}
+
+gint
  virt_viewer_file_get_color_depth(VirtViewerFile* self)
  {
      return virt_viewer_file_get_int(self, "color-depth");
@@ -709,6 +731,9 @@ virt_viewer_file_set_property(GObject* object, guint property_id,
          strv = g_value_get_boxed(value);
          virt_viewer_file_set_secure_channels(self, (const gchar* const*)strv, g_strv_length(strv));
          break;
+    case PROP_DELETE_THIS_FILE:
+        virt_viewer_file_set_delete_this_file(self, g_value_get_int(value));
+        break;
      default:
          G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
          break;
@@ -791,6 +816,9 @@ virt_viewer_file_get_property(GObject* object, guint property_id,
      case PROP_SECURE_CHANNELS:
          g_value_take_boxed(value, virt_viewer_file_get_secure_channels(self, NULL));
          break;
+    case PROP_DELETE_THIS_FILE:
+        g_value_set_int(value, virt_viewer_file_get_delete_this_file(self));
+        break;
      default:
          G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
          break;
@@ -917,4 +945,8 @@ virt_viewer_file_class_init(VirtViewerFileClass* klass)
      g_object_class_install_property(G_OBJECT_CLASS(klass), PROP_SECURE_CHANNELS,
          g_param_spec_boxed("secure-channels", "secure-channels", "secure-channels", G_TYPE_STRV,
                             G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE));
+
+    g_object_class_install_property(G_OBJECT_CLASS(klass), PROP_DELETE_THIS_FILE,
+        g_param_spec_int("delete-this-file", "delete-this-file", "delete-this-file", 0, 1, 0,
+                         G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE));
  }
diff --git a/src/virt-viewer-file.h b/src/virt-viewer-file.h
index 7c48856..8665070 100644
--- a/src/virt-viewer-file.h
+++ b/src/virt-viewer-file.h
@@ -104,6 +104,8 @@ gchar* virt_viewer_file_get_version(VirtViewerFile* self);
  void virt_viewer_file_set_version(VirtViewerFile* self, const gchar* value);
  gchar** virt_viewer_file_get_secure_channels(VirtViewerFile* self, gsize* length);
  void virt_viewer_file_set_secure_channels(VirtViewerFile* self, const gchar* const* value, gsize length);
+gint virt_viewer_file_get_delete_this_file(VirtViewerFile* self);
+void virt_viewer_file_set_delete_this_file(VirtViewerFile* self, gint value);

  G_END_DECLS




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]