aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Gehrke <crater@qwertyuiop.de>2013-08-07 16:08:48 +0200
committerMax Kellermann <max@duempel.org>2013-08-07 18:22:27 +0200
commit87b732846388d3c4a2d755863df4328a6c08041e (patch)
tree7799988e59a800aeb2de278ce9fbfcb5ffe0b361
parent3f846cf6b86d0b9f0fe500b2a08d67672ed58169 (diff)
downloadmpd-87b732846388d3c4a2d755863df4328a6c08041e.tar.gz
mpd-87b732846388d3c4a2d755863df4328a6c08041e.tar.xz
mpd-87b732846388d3c4a2d755863df4328a6c08041e.zip
CommandLine.cxx: look for config file in XDG_CONFIG_HOME too
Look for "$XDG_CONFIG_HOME/mpd/mpd.conf", similar to where mpd looks for the file under Windows.
-rw-r--r--INSTALL6
-rw-r--r--doc/mpd.14
-rw-r--r--doc/mpd.conf.55
-rw-r--r--src/CommandLine.cxx8
4 files changed, 15 insertions, 8 deletions
diff --git a/INSTALL b/INSTALL
index 185798a76..4258d2999 100644
--- a/INSTALL
+++ b/INSTALL
@@ -196,9 +196,9 @@ Run
$ mpd <config file>
-First default is ~/.mpdconf then ~/.mpd/mpd.conf then /etc/mpd.conf. If
-neither of these exist a mpd configuration file must be specified at
-runtime.
+First default is $XDG_CONFIG_HOME/mpd/mpd.conf then ~/.mpdconf then
+~/.mpd/mpd.conf then /etc/mpd.conf. If 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.
diff --git a/doc/mpd.1 b/doc/mpd.1
index 49a3e1beb..ddeb2f50d 100644
--- a/doc/mpd.1
+++ b/doc/mpd.1
@@ -12,8 +12,8 @@ stores info about all available music, and this info can be easily searched and
retrieved. Player control, info retrieval, and playlist management can all be
managed remotely.
-MPD searches for a config file in \fB~/.mpdconf\fP then \fB/etc/mpd.conf\fP or
-uses CONF_FILE.
+MPD searches for a config file in \fB$XDG_CONFIG_HOME/mpd/mpd.conf\fP then
+\fB~/.mpdconf\fP then \fB/etc/mpd.conf\fP or uses CONF_FILE.
Read more about MPD at <\fBhttp://www.musicpd.org/\fP>.
.SH OPTIONS
diff --git a/doc/mpd.conf.5 b/doc/mpd.conf.5
index 62f5565e1..d441c0d1b 100644
--- a/doc/mpd.conf.5
+++ b/doc/mpd.conf.5
@@ -3,8 +3,9 @@
mpd.conf \- Music Player Daemon configuration file
.SH DESCRIPTION
\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 then at
-\fB~/.mpd/mpd.conf\fP and then in \fB/etc/mpd.conf\fP.
+command line, MPD first searches for it at \fB$XDG_CONFIG_HOME/mpd/mpd.conf\fP
+then at \fB~/.mpdconf\fP then at \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
specify parameters and their values. These lines contain the parameter name
diff --git a/src/CommandLine.cxx b/src/CommandLine.cxx
index a62ea370e..89575a13f 100644
--- a/src/CommandLine.cxx
+++ b/src/CommandLine.cxx
@@ -54,6 +54,7 @@
#else /* G_OS_WIN32 */
#define USER_CONFIG_FILE_LOCATION1 ".mpdconf"
#define USER_CONFIG_FILE_LOCATION2 ".mpd/mpd.conf"
+#define USER_CONFIG_FILE_LOCATION_XDG "mpd/mpd.conf"
#endif
static GQuark
@@ -219,7 +220,12 @@ parse_cmdline(int argc, char **argv, struct options *options,
return ReadConfigFile(path, error_r);
}
#else /* G_OS_WIN32 */
- Path path = PathBuildChecked(Path::FromUTF8(g_get_home_dir()),
+ Path path = PathBuildChecked(Path::FromUTF8(g_get_user_config_dir()),
+ USER_CONFIG_FILE_LOCATION_XDG);
+ if (!path.IsNull() && FileExists(path))
+ return ReadConfigFile(path, error_r);
+
+ path = PathBuildChecked(Path::FromUTF8(g_get_home_dir()),
USER_CONFIG_FILE_LOCATION1);
if (!path.IsNull() && FileExists(path))
return ReadConfigFile(path, error_r);