fix quiet mode and final reporting when using -O count.
[tfcrypt.git] / tfcrypt.c
index 15f23e2ea3159a71410c03b43c8abd85ad6cf1fa..719eff811b0a72b48319b78c80dfd42ab1650301 100644 (file)
--- 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;