
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@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 :|