diff --git a/src/fdstream.c b/src/fdstream.c index a9a4851dd348665a4ca86f78ade2c114d18af8d2..d5e5aafcb5334fc08d8257e516b6714fd38d5756 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 d6f5a7a104bbfd0b38665b0b7292284153d915e8..3ca6256ca8eb8dd8fdfc574179fbc129373b51f9 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 2d7fe5b40f4b2b28648d0da6c5fe1ee954b0ce00..ef65a8be38e782c454c0791f83bc2bdbd4ceb42d 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -699,6 +699,7 @@ virFDStreamConnectUNIX; virFDStreamCreateFile; virFDStreamOpen; virFDStreamOpenFile; +virFDStreamSetIOHelper; # libvirt_internal.h