[libvirt] [PATCH] cygwin: Check explicitly for getmntent_r

Cygwin has mntent.h but lacks getmntent_r. Update preprocessor checks to catch this combination. --- src/qemu/qemu_conf.c | 2 +- src/util/cgroup.c | 10 +++++----- src/util/util.c | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index 2cbcc4f..ed24916 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -114,7 +114,7 @@ int qemudLoadDriverConfig(struct qemud_driver *driver, return -1; } -#ifdef HAVE_MNTENT_H +#if defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R /* For privileged driver, try and find hugepage mount automatically. * Non-privileged driver requires admin to create a dir for the * user, chown it, and then let user configure it manually */ diff --git a/src/util/cgroup.c b/src/util/cgroup.c index 4cb09b6..b649c3c 100644 --- a/src/util/cgroup.c +++ b/src/util/cgroup.c @@ -12,7 +12,7 @@ #include <stdio.h> #include <stdint.h> -#ifdef HAVE_MNTENT_H +#if defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R # include <mntent.h> #endif #include <fcntl.h> @@ -69,7 +69,7 @@ void virCgroupFree(virCgroupPtr *group) VIR_FREE(*group); } -#ifdef HAVE_MNTENT_H +#if defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R /* * Process /proc/mounts figuring out what controllers are * mounted and where @@ -403,7 +403,7 @@ out: } -#ifdef HAVE_MNTENT_H +#if defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R static int virCgroupCpuSetInherit(virCgroupPtr parent, virCgroupPtr group) { int i; @@ -628,7 +628,7 @@ int virCgroupAddTask(virCgroupPtr group, pid_t pid) * * Returns 0 on success */ -#ifdef HAVE_MNTENT_H +#if defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R int virCgroupForDriver(const char *name, virCgroupPtr *group, int privileged, @@ -682,7 +682,7 @@ int virCgroupForDriver(const char *name ATTRIBUTE_UNUSED, * * Returns 0 on success */ -#ifdef HAVE_MNTENT_H +#if defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R int virCgroupForDomain(virCgroupPtr driver, const char *name, virCgroupPtr *group, diff --git a/src/util/util.c b/src/util/util.c index 99383d1..a7bb67c 100644 --- a/src/util/util.c +++ b/src/util/util.c @@ -61,7 +61,7 @@ #if HAVE_CAPNG # include <cap-ng.h> #endif -#ifdef HAVE_MNTENT_H +#if defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R # include <mntent.h> #endif @@ -2716,7 +2716,7 @@ int virGetGroupID(const char *name ATTRIBUTE_UNUSED, #endif /* HAVE_GETPWUID_R */ -#ifdef HAVE_MNTENT_H +#if defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R /* search /proc/mounts for mount point of *type; return pointer to * malloc'ed string of the path if found, otherwise return NULL * with errno set to an appropriate value. @@ -2748,7 +2748,7 @@ cleanup: return ret; } -#else /* HAVE_MNTENT_H */ +#else /* defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R */ char * virFileFindMountPoint(const char *type ATTRIBUTE_UNUSED) @@ -2758,7 +2758,7 @@ virFileFindMountPoint(const char *type ATTRIBUTE_UNUSED) return NULL; } -#endif /* HAVE_MNTENT_H */ +#endif /* defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R */ #ifndef PROXY # if defined(UDEVADM) || defined(UDEVSETTLE) -- 1.6.3.3

On 04/23/2010 10:57 AM, Matthias Bolte wrote:
Cygwin has mntent.h but lacks getmntent_r. Update preprocessor checks to catch this combination.
Ultimately, cygwin might be taught to implement getmntent_r, so this may have to be revisited in the future. But that said,
+++ b/src/qemu/qemu_conf.c @@ -114,7 +114,7 @@ int qemudLoadDriverConfig(struct qemud_driver *driver, return -1; }
-#ifdef HAVE_MNTENT_H +#if defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R
This looks like a reasonable solution to allow compilation on cygwin; and we can deal with any fallout in later patches. ACK. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org

2010/4/23 Eric Blake <eblake@redhat.com>:
On 04/23/2010 10:57 AM, Matthias Bolte wrote:
Cygwin has mntent.h but lacks getmntent_r. Update preprocessor checks to catch this combination.
Ultimately, cygwin might be taught to implement getmntent_r, so this may have to be revisited in the future. But that said,
This sentence seems incomplete.
+++ b/src/qemu/qemu_conf.c @@ -114,7 +114,7 @@ int qemudLoadDriverConfig(struct qemud_driver *driver, return -1; }
-#ifdef HAVE_MNTENT_H +#if defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R
This looks like a reasonable solution to allow compilation on cygwin; and we can deal with any fallout in later patches.
ACK.
Thanks, pushed. Matthias

On 04/23/2010 12:19 PM, Matthias Bolte wrote:
Ultimately, cygwin might be taught to implement getmntent_r, so this may have to be revisited in the future. But that said,
This sentence seems incomplete.
This looks like a reasonable solution to allow compilation on cygwin; and we can deal with any fallout in later patches.
Blame my capitalization; I should have used "...this looks" instead of "This looks" to make it obvious I was continuing the thought above :) -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org
participants (2)
-
Eric Blake
-
Matthias Bolte