commit 4a1fed992387956c93dfdbf0726b0033903b3e7b
Author: Greg Reagle <[email protected]>
Date:   Thu Jan 22 16:08:25 2015 -0500

    tee: -i option ignores SIGINT

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..0b4ad8b 100644
--- a/tee.c
+++ b/tee.c
@@ -1,4 +1,5 @@
 /* See LICENSE file for copyright and license details. */
+#include <signal.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
@@ -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);
 

Reply via email to