[libvirt] [PATCH] win32: Pretend that close-on-exec works

Currently virNetSocketNew fails because virSetCloseExec fails as there is no proper implementation for it on Windows at the moment. Workaround this by pretending that setting close-on-exec on the fd works. This can be done because libvirt currently lacks the ability to create child processes on Windows anyway. So there is no point in failing to set a flag that isn't useful at the moment anyway. --- src/util/util.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/src/util/util.c b/src/util/util.c index 43fdaf1..356a03a 100644 --- a/src/util/util.c +++ b/src/util/util.c @@ -275,7 +275,11 @@ int virSetInherit(int fd, bool inherit) { int virSetInherit(int fd ATTRIBUTE_UNUSED, bool inherit ATTRIBUTE_UNUSED) { - return -1; + /* FIXME: Currently creating child processes is not supported on + * Win32, so there is no point in failing calls that are only relevant + * when creating child processes. So just pretend that we changed the + * inheritance property of the given fd as requested. */ + return 0; } #endif /* WIN32 */ -- 1.7.4.1

On 10/09/2012 02:56 PM, Matthias Bolte wrote:
Currently virNetSocketNew fails because virSetCloseExec fails as there is no proper implementation for it on Windows at the moment. Workaround this by pretending that setting close-on-exec on the fd works. This can be done because libvirt currently lacks the ability to create child processes on Windows anyway. So there is no point in failing to set a flag that isn't useful at the moment anyway. --- src/util/util.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/src/util/util.c b/src/util/util.c index 43fdaf1..356a03a 100644 --- a/src/util/util.c +++ b/src/util/util.c @@ -275,7 +275,11 @@ int virSetInherit(int fd, bool inherit) {
int virSetInherit(int fd ATTRIBUTE_UNUSED, bool inherit ATTRIBUTE_UNUSED) { - return -1; + /* FIXME: Currently creating child processes is not supported on + * Win32, so there is no point in failing calls that are only relevant + * when creating child processes. So just pretend that we changed the + * inheritance property of the given fd as requested. */ + return 0;
Actually, gnulib CAN do this on Windows, but we aren't using the gnulib cloexec module. However, getting that in place is a bit more involved, so your patch is fine as an interim measure. ACK. -- Eric Blake eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

2012/10/9 Eric Blake <eblake@redhat.com>:
On 10/09/2012 02:56 PM, Matthias Bolte wrote:
Currently virNetSocketNew fails because virSetCloseExec fails as there is no proper implementation for it on Windows at the moment. Workaround this by pretending that setting close-on-exec on the fd works. This can be done because libvirt currently lacks the ability to create child processes on Windows anyway. So there is no point in failing to set a flag that isn't useful at the moment anyway. --- src/util/util.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/src/util/util.c b/src/util/util.c index 43fdaf1..356a03a 100644 --- a/src/util/util.c +++ b/src/util/util.c @@ -275,7 +275,11 @@ int virSetInherit(int fd, bool inherit) {
int virSetInherit(int fd ATTRIBUTE_UNUSED, bool inherit ATTRIBUTE_UNUSED) { - return -1; + /* FIXME: Currently creating child processes is not supported on + * Win32, so there is no point in failing calls that are only relevant + * when creating child processes. So just pretend that we changed the + * inheritance property of the given fd as requested. */ + return 0;
Actually, gnulib CAN do this on Windows, but we aren't using the gnulib cloexec module. However, getting that in place is a bit more involved, so your patch is fine as an interim measure.
ACK.
Thanks, pushed. -- Matthias Bolte http://photron.blogspot.com
participants (2)
-
Eric Blake
-
Matthias Bolte