Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Aug 2001 01:16:37 +1000 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        Mark Murray <mark@grondar.za>
Cc:        <arch@FreeBSD.ORG>
Subject:   Re: Style 9 nitpicking question
Message-ID:  <20010817005031.S29341-100000@besplex.bde.org>
In-Reply-To: <200108161010.f7GAAsK68419@grimreaper.grondar.za>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 16 Aug 2001, Mark Murray wrote:

> A piece of style(9) says:
>
> <manpage_extract name=style sect=9>
>
>      static void
>      usage()
>      {
> 	     /* Insert an empty line if the function has no local variables. */
>
>      Use printf(3), not fputs/puts/putchar/whatever; it's faster and usually
>      cleaner, not to mention avoiding stupid bugs.
>
> [ snip ]
>
> 	 "usage: f [-aDde] [-b b_arg] [-m m_arg] req1 req2 [opt1 [opt2]]\n"
> 	 "usage: f [-a | -b] [-c [-dEe] [-n number]]\n"
>
> 	     (void)fprintf(stderr, "usage: f [-ab]\n");
> 	     exit(EX_USAGE);
>      }
>
> </manpage_extract>
>
> Questions:
>
> 1) That "(void)" is useless by any metric that I am able to determine
>    (WARNS=2, BDECFLAGS etc), and gets in the way of linting. Is there
>    any reason to continue to advocate its use by this example? There
>    is no other reference to "voiding-out" of return values.

It by prevents warnings like the following from `lint -h':

    "snprintf returns a value which is sometimes ignored"
    "snprintf returns a value which is always ignored"

This is the opposite of getting in the way of linting.

> 2) Is this (fprintf(stderr, "...", ...); exit(n);) really better than
>    errx(1, "...", ...); ?

Yes.  The former is more portable, and prints the program name in the
usual place (after "usage: ").

> Any objections to changing the
>
> 	(void)fprintf(stderr, "usage: f [-ab]\n");
> 	exit(EX_USAGE);
>
> to
>
> 	errx(EX_USAGE, "usage: f [-ab]\n");

Yes :-).  The second form here has the additional bug of printing the
program name twice (perhaps different names if the binary is linked).

Bruce


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010817005031.S29341-100000>