aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/update.c30
1 files changed, 10 insertions, 20 deletions
diff --git a/src/update.c b/src/update.c
index 0219dad56..93ba1668c 100644
--- a/src/update.c
+++ b/src/update.c
@@ -162,23 +162,6 @@ delete_song_if_removed(struct song *song, void *_data)
}
static void
-delete_path(const char *path)
-{
- struct directory *directory = db_get_directory(path);
- struct song *song = db_get_song(path);
-
- if (directory != NULL) {
- delete_directory(directory);
- modified = true;
- }
-
- if (song != NULL) {
- delete_song(song->parent, song);
- modified = true;
- }
-}
-
-static void
removeDeletedFromDirectory(char *path_max_tmp, struct directory *directory)
{
int i;
@@ -405,13 +388,20 @@ addParentPathToDB(const char *utf8path)
static void
updatePath(const char *path)
{
+ struct directory *parent;
+ const char *name;
struct stat st;
+ parent = addParentPathToDB(path);
+ if (parent == NULL)
+ return;
+
+ name = mpd_basename(path);
+
if (myStat(path, &st) == 0)
- updateInDirectory(addParentPathToDB(path),
- mpd_basename(path), &st);
+ updateInDirectory(parent, name, &st);
else
- delete_path(path);
+ delete_name_in(parent, name);
}
static void * update_task(void *_path)