From 01bf8687f27db7d4ddec019a606670d43ec14680 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 9 Oct 2008 19:15:56 +0200 Subject: update: do the recursive directory check only once The recursive checks were performed in several functions, and sometimes a directory was checked twice. --- src/update.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/update.c b/src/update.c index c8eb33b6d..5b2721cdb 100644 --- a/src/update.c +++ b/src/update.c @@ -224,9 +224,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); @@ -260,8 +257,12 @@ updateInDirectory(struct directory *directory, return UPDATE_RETURN_UPDATED; } } else if (S_ISDIR(st->st_mode)) { - struct directory *subdir = directory_get_child(directory, name); - if (subdir) { + struct directory *subdir; + + if (inodeFoundInParent(directory, st->st_ino, st->st_dev)) + return UPDATE_RETURN_ERROR; + + if ((subdir = directory_get_child(directory, name))) { enum update_return ret; assert(directory == subdir->parent); @@ -302,10 +303,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; -- cgit v1.2.3