X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=tfc_random.c;h=321f97a6d1c3016e20e5e75048ad62bfa5db9929;hb=HEAD;hp=ccafe5c28dc6e56da5209f7e6790c0f154af56bd;hpb=44bb43b90d7aad1878b20b6c9df848b998820374;p=tfcrypt.git diff --git a/tfc_random.c b/tfc_random.c index ccafe5c..321f97a 100644 --- a/tfc_random.c +++ b/tfc_random.c @@ -28,6 +28,16 @@ #include "tfcrypt.h" +static void print_crypt_status_genrnd(int signal) +{ + print_crypt_status(signal); +} + +static void exit_sigterm_genrnd(int signal) +{ + exit_sigterm(signal); +} + static void get_urandom(const char *src, void *buf, size_t size) { tfc_byte *ubuf = buf; @@ -88,8 +98,6 @@ void gen_write_bytes(const char *foutname, tfc_fsize offset, tfc_fsize nrbytes) size_t lblock, lio, lrem; tfc_byte *pblk; - xexit_no_nl = YES; - for (x = 1; x < NSIG; x++) signal(x, SIG_IGN); memset(&sigact, 0, sizeof(sigact)); sigact.sa_flags = SA_RESTART; @@ -102,13 +110,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; @@ -129,15 +137,14 @@ void gen_write_bytes(const char *foutname, tfc_fsize offset, tfc_fsize nrbytes) fd = 1; foutname = TFC_STDOUT_NAME; } - else fd = open(foutname, O_WRONLY | O_CREAT | O_LARGEFILE | write_flags, 0666); - if (fd == -1) xerror(NO, NO, YES, "%s", foutname); + else fd = xopen(foutname, O_WRONLY | O_CREAT | O_LARGEFILE | write_flags); if (offset) { if (lseek(fd, offset, SEEK_SET) == -1) xerror(ignore_seek_errors, NO, NO, "%s: seek failed", foutname); } - if (ctr_mode == TFC_MODE_PLAIN) memset(srcblk, 0, sizeof(srcblk)); + if (do_edcrypt == TFC_DO_PLAIN) memset(srcblk, 0, sizeof(srcblk)); if (verbose) tfc_nfsay(stderr, "%s: writing %lld bytes to %s ... ", tfc_format_pid(progname), nrbytes, foutname); @@ -149,7 +156,7 @@ void gen_write_bytes(const char *foutname, tfc_fsize offset, tfc_fsize nrbytes) pblk = srcblk; lblock = lrem = blk_len_adj(nrbytes, total_processed_src, blksize); - if (ctr_mode != TFC_MODE_PLAIN) tfc_getrandom(srcblk, lblock); + if (do_edcrypt != TFC_DO_PLAIN) tfc_getrandom(srcblk, lblock); if (error_action == TFC_ERRACT_SYNC) wrpos = tfc_fdgetpos(fd); _wagain: lio = xwrite(fd, pblk, lrem); @@ -182,7 +189,7 @@ _wagain: lio = xwrite(fd, pblk, lrem); if (verbose) tfc_esay("done!"); if (verbose || status_timer) { - print_crypt_status(0); + print_crypt_status(TFC_SIGSTAT); tfc_esay("\n"); }