From: "Daniel P. Berrange" <berrange(a)redhat.com>
Currently the fdstream function hardcodes the location
of the iohelper to LIBEXECDIR "/libvirt_iohelper". This
is not convenient when trying to write test cases which
use this code. Add a virFDStreamSetIOHelper method to
allow the test cases to point to the location of the
un-installed iohelper binary.
Signed-off-by: Daniel P. Berrange <berrange(a)redhat.com>
---
src/fdstream.c | 14 +++++++++++++-
src/fdstream.h | 3 +++
src/libvirt_private.syms | 1 +
3 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/fdstream.c b/src/fdstream.c
index a9a4851..d5e5aaf 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 d6f5a7a..3ca6256 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 bb70595..3cf0bcb 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -699,6 +699,7 @@ virFDStreamConnectUNIX;
virFDStreamCreateFile;
virFDStreamOpen;
virFDStreamOpenFile;
+virFDStreamSetIOHelper;
# libvirt_internal.h
--
1.8.2.1