[MPlayer-cvslog] r22283 - trunk/libmpdemux/demux_xmms.c

ivo subversion at mplayerhq.hu
Tue Feb 20 17:12:46 CET 2007


Author: ivo
Date: Tue Feb 20 17:12:46 2007
New Revision: 22283

Modified:
   trunk/libmpdemux/demux_xmms.c

Log:
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




Modified: trunk/libmpdemux/demux_xmms.c
==============================================================================
--- trunk/libmpdemux/demux_xmms.c	(original)
+++ trunk/libmpdemux/demux_xmms.c	Tue Feb 20 17:12:46 2007
@@ -155,19 +155,17 @@
     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 @@
     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;



More information about the MPlayer-cvslog mailing list