Paul Eggert <[EMAIL PROTECTED]> wrote:
> In a few cases, the default coreutils behavior conforms to POSIX, but
> coreutils changes its behavior if POSIXLY_CORRECT is set.  Here is a
> patch to remove these special cases; this lessens the effect of
> POSIXLY_CORRECT on coreutils behavior.  This patch affects behavior
> only when POSIXLY_CORRECT is set.
>
> 2004-06-09  Paul Eggert  <[EMAIL PROTECTED]>
>
>       * NEWS: Remove special cases for POSIXLY_CORRECT when POSIX allows
>       the GNU behavior.
>       * doc/coreutils.texi (pr invocation, unlink invocation, false
>       invocation, true invocation): Document this.
>       * src/ls.c (decode_switches): Pay attention to TABSIZE even if
>       POSIXLY_CORRECT is set.  POSIX reserves upper-case environment
>       variables to the implementation, so it's OK for ls to depend on
>       TABSIZE.
>       * src/pr.c: Include "hard-locale.h".
>       (main): When in a non-POSIX locale, ignore POSIXLY_CORRECT, since
>       POSIX specifies the behavior only in the POSIX locale.
>       * src/printf.c (print_esc): Support \x, \u, \U even if POSIXLY_CORRECT,
>       since POSIX says the behavior is unspecified here.
>       * src/tail.c (parse_obsolescent_option): Support multiple file operands
>       even if POSIXLY_CORRECT, since POSIX does not require a diagnostic.
>       * src/printf.c (main): Recognize --help, --version even if
>       POSIXLY_CORRECT.  POSIX does not specify any options, but it
>       does not prohibit options either, so "printf" is like "expr" here.
>       * src/true.c (main): Likewise.
>       * src/unlink.c (main): Likewise.
>       * src/yes.c (main): Likewise.
>       * tests/misc/printf: Adjust to the new semantics for \x if
>       POSIXLY_CORRECT.

Thanks, Paul!

I expect to apply most of those changes.
The only ones I don't like are those to true (and hence false) and yes.
I think true and yes should continue to provide
some mechanism for disabling interpretation of --help and --version.
For true, Peter Seebach made the point back in 1999[*] that one should
be able to use true-with-any-arguments as a no-op.  Sure, it's usually
better to use `:', but sometimes we need a command that can be `exec'd.

As for `yes', shouldn't there be a way to make it print `--h', `--help'
or `--version' repeatedly?  With the current code, setting POSIXLY_CORRECT
in the environment is currently the only way to do that.

I do admit that the name POSIXLY_CORRECT is at best misleading in these
cases, now that I see the behavior it disables is permitted by POSIX.

[*] in a message that I didn't find in public archives:

  Message-Id: <[EMAIL PROTECTED]>
  From: [EMAIL PROTECTED] (Peter Seebach)
  To: [EMAIL PROTECTED]


_______________________________________________
Bug-coreutils mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/bug-coreutils

Reply via email to