From 0d03d4276239d49b79296c6a021deffbfe84b69b Mon Sep 17 00:00:00 2001 From: Greg Reagle Date: Thu, 22 Jan 2015 16:08:25 -0500 Subject: [PATCH] -i option ignores SIGINT --- tee.1 | 5 ++++- tee.c | 10 ++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/tee.1 b/tee.1 index 36a1570..297a292 100644 --- a/tee.1 +++ b/tee.1 @@ -3,7 +3,7 @@ tee \- duplicate stdin .SH SYNOPSIS .B tee -.RB [ \-a ] +.RB [ \-ai ] .RI [ file ...] .SH DESCRIPTION .B tee @@ -12,3 +12,6 @@ writes from stdin to stdout, making copies in each file. .TP .B \-a append to each file rather than overwriting. +.TP +.B \-i +ignore SIGINT, i.e. the interrupt from keyboard signal diff --git a/tee.c b/tee.c index 97307e1..566d6a0 100644 --- a/tee.c +++ b/tee.c @@ -1,4 +1,5 @@ /* See LICENSE file for copyright and license details. */ +#include #include #include #include @@ -8,13 +9,13 @@ static void usage(void) { - eprintf("usage: %s [-a] [file...]\n", argv0); + eprintf("usage: %s [-ai] [file...]\n", argv0); } int main(int argc, char *argv[]) { - int aflag = 0; + int aflag = 0, iflag = 0; char buf[BUFSIZ]; int i, nfps; size_t n; @@ -24,10 +25,15 @@ main(int argc, char *argv[]) case 'a': aflag = 1; break; + case 'i': + iflag = 1; + break; default: usage(); } ARGEND; + if (iflag && (signal(SIGINT, SIG_IGN)==SIG_ERR)) + eprintf("signal:"); nfps = argc + 1; fps = ecalloc(nfps, sizeof *fps); -- 1.9.1