xexit: do post-crypt work only if exiting by system error or normally.
authorAndrey Rys <rys@lynxlynx.ru>
Sun, 28 Nov 2021 13:12:27 +0000 (14:12 +0100)
committerAndrey Rys <rys@lynxlynx.ru>
Sun, 28 Nov 2021 13:12:27 +0000 (14:12 +0100)
VERSION
tfc_error.c
tfcrypt.c

diff --git a/VERSION b/VERSION
index 9e5feb5256930f3cae636754eef8a244ede164eb..abac1ea7b759d8258c9ad9e5b450f782aaa33374 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-46
+47
index f69fdbe4ed0bf0800fcad4a101f14a3633f6a4e3..d74fd567c7cbe241d04395f7582376f22695cc3a 100644 (file)
@@ -62,6 +62,8 @@ _ex:
 
 void xexit(int status)
 {
+       if (status > 1) goto _do_clean_and_exit;
+
        xclose(sfd);
        if (do_ftrunc > TFC_NO_FTRUNC) {
                if (do_ftrunc == TFC_FTRUNC_TAIL) ftrunc_dfd = total_processed_dst;
@@ -70,6 +72,7 @@ void xexit(int status)
        if (do_preserve_time) fcopy_matime(dfd, &s_stat);
        xclose(dfd);
 
+_do_clean_and_exit:
        memset(srcblk, 0, sizeof(srcblk));
        memset(dstblk, 0, sizeof(dstblk));
 
index df7cc29f130d485b3e11ff0007615171a573e7f4..6b9055f346b7def9984a34863a86cc15cff6f577 100644 (file)
--- a/tfcrypt.c
+++ b/tfcrypt.c
@@ -37,7 +37,7 @@ static void open_log(const char *logfile)
        fd = open(logfile, O_WRONLY | O_CREAT | O_LARGEFILE | O_TRUNC, 0666);
        if (fd == -1) xerror(NO, NO, YES, "%s", logfile);
        xclose(2);
-       if (dup2(fd, 2) == -1) xerror(NO, NO, YES, "dup2(%d, 2) for %s", fd, logfile);
+       if (dup2(fd, 2) == -1) xexit(2);
        xclose(fd);
        do_statline_dynamic = NO;
 }