always cap first print_crypt_status to less or equal 1 second.
[tfcrypt.git] / tfc_skein.c
index e05927da18385375aa61ea314737b65e9f2890be..8102f70af122cff0cbeb7055150ea83267238494 100644 (file)
@@ -2,7 +2,7 @@
  * tfcrypt -- high security Threefish encryption tool.
  *
  * tfcrypt is copyrighted:
- * Copyright (C) 2012-2018 Andrey Rys. All rights reserved.
+ * Copyright (C) 2012-2019 Andrey Rys. All rights reserved.
  *
  * tfcrypt is licensed to you under the terms of std. MIT/X11 license:
  *
@@ -170,7 +170,6 @@ _dothat:
        sigact.sa_flags = SA_RESTART;
        sigact.sa_handler = print_crypt_status;
        sigaction(SIGUSR1, &sigact, NULL);
-       sigaction(SIGTSTP, &sigact, NULL);
        sigaction(SIGALRM, &sigact, NULL);
        sigact.sa_handler = change_status_width;
        sigaction(SIGQUIT, &sigact, NULL);
@@ -179,6 +178,8 @@ _dothat:
        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));
 
        tfc_getcurtime(&delta_time);
@@ -221,7 +222,7 @@ _dothat:
                                continue;
                        }
 
-                       if (status_timer) setup_next_alarm(status_timer);
+                       if (status_timer) setup_next_alarm(status_timer > 1000000 ? 1000000 : status_timer);
                        if (skeinfd(hash, bits, mackey_opt ? mackey : NULL, fd, iseek, maxlen) != YES) {
                                xerror(YES, NO, YES, "%s", fname);
                                exitcode = 1;
@@ -273,7 +274,7 @@ _dothat:
                        continue;
                }
 
-_dohash:       if (status_timer) setup_next_alarm(status_timer);
+_dohash:       if (status_timer) setup_next_alarm(status_timer > 1000000 ? 1000000 : status_timer);
                if (skeinfd(hash, bits, mackey_opt ? mackey : NULL, fd, iseek, maxlen) != YES) {
                        xerror(YES, NO, YES, "%s", fargv[x]);
                        exitcode = 1;