bug-gnulib
[Top][All Lists]
Advanced

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

error: conflicting types for ‘rpl_gethostname ’


From: Simon Josefsson
Subject: error: conflicting types for ‘rpl_gethostname ’
Date: Tue, 12 Jan 2010 22:50:37 +0100
User-agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.1 (gnu/linux)

Here is an interesting problem.  This command

address@hidden:~/src/gnulib master$ rm -rf m && gnulib-tool --create-testdir 
--dir m  getsubopt  gethostname && cd m && ./configure --host=i586-mingw32msvc 
--build=i686-pc-linux-gnu && make check

results in this error:

i586-mingw32msvc-gcc -DHAVE_CONFIG_H -I. -I..     -g -O2 -MT sockets.o -MD -MP 
-MF .deps/sockets.Tpo -c -o sockets.o sockets.c
In file included from ./sys/socket.h:123,
                 from sockets.h:37,
                 from sockets.c:23:
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/winsock2.h:635:
 error: conflicting types for ‘rpl_gethostname’
./unistd.h:524: error: previous declaration of ‘rpl_gethostname’ was here
make[3]: *** [sockets.o] Error 1

Superficially this is because winsock2.h defines:

int PASCAL gethostname(char*,int);

and gnulib's unistd contains:

extern int gethostname(char *name, size_t len) _GL_ARG_NONNULL ((1));

and the problem seems to be why the usual system prototype fixing
doesn't work.

The cause for this was introduced fairly recently, but I'm running out
of time to track down this today -- just preparing this standalone way
to reproduce the problem took quite some time, it surprised me that
getsubopt and gethostname would interact with each other.  It seems
gnulib's stdlib.h, unistd.h and sys/socket.h include each other in
interesting ways.

/Simon




reply via email to

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