bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug-gnulib] getdelim declaration conflict on HP-UX 11.x


From: James Youngman
Subject: [bug-gnulib] getdelim declaration conflict on HP-UX 11.x
Date: Mon, 20 Dec 2004 21:32:20 +0000
User-agent: Mutt/1.3.28i

The attached email shows how on some versions of HPUX, <stdio.h> also
declared getdelim(), but with a size_t return type.  What's the best
way to handle this?

--- Begin Message --- Subject: Re: findutils-4.2.10 build feedback Date: Sat, 18 Dec 2004 10:32:53 -0700 (MST)
>> ...
>> Typescript.spe171.testdrive.hp.com.2004.12.09.11.03.19:
>>
>> The gl_CHECK_TYPE_STRUCT_DIRENT_D_INO problem is fixed in my local
>> code, but I'll send a patch upstream to gnulib.  This is really
>> worrying though:
>>
>>    gcc -DHAVE_CONFIG_H -I. -I. -I../..    -I/usr/local/include  -g -O2 -c 
>> getline.c
>>    In file included from getline.c:26:
>>    getline.h:32: error: conflicting types for `gnu_getline'
>>    /usr/local/include/stdio.h:62: error: previous declaration of 
>> `gnu_getline'
>>    getline.h:35: error: conflicting types for `getdelim'
>>    /usr/local/include/stdio.h:61: error: previous declaration of `getdelim'
>>
>> What on earth are they doing with /usr/local/include/stdio.h?
>> ...

Here is where the conflict arises. getline.h uses int return values:

        % sed -n -e 33,38p getline.h

        int
        getline PARAMS ((char **_lineptr, size_t *_n, FILE *_stream));

        int
        getdelim PARAMS ((char **_lineptr, size_t *_n, int _delimiter, FILE 
*_stream));

However, /usr/local/include/stdio.h uses size_t return values:

        % sed -n -e 61,62p /usr/local/include/stdio.h
        extern size_t getdelim __((char **, size_t *, int, FILE *));
        extern size_t getline __((char **, size_t *, FILE *));

The preamble of that file begins

        * Copyright (c) 1999, 2000, 2002 Compaq Computer Corporation.

The problem is the old one of defining prototypes in user code of
vendor-provided library routines that may have prototypes in system
header files that disagree with those in the user code.  As always,
configure should be checking whether those user prototypes are needed.

If I force a different include file order, compilation succeeds:

        % gcc -DHAVE_CONFIG_H -I. -I. -I../..  -I/usr/include -g -O2 -c 
getline.c

When I tried to force a rebuild with CFLAGS=-I/usr/include, I found
that CFLAGS was not correctly propagated to subdirectory Makefiles:

        % make CFLAGS='-g -O2 -I/usr/include' 

That problem should be fixed.  Instead, I had to do this:

        % env CC='gcc -I/usr/include' make -e

That produced a successful build.  I then ran the check: it completed,
but of course did nothing useful since dejagnu is not available.

The machines in the HP benchmark lab don't have enough disk space, so
they've asked the guest users not to leave much stuff in their
directories; as a consequence, after doing test builds there, I never
run the installs, and I delete the build directory as soon as I have
the logs safely moved to my system at Utah.

-------------------------------------------------------------------------------
- Nelson H. F. Beebe                    Tel: +1 801 581 5254                  -
- University of Utah                    FAX: +1 801 581 4148                  -
- Department of Mathematics, 110 LCB    Internet e-mail: address@hidden  -
- 155 S 1400 E RM 233                       address@hidden  address@hidden -
- Salt Lake City, UT 84112-0090, USA    URL: http://www.math.utah.edu/~beebe  -
-------------------------------------------------------------------------------

--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]