mapper: add mapper_get_music_directory()

Shortcut for map_directory_fs(db_get_root()).
This commit is contained in:
Max Kellermann 2012-02-13 20:10:19 +01:00
parent df2d041483
commit 0a0b473765
4 changed files with 24 additions and 28 deletions

View File

@ -266,18 +266,19 @@ mpd_inotify_callback(int wd, unsigned mask,
(mask & IN_ISDIR) != 0) { (mask & IN_ISDIR) != 0) {
/* a sub directory was changed: register those in /* a sub directory was changed: register those in
inotify */ inotify */
char *root = map_directory_fs(db_get_root()); const char *root = mapper_get_music_directory();
char *path_fs; const char *path_fs;
char *allocated = NULL;
if (uri_fs != NULL) { if (uri_fs != NULL)
path_fs = g_strconcat(root, "/", uri_fs, NULL); path_fs = allocated =
g_free(root); g_strconcat(root, "/", uri_fs, NULL);
} else else
path_fs = root; path_fs = root;
recursive_watch_subdirectories(directory, path_fs, recursive_watch_subdirectories(directory, path_fs,
watch_directory_depth(directory)); watch_directory_depth(directory));
g_free(path_fs); g_free(allocated);
} }
if ((mask & (IN_CLOSE_WRITE|IN_MOVE|IN_DELETE)) != 0 || if ((mask & (IN_CLOSE_WRITE|IN_MOVE|IN_DELETE)) != 0 ||
@ -303,21 +304,13 @@ mpd_inotify_callback(int wd, unsigned mask,
void void
mpd_inotify_init(unsigned max_depth) mpd_inotify_init(unsigned max_depth)
{ {
struct directory *root;
char *path;
GError *error = NULL; GError *error = NULL;
g_debug("initializing inotify"); g_debug("initializing inotify");
root = db_get_root(); const char *path = mapper_get_music_directory();
if (root == NULL) {
g_debug("no music directory configured");
return;
}
path = map_directory_fs(root);
if (path == NULL) { if (path == NULL) {
g_warning("mapper has failed"); g_debug("no music directory configured");
return; return;
} }
@ -326,13 +319,12 @@ mpd_inotify_init(unsigned max_depth)
if (inotify_source == NULL) { if (inotify_source == NULL) {
g_warning("%s", error->message); g_warning("%s", error->message);
g_error_free(error); g_error_free(error);
g_free(path);
return; return;
} }
inotify_max_depth = max_depth; 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, inotify_root.descriptor = mpd_inotify_source_add(inotify_source, path,
IN_MASK, &error); IN_MASK, &error);
if (inotify_root.descriptor < 0) { if (inotify_root.descriptor < 0) {
@ -340,7 +332,6 @@ mpd_inotify_init(unsigned max_depth)
g_error_free(error); g_error_free(error);
mpd_inotify_source_free(inotify_source); mpd_inotify_source_free(inotify_source);
inotify_source = NULL; inotify_source = NULL;
g_free(path);
return; return;
} }

View File

@ -117,10 +117,10 @@ void mapper_finish(void)
g_free(playlist_dir); g_free(playlist_dir);
} }
bool const char *
mapper_has_music_directory(void) mapper_get_music_directory(void)
{ {
return music_dir != NULL; return music_dir;
} }
const char * const char *

View File

@ -36,12 +36,19 @@ void mapper_init(const char *_music_dir, const char *_playlist_dir);
void mapper_finish(void); void mapper_finish(void);
G_GNUC_CONST
const char *
mapper_get_music_directory(void);
/** /**
* Returns true if a music directory was configured. * Returns true if a music directory was configured.
*/ */
G_GNUC_CONST G_GNUC_CONST
bool static inline bool
mapper_has_music_directory(void); mapper_has_music_directory(void)
{
return mapper_get_music_directory() != NULL;
}
/** /**
* If the specified absolute path points inside the music directory, * If the specified absolute path points inside the music directory,

View File

@ -115,7 +115,7 @@ playlist_check_translate_song(struct song *song, const char *base_uri,
if (g_path_is_absolute(uri)) { if (g_path_is_absolute(uri)) {
/* XXX fs_charset vs utf8? */ /* 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) && if (prefix != NULL && g_str_has_prefix(uri, prefix) &&
uri[strlen(prefix)] == '/') uri[strlen(prefix)] == '/')
@ -123,13 +123,11 @@ playlist_check_translate_song(struct song *song, const char *base_uri,
else if (!secure) { else if (!secure) {
/* local files must be relative to the music /* local files must be relative to the music
directory when "secure" is enabled */ directory when "secure" is enabled */
g_free(prefix);
song_free(song); song_free(song);
return NULL; return NULL;
} }
base_uri = NULL; base_uri = NULL;
g_free(prefix);
} }
if (base_uri != NULL) if (base_uri != NULL)