aboutsummaryrefslogtreecommitdiffstats
path: root/src/update.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/update.c')
-rw-r--r--src/update.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/update.c b/src/update.c
index 52c87bbfd..1ed673f64 100644
--- a/src/update.c
+++ b/src/update.c
@@ -235,6 +235,18 @@ inodeFoundInParent(struct directory *parent, ino_t inode, dev_t device)
return 0;
}
+static struct directory *
+make_subdir(struct directory *parent, const char *name)
+{
+ struct directory *directory;
+
+ directory = directory_get_child(parent, name);
+ if (directory == NULL)
+ directory = directory_new_child(parent, name);
+
+ return directory;
+}
+
static bool
updateDirectory(struct directory *directory, const struct stat *st);
@@ -267,10 +279,7 @@ updateInDirectory(struct directory *directory,
if (inodeFoundInParent(directory, st->st_ino, st->st_dev))
return;
- subdir = directory_get_child(directory, name);
- if (subdir == NULL)
- subdir = directory_new_child(directory, name);
-
+ subdir = make_subdir(directory, name);
assert(directory == subdir->parent);
ret = updateDirectory(subdir, st);