Skip to content

Commit

Permalink
Compile in the ALSA search path instead of relying on ld.so.conf.
Browse files Browse the repository at this point in the history
The Ubuntu package currently uses ld.so.conf.d fragments to add
/usr/lib/alsa-lib and /usr/lib{32,64}/alsa-lib to the dlopen search path.
These don't *belong* on the global search path, and it becomes much more
problematic to put them there with the advent of multiarch because each
architecture then needs its own distinct config file to add the separate
path... which is then also put in the global library namespace.  Instead,
let ALSA make use of the already defined ALSA_PLUGIN_DIR to look up
plugins.

Signed-off-by: Jordi Mallach <jordi@debian.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
vorlonofportland authored and tiwai committed May 16, 2013
1 parent 2b84ab0 commit b906db1
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion src/dlmisc.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,25 @@ void *snd_dlopen(const char *name, int mode)
#endif
#endif
#ifdef HAVE_LIBDL
return dlopen(name, mode);
/*
* Handle the plugin dir not being on the default dlopen search
* path, without resorting to polluting the entire system namespace
* via ld.so.conf.
*/
void *handle = NULL;
char *filename;

if (name && name[0] != '/') {
filename = malloc(sizeof(ALSA_PLUGIN_DIR) + 1 + strlen(name) + 1);
strcpy(filename, ALSA_PLUGIN_DIR);
strcat(filename, "/");
strcat(filename, name);
handle = dlopen(filename, mode);
free(filename);
}
if (!handle)
handle = dlopen(name, mode);
return handle;
#else
return NULL;
#endif
Expand Down

0 comments on commit b906db1

Please sign in to comment.