From owner-freebsd-bugs@FreeBSD.ORG Wed Jun 28 18:21:21 2006 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id F069B16A551 for ; Wed, 28 Jun 2006 18:21:20 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5D95A43F6A for ; Wed, 28 Jun 2006 18:20:24 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id k5SIKOhm093454 for ; Wed, 28 Jun 2006 18:20:24 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id k5SIKOWS093452; Wed, 28 Jun 2006 18:20:24 GMT (envelope-from gnats) Resent-Date: Wed, 28 Jun 2006 18:20:24 GMT Resent-Message-Id: <200606281820.k5SIKOWS093452@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Dan Ponte Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 62B5716A403 for ; Wed, 28 Jun 2006 18:14:55 +0000 (UTC) (envelope-from dcp1990@fez.theamigan.net) Received: from eastrmmtao03.cox.net (eastrmmtao03.cox.net [68.230.240.36]) by mx1.FreeBSD.org (Postfix) with ESMTP id A9CED43E98 for ; Wed, 28 Jun 2006 18:14:53 +0000 (GMT) (envelope-from dcp1990@fez.theamigan.net) Received: from styx.theamigan.net ([68.9.18.102]) by eastrmmtao03.cox.net (InterMail vM.6.01.06.01 201-2131-130-101-20060113) with ESMTP id <20060628181452.CHSN23863.eastrmmtao03.cox.net@styx.theamigan.net>; Wed, 28 Jun 2006 14:14:52 -0400 Received: from fez.theamigan.net (fez.danponte.net [10.10.10.2]) by styx.theamigan.net (8.13.6/8.13.4) with ESMTP id k5SIEqwC016259; Wed, 28 Jun 2006 14:14:52 -0400 (EDT) (envelope-from dcp1990@fez.theamigan.net) Received: from fez.theamigan.net (localhost.theamigan.net [127.0.0.1]) by fez.theamigan.net (8.13.6/8.13.6) with ESMTP id k5SIEotV033969; Wed, 28 Jun 2006 14:14:50 -0400 (EDT) (envelope-from dcp1990@fez.theamigan.net) Received: (from dcp1990@localhost) by fez.theamigan.net (8.13.6/8.13.6/Submit) id k5SIEouW033968; Wed, 28 Jun 2006 14:14:50 -0400 (EDT) (envelope-from dcp1990) Message-Id: <200606281814.k5SIEouW033968@fez.theamigan.net> Date: Wed, 28 Jun 2006 14:14:50 -0400 (EDT) From: Dan Ponte To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: dan@theamigan.net Subject: bin/99585: [PATCH] Add option to tee(1) to also copy to standard error X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Dan Ponte List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jun 2006 18:21:21 -0000 >Number: 99585 >Category: bin >Synopsis: [PATCH] Add option to tee(1) to also copy to standard error >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Wed Jun 28 18:20:23 GMT 2006 >Closed-Date: >Last-Modified: >Originator: Dan Ponte >Release: FreeBSD 6.1-STABLE amd64 >Organization: Unix Users Anonymous >Environment: System: FreeBSD fez.theamigan.net 6.1-STABLE FreeBSD 6.1-STABLE #13: Sun Jun 25 23:43:46 EDT 2006 root@fez.theamigan.net:/usr/obj/usr/src/sys/FEZ amd64 >Description: I recently found myself in a situation where having tee(1) copy to standard error and standard output at the same time would be useful, so I implemented it. >How-To-Repeat: Find yourself in said situation. >Fix: Diff below. --- tee.diff begins here --- diff -ur tee.old/tee.1 tee/tee.1 --- tee.old/tee.1 Wed Jun 28 14:11:16 2006 +++ tee/tee.1 Wed Jun 28 14:07:37 2006 @@ -43,7 +43,7 @@ .Nd pipe fitting .Sh SYNOPSIS .Nm -.Op Fl ai +.Op Fl ais .Op Ar .Sh DESCRIPTION The @@ -61,6 +61,8 @@ Ignore the .Dv SIGINT signal. +.It Fl s +Copy to standard error as well. .El .Pp The following operands are available: diff -ur tee.old/tee.c tee/tee.c --- tee.old/tee.c Wed Jun 28 14:11:16 2006 +++ tee/tee.c Wed Jun 28 14:06:37 2006 @@ -71,12 +71,14 @@ LIST *p; int n, fd, rval, wval; char *bp; - int append, ch, exitval; + int append, ch, exitval, sterrout; char *buf; #define BSIZE (8 * 1024) append = 0; - while ((ch = getopt(argc, argv, "ai")) != -1) + sterrout = 0; + + while ((ch = getopt(argc, argv, "ais")) != -1) switch((char)ch) { case 'a': append = 1; @@ -84,6 +86,9 @@ case 'i': (void)signal(SIGINT, SIG_IGN); break; + case 's': + sterrout = 1; + break; case '?': default: usage(); @@ -96,6 +101,9 @@ add(STDOUT_FILENO, "stdout"); + if (sterrout) + add(STDERR_FILENO, "stderr"); + for (exitval = 0; *argv; ++argv) if ((fd = open(*argv, append ? O_WRONLY|O_CREAT|O_APPEND : O_WRONLY|O_CREAT|O_TRUNC, DEFFILEMODE)) < 0) { @@ -125,7 +133,7 @@ static void usage(void) { - (void)fprintf(stderr, "usage: tee [-ai] [file ...]\n"); + (void)fprintf(stderr, "usage: tee [-ais] [file ...]\n"); exit(1); } --- tee.diff ends here --- >Release-Note: >Audit-Trail: >Unformatted: