Hi,

On Fri, 8 Jan 2010, Colm MacCárthaigh wrote:

On Fri, Jan 8, 2010 at 7:50 PM, Brian Havard <[email protected]> wrote:
Colm MacCárthaigh wrote:
There is a 1.3.42 release candidate for testing, and voting, at;

         http://people.apache.org/~colm/1.3.42/


I just tried building on a fairly stock Ubuntu Karmic system and ran
into this compile error:

gcc -c  -I../os/unix -I../include   -DLINUX=22 -DHAVE_SET_DUMPABLE
-DUSE_HSREGEX -DNO_DL_NEEDED `../apaci` htpasswd.c
htpasswd.c:101: error: conflicting types for ?getline?
/usr/include/stdio.h:651: note: previous declaration of ?getline? was here

So getline() is a system provided function here.

I used the top level configure with /bin/sh changed to /bin/bash as
mentioned elsewhere, no options.
On fixing this I found that htdigest.c and logrotate.c have the same
problem.

The obvious fix would be to namespace protect these getline
implementations,

Thanks for the report - disinclined to fix anything that isn't a
regression from 1.3.41 though. This is a security release, for
upgraders only - so presumably people who've managed to work around
these problems. Making life easy for new users is a deliberate
non-goal :-) 2.2 is much much better for new users.

Just for information: Only out of curiosity (we use 2.2) I tried to compile 1.3.42 on a current OpenSUSE 11.2 system and found also the above described compile problem (but on OpenSUSE 11.1 compiling is ok).

The orign seems to lie in the used newer "glibc"-library respectively the changed file "stdio.h". In the "glibc"-ChangeLog I found

 2009-02-26  Ulrich Drepper  <[email protected]>
  * libio/stdio.h: dprintf, fmemopen, getdelim, getline, open_memstream,
    and vdprintf are in POSIX 2008.

The above patch would be better but for clarification I added in the Linux block of src/include/ap_config.h the following lines

 /* glibc 2.10 and later define getline in stdio.h if __USE_XOPEN2K8
  * is defined but that conflicts with getline definitions in
  * support/htpasswd.c, support/htdigest.c and support/logresolve.c.
  */

 #if  (__GLIBC__ == 2 && __GLIBC_MINOR__ > 9)
 #undef __USE_XOPEN2K8
 #endif

and it works also (but I am not a C expert).

But I accept the arguments of Colm and deleted the apache_1.3.42 directory but I expect some according bug reports after releasing 1.3.42 :-(

Regards,

Jens

Reply via email to