System: i386 (Athlon) - Debian GNU/Linux unstable

PostgreSQL 7.4beta3 fails to compile:
 
i386-linux-gcc -O2 -g -Wall -Wmissing-prototypes -Wmissing-declarations -pipe -fPIC -I../../../../src/interfaces/ecpg/include -I../../../../src/include/utils -I../../../../src/include -I/usr/include/tcl8.4 -I/usr/lib/R/include  -g  -c -o timestamp.o timestamp.c
timestamp.c: In function `tm2timestamp':
timestamp.c:71: error: syntax error before numeric constant
timestamp.c:73: error: syntax error before "long"
timestamp.c:76: error: syntax error before '>=' token
timestamp.c:76: error: syntax error before '<' token
make[5]: *** [timestamp.o] Error 1
make[5]: Leaving directory
`/usr/src/mypackages/postgresql/postgresql-7.3.99.7.4beta3/build-tree/postgresql-7.4beta3/src/interfaces/ecpg/pgtypeslib'

This error is fixed in CVS tip by Tom Lane's patch of 2 days ago. 
However CVS tip still fails to compile:

make[4]: Entering directory
`/home/olly/pgsql.cvs/pgsql/src/interfaces/ecpg/compatlib'
i386-linux-gcc -O2 -g -Wall -Wmissing-prototypes -Wmissing-declarations -D_GNU_SOURCE -fpic -I../../../../src/interfaces/ecpg/include -I../../../../src/interfaces/libpq -I../../../../src/include/utils -I../../../../src/include -I/usr/include/tcl8.4 -I/usr/lib/R/include   -c -o informix.o informix.c
informix.c:138: error: syntax error before "__extension__"
informix.c:138: error: syntax error before "len"
informix.c:138: error: syntax error before "if"
...etc....

Line 138 begins the definition of strndup().  However, strndup() is also
declared in string.h, which is included by this file.  If I rename this
function to estrndup() (and also where it is called, further down) the
compilation succeeds.

-- 
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight, UK                             http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
                 ========================================
     "Give, and it shall be given unto you; good measure, 
      pressed down, and shaken together, and running over, 
      shall men pour into your lap. For by your standard of 
      measure it will be measured to you in return."
                                           Luke 6:38 


Thu, 18 Sep 2003 18:53:00 +0100
Oliver Elphick <olly@lfix.co.uk>
ECPG interface: 7.4beta3 compile failure; CVS tip compile failure
Oliver Elphick <olly@lfix.co.uk> writes:
> Line 138 begins the definition of strndup().  However, strndup() is also
> declared in string.h, which is included by this file.  If I rename this
> function to estrndup() (and also where it is called, further down) the
> compilation succeeds.

Hm, is strndup defined as a macro in your string.h?  I suspect it's not
a good idea to be providing a local definition of something that might
be considered a standard function.

			regards, tom lane

Thu, 18 Sep 2003 14:25:39 -0400
Tom Lane <tgl@sss.pgh.pa.us>
Re: ECPG interface: 7.4beta3 compile failure;
 CVS tip compile failure 
On Thu, 2003-09-18 at 19:25, Tom Lane wrote:
> Oliver Elphick <olly@lfix.co.uk> writes:
> > Line 138 begins the definition of strndup().  However, strndup() is also
> > declared in string.h, which is included by this file.  If I rename this
> > function to estrndup() (and also where it is called, further down) the
> > compilation succeeds.
> 
> Hm, is strndup defined as a macro in your string.h?  I suspect it's not
> a good idea to be providing a local definition of something that might
> be considered a standard function.

/* Return a malloc'd copy of at most N bytes of STRING.  The
   resultant string is terminated even if no null terminator
   appears before STRING[N].  */
#if defined __USE_GNU
extern char *strndup (__const char *__string, size_t __n)
     __THROW __attribute_malloc__;
#endif

-- 
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight, UK                             http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
                 ========================================
     "Give, and it shall be given unto you; good measure, 
      pressed down, and shaken together, and running over, 
      shall men pour into your lap. For by your standard of 
      measure it will be measured to you in return."
                                           Luke 6:38 


Thu, 18 Sep 2003 19:44:25 +0100
Oliver Elphick <olly@lfix.co.uk>
Re: ECPG interface: 7.4beta3 compile failure; CVS tip
On Thu, Sep 18, 2003 at 06:53:00PM +0100, Oliver Elphick wrote:
> Line 138 begins the definition of strndup().  However, strndup() is also
> declared in string.h, which is included by this file.  If I rename this
> function to estrndup() (and also where it is called, further down) the
> compilation succeeds.

I included strndup because some systems didn't seem to have it. Any idea
what else I could do? Okay, I could rename it and use only the renamed
function as it's just used internally.

What surprises me is that it compiles fine for me despite using the very
same system as Oliver to compile.

Michael
-- 
Michael Meskes
Email: Michael at Fam-Meskes dot De
ICQ: 179140304, AIM/Yahoo: michaelmeskes, Jabber: meskes@jabber.org
Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!

Fri, 19 Sep 2003 08:38:51 +0200
Michael Meskes <meskes@postgresql.org>
Re: ECPG interface: 7.4beta3 compile failure; CVS tip compile failure
On Fri, 2003-09-19 at 07:38, Michael Meskes wrote:
> I included strndup because some systems didn't seem to have it. Any idea
> what else I could do? Okay, I could rename it and use only the renamed
> function as it's just used internally.
> 
> What surprises me is that it compiles fine for me despite using the very
> same system as Oliver to compile.

Perhaps you should enclose your definition in
#ifndef __USE_GNU
#endif

src/include/port/linux.h now forces _GNU_SOURCE on, which in turn
defines __USE_GNU.  Do you somehow override the definition of
_GNU_SOURCE?

-- 
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight, UK                             http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
                 ========================================
     "Bring ye all the tithes into the storehouse, that 
      there may be meat in mine house, and prove me now 
      herewith, saith the LORD of hosts, if I will not open 
      you the windows of heaven, and pour you out a  
      blessing, that there shall not be room enough to  
      receive it."           Malachi 3:10 


Fri, 19 Sep 2003 16:49:36 +0100
Oliver Elphick <olly@lfix.co.uk>
Re: ECPG interface: 7.4beta3 compile failure; CVS tip
For now I simply renamed the function. We can look for the reason later.
I'd prefer to get ecpg release ready first. :-)

Michael
-- 
Michael Meskes
Email: Michael at Fam-Meskes dot De
ICQ: 179140304, AIM/Yahoo: michaelmeskes, Jabber: meskes@jabber.org
Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!

Sat, 20 Sep 2003 12:33:34 +0200
Michael Meskes <meskes@postgresql.org>
Re: ECPG interface: 7.4beta3 compile failure; CVS tip compile failure