bug-gnulib
[Top][All Lists]
Advanced

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

Re: unistd & sys/socket


From: Sam Steingold
Subject: Re: unistd & sys/socket
Date: Thu, 14 Jul 2011 11:08:46 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

> * Eric Blake <address@hidden> [2011-07-14 07:43:40 -0600]:
>
> On 07/14/2011 07:37 AM, Sam Steingold wrote:
>> Hi,
>> in what order do I include sys/socket and unistd?
>> sys_socket.in.h:
>> #if @HAVE_WINSOCK2_H@ && !defined _GL_UNISTD_H
>> # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
>> #  undef close
>> #  define close close_used_without_including_unistd_h
>> # else
>>    _GL_WARN_ON_USE (close,
>>                     "close() used without including <unistd.h>");
>> # endif
>> #endif
>> 
>> so, on windows, I must include unistd before sys/socket, otherwise close
>> will not work.
>> 
>> otoh:
>> unistd.in.h:
>> #if @GNULIB_GETHOSTNAME@
>> /* Get all possible declarations of gethostname().  */
>> # if @UNISTD_H_HAVE_WINSOCK2_H@
>> #  if !defined _GL_SYS_SOCKET_H
>> #   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
>> #    undef socket
>> #    define socket              socket_used_without_including_sys_socket_h
>> 
>> so I must include sys/socket before unistd, otherwise socket (and many
>> others) will not work.
>> 
>> so, what is the right order?
>
> Do you have an actual compilation error, or are you just trying to
> understand the code?

this is an actual error, please see
http://article.gmane.org/gmane.lisp.clisp.devel:22588
and the whole thread.

> Both orders should work, if you are using the
> gnulib modules for both headers.

I have both modules.
unistd is requested explicitly.
sys_socket comes from a dependency.

> Note that in unistd.in.h, on mingw, <sys/socket.h> is included prior to
> this snippet of @GNULIB_GETHOSTNAME@, such that _GL_SYS_SOCKET_H is
> defined and you never get the
> socket_used_without_including_sys_socket_h, if you were using both
> gnulib modules.

the first mention of <sys/socket.h> in unistd.in.h is line 155:
                      "socket() used without including <sys/socket.h>");


-- 
Sam Steingold (http://sds.podval.org/) on CentOS release 5.6 (Final) X 
11.0.60900031
http://camera.org http://mideasttruth.com http://www.memritv.org
http://dhimmi.com http://palestinefacts.org http://iris.org.il
Single tasking: Just Say No.



reply via email to

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