Date: Wed, 7 Jul 2004 23:01:26 -0400 (EDT) From: Dan Ponte <dcp1990@cox.net> To: FreeBSD-gnats-submit@FreeBSD.org Cc: amistry@am-productions.biz Subject: bin/68797: cut(1) patches to fflush after each write if an option is specified. Message-ID: <20040708030126.A1EA04431@styx.flinkpoyd.homeunix.com> Resent-Message-ID: <200407080310.i683A2Yc053869@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 68797 >Category: bin >Synopsis: cut(1) patches to fflush after each write if an option is specified. >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: Thu Jul 08 03:10:02 GMT 2004 >Closed-Date: >Last-Modified: >Originator: Dan Ponte >Release: FreeBSD 5.2.1-RELEASE-p9 i386 >Organization: Unix Users Anonymous >Environment: System: FreeBSD styx.cox.net 5.2.1-RELEASE-p9 FreeBSD 5.2.1-RELEASE-p9 #7: Thu Jul 1 13:17:08 EDT 2004 dcp1990@styx.cox.net:/usr/obj/usr/src/sys/STYX i386 >Description: Some applications require that the stream be flushed after each write (such as tail -f). This adds a new option, -u, that does this. >How-To-Repeat: (none) >Fix: Apply the following patches: --- cut.c.patch begins here --- --- /usr/src/usr.bin/cut/cut.c Wed Sep 4 19:28:59 2002 +++ cut.c Wed Jul 7 22:51:23 2004 @@ -59,6 +59,7 @@ int fflag; int nflag; int sflag; +int uflag; void b_n_cut(FILE *, const char *); void c_cut(FILE *, const char *); @@ -83,7 +84,7 @@ * Since we don't support multi-byte characters, the -c and -b * options are equivalent. */ - while ((ch = getopt(argc, argv, "b:c:d:f:sn")) != -1) + while ((ch = getopt(argc, argv, "b:c:d:f:snu")) != -1) switch(ch) { case 'b': fcn = c_cut; @@ -110,6 +111,9 @@ case 'n': nflag = 1; break; + case 'u': + uflag = 1; + break; case '?': default: usage(); @@ -268,6 +272,8 @@ canwrite &= positions[1 + i]; if (canwrite) fwrite(lbuf, 1, clen, stdout); + if(uflag) + fflush(stdout); } else { /* * Print the character if all of it has @@ -282,6 +288,8 @@ } if (canwrite) fwrite(lbuf, 1, clen, stdout); + if(uflag) + fflush(stdout); } lbuf += clen; lbuflen -= clen; @@ -349,6 +357,8 @@ if (ch == '\n') { if (!isdelim && !sflag) (void)fwrite(lbuf, lbuflen, 1, stdout); + if(uflag) + fflush(stdout); break; } } @@ -388,8 +398,8 @@ usage(void) { (void)fprintf(stderr, "%s\n%s\n%s\n", - "usage: cut -b list [-n] [file ...]", - " cut -c list [file ...]", - " cut -f list [-s] [-d delim] [file ...]"); + "usage: cut -b list [-nu] [file ...]", + " cut -c list [-u] [file ...]", + " cut -f list [-su] [-d delim] [file ...]"); exit(1); } --- cut.c.patch ends here --- --- cut.1.patch begins here --- --- /usr/src/usr.bin/cut/cut.1 Sat May 3 11:55:23 2003 +++ cut.1 Wed Jul 7 22:54:45 2004 @@ -116,6 +116,8 @@ .It Fl s Suppress lines with no field delimiter characters. Unless specified, lines with no delimiters are passed through unmodified. +.It Fl u +Flush the output stream after every write. Useful for applications involving tail -f and similar ``keep-stream-open'' applications. .El .Sh ENVIRONMENT The --- cut.1.patch ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040708030126.A1EA04431>