sbase

suckless unix tools
git clone git://git.2f30.org/sbase
Log | Files | Refs | README | LICENSE

commit 4f0a813ca1407986691f63d7a93dbcd0a55e61af
parent 2277b619be9ae126685b86b7fab694d23be58ccb
Author: Greg Reagle <greg.reagle@umbc.edu>
Date:   Thu, 22 Jan 2015 16:08:25 -0500

tee: -i option ignores SIGINT

Diffstat:
Mtee.1 | 5++++-
Mtee.c | 10++++++++--
2 files changed, 12 insertions(+), 3 deletions(-)

diff --git 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 @@ -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);