summaryrefslogtreecommitdiffstats
path: root/bin/dd/dd.c
diff options
context:
space:
mode:
authoreadler <eadler@FreeBSD.org>2013-05-10 18:43:36 +0000
committereadler <eadler@FreeBSD.org>2013-05-10 18:43:36 +0000
commit9f34a8fbd1042ff5b6aacf0953a19839a9d2f7b5 (patch)
tree70263e024132ba7c7573919f9f71f2103a1f1d06 /bin/dd/dd.c
parent6ea39edf934cff6ee443d1e0447b0081574612e5 (diff)
downloadFreeBSD-src-9f34a8fbd1042ff5b6aacf0953a19839a9d2f7b5.zip
FreeBSD-src-9f34a8fbd1042ff5b6aacf0953a19839a9d2f7b5.tar.gz
Make dd's signal handler async safe.
PR: bin/75258 Submitted by: "Oleg V. Nauman" <oleg@reis.zp.ua> Arrival Date: Sun Dec 19 14:50:21 GMT 2004 Reviewed by: mjg, jhb Reviewed by: jilles (earlier version) MFC after: 1 week
Diffstat (limited to 'bin/dd/dd.c')
-rw-r--r--bin/dd/dd.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/bin/dd/dd.c b/bin/dd/dd.c
index 9d0f9b1..7e5bd91 100644
--- a/bin/dd/dd.c
+++ b/bin/dd/dd.c
@@ -81,6 +81,7 @@ size_t cbsz; /* conversion block size */
uintmax_t files_cnt = 1; /* # of files to copy */
const u_char *ctab; /* conversion table */
char fill_char; /* Character to fill with if defined */
+volatile sig_atomic_t need_summary;
int
main(int argc __unused, char *argv[])
@@ -89,7 +90,7 @@ main(int argc __unused, char *argv[])
jcl(argv);
setup();
- (void)signal(SIGINFO, summaryx);
+ (void)signal(SIGINFO, siginfo_handler);
(void)signal(SIGINT, terminate);
atexit(summary);
@@ -375,6 +376,9 @@ dd_in(void)
in.dbp += in.dbrcnt;
(*cfunc)();
+ if (need_summary) {
+ summary();
+ }
}
}
OpenPOWER on IntegriCloud