From 468d7668191980c337e37cd3980f80dcd8e9c0fd Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Sun, 24 Apr 2005 22:34:20 +0000 Subject: [PATCH] Simplified the last change a little using a fix derived from Mike Castle's suggestion. --- generator.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/generator.c b/generator.c index 3077a137..262ffe23 100644 --- a/generator.c +++ b/generator.c @@ -210,7 +210,7 @@ static void delete_in_dir(struct file_list *flist, char *fbuf, struct file_list *dirlist; char delbuf[MAXPATHLEN]; STRUCT_STAT st; - int dlen, i, j; + int dlen, i; if (!flist) { while (cur_depth >= min_depth) @@ -226,9 +226,6 @@ static void delete_in_dir(struct file_list *flist, char *fbuf, if (allowed_lull) maybe_send_keepalive(); - if (file->flags & FLAG_MOUNT_POINT) - return; - if (file->dir.depth >= MAXPATHLEN/2+1) return; /* Impossible... */ @@ -252,8 +249,12 @@ static void delete_in_dir(struct file_list *flist, char *fbuf, if (link_stat(fbuf, &st, keep_dirlinks) < 0) return; - if (one_file_system && file->flags & FLAG_TOP_DIR) - filesystem_dev = st.st_dev; + if (one_file_system) { + if (file->flags & FLAG_TOP_DIR) + filesystem_dev = st.st_dev; + else if (filesystem_dev != st.st_dev) + return; + } dirlist = get_dirlist(fbuf, dlen, 0); @@ -263,13 +264,12 @@ static void delete_in_dir(struct file_list *flist, char *fbuf, struct file_struct *fp = dirlist->files[i]; if (!fp->basename) continue; - if ((j = flist_find(flist, fp)) < 0) { + if (flist_find(flist, fp) < 0) { int mode = fp->mode; f_name_to(fp, delbuf); if (delete_item(delbuf, mode, DEL_FORCE_RECURSE) < 0) break; - } else if (fp->flags & FLAG_MOUNT_POINT) - flist->files[j]->flags |= FLAG_MOUNT_POINT; + } } flist_free(dirlist); -- 2.34.1