On Tue, Jan 23, 2007 at 12:37:50PM +0000, Mark McLoughlin wrote:
On Tue, 2007-01-23 at 11:20 +0100, Karel Zak wrote:
> + char uuid[37];
>
> Magic number? :-)
>
> #define UUID_STRLEN 36
>
> char uuid[UUID_STRLEN+1];
Good point. Here's a proposed API addition to put the buffer lengths as
macros in libvirt.h.
Anyone got objections to that?
No objections, but I think if we're going to do this, we should take it
one step further and provide APIs for converting between RAW & Printable
versions of UUID in both directions. Currently we're just duping this
conversion code all over the place - with inconsistent use of '-' in
the printable versions.
/*
* uuidstr: the printable UUID string
* uuid: pre-allocated buffer of length VIR_UUID_BUFLEN
*/
int virUUIDParseString(const char *uuidstr, unsigned char *uuid)
/*
* uuid: the raw UUID valu exactly VIR_UUID_BUFLEN bytes long
* uuidstr: pre-allocated buffer of length VIR_UUID_STRING_BUFLEN
* to be filled in printable UUID
*/
int virUUIDFormatString(const unsigned char *uuid, char *uuidstr)
Oh and a thing to generate a random UUID too is needed by both the xm_internal
and qemu & test backends
int virUUIDGenerate(unsigned char *uuid);
Probably we only need any of this stuff in the internal headers though, rather
than public facing
--- libvirt.orig/include/libvirt/libvirt.h.in
+++ libvirt/include/libvirt/libvirt.h.in
@@ -187,6 +187,24 @@ struct _virNodeInfo {
typedef virNodeInfo *virNodeInfoPtr;
+/**
+ * VIR_UUID_STRING_BUFLEN:
+ *
+ * This macro provides the length of the buffer required
+ * for virDomainGetUUID()
+ */
+
+#define VIR_UUID_BUFLEN (16)
+
+/**
+ * VIR_UUID_STRING_BUFLEN:
+ *
+ * This macro provides the length of the buffer required
+ * for virDomainGetUUIDString()
+ */
+
+#define VIR_UUID_STRING_BUFLEN (36+1)
+
/* library versionning */
Dan.
--
|=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=|
|=- Perl modules:
http://search.cpan.org/~danberr/ -=|
|=- Projects:
http://freshmeat.net/~danielpb/ -=|
|=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|