multiple config dirs (patch)

nikolaus klepp <[email protected]>
Newsgroups gmane.comp.multimedia.xmms.devel
Message-ID <[email protected]>
hi all!

hope this is the right place to post this.

Here's a small patch that allows you to use multiple config directories with 
xmms 1.2.9.

I use it as a DJ-System with 2 soundcards and 2 XMMS-sessions:

session 0) normalze plugin, /dev/dsp0, connected to ears
session 1) crossfade + normalize plugin, /dev/dsp0, connected to amplifier & 
boxes.

so I can preview a song before playing :-)

suggestions?

nik


-- 

Mag. Dr. Nikolaus Klepp
IT Consulting, EDV Service & Programmierung
Herakhstraße 20/25
A-4810 Gmunden
Tel.: +43 676 40 27 008
email: [email protected]
www: www.klepp.info
UID: ATU51611304

_______________________________________________
xmms-devel mailing list
[email protected]
http://lists.xmms.org/mailman/listinfo/xmms-devel
xmms-1.2.9-different-config-directories.diff (text/x-diff, 3.5 KB)
--- xmms-1.2.9/xmms/main.c	2004-01-17 01:11:36.000000000 +0100
+++ xmms-1.2.9/xmms/main.c	2004-02-20 00:00:31.000000000 +0100
@@ -75,6 +75,7 @@
 static int bitrate = 0, frequency = 0, numchannels = 0;
 
 Config cfg;
+static gchar *config_dir = NULL;
 
 static gboolean mainwin_force_redraw = FALSE;
 static gchar *mainwin_title_text = NULL;
@@ -306,13 +307,11 @@
 {
 	gchar *filename;
 
-	filename = g_strconcat(g_get_home_dir(), "/.xmms", NULL);
+	mkdir(config_dir, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);
+	filename = g_strconcat(config_dir, "/Skins", NULL);
 	mkdir(filename, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);
 	g_free(filename);
-	filename = g_strconcat(g_get_home_dir(), "/.xmms/Skins", NULL);
-	mkdir(filename, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);
-	g_free(filename);
-	filename = g_strconcat(g_get_home_dir(), "/.xmms/Plugins", NULL);
+	filename = g_strconcat(config_dir, "/Plugins", NULL);
 	mkdir(filename, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);
 	g_free(filename);
 }
@@ -376,7 +375,7 @@
 	
 	cfg.gentitle_format = NULL;
 
-	filename = g_strconcat(g_get_home_dir(), "/.xmms/config", NULL);
+	filename = g_strconcat(config_dir, "/config", NULL);
 	cfgfile = xmms_cfg_open_file(filename);
 	if (cfgfile)
 	{
@@ -540,7 +539,7 @@
 	}
 	else
 		cfg.disabled_iplugins = g_strdup("");
-	filename = g_strconcat(g_get_home_dir(), "/.xmms/config", NULL);
+	filename = g_strconcat(config_dir, "/config", NULL);
 	cfgfile = xmms_cfg_open_file(filename);
 	if (!cfgfile)
 		cfgfile = xmms_cfg_new();
@@ -673,7 +672,7 @@
 	xmms_cfg_free(cfgfile);
 
 	g_free(filename);
-	filename = g_strconcat(g_get_home_dir(), "/.xmms/xmms.m3u", NULL);
+	filename = g_strconcat(config_dir, "/xmms.m3u", NULL);
 	playlist_save(filename, FALSE);
 	g_free(filename);
 }
@@ -3198,6 +3197,7 @@
 	{"show-main-window", 0, NULL, 'm'},
 	{"version", 0, NULL, 'v'},
 	{"sm-client-id", 1, NULL, 'i'},
+	{"config", 1, NULL, 'c'},
 	{0, 0, 0, 0}
 };
 
@@ -3239,6 +3239,9 @@
 	fprintf(stderr, "\n-i, --sm-client-id	");
 	/* -i, --sm-client-id switch */
 	fprintf(stderr, _("Previous session ID"));
+	fprintf(stderr, "\n-c, --config		");
+	/* -c, --config switch */
+	fprintf(stderr, _("Use this config directory"));
 	fprintf(stderr, "\n-v, --version		");
 	/* -v, --version switch */
 	fprintf(stderr, _("Print version number and exit."));
@@ -3261,7 +3264,8 @@
 
 	memset(opt, 0, sizeof(struct cmdlineopt));
 	opt->session = -1;
-	while ((c = getopt_long(argc, argv, "hn:rpusfemvt", long_options, NULL)) != -1)
+	
+	while ((c = getopt_long(argc, argv, "hn:rpusfemvtc:", long_options, NULL)) != -1)
 	{
 		switch (c)
 		{
@@ -3302,8 +3306,15 @@
 			case 'i':
 				opt->previous_session_id = g_strdup(optarg);
 				break;
+			case 'c':
+				config_dir = g_strdup(optarg);
+				break;
 		}
 	}
+
+	if (!config_dir)
+		config_dir = g_strconcat(g_get_home_dir(), "/.xmms");
+		
 	for (i = optind; i < argc; i++)
 	{
 		if (argv[i][0] == '/' || strstr(argv[i], "://"))
@@ -3568,7 +3579,7 @@
 	gdk_set_sm_client_id(sm_client_id);
 	mainwin_create();
 
-	filename = g_strconcat(g_get_home_dir(), "/.xmms/gtkrc", NULL);
+	filename = g_strconcat(config_dir, "/gtkrc", NULL);
 	gtk_rc_init();
 	gtk_rc_parse(filename);
 	g_free(filename);
@@ -3587,7 +3598,7 @@
 	util_read_menu_rc();
 	read_volume(VOLSET_STARTUP);
 
-	filename = g_strconcat(g_get_home_dir(), "/.xmms/xmms.m3u", NULL);
+	filename = g_strconcat(config_dir, "/xmms.m3u", NULL);
 	playlist_load(filename);
 	g_free(filename);
 	playlist_set_position(cfg.playlist_position);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.