qemu-devel
[Top][All Lists]
Advanced

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

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


From: Gleb Natapov
Subject: [Qemu-devel] [PATCH 4/5] Use libuuid if available.
Date: Thu, 05 Jun 2008 11:35:51 +0300
User-agent: StGIT/0.14.2

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
+
+##########################################
 # 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
 /*
  * 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
     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) {
+                    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]