aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/inotify_update.c33
-rw-r--r--src/mapper.c6
-rw-r--r--src/mapper.h11
-rw-r--r--src/playlist_song.c4
4 files changed, 25 insertions, 29 deletions
diff --git a/src/inotify_update.c b/src/inotify_update.c
index e78c15fc1..02e55ee0b 100644
--- a/src/inotify_update.c
+++ b/src/inotify_update.c
@@ -266,18 +266,19 @@ mpd_inotify_callback(int wd, unsigned mask,
(mask & IN_ISDIR) != 0) {
/* a sub directory was changed: register those in
inotify */
- char *root = map_directory_fs(db_get_root());
- char *path_fs;
-
- if (uri_fs != NULL) {
- path_fs = g_strconcat(root, "/", uri_fs, NULL);
- g_free(root);
- } else
+ const char *root = mapper_get_music_directory();
+ const char *path_fs;
+ char *allocated = NULL;
+
+ if (uri_fs != NULL)
+ path_fs = allocated =
+ g_strconcat(root, "/", uri_fs, NULL);
+ else
path_fs = root;
recursive_watch_subdirectories(directory, path_fs,
watch_directory_depth(directory));
- g_free(path_fs);
+ g_free(allocated);
}
if ((mask & (IN_CLOSE_WRITE|IN_MOVE|IN_DELETE)) != 0 ||
@@ -303,21 +304,13 @@ mpd_inotify_callback(int wd, unsigned mask,
void
mpd_inotify_init(unsigned max_depth)
{
- struct directory *root;
- char *path;
GError *error = NULL;
g_debug("initializing inotify");
- root = db_get_root();
- if (root == NULL) {
- g_debug("no music directory configured");
- return;
- }
-
- path = map_directory_fs(root);
+ const char *path = mapper_get_music_directory();
if (path == NULL) {
- g_warning("mapper has failed");
+ g_debug("no music directory configured");
return;
}
@@ -326,13 +319,12 @@ mpd_inotify_init(unsigned max_depth)
if (inotify_source == NULL) {
g_warning("%s", error->message);
g_error_free(error);
- g_free(path);
return;
}
inotify_max_depth = max_depth;
- inotify_root.name = path;
+ inotify_root.name = g_strdup(path);
inotify_root.descriptor = mpd_inotify_source_add(inotify_source, path,
IN_MASK, &error);
if (inotify_root.descriptor < 0) {
@@ -340,7 +332,6 @@ mpd_inotify_init(unsigned max_depth)
g_error_free(error);
mpd_inotify_source_free(inotify_source);
inotify_source = NULL;
- g_free(path);
return;
}
diff --git a/src/mapper.c b/src/mapper.c
index 4aa4e0b14..d230f5d92 100644
--- a/src/mapper.c
+++ b/src/mapper.c
@@ -117,10 +117,10 @@ void mapper_finish(void)
g_free(playlist_dir);
}
-bool
-mapper_has_music_directory(void)
+const char *
+mapper_get_music_directory(void)
{
- return music_dir != NULL;
+ return music_dir;
}
const char *
diff --git a/src/mapper.h b/src/mapper.h
index c8dba29cb..ed4a60b56 100644
--- a/src/mapper.h
+++ b/src/mapper.h
@@ -36,12 +36,19 @@ void mapper_init(const char *_music_dir, const char *_playlist_dir);
void mapper_finish(void);
+G_GNUC_CONST
+const char *
+mapper_get_music_directory(void);
+
/**
* Returns true if a music directory was configured.
*/
G_GNUC_CONST
-bool
-mapper_has_music_directory(void);
+static inline bool
+mapper_has_music_directory(void)
+{
+ return mapper_get_music_directory() != NULL;
+}
/**
* If the specified absolute path points inside the music directory,
diff --git a/src/playlist_song.c b/src/playlist_song.c
index d40ef63cf..8a3ba303e 100644
--- a/src/playlist_song.c
+++ b/src/playlist_song.c
@@ -115,7 +115,7 @@ playlist_check_translate_song(struct song *song, const char *base_uri,
if (g_path_is_absolute(uri)) {
/* XXX fs_charset vs utf8? */
- char *prefix = map_directory_fs(db_get_root());
+ const char *prefix = mapper_get_music_directory();
if (prefix != NULL && g_str_has_prefix(uri, prefix) &&
uri[strlen(prefix)] == '/')
@@ -123,13 +123,11 @@ playlist_check_translate_song(struct song *song, const char *base_uri,
else if (!secure) {
/* local files must be relative to the music
directory when "secure" is enabled */
- g_free(prefix);
song_free(song);
return NULL;
}
base_uri = NULL;
- g_free(prefix);
}
if (base_uri != NULL)