xexit(0);
}
+void handle_sigtstp(int signal)
+{
+ if (signal == SIGTSTP) {
+ tfc_useconds freeze_start, freeze_end;
+
+ tfc_getcurtime(&freeze_start);
+ kill(getpid(), SIGSTOP);
+ tfc_getcurtime(&freeze_end);
+ total_time -= (freeze_end - freeze_start);
+ }
+}
+
void print_crypt_status(int signal)
{
tfc_fsize wr_speed;
- double seconds, human_totalproc_src, human_totalproc_dst, human_wr_speed;
- int src_scale_idx, dst_scale_idx, wr_speed_scale;
+ double seconds, human_totalproc_src, human_totalproc_dst, human_totalwrit_dst, human_wr_speed;
+ int src_scale_idx, dst_scale_idx, wri_scale_idx, wr_speed_scale;
const char *oper_mode, *inplace;
static tfc_yesno last;
wr_speed = delta_processed / seconds;
tfc_describescale(total_processed_src, &human_totalproc_src, &src_scale_idx);
tfc_describescale(total_processed_dst, &human_totalproc_dst, &dst_scale_idx);
+ tfc_describescale(total_written_dst, &human_totalwrit_dst, &wri_scale_idx);
tfc_describescale(wr_speed, &human_wr_speed, &wr_speed_scale);
if (bench_timer) {
tfc_say("done!");
- tfc_say("%s %s benchmark results:", progname, tfc_modename(ctr_mode));
+ tfc_say("%s %s benchmark results:", tfc_format_pid(progname), tfc_modename(ctr_mode));
tfc_nfsay(stdout, "%s %llu (%.2f%s) bytes, "
"avg. speed %llu (%.2f%s) B/s, time %.4fs.",
oper_mode,
total_processed_src, human_totalproc_src, tfc_getscale(src_scale_idx),
- wr_speed, human_wr_speed, tfc_getscale(wr_speed_scale),
- TFC_UTODSECS(current_time - delta_time));
+ wr_speed, human_wr_speed, tfc_getscale(wr_speed_scale), seconds);
tfc_esay("\n");
xexit(0);
}
else inplace = "";
if (do_less_stats == YES) {
- tfc_nfsay(stderr, "%s%s:"
+ tfc_nfsay(stderr, "%s%s%s:"
" %s %.2f%s,"
" %.2f%s B/s @%s",
- inplace, progname,
+ inplace, (last && show_when_done) ? "finished: " : "", tfc_format_pid(progname),
oper_mode,
human_totalproc_dst, tfc_getscale(dst_scale_idx),
human_wr_speed, tfc_getscale(wr_speed_scale), tfc_format_time(total_time));
}
else {
- if (ctr_mode <= TFC_MODE_PLAIN) tfc_nfsay(stderr, "%s%s: read: %llu (%.2f%s),"
+ if (ctr_mode <= TFC_MODE_PLAIN) tfc_nfsay(stderr, "%s%s%s: read: %llu (%.2f%s),"
" %s %llu (%.2f%s) bytes,"
" (%llu (%.2f%s) B/s), time %s",
- inplace, progname,
+ inplace, (last && show_when_done) ? "finished: " : "", tfc_format_pid(progname),
total_processed_src, human_totalproc_src, tfc_getscale(src_scale_idx),
oper_mode,
total_processed_dst, human_totalproc_dst, tfc_getscale(dst_scale_idx),
wr_speed, human_wr_speed, tfc_getscale(wr_speed_scale), tfc_format_time(total_time));
- else tfc_nfsay(stderr, "%s%s: read: %llu (%.2f%s),"
+ else tfc_nfsay(stderr, "%s%s%s: read: %llu (%.2f%s),"
" %s %s %llu (%.2f%s) bytes,"
+ " written %llu (%.2f%s) bytes,"
" (%llu (%.2f%s) B/s), time %s",
- inplace, progname,
+ inplace, (last && show_when_done) ? "finished: " : "", tfc_format_pid(progname),
total_processed_src, human_totalproc_src, tfc_getscale(src_scale_idx),
tfc_modename(ctr_mode), oper_mode,
total_processed_dst, human_totalproc_dst, tfc_getscale(dst_scale_idx),
+ total_written_dst, human_totalwrit_dst, tfc_getscale(wri_scale_idx),
wr_speed, human_wr_speed, tfc_getscale(wr_speed_scale), tfc_format_time(total_time));
}
delta_processed = 0;
tfc_getcurtime(&delta_time);
- if (signal == SIGTSTP) kill(getpid(), SIGSTOP);
+ handle_sigtstp(signal);
if (status_timer) setup_next_alarm(status_timer);
}
else status_timer *= 2;
if (verbose) tfc_esay("%s: status timer was changed to %.2fs",
- progname, TFC_UTODSECS(status_timer));
+ tfc_format_pid(progname), TFC_UTODSECS(status_timer));
setup_next_alarm(status_timer);
}