diff options
author | Max Kellermann <max@duempel.org> | 2008-10-09 19:15:56 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-10-09 19:15:56 +0200 |
commit | 78899051c0fa1ab4adb8bc60df576c3a71992ecb (patch) | |
tree | f3b319f0ed80d46d287b20704d69f22b592e3de3 | |
parent | a9799218ab40af78af70f98652568da17475b773 (diff) | |
download | mpd-78899051c0fa1ab4adb8bc60df576c3a71992ecb.tar.gz mpd-78899051c0fa1ab4adb8bc60df576c3a71992ecb.tar.xz mpd-78899051c0fa1ab4adb8bc60df576c3a71992ecb.zip |
update: do the recursive directory check only once
The recursive checks were performed in several functions, and
sometimes a directory was checked twice.
-rw-r--r-- | src/update.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/update.c b/src/update.c index a1cca3005..3a9dff87e 100644 --- a/src/update.c +++ b/src/update.c @@ -235,9 +235,6 @@ addSubDirectoryToDirectory(struct directory *directory, { struct directory *subDirectory; - if (inodeFoundInParent(directory, st->st_ino, st->st_dev)) - return UPDATE_RETURN_NOUPDATE; - subDirectory = directory_new(name, directory); if (updateDirectory(subDirectory, st) != UPDATE_RETURN_UPDATED) { directory_free(subDirectory); @@ -273,7 +270,12 @@ updateInDirectory(struct directory *directory, return UPDATE_RETURN_UPDATED; } } else if (S_ISDIR(st->st_mode)) { - struct directory *subdir = directory_get_child(directory, name); + struct directory *subdir; + + if (inodeFoundInParent(directory, st->st_ino, st->st_dev)) + return UPDATE_RETURN_ERROR; + + subdir = directory_get_child(directory, name); if (subdir) { enum update_return ret; @@ -314,10 +316,6 @@ updateDirectory(struct directory *directory, const struct stat *st) directory_set_stat(directory, st); - if (inodeFoundInParent(directory->parent, - directory->inode, directory->device)) - return UPDATE_RETURN_ERROR; - dir = opendir(opendir_path(path_max_tmp, dirname)); if (!dir) return UPDATE_RETURN_ERROR; |