On Fri, Jun 20, 2014 at 09:41:30PM +0000, Pedro F. Giffuni wrote: > Author: pfg > Date: Fri Jun 20 21:41:30 2014 > New Revision: 267692 > URL: http://svnweb.freebsd.org/changeset/base/267692 > > Log: > Add -u (unbuffered output) after GNU sed. > > Obtained from: NetBSD > MFC after: 1 week > > Modified: > head/usr.bin/sed/main.c > head/usr.bin/sed/sed.1 > > Modified: head/usr.bin/sed/main.c > ============================================================================== > --- head/usr.bin/sed/main.c Fri Jun 20 21:35:39 2014 (r267691) > +++ head/usr.bin/sed/main.c Fri Jun 20 21:41:30 2014 (r267692) > @@ -132,7 +132,7 @@ main(int argc, char *argv[]) > fflag = 0; > inplace = NULL; > > - while ((c = getopt(argc, argv, "EI:ae:f:i:lnr")) != -1) > + while ((c = getopt(argc, argv, "EI:ae:f:i:lnru")) != -1) > switch (c) { > case 'r': /* Gnu sed compat */ > case 'E': > @@ -168,6 +168,16 @@ main(int argc, char *argv[]) > case 'n': > nflag = 1; > break; > + case 'u': > +#ifdef _IONBF > + c = setvbuf(stdout, NULL, _IONBF, 0); > +#else > + c = -1; > + errno = EOPNOTSUPP; > +#endif > + if (c)
Why doing it that way ? IMO the conditional is useless and even wrong. FreeBSD provides the _IONBF, _IONBF is required by C99. If some other system lacks _IONBF, it should get compiler error instead of silently accepting non-working code.
pgpjVvC_0sYiu.pgp
Description: PGP signature