In general, new non-standard options are bad.

Basically, if we add this someone will use it in a script.  Then it will
become non-portable.  You cannot just invent something on your own like
this, without doing research to find out if someone else added a different
option.  I don't see evidence of that, so the gut answer is no.

> here is a diff that adds optional linebuffering to tr(1) with command
> line switch -u like in sed(1).  I need this to remove '\r' characters
> from a continues input steam which lines have to be there immediately.
> 
> Please write me if something is wrong with this diff or the change
> itself.  I will fix it.
> 
> bye,
> Jan
> 
> Index: tr.1
> ===================================================================
> RCS file: /cvs/src/usr.bin/tr/tr.1,v
> retrieving revision 1.20
> diff -u -p -r1.20 tr.1
> --- tr.1      14 Aug 2013 08:39:27 -0000      1.20
> +++ tr.1      19 Nov 2013 20:46:33 -0000
> @@ -41,18 +41,18 @@
>  .Nd translate characters
>  .Sh SYNOPSIS
>  .Nm tr
> -.Op Fl cs
> +.Op Fl csu
>  .Ar string1 string2
>  .Nm tr
> -.Op Fl c
> +.Op Fl cu
>  .Fl d
>  .Ar string1
>  .Nm tr
> -.Op Fl c
> +.Op Fl cu
>  .Fl s
>  .Ar string1
>  .Nm tr
> -.Op Fl c
> +.Op Fl cu
>  .Fl ds
>  .Ar string1 string2
>  .Sh DESCRIPTION
> @@ -86,6 +86,14 @@ or
>  .Ar string2 )
>  in the input into a single instance of the character.
>  This occurs after all deletion and translation is completed.
> +.It Fl u
> +Force output to be line buffered,
> +printing each line as it becomes available.
> +By default, output is line buffered when standard output is a terminal
> +and block buffered otherwise.
> +See
> +.Xr setbuf 3
> +for a more detailed explanation.
>  .El
>  .Pp
>  In the first synopsis form, the characters in
> @@ -284,6 +292,10 @@ The
>  utility is compliant with the
>  .St -p1003.1-2008
>  specification.
> +.Pp
> +The flag
> +.Op Fl u
> +is an extension to that specification.
>  .Pp
>  System V has historically implemented character ranges using the syntax
>  .Dq [c-c]
> Index: tr.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/tr/tr.c,v
> retrieving revision 1.15
> diff -u -p -r1.15 tr.c
> --- tr.c      27 Oct 2009 23:59:46 -0000      1.15
> +++ tr.c      19 Nov 2013 20:46:33 -0000
> @@ -88,7 +88,7 @@ main(int argc, char *argv[])
>       int cflag, dflag, sflag, isstring2;
>  
>       cflag = dflag = sflag = 0;
> -     while ((ch = getopt(argc, argv, "cds")) != -1)
> +     while ((ch = getopt(argc, argv, "cdsu")) != -1)
>               switch((char)ch) {
>               case 'c':
>                       cflag = 1;
> @@ -99,6 +99,9 @@ main(int argc, char *argv[])
>               case 's':
>                       sflag = 1;
>                       break;
> +             case 'u':
> +                     setlinebuf(stdout);
> +                     break;
>               case '?':
>               default:
>                       usage();
> @@ -239,9 +242,9 @@ static void
>  usage(void)
>  {
>       fprintf(stderr,
> -         "usage: tr [-cs] string1 string2\n"
> -         "       tr [-c] -d string1\n"
> -         "       tr [-c] -s string1\n"
> -         "       tr [-c] -ds string1 string2\n");
> +         "usage: tr [-csu] string1 string2\n"
> +         "       tr [-cu] -d string1\n"
> +         "       tr [-cu] -s string1\n"
> +         "       tr [-cu] -ds string1 string2\n");
>       exit(1);
>  }
> 

Reply via email to