From: Quentin Glidic <[email protected]> This is to be used by tests or when developping to load modules directly from the build tree
Signed-off-by: Quentin Glidic <[email protected]> --- man/weston.man | 5 +++-- src/compositor.c | 9 ++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/man/weston.man b/man/weston.man index 6175b0e..03307a0 100644 --- a/man/weston.man +++ b/man/weston.man @@ -103,7 +103,8 @@ Load .I backend.so instead of the default backend. The file is searched for in .IR "__weston_modules_dir__" , -or you can pass an absolute path. The default backend is +or you can pass a path (absolute, .-relative or ..-relative). The default +backend is .I __weston_native_backend__ unless the environment suggests otherwise, see .IR DISPLAY " and " WAYLAND_DISPLAY . @@ -132,7 +133,7 @@ instead of writing them to stderr. Load the modules (the option may be specified multiple times). Only used by the test suite. The file is searched for in .IR "__weston_modules_dir__" , -or you can pass an absolute path. +or you can pass a path (absolute, .-relative or ..-relative). .TP \fB\-\^S\fR\fIname\fR, \fB\-\-socket\fR=\fIname\fR Weston will listen in the Wayland socket called diff --git a/src/compositor.c b/src/compositor.c index 15196a7..d616ca3 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -3349,10 +3349,13 @@ load_module(const char *name, const char *entrypoint) char path[PATH_MAX]; void *module, *init; - if (name[0] != '/') - snprintf(path, sizeof path, "%s/%s", MODULEDIR, name); + if (name[0] == '/' || /* If the path is absolute or .. */ + (name[0] == '.' && /* ... relative to ... */ + (name[1] == '/' || /* ... current dir or ... */ + (name[1] == '.' && name[2] == '/')))) /* ... parent dir ... */ + snprintf(path, sizeof path, "%s", name); /* ... load the exact specified module */ else - snprintf(path, sizeof path, "%s", name); + snprintf(path, sizeof path, "%s/%s", MODULEDIR, name); module = dlopen(path, RTLD_NOW | RTLD_NOLOAD); if (module) { -- 1.8.2.1 _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
