"Daniel P. Berrange" <berrange(a)redhat.com> wrote:
On Mon, Feb 02, 2009 at 06:08:15PM +0100, Jim Meyering wrote:
> From: Jim Meyering <meyering(a)redhat.com>
>
> * src/qemu_driver.c: Use virSetCloseExec and virSetNonBlock,
> rather than qemuSet* functions. Suggested by Daniel P. Berrange.
> * src/util.c (virSetCloseExec): Compile unconditionally.
> * src/util.h (virSetCloseExec): Declare
>
> diff --git a/qemud/Makefile.am b/qemud/Makefile.am
> index a0c161a..372b931 100644
> --- a/qemud/Makefile.am
> +++ b/qemud/Makefile.am
> @@ -107,6 +107,7 @@ libvirtd_LDADD = \
> if ! WITH_DRIVER_MODULES
> if WITH_QEMU
> libvirtd_LDADD += ../src/libvirt_driver_qemu.la
> +libvirtd_LDADD += ../src/libvirt_util.la
> endif
This is not required. All the functions in util.c are provided
in the libvirt.so, and exported with LIBVIRT_PRIVATE_X_X_X
tag.
This patch is missing the change to libvirt_private.sym to
actually add the virSetCloseExec function though.
Ah. forgot about that.
Done.
> @@ -182,10 +182,7 @@ int virSetNonBlock(int fd) {
> return 0;
> }
>
> -
> -#ifndef WIN32
> -
> -static int virSetCloseExec(int fd) {
> +int virSetCloseExec(int fd) {
> int flags;
> if ((flags = fcntl(fd, F_GETFD)) < 0)
> return -1;
> @@ -195,6 +192,8 @@ static int virSetCloseExec(int fd) {
> return 0;
> }
>
> +#ifndef WIN32
> +
> static int
> __virExec(virConnectPtr conn,
> const char *const*argv,
Why this change ? AFAIK, there is no close-on-exec flag in Win32,
since it doesn't have any concept of exec(). The QEMU driver isn't
built on Win32, so we shouldn't need to expose virSetCloseExec
there anyway.
Looked like it'd be portable enough to compile even there,
plus the general preference to avoid ifdef'd code in libraries.
I've read up a little and see that there really is no point,
so have put it back.