On Wed, Jun 10, 2015 at 01:40:08PM +0200, Eren Yagdiran wrote:
Consider the file name extension as the image type, except for .img
that are usually RAW images
---
libvirt-sandbox/Makefile.am | 1 +
libvirt-sandbox/libvirt-sandbox-util.c | 79 ++++++++++++++++++++++++++++++++++
libvirt-sandbox/libvirt-sandbox-util.h | 6 +++
3 files changed, 86 insertions(+)
create mode 100644 libvirt-sandbox/libvirt-sandbox-util.c
diff --git a/libvirt-sandbox/Makefile.am b/libvirt-sandbox/Makefile.am
index 96302cb..6917f04 100644
--- a/libvirt-sandbox/Makefile.am
+++ b/libvirt-sandbox/Makefile.am
@@ -84,6 +84,7 @@ SANDBOX_HEADER_FILES = \
$(NULL)
SANDBOX_SOURCE_FILES = \
libvirt-sandbox-main.c \
+ libvirt-sandbox-util.c \
libvirt-sandbox-config.c \
libvirt-sandbox-config-network.c \
libvirt-sandbox-config-network-address.c \
diff --git a/libvirt-sandbox/libvirt-sandbox-util.c
b/libvirt-sandbox/libvirt-sandbox-util.c
new file mode 100644
index 0000000..0ab4fac
--- /dev/null
+++ b/libvirt-sandbox/libvirt-sandbox-util.c
@@ -0,0 +1,79 @@
+/*
+ * libvirt-sandbox-util.c: libvirt sandbox util functions
+ *
+ * Copyright (C) 2015 Universitat Politècnica de Catalunya.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Author: Eren Yagdiran <erenyagdiran(a)gmail.com>
+ */
+
+#include <config.h>
+#include <string.h>
+
+#include "libvirt-sandbox/libvirt-sandbox.h"
+
+/* This array contains string values for GVirConfigDomainDiskFormat,
+ * order is important.*/
+static const gchar *FORMATS_STRINGS[] = {
+ "raw",
+ "dir",
+ "bochs",
+ "cloop",
+ "cow",
+ "dmg",
+ "iso",
+ "qcow",
+ "qcow2",
+ "qed",
+ "vmdk",
+ "vpc",
+ "fat",
+ "vhd",
+ NULL
+};
I'm not convinced we actually need this lookup table. The libvirt-gconfig
library defines a formal gobject enum type for GVirConfigDomainDiskFormat
which lets you do value <-> string lookups / conversions.
eg
GEnumClass *klass = g_type_class_ref(GVIR_CONFIG_DOMAIN_DISK_FORMAT);
GEnumValue *value = g_enum_get_value(klass, GVIR_CONFIG_DOMAIN_DISK_FORMAT_QCOW2)
value->value_nick now contains the string 'qcow2'
+
+gint gvir_sandbox_util_guess_image_format(const gchar *path){
We ought to have a GError ** parameter here to return an
error message.
+
+ gchar *tmp;
+
+ if ((tmp = strchr(path, '.')) == NULL) {
+ return -1;
+ }
+ tmp = tmp + 1;
+
+ if (strcmp(tmp,"img")==0){
+ return GVIR_CONFIG_DOMAIN_DISK_FORMAT_RAW;
+ }
+
+ return gvir_sandbox_util_disk_format_from_str(tmp);
+}
+
+gint gvir_sandbox_util_disk_format_from_str(const gchar *value)
Same here with GError **
+{
+ gint i = 0;
+
+ while (FORMATS_STRINGS[i] != NULL) {
+ if (strcmp(FORMATS_STRINGS[i], value) == 0)
+ return i;
+ i++;
+ }
+ return -1;
+}
+
+const gchar *gvir_sandbox_util_disk_format_to_str(GVirConfigDomainDiskFormat format)
+{
+ return FORMATS_STRINGS[format];
+}
This is redundant - the g_enum apis already let callers do this
conversion.
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|