From 886ed1b225d50e5e6c220e11b5800f45d36a5d37 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Thu, 1 Jan 2009 19:07:38 +0100
Subject: [PATCH] mapper: fall back to XDG music directory

If no music_directory is configured, fall back to the XDG music
directory, determined by
g_get_user_special_dir(G_USER_DIRECTORY_MUSIC).
---
 NEWS         |  1 +
 src/mapper.c | 12 +++++++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/NEWS b/NEWS
index 632668ed8..d1f223eb6 100644
--- a/NEWS
+++ b/NEWS
@@ -8,6 +8,7 @@ ver 0.15 - (200?/??/??)
 * the option "error_file" was removed, all messages are logged into
   "log_file"
 * support logging to syslog
+* fall back to XDG music directory if no music_directory is configured
 
 ver 0.14 (2008/12/25)
 * audio outputs:
diff --git a/src/mapper.c b/src/mapper.c
index e9364f878..291816e6e 100644
--- a/src/mapper.c
+++ b/src/mapper.c
@@ -43,11 +43,21 @@ static size_t playlist_dir_length;
 
 void mapper_init(void)
 {
-	ConfigParam *music_dir_param = parseConfigFilePath(CONF_MUSIC_DIR, 1);
+	ConfigParam *music_dir_param = parseConfigFilePath(CONF_MUSIC_DIR, false);
 	ConfigParam *playlist_dir_param = parseConfigFilePath(CONF_PLAYLIST_DIR, 1);
 	int ret;
 	struct stat st;
 
+	if (music_dir_param != NULL) {
+		music_dir = g_strdup(music_dir_param->value);
+	} else {
+		music_dir = g_strdup(g_get_user_special_dir(G_USER_DIRECTORY_MUSIC));
+		if (music_dir == NULL)
+			/* GLib failed to determine the XDG music
+			   directory - abort */
+			g_error("config parameter \"%s\" not found\n", CONF_MUSIC_DIR);
+	}
+
 	music_dir = g_strdup(music_dir_param->value);
 	music_dir_length = strlen(music_dir);