Commit ae5517b0 authored by Jérôme Quelin's avatar Jérôme Quelin Committed by Max Kellermann

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
parent 642b8615
...@@ -162,8 +162,9 @@ Run ...@@ -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.
......
...@@ -3,8 +3,8 @@ ...@@ -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
......
...@@ -33,7 +33,8 @@ ...@@ -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) ...@@ -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(),
USER_CONFIG_FILE_LOCATION, NULL); path1 = g_build_filename(g_get_home_dir(),
if (g_file_test(path, G_FILE_TEST_IS_REGULAR)) USER_CONFIG_FILE_LOCATION1, NULL);
readConf(path); path2 = g_build_filename(g_get_home_dir(),
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]);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment