exit(EXIT_FAILURE);
}
*tmp = '\0';
- char *driverdir;
- if (virAsprintfQuiet(&driverdir, "%s/../../src/.libs", argv[0]) < 0 ||
- virAsprintfQuiet(&cpumap, "%s/../../src/cpu/cpu_map.xml",
+ if (virAsprintfQuiet(&cpumap, "%s/../../src/cpu/cpu_map.xml",
argv[0]) < 0) {
fprintf(stderr, _("%s: initialization failed\n"), argv[0]);
exit(EXIT_FAILURE);
}
- if (access(driverdir, R_OK) < 0) {
- fprintf(stderr, _("%s: expected driver directory '%s' is missing\n"),
- argv[0], driverdir);
- exit(EXIT_FAILURE);
- }
-#ifdef WITH_DRIVER_MODULES
- virDriverModuleInitialize(driverdir);
-#endif
cpuMapOverride(cpumap);
VIR_FREE(cpumap);
*tmp = '/';
- /* Must not free 'driverdir' - it is still used */
}
while (1) {
#include "driver.h"
#include "viralloc.h"
+#include "virfile.h"
#include "virlog.h"
#include "virutil.h"
#include "configmake.h"
# include <dlfcn.h>
-static const char *moddir = NULL;
-
-void
-virDriverModuleInitialize(const char *defmoddir)
-{
- const char *custommoddir = virGetEnvBlockSUID("LIBVIRT_DRIVER_DIR");
- if (custommoddir)
- moddir = custommoddir;
- else if (defmoddir)
- moddir = defmoddir;
- else
- moddir = DEFAULT_DRIVER_DIR;
- VIR_DEBUG("Module dir %s", moddir);
-}
-
void *
virDriverLoadModule(const char *name)
{
void *handle = NULL;
int (*regsym)(void);
- if (moddir == NULL)
- virDriverModuleInitialize(NULL);
-
VIR_DEBUG("Module load %s", name);
- if (virAsprintfQuiet(&modfile, "%s/libvirt_driver_%s.so", moddir, name) < 0)
+ if (!(modfile = virFileFindResourceFull(name,
+ "libvirt_driver_",
+ ".so",
+ "src/.libs",
+ LIBDIR "/libvirt/connection-driver",
+ "LIBVIRT_DRIVER_DIR")))
return NULL;
if (access(modfile, R_OK) < 0) {
# ifdef WITH_LIBVIRTD
int virRegisterStateDriver(virStateDriverPtr) ATTRIBUTE_RETURN_CHECK;
# endif
-void virDriverModuleInitialize(const char *defmoddir);
void *virDriverLoadModule(const char *name);
#endif /* __VIR_DRIVER_H__ */
# driver.h
virDriverLoadModule;
-virDriverModuleInitialize;
# Let emacs know we want case-insensitive sorting
# Local Variables:
ret = -1; \
} while (0)
- virDriverModuleInitialize(abs_builddir "/../src/.libs");
-
#ifdef WITH_NETWORK
# define USE_NETWORK "network"
TEST("network", NULL);