From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1K4HEj-00035e-C6 for qemu-devel@nongnu.org; Thu, 05 Jun 2008 11:18:45 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1K4HEZ-0002xu-1i for qemu-devel@nongnu.org; Thu, 05 Jun 2008 11:18:37 -0400 Received: from [199.232.76.173] (port=56348 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1K4HEY-0002xh-Kv for qemu-devel@nongnu.org; Thu, 05 Jun 2008 11:18:34 -0400 Received: from an-out-0708.google.com ([209.85.132.241]:38802) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1K4HEW-0007ro-I9 for qemu-devel@nongnu.org; Thu, 05 Jun 2008 11:18:33 -0400 Received: by an-out-0708.google.com with SMTP id d18so204621and.130 for ; Thu, 05 Jun 2008 08:18:29 -0700 (PDT) Message-ID: <484803B7.50908@codemonkey.ws> Date: Thu, 05 Jun 2008 10:18:15 -0500 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH 4/5] Use libuuid if available. References: <20080605083536.11678.439.stgit@gleb-debian.qumranet.com.qumranet.com> <20080605083551.11678.57336.stgit@gleb-debian.qumranet.com.qumranet.com> In-Reply-To: <20080605083551.11678.57336.stgit@gleb-debian.qumranet.com.qumranet.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org 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 > --- > > 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 > +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_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"); > > > >