- if (is_last) {
- snprintf(eol, sizeof eol, " (%d, %.1f%% of %d)\n",
- stats.num_transferred_files,
- (float)((stats.current_file_index+1) * 100)
- / stats.num_files,
- stats.num_files);
- } else
- strcpy(eol, "\r");
- rprintf(FINFO, "%12.0f %3d%% %7.2f%s %4d:%02d:%02d%s",
- (double) ofs, pct, rate, units,
- remain_h, remain_m, remain_s, eol);
+ output_needs_newline = 0;
+ pct = ofs == size ? 100 : (int) (100.0 * ofs / size);
+ rprintf(FCLIENT, "\r%15s %3d%% %7.2f%s %s%s",
+ human_num(ofs), pct, rate, units, rembuf, eol);
+ if (!is_last) {
+ output_needs_newline = 1;
+ rflush(FCLIENT);
+ }
+}
+
+void set_current_file_index(struct file_struct *file, int ndx)
+{
+ if (!file)
+ current_file_index = cur_flist->used + cur_flist->ndx_start - 1;
+ else if (need_unsorted_flist)
+ current_file_index = flist_find(cur_flist, file) + cur_flist->ndx_start;
+ else
+ current_file_index = ndx;
+ current_file_index -= cur_flist->flist_num;