[PATCH v2 weston] compositor: Respect WESTON_BUILD_DIR env var in weston_load_module
Jon A. Cruz
jonc at osg.samsung.com
Tue Jun 9 16:24:50 PDT 2015
On 06/08/2015 09:46 AM, Derek Foreman wrote:
> We were loading modules out of the system dirs unconditionally, so
> tests that loaded modules would use the system ones, or fail if
> they weren't installed.
>
> Reviewed-By: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
> Signed-off-by: Derek Foreman <derekf at osg.samsung.com>
> ---
> src/compositor.c | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/src/compositor.c b/src/compositor.c
> index 8f02b4d..3196e5a 100644
> --- a/src/compositor.c
> +++ b/src/compositor.c
> @@ -4906,16 +4906,21 @@ on_caught_signal(int s, siginfo_t *siginfo, void *context)
> WL_EXPORT void *
> weston_load_module(const char *name, const char *entrypoint)
> {
> + const char *builddir = getenv("WESTON_BUILD_DIR");
> char path[PATH_MAX];
> void *module, *init;
>
> if (name == NULL)
> return NULL;
>
> - if (name[0] != '/')
> - snprintf(path, sizeof path, "%s/%s", MODULEDIR, name);
> - else
> + if (name[0] != '/') {
> + if (builddir)
> + snprintf(path, sizeof path, "%s/.libs/%s", builddir, name);
> + else
> + snprintf(path, sizeof path, "%s/%s", MODULEDIR, name);
> + } else {
> snprintf(path, sizeof path, "%s", name);
> + }
>
> module = dlopen(path, RTLD_NOW | RTLD_NOLOAD);
> if (module) {
After the calls to snprintf, for safety the last byte of the 'path'
buffer should be explicitly zeroed as technically null-termination is
not guaranteed.
--
Jon A. Cruz - Senior Open Source Developer
Samsung Open Source Group
jonc at osg.samsung.com
More information about the wayland-devel
mailing list