fi
export PKG_CONFIG_PATH
+# Ensure that any 3rd party apps using libvirt.so from the build tree get
+# files resolved to the build/source tree too. Typically useful for language
+# bindings running tests against non-installed libvirt.
+LIBVIRT_DIR_OVERRIDE=1
+export LIBVIRT_DIR_OVERRIDE
+
# This is a cheap way to find some use-after-free and uninitialized
# read problems when using glibc.
random_val="$(awk 'BEGIN{srand(); print 1+int(255*rand())}' < /dev/null)"
virErrorInitialize() < 0)
goto error;
+ virFileActivateDirOverrideForLib();
+
if (getuid() != geteuid() ||
getgid() != getegid()) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
virDirRead;
virFileAbsPath;
virFileAccessibleAs;
-virFileActivateDirOverride;
+virFileActivateDirOverrideForLib;
+virFileActivateDirOverrideForProg;
virFileBindMountDevice;
virFileBuildPath;
virFileCanonicalizePath;
}
}
- virFileActivateDirOverride(argv[0]);
+ virFileActivateDirOverrideForProg(argv[0]);
if (!(config = virLockDaemonConfigNew(privileged))) {
VIR_ERROR(_("Can't create initial configuration"));
}
}
- virFileActivateDirOverride(argv[0]);
+ virFileActivateDirOverrideForProg(argv[0]);
if (!(config = virLogDaemonConfigNew(privileged))) {
VIR_ERROR(_("Can't create initial configuration"));
virUpdateSelfLastChanged(argv[0]);
- virFileActivateDirOverride(argv[0]);
+ virFileActivateDirOverrideForProg(argv[0]);
while (1) {
int optidx = 0;
exit(EXIT_FAILURE);
}
- virFileActivateDirOverride(argv[0]);
+ virFileActivateDirOverrideForProg(argv[0]);
/* Initialize the log system */
virLogSetFromEnv();
/**
- * virFileActivateDirOverride:
+ * virFileActivateDirOverrideForProg:
* @argv0: argv[0] of the calling program
*
* Look at @argv0 and try to detect if running from
* on the binary name, or '/.libs/' in the path
*/
void
-virFileActivateDirOverride(const char *argv0)
+virFileActivateDirOverrideForProg(const char *argv0)
{
char *file = strrchr(argv0, '/');
if (!file || file[1] == '\0')
}
+/**
+ * virFileActivateDirOverrideForLib:
+ *
+ * Look for LIBVIRT_DIR_OVERRIDE env var to see if we should find files from
+ * the build/src tree instead of install tree.
+ */
+void
+virFileActivateDirOverrideForLib(void)
+{
+ if (getenv("LIBVIRT_DIR_OVERRIDE") != NULL)
+ useDirOverride = true;
+}
+
+
/**
* virFileLength:
* @path: full path of the file
const char *installdir,
const char *envname)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(4) ATTRIBUTE_NONNULL(5);
-void virFileActivateDirOverride(const char *argv0)
+void virFileActivateDirOverrideForProg(const char *argv0)
ATTRIBUTE_NONNULL(1);
+void virFileActivateDirOverrideForLib(void);
off_t virFileLength(const char *path, int fd) ATTRIBUTE_NONNULL(1);
bool virFileIsDir (const char *file) ATTRIBUTE_NONNULL(1);
setenv("VIR_TEST_MOCK_PROGNAME", progname, 1);
- virFileActivateDirOverride(argv[0]);
+ virFileActivateDirOverrideForProg(argv[0]);
if (virTestSetEnvPath() < 0)
return EXIT_AM_HARDFAIL;
return EXIT_FAILURE;
}
- virFileActivateDirOverride(argv[0]);
+ virFileActivateDirOverrideForProg(argv[0]);
if (!vshInit(ctl, cmdGroups, NULL))
exit(EXIT_FAILURE);
return EXIT_FAILURE;
}
- virFileActivateDirOverride(argv[0]);
+ virFileActivateDirOverrideForProg(argv[0]);
if (!vshInit(ctl, cmdGroups, NULL))
exit(EXIT_FAILURE);