allow ~/.mpd/mpd.conf as alternate config file

mpd uses some additional files to work, such as pid_file, state_file,
db_file, etc. when running mpd as non-root user, it is often that those
files end in ~/.mpd

in that case, we end up with 2 entries in a user's home, .mpdconf and
.mpd - which clutters homedirs.

this patch allows ~/.mpd/mpd.conf as an alternative to ~/.mpdconf,
allowing for a cleaner homedir
This commit is contained in:
Jérôme Quelin 2009-01-14 14:27:17 +01:00 committed by Max Kellermann
parent 642b861526
commit ae5517b0b3
3 changed files with 19 additions and 11 deletions

View File

@ -162,8 +162,9 @@ Run
$ mpd <config file> $ mpd <config file>
First default is ~/.mpdconf then /etc/mpd.conf. If neither of these exist First default is ~/.mpdconf then ~/.mpd/mpd.conf then /etc/mpd.conf. If
a mpd configuration file must be specified at runtime. A neither of these exist a mpd configuration file must be specified at
runtime.
A sample config file is included with the source of MPD, mpdconf.example. A sample config file is included with the source of MPD, mpdconf.example.

View File

@ -3,8 +3,8 @@
mpd.conf \- Music Player Daemon configuration file mpd.conf \- Music Player Daemon configuration file
.SH DESCRIPTION .SH DESCRIPTION
\fBmpd.conf\fP is the configuration file for mpd(1). If not specified on the \fBmpd.conf\fP is the configuration file for mpd(1). If not specified on the
command line, MPD first searches for it at \fB~/.mpdconf\fP and then in command line, MPD first searches for it at \fB~/.mpdconf\fP then at
\fB/etc/mpd.conf\fP. \fB~/.mpd/mpd.conf\fP and then in \fB/etc/mpd.conf\fP.
Lines beginning with a "#" character are comments. All other non-empty lines Lines beginning with a "#" character are comments. All other non-empty lines
specify parameters and their values. These lines contain the parameter name specify parameters and their values. These lines contain the parameter name

View File

@ -33,7 +33,8 @@
#include <stdlib.h> #include <stdlib.h>
#define SYSTEM_CONFIG_FILE_LOCATION "/etc/mpd.conf" #define SYSTEM_CONFIG_FILE_LOCATION "/etc/mpd.conf"
#define USER_CONFIG_FILE_LOCATION ".mpdconf" #define USER_CONFIG_FILE_LOCATION1 ".mpdconf"
#define USER_CONFIG_FILE_LOCATION2 ".mpd/mpd.conf"
G_GNUC_NORETURN G_GNUC_NORETURN
static void version(void) static void version(void)
@ -134,16 +135,22 @@ void parseOptions(int argc, char **argv, Options *options)
if (argc <= 1) { if (argc <= 1) {
/* default configuration file path */ /* default configuration file path */
char *path; char *path1;
char *path2;
path = g_build_filename(g_get_home_dir(), path1 = g_build_filename(g_get_home_dir(),
USER_CONFIG_FILE_LOCATION, NULL); USER_CONFIG_FILE_LOCATION1, NULL);
if (g_file_test(path, G_FILE_TEST_IS_REGULAR)) path2 = g_build_filename(g_get_home_dir(),
readConf(path); USER_CONFIG_FILE_LOCATION2, NULL);
if (g_file_test(path1, G_FILE_TEST_IS_REGULAR))
readConf(path1);
else if (g_file_test(path2, G_FILE_TEST_IS_REGULAR))
readConf(path2);
else if (g_file_test(SYSTEM_CONFIG_FILE_LOCATION, else if (g_file_test(SYSTEM_CONFIG_FILE_LOCATION,
G_FILE_TEST_IS_REGULAR)) G_FILE_TEST_IS_REGULAR))
readConf(SYSTEM_CONFIG_FILE_LOCATION); readConf(SYSTEM_CONFIG_FILE_LOCATION);
g_free(path); g_free(path1);
g_free(path2);
} else if (argc == 2) { } else if (argc == 2) {
/* specified configuration file */ /* specified configuration file */
readConf(argv[1]); readConf(argv[1]);