From 3e9ed15e76550f23233c7bb78ec1e609e6f2a0e3 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 13 Oct 2008 16:46:32 +0200 Subject: update: added delete_name_in() delete_name_in() is similar to delete_path(), but it does not need to look up the parent directory. --- src/update.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/update.c b/src/update.c index e07a32aff..52c87bbfd 100644 --- a/src/update.c +++ b/src/update.c @@ -123,6 +123,23 @@ delete_directory(struct directory *directory) directory_free(directory); } +static void +delete_name_in(struct directory *parent, const char *name) +{ + struct directory *directory = directory_get_child(parent, name); + struct song *song = songvec_find(&parent->songs, name); + + if (directory != NULL) { + delete_directory(directory); + modified = true; + } + + if (song != NULL) { + delete_song(parent, song); + modified = true; + } +} + struct delete_data { char *tmp; struct directory *dir; @@ -306,7 +323,7 @@ updateDirectory(struct directory *directory, const struct stat *st) if (myStat(path_max_tmp, &st2) == 0) updateInDirectory(directory, path_max_tmp, &st2); else - delete_path(path_max_tmp); + delete_name_in(directory, mpd_basename(path_max_tmp)); } closedir(dir); -- cgit v1.2.3