extern int always_checksum;
extern int checksum_len;
extern char *partial_dir;
-extern char *basis_dir[];
extern int compare_dest;
extern int copy_dest;
extern int link_dest;
extern int max_delete;
extern int force_delete;
extern int one_file_system;
+extern int check_for_io_err;
extern struct stats stats;
extern dev_t filesystem_dev;
extern mode_t orig_umask;
extern char *backup_dir;
extern char *backup_suffix;
extern int backup_suffix_len;
+extern char *basis_dir[MAX_BASIS_DIRS+1];
extern struct file_list *cur_flist, *first_flist, *dir_flist;
extern struct filter_list_struct daemon_filter_list;
if ((int64)sum->count != l)
sum->count = -1;
- if (sum->count && DEBUG_GTE(CHKSUM, 2)) {
+ if (sum->count && DEBUG_GTE(DELTASUM, 2)) {
rprintf(FINFO,
"count=%s rem=%ld blength=%ld s2length=%d flength=%s\n",
big_num(sum->count, 0), (long)sum->remainder, (long)sum->blength,
sum1 = get_checksum1(map, n1);
get_checksum2(map, n1, sum2);
- if (DEBUG_GTE(CHKSUM, 3)) {
+ if (DEBUG_GTE(DELTASUM, 3)) {
rprintf(FINFO,
"chunk[%s] offset=%s len=%ld sum1=%08lx\n",
big_num(i, 0), big_num(offset - n1, 0), (long)n1,
static void list_file_entry(struct file_struct *f)
{
char permbuf[PERMSTRING_SIZE];
- double len;
+ int64 len;
if (!F_IS_ACTIVE(f)) {
/* this can happen if duplicate names were removed */
#ifdef SUPPORT_LINKS
if (preserve_links && S_ISLNK(f->mode)) {
- rprintf(FINFO, "%s %11.0f %s %s -> %s\n",
- permbuf, len, timestring(f->modtime),
+ rprintf(FINFO, "%s %11s %s %s -> %s\n",
+ permbuf, big_num(len, 0), timestring(f->modtime),
f_name(f, NULL), F_SYMLINK(f));
} else
#endif
{
- rprintf(FINFO, "%s %11.0f %s %s\n",
- permbuf, len, timestring(f->modtime),
+ rprintf(FINFO, "%s %11s %s %s\n",
+ permbuf, big_num(len, 0), timestring(f->modtime),
f_name(f, NULL));
}
}
fnamecmp_type = FNAMECMP_BACKUP;
}
- if (DEBUG_GTE(CHKSUM, 3)) {
+ if (DEBUG_GTE(DELTASUM, 3)) {
rprintf(FINFO, "gen mapped %s of size %s\n",
fnamecmp, big_num(sx.st.st_size, 0));
}
- if (DEBUG_GTE(CHKSUM, 2))
+ if (DEBUG_GTE(DELTASUM, 2))
rprintf(FINFO, "generating and sending sums for %d\n", ndx);
notify_others:
dirdev = MAKEDEV(DEV_MAJOR(devp), DEV_MINOR(devp));
} else
dirdev = MAKEDEV(0, 0);
+ /* We must be sure we've had a chance to receive an I/O
+ * error for this directory before we delete in it. */
+ while (check_for_io_err && !cur_flist->next)
+ wait_for_receiver();
delete_in_dir(fbuf, fp, &dirdev);
} else
change_local_filter_dir(fbuf, strlen(fbuf), F_DEPTH(fp));
touch_up_dirs(dir_flist, -1);
if (max_delete >= 0 && deletion_count > max_delete) {
- rprintf(FINFO,
+ rprintf(FWARNING,
"Deletions stopped due to --max-delete limit (%d skipped)\n",
deletion_count - max_delete);
io_error |= IOERR_DEL_LIMIT;