canon-host.c disagreement (gnulib vs coreutils); zero initializers
I noticed the following disagreement between gnulib and coreutils: --- gnulib/lib/canon-host.c 2005-05-13 23:03:57 -0700 +++ cu/lib/canon-host.c 2005-05-14 00:58:06 -0700 @@ -54,8 +54,9 @@ canon_host (char const *host) #if HAVE_GETADDRINFO { -struct addrinfo hint = { 0 }; +struct addrinfo hint; struct addrinfo *res = NULL; +memset (&hint, 0, sizeof hint); hint.ai_flags = AI_CANONNAME; if (getaddrinfo (host, NULL, &hint, &res) == 0) { I assume that this was due to a warning from "gcc -W" about a missing initializer. But I prefer the gnulib style: it's easier to read. How about if we just ask people to not use "gcc -W"? While we're on the subject, I've noticed that glibc is now using this style: struct addrinfo hint = { 0, }; The extra comma is an indication to the reader that we know there are missing zeros, and don't care. This style can be used for any object in C89, e.g.: mbstate_t initial_state = { 0, }; where we don't know whether mbstate_t is a structure, or an integer, and the code works either way. So, I propose that we make the following patch to gnulib, and propagate this to coreutils: 2005-06-23 Paul Eggert <[EMAIL PROTECTED]> * canon-host.c (canon-host): Append trailing "," to 0 in initializer of struct addrinfo, as an indication that we don't care how many members the structure has. --- gnulib/lib/canon-host.c 2005-05-13 23:03:57 -0700 +++ fixed-gnulib/lib/canon-host.c 2005-06-23 16:06:21 -0700 @@ -54,7 +54,7 @@ canon_host (char const *host) #if HAVE_GETADDRINFO { -struct addrinfo hint = { 0 }; +struct addrinfo hint = { 0, }; struct addrinfo *res = NULL; hint.ai_flags = AI_CANONNAME; if (getaddrinfo (host, NULL, &hint, &res) == 0) ___ bug-gnulib mailing list bug-gnulib@gnu.org http://lists.gnu.org/mailman/listinfo/bug-gnulib
Re: canon-host.c disagreement (gnulib vs coreutils); zero initializers
Paul Eggert <[EMAIL PROTECTED]> wrote: > I noticed the following disagreement between gnulib and coreutils: > > --- gnulib/lib/canon-host.c 2005-05-13 23:03:57 -0700 > +++ cu/lib/canon-host.c 2005-05-14 00:58:06 -0700 ... > I assume that this was due to a warning from "gcc -W" about a missing > initializer. But I prefer the gnulib style: it's easier to read. Probably. > How about if we just ask people to not use "gcc -W"? > > While we're on the subject, I've noticed that glibc is now using this style: > > struct addrinfo hint = { 0, }; > > The extra comma is an indication to the reader that we know there are > missing zeros, and don't care. This style can be used for any object > in C89, e.g.: > > mbstate_t initial_state = { 0, }; That's nice to know. Thanks. > where we don't know whether mbstate_t is a structure, or an integer, > and the code works either way. > > So, I propose that we make the following patch to gnulib, and propagate > this to coreutils: > > 2005-06-23 Paul Eggert <[EMAIL PROTECTED]> > > * canon-host.c (canon-host): Append trailing "," to 0 in > initializer of struct addrinfo, as an indication that we don't > care how many members the structure has. Fine. Thanks. ___ bug-gnulib mailing list bug-gnulib@gnu.org http://lists.gnu.org/mailman/listinfo/bug-gnulib
Re: canon-host.c disagreement (gnulib vs coreutils); zero initializers
Paul Eggert <[EMAIL PROTECTED]> writes: > The extra comma is an indication to the reader that we know there are > missing zeros, and don't care. This style can be used for any object > in C89, e.g.: > > mbstate_t initial_state = { 0, }; > > where we don't know whether mbstate_t is a structure, or an integer, > and the code works either way. I recall some compilers complaining about a trailing ','s. Is it really OK by C89? I'm just curious. ___ bug-gnulib mailing list bug-gnulib@gnu.org http://lists.gnu.org/mailman/listinfo/bug-gnulib
Re: canon-host.c disagreement (gnulib vs coreutils); zero initializers
Simon Josefsson <[EMAIL PROTECTED]> wrote: > Paul Eggert <[EMAIL PROTECTED]> writes: > >> The extra comma is an indication to the reader that we know there are >> missing zeros, and don't care. This style can be used for any object >> in C89, e.g.: >> >> mbstate_t initial_state = { 0, }; >> >> where we don't know whether mbstate_t is a structure, or an integer, >> and the code works either way. > > I recall some compilers complaining about a trailing ','s. Is it > really OK by C89? I'm just curious. SunOS's /bin/cc was one of the complainers, but we've all agreed to drop support for it. ___ bug-gnulib mailing list bug-gnulib@gnu.org http://lists.gnu.org/mailman/listinfo/bug-gnulib
Re: canon-host.c disagreement (gnulib vs coreutils); zero initializers
On Fri, Jun 24, 2005 at 01:16:50PM +0200, Simon Josefsson wrote: > I recall some compilers complaining about a trailing ','s. Is it > really OK by C89? I'm just curious. Oddly, it's different for array initialisers and enums, but I can't remember which is allowed and which is not. James. ___ bug-gnulib mailing list bug-gnulib@gnu.org http://lists.gnu.org/mailman/listinfo/bug-gnulib
Re: canon-host.c disagreement (gnulib vs coreutils); zero initializers
Simon Josefsson <[EMAIL PROTECTED]> writes: > I recall some compilers complaining about a trailing ','s. Is it > really OK by C89? I'm just curious. Yes, it is allowed in C89. Perhaps you're thinking of enumeration specifiers. The declaration: enum { zero, }; is not allowed in C89. (C99 allows the trailing comma here, too -- isn't it wonderful how new features are always being added to C? :-) Since there was agreement about the change, I installed it in gnulib and coreutils. ___ bug-gnulib mailing list bug-gnulib@gnu.org http://lists.gnu.org/mailman/listinfo/bug-gnulib
Re: canon-host.c disagreement (gnulib vs coreutils); zero initializers
Paul Eggert <[EMAIL PROTECTED]> writes: > Simon Josefsson <[EMAIL PROTECTED]> writes: > >> I recall some compilers complaining about a trailing ','s. Is it >> really OK by C89? I'm just curious. > > Yes, it is allowed in C89. > > Perhaps you're thinking of enumeration specifiers. The declaration: > > enum { zero, }; > > is not allowed in C89. Ah, indeed, I now remember that I had hit this problem with some error value enum's in more than one of my projects. Thanks! ___ bug-gnulib mailing list bug-gnulib@gnu.org http://lists.gnu.org/mailman/listinfo/bug-gnulib