diff --git a/src/fdstream.c b/src/fdstream.c index a9a4851dd3..d5e5aafcb5 100644 --- a/src/fdstream.c +++ b/src/fdstream.c @@ -74,6 +74,18 @@ struct virFDStreamData { virMutex lock; }; + +static const char *iohelper_path = LIBEXECDIR "/libvirt_iohelper"; + +void virFDStreamSetIOHelper(const char *path) +{ + if (path == NULL) + iohelper_path = LIBEXECDIR "/libvirt_iohelper"; + else + iohelper_path = path; +} + + static int virFDStreamRemoveCallback(virStreamPtr stream) { struct virFDStreamData *fdst = stream->privateData; @@ -634,7 +646,7 @@ virFDStreamOpenFileInternal(virStreamPtr st, goto error; } - cmd = virCommandNewArgList(LIBEXECDIR "/libvirt_iohelper", + cmd = virCommandNewArgList(iohelper_path, path, NULL); virCommandAddArgFormat(cmd, "%llu", length); diff --git a/src/fdstream.h b/src/fdstream.h index d6f5a7a104..3ca6256ca8 100644 --- a/src/fdstream.h +++ b/src/fdstream.h @@ -33,6 +33,9 @@ typedef void (*virFDStreamInternalCloseCb)(virStreamPtr st, void *opaque); typedef void (*virFDStreamInternalCloseCbFreeOpaque)(void *opaque); +/* Only for use by test suite */ +void virFDStreamSetIOHelper(const char *path); + int virFDStreamOpen(virStreamPtr st, int fd); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 2d7fe5b40f..ef65a8be38 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -699,6 +699,7 @@ virFDStreamConnectUNIX; virFDStreamCreateFile; virFDStreamOpen; virFDStreamOpenFile; +virFDStreamSetIOHelper; # libvirt_internal.h