X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=tfcrypt.c;h=719eff811b0a72b48319b78c80dfd42ab1650301;hb=c218fb98af0fbcba962101873756f76f66f4e4e9;hp=15f23e2ea3159a71410c03b43c8abd85ad6cf1fa;hpb=093131279777dd0af9fef493abfb7bd6dc9c1c79;p=tfcrypt.git diff --git a/tfcrypt.c b/tfcrypt.c index 15f23e2..719eff8 100644 --- a/tfcrypt.c +++ b/tfcrypt.c @@ -1071,7 +1071,6 @@ _plain: sigact.sa_flags = SA_RESTART; sigact.sa_handler = print_crypt_status; sigaction(SIGUSR1, &sigact, NULL); - sigaction(SIGTSTP, &sigact, NULL); sigaction(SIGALRM, &sigact, NULL); if (status_timer) setup_next_alarm(status_timer); sigact.sa_handler = change_status_width; @@ -1082,11 +1081,14 @@ _plain: sigact.sa_handler = print_crypt_status; sigaction(SIGINT, &sigact, NULL); sigaction(SIGTERM, &sigact, NULL); + sigaction(SIGTSTP, &sigact, NULL); } else { sigact.sa_handler = exit_sigterm; sigaction(SIGINT, &sigact, NULL); sigaction(SIGTERM, &sigact, NULL); + sigact.sa_handler = handle_sigtstp; + sigaction(SIGTSTP, &sigact, NULL); } memset(&sigact, 0, sizeof(struct sigaction)); @@ -1217,7 +1219,10 @@ _wagain: lio = xwrite(dfd, pblk, lrem); _nowrite: total_processed_dst += ldone; delta_processed += ldone; - if (maxlen != NOFSIZE && total_processed_src >= maxlen) break; + if (maxlen != NOFSIZE && total_processed_src >= maxlen) { + do_stop = YES; + break; + } } errno = 0; @@ -1372,7 +1377,7 @@ _macwagain: lio = xwrite(dfd, pblk, lrem); memset(tmpdata, 0, sizeof(tmpdata)); } - if (verbose || status_timer || do_stop == YES) print_crypt_status(0); + if (verbose || status_timer || (do_stop == YES && quiet == NO)) print_crypt_status(0); xexit(exitcode); return -1;