[illumos-Developer] webrev: printf
Garrett D'Amore
garrett at nexenta.com
Thu Oct 14 08:41:56 PDT 2010
So I did find one statement, which caused to add a few lines of code:
Standard utilities that do not accept options,
* but that do accept operands, shall recognize "--" as a
* first argument to be discarded.
So I added this to the program:
/*
* POSIX says: Standard utilities that do not accept options,
* but that do accept operands, shall recognize "--" as a
* first argument to be discarded.
*/
if (strcmp(argv[0], "--") == 0) {
argc--;
argv++;
}
(Argv[0] here is after we've skipped past argv[0] for the program name
itself.)
Apart from that particular test, I can't imagine what kind of tests
you'd have for - arguments.
My testing shows that legacy printf also behaves the same way... it will
discard -- but not -<letter>.
- Garrett
On Thu, 2010-10-14 at 17:37 +0200, Nicholas George wrote:
> On 14 October 2010 17:03, Guido Berhoerster
> <guido+illumos.org at berhoerster.name> wrote:
> > * Garrett D'Amore <garrett at nexenta.com> [2010-10-14 04:08]:
> >> So I finally got tired of waiting for someone else to do a printf
> >> replacement-- I had thought this would be a trivial thing to do via
> >> ksh93. It wasn't, and I wound up taking a different route after first
>
> >> trying to use ksh93. There are details here:
> >>
> >> http://gdamore.blogspot.com/2010/10/new-implementation-of-printf.html
> >>
> >
> > What compatibility problems is this supposed to address or better
> > what is the overall strategy regarding shell and shell-utilities
> > compatibility here?
> >
> > Is this really necessary when both /sbin/sh and /usr/bin/ksh in
> > current OpenSolaris/Illumos are already fundamentally incopatible
> > to Solaris 10 and earlier?
> >
> > Any /sbin/sh script calling printf without absolute path will get
> > the ksh93 builtin anyway (and is likely break in other ways if it
> > expects to get the SVR4 shell).
> >
> > BTW, this behavior is not ksh93-specific, the builtins of bash
> > and even ancient ash barf on such broken usage of printf.
>
> I have to second that. I don't want to join the argument fray of bash
> vs Freebsd vs ksh93 but my opinion is that Garrett's bashing of David
> Korn is unjustified.
> The issue whether /bin/printf must print options it does not support
> on stdout or barf with an error has been the topic of discussions and
> a interpretation request. The binding conclusion is that printf
> followed by a - and character, while used sparsely in the past, is NOT
> a valid usage, except the - and the character compose a valid option
> for the implementation.
> According to these findings VSC has a whopping 9 new tests to verify
> that printf does reject unsupported options and vendors, starting with
> IBM's AIX, have acted and modified their /bin/printf implementation to
> match the standard.
>
> In my humble opinion, bash/ksh93/ash or not, /bin/printf in Illumos
> should follow the standard and not introduce a behaviour which is in
> violation of that standard.
>
> Nicholas
More information about the Developer
mailing list