probe ~/.xmms/Plugins for plugins too, so users without root access on their

machine can install them in their homedir and, if necessary, override
system wide defaults.

patch by Nicolas George, nicolas george at ens fr




git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@22283 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
ivo 2007-02-20 16:12:46 +00:00
parent 0cbf197d0d
commit b12556dd58
1 changed files with 19 additions and 6 deletions

View File

@ -155,19 +155,17 @@ static void input_set_info(char* title,int length, int rate, int freq, int nch){
xmms_length=length;
}
static void init_plugins(){
static void init_plugins_from_dir(const char *plugin_dir){
DIR *dir;
struct dirent *ent;
no_plugins=0;
dir = opendir(XMMS_INPUT_PLUGIN_DIR);
dir = opendir(plugin_dir);
if (!dir) return;
while ((ent = readdir(dir)) != NULL){
char filename[strlen(XMMS_INPUT_PLUGIN_DIR)+strlen(ent->d_name)+4];
char filename[strlen(plugin_dir)+strlen(ent->d_name)+4];
void* handle;
sprintf(filename,XMMS_INPUT_PLUGIN_DIR "/%s",ent->d_name);
sprintf(filename, "%s/%s", plugin_dir, ent->d_name);
handle=dlopen(filename, RTLD_NOW);
if(handle){
void *(*gpi) (void);
@ -190,6 +188,21 @@ static void init_plugins(){
closedir(dir);
}
static void init_plugins(){
char *home;
no_plugins=0;
home = getenv("HOME");
if(home != NULL) {
char xmms_home[strlen(home) + 15];
sprintf(xmms_home, "%s/.xmms/Plugins", home);
init_plugins_from_dir(xmms_home);
}
init_plugins_from_dir(XMMS_INPUT_PLUGIN_DIR);
}
static void cleanup_plugins(){
while(no_plugins>0){
--no_plugins;