From 87b732846388d3c4a2d755863df4328a6c08041e Mon Sep 17 00:00:00 2001 From: Alexander Gehrke Date: Wed, 7 Aug 2013 16:08:48 +0200 Subject: 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. --- INSTALL | 6 +++--- doc/mpd.1 | 4 ++-- doc/mpd.conf.5 | 5 +++-- src/CommandLine.cxx | 8 +++++++- 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 -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); -- cgit v1.2.3