Sync with tfcipher
[tfcrypt.git] / tfc_skein.c
index e2c31f9a2e7d69c35b7f239b2a5057650fed5775..7886c2bc4c4002ee57a41c3cf85cb4f2560327c0 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;
@@ -219,7 +225,7 @@ _dothat:
                        s = strchr(shash, ' ');
                        if (s && s[1] == ' ') *s = 0;
 
-                       fd = open(fname, O_RDONLY | O_LARGEFILE);
+                       fd = xxopen(YES, fname, O_RDONLY | O_LARGEFILE);
                        if (fd == -1) {
                                xerror(YES, NO, YES, "%s", fname);
                                exitcode = 1;
@@ -271,7 +277,7 @@ _dothat:
 
        for (x = 0; fargv[x] && xx; x++) {
                if (!strcmp(fargv[x], "-")) fd = 0;
-               else fd = open(fargv[x], O_RDONLY | O_LARGEFILE);
+               else fd = xxopen(YES, fargv[x], O_RDONLY | O_LARGEFILE);
                if (fd == -1) {
                        xerror(YES, NO, YES, "%s", fargv[x]);
                        exitcode = 1;