Subject: Re: bin/21970 (printf(1) breaks when format begins with "-")
To: None <hubertf@NetBSD.org, gnats-admin@netbsd.org,>
From: Alan Barrett <apb@cequrux.com>
List: netbsd-bugs
Date: 11/27/2006 05:25:02
The following reply was made to PR bin/21970; it has been noted by GNATS.
From: Alan Barrett <apb@cequrux.com>
To: gnats-bugs@NetBSD.org
Cc: netbsd-bugs@NetBSD.org
Subject: Re: bin/21970 (printf(1) breaks when format begins with "-")
Date: Mon, 27 Nov 2006 09:21:24 +0400
On Mon, 27 Nov 2006, hubertf@NetBSD.org wrote:
> I've sent out a patch as a suggestion, but I'm not sure this came through
> properly, so here it is again... if I missed the point, please let me
> know or do the cut&paste yourself, see also localsrc/legal/TheOpenGroup
> while there.
>
>
> - Hubert
>
> P.S.: I also have a patch that has 12.1 Utility Argument Syntax
> of the SUSv3 in *roff format, just in case that's what you want to have
> in that manpage. Let me know if so!
Thanks Hubert. I think it would be useful to add something to
intro(1) explaining that most utilities accept "--" for "end
of options", "-xyz" often means the same as "-x" "-y" "-z",
"-oarg" often means the same as "-o" "arg", option order usually
doesn't matter, etc. I'd prefer a level of detail somewhere
between your proposed patch and the text from SUSv3 section 12.1
<http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html>,
but your patch is good enough.
I still think it's a bug that printf(1) uses getopt. I think it's wrong for
any utility that doesn't take options in the usual way to use getopt().
If you compare the SUSv3 descriptions of printf(1) and cat(1)
(<http://www.opengroup.org/onlinepubs/009695399/utilities/printf.html>
and <http://www.opengroup.org/onlinepubs/009695399/utilities/cat.html>),
you can see that "The cat utility shall conform to the Base Definitions
volume of IEEE Std 1003.1-2001, Section 12.2, Utility Syntax
Guidelines", whereas printf(1) does not.
I don't buy the argument that "OPTIONS None" in SUSv3 means "anybody who
uses printf(1) needs to insert "--" to guarantee that the format is not
misinterpreted as an option". At least, not unless somebody can point
to text in SUSv3 that says so.
--apb (Alan Barrett)