From 94a5a5a985ab0ce3d8ca72d4e5be28a71a1010e0 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 13 Oct 2008 16:55:55 +0200 Subject: update: always look up parent directory in updatePath() By always creating the parent directory, we can use delete_name_in() without further lookups. The parents which may non exist will be pruned later. An update request for a non-existing or empty directory should be quite unusual, so this doesn't add any measurable overhead. --- src/update.c | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/update.c b/src/update.c index 0219dad56..93ba1668c 100644 --- a/src/update.c +++ b/src/update.c @@ -161,23 +161,6 @@ delete_song_if_removed(struct song *song, void *_data) return 0; } -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) { @@ -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) -- cgit v1.2.3