[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