Re: Add unistd.h to c.h

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
Cc: Bruce Momjian <bruce(at)momjian(dot)us>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Add unistd.h to c.h
Date: 2011-03-11 22:10:07
Message-ID: 29118.1299881407@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com> writes:
> On 11.03.2011 18:55, Bruce Momjian wrote:
>> OK, I am just asking. FYI, we already include a boatload of includes in
>> c.h:
>>
>> #include<stdio.h>
>> #include<stdlib.h>
>> #include<string.h>
>> #include<stddef.h>
>> #include<stdarg.h>
>> #ifdef HAVE_STRINGS_H
>> #include<strings.h>
>> #endif
>> #ifdef HAVE_STDINT_H
>> #include<stdint.h>
>> #endif
>> #include<sys/types.h>

> Presumably all of these are used by something in c.h itself. At least
> strings.h is needed by memset, and stddef.h and/or stdlib.h is needed
> for size_t. I'm too lazy to check the rest, but if there are any header
> files there that are not in fact used by anything in c.h itself, they
> should be removed from c.h, rather than going further into that direction.

I would argue that most of those includes (in particular all the stdXXX
ones) are needed to establish a minimum sane C programming environment.
Removing them would not be productive, regardless of whether c.h itself
requires them.

There are a bunch of *other* includes in c.h and the OS-specific port
files, which I'd like to see minimized, but not those. It's this kind
of thing that we should be trying to get rid of:

#if defined(WIN32) || defined(__CYGWIN__)
#include <fcntl.h> /* ensure O_BINARY is available */
#endif

because it greatly increases the probability that a patch developed on
one platform will not port to others where c.h doesn't pull in the
same header.

regards, tom lane

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2011-03-11 22:25:47 template0 database comment
Previous Message Tom Lane 2011-03-11 21:56:31 Re: FuncExpr.collid/OpExpr.collid unworkably serving double duty