mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
Use virFileFindResource to locate iohelper for fdstream
Instead of hardcoding LIBEXECDIR as the location of the libvirt_iohelper binary, use virFileFindResource to optionally find it in the current build directory. Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
12b8290fa5
commit
c8e22a4c77
@ -78,17 +78,6 @@ struct virFDStreamData {
|
||||
};
|
||||
|
||||
|
||||
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;
|
||||
@ -593,6 +582,7 @@ virFDStreamOpenFileInternal(virStreamPtr st,
|
||||
struct stat sb;
|
||||
virCommandPtr cmd = NULL;
|
||||
int errfd = -1;
|
||||
char *iohelper_path = NULL;
|
||||
|
||||
VIR_DEBUG("st=%p path=%s oflags=%x offset=%llu length=%llu mode=%o",
|
||||
st, path, oflags, offset, length, mode);
|
||||
@ -648,9 +638,17 @@ virFDStreamOpenFileInternal(virStreamPtr st,
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (!(iohelper_path = virFileFindResource("libvirt_iohelper",
|
||||
"src",
|
||||
LIBEXECDIR)))
|
||||
goto error;
|
||||
|
||||
cmd = virCommandNewArgList(iohelper_path,
|
||||
path,
|
||||
NULL);
|
||||
|
||||
VIR_FREE(iohelper_path);
|
||||
|
||||
virCommandAddArgFormat(cmd, "%llu", length);
|
||||
virCommandPassFD(cmd, fd,
|
||||
VIR_COMMAND_PASS_FD_CLOSE_PARENT);
|
||||
@ -683,6 +681,7 @@ virFDStreamOpenFileInternal(virStreamPtr st,
|
||||
VIR_FORCE_CLOSE(fd);
|
||||
VIR_FORCE_CLOSE(childfd);
|
||||
VIR_FORCE_CLOSE(errfd);
|
||||
VIR_FREE(iohelper_path);
|
||||
if (oflags & O_CREAT)
|
||||
unlink(path);
|
||||
return -1;
|
||||
|
@ -33,9 +33,6 @@ 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);
|
||||
|
||||
|
@ -786,7 +786,6 @@ virFDStreamCreateFile;
|
||||
virFDStreamOpen;
|
||||
virFDStreamOpenFile;
|
||||
virFDStreamOpenPTY;
|
||||
virFDStreamSetIOHelper;
|
||||
|
||||
|
||||
# libvirt_internal.h
|
||||
|
@ -321,9 +321,6 @@ mymain(void)
|
||||
{
|
||||
char scratchdir[] = SCRATCHDIRTEMPLATE;
|
||||
int ret = 0;
|
||||
const char *iohelper = abs_builddir "/../src/libvirt_iohelper";
|
||||
|
||||
virFDStreamSetIOHelper(iohelper);
|
||||
|
||||
if (!mkdtemp(scratchdir)) {
|
||||
virFilePrintf(stderr, "Cannot create fakesysfsdir");
|
||||
|
Loading…
Reference in New Issue
Block a user