On Thu, 2016-04-07 at 09:53 +0300, Roman Bogorodskiy wrote:
FreeBSD lacks ENODATA, and viruuid.c redefines it to EIO. However,
now we have virrandom.c that's using ENODATA also, so move this
re-definition to a common place, virutil.h, so it could fix things for
both consumers.
---
src/util/virutil.h | 4 ++++
src/util/viruuid.c | 4 ----
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/util/virutil.h b/src/util/virutil.h
index b121de0..36ed186 100644
--- a/src/util/virutil.h
+++ b/src/util/virutil.h
@@ -36,6 +36,10 @@
# define MAX(a, b) ((a) > (b) ? (a) : (b))
# endif
+# ifndef ENODATA
+# define ENODATA EIO
+# endif
+
int virSetBlocking(int fd, bool blocking) ATTRIBUTE_RETURN_CHECK;
int virSetNonBlock(int fd) ATTRIBUTE_RETURN_CHECK;
diff --git a/src/util/viruuid.c b/src/util/viruuid.c
index 1fcc954..16e57db 100644
--- a/src/util/viruuid.c
+++ b/src/util/viruuid.c
@@ -46,10 +46,6 @@
VIR_LOG_INIT("util.uuid");
-#ifndef ENODATA
-# define ENODATA EIO
-#endif
-
static unsigned char host_uuid[VIR_UUID_BUFLEN];
static int
These are the current occurrences of ENODATA:
src/storage/storage_backend.c:
if (errno != ENODATA && errno != ENOTSUP) {
tests/securityselinuxlabeltest.c:
if (errno == ENODATA) {
src/util/viruuid.c:
#ifndef ENODATA
# define ENODATA EIO
src/util/virrandom.c:
return n < 0 ? errno : ENODATA;
The first is inside a '#if WITH_SELINUX' block, so FreeBSD is
not going to hit it. The second one is a SELinux-specific test,
and it's not compiled on FreeBSD.
The third one is where ENODATA gets defined, as you mention in
your commit message, and the fourth one where it's used.
Note that ENODATA is not being used in viruuid.c... I guess
the code that prompted the definition has since been removed.
So I think you should rather move the definition from viruuid.c
to virrandom.c instead of virutil.h.
ACK with that changed.
Cheers.
--
Andrea Bolognani
Software Engineer - Virtualization Team