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, was_sigint;
+ static tfc_yesno last;
if (last == YES) return;
- if (signal == 0) last = YES;
+ if (signal == 0 || signal == -1) last = YES;
switch (do_edcrypt) {
case TFC_DO_ENCRYPT: oper_mode = "encrypted"; break;
}
if (signal == SIGINT || signal == SIGTERM) {
- if (signal == SIGINT) was_sigint = YES;
- if (do_stop == TFC_STOP_FULL) xexit(0);
- do_stop = TFC_STOP_FULL;
- status_timer = 0;
- verbose = NO;
- if (bench_timer) goto _out;
- return;
+ do_stop = YES;
}
-_out: tfc_getcurtime(¤t_time);
+ tfc_getcurtime(¤t_time);
total_time += (current_time - delta_time);
seconds = TFC_UTODSECS(current_time - delta_time);
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) {
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));
- if (was_sigint == NO) tfc_esay("\n");
+ tfc_esay("\n");
xexit(0);
}
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),"
" %s %s %llu (%.2f%s) bytes,"
+ " written %llu (%.2f%s) bytes,"
" (%llu (%.2f%s) B/s), time %s",
inplace, 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));
}
- if ((do_statline_dynamic == NO || last == YES || signal == -1) && was_sigint == NO) tfc_esay("\n");
+ if (do_stop == NO && do_statline_dynamic == NO) tfc_esay("\n");
+ if (last) tfc_esay("\n");
statline_was_shown = YES;
+ if ((signal == SIGINT || signal == SIGTERM) && do_stop == YES) {
+ tfc_esay("\n");
+ exit_sigterm(signal);
+ }
+
delta_processed = 0;
tfc_getcurtime(&delta_time);
- if (signal == SIGTSTP) {
- tfc_esay("stopping.");
- kill(getpid(), SIGSTOP);
- }
+ if (signal == SIGTSTP) kill(getpid(), SIGSTOP);
if (status_timer) setup_next_alarm(status_timer);
}