qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 4/5] Use libuuid if available.


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH 4/5] Use libuuid if available.
Date: Thu, 05 Jun 2008 10:18:15 -0500
User-agent: Thunderbird 2.0.0.14 (X11/20080501)

Gleb Natapov wrote:
If libuuid is available use it for input validation and UUID generation if
user does not provide one.

Signed-off-by: Gleb Natapov <address@hidden>
---

 Makefile.target |    4 ++++
 configure       |   14 ++++++++++++++
 monitor.c       |   10 ++++++++++
 vl.c            |   17 +++++++++++++++++
 4 files changed, 45 insertions(+), 0 deletions(-)

diff --git a/Makefile.target b/Makefile.target
index e06a99e..c1385af 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -502,6 +502,10 @@ CPPFLAGS += $(CONFIG_VNC_TLS_CFLAGS)
 LIBS += $(CONFIG_VNC_TLS_LIBS)
 endif
+ifdef CONFIG_UUID
+LIBS += -luuid
+endif
+
 # SCSI layer
 OBJS+= lsi53c895a.o esp.o
diff --git a/configure b/configure
index f204d04..49ee04c 100755
--- a/configure
+++ b/configure
@@ -113,6 +113,7 @@ build_docs="no"
 uname_release=""
 curses="yes"
 nptl="yes"
+uuid="yes"
# OS specific
 targetos=`uname -s`
@@ -314,6 +315,8 @@ for opt do
   ;;
   --enable-uname-release=*) uname_release="$optarg"
   ;;
+  --disable-uuid) uuid="no"
+  ;;
   --sparc_cpu=*)
       sparc_cpu="$optarg"
       case $sparc_cpu in
@@ -728,6 +731,12 @@ if test "$vnc_tls" = "yes" ; then
 fi
##########################################
+# uuid library
+if test "$uuid" = "yes" ; then
+  `pkg-config uuid` || uuid="no"
+fi
+
+##########################################

Need to redirect stderr to avoid ugly warnings to the user if the command isn't found. Make sure you test with pkg-config renamed and ensure that no nasty messages get printed.

 # alsa sound support libraries
if test "$alsa" = "yes" ; then
@@ -862,6 +871,7 @@ echo "Documentation     $build_docs"
 [ ! -z "$uname_release" ] && \
 echo "uname -r          $uname_release"
 echo "NPTL support      $nptl"
+echo "UUID support      $uuid"
if test $sdl_too_old = "yes"; then
 echo "-> Your SDL version is too old - please upgrade to have SDL support"
@@ -1070,6 +1080,10 @@ if test "$vnc_tls" = "yes" ; then
   echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
   echo "#define CONFIG_VNC_TLS 1" >> $config_h
 fi
+if test "$uuid" = "yes" ; then
+  echo "CONFIG_UUID=yes" >> $config_mak
+  echo "#define CONFIG_UUID 1" >> $config_h
+fi
 qemu_version=`head $source_path/VERSION`
 echo "VERSION=$qemu_version" >>$config_mak
 echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
diff --git a/monitor.c b/monitor.c
index 9233625..1cc9079 100644
--- a/monitor.c
+++ b/monitor.c
@@ -47,6 +47,10 @@
 #define offsetof(type, field) ((size_t) &((type *)0)->field)
 #endif
+#ifdef CONFIG_UUID
+#include <uuid/uuid.h>
+extern uuid_t qemu_uuid;
+#endif

uuid_t is just an unsigned char[16] so just use that to represent that data type. That will eliminate a lot of the CONFIG_UUID stuff.

 /*
  * Supported types:
  *
@@ -256,8 +260,14 @@ static void do_info_name(void)
static void do_info_uuid(void)
 {
+#ifdef CONFIG_UUID
+    char uuid_str[37];
+    uuid_unparse(qemu_uuid, uuid_str);
+    term_printf("%s\n", uuid_str);
+#else

Just use a printf() string here again to eliminate the need for CONFIG_UUID.

Regards,

Anthony Liguori

     if (qemu_uuid_str)
         term_printf("%s\n", qemu_uuid_str);
+#endif
 }
static void do_info_block(void)
diff --git a/vl.c b/vl.c
index 8e9e841..be31263 100644
--- a/vl.c
+++ b/vl.c
@@ -131,6 +131,11 @@ int inet_aton(const char *cp, struct in_addr *ia);
#include "exec-all.h" +#ifdef CONFIG_UUID
+#include <uuid/uuid.h>
+uuid_t qemu_uuid;
+#endif
+
 #define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup"
 #define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown"
 #ifdef __sun__
@@ -8234,6 +8239,13 @@ int main(int argc, char **argv)
                 break;
             case QEMU_OPTION_uuid:
                 qemu_uuid_str = optarg;
+#ifdef CONFIG_UUID
+                if (uuid_parse(qemu_uuid_str, qemu_uuid) < 0) {
+            2        fprintf(stderr, "Fail to parse UUID string."
+                            " Wrong format.\n");
+                    exit(1);
+                }
+#endif
                 break;
            case QEMU_OPTION_daemonize:
                daemonize = 1;
@@ -8317,6 +8329,11 @@ int main(int argc, char **argv)
         }
     }
+#if CONFIG_UUID
+    if (!qemu_uuid_str)
+        uuid_generate(qemu_uuid);
+#endif
+
 #ifndef _WIN32
     if (daemonize && !nographic && vnc_display == NULL) {
        fprintf(stderr, "Can only daemonize if using -nographic or -vnc\n");








reply via email to

[Prev in Thread] Current Thread [Next in Thread]