another attempt to fix newline bugs
authorAndrey Rys <rys@lynxlynx.ru>
Sun, 28 Nov 2021 13:47:18 +0000 (14:47 +0100)
committerAndrey Rys <rys@lynxlynx.ru>
Sun, 28 Nov 2021 13:47:18 +0000 (14:47 +0100)
VERSION
tfc_random.c
tfc_skein.c
tfcrypt.c

diff --git a/VERSION b/VERSION
index 59343b09ec765366a5b0ac04196385079acd864e..fb1e7bc86996a80d4a16529b990adda1d3434c92 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-53
+54
index ccafe5c28dc6e56da5209f7e6790c0f154af56bd..9ef321d43304e51fbe35ce29c301d13339a64877 100644 (file)
 
 #include "tfcrypt.h"
 
+static void print_crypt_status_genrnd(int signal)
+{
+       if (signal == SIGTERM || signal == SIGINT) {
+               if (xexit_no_nl == YES) xexit_no_nl = NO;
+       }
+       print_crypt_status(signal);
+}
+
+static void exit_sigterm_genrnd(int signal)
+{
+       if (xexit_no_nl == YES) xexit_no_nl = NO;
+       exit_sigterm(signal);
+}
+
 static void get_urandom(const char *src, void *buf, size_t size)
 {
        tfc_byte *ubuf = buf;
@@ -102,13 +116,13 @@ void gen_write_bytes(const char *foutname, tfc_fsize offset, tfc_fsize nrbytes)
        sigact.sa_handler = change_status_timer;
        sigaction(SIGUSR2, &sigact, NULL);
        if (quiet == NO) {
-               sigact.sa_handler = print_crypt_status;
+               sigact.sa_handler = print_crypt_status_genrnd;
                sigaction(SIGINT, &sigact, NULL);
                sigaction(SIGTERM, &sigact, NULL);
                sigaction(SIGTSTP, &sigact, NULL);
        }
        else {
-               sigact.sa_handler = exit_sigterm;
+               sigact.sa_handler = exit_sigterm_genrnd;
                sigaction(SIGINT, &sigact, NULL);
                sigaction(SIGTERM, &sigact, NULL);
                sigact.sa_handler = handle_sigtstp;
index e2c31f9a2e7d69c35b7f239b2a5057650fed5775..0917819e241196b7f9459e2dbbb4dea8198306e3 100644 (file)
 #include "tfcrypt.h"
 #include "tfcore.h"
 
+static void exit_sigterm_skein(int signal)
+{
+       if (xexit_no_nl == YES) xexit_no_nl = NO;
+       exit_sigterm(signal);
+}
+
 void skein(void *hash, size_t bits, const void *key, const void *data, size_t szdata)
 {
        struct skein sk;
@@ -179,7 +185,7 @@ _dothat:
        sigaction(SIGQUIT, &sigact, NULL);
        sigact.sa_handler = change_status_timer;
        sigaction(SIGUSR2, &sigact, NULL);
-       sigact.sa_handler = exit_sigterm;
+       sigact.sa_handler = exit_sigterm_skein;
        sigaction(SIGINT, &sigact, NULL);
        sigaction(SIGTERM, &sigact, NULL);
        sigact.sa_handler = handle_sigtstp;
index e5ac31a33f99f600324ae2dbb8f13b52ceb65041..054e76899bb5891efb418c3d4941652081d2ea8a 100644 (file)
--- a/tfcrypt.c
+++ b/tfcrypt.c
@@ -1251,6 +1251,8 @@ _nowrite: total_processed_dst += ldone;
                }
        }
 
+       if (verbose && status_timer && do_statline_dynamic == YES && statline_was_shown == YES) tfc_esay("\n");
+
        errno = 0;
        if (do_mac >= TFC_MAC_VRFY) {
                if (!do_mac_file) {