On 2016/10/11 13:35, Theo de Raadt wrote:
> > Jan Stary <[email protected]> writes:
> > 
> > > The diff below makes head(1) recognize `-'
> > > as a name for the standard input,
> > > as many other utilities do.
> > 
> > Makes sense to me.  The following points could be improved IMO:
> > - using strcmp sounds cleaner than those char comparisons
> > - I don't think the man page bits are needed.  Utilities that read from
> >   stdin are supposed to support `-'.  I'm not sure whether the extra
> >   example is really helpful.
> > - should we avoid closing stdin (multiple times)?  Even though our
> >   fclose(3) seems to cope with this, it seems that neither the
> >   C standard nor POSIX offer such a guarantee.
> 
> Do standards permit that extension?
> 
> This is command used in scripts.  Scripts are often portable.  If one
> operating system has an extension, but others don't, then those
> scripts become unportable to use use of these extensions.
> 
> I'm not raising a new argument here, it's been raised numerous times
> when it comes to commands commonly used in scripts.
> 
> So consider that first.

Standards permit it but don't require it, so it's already a mess.

"The standard input shall be used if no file operands are specified, and
shall be used if a file operand is '-' and the implementation treats the
'-' as meaning standard input. Otherwise, the standard input shall not
be used. See the INPUT FILES section."

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/head.html

Same for tail, of course.

Reply via email to