#include "rsync.h"
-extern int verbose;
extern int dry_run;
extern int list_only;
extern int am_sender;
extern int maybe_ATTRS_REPORT;
extern int unsort_ndx;
extern char *basis_dir[];
-extern struct file_list *cur_flist;
+extern struct file_list *cur_flist, *first_flist;
#ifdef SUPPORT_HARD_LINKS
ITEM_LOCAL_CHANGE | ITEM_XNAME_FOLLOWS,
0, "");
}
- if (verbose > 1 && maybe_ATTRS_REPORT)
+ if (INFO_GTE(NAME, 2) && maybe_ATTRS_REPORT)
rprintf(FCLIENT, "%s is uptodate\n", fname);
file->flags |= FLAG_HLINK_DONE;
return 0;
ITEM_LOCAL_CHANGE | ITEM_XNAME_FOLLOWS, 0,
realname);
}
- if (code != FNONE && verbose)
+ if (code != FNONE && INFO_GTE(NAME, 1))
rprintf(code, "%s => %s\n", fname, realname);
return 0;
}
continue;
statret = 1;
if (stdout_format_has_i == 0
- || (verbose < 2 && stdout_format_has_i < 2)) {
+ || (!INFO_GTE(NAME, 2) && stdout_format_has_i < 2)) {
itemizing = 0;
code = FNONE;
- if (verbose > 1 && maybe_ATTRS_REPORT)
+ if (INFO_GTE(NAME, 2) && maybe_ATTRS_REPORT)
rprintf(FCLIENT, "%s is uptodate\n", fname);
}
break;
if (do_link(oldname, fname) < 0) {
enum logcode code;
if (terse) {
- if (!verbose)
+ if (!INFO_GTE(NAME, 1))
return 0;
code = FINFO;
} else
{
stat_x prev_sx;
STRUCT_STAT st;
- char alt_name[MAXPATHLEN], *prev_name;
+ char prev_name[MAXPATHLEN], alt_name[MAXPATHLEN];
const char *our_name;
struct file_list *flist;
int prev_statret, ndx, prev_ndx = F_HL_PREV(file);
while ((ndx = prev_ndx) >= 0) {
int val;
flist = flist_for_ndx(ndx);
- assert(flist != NULL);
+ if (flist == NULL) {
+ int start1 = first_flist ? first_flist->ndx_start : 0;
+ int start2 = first_flist ? first_flist->prev->ndx_start : 0;
+ int used = first_flist ? first_flist->prev->used : 0;
+ rprintf(FERROR,
+ "File index not found: %d (%d - %d)\n",
+ ndx, start1 - 1, start2 + used - 1);
+ exit_cleanup(RERR_PROTOCOL);
+ }
file = flist->files[ndx - flist->ndx_start];
file->flags = (file->flags & ~FLAG_HLINK_FIRST) | FLAG_HLINK_DONE;
prev_ndx = F_HL_PREV(file);
F_HL_PREV(file) = fin_ndx;
- prev_name = f_name(file, NULL);
- prev_statret = link_stat(prev_name, &prev_sx.st, 0);
+ prev_statret = link_stat(f_name(file, prev_name), &prev_sx.st, 0);
val = maybe_hard_link(file, ndx, prev_name, prev_statret, &prev_sx,
our_name, stp, fname, itemizing, code);
flist->in_progress--;