- delete_in_dir(cur_flist, fname, file, &real_st.st_dev);
- return;
+ delete_in_dir(cur_flist, fname, file, &real_sx.st.st_dev);
+ goto cleanup;
+ }
+
+ /* If we're not preserving permissions, change the file-list's
+ * mode based on the local permissions and some heuristics. */
+ if (!preserve_perms) {
+ int exists = statret == 0 && !S_ISDIR(sx.st.st_mode);
+ file->mode = dest_mode(file->mode, sx.st.st_mode, dflt_perms,
+ exists);